/* Bản mẫu bấm thử. Không có nội dung thật. Chữ dùng font có sẵn trong máy. */
:root{
  --bg:#f4f6f9; --card:#ffffff; --ink:#18212d; --muted:#4f5b6b; --line:#cfd6df;
  --brand:#0a5ba8; --brand-d:#084a89; --on-brand:#ffffff; --soft:#e8f0fa;
  --ok:#0f6b4f; --okbg:#dff3ea; --warn:#7a4e00; --warnbg:#fff1cc; --bad:#a8231b; --badbg:#fde5e2;
  --info:#0a5ba8; --infobg:#e3eefb; --focus:#e07b00; --shadow:0 2px 10px rgba(20,30,50,.08);
  --r:14px;
}
html[data-theme="dark"]{
  --bg:#10151c; --card:#19212b; --ink:#eef2f7; --muted:#b4bfcc; --line:#3a4656;
  --brand:#6db1ff; --brand-d:#9bcaff; --on-brand:#06223f; --soft:#1f2c3d;
  --ok:#6fe0b0; --okbg:#12392c; --warn:#ffd36a; --warnbg:#3b2f0d; --bad:#ff9d94; --badbg:#431b18;
  --info:#8cc3ff; --infobg:#18304c; --focus:#ffb347; --shadow:none;
}
*{box-sizing:border-box}
html{font-size:17px;-webkit-text-size-adjust:100%}
html.big{font-size:22px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.55;overflow-x:hidden}
h1{font-size:1.6rem;line-height:1.25;margin:.2rem 0 .5rem}
h2{font-size:1.25rem;line-height:1.3;margin:1.4rem 0 .5rem}
h3{font-size:1.05rem;margin:.8rem 0 .3rem}
p{margin:.4rem 0}
a{color:var(--brand);text-underline-offset:3px}
small,.muted{color:var(--muted)}
.sr{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}
.skip{position:absolute;left:8px;top:-60px;background:var(--brand);color:var(--on-brand);padding:10px 14px;border-radius:8px;z-index:200}
.skip:focus{top:8px}

/* khung chung */
.top{position:sticky;top:0;z-index:50;background:var(--card);border-bottom:1px solid var(--line)}
.top-in{max-width:1000px;margin:0 auto;padding:6px 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.brand{font-weight:800;font-size:1.05rem;text-decoration:none;color:var(--ink);display:flex;gap:6px;align-items:center;min-height:48px}
.brand .logo{font-size:1.4rem}
.menu-btn{margin-left:auto}
.nav{display:none;width:100%;flex-direction:column;gap:2px;padding-bottom:8px}
.nav.open{display:flex}
.nav a{display:block;padding:12px 12px;border-radius:10px;text-decoration:none;color:var(--ink);min-height:48px;font-weight:600}
.nav a[aria-current="page"]{background:var(--soft);color:var(--brand);box-shadow:inset 4px 0 0 var(--brand)}
.nav a:hover{background:var(--soft)}
@media(min-width:900px){
  .menu-btn{display:none}
  .nav{display:flex;flex-direction:row;width:auto;flex:1;flex-wrap:wrap;padding:0}
  .nav a{padding:8px 10px;min-height:44px;display:flex;align-items:center}
  .nav a[aria-current="page"]{box-shadow:inset 0 -4px 0 var(--brand)}
}
main{max-width:1000px;margin:0 auto;padding:12px 16px calc(40px + env(safe-area-inset-bottom))}
main:focus{outline:none}
footer.foot{max-width:1000px;margin:0 auto;padding:12px 16px 12px;color:var(--muted);font-size:.85rem}
footer.foot a{margin-right:12px;display:inline-block;min-height:44px;line-height:44px}
.back{display:inline-flex;align-items:center;gap:4px;min-height:44px;font-weight:600}

/* nút */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:10px 18px;border-radius:12px;border:2px solid var(--brand);background:var(--card);color:var(--brand);font:inherit;font-weight:700;cursor:pointer;text-decoration:none;text-align:center}
.btn:hover{background:var(--soft)}
.btn.primary{background:var(--brand);color:var(--on-brand)}
.btn.primary:hover{background:var(--brand-d)}
.btn.danger{border-color:var(--bad);color:var(--bad)}
.btn.danger.solid{background:var(--bad);color:#fff}
.btn.ghost{border-color:var(--line);color:var(--ink);font-weight:600}
.btn.small{min-height:44px;padding:6px 12px;font-size:.92rem}
.btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
.btn.wide{width:100%}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:.6rem 0}
.row.end{justify-content:flex-end}
.why-off{font-size:.9rem;color:var(--warn);background:var(--warnbg);padding:6px 10px;border-radius:8px;margin:.3rem 0}

