:root{--bg:#06111f;--text:#eef6ff;--muted:#9eb3ca;--line:rgba(255,255,255,.12);--brand:#38d6ff;--brand2:#8b5cf6;--ok:#14f1a6;--bad:#ff6b6b}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,Segoe UI,sans-serif;background:radial-gradient(circle at 15% 0,rgba(56,214,255,.24),transparent 30%),linear-gradient(135deg,var(--bg),#0b1830);color:var(--text)}button,input,select,textarea{font:inherit}.auth{min-height:100vh;display:grid;grid-template-columns:1fr 420px;gap:36px;align-items:center;padding:48px clamp(20px,6vw,90px)}.brand{display:flex;gap:10px;align-items:center;color:var(--text);font-weight:900;text-decoration:none}.brand span{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#04111f}.intro h1{font-size:clamp(42px,6vw,76px);line-height:.95;margin:24px 0}.intro p,.eyebrow,small,td,p{color:var(--muted)}.card,.secret{border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.035));box-shadow:0 24px 80px rgba(0,0,0,.3);padding:22px}.auth-card,form{display:grid;gap:14px}.switch{display:grid;grid-template-columns:1fr 1fr;gap:8px}.switch button{background:rgba(255,255,255,.06);color:var(--muted)}.switch .active{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#04111f}label{display:grid;gap:8px;color:var(--muted);font-weight:800}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:14px;background:rgba(0,0,0,.18);color:var(--text);padding:12px}button{border:0;border-radius:14px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#04111f;font-weight:900;padding:12px 16px;cursor:pointer}.hidden{display:none!important}.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}aside{position:sticky;top:0;height:100vh;padding:18px;border-right:1px solid var(--line);background:rgba(0,0,0,.18);display:grid;align-content:start;gap:10px}aside button{background:transparent;color:var(--muted);text-align:left;border:1px solid transparent}aside button.active{color:var(--text);background:rgba(56,214,255,.14);border-color:rgba(56,214,255,.24)}.danger{color:var(--bad)!important}.content{padding:24px clamp(18px,4vw,54px)}header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-weight:900;color:var(--brand)}h2{font-size:38px;margin:0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.metric{padding:20px;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.06)}.metric b{display:block;font-size:30px;margin-top:8px}.grid-form{grid-template-columns:repeat(4,1fr);align-items:end;margin-bottom:18px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line)}th{color:var(--text)}.pill{display:inline-block;border-radius:999px;padding:4px 9px;background:rgba(20,241,166,.14);color:var(--ok);font-weight:900}.pill.off{background:rgba(255,107,107,.14);color:var(--bad)}.dangerBtn{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:8px 10px;background:rgba(255,107,107,.14);color:#ffd6d6;border:1px solid rgba(255,107,107,.25);font-size:13px;font-weight:900;white-space:nowrap}.miniBtn{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:8px 10px;background:rgba(56,214,255,.14);color:var(--text);border:1px solid rgba(56,214,255,.22);font-size:13px;font-weight:900;white-space:nowrap}.apiKeyCell{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.apiKeyCell code{word-break:break-all}.copyBuffer{position:fixed;left:-9999px;top:-9999px}button:disabled{opacity:.45;cursor:not-allowed}.secret{margin:0 0 18px;border-color:rgba(20,241,166,.4);word-break:break-all}.secret code,pre code{color:#9de9ff}pre{overflow:auto}@media(max-width:900px){.auth,.app{grid-template-columns:1fr}.app aside{position:static;height:auto}.grid-form,.metrics{grid-template-columns:1fr}header{align-items:flex-start;flex-direction:column}}
.promoBanner{display:grid;gap:6px;margin:0 0 14px;padding:14px;border:1px solid rgba(255,216,77,.42);border-radius:16px;background:rgba(255,216,77,.1);color:#ffd84d}.promoText{display:block;margin-top:6px;color:#ffd84d;font-weight:900}.topupNoticeOverlay{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:20px;background:rgba(0,0,0,.56)}.topupNotice{max-width:560px;width:min(560px,100%)}.topupNotice h3{margin:0 0 10px;font-size:28px}.noticeActions{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}.noticeActions button{min-width:92px}.secondaryBtn{background:linear-gradient(135deg,rgba(255,255,255,.18),rgba(255,216,77,.22));color:#fff;border:1px solid rgba(255,216,77,.35);box-shadow:0 10px 28px rgba(255,216,77,.12)}

.promoTierList{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.promoTierList span{display:inline-flex;border:1px solid rgba(255,216,77,.38);border-radius:999px;padding:6px 10px;background:rgba(255,216,77,.11);color:#ffeaa0;font-weight:900}

.warnBtn{opacity:.9;background:rgba(255,216,77,.12);border-color:rgba(255,216,77,.28);color:#ffe79a}

.bankDepositInfo{margin-bottom:18px}.bankQrBox{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:center}.bankQrBox img{width:220px;max-width:100%;border-radius:18px;background:#fff;padding:10px}.bankPayMeta{display:grid;gap:10px}.bankPayMeta span{color:var(--muted);font-weight:800}@media(max-width:900px){.bankQrBox{grid-template-columns:1fr}.bankQrBox img{width:100%}}
.approvalPopup{text-align:center;border-color:rgba(255,216,77,.42);box-shadow:0 30px 90px rgba(0,0,0,.45)}.approvalIcon{width:58px;height:58px;margin:0 auto 12px;display:grid;place-items:center;border-radius:999px;background:linear-gradient(135deg,#38d6ff,#229ed9);color:#fff;font-size:30px;font-weight:1000}.telegramBtn{display:inline-flex;align-items:center;justify-content:center;gap:10px;margin-top:18px;padding:14px 22px;border-radius:16px;background:linear-gradient(135deg,#38d6ff,#229ed9);color:#03101d;text-decoration:none;font-weight:1000;box-shadow:0 16px 42px rgba(34,158,217,.28)}.telegramLogo{display:grid;place-items:center;width:26px;height:26px;border-radius:999px;background:#fff;color:#229ed9;font-weight:1000}.telegramHandle{display:block;margin-top:14px;color:#ffd84d;font-size:20px;font-weight:1000}
.customerDocs .docMiniGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0 18px}.customerDocs .docMiniGrid div{padding:14px;border:1px solid rgba(56,214,255,.22);border-radius:16px;background:rgba(56,214,255,.08)}.customerDocs .docMiniGrid b,.customerDocs .docMiniGrid code,.customerDocs .docMiniGrid span{display:block}.customerDocs .docMiniGrid code,.customerDocs .docMiniGrid span{margin-top:8px;color:#9de9ff;font-weight:900}@media (max-width:900px){.customerDocs .docMiniGrid{grid-template-columns:1fr}}.customerDocList{display:grid;grid-template-columns:120px 1fr;gap:10px 14px;margin-top:16px;padding:16px;border:1px solid rgba(56,214,255,.2);border-radius:16px;background:rgba(56,214,255,.06)}.customerDocList b{color:#fff}.customerDocList span{color:#9eb3ca;line-height:1.6}@media (max-width:700px){.customerDocList{grid-template-columns:1fr}}.doc-url-highlight{grid-template-columns:150px minmax(0,1fr) auto!important;align-items:center;border:1px solid rgba(56,214,255,.55)!important;border-radius:18px;padding:16px!important;margin:4px 0 10px;background:linear-gradient(135deg,rgba(56,214,255,.18),rgba(20,241,166,.08));box-shadow:0 0 38px rgba(56,214,255,.12)}.doc-url-highlight code{font-size:18px;color:#e9fbff!important;word-break:break-all}.doc-url-highlight button{border:1px solid rgba(56,214,255,.45);border-radius:12px;padding:10px 14px;background:rgba(56,214,255,.16);color:#fff;font-weight:1000;cursor:pointer}.doc-url-highlight span{grid-column:2 / -1;color:#ffd84d!important;font-weight:900}.customerDocs .doc-url-highlight{grid-column:1 / -1;display:grid!important;grid-template-columns:120px minmax(0,1fr) auto!important}@media (max-width:700px){.doc-url-highlight,.customerDocs .doc-url-highlight{grid-template-columns:1fr!important}.doc-url-highlight span{grid-column:auto}}
.telegramFloat{position:fixed;right:22px;bottom:14px;z-index:9998;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;padding:0;border-radius:999px;background:linear-gradient(135deg,#229ed9,#38d6ff);color:#03101d;text-decoration:none;font-weight:1000;letter-spacing:.2px;box-shadow:0 18px 46px rgba(34,158,217,.32);border:1px solid rgba(255,255,255,.28);transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}.telegramFloat:hover{transform:scale(1.1);box-shadow:0 24px 60px rgba(34,158,217,.46);filter:saturate(1.08)}.telegramFloatIcon{display:grid;place-items:center;width:30px;height:30px;border-radius:999px;background:#fff;color:#229ed9;font-size:18px;font-weight:1000}.telegramFloat span:last-child{display:none}@media(max-width:640px){.telegramFloat{right:14px;bottom:14px}}
/* ZALO-V192: nut Zalo noi nhu Telegram, dat chong len nut Telegram cho gon */
.zaloFloat{bottom:62px;background:linear-gradient(135deg,#0068ff,#00b2ff)}.zaloFloat .telegramFloatIcon{color:#0068ff}
/* ZALO-V192: nut Zalo trong popup cho duyet — hien doc nhu Telegram */
.approvalPopup .telegramBtn{display:flex;width:100%;margin-top:12px}.approvalPopup .zaloBtn{background:linear-gradient(135deg,#0068ff,#00b2ff);color:#fff}.approvalPopup .zaloBtn .telegramLogo{color:#0068ff}
.bankMethodHint{display:grid;gap:6px;padding:12px 14px;border:1px solid rgba(56,214,255,.24);border-radius:14px;background:rgba(56,214,255,.08)}.bankMethodHint b{color:#fff}.bankMethodHint span{color:var(--muted);font-weight:800;line-height:1.5}.depositReferenceText{padding:10px 12px;border-radius:12px;background:rgba(255,216,77,.12);border:1px solid rgba(255,216,77,.32);color:#ffd84d!important;font-size:18px;font-weight:1000}
/* readability-overlay-20260703 */
.topupNoticeOverlay{background:rgba(1,7,16,.82)!important;backdrop-filter:blur(6px)}
.topupNotice,.approvalPopup{background:linear-gradient(180deg,rgba(9,22,40,.98),rgba(7,18,34,.96))!important;border:1px solid rgba(80,174,255,.34)!important;box-shadow:0 34px 110px rgba(0,0,0,.72),0 0 0 1px rgba(255,255,255,.06) inset!important;color:#eef6ff!important}
.topupNotice p,.approvalPopup p{color:#d7e6f7!important;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.topupNotice h3,.approvalPopup h3{color:#f6fbff!important;text-shadow:0 2px 8px rgba(0,0,0,.45)}
.bankDepositInfo{background:linear-gradient(180deg,rgba(9,22,40,.98),rgba(7,18,34,.96))!important;border-color:rgba(80,174,255,.34)!important;box-shadow:0 22px 70px rgba(0,0,0,.42)}
.bankQrBox{padding:14px;border:1px solid rgba(56,214,255,.38);border-radius:20px;background:linear-gradient(180deg,rgba(8,31,51,.98),rgba(7,24,43,.96));box-shadow:inset 0 0 0 1px rgba(255,255,255,.05)}
.bankPayMeta b,.bankPayMeta span{color:#e9f5ff!important;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.depositQrCountdown{color:#ffd84d!important;font-weight:1000!important}
.depositReferenceText{background:rgba(255,216,77,.18)!important;border-color:rgba(255,216,77,.55)!important;color:#ffe27a!important;text-shadow:none}
.promoBanner{background:rgba(64,45,9,.78)!important;border-color:rgba(255,216,77,.5)!important;box-shadow:0 16px 48px rgba(0,0,0,.28)}

.pill.success{background:rgba(20,241,166,.16)!important;color:#14f1a6!important;border:1px solid rgba(20,241,166,.42)!important}.pill.pending,.pill.warning{background:rgba(255,216,77,.18)!important;color:#ffd84d!important;border:1px solid rgba(255,216,77,.45)!important}.pill.error,.pill.off{background:rgba(255,107,107,.18)!important;color:#ff6b6b!important;border:1px solid rgba(255,107,107,.5)!important}.toast.warn{border-color:rgba(255,216,77,.55);color:#ffe99a}.testStatus.pending,.testStatus.warning{color:#ffd84d;background:rgba(255,216,77,.16);border-color:rgba(255,216,77,.45);box-shadow:0 0 0 1px rgba(255,216,77,.12)}
/* REQUEST-TOAST-SLIM-V229: popup nho lai, mong lai, giam padding/gap/width. */
.requestToastStack{position:fixed;top:14px;right:14px;z-index:10020;display:grid;gap:8px;width:min(300px,calc(100vw - 22px));pointer-events:none}
.requestToast{pointer-events:auto;padding:10px 12px;border-radius:14px;background:linear-gradient(180deg,rgba(9,22,40,.98),rgba(7,18,34,.96));border:1px solid rgba(80,174,255,.32);box-shadow:0 18px 50px rgba(0,0,0,.42);color:#eef6ff;animation:requestToastIn .22s ease-out}
.requestToast.success{border-color:rgba(0,220,160,.52);box-shadow:0 18px 50px rgba(0,120,90,.22)}
.requestToast.error{border-color:rgba(255,92,122,.62);box-shadow:0 18px 50px rgba(140,20,45,.26)}
.requestToast.warning{border-color:rgba(255,205,75,.62);box-shadow:0 18px 50px rgba(150,105,12,.22)}
.requestToast.hide{opacity:0;transform:translateY(-6px);transition:opacity .28s ease,transform .28s ease}
.requestToastHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.requestToastHead b{font-size:12.5px;letter-spacing:.4px}
.requestToastHead span{font-size:11px;color:#9bb7d6;font-weight:900}
.requestToast.success .requestToastHead b{color:#16f0b4}
.requestToast.error .requestToastHead b{color:#ff7186}
.requestToast.warning .requestToastHead b{color:#ffd45e}
.requestToastModel{font-weight:1000;color:#fff;margin-bottom:2px;font-size:13px}
.requestToastEndpoint{font-size:11px;color:#9fc4ee;margin-bottom:6px;word-break:break-word}
.requestToastTokens{display:flex;gap:6px;flex-wrap:wrap}
.requestToastTokens span{padding:3px 7px;border-radius:999px;background:rgba(255,255,255,.07);color:#dcecff;font-size:10.5px;font-weight:900}
.requestToastMessage{margin-top:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,.09);color:#e8f2ff;font-size:12px;line-height:1.4;word-break:break-word}
@keyframes requestToastIn{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
.pwChecklist{display:grid;gap:6px;padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid var(--line)}
.pwChecklist span{display:flex;align-items-center;gap:8px;color:var(--muted);font-size:13px}
.pwChecklist .ok{color:var(--ok)}
.pwChecklist .bad{color:var(--bad)}
.pwChecklist .ok:before{content:'✓'}
.pwChecklist .bad:before{content:'✗'}
.fieldHint{display:block;margin:6px 0 0;color:var(--muted);font-size:13px}
.fieldHint.hidden{display:none}
.fieldHint.fieldError{color:var(--bad)}


.toolInstallDocs{margin:20px 0}.toolInstallDocsWrap{display:grid;gap:18px}.toolTopTabs{display:flex;gap:10px;flex-wrap:wrap}.toolTopTab{padding:10px 14px;border-radius:12px;border:1px solid rgba(110,124,255,.28);background:rgba(15,18,36,.85);color:#dcecff;font-weight:800}.toolTopTab.active{background:rgba(72,92,180,.35);border-color:rgba(110,124,255,.58);color:#fff}.toolInstallPanel{display:grid;gap:18px;padding:18px;border:1px solid rgba(86,119,255,.28);border-radius:22px;background:rgba(17,22,46,.9);box-shadow:0 10px 30px rgba(0,0,0,.18)}.toolInstallHero{padding:14px 16px;border:1px solid rgba(80,146,255,.35);border-radius:16px;background:rgba(46,85,160,.18);color:#f5fbff;font-weight:800}.toolInstallSection{display:grid;gap:12px;padding:14px 0;border-top:1px solid rgba(255,255,255,.06)}.toolInstallSection:first-of-type{border-top:none;padding-top:0}.toolInstallSection h4{margin:0;color:#fff}.toolInstallSection p{margin:0;color:#b7c7df}.toolInstallLabel{font-size:12px;font-weight:900;letter-spacing:.14em;color:#aebee1}.toolChoiceGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.toolChoiceBtn{padding:12px 14px;border-radius:14px;border:1px solid rgba(115,143,255,.28);background:rgba(17,22,46,.45);color:#dcecff;font-weight:800}.toolChoiceBtn.active{background:linear-gradient(90deg,rgba(20,120,110,.38),rgba(25,180,140,.28));border-color:rgba(34,220,170,.55);color:#8fffe5}.toolModelGrid{display:grid;gap:10px}.toolModelRow{display:grid;grid-template-columns:180px minmax(0,1fr);gap:12px;align-items:center}.toolModelLabel{color:#dce8ff;font-weight:800}.toolSelect{width:100%;padding:10px 12px;border-radius:12px;border:1px solid rgba(123,140,255,.34);background:rgba(15,19,39,.82);color:#eef4ff}.toolPrimaryBtn{padding:14px 16px;border:none;border-radius:14px;background:linear-gradient(90deg,#17b68f,#1ea77f);color:#fff;font-size:18px;font-weight:900}.toolPrimaryBtn.disabled{opacity:.55}.toolInstallWarn{margin:0;text-align:center;color:#ffb35c;font-weight:900}.toolInstallOutput{display:grid;gap:10px}.toolInstallOutputTitle{font-size:12px;font-weight:900;letter-spacing:.14em;color:#aee8d8}.toolInstallGuide{display:grid;gap:8px;padding:14px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.02)}.toolInstallGuide ol{margin:0;padding-left:18px;color:#dce8ff}.toolCommand{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.toolCommand pre{margin:0;padding:14px;border:1px solid rgba(93,121,255,.28);border-radius:14px;background:rgba(13,18,38,.88);white-space:pre-wrap;word-break:break-word}.toolCommand code{color:#9de9ff}@media(max-width:1100px){.toolChoiceGrid{grid-template-columns:1fr}.toolModelRow{grid-template-columns:1fr}.toolCommand{grid-template-columns:1fr}}

.docConnectCard{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:18px;align-items:center;max-width:100%;margin:16px 0 18px;padding:18px;border:1px solid rgba(56,214,255,.28);border-radius:22px;background:linear-gradient(135deg,rgba(12,50,72,.82),rgba(7,22,40,.86));box-shadow:0 18px 46px rgba(0,0,0,.18)}.docConnectCard>div{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 16px;align-items:center}.docConnectCard span{color:#dff8ff;font-weight:1000;letter-spacing:.06em}.docConnectCard code{display:block;min-width:0;padding:13px 16px;border:1px solid rgba(56,214,255,.18);border-radius:14px;background:rgba(2,10,22,.62);color:#9de9ff;font-size:16px;word-break:break-all}.docConnectCard small{grid-column:2;color:#8fb3d1}.docConnectCard button{width:100%;padding:14px 16px;border-radius:14px;border:1px solid rgba(50,195,255,.42);background:linear-gradient(135deg,#1f88bd,#146087);color:#fff;font-weight:1000;box-shadow:0 12px 26px rgba(14,99,145,.2)}.docConnectCard button:hover{filter:brightness(1.08)}@media(max-width:900px){.docConnectCard{grid-template-columns:1fr}.docConnectCard>div{grid-template-columns:1fr}.docConnectCard small{grid-column:auto}}

/* Uniform customer background: match the admin Provider & giá tone */
:root{--customerUnifiedBg:#071528;--customerUnifiedPanel:#0b2036;--customerUnifiedPanel2:#102f45;--customerUnifiedField:#081927}
body{background:var(--customerUnifiedBg)!important}
.auth,.app,.content,.tab{background:var(--customerUnifiedBg)!important}
aside{background:var(--customerUnifiedPanel2)!important}
.card,.secret,.metric,.topupNotice,.topupNoticeOverlay .card,.toolInstallPanel,.toolInstallHero,.toolInstallGuide,.toolCommand pre,.docConnectCard,.bankQrBox,.requestToast{background:var(--customerUnifiedPanel)!important}
.card,.secret,.metric,.toolInstallPanel,.toolInstallHero,.toolInstallGuide,.docConnectCard{border-color:rgba(56,214,255,.14)!important}
input,select,textarea,.readonlyBox,.searchBox,.docConnectCard code{background:var(--customerUnifiedField)!important}


/* Customer COMBO routing */
.comboToolbar{display:flex;justify-content:space-between;align-items:center;gap:24px}.comboToolbar h3{margin:2px 0 8px;font-size:24px}.comboToolbar p{margin:0;color:#9eb6cc}.comboToolbar>button{min-width:160px}.comboStats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}
/* V288-COMBO-5COL (R3): comboList tu 1 cot => grid nhieu cot toi da 5 khi
   container du rong. Fallback auto-fill; @supports container query de tang dan
   2/3/4/5 nhu admin. Card khong bi keo cao bang nhau (align-items:start). */
.comboList{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px;align-items:start}
@supports (container-type:inline-size){
  .comboList{container-type:inline-size}
  @container (min-width:640px){.comboList{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @container (min-width:980px){.comboList{grid-template-columns:repeat(3,minmax(0,1fr))}}
  @container (min-width:1320px){.comboList{grid-template-columns:repeat(4,minmax(0,1fr))}}
  @container (min-width:1660px){.comboList{grid-template-columns:repeat(5,minmax(0,1fr))}}
}
.comboCard{padding:20px;border:1px solid rgba(56,214,255,.18);border-radius:20px;background:var(--customerUnifiedPanel);box-shadow:0 14px 34px rgba(0,0,0,.18);min-width:0;max-width:100%}.comboCard.comboOff{opacity:.7}.comboCardHead,.comboCardFoot{display:flex;align-items:center;justify-content:space-between;gap:16px}.comboCardHead h3{margin:0 0 6px;color:#fff;font-size:20px}.comboStrategy{display:inline-flex;padding:5px 9px;border:1px solid rgba(56,214,255,.28);border-radius:8px;background:rgba(14,111,160,.18);color:#70d9ff;font-size:12px;font-weight:900}.comboSwitch{display:flex;align-items:center;gap:9px;font-weight:900;color:#8ee8d0}.comboToggle{width:42px;height:22px;accent-color:#22b88d}.comboMemberBadges{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.comboMemberBadge{padding:7px 10px;border:1px solid rgba(75,120,255,.28);border-radius:9px;background:rgba(28,45,92,.36);color:#b9d0ff;font-size:12px;font-weight:800}.comboMemberBadge.orphan{border-color:#d39023;color:#ffc45f;background:rgba(117,70,7,.28)}.comboMemberBadge.disabled{text-decoration:line-through;opacity:.55}
/* V288-COMBO-RED (R3): ket qua Test tren member badge — do/xanh/vang. CHUA
   test khong co class, khong bao loi gia. */
.comboMemberBadge.comboMemberTestFail{border-color:#ef5d6c;color:#ff8d9b;background:rgba(180,35,58,.22)}
.comboMemberBadge.comboMemberTestPass{border-color:#19c99b;color:#5ff0c4;background:rgba(20,150,110,.14)}
.comboMemberBadge.comboMemberTestTesting{border-color:#d6a72d;color:#ffd76a;background:rgba(160,120,20,.14)}
/* V290-COMBO-RED-BG (anh #18): "ko chay duoc" phai bao NEN DO ca card COMBO
   user — TAT CA member chac chan khong chay duoc (da xoa/OFF/health down) va
   COMBO dang BAT. Background PHAI !important vi rule cuoi file
   .comboCard{background:#0d1117!important} se an mat nen khong !important. */
.comboCard.comboDown{border-color:rgba(239,93,108,.5);background:rgba(180,35,58,.16)!important}
.comboWarning{color:#ffc56b;font-weight:800}.comboCardFoot{padding-top:14px;border-top:1px solid rgba(255,255,255,.06);color:#92abc3}.comboCardFoot>div{display:flex;gap:10px}.comboEmpty{text-align:center;padding:42px}.comboEmpty b{font-size:20px}.comboEmpty p{color:#91aac1}.comboEditorOverlay{position:fixed;inset:0;z-index:1300;display:grid;place-items:center;padding:22px;background:rgba(2,8,18,.78);backdrop-filter:blur(8px)}.comboEditor{width:min(780px,96vw);max-height:92vh;overflow:auto;padding:24px;border-color:rgba(77,145,255,.32)!important;box-shadow:0 28px 80px rgba(0,0,0,.55)}.comboEditorHead{display:flex;justify-content:space-between;align-items:start;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.08)}.comboEditorHead h2{margin:2px 0}
/* V288-FIX-X (R3): nut X (comboClose) can giu ngang doc — display:inline-flex
   + line-height:1 de ky tu "x" khong lech baseline theo font/OS. */
.comboClose{width:40px;height:40px;padding:0;border-radius:12px;background:rgba(255,255,255,.06);font-size:26px;display:inline-flex;align-items:center;justify-content:center;line-height:1}.comboField{display:grid;gap:8px;margin:20px 0}.comboField>span,.comboStrategies legend{font-weight:900;color:#eaf3ff}.comboField small,.comboStrategies small,.comboMembersSection span{color:#91aac1}.comboActiveField{display:flex;align-items:center;gap:10px;margin:12px 0 20px;font-weight:900}.comboActiveField input{width:20px;height:20px}.comboStrategies{display:grid;gap:10px;margin:0;padding:0;border:0}.comboStrategyChoice{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:14px;border:1px solid rgba(102,126,190,.28);border-radius:14px;background:rgba(7,20,40,.52)}.comboStrategyChoice:has(input:checked){border-color:#43a4ff;background:rgba(49,93,180,.2);box-shadow:inset 0 0 0 1px rgba(67,164,255,.25)}.comboStrategyChoice input{width:18px;height:18px}.comboStrategyChoice div{display:grid;gap:4px}.comboMembersSection{display:grid;gap:12px;margin-top:22px}.comboMembersSection>div:first-child{display:flex;justify-content:space-between;align-items:center}.comboMembersSection h3{margin:0}.comboAddMember{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.comboModelPicker{display:grid;gap:8px;min-width:0}.comboModelSearch,.comboModelSelect{width:100%}.comboModelSelect[size]:not([size="1"]){min-height:168px;padding:7px;overflow-y:auto;border-color:rgba(76,190,255,.72);box-shadow:0 0 0 2px rgba(56,178,255,.12)}.comboModelSelect[size]:not([size="1"]) option{padding:10px 12px;border-radius:8px}.comboModelSelect[size]:not([size="1"]) option:checked{background:linear-gradient(90deg,#1d9fda,#635df4);color:#fff}.comboModelSearchStatus{min-height:18px;color:#71d7ff!important;font-weight:800}.comboEditorMembers{display:grid;gap:10px}
/* V288-DND (R4): them cot handle 18px + drag states + fix X can giu.
   Truoc: 42px minmax(0,1fr) auto 78px 42px 42px 42px (7 cot). Sau: 18px handle
   dung dau, cac cot khac giu nguyen kich thuoc. */
.comboEditorMember{display:grid;grid-template-columns:18px 42px minmax(0,1fr) auto 78px 42px 42px 42px;gap:8px;align-items:center;padding:12px;border:1px solid rgba(86,119,255,.2);border-radius:14px;background:rgba(7,20,40,.62)}
.comboEditorMember.is-dragging{opacity:.45;border-style:dashed}
.comboEditorMember.is-drop-target{border-color:#43a4ff;box-shadow:0 0 0 2px rgba(67,164,255,.28)}
.comboDragHandle{cursor:grab;user-select:none;background:transparent;border:0;color:#8fa9c4;font-size:13px;letter-spacing:-2px;min-width:18px;width:18px;height:32px;padding:0;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.comboDragHandle:active{cursor:grabbing}.comboEditorMember>div{display:grid;gap:4px}.comboEditorMember small{color:#8fa8c0}
/* V288-COMBO-RED (R3): nhan trang thai Test tren member row trong editor. */
.comboMemberTestStatus{font-weight:900}.comboMemberTestStatus.error{color:#ff8d9b}.comboMemberTestStatus.success{color:#5ff0c4}.comboMemberTestStatus.testing{color:#ffd76a}
.comboEditorMember.comboMemberTestFail{border-color:rgba(239,93,108,.55);background:rgba(180,35,58,.12)}
.comboEditorMember.comboMemberTestPass{border-color:rgba(25,201,155,.45)}
.comboEditorMember.comboMemberTestTesting{border-color:rgba(214,167,45,.45)}
.comboMemberToggle{display:flex;align-items:center;gap:6px;color:#9ce8d3;font-size:12px}.comboTestBtn{min-width:72px;height:38px;padding:0 10px;border:1px solid rgba(56,214,255,.42);border-radius:10px;background:rgba(24,126,180,.25);color:#8ce7ff;font-weight:900}.comboTestBtn[data-status="testing"]{border-color:#d6a72d;color:#ffd76a}.comboTestBtn[data-status="success"]{border-color:#19c99b;color:#5ff0c4}.comboTestBtn[data-status="error"]{border-color:#ef5d6c;color:#ff7f8b}
/* V288-FIX-X (R3): comboIconBtn (X member) co kich thuoc cung nhau + can giu
   ngang doc de khong lech so voi nut len/xuong ke ben. */
.comboIconBtn{width:38px;height:38px;padding:0;display:inline-flex;align-items:center;justify-content:center;line-height:1}.comboEditorActions{position:sticky;bottom:-24px;display:flex;justify-content:flex-end;gap:10px;margin:24px -24px -24px;padding:16px 24px;background:rgba(11,32,54,.96);border-top:1px solid rgba(255,255,255,.08)}@media(max-width:760px){.comboToolbar,.comboCardHead,.comboCardFoot{align-items:stretch;flex-direction:column}.comboStats{grid-template-columns:1fr}.comboCardFoot>div{display:grid;grid-template-columns:1fr 1fr}.comboAddMember{grid-template-columns:1fr}.comboEditorMember{grid-template-columns:14px 34px minmax(0,1fr) 74px 38px 38px 38px}.comboMemberToggle{grid-column:2/-1}.comboTestBtn{grid-column:4/5;min-width:68px}.comboEditor{padding:18px}.comboEditorActions{bottom:-18px;margin:20px -18px -18px;padding:14px 18px}}

.accountLayout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.8fr);gap:18px;align-items:start}.accountProfileCard h3,.accountPasswordForm h3{margin:4px 0 14px}.accountInfoGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.accountInfoItem{display:grid;gap:6px;padding:15px;border:1px solid rgba(255,255,255,.09);border-radius:14px;background:rgba(3,16,31,.42)}.accountInfoItem span{color:var(--muted);font-size:13px;font-weight:800}.accountInfoItem b{overflow-wrap:anywhere}.accountPasswordForm{display:grid;gap:14px}.accountPasswordForm button:disabled{opacity:.65;cursor:wait}.accountMessage{min-height:22px;margin:0;font-weight:800}.accountMessage[data-status="success"]{color:var(--ok)}.accountMessage[data-status="error"]{color:var(--bad)}@media(max-width:900px){.accountLayout{grid-template-columns:1fr}.accountInfoGrid{grid-template-columns:1fr}}

.brandWithLogo{gap:12px}.brandWithLogo .brandLogo{width:58px;height:58px;display:block;object-fit:contain;border-radius:50%;filter:drop-shadow(0 0 12px rgba(56,214,255,.34));background:transparent}.brandWithLogo .brandText{width:auto;height:auto;display:inline;background:none;color:var(--text);border-radius:0}.app aside .brandWithLogo .brandLogo{width:72px;height:72px}.app aside .brandWithLogo{justify-content:flex-start;margin-bottom:8px}@media(max-width:900px){.app aside .brandWithLogo .brandLogo{width:58px;height:58px}}

.googleRegisterPanel{display:grid;gap:14px}.googleRegisterIntro{display:grid;gap:6px;text-align:center}.googleRegisterIntro b{font-size:19px}.turnstileWidget,.googleRegisterButton{display:flex;justify-content:center;min-height:44px}.turnstileWidget{min-height:66px;padding:2px 0}.googleRegisterPanel>small{text-align:center;line-height:1.45}.googleRegisterButton{align-items:center}.googleRegisterButton iframe{max-width:100%}

.authLegalLinks{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}.authLegalLinks a{color:#66d8ff;font-size:13px}.authLegalLinks a:hover{text-decoration:none}.googleRegisterPanel .configError{color:#ff8d8d;text-align:left}

.registrationHoneypot{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}

.googleVerificationPanel{display:grid;gap:10px;padding:14px;border:1px solid #256d91;border-radius:12px;background:#071f33}.googleVerificationPanel.hidden{display:none}.googleVerificationPanel small{color:#b8d5e8}#googleVerifyButton{min-height:44px}

.customerModelTest{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:280px}.customerModelTest .pill{min-width:140px;justify-content:center;text-align:center;font-weight:900;letter-spacing:.02em}.customerModelHealthDescription{flex-basis:100%;color:#d7e7f2;font-size:12px;line-height:1.45}.customerModelTestTime{color:#9bb9cf;font-size:12px;white-space:nowrap}
.customerTokenMultiplier{display:flex;justify-content:flex-start;min-width:0}.tokenMultiplierBadge{display:inline-flex;align-items:center;justify-content:center;min-width:74px;padding:7px 11px;border:1px solid rgba(56,214,255,.42);border-radius:999px;background:rgba(56,214,255,.1);color:#7ee8ff;font-weight:900;white-space:nowrap;box-shadow:inset 0 0 18px rgba(56,214,255,.06)}
/* COMBO-PRIORITY-V190: nhan COMBO o bang ban — trung ten model goc thi uu tien xai COMBO */
.customerModelGroupedTable .modelComboBadge{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border:1px solid rgba(20,241,166,.5);border-radius:999px;background:rgba(20,241,166,.12);color:#7dffd4;font-size:10px;font-weight:1000;letter-spacing:.06em;white-space:nowrap}
.modelBrandIcon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 38px;width:38px;height:38px;border:1px solid rgba(126,232,255,.34);border-radius:12px;background:linear-gradient(145deg,rgba(56,214,255,.2),rgba(65,105,225,.12));color:#dffaff;font-size:13px;font-weight:1000;letter-spacing:-.03em;box-shadow:0 7px 18px rgba(0,0,0,.18)}.customerModelIdentityText{display:grid;gap:5px;min-width:0;flex:1 1 auto}.customerModelIdentityText b{color:#eaf7ff;font-size:15px;overflow-wrap:normal;word-break:normal;hyphens:none}.customerModelIdentityText small{color:#8fb8d0;font-size:12px;font-weight:800}.modelBrandIcon[data-brand="openai"]{background:linear-gradient(145deg,rgba(16,163,127,.34),rgba(16,163,127,.12));border-color:rgba(52,211,153,.46)}.modelBrandIcon[data-brand="claude"],.modelBrandIcon[data-brand="anthropic"]{background:linear-gradient(145deg,rgba(217,119,87,.34),rgba(112,60,42,.18));border-color:rgba(232,151,124,.58)}.modelBrandIcon[data-brand="google"]{background:linear-gradient(145deg,rgba(66,133,244,.35),rgba(234,67,53,.15));border-color:rgba(66,133,244,.5)}.modelBrandIcon[data-brand="xai"]{background:linear-gradient(145deg,rgba(255,255,255,.2),rgba(90,90,90,.18));border-color:rgba(255,255,255,.38)}.modelBrandIcon[data-brand="deepseek"]{background:linear-gradient(145deg,rgba(56,120,255,.38),rgba(37,73,170,.16));border-color:rgba(88,145,255,.5)}.modelBrandIcon[data-brand="qwen"]{background:linear-gradient(145deg,rgba(133,76,255,.38),rgba(65,39,155,.17));border-color:rgba(158,112,255,.5)}.modelBrandIcon[data-brand="moonshot"]{background:linear-gradient(145deg,rgba(31,41,55,.8),rgba(82,82,91,.42));border-color:rgba(161,161,170,.45)}.modelBrandIcon[data-brand="meta"]{background:linear-gradient(145deg,rgba(0,129,251,.35),rgba(0,82,204,.17));border-color:rgba(55,152,255,.5)}.modelBrandIcon[data-brand="mistral"]{background:linear-gradient(145deg,rgba(255,129,34,.38),rgba(189,61,18,.17));border-color:rgba(255,154,74,.52)}
.modelCopyBtn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:28px;padding:4px 9px;border:1px solid rgba(74,207,255,.42);border-radius:9px;background:rgba(25,129,181,.18);color:#8ce9ff;font-size:11px;font-weight:900;line-height:1;white-space:nowrap;cursor:pointer}.modelCopyBtn:hover{border-color:rgba(108,226,255,.78);background:rgba(33,157,215,.3);color:#e9fbff}.modelCopyBtn:focus-visible{outline:2px solid #67dcff;outline-offset:2px}@media(max-width:760px){.customerModelIdentityMain{align-items:flex-start;flex-direction:column;gap:6px}.customerModelIdentityMain b{min-width:0}.modelCopyBtn{min-height:26px}}
.modelTestBtn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:28px;padding:4px 9px;border:1px solid rgba(99,230,180,.44);border-radius:9px;background:rgba(20,148,103,.18);color:#79f2c2;font-size:11px;font-weight:900;line-height:1;white-space:nowrap;cursor:pointer}.modelTestBtn:hover{border-color:rgba(121,242,194,.8);background:rgba(25,179,123,.3);color:#ecfff8}.modelTestBtn:disabled{cursor:wait;opacity:.82}.modelTestBtn[data-status="testing"]{border-color:#e7b63d;background:rgba(166,116,16,.25);color:#ffe08a}.modelTestBtn[data-status="success"]{border-color:#22d3a1;background:rgba(20,148,103,.3);color:#8affda}.modelTestBtn[data-status="error"]{border-color:#ff657a;background:rgba(180,35,58,.25);color:#ff9baa}.modelTestBtn:focus-visible{outline:2px solid #79f2c2;outline-offset:2px}@media(max-width:760px){.modelTestBtn{min-height:26px}}
.customerModelLastTest{display:grid;gap:4px;margin-top:8px;padding:9px 10px;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:rgba(255,255,255,.035)}.customerModelLastTest b{font-size:12px}.customerModelLastTest small{display:block;color:#b9cde3;line-height:1.4;word-break:break-word}.customerModelLastTest.testing{border-color:rgba(255,205,75,.42)}.customerModelLastTest.testing b{color:#ffd45e}.customerModelLastTest.success{border-color:rgba(34,211,161,.42)}.customerModelLastTest.success b{color:#6ff0c9}.customerModelLastTest.error{border-color:rgba(255,101,122,.45)}.customerModelLastTest.error b{color:#ff8798}
.modelBrandIcon{flex-basis:44px;width:44px;height:44px;padding:7px;overflow:hidden}.modelBrandLogo{display:block;width:100%;height:100%;padding:3px;border-radius:8px;background:rgba(255,255,255,.96);object-fit:contain;filter:drop-shadow(0 2px 5px rgba(0,0,0,.3))}.modelBrandFallback{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}

.turnstileWidget.isVerified{display:none!important;min-height:0!important;padding:0!important}.turnstileWidget.isVerified iframe{display:none!important}#turnstileHint.isVerified{display:block;padding:11px 14px;border:1px solid rgba(20,241,166,.5);border-radius:12px;background:rgba(20,241,166,.12);color:#5ff0c4!important;font-weight:900;text-align:center}

.telegramLinkCard{display:grid;gap:14px}.telegramLinkStatus{padding:14px;border-radius:14px;background:rgba(3,16,31,.42);border:1px solid rgba(255,255,255,.09);font-weight:800}.telegramLinkStatus[data-linked="true"]{color:var(--ok);border-color:rgba(52,211,153,.38)}.telegramLinkCode{display:grid;gap:8px;padding:16px;border-radius:14px;background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.3)}.telegramLinkCode code{font-size:22px;font-weight:900;letter-spacing:2px;color:#fff;overflow-wrap:anywhere}.telegramLinkActions{display:flex;gap:10px;flex-wrap:wrap}

.dashboardLoadError{grid-column:1/-1;display:grid;gap:9px;align-items:start;padding:20px;border:1px solid rgba(255,107,107,.42);border-radius:18px;background:rgba(255,107,107,.09);color:#fff}.dashboardLoadError b{font-size:19px;color:#ff9b9b}.dashboardLoadError span{color:#ffd2d2;overflow-wrap:anywhere}.dashboardLoadError small{color:#aebed0}.dashboardLoadError button{justify-self:start;margin-top:4px}.dashboardLoadHint{padding:18px;border:1px dashed rgba(255,107,107,.34);border-radius:14px;color:#ffb3b3;background:rgba(255,107,107,.06)}


/* Model uptime history chart */
.uptimeChartPanel{display:grid;gap:9px;margin-top:9px;min-width:300px;max-width:640px;padding:10px;border:1px solid rgba(56,214,255,.2);border-radius:14px;background:rgba(3,14,30,.48)}
.uptimeChartPanel.compact{display:flex;min-width:0;width:max-content;padding:0;border:0;background:transparent}.uptimeChartHead{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.uptimeToggleBtn{white-space:nowrap}.uptimePeriodButtons{display:flex;gap:5px;flex-wrap:wrap}.uptimePeriodButtons .miniBtn.active{color:#061528;background:#38d6ff;border-color:#7fe8ff;box-shadow:0 0 16px rgba(56,214,255,.28)}
.uptimeChartBody{display:grid;gap:9px}.uptimeMetrics{display:grid;grid-template-columns:repeat(4,minmax(92px,1fr));gap:6px}.uptimeMetrics>span{display:grid;gap:3px;padding:7px 8px;border-radius:10px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.08)}.uptimeMetrics small{font-size:9px;font-weight:900;color:#91abc4;letter-spacing:.05em}.uptimeMetrics b{font-size:12px;color:#e8fbff}
.uptimeChartBars{display:flex;align-items:stretch;gap:3px;height:58px;padding:6px;border-radius:10px;background:rgba(0,0,0,.24);overflow:hidden}.uptimeBar{flex:1 1 0;min-width:3px;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}.uptimeBar.green{background:#18d99a}.uptimeBar.yellow{background:#ffd84d}.uptimeBar.red{background:#ff6868}.uptimeBar.gray{background:#53657a;opacity:.55}.uptimeLegend{display:flex;gap:9px;flex-wrap:wrap;font-size:9px;color:#b7c9dc}.uptimeSources{color:#91abc4;line-height:1.45}.uptimeLoading{color:#9de9ff}.uptimeError{color:#ff8d8d}
@media(max-width:760px){.uptimeChartPanel{min-width:260px;max-width:calc(100vw - 52px)}.uptimeMetrics{grid-template-columns:repeat(2,minmax(100px,1fr))}.uptimeChartBars{gap:2px}.uptimeLegend{display:grid;grid-template-columns:1fr 1fr}}

/* Customer model catalog grouped by AI brand */
.customerModelGroupedTable th:first-child,.customerModelRow td:first-child{width:330px;min-width:330px}#providers{width:100%;max-width:100%;min-width:0;overflow-x:auto;overflow-y:visible;overscroll-behavior-inline:contain}
/* V292-SERVER-MODEL-VND: khung SERVER bao ngoai nhom hang. */
.customerModelServerGroup td{padding:22px 14px 10px!important;border-bottom:0!important;background:transparent!important}
.customerModelServerSummary{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.customerModelServerSummary b{color:#7ce8ff;font-size:15px;font-weight:1000;letter-spacing:.06em;text-transform:uppercase}
.customerModelServerSummary small{color:#8ba3ba;font-size:12px;font-weight:750}
/* Gia VNĐ/1M: badge gia + trang thai chua cau hinh. */
.tokenMultiplierBadge.is-muted{opacity:.55;background:rgba(148,163,184,.14);color:#9db4c6}
.customerModelBrandGroup td{padding:18px 14px 12px!important;border-bottom:0!important;background:transparent!important}
.customerModelBrandSummary{display:flex;align-items:center;gap:12px;padding:13px 16px;border:1px solid rgba(56,214,255,.32);border-radius:16px;background:linear-gradient(110deg,rgba(18,79,116,.45),rgba(8,28,53,.72));box-shadow:inset 0 0 24px rgba(56,214,255,.06)}
.customerModelBrandSummary .modelBrandIcon{flex-basis:42px;width:42px;height:42px}
.customerModelBrandSummaryText{display:grid;gap:3px;min-width:0}
.customerModelBrandSummaryText b{color:#f3fbff;font-size:18px;font-weight:1000;letter-spacing:.01em}
.customerModelBrandSummaryText small{color:#8edcf5;font-size:12px;font-weight:850}
.customerModelRow td{transition:background .18s ease}
.customerModelRow:hover td{background:rgba(56,214,255,.045)}
.customerModelRow.health-excellent td:first-child,.customerModelRow.health-good td:first-child{box-shadow:inset 3px 0 0 rgba(45,226,161,.72)}
.customerModelRow.health-slow td:first-child,.customerModelRow.health-unstable td:first-child{box-shadow:inset 3px 0 0 rgba(255,199,74,.78)}
.customerModelRow.health-down td:first-child{box-shadow:inset 3px 0 0 rgba(255,94,111,.78)}
.customerModelRow.health-untested td:first-child{box-shadow:inset 3px 0 0 rgba(148,163,184,.55)}
@media(max-width:760px){.customerModelBrandGroup td{padding:14px 8px 9px!important}.customerModelBrandSummary{padding:11px 12px}.customerModelBrandSummaryText b{font-size:16px}}
.usageToolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.usageToolbar h3,.usageToolbar p{margin-top:0}.usageToolbar p:last-child{margin-bottom:0}.usageToolbar .secondaryBtn{flex:0 0 auto}@media(max-width:700px){.usageToolbar{align-items:stretch;flex-direction:column}.usageToolbar .secondaryBtn{width:100%}}
.subscriptionIntro{margin-bottom:18px}.subscriptionPlanGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin-bottom:18px}.subscriptionPlanCard{display:grid;gap:13px;align-content:start;padding:20px;border:1px solid rgba(56,214,255,.24);border-radius:18px;background:linear-gradient(120deg,rgba(10,34,54,.96),rgba(9,26,45,.92))}.subscriptionPlanHead{display:flex;justify-content:space-between;gap:14px;align-items:start}.subscriptionPlanHead h3{margin:4px 0 0;font-size:20px}.subscriptionPlanHead strong{color:#64ffda;white-space:nowrap}.subscriptionPlanType{display:inline-block;padding:4px 8px;border-radius:8px;background:rgba(56,214,255,.12);color:#7ce8ff;font-size:10px;font-weight:1000;letter-spacing:.08em}.subscriptionPlanCard p{margin:0;color:#9fb7cd;line-height:1.6}.subscriptionPlanMeta{display:grid;gap:7px;color:#b9d1e4;font-size:12px;font-weight:750}.subscriptionBuyBtn{min-height:46px;border:0;border-radius:11px;background:linear-gradient(135deg,#14cda0,#16a4c9);color:#03202b;font-weight:1000}.subscriptionBuyBtn:disabled{opacity:.55;cursor:not-allowed}.subscriptionEmpty{grid-column:1/-1;margin:0;padding:22px;border:1px dashed rgba(255,255,255,.16);border-radius:16px;color:#a8bfd3}.activeSubscriptionGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:14px}.activeSubscriptionItem{display:grid;gap:6px;padding:14px;border-radius:14px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.09)}.activeSubscriptionItem span{color:#c9dcec;font-weight:750}.activeSubscriptionItem small{color:#8ba3ba}.subscriptionDepositInfo{margin-top:4px}
.usageHero{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:18px;padding:22px 24px;border:1px solid rgba(56,214,255,.28);border-radius:18px;background:linear-gradient(115deg,rgba(13,48,72,.95),rgba(11,32,54,.98));box-shadow:0 18px 48px rgba(0,0,0,.18)}.usageHero h3{margin:3px 0 7px;font-size:28px}.usageHero p{margin:0;color:#9eb6cc}.usageHeroActions{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.usageHeroActions label{display:grid;gap:6px;color:#9eb6cc;font-size:12px;font-weight:900}.usageHeroActions select{min-width:145px}.usageExportBtn{min-height:42px;padding:0 15px;border:0;border-radius:10px;background:linear-gradient(135deg,#14cda0,#16a4c9);color:#031528;font-weight:1000}.usageMetrics{grid-template-columns:repeat(5,minmax(130px,1fr));margin-bottom:18px}.usageGrid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.usagePanel{min-width:0}.usagePanelHead{display:flex;align-items:start;justify-content:space-between;gap:14px;margin-bottom:18px}.usagePanelHead h3{margin:3px 0 0}.usageMode{display:flex;border:1px solid rgba(56,214,255,.28);border-radius:9px;overflow:hidden}.usageMode button{padding:8px 10px;border:0;background:transparent;color:#91aac1;font-weight:900}.usageMode button.active{background:#dce9f5;color:#10263d}.usageModelLayout{display:grid;grid-template-columns:135px minmax(0,1fr);gap:18px;align-items:center}.usageDonut{width:128px;height:128px;border-radius:50%;background:var(--usageDonut,conic-gradient(#38d6ff 0 72%,#14f1a6 0 89%,#ffd84d 0 97%,#8b7cff 0));position:relative}.usageDonut:after{content:'TOKEN';position:absolute;inset:29px;border-radius:50%;display:grid;place-items:center;background:var(--customerUnifiedPanel);color:#8fb8d0;font-size:11px;font-weight:1000}.usagePanel table{font-size:12px}.usagePanel th,.usagePanel td{padding:9px 7px}.usageAccent,.usageUpdated{color:#64dbff;font-size:12px;font-weight:900}.usageLiveDot{color:#14f1a6;font-size:12px;font-weight:1000}.usageBarRow{display:grid;gap:6px;margin:12px 0}.usageBarLabel{display:flex;justify-content:space-between;gap:10px;color:#dcecff;font-size:12px}.usageBarLabel b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.usageBarLabel span{color:#8edcf5;white-space:nowrap;font-weight:900}.usageBarTrack{height:9px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden}.usageBarFill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38d6ff,#14f1a6)}.usageBarFill.cost{background:linear-gradient(90deg,#ffd84d,#ff9e4a)}.usageTrend{display:flex;align-items:end;gap:7px;height:180px;padding:12px 8px 0;border-bottom:1px solid rgba(255,255,255,.12);background:repeating-linear-gradient(to top,transparent 0 43px,rgba(255,255,255,.06) 44px)}.usageTrendCol{display:grid;grid-template-rows:1fr 18px;gap:6px;flex:1;min-width:0;height:100%;align-items:end}.usageTrendStack{display:flex;align-items:end;justify-content:center;height:100%;gap:2px}.usageTrendStack i{display:block;width:30%;min-height:2px;border-radius:3px 3px 0 0}.trendInput{background:#38d6ff}.trendOutput{background:#14f1a6}.trendCache{background:#ffd84d}.usageTrendCol small{overflow:hidden;text-align:center;color:#91aac1;font-size:9px}.usageLegend{display:flex;gap:14px;margin-top:12px;color:#a8bfd3;font-size:12px;font-weight:800}.usageLegend span{display:flex;align-items:center;gap:5px}.usageLegend i{width:9px;height:9px;border-radius:50%}.legendInput{background:#38d6ff}.legendOutput{background:#14f1a6}.legendCache{background:#ffd84d}.usageRecentPanel{overflow:auto}.usageRecentPanel table{min-width:720px}.usageRecentPanel td:nth-child(2),.usageRecentPanel td:nth-child(3){max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* USAGE-WINDOW-V242: phan trang + popup phan tich token */
.usagePager{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px;color:#a8bfd3;font-size:12px;font-weight:800}
.usagePager .secondaryBtn{min-height:34px;padding:0 14px}
.tokenAnalysisBtn{width:20px;height:20px;padding:0;border:0;border-radius:50%;background:rgba(56,214,255,.18);color:#64dbff;font-size:12px;font-weight:1000;cursor:pointer;line-height:1}
.tokenAnalysisBtn:hover{background:rgba(56,214,255,.35);color:#e0f5ff}
/* V247-TOKEN-COLUMN: cot TOKEN gop input/output/cache trong bang log */
.tokenFlowCell{display:inline-grid;gap:3px;white-space:nowrap;position:relative}
.tokenFlowCell .tokenFlowLine{display:flex;align-items:center;gap:9px}
.tokenFlowCell .tokenFlowIn{color:#14f1a6;font-weight:900}
.tokenFlowCell .tokenFlowOut{color:#c79bff;font-weight:900}
.tokenFlowCell .tokenFlowCache{color:#38d6ff;font-weight:900}
.tokenFlowCell .tokenAnalysisBtn{margin-left:2px}
.tokenAnalysisTip{position:absolute;top:calc(100% + 6px);left:0;pointer-events:auto;cursor:default;z-index:10000;white-space:normal;max-width:min(320px,calc(100vw - 16px));display:grid;gap:5px;min-width:200px;padding:11px 13px;border:1px solid rgba(56,214,255,.35);border-radius:12px;background:#0b2133;box-shadow:0 14px 34px rgba(0,0,0,.45);color:#dcecff;font-size:12px}
.tokenAnalysisTip b{color:#64dbff;font-size:12px;margin-bottom:2px}
.tokenAnalysisTip .tokenFlowRow{display:flex;align-items:center;gap:8px}
.tokenAnalysisTip .tokenFlowRow .tokenFlowIcon{width:18px;flex:0 0 auto;text-align:center;font-size:12px;font-weight:1000}
.tokenAnalysisTip .tokenFlowRow .tokenFlowLabel{color:#91aac1;font-size:11px;font-weight:800;letter-spacing:.06em;white-space:nowrap}
.tokenAnalysisTip .tokenFlowRow .tokenFlowVal{margin-left:auto;font-weight:1000;white-space:nowrap}
.tokenAnalysisTip .flowIn .tokenFlowIcon,.tokenAnalysisTip .flowIn .tokenFlowVal{color:#64dbff}
.tokenAnalysisTip .flowOut .tokenFlowIcon,.tokenAnalysisTip .flowOut .tokenFlowVal{color:#c79bff}
.tokenAnalysisTip .flowCache .tokenFlowIcon,.tokenAnalysisTip .flowCache .tokenFlowVal{color:#ffd84d}
.tokenAnalysisTip .tokenFlowDivider{height:1px;background:rgba(255,255,255,.14);margin:4px 0}
.tokenAnalysisTip .tokenFlowTotal .tokenFlowIcon,.tokenAnalysisTip .tokenFlowTotal .tokenFlowCost{color:#ffd84d;font-weight:1000}
.tokenAnalysisTip .tokenFlowTotal .tokenFlowTotalText{margin-left:auto;color:#ffd84d;font-weight:1000;white-space:nowrap}
.tokenAnalysisWrap{position:relative}@media(max-width:900px){.usageHero{align-items:stretch;flex-direction:column}.usageMetrics{grid-template-columns:repeat(2,minmax(130px,1fr))}.usageGrid{grid-template-columns:1fr}}@media(max-width:600px){.usageHero{padding:18px}.usageHero h3{font-size:24px}.usageHeroActions{align-items:stretch;flex-direction:column}.usageHeroActions label,.usageHeroActions select,.usageHeroActions button{width:100%}.usageModelLayout{grid-template-columns:1fr}.usageDonut{margin:auto}.usagePanelHead{align-items:stretch;flex-direction:column}.usageMode{width:max-content}.usageMetrics{grid-template-columns:1fr}.usageTrend{gap:3px}}
/* UI-ALIGN-V150: legacy 1190px catalog grid removed. Canonical rules live at the
   end of this file under UI-ALIGN-CANONICAL. Do not reintroduce competing grids. */
/* user-black-ui-v118: dark surfaces and responsive model catalog */
:root{--bg:#050608;--customerUnifiedPanel:#0d1117;--customerUnifiedPanel2:#11161d;--customerUnifiedField:#080b10;--text:#f4f7fb;--muted:#b4c0cc}
html,body{background:#050608!important;background-image:none!important;color:#f4f7fb!important}
.shell,.auth,.app,.content,.tab{background:#050608!important}
.card,.secret,.metric,.usagePanel,.usageHero,.subscriptionPlanCard,.activeSubscriptionItem,.comboCard,.customerDocs,.bankDepositInfo{background:#0d1117!important;background-image:none!important}
table{background:#0d1117}th{background:#11161d}td{background:#0d1117}
@media(max-width:760px){.customerModelIdentity{gap:7px}.modelBrandIcon{flex-basis:34px;width:34px;height:34px}.customerModelIdentityMain{display:block}.customerModelIdentityMain b{display:block;margin-bottom:5px}.modelCopyBtn,.modelTestBtn{margin-top:2px}}

/* UI-ALIGN-CANONICAL-V150: single source of truth for customer model catalog.
   Earlier duplicate 1190px grid definitions were removed; keep exactly one rule
   per selector below. */
#providers{width:100%;min-width:0;max-width:100%;overflow-x:auto;overflow-y:visible;overscroll-behavior-inline:contain}
/* V302-TABLE-ACTION-MINWIDTH: #keys co toi 11 cot (khi providerColumn bat)
   + nut "Xoa Key" cuoi hang, #transactions 6 cot, khong co min-width rieng
   nen bi bop/tran tren man hinh hep. Dong bo pattern da dung cho Admin. */
#keys table{min-width:max(100%,64rem)}
#keys td:last-child{min-width:110px;white-space:nowrap}
#transactions table{min-width:max(100%,44rem)}
.customerModelGroupedTable{width:100%!important;min-width:max(100%,46rem)!important;max-width:none;table-layout:fixed;border-collapse:separate;border-spacing:0}
.customerModelGroupedTable th:first-child,.customerModelGroupedTable td:first-child{width:clamp(180px,28%,300px)!important;min-width:0!important;max-width:none!important}
.customerModelGroupedTable th,.customerModelGroupedTable td{vertical-align:middle;overflow-wrap:anywhere;word-break:break-word}
.customerModelGroupedTable td:first-child{overflow:visible}
.customerModelIdentity{display:flex;align-items:flex-start;width:100%;min-width:0;gap:11px}
.customerModelIdentityText{display:grid;gap:5px;min-width:0;max-width:calc(100% - 50px);flex:1 1 auto}
.customerModelIdentityText small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.customerModelIdentityMain{display:flex!important;gap:6px;align-items:center;min-width:0!important;max-width:100%;flex-wrap:wrap}
.customerModelIdentityMain b{min-width:0!important;white-space:normal!important;display:block;max-width:100%;overflow:hidden;text-overflow:clip;word-break:break-word;overflow-wrap:anywhere;hyphens:none;line-height:1.25}
.modelCopyBtn,.modelTestBtn{flex:0 0 auto;white-space:nowrap}
.modelBrandIcon{flex:0 0 44px;width:44px;height:44px}
.customerModelTest{display:flex;gap:8px;min-width:0;align-items:center;flex-wrap:wrap}
.customerModelTest .pill{min-width:0;white-space:normal;overflow-wrap:anywhere}
.customerModelTestTime{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.customerModelGroupedTable .uptimeChartPanel.compact{margin-top:0}
/* HDC-V158: setup guide 5 tabs HHtech-style */
.toolChoiceGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.toolCompactBlock{display:grid;gap:10px;padding:14px;border:1px solid rgba(56,214,255,.22);border-radius:14px;background:rgba(56,214,255,.06)}
.toolCompactRow{display:grid;grid-template-columns:minmax(0,1fr) 140px auto;gap:10px;align-items:center}
.toolCompactRange{width:100%;accent-color:#38d6ff}
.toolCompactNumber{width:100%}
.toolCompactHint{color:#8fffe5;font-weight:900;white-space:nowrap}
.toolCompactNote{margin:0;color:#9eb3ca;font-size:12px;line-height:1.5}
.toolTerminalTitle{padding:8px 12px;border-radius:10px;background:rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.08);color:#9de9ff;font-size:12px;font-weight:900;letter-spacing:.06em}
@media(max-width:1100px){.toolCompactRow{grid-template-columns:1fr}.toolChoiceGrid{grid-template-columns:1fr}}
/* HDC-V163: key thủ công HHtech-style, không kẹt khi key cũ mất full text */
.toolKeyWrap{display:grid;gap:8px}
/* CUSTOMER-SIDEBAR-V164: sidebar user đồng bộ theme tối chung, nổi trên nền đen.
   Kế thừa dark-sidebar-v164 trong black-ui.css, chỉ căn chữ trái riêng user. */
.app aside button{text-align:left;font-weight:800}
.app aside button.active{font-weight:900}
.app aside #logoutBtn,.app aside .danger{background:transparent!important;color:#ffb8bd!important;border-color:transparent!important}
.app aside #logoutBtn:hover,.app aside .danger:hover{background:rgba(255,107,107,.12)!important;color:#ffc9cc!important;border-color:rgba(255,107,107,.4)!important}

/* NOTIFY-V250: banner model bi tu dong tat + trung tam thong bao per-user. */
.modelDisabledBanner{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;margin-bottom:10px;border:1px solid rgba(255,107,107,.4);border-radius:14px;background:rgba(255,107,107,.09)}
.modelDisabledBannerIcon{font-size:20px;line-height:1.4}
.modelDisabledBannerBody{display:grid;gap:4px;min-width:0}
.modelDisabledBannerBody b{color:#ffb4b4}
.modelDisabledBannerBody small{color:var(--muted);line-height:1.5}
.modelDisabledBannerTime{margin-left:auto;white-space:nowrap;color:#91abc4;font-size:11px}
.notificationCenter{display:grid;gap:12px;margin-bottom:16px}
.notificationHead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.notificationHead h3{margin:0}
.notificationHead small{color:var(--muted)}
.notificationList{display:grid;gap:8px}
.notificationItem{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:10px 12px;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:rgba(255,255,255,.03)}
.notificationItem.unread{border-color:rgba(56,214,255,.4);background:rgba(56,214,255,.06)}
.notificationItemBody{display:grid;gap:4px;min-width:0}
.notificationItemBody small{color:#91abc4}
.notificationItemBody p{margin:0;color:#dce7f1;line-height:1.5;overflow-wrap:anywhere}
.notificationItem .miniBtn{flex-shrink:0}
@media (max-width:700px){.notificationItem{flex-direction:column}.modelDisabledBannerTime{margin-left:0}}
/* V309-MIN-CHARGE-NOTICE: canh bao phi toi thieu moi request + nhan dong log thu toi thieu. */
.minChargeNotice{display:grid;gap:6px;margin:0 0 18px;padding:12px 14px;border:1px solid rgba(255,216,77,.34);border-radius:14px;background:rgba(255,216,77,.08)}
.minChargeNotice b{color:#ffd84d}
.minChargeNotice span{color:var(--muted);line-height:1.5;overflow-wrap:anywhere}
.costMinBadge{display:block;color:#ffd84d;font-weight:800;white-space:nowrap}
