:root{
  --bg:#0b1016;--panel:#121923;--panel2:#18212d;--line:#223042;--line2:#2c3b50;
  --text:#e3eaf2;--muted:#8794a6;--dim:#5d6b7e;
  --pump:#f5a524;--multi:#2dd4bf;--watch:#c084fc;--listen:#60a5fa;
  /* Mau rieng cua bo CMC moi len. DOI O DAY, dung mot cho:
     coin.js doc lai bang getComputedStyle. */
  --cmc:#a3e635;
  --up:#3fb950;--down:#f85149;--warn:#d29922;--info:#58a6ff;
  --mono:ui-monospace,"Cascadia Mono",Consolas,"JetBrains Mono",Menlo,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --r:10px;--nav:224px;--top:50px;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font:14px/1.45 var(--sans)}
a{color:var(--info);text-decoration:none}a:hover{text-decoration:underline}
button{font:inherit;color:inherit;background:var(--panel2);border:1px solid var(--line2);border-radius:8px;padding:6px 12px;cursor:pointer;line-height:1.2}
button:hover{border-color:#3d4f68;background:#1f2a38}
button:disabled{opacity:.45;cursor:not-allowed}
button.primary{background:#1f3a5a;border-color:#2f5a8a;color:#dbeafe}
button.primary:hover{background:#264a74}
button.danger{background:#4a1f22;border-color:#7a2f35;color:#fecaca}
button.ghost{background:transparent;border-color:transparent;color:var(--muted)}
button.ghost:hover{color:var(--text);background:var(--panel2)}
button.sm{padding:3px 8px;font-size:12px;border-radius:6px}
input,select,textarea{font:inherit;color:var(--text);background:#0e141c;border:1px solid var(--line2);border-radius:8px;padding:6px 9px;outline:none}
input:focus,select:focus,textarea:focus{border-color:#4a6c9b}
input[type=number]{width:90px}
input[type=checkbox]{width:auto;accent-color:var(--multi)}
textarea{font-family:var(--mono);font-size:12.5px;line-height:1.5;width:100%;min-height:420px;resize:vertical}
code,.mono{font-family:var(--mono)}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}
.muted{color:var(--muted)}.dim{color:var(--dim)}
.up{color:var(--up)}.down{color:var(--down)}.warn{color:var(--warn)}
.hidden{display:none!important}

/* ---- khung ---- */
#top{position:fixed;left:0;right:0;top:0;height:var(--top);display:flex;align-items:center;gap:14px;padding:0 16px;background:#0d131b;border-bottom:1px solid var(--line);z-index:30}
#top .brand{font-weight:700;letter-spacing:.3px;display:flex;align-items:center;gap:10px;white-space:nowrap}
#top .brand .dot{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,var(--pump),var(--multi))}
#top .jobs{display:flex;gap:6px;margin-left:8px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;border:1px solid var(--line2);background:var(--panel2);font-size:12px;color:var(--muted);white-space:nowrap}
.pill .led{width:7px;height:7px;border-radius:50%;background:var(--dim)}
.pill.on{color:var(--text);border-color:#2f6b5e}.pill.on .led{background:var(--up);box-shadow:0 0 6px var(--up);animation:blink 1.6s infinite}
@keyframes blink{50%{opacity:.35}}
#top .spacer{flex:1}
#top input.search{width:260px;background:#0a0f15}
#top .clock{font-family:var(--mono);color:var(--muted);font-size:12.5px}
#nav{position:fixed;left:0;top:var(--top);bottom:0;width:var(--nav);background:#0d131b;border-right:1px solid var(--line);padding:10px 8px;overflow:auto;z-index:20}
#nav .item{display:flex;align-items:center;gap:10px;padding:9px 10px;white-space:nowrap;border-radius:8px;color:var(--muted);cursor:pointer;user-select:none;position:relative}
#nav .item:hover{background:var(--panel);color:var(--text)}
#nav .item.active{background:var(--panel2);color:var(--text)}
#nav .item .ic{width:22px;text-align:center;font-size:15px}
#nav .item .badge{margin-left:auto;font-size:10.5px;font-family:var(--mono);color:var(--dim)}
#nav .item .badge.on{color:var(--up)}
#nav .sect{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--dim);padding:14px 12px 4px}
#main{position:absolute;left:var(--nav);top:var(--top);right:0;bottom:0;overflow:auto;padding:18px 22px 60px}
.subtabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 14px;flex-wrap:wrap}
.subtabs .st{padding:8px 14px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;user-select:none;font-size:13.5px}
.subtabs .st:hover{color:var(--text)}
.subtabs .st.active{color:var(--text);border-bottom-color:var(--accent,var(--info))}
.subtabs .st .cnt{font-family:var(--mono);font-size:11px;color:var(--dim);margin-left:6px}
h1{font-size:20px;margin:0 0 4px;font-weight:650}
h2{font-size:15px;margin:0 0 10px;font-weight:600}
.pagehead{display:flex;align-items:flex-end;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.pagehead .sub{color:var(--muted);font-size:13px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.cards{display:grid;gap:12px}
.grid2{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:repeat(3,1fr)}.grid4{grid-template-columns:repeat(4,1fr)}
@media (max-width:1250px){.grid4{grid-template-columns:repeat(2,1fr)}.grid3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:900px){.grid2,.grid3,.grid4{grid-template-columns:1fr}}
.kpi .lab{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.kpi .val{font-size:26px;font-weight:650;font-family:var(--mono);margin-top:4px}
.kpi .note{font-size:12px;color:var(--dim);margin-top:2px}
.kpi.pump{border-top:3px solid var(--pump)}.kpi.multi{border-top:3px solid var(--multi)}.kpi.watch{border-top:3px solid var(--watch)}.kpi.listen{border-top:3px solid var(--listen)}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.toolbar .sep{width:1px;height:22px;background:var(--line2);margin:0 4px}
.toolbar .status{font-size:12.5px;color:var(--muted)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{font-size:11.5px;padding:2px 8px;border-radius:999px;border:1px solid var(--line2);background:#0f1620;color:var(--muted);white-space:nowrap;cursor:default}
.chip.bad{border-color:#5a2a2e;color:#f3a1a4;background:#2a1517}
.chip.good{border-color:#2a5a3a;color:#9ee2ad;background:#13261b}
.chip.warn{border-color:#5a4a1e;color:#f5d27a;background:#2a2212}
.tiertbl table.t td .chips{flex-wrap:nowrap}
.autobar{padding:8px 14px!important;gap:14px;border-left:3px solid var(--up)}
.autobar .autoitem{font-size:12.5px;white-space:nowrap}
body.public .rw{display:none!important}
.chip.sel{border-color:var(--info);color:var(--text);background:#17283d}
.chip.btn{cursor:pointer}.chip.btn:hover{border-color:#4a6c9b;color:var(--text)}
.chain{font-size:10.5px;padding:1px 6px;border-radius:5px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.4px;border:1px solid var(--line2);color:var(--muted)}
.chain.solana{color:#c4b5fd;border-color:#4c3d8a}.chain.bsc{color:#fde68a;border-color:#7a6413}.chain.base{color:#93c5fd;border-color:#1e4a8a}.chain.ethereum{color:#cbd5e1;border-color:#475569}
.lp{font-size:11.5px;color:var(--muted)}.lp .curve{color:var(--pump);font-weight:700;margin-left:2px}

/* ---- bảng ---- */
.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
table.t{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
table.t th{position:sticky;top:0;background:#151d28;color:var(--muted);font-weight:600;text-align:left;padding:8px 10px;border-bottom:1px solid var(--line2);white-space:nowrap;cursor:pointer;user-select:none;font-size:12px;z-index:2}
table.t th:hover{color:var(--text)}
table.t th.num{text-align:right}
table.t th .arr{color:var(--info);font-size:10px;margin-left:3px}
table.t td{padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle}
table.t tr:hover td{background:#182230}
table.t tr.clickable{cursor:pointer}
table.t tr.reserve td{background:#141a22;color:var(--muted)}
table.t tr.reserve td .sym{color:var(--text)}
table.t tr.sep td{background:#0f151d;color:var(--muted);font-size:12px;padding:6px 10px;letter-spacing:.3px}
table.t .sym{font-weight:650}
table.t .name{color:var(--dim);font-size:11.5px;margin-left:6px}
.score{display:inline-block;min-width:46px;text-align:center;font-family:var(--mono);font-weight:700;padding:2px 7px;border-radius:6px;background:#1b2535}
.score.s3{background:#143a2a;color:#8ff0b0}.score.s2{background:#2d3a1a;color:#d7ee8a}.score.s1{background:#3a2a14;color:#f6c98a}.score.s0{background:#3a1b1e;color:#f3a1a4}
.bar{height:6px;border-radius:3px;background:#1f2a38;overflow:hidden;min-width:60px}
.bar>i{display:block;height:100%;background:var(--multi)}
.empty{padding:40px;text-align:center;color:var(--muted)}
.copy{cursor:pointer;color:var(--dim);font-family:var(--mono);font-size:12px}
.copy:hover{color:var(--text)}
.addr{font-family:var(--mono);font-size:12px;color:var(--muted)}

/* ---- ngăn chi tiết (tầng 3) ---- */
#drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:#0f161f;border-left:1px solid var(--line2);box-shadow:-20px 0 60px rgba(0,0,0,.5);transform:translateX(100%);transition:transform .22s ease;z-index:40;display:flex;flex-direction:column}
#drawer.open{transform:none}
#drawer .dh{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:12px}
#drawer .dh .title{font-size:18px;font-weight:700}
#drawer .dh .meta{color:var(--muted);font-size:12.5px;margin-top:2px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#drawer .db{padding:14px 18px;overflow:auto;flex:1}
#drawer .sec{margin-bottom:18px}
#drawer .sec h3{font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:var(--dim);margin:0 0 8px}
.kv{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px}
.kv .k{color:var(--muted);font-size:12px}.kv .v{font-family:var(--mono);font-size:13px;text-align:right}
.kvl .row{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px dashed #1c2633}
.kvl .row .k{color:var(--muted);font-size:12px}.kvl .row .v{font-family:var(--mono);font-size:12.5px;text-align:right;white-space:nowrap}
.parts .p{display:grid;grid-template-columns:110px 1fr 46px;gap:8px;align-items:center;font-size:12.5px;margin-bottom:5px}
.parts .p .bar{min-width:0}.parts .p .num{font-size:12px}
.links{display:flex;gap:6px;flex-wrap:wrap}
.links a{font-size:12px;padding:4px 9px;border:1px solid var(--line2);border-radius:6px;background:var(--panel2);color:var(--text)}
.links a:hover{border-color:#4a6c9b;text-decoration:none}
#overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:35;display:none}
#overlay.open{display:block}

/* ---- nhật ký ---- */
.logbox{background:#080c11;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;font-family:var(--mono);font-size:12px;line-height:1.5;height:min(60vh,560px);overflow:auto;white-space:pre-wrap;word-break:break-all;color:#c9d4e0}
.logbox .w{color:#f6c98a}.logbox .e{color:#f3a1a4}.logbox .ok{color:#9ee2ad}

/* ---- cấu hình ---- */
.cfgform .grp{border:1px solid var(--line);border-radius:var(--r);margin-bottom:10px;background:var(--panel)}
.cfgform .grp>summary{cursor:pointer;padding:9px 14px;font-weight:600;color:var(--text);list-style:none;display:flex;gap:10px;align-items:center}
.cfgform .grp>summary::before{content:"▸";color:var(--dim);font-size:12px}
.cfgform .grp[open]>summary::before{content:"▾"}
.cfgform .grp>summary .n{color:var(--dim);font-weight:400;font-size:12px}
.cfgform .fields{padding:6px 14px 12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:6px 18px}
.cfgform .f{display:grid;grid-template-columns:1fr 150px;gap:8px;align-items:center;padding:4px 0;border-bottom:1px dashed #1c2633}
.cfgform .f label{font-family:var(--mono);font-size:12.5px;color:var(--text)}
.cfgform .f .help{display:block;font-family:var(--sans);font-size:11.5px;color:var(--dim)}
.cfgform .f input[type=text],.cfgform .f input[type=number]{width:100%}
.cfgform .f.wide{grid-template-columns:1fr}
.cfgform .f textarea{min-height:90px}
/* bộ điều chỉnh dưới mỗi tab nhóm trung/cao */
.tuner{margin-top:14px;border:1px dashed #2b3a4e;border-radius:var(--r);background:linear-gradient(180deg,rgba(255,255,255,.015),transparent)}
.tuner>summary{cursor:pointer;padding:11px 16px;font-weight:600;list-style:none;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tuner>summary::before{content:"▸";color:var(--dim);font-size:12px}.tuner[open]>summary::before{content:"▾"}
.tuner>summary .n{color:var(--dim);font-weight:400;font-size:12px}
.tuner .inner{padding:0 16px 14px}
.tuner .fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:6px 18px;padding:6px 0 10px}
.tuner .f{display:grid;grid-template-columns:1fr 130px;gap:8px;align-items:center;padding:5px 0;border-bottom:1px dashed #1c2633}
.tuner .f label{font-size:12.5px;color:var(--text)}.tuner .f .help{display:block;font-size:11px;color:var(--dim)}
.tuner .f .def{display:block;font-family:var(--mono);font-size:10.5px;color:var(--dim)}
.tuner .f.changed label{color:#fbbf24}.tuner .f.changed input{border-color:#b4851a}
.tuner .f.changed .def{color:#fbbf24}
.tuner .f input[type=text],.tuner .f input[type=number]{width:100%}
.tuner h4{margin:12px 0 4px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;gap:8px;align-items:center}
.tuner h4 .n{text-transform:none;letter-spacing:0;font-weight:400;color:var(--dim)}
.gapcard{display:grid;grid-template-columns:150px 1fr 110px;gap:12px;align-items:center;padding:8px 0;border-bottom:1px dashed #1c2633;cursor:pointer}
.gapcard:hover{background:rgba(255,255,255,.02)}
.gapbar{height:8px;border-radius:4px;background:#1c2633;overflow:hidden}.gapbar i{display:block;height:100%;border-radius:4px}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:#1b2535;border:1px solid #3a4e6b;color:var(--text);padding:10px 16px;border-radius:10px;z-index:60;box-shadow:0 10px 30px rgba(0,0,0,.5);font-size:13px;max-width:80vw}
.toast.err{border-color:#7a2f35;background:#3a1b1e}
.toast.ok{border-color:#2f6b5e;background:#13261b}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line2);border-top-color:var(--info);border-radius:50%;animation:rot .8s linear infinite;vertical-align:-2px}
@keyframes rot{to{transform:rotate(360deg)}}
.sparkwrap svg{display:block}
.legend{display:flex;gap:12px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:-1px;margin-right:5px}
.help{color:var(--muted);font-size:12.5px;line-height:1.55}
.help b{color:var(--text)}
details.more>summary{cursor:pointer;color:var(--muted);font-size:12.5px}
@media (max-width:1000px){:root{--nav:56px}#nav .item .txt,#nav .item .badge,#nav .sect{display:none}#nav .item{justify-content:center;padding:10px 0}#top input.search{width:160px}#top .jobs,#top .brand .muted{display:none}}

/* ===== HIỆU ỨNG (FX) ===== */
:root{--tape:0px}
body.tape-on{--tape:30px}
#nav{top:calc(var(--top) + var(--tape))}
#main{top:calc(var(--top) + var(--tape))}
#tape{position:fixed;left:0;right:0;top:var(--top);height:30px;background:#0a0f15;border-bottom:1px solid var(--line);overflow:hidden;z-index:25;display:none;white-space:nowrap}
body.tape-on #tape{display:block}
#tape .track{display:inline-flex;gap:30px;padding:0 14px;height:30px;align-items:center;animation:tape var(--tape-dur,70s) linear infinite;will-change:transform}
#tape:hover .track{animation-play-state:paused}
#tape .it{font-size:12px;color:var(--muted);cursor:pointer;display:inline-flex;gap:6px;align-items:center}
#tape .it b{color:var(--text)}#tape .it .k{font-size:10px;padding:0 4px;border-radius:3px;border:1px solid var(--line2);color:var(--dim)}
@keyframes tape{from{transform:translateX(0)}to{transform:translateX(-50%)}}
#beam{position:fixed;left:0;right:0;top:calc(var(--top) - 2px);height:2px;z-index:31;display:none;overflow:hidden}
#beam.on{display:block}
#beam i{position:absolute;top:0;bottom:0;width:28%;background:linear-gradient(90deg,transparent,var(--multi),#fff,var(--multi),transparent);animation:beam 1.5s ease-in-out infinite}
@keyframes beam{from{left:-30%}to{left:100%}}
@keyframes fu{0%{background:rgba(63,185,80,.5)}100%{background:transparent}}
@keyframes fd{0%{background:rgba(248,81,73,.5)}100%{background:transparent}}
table.t td.fu{animation:fu 1.8s ease-out}table.t td.fd{animation:fd 1.8s ease-out}
@keyframes rowin{0%{opacity:0;transform:translateX(-16px);background:rgba(45,212,191,.22)}60%{background:rgba(45,212,191,.12)}100%{opacity:1;transform:none;background:transparent}}
table.t tr.newrow td{animation:rowin .9s ease-out}
.parts .bar>i{transition:width .9s cubic-bezier(.2,.8,.2,1)}
.radarwrap{position:relative;width:100%;aspect-ratio:1;max-width:470px;margin:0 auto}
.radarwrap canvas{width:100%;height:100%;display:block;border-radius:50%;cursor:crosshair}
.radarwrap .tip{position:absolute;pointer-events:none;background:#0f161fee;border:1px solid var(--line2);border-radius:8px;padding:6px 9px;font-size:12px;transform:translate(-50%,-125%);white-space:nowrap;display:none;z-index:3}
.radarwrap .tip b{font-size:13px}
.radarlegend{display:flex;gap:14px;justify-content:center;font-size:11.5px;color:var(--dim);margin-top:8px;flex-wrap:wrap}
.radarlegend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.treemap{position:relative;width:100%;height:100%;min-height:300px;border-radius:var(--r);overflow:hidden;background:#0c1218;border:1px solid var(--line)}
.treemap .cell{position:absolute;overflow:hidden;border:1px solid rgba(5,8,12,.75);padding:5px 7px;cursor:pointer;transition:filter .15s;box-sizing:border-box;animation:cellin .5s ease-out both}
.treemap .cell:hover{filter:brightness(1.3);z-index:2;outline:1px solid #fff5}
.treemap .cell.reserve{outline:1px dashed rgba(255,255,255,.4);outline-offset:-3px}
.treemap .cell .s{font-weight:700;color:#fff;text-shadow:0 1px 2px #000a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.treemap .cell .p{font-family:var(--mono);color:#fff;opacity:.92;white-space:nowrap}
.treemap .cell .m{font-size:10.5px;color:#fffb;white-space:nowrap}
.treemap .empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted)}
@keyframes cellin{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.gauge{display:flex;align-items:center;gap:14px}
.gauge svg{width:96px;height:96px;flex:none}
.gauge .arc{transition:stroke-dashoffset 1.1s cubic-bezier(.2,.8,.2,1)}
.gauge .big{font-family:var(--mono);font-size:26px;font-weight:700}
.gauge .lab{color:var(--muted);font-size:12px}
#alerts{position:fixed;right:16px;top:calc(var(--top) + var(--tape) + 12px);display:flex;flex-direction:column;gap:8px;z-index:50;max-width:380px;pointer-events:none}
.al{pointer-events:auto;background:#1a1310;border:1px solid #7a4a12;border-left:4px solid var(--pump);border-radius:10px;padding:10px 12px;font-size:12.5px;box-shadow:0 10px 30px #000a;animation:alin .35s ease-out;cursor:pointer}
.al.good{border-color:#2f6b5e;border-left-color:var(--up);background:#10201a}
.al.new{border-color:#1f5e57;border-left-color:var(--multi);background:#0f1f22}
.al .t{color:var(--dim);font-family:var(--mono);font-size:11px;margin-left:6px}
@keyframes alin{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:none}}
body.fx-full::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(1200px 600px at 70% -10%,rgba(45,212,191,.07),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(245,165,36,.06),transparent 60%)}
body.fx-full::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.013) 3px 4px);animation:scan 14s linear infinite}
@keyframes scan{from{background-position:0 0}to{background-position:0 160px}}
.pulse{animation:pulse 2s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(45,212,191,0)}50%{box-shadow:0 0 0 6px rgba(45,212,191,.14)}}
.kpi .val.up{color:var(--up)}.kpi .val.down{color:var(--down)}
.hero{display:grid;grid-template-columns:minmax(300px,470px) 1fr;gap:14px;margin-bottom:12px}
@media (max-width:1100px){.hero{grid-template-columns:1fr}}
.pulsebox .row{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dashed #1c2633;font-size:13px}
.pulsebox .row .v{font-family:var(--mono)}
.phase{font-size:11px;color:var(--multi);font-family:var(--mono);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fxctl{display:flex;gap:6px;align-items:center}
.fxctl select{padding:3px 6px;font-size:12px;border-radius:6px}
.fxctl button{padding:3px 8px;font-size:13px;border-radius:6px}
.spark{display:inline-block;min-width:90px;height:26px;vertical-align:middle}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}}
body.fx-off *{animation:none!important;transition:none!important}
body.fx-off::before,body.fx-off::after{display:none}
body.fx-mid::after{display:none}

/* ── Thêm cho bản chạy trên web (không có trong web_ui.html gốc) ── */
h1.brand{font-size:inherit;margin:0;line-height:1}
.qc-hd{color:var(--info);font-size:12.5px;white-space:nowrap;margin-left:4px}
.qc-ngu{display:flex;gap:2px;margin-left:8px;font-size:12px}
.qc-ngu a{color:var(--dim);padding:2px 6px;border-radius:5px;text-decoration:none}
.qc-ngu a[aria-current]{color:var(--text);background:var(--panel2)}
.qc-gt{margin:22px 10px 8px;padding-top:14px;border-top:1px solid var(--line);
  font-size:12.5px;line-height:1.55;color:var(--muted)}
.qc-gt h2{font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:var(--dim);
  margin:0 0 8px;font-weight:600}
.qc-gt p{margin:0 0 8px}
.qc-gt a{color:var(--info)}
.qc-gt-canh{color:var(--dim);font-style:italic}