/* thẻ, lưới */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin:12px 0;box-shadow:var(--shadow)}
.card.hl{border:2px solid var(--brand)}
.card h2:first-child,.card h3:first-child{margin-top:0}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.grid>.card{margin:0}
.hero{background:linear-gradient(135deg,var(--soft),var(--card));border:1px solid var(--line);border-radius:20px;padding:22px 16px;margin:8px 0}
.hero h1{font-size:1.9rem}
.big-num{font-size:1.5rem;font-weight:800}
dl.kv{display:grid;grid-template-columns:minmax(110px,1fr) 2fr;gap:4px 12px;margin:.4rem 0}
dl.kv dt{color:var(--muted)} dl.kv dd{margin:0;font-weight:600}

/* chip trạng thái: luôn có biểu tượng + chữ */
.chip{display:inline-flex;gap:5px;align-items:center;padding:3px 10px;border-radius:99px;font-size:.85rem;font-weight:700;border:1px solid currentColor}
.chip.ok{color:var(--ok);background:var(--okbg)} .chip.warn{color:var(--warn);background:var(--warnbg)}
.chip.bad{color:var(--bad);background:var(--badbg)} .chip.info{color:var(--info);background:var(--infobg)}
.chip.mute{color:var(--muted);background:var(--bg)}
.notice{display:flex;gap:10px;border-radius:12px;padding:12px 14px;margin:10px 0;border:2px solid;align-items:flex-start}
.notice .ic{font-size:1.3rem;line-height:1.3}
.notice .tt{font-weight:800}
.notice.ok{color:var(--ok);background:var(--okbg);border-color:var(--ok)}
.notice.warn{color:var(--warn);background:var(--warnbg);border-color:var(--warn)}
.notice.bad{color:var(--bad);background:var(--badbg);border-color:var(--bad)}
.notice.info{color:var(--info);background:var(--infobg);border-color:var(--info)}
.notice .tx{color:var(--ink)}
.notice ul{margin:.3rem 0 0;padding-left:1.1rem}

/* bước */
.stepper{margin:6px 0 12px}
.stepper .lbl{font-weight:800;color:var(--brand)}
.dots{display:flex;gap:6px;margin-top:6px}
.dots i{flex:1;height:8px;border-radius:6px;background:var(--line)}
.dots i.done{background:var(--ok)} .dots i.cur{background:var(--brand)}

/* trắc nghiệm */
fieldset.mc{border:0;padding:0;margin:12px 0}
fieldset.mc legend{font-weight:800;margin-bottom:6px;padding:0}
.opt{display:flex;gap:10px;align-items:flex-start;border:2px solid var(--line);border-radius:12px;padding:12px;margin:8px 0;background:var(--card);cursor:pointer;min-height:56px}
.opt input{width:24px;height:24px;margin-top:2px;flex:none;accent-color:var(--brand)}
.opt.on{border-color:var(--brand);background:var(--soft)}
.opt:focus-within{outline:3px solid var(--focus);outline-offset:2px}
.opt .ob{display:flex;flex-direction:column;gap:2px}
.opt small{color:var(--muted)}
.rec{color:var(--ok);font-weight:800}
.own{display:block;margin-top:8px;font-weight:700}
.own textarea{margin-top:4px}
label.fld{display:block;font-weight:700;margin:10px 0 2px}
input[type=text],input[type=password],input[type=tel],input[type=search],textarea,select{width:100%;min-height:48px;padding:10px 12px;border-radius:10px;border:2px solid var(--line);background:var(--card);color:var(--ink);font:inherit}
textarea{min-height:90px;resize:vertical}
.chk{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:2px solid var(--line);border-radius:12px;margin:8px 0;background:var(--card);cursor:pointer}
.chk input{width:26px;height:26px;flex:none;accent-color:var(--brand);margin-top:1px}
.hint{font-size:.9rem;color:var(--muted)}

/* tiến độ, giá */
.bar{height:16px;background:var(--line);border-radius:10px;overflow:hidden;margin:6px 0}
.bar>span{display:block;height:100%;background:var(--brand);transition:width .4s}
.bar.ok>span{background:var(--ok)} .bar.warn>span{background:#c98500}
.price{border:2px dashed var(--brand);border-radius:14px;padding:14px;margin:14px 0;background:var(--soft)}
.price .amt{font-size:1.5rem;font-weight:800}
.scene-list{list-style:none;padding:0;margin:0}
.scene{display:flex;gap:10px;border:1px solid var(--line);border-radius:12px;padding:10px;margin:8px 0;background:var(--card)}
.scene .th{width:64px;height:64px;border-radius:10px;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:2rem;flex:none}
.scene .bd{flex:1;min-width:0}
.scene.flag-bad{border:2px solid var(--bad)} .scene.flag-warn{border:2px solid #c98500}
.scene.saved{border-left:6px solid var(--ok)}
mark.bad{background:var(--badbg);color:var(--bad);font-weight:700;text-decoration:underline wavy}
mark.warn{background:var(--warnbg);color:var(--warn);font-weight:700;text-decoration:underline dotted}

/* bảng */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
table{border-collapse:collapse;width:100%;min-width:520px}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
th{background:var(--soft);font-size:.9rem}

/* khung điện thoại xem trước */
.phones{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.phone{width:150px;aspect-ratio:9/16;background:#222;border-radius:16px;position:relative;overflow:hidden;border:3px solid #444;color:#fff}
.phone .unsafe{position:absolute;background:repeating-linear-gradient(45deg,rgba(255,60,60,.35) 0 6px,rgba(255,60,60,.15) 6px 12px);border:1px dashed #ff8a80}
.phone .tag{position:absolute;font-size:.6rem;background:rgba(0,0,0,.6);padding:1px 4px;border-radius:4px;z-index:3}
.phone .logo-mock{position:absolute;z-index:2;background:rgba(255,255,255,.92);color:#111;font-size:.62rem;font-weight:700;border-radius:5px;padding:2px 4px;line-height:1.2;text-align:center}
.phone .bg{position:absolute;inset:0;background:linear-gradient(160deg,#3b6ea5,#1d3557)}
.cap{text-align:center;font-size:.85rem}
.vplayer{width:180px;aspect-ratio:9/16;border-radius:18px;background:linear-gradient(160deg,#2e5e8e,#16324f);color:#fff;position:relative;overflow:hidden;margin:0 auto;display:flex;align-items:center;justify-content:center;text-align:center;padding:14px;font-weight:700}
.vplayer .aibadge{position:absolute;top:8px;left:8px;font-size:.65rem;background:rgba(0,0,0,.65);padding:2px 6px;border-radius:6px}
.vplayer.play{animation:pulse 2s infinite}
@keyframes pulse{50%{filter:brightness(1.3)}}

/* chat */
.chat{border:1px solid var(--line);border-radius:12px;background:var(--card);padding:10px;max-height:340px;overflow:auto}
.msg{max-width:88%;margin:6px 0;padding:8px 12px;border-radius:12px}
.msg.me{background:var(--soft);margin-left:auto}
.msg.bot{background:var(--bg);border:1px solid var(--line)}

/* nổi: MỘT nút "?" gom; đáy trang đã chừa chỗ (footer padding-bottom) để không che nút chính */
.fabwrap{position:fixed;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.fab{width:56px;height:56px;border-radius:50%;padding:0;font:inherit;font-size:28px;font-weight:800;line-height:1;border:2px solid var(--brand);background:var(--brand);color:var(--on-brand);cursor:pointer;box-shadow:0 3px 12px rgba(0,0,0,.25)}
.fabmenu{width:min(300px,calc(100vw - 24px));max-height:calc(100vh - 100px);overflow:auto;background:var(--card);border:2px solid var(--ink);border-radius:16px;padding:10px;box-shadow:0 6px 24px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:6px}
.fabmenu .btn{justify-content:flex-start;text-align:left}
.labp{position:fixed;left:8px;right:8px;bottom:calc(80px + env(safe-area-inset-bottom));z-index:70;max-width:420px;max-height:calc(100vh - 160px);overflow:auto;background:var(--card);border:2px solid var(--ink);border-radius:16px;padding:14px;box-shadow:0 6px 24px rgba(0,0,0,.35)}
.labp h2{margin-top:0}
.wm{display:inline-block;font-weight:800;letter-spacing:.05em;color:var(--warn);background:var(--warnbg);border:2px dashed var(--warn);border-radius:8px;padding:2px 8px;font-size:.8rem}
.banner{position:sticky;top:0;z-index:55;padding:8px 14px;font-weight:700;text-align:center;border-bottom:2px solid}
.banner.bad{background:var(--badbg);color:var(--bad);border-color:var(--bad)}
.banner.warn{background:var(--warnbg);color:var(--warn);border-color:var(--warn)}
.banner.info{background:var(--infobg);color:var(--info);border-color:var(--info)}
.overlay{position:fixed;inset:0;background:rgba(10,15,25,.6);z-index:100;display:flex;align-items:center;justify-content:center;padding:12px}
.dlg{background:var(--card);color:var(--ink);border-radius:18px;max-width:640px;width:100%;max-height:92vh;overflow:auto;padding:18px;border:2px solid var(--line)}
.dlg h2{margin-top:0}
.dlg:focus,.dlg h2:focus{outline:none}
@media(max-width:600px){.overlay{align-items:flex-end;padding:0}.dlg{border-radius:18px 18px 0 0;max-height:94vh}}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + env(safe-area-inset-bottom));background:#18212d;color:#fff;padding:12px 18px;border-radius:12px;z-index:120;max-width:90vw;border:2px solid #fff}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.tabs button{min-height:44px;border-radius:10px;border:2px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:700;padding:6px 12px;cursor:pointer}
.tabs button[aria-selected="true"]{border-color:var(--brand);background:var(--soft);color:var(--brand)}
.qr{width:130px;height:130px;background:
 conic-gradient(#000 0 25%,#fff 0 50%,#000 0 75%,#fff 0) 0 0/26px 26px;border:8px solid #fff;outline:1px solid var(--line)}
.sealed{border:2px dashed var(--muted);border-radius:12px;padding:12px;margin:8px 0}
.slow *{transition-duration:1.2s}
html.reduce *{animation:none!important}
@media print{.fabwrap,.labp,.top,.banner{display:none}}

.slot{display:contents}

#app{padding-bottom:calc(110px + env(safe-area-inset-bottom))}

/* DV-022: nhãn vai gọn một dòng, không đè tên app ở màn hẹp */
@media (max-width:700px){#role-chip{top:auto!important;bottom:calc(12px + env(safe-area-inset-bottom))!important;left:12px!important;transform:none!important;max-width:calc(100vw - 84px)!important;flex-wrap:nowrap!important}#role-chip .btn{font-size:.8rem!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}}
