:root{
  --bg:#f3f6fb; --card:#fff; --ink:#14263d; --muted:#62748a; --line:#d9e2ee;
  --pri:#0f5fc2; --pri-d:#0a4a99; --pri-soft:#e6f0fd; --ok:#1b7a43; --ok-soft:#e5f5ec;
  --warn:#9a5b00; --warn-soft:#fff3dc; --bad:#b3261e; --bad-soft:#fdeceb; --r:10px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.25;text-wrap:balance}
h1{font-size:1.6rem} h2{font-size:1.2rem} h3{font-size:1.05rem} h4{font-size:1rem}
p{margin:.4em 0} a{color:var(--pri)}
.muted{color:var(--muted)} .center{text-align:center} .pre{white-space:pre-line}
.boot{min-height:60vh;display:grid;place-items:center;color:var(--muted);padding:16px}

/* Nút, ô nhập */
.btn{font:inherit;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 14px;border-radius:8px;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:#b8c7da;background:#f8fafd}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.primary{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.primary:hover{background:var(--pri-d)}
.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}
.btn.danger-ghost{color:var(--bad)}
.btn.ghost{background:transparent;border-color:transparent}
.btn.ghost:hover{background:rgba(255,255,255,.14)}
.btn.sm{padding:5px 10px;font-size:.88rem}
.btn.big{padding:11px 22px;font-size:1.02rem}
.x{border:0;background:none;color:var(--muted);font-size:1.25rem;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}
.x:hover{background:var(--bad-soft);color:var(--bad)}
.inp{font:inherit;width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}
.inp:focus,.cell:focus,.seat-inp:focus,.exam-name:focus{outline:2px solid var(--pri);outline-offset:0;border-color:var(--pri)}
.inp.num{width:90px}
.fld{display:block;margin:10px 0}
.fld>span{display:block;font-size:.85rem;font-weight:600;color:var(--muted);margin-bottom:4px}
.fld.inline{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fld.inline>span{margin:0}
.fld.acts-end{display:flex;align-items:flex-end}
.chk{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.chk.blk{display:flex;align-items:flex-start;gap:10px;padding:8px 0}
.chk.blk input{margin-top:4px}
.chk.blk small{display:block;color:var(--muted)}
.chk.dim{color:var(--muted)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.grid2 .span2{grid-column:1/-1}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 14px}

/* Khung trang */
.top{background:#12335e;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;position:sticky;top:0;z-index:20;flex-wrap:wrap}
.top-l,.top-r{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.top .btn.ghost{color:#fff}
.who{font-size:.88rem;opacity:.85;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:1.5rem}
.brand.sm{font-size:1.1rem}
.logo-img{width:56px;height:56px;border-radius:50%;display:block;flex:none;box-shadow:0 0 0 2px rgba(255,255,255,.9)}
.brand.sm .logo-img{width:34px;height:34px}
.exam-name{font:inherit;font-weight:700;font-size:1.02rem;background:rgba(255,255,255,.1);border:1px solid transparent;color:#fff;border-radius:8px;padding:6px 10px;width:min(46vw,420px)}
.save{font:inherit;font-size:.85rem;border:0;border-radius:999px;padding:4px 12px;cursor:pointer;background:rgba(255,255,255,.14);color:#fff}
.save.dirty,.save.saving{background:#ffb400;color:#12335e}
.save.error,.save.conflict{background:var(--bad);color:#fff}
.wrap{max-width:1180px;margin:0 auto;padding:20px 16px}
.wrap.narrow{max-width:860px}
.shell{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;max-width:1380px;margin:0 auto;padding:18px 16px 60px}
.nav{display:flex;flex-direction:column;gap:4px;position:sticky;top:64px;align-self:start}
.nav button{display:flex;gap:10px;align-items:center;text-align:left;font:inherit;border:0;background:none;padding:9px 10px;border-radius:10px;cursor:pointer;color:var(--ink)}
.nav button:hover{background:#e7edf6}
.nav button.on{background:var(--pri);color:#fff}
.nav .num{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#dfe7f2;font-weight:700;font-size:.85rem;color:var(--ink)}
.nav button.on .num{background:#fff;color:var(--pri)}
.nav .lbl{display:flex;flex-direction:column;font-weight:600;line-height:1.25}
.nav .badge{font-weight:400;font-size:.78rem;opacity:.75}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin-bottom:14px}
.card.warn{border-color:#e7b96a;background:var(--warn-soft)}
.head-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.head-row h1,.head-row h2,.head-row h3{margin:0}
.acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.empty{text-align:center;color:var(--muted);padding:26px 10px}
.note{border-radius:8px;padding:8px 12px;margin:8px 0;background:var(--pri-soft);color:#0b3f84;font-size:.93rem}
.note.warn{background:var(--warn-soft);color:var(--warn)}
.note.ok{background:var(--ok-soft);color:var(--ok)}
.steps{margin:0;padding-left:20px} .steps li{margin:6px 0}
.scroll{overflow-x:auto;max-width:100%}
.scroll.center{display:flex;justify-content:center}
.scroll.tall{max-height:62vh;overflow-y:scroll;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:#6f86a3 #e3eaf4;border:1px solid var(--line);border-radius:8px}

/* Bảng */
.tbl{border-collapse:collapse;width:100%;font-size:.93rem}
.tbl th,.tbl td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:middle}
.tbl th{background:#eef3fa;font-weight:700;white-space:nowrap;position:sticky;top:0}
.tbl td.n,.tbl td.c,.tbl th.subj{text-align:center}
.tbl td.n{color:var(--muted);width:44px}
.tbl td.b,.tbl .b{font-weight:700}
.tbl tr.bad td{background:var(--bad-soft)}
.tbl tr.soft td{background:#fafbfd}
.cell{font:inherit;width:100%;border:1px solid transparent;background:transparent;padding:4px 6px;border-radius:6px;color:var(--ink)}
.cell:hover{border-color:var(--line)}
.cell.num{width:80px}
select.cell{border-color:var(--line);background:#fff;width:auto}
.th-btn{font:inherit;font-weight:700;border:0;background:none;cursor:pointer;color:var(--pri)}
.search{max-width:340px;margin:6px 0 10px}
.pager{display:flex;gap:12px;align-items:center;justify-content:center;margin-top:10px}

/* Thẻ nhỏ */
.tbl td.warn-cell{background:var(--warn-soft)}
.modal-body .b{font-weight:700}
.inp.auto{width:auto;max-width:100%}
.grid2.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.ok-t{color:var(--ok);font-weight:600}
.note a{font-weight:600}
@media (max-width:900px){.grid2.three{grid-template-columns:1fr 1fr}}
.subj-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 12px}
.subj-pick{width:auto;min-width:240px;max-width:100%;font-weight:600}
.chip b{font-weight:600}
.cat-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px 12px;align-items:start;margin:10px 0}
.cat-t{font-weight:700;padding-top:6px}
.cat-list{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.tog{font:inherit;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:5px 12px;cursor:pointer}
.tog:hover{border-color:var(--pri)}
.tog.on{background:var(--pri);border-color:var(--pri);color:#fff;font-weight:600}
.sub-h{margin:16px 0 0;padding-top:12px;border-top:1px solid var(--line)}
@media (max-width:520px){.cat-row{grid-template-columns:1fr}}
.preset{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:10px 0}
.preset h4{margin:0 0 6px}
.grades{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:3px 6px 3px 10px;background:#f8fafd}
.chip input{font:inherit;font-weight:600;border:0;background:transparent;min-width:60px;max-width:240px;color:var(--ink)}
.chip small{color:var(--muted)}
.chips.ro .chip{padding:3px 12px}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.pill{font:inherit;display:flex;flex-direction:column;align-items:flex-start;border:1px solid var(--line);background:#fff;border-radius:10px;padding:7px 14px;cursor:pointer;color:var(--ink)}
.pill small{color:var(--muted)}
.pill.on{border-color:var(--pri);background:var(--pri-soft);box-shadow:inset 0 0 0 1px var(--pri)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:8px}
.stats>div{background:#f4f7fc;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column}
.stats b{font-size:1.5rem;line-height:1.1}
.stats span{color:var(--muted);font-size:.85rem}
.stats .bad{background:var(--bad-soft)} .stats .bad b{color:var(--bad)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;flex-wrap:wrap}
.seg button{font:inherit;font-weight:600;border:0;background:#fff;padding:7px 14px;cursor:pointer;color:var(--ink)}
.seg button+button{border-left:1px solid var(--line)}
.seg button.on{background:var(--pri);color:#fff}
.drop{border:1px solid var(--line);border-radius:8px;background:#fff}
.drop summary{padding:8px 10px;cursor:pointer;font-weight:600}
.drop-body{padding:8px 10px;border-top:1px solid var(--line)}
.checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px 12px;max-height:260px;overflow:auto;margin-top:6px}
.checks.wide{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));max-height:none}
.print-row{display:grid;grid-template-columns:240px minmax(0,1fr);gap:0 16px}

/* Sơ đồ chỗ ngồi */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;margin:8px 0 12px}
.pa{font:inherit;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--ink)}
.pa:hover{border-color:#b8c7da}
.pa.on{border-color:var(--pri);box-shadow:inset 0 0 0 2px var(--pri);background:var(--pri-soft)}
.pa-n{font-weight:800}
.pa-d{font-size:.74rem;color:var(--muted);text-align:center;line-height:1.2}
.pa.custom{justify-content:center}
.seat{border-collapse:separate;border-spacing:2px}
.seat td.s{border:1px solid #9fb1c7;background:#fff;text-align:center;border-radius:4px}
.seat td.gap{width:6px} .seat td.aisle{width:22px}
.seat.mini td.s{width:22px;height:17px;font-size:.66rem;padding:0}
.seat.mini td.gap{width:2px} .seat.mini td.aisle{width:8px}
.seat.big td.s{min-width:88px;height:56px;padding:3px 5px;position:relative;vertical-align:middle}
.seat.big td.s small{position:absolute;top:1px;left:4px;font-size:.68rem;color:var(--muted)}
.seat.big td.s b{display:block;font-size:1.02rem}
.seat.big td.s i{display:block;font-style:normal;font-size:.72rem;color:var(--muted);line-height:1.1}
.seat-inp{font:inherit;font-weight:700;width:64px;text-align:center;border:1px solid var(--line);border-radius:6px;padding:5px}
.board{background:#c9d2de;text-align:center;font-weight:700;letter-spacing:.2em;border-radius:6px;padding:4px;max-width:520px;margin:6px auto 10px}

/* Ca thi */
.fold summary{display:flex;align-items:center;gap:12px;cursor:pointer}
.fold summary h2{margin:0}
.optlist{margin-top:8px}
.ses-wrap{display:grid;grid-template-columns:240px minmax(0,1fr);gap:14px;align-items:start}
.ses-list{display:flex;flex-direction:column;gap:8px}
.ses{font:inherit;text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;color:var(--ink)}
.ses small{color:var(--muted)}
.ses .tag{font-size:.78rem;color:var(--warn)}
.ses.done .tag{color:var(--ok)}
.ses.on{border-color:var(--pri);box-shadow:inset 0 0 0 1px var(--pri);background:var(--pri-soft)}
.reveal td.spin{color:#9aa9bb;font-style:italic}
.reveal td.hit{font-weight:700;background:var(--ok-soft);transition:background .5s}
.check{border-radius:10px;padding:10px 14px;margin:10px 0}
.check.ok{background:var(--ok-soft)} .check.bad{background:var(--warn-soft)}
.check h4{margin:0 0 4px} .check ul{margin:4px 0;padding-left:20px}

.zone-tbl{width:auto;min-width:min(460px,100%);margin-bottom:8px}
.zone-tbl td,.zone-tbl th{padding:4px 14px}

.bad-t{color:var(--bad);font-weight:600}
.tag-admin{display:inline-block;margin-left:6px;font-size:.72rem;font-weight:700;background:#ffb400;color:#12335e;border-radius:999px;padding:1px 8px}
.newpass{font:700 1.6rem ui-monospace,Consolas,monospace;letter-spacing:.08em;background:var(--pri-soft);border-radius:8px;padding:10px 14px;text-align:center;user-select:all}

.pw{position:relative}
.pw .inp{padding-right:64px}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);font:inherit;font-size:.85rem;font-weight:600;border:0;background:none;color:var(--pri);cursor:pointer;padding:4px 8px;border-radius:6px}
.pw-eye:hover{background:var(--pri-soft)}

.note.trash{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}

.date-w{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.date-w .cell{width:auto;border-color:var(--line);background:#fff;padding:7px 8px;border-radius:8px}
.tbl .date-w .cell{padding:4px 6px;border-radius:6px}

.center-acts{justify-content:center}

/* Hướng dẫn */
.top .guide-btn{background:#ffb400;border-color:#ffb400;color:#12335e}
.top .guide-btn:hover{background:#ffc533}
.gd{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;height:min(66vh,620px)}
.gd-nav{display:flex;flex-direction:column;gap:2px;overflow-y:auto}
.gd-nav button{font:inherit;text-align:left;border:0;background:none;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--ink)}
.gd-nav button:hover{background:#e7edf6}
.gd-nav button.on{background:var(--pri);color:#fff;font-weight:600}
.gd-body{overflow-y:scroll;padding-right:12px;scrollbar-color:#6f86a3 #e3eaf4;line-height:1.6}
.gd-body h3{font-size:1.25rem;margin-bottom:.5em}
.gd-body h4{margin:1em 0 .3em;color:var(--pri-d)}
.gd-body ul,.gd-body ol{margin:.3em 0;padding-left:22px}
.gd-body li{margin:5px 0}
.gd-body table{border-collapse:collapse;margin:6px 0 10px 22px}
.gd-body th,.gd-body td{border:1px solid var(--line);padding:4px 12px;text-align:left}
.gd-body th{background:#eef3fa}
.gd-body .tip{background:var(--pri-soft);border-radius:8px;padding:8px 12px;color:#0b3f84}
@media (max-width:760px){.gd{grid-template-columns:1fr;height:auto}.gd-nav{flex-direction:row;overflow-x:auto;flex-wrap:nowrap}.gd-nav button{flex:none}.gd-body{max-height:56vh}}

/* Bốc thăm từng người */
#main.veil{filter:blur(7px)}
.modal.xl{width:min(1100px,100%)}
.modal.xl .modal-foot{align-items:center} .modal.xl .modal-foot .muted{margin-right:auto}
.pd{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;min-height:min(62vh,520px)}
.pd-side{display:flex;flex-direction:column;gap:8px;min-height:0}
.pd-list{flex:1;overflow-y:scroll;max-height:56vh;border:1px solid var(--line);border-radius:8px;scrollbar-color:#6f86a3 #e3eaf4}
.pd-item{font:inherit;display:flex;flex-direction:column;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:#fff;padding:6px 10px;cursor:pointer;color:var(--ink)}
.pd-item small{color:var(--muted)}
.pd-item.done{background:var(--ok-soft)} .pd-item.done small{color:var(--ok);font-weight:600}
.pd-item.on{box-shadow:inset 4px 0 0 var(--pri);background:var(--pri-soft)}
.pd-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;background:#12335e;color:#fff;border-radius:12px;padding:24px 16px}
.pd-stage .muted{color:#b9c9de;font-size:.85rem}
.pd-hint{letter-spacing:.2em;text-transform:uppercase;font-size:.85rem;opacity:.8}
.pd-who{font-size:clamp(1.6rem,4vw,2.6rem);font-weight:800;line-height:1.15;text-wrap:balance}
.pd-unit{opacity:.85;min-height:1.4em}
.pd-slot{font-size:clamp(1.4rem,3.4vw,2.3rem);font-weight:800;background:#fff;color:#12335e;border-radius:12px;padding:16px 24px;min-width:min(520px,100%);min-height:2.6em;display:grid;place-items:center;margin:8px 0;font-variant-numeric:tabular-nums}
.pd-slot.spin{color:#8494a8}
.pd-slot.hit{background:#ffb400;color:#12335e;animation:pd-pop .45s ease-out}
.pd-slot.hit.rest{background:#dfe7f2}
@keyframes pd-pop{0%{transform:scale(.9)}60%{transform:scale(1.06)}100%{transform:scale(1)}}
.pd-btn{font:inherit;font-weight:800;font-size:1.25rem;letter-spacing:.04em;border:0;border-radius:999px;padding:16px 36px;background:#e53935;color:#fff;cursor:pointer;box-shadow:0 6px 0 #9f1f1c}
.pd-btn:active:not(:disabled){transform:translateY(4px);box-shadow:0 2px 0 #9f1f1c}
.pd-btn:disabled{background:#6d7f96;box-shadow:none;cursor:default}
@media (max-width:760px){.pd{grid-template-columns:1fr}.pd-list{max-height:24vh}}
@media (prefers-reduced-motion:reduce){.pd-slot.hit{animation:none}}

/* Danh sách kỳ thi, đăng nhập */
.exam-list{display:flex;flex-direction:column;gap:10px}
.exam-row{display:flex;gap:12px;align-items:center;justify-content:space-between;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;flex-wrap:wrap}
.exam-open{font:inherit;border:0;background:none;text-align:left;cursor:pointer;display:flex;flex-direction:column;flex:1;min-width:200px;padding:6px;border-radius:8px;color:var(--ink)}
.exam-open:hover{background:var(--pri-soft)}
.exam-open strong{font-size:1.05rem}
.row-acts{display:flex;gap:6px;flex-wrap:wrap}
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
.auth-side{background:#12335e;color:#fff;padding:8vh 6vw;display:flex;flex-direction:column;gap:18px;justify-content:center}
.auth-side h1{font-size:clamp(1.5rem,3vw,2.2rem)}
.auth-side .muted{color:#b9c9de}
.ticks{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.ticks li{padding-left:28px;position:relative}
.ticks li::before{content:"✓";position:absolute;left:0;top:0;color:#ffb400;font-weight:800}
.auth-main{display:grid;place-items:center;padding:24px 16px}
.auth-card{width:min(400px,100%);padding:24px}
.auth-form .btn{width:100%;margin-top:8px}

/* Hộp thoại, thông báo */
.modal-wrap{position:fixed;inset:0;background:rgba(15,30,50,.5);display:grid;place-items:center;padding:16px;z-index:50}
.modal{background:#fff;border-radius:12px;width:min(480px,100%);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal.wide{width:min(820px,100%)}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0}
.modal-body{padding:14px 16px;overflow:auto}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line);flex-wrap:wrap}
.paste{font-family:ui-monospace,Consolas,monospace;font-size:.85rem;white-space:pre;resize:vertical}
#toast-root{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:60;max-width:min(420px,calc(100vw - 32px))}
.toast{background:#1d2d44;color:#fff;padding:10px 14px;border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.25);transition:opacity .3s}
.toast.ok{background:var(--ok)} .toast.err{background:var(--bad)} .toast.out{opacity:0}
#print-root{display:none}

@media (max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr);padding-top:10px}
  .nav{position:static;flex-direction:row;overflow-x:auto;padding-bottom:4px}
  .nav button{flex:none} .nav .badge{display:none}
  .ses-wrap,.auth,.print-row{grid-template-columns:minmax(0,1fr)}
  .auth-side{padding:28px 20px}
  .grid2,.grid4{grid-template-columns:1fr 1fr}
  .stats{grid-template-columns:1fr 1fr}
  .exam-name{width:100%}
}
@media (max-width:520px){ .grid2,.grid4{grid-template-columns:1fr} }

/* ====== In ấn ====== */
@media print{
  body{background:#fff}
  #app,#modal-root,#toast-root{display:none!important}
  #print-root{display:block;color:#000;font-family:"Times New Roman",serif}
}
#print-root .pg{break-after:page;page-break-after:always}
#print-root .pg:last-child{break-after:auto;page-break-after:auto}
#print-root .c{text-align:center} #print-root .b{font-weight:bold}
/* Văn bản: bảng phân công, biên bản, danh sách */
#print-root .doc{font-size:13pt;line-height:1.35}
#print-root .doc h2{text-align:center;font-size:15pt;margin:10pt 0 4pt}
#print-root .doc p{margin:3pt 0}
#print-root .doc ul{margin:2pt 0 2pt 18pt;padding:0}
#print-root table{border-collapse:collapse;width:100%}
#print-root table.grid{margin:6pt 0}
#print-root table.grid th,#print-root table.grid td{border:1px solid #000;padding:2.5pt 5pt;font-size:12pt}
#print-root table.grid.sm th,#print-root table.grid.sm td{font-size:10pt;padding:2pt 3pt}
#print-root table.grid th{text-align:center}
#print-root table.grid tr{break-inside:avoid}
#print-root table.grid tr:has(td[rowspan]){break-inside:auto}   /* ô gộp nhiều dòng (giám sát) không được đẩy cả bảng sang trang sau */
#print-root table.grid tbody.gz{break-inside:avoid}   /* nhóm phòng của một giám sát không bị cắt ngang trang (giữ đủ khung) */
#print-root thead{display:table-header-group}
#print-root tfoot{display:table-footer-group}
#print-root table.nb td{border:none;vertical-align:top}
#print-root table.sign{margin-top:14pt;break-inside:avoid}
#print-root .p-head{font-weight:bold;font-size:12pt}
/* Sơ đồ số báo danh: 1–4 phòng trên một trang A4 dọc (vùng in 190 × 277 mm) */
#print-root .pg[class*="sd-n"]{height:276mm;display:grid;gap:5mm;overflow:hidden}
#print-root .sd-n1{grid-template-rows:1fr}
#print-root .sd-n2{grid-template-rows:minmax(0,1fr) minmax(0,1fr)}
#print-root .sd-n3{grid-template-rows:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}
#print-root .sd-n4{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,1fr)}
#print-root .sd{display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden}
#print-root .sd-t{text-align:center;font-weight:bold;font-size:14pt;line-height:1.25}
#print-root .sd-i{text-align:center;font-size:13pt;margin:3mm 0 2mm;font-family:Arial,sans-serif}
#print-root .sd-b{background:#c0c0c0;text-align:center;margin:0 16% 2mm;padding:1mm;font-family:Arial,sans-serif;-webkit-print-color-adjust:exact;print-color-adjust:exact}
#print-root .sd-grid{flex:1 1 0;height:0;min-height:0;table-layout:fixed;font-family:Arial,sans-serif}
#print-root .sd-grid td.s{border:1px solid #000;text-align:center;vertical-align:middle;padding:0 1mm;overflow:hidden}
#print-root .sd-grid td.gap{width:3%} #print-root .sd-grid td.aisle{width:7%}
#print-root .sd-grid b{display:block;font-size:17pt;font-weight:normal}
#print-root .sd-grid i{display:block;font-style:normal;font-size:9pt;line-height:1.1}
#print-root .sd-n2 .sd-t{font-size:12pt} #print-root .sd-n2 .sd-i{font-size:11.5pt;margin:1.5mm 0 1mm} #print-root .sd-n2 .sd-grid b{font-size:14pt}
#print-root .sd-n3 .sd-t{font-size:10.5pt} #print-root .sd-n3 .sd-i{font-size:10pt;margin:1mm 0} #print-root .sd-n3 .sd-grid b{font-size:11.5pt} #print-root .sd-n3 .sd-grid i{font-size:7pt}
#print-root .sd-n4 .sd-t{font-size:9.5pt} #print-root .sd-n4 .sd-i{font-size:8.5pt;margin:1mm 0} #print-root .sd-n4 .sd-grid b{font-size:10.5pt} #print-root .sd-n4 .sd-grid i{font-size:6.5pt}

/* Ràng buộc riêng từng môn */
.opt-seg{flex-wrap:wrap;margin:8px 0 12px}
.opt-seg button.own{font-weight:700}
.own-toggle{background:#f1f6ff;border:1px solid #cfdcf5;border-radius:10px;padding:10px 12px;margin-bottom:10px}
.chk.off,.fld.off{opacity:.55}

/* Số dự phòng & danh sách không coi thi */
.dp-fld{flex-wrap:wrap;gap:8px 12px;align-items:center}
.dp-fld small{flex:1 1 260px}
.off-box{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-top:10px;background:#fafbfe}
.off-box summary{cursor:pointer}
.off-box[open] summary{margin-bottom:10px}
.off-box .acts{margin-bottom:10px}

/* ===== Thi thử TN THPT ===== */
.tag.tt{display:inline-block;margin-left:8px;font-size:.72rem;font-weight:700;background:#e3f4ea;color:#12683b;border-radius:999px;padding:1px 9px;vertical-align:middle}
.kind-opt{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:6px 0}
.steps{margin:6px 0 6px 20px;padding:0}.steps li{margin:5px 0}
details.fold>summary{cursor:pointer}details.fold[open]>summary{margin-bottom:8px}
.inp.cell{padding:4px 8px;min-width:0;width:100%}
.nowrap{white-space:nowrap}
.rp{padding:3px 0}.rp.ok{color:var(--ok)}.rp.err{color:var(--bad);font-weight:600}.rp.info{color:var(--ink)}
.rp-cols{margin-top:8px;gap:0 24px}.rp-cols h4{margin:8px 0 6px}
.reg-tbl th.subj{min-width:44px}
.pa-pills .pill{flex:1 1 260px;max-width:420px;text-align:left;white-space:normal}
.room-tbl tr.pick{cursor:pointer}.room-tbl tr.pick:hover td{background:var(--pri-soft)}.room-tbl tr.pick.on td{background:#dce9fb}
.out-list{display:flex;flex-direction:column}
.out-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.out-row:first-child{border-top:0}
.out-row>div:first-child{flex:1 1 380px}.out-row small{display:block;color:var(--muted);margin-top:2px}
@media (max-width:760px){.rp-cols{grid-template-columns:minmax(0,1fr)}}
#print-root .tt{font-size:12pt;line-height:1.25}
#print-root .tt .hd{margin-bottom:6pt}
#print-root .tt .hd td{text-align:center;font-weight:bold;font-size:12.5pt;padding:0 4pt}
#print-root .tt .hd .n{font-weight:bold;font-size:12pt}
#print-root .tt table.grid th,#print-root .tt table.grid td{font-size:11.5pt;padding:2pt 4pt;text-align:center}
#print-root .tt table.grid td.l,#print-root .tt .ft td.l{text-align:left}
#print-root .tt .ft{margin-top:6pt;break-inside:avoid}
#print-root .tt .ft td{text-align:center}
#print-root .tt p{margin:2pt 0}
#print-root .tt.tight{font-size:11pt;line-height:1.15}
#print-root .tt.tight .hd td{font-size:11.5pt}
#print-root .tt.tight table.grid th,#print-root .tt.tight table.grid td{font-size:10.5pt;padding:1pt 3pt}

.gd-nav button.hot{color:#c62828;font-weight:700}
.gd-nav button.hot.on{color:#fff;background:#c62828}
.dp-fld{background:#fff7e0;border:1.5px solid #f0b429;border-radius:10px;padding:10px 14px;margin:12px 0}
.dp-fld>span{font-size:1rem;font-weight:800;color:#8a4b00}
.dp-fld input.inp{font-size:1.15rem;font-weight:800;text-align:center;border:2px solid #f0b429;color:#12335e}
.dp-fld small{color:#6b5a2e}

/* Khung thông tin ở trang bốc thăm: giáo viên cố định, ràng buộc của buổi */
.side-box{border-radius:10px;padding:10px 14px;margin:12px 0;border:1.5px solid #b9cdea;background:#f1f6ff}
.side-box .sb-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.side-box .sb-head b{font-size:1rem;font-weight:800;color:#12335e}
.side-box .sb-tag{font-size:.8rem;font-weight:700;background:#dce9fb;color:#0b3f84;border-radius:999px;padding:2px 10px}
.side-box .sb-head .btn{margin-left:auto}
.side-box .sb-line{padding:2px 0}
.side-box .sb-plus{color:#0b3f84}
.side-box ul{margin:2px 0 2px 18px;padding:0}
.side-box small{display:block;margin-top:6px}
.side-box.rb.own{border-color:#e08a00;background:#fff3e0}
.side-box.rb.own .sb-tag{background:#e08a00;color:#fff}
/* Phân công GV đi coi thi */
.plan-btn{text-align:left;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:2px solid #e0a100;background:#fff7dd;color:#5a3d00;border-radius:10px}
.plan-btn b{font-size:1rem;color:#6b4600}
.plan-btn small{color:#7a5a12;font-weight:500}
.plan-btn.done{border-color:var(--ok);background:var(--ok-soft)}
.plan-btn.done b{color:var(--ok)}
.plan-btn:hover{filter:brightness(.97)}
.ses .tag.pl{color:#6b4600;font-weight:700}
.side-box.pl{border-color:#e0a100;background:#fff9e8}
.side-box.pl .sb-tag{background:#ffe9a8;color:#6b4600}
.plan-tbl td.bad{color:var(--bad);font-weight:700}
.plan-tbl tr.g-first td{border-top:2px solid #9fb3cf}
.plan-tbl .cell.num{width:70px}
.plan-scroll{max-height:62vh}
.plan-grid th{font-size:.82rem;white-space:normal;text-align:center}
.plan-grid th small{font-weight:600;color:var(--muted)}
.plan-grid td{padding:3px 6px}
.plan-grid tr.sum td{background:#fff7dd}
#print-root .plan-grid{font-size:9.5pt}
#print-root .plan-grid th small{color:#000;font-size:7.5pt}
/* Tiêu đề phải thấp hơn 1/4 trang thì Chrome mới lặp lại ở mỗi trang -> thu gọn dòng tiêu đề */
#print-root table.grid th{line-height:1.12}
#print-root .plan-grid th{padding:1pt 1.5pt;font-size:8.5pt}
.plan-btn,.plan-btn small{white-space:normal}
.modal.wide:has(.plan-grid){max-width:min(1280px,96vw);width:96vw}
.plan-grid td:nth-child(2),.plan-grid td:nth-child(3){white-space:nowrap}
/* Kiểm tra tập trung */
.tag.kt{display:inline-block;margin-left:8px;font-size:.72rem;font-weight:700;background:#fff1cc;color:#7a4a00;border-radius:999px;padding:1px 9px;vertical-align:middle}
.lich-tbl .cell{padding:4px 6px}
.lich-tbl input[type=date].cell{width:140px}
.off-tbl th.c{font-size:.8rem;line-height:1.25;white-space:nowrap}
.off-tbl th small{color:var(--muted);font-weight:600}
.off-tbl td.c{padding:2px}
.off-tbl input[type=checkbox]{width:18px;height:18px}
ul.steps{list-style:none;padding-left:4px}
ul.steps li{margin:6px 0}
.free-b h4{margin:12px 0 4px}
.lich-tbl .cell.num.one{background:#fff3dc;font-weight:700;color:#9a5b00}
/* Lịch kiểm tra: mỗi buổi một màu nền nhạt, xen kẽ */
.lich-tbl tr.b-even td{background:#f2f7ff}
.lich-tbl tr.b-odd td{background:#fff8e6}
.lich-tbl tr.b-first td{border-top:2px solid #8fa8c9}
.lich-tbl tr td .cell{background:transparent}
/* Ca gộp nhiều môn: chữ đậm, xanh dương / xanh lá xen kẽ */
.lich-tbl tr.ca-a td .cell:not(select):not([type=date]),.lich-tbl tr.ca-a td.n{color:#0b3d91;font-weight:700}
.lich-tbl tr.ca-b td .cell:not(select):not([type=date]),.lich-tbl tr.ca-b td.n{color:#0a6b34;font-weight:700}
.lich-tbl tr.ca-a select.cell,.lich-tbl tr.ca-a input[type=date].cell{color:#0b3d91;font-weight:700}
.lich-tbl tr.ca-b select.cell,.lich-tbl tr.ca-b input[type=date].cell{color:#0a6b34;font-weight:700}
.lich-tbl td.ca-need,.lich-tbl td.ca-can{vertical-align:middle;min-width:76px;border-left:2px solid #c9d6ea}
.lich-tbl td.ca-need b,.lich-tbl td.ca-can b{font-size:1.1rem;display:block}
.lich-tbl td.ca-need small,.lich-tbl td.ca-can small{display:block;font-size:.75rem;color:var(--muted);font-weight:600}
.lich-tbl td.ca-can.ok b{color:var(--ok)}
.lich-tbl td.ca-can.bad{background:var(--bad-soft)!important}
.lich-tbl td.ca-can.bad b,.lich-tbl td.ca-can.bad small{color:var(--bad)}
/* Bảng lịch gọn hơn để thấy đủ cột */
.lich-tbl{font-size:.9rem}
.lich-tbl th{white-space:normal;line-height:1.2;font-size:.82rem;padding:5px 4px;text-align:center}
.lich-tbl td{padding:3px 4px}
.lich-tbl input[type=date].cell{width:120px}
.lich-tbl select.cell{padding-left:4px;padding-right:2px}
.lich-tbl td.ca-need,.lich-tbl td.ca-can{min-width:64px}
/* Thanh trượt ngang phía trên bảng rộng (đồng bộ với thanh dưới) */
.top-scroll{overflow-x:auto;overflow-y:hidden;height:16px;max-width:100%;margin-bottom:2px;scrollbar-width:auto;scrollbar-color:#6f86a3 #e3eaf4}
.top-scroll>div{height:1px}
@media print{.top-scroll{display:none!important}}
/* Ca gộp nhiều môn: dòng tiêu đề môn trước mỗi nhóm phòng */
#print-root table.grid tr.mon-row td{font-weight:bold;text-align:left;background:#e6e6e6;border-top:2px solid #000;padding:3pt 6pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
#print-root table.grid tr.mon-row{break-after:avoid}
/* Biên bản thu bài */
#print-root table.collect td{height:24pt}
#print-root table.collect tr.mon-row td{height:auto}
#print-root table.collect th{font-size:10pt}
/* Giám thị hội đồng: mỗi môn một người */
.hd-box{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 10px;vertical-align:middle}
.hd-box.each{display:inline-flex;flex-direction:column;align-items:flex-start}
.hd-slot{display:flex;align-items:center;gap:6px}
.hd-lab{font-weight:600;min-width:90px}
.hd-each{font-size:.85rem;color:var(--muted)}
.lich-tbl td.ca-dp input{width:54px;text-align:center;font-weight:700}
.lich-tbl td.ca-dp input{border:1px solid #9fb4d4;background:#fff;border-radius:6px;padding:3px 2px}
/* DS giáo viên của trường */
.tch-box .acts{margin-bottom:6px}
.tbl tr.warn-row td{background:#fff6dd}
.lich-tbl td.ca-own select{border:1px solid #9fb4d4;background:#fff;border-radius:6px;padding:3px 2px;font-weight:600;max-width:96px}
.lich-tbl td.ca-own.own select{border-color:#c77d00;background:#fff8e6}
/* Bảng lịch gọn: cột co theo nội dung, ô số nhỏ, bỏ nút tăng giảm */
.lich-tbl{width:auto;min-width:0}
.lich-tbl th{font-size:.78rem;padding:4px 3px}
.lich-tbl td{padding:2px 3px}
.lich-tbl .cell{padding:3px 4px}
.lich-tbl input.cell.num{width:42px!important;text-align:center;padding:3px 2px}
.lich-tbl input.cell.num::-webkit-outer-spin-button,.lich-tbl input.cell.num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.lich-tbl input.cell.num{-moz-appearance:textfield;appearance:textfield}
.lich-tbl td.ca-need,.lich-tbl td.ca-can{min-width:0;padding:2px 4px}
.lich-tbl td.ca-dp input{width:40px}
.lich-tbl td.ca-own select{max-width:88px;font-size:.82rem}
.lich-tbl td.ca-can{min-width:74px}
.lich-tbl td.ca-can small{white-space:nowrap}
.lich-tbl input[type=date].cell{width:120px}
.lich-tbl td.ca-need small{white-space:nowrap}
/* Thanh phân công trong mục Lịch */
.plan-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin:8px 0 10px;padding:10px 12px;border:1px solid #c9d6ea;border-radius:10px;background:#f6f9ff}
.plan-bar.on{background:#eefaf2;border-color:#9fd3b1}
.plan-bar .pb-l{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.plan-bar .chk{margin:0}
.warn-t{color:var(--bad);font-weight:600}
.lich-tbl a.hd-link{display:block;font-size:.72rem;white-space:nowrap}
.lich-tbl td.ca-st{min-width:66px;border-left:2px solid #c9d6ea}
.lich-tbl td.ca-st b{display:block;font-size:1.05rem}
.lich-tbl td.ca-st small{display:block;font-size:.72rem;color:var(--muted);white-space:nowrap}
.lich-tbl td.ca-st.done b{color:var(--ok)}
.lich-tbl td.ca-st.locked b{color:#0b3d91}
.lich-tbl td.ca-st .warn-t{color:var(--bad);white-space:normal}
/* Nhóm mục trong menu (kỳ kiểm tra tập trung) */
.nav .nav-sec{margin:10px 4px 2px;padding:6px 8px 4px;border-top:2px solid #c9d6ea;font-size:.78rem;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:#0b3d91}
.nav .nav-sec:first-child{margin-top:0;border-top:0}
.nav .nav-sec small{display:block;text-transform:none;letter-spacing:0;font-weight:500;color:var(--muted);font-size:.74rem;margin-top:1px}
@media (max-width:900px){ .nav .nav-sec{display:none} }
.step-sec{margin:10px 0 2px;color:#0b3d91;text-transform:uppercase;font-size:.85rem;letter-spacing:.02em}
/* Khóa Phần 1 */
.lock-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;margin-bottom:12px;padding:10px 14px;border:1px solid #e0b252;background:#fff8e6;border-radius:10px;color:#6b4600}
.p1-locked a.hd-link{pointer-events:none;opacity:.4}
.p1-locked input:disabled,.p1-locked select:disabled{opacity:.85;cursor:not-allowed}
/* Mục Xếp phòng: các ca gom theo ngày */
.day-grp{display:flex;flex-direction:column;gap:6px}
.day-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;width:100%;text-align:left;font:inherit;cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;color:var(--ink)}
.day-head:hover{background:#eef3fa}
.day-head .arr{color:var(--pri);font-weight:800;width:12px}
.day-head b{font-size:1rem}
.day-head small{flex-basis:100%;margin-left:20px;color:var(--muted)}
.day-head.all small{color:var(--ok)}
.day-grp.open .day-head{background:#e8f0fc;border-color:#9fb4d4}
.day-grp.open .ses{margin-left:12px}
/* Ngày: thanh màu đậm, khác hẳn thẻ ca; ngày đang mở bọc các ca trong một khung */
.day-grp{gap:0;border-radius:12px}
.day-head{background:#123a72;color:#fff;border:0;border-radius:10px;padding:9px 12px}
.day-head:hover{background:#0b3d91}
.day-head .arr{color:#ffd166}
.day-head small{color:#cfe0ff}
.day-head.all small{color:#9ff0b8}
.day-grp.open{background:#eef4fd;border:2px solid #123a72;padding:0 0 8px}
.day-grp.open .day-head{background:#123a72;border-radius:9px 9px 0 0}
.day-grp.open .ses{margin:8px 8px 0 18px;padding:7px 10px;box-shadow:none}
.day-grp.open .ses b{font-size:.95rem}
.day-grp:not(.open){opacity:.95}
.ses-list > .btn{margin-top:6px}
.day-grp.open .ses .tag{display:inline-block;margin-right:8px}
/* Bảng tổng hợp theo giám thị / theo phòng: cột gọn */
.rep-tbl{width:auto;font-size:.82rem}
.rep-tbl th,.rep-tbl td{padding:3px 5px;text-align:center}
.rep-tbl th{white-space:normal;max-width:84px;min-width:52px;line-height:1.2;font-size:.76rem}
.rep-tbl td{white-space:nowrap}
.rep-tbl td:nth-child(2),.rep-tbl td:nth-child(3){text-align:left}
.rep-tbl td:nth-child(3){font-size:.76rem;color:var(--muted)}
.rep-tbl th:nth-child(2){min-width:120px;max-width:none}
.tbl tr.day-row td{background:#e8f0fc;border-top:2px solid #123a72}
/* Thanh “đang vào tài khoản người khác” */
.imp-bar{position:sticky;top:0;z-index:50;display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:center;padding:8px 14px;background:#f5b301;color:#222;font-weight:600}
/* Bảng quản trị tài khoản: mỗi tài khoản một dòng gọn */
.adm-tbl{font-size:.85rem}
.adm-tbl th,.adm-tbl td{padding:4px 7px;white-space:nowrap}
.adm-tbl th{font-size:.78rem}
.adm-tbl td:nth-child(2){white-space:normal;min-width:150px;max-width:220px;line-height:1.25}
.adm-tbl td:nth-child(2) b{font-weight:600}
.adm-tbl td a.muted{margin-left:4px}
.adm-tbl .row-acts{flex-wrap:nowrap;gap:4px}
.adm-tbl .row-acts .btn{padding:3px 8px;font-size:.78rem}
.adm-tbl .adm-phone{font-variant-numeric:tabular-nums}
.zalo-btn{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:10px;background:#0068ff;color:#fff!important;font-size:.72rem;font-weight:600;text-decoration:none;line-height:1.5;vertical-align:1px}
.zalo-btn:hover{background:#0050c8}
.grp-stats{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0 10px}
.grp-stats .chip{padding:3px 12px}
/* Chia sẻ & cài app (PWA) */
.pwa-qr{text-align:center}.pwa-qr img{width:220px;height:220px;border:1px solid var(--line);border-radius:12px;padding:6px;background:#fff}
.pwa-qr p{margin:6px 0}.pwa-inst{text-align:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.pwa-inst .ok{color:#0b7a4b;font-weight:600}
.pwa-steps{padding-left:20px;line-height:1.6}.pwa-steps li{margin:6px 0}
.pwa-bar{position:fixed;left:10px;right:10px;bottom:10px;z-index:900;display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 28px rgba(16,40,80,.22)}
.pwa-bar img{width:40px;height:40px;border-radius:10px}.pwa-bar-t{flex:1;min-width:0}.pwa-bar-t b{display:block;font-size:.92rem}.pwa-bar-t small{color:var(--muted);font-size:.78rem}
.pwa-bar .x{font-size:1.3rem;line-height:1;background:none;border:0;color:var(--muted);cursor:pointer;padding:2px 6px}
@media print{.pwa-bar{display:none!important}}
.top .site-home{text-decoration:none}
.auth-side .site-back{margin:0 0 14px}.auth-side .site-back a{color:#cfe0f5;text-decoration:none;font-size:.9rem}.auth-side .site-back a:hover{color:#fff;text-decoration:underline}
.grp-stats{flex-direction:column;align-items:stretch}
.grp-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:4px 0;border-bottom:1px dashed var(--line)}
.grp-row .chip.main{background:#e8f0fe;border-color:#c7d7f5}
.grp-row .chip.tc{background:#fff;font-size:.85rem}
.grp-stats .acts{margin:6px 0 0}
.warn-txt{color:#b45309;font-weight:600}
.seat-inp.empty-seat{color:#9aa6b8;background:#f4f6fa}
.seat-inp.flash{background:#fde68a;transition:background .2s}
.cust-edit{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.cust-edit .note{align-self:stretch;margin:0}
.seat-inp::-webkit-inner-spin-button,.seat-inp::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.seat-inp{-moz-appearance:textfield}
.note.chen{background:#fff7e6;border-color:#f8d48a;color:#7a4b00}
/* Chỗ giữa bàn (ngồi chen khi phòng trên 24 em) */
.seat.has-mid td.mid{width:58px;min-width:58px;border:1px dashed #cbd5e1;border-radius:4px;text-align:center;vertical-align:middle;cursor:pointer;color:#94a3b8;position:relative;padding:3px 2px}
.seat.has-mid td.mid:hover{background:#fff7e6;border-color:#f59e0b}
.seat.has-mid td.mid.chen{border:2px solid #f59e0b;background:#fff7e6;color:#7a4b00}
.seat.has-mid td.mid small{position:absolute;top:1px;left:3px;font-size:.6rem;color:#b45309}
.seat.has-mid td.mid b{display:block;font-size:.92rem;color:var(--ink)}
.seat.has-mid td.mid i{display:block;font-style:normal;font-size:.68rem;color:var(--muted);line-height:1.1}
.mid-add{font-size:1.1rem;font-weight:700}.mid-on{font-size:.72rem;font-weight:700;color:#b45309}
#print-root .sd-grid.has-mid td.gap,#print-root .sd-grid.has-mid td.mid{width:11%}
#print-root .sd-grid td.s.mid b{font-size:14pt}
.toast.warn{background:#b45309}
/* Chiều cao sơ đồ cố định theo số phòng/trang (Chrome khi in không co bảng trong flex đúng như trên màn hình) */
#print-root .sd-n1 .sd-grid{flex:none;height:212mm}
#print-root .sd-n2 .sd-grid,#print-root .sd-n4 .sd-grid{flex:none;height:86mm}
#print-root .sd-n3 .sd-grid{flex:none;height:50mm}
#print-root .sd-grid{width:100%;border-collapse:collapse}
#print-root .sd-n4 .sd-grid td.s.mid b,#print-root .sd-n3 .sd-grid td.s.mid b{font-size:8.5pt}
/* Đầu văn bản: không xuống dòng giữa chừng; tên Sở dài thì chữ nhỏ lại */
#print-root table.nat-head td{white-space:nowrap;line-height:1.35;padding:0 2pt}
#print-root table.nat-head .nh-up{font-weight:normal}
#print-root table.nat-head td + td{font-size:12pt}
.lop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.lop-it{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:#f8fafd}
.lop-it>span{flex:1;min-width:0}.lop-it small{color:var(--muted)}
.lop-it .btn{padding:3px 8px;font-size:.8rem}
.code-cell{font-family:ui-monospace,Consolas,monospace;font-size:.82rem;color:var(--muted);white-space:nowrap}

/* Mục 3: chọn cách phân công */
.src-box{border:1px solid var(--line,#e2e8f0);border-radius:12px;padding:10px 14px;margin:10px 0;background:#f8fafc;display:flex;flex-direction:column;gap:8px}
.src-box.on{background:#eff6ff;border-color:#bfdbfe}
.src-seg{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.src-seg .src-l{font-weight:600;margin-right:4px}
.src-seg .btn.on{background:#1d4ed8;color:#fff;border-color:#1d4ed8}
.src-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.src-step{background:#fff;border:1px solid #dbeafe;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.src-step.done{border-color:#86efac;background:#f0fdf4}
.src-step.done b{color:#15803d}
.small{font-size:.86em}
.src-seg .btn:not(.on){opacity:.55;background:#f1f5f9;color:#64748b;border-color:#e2e8f0;font-weight:500}
.src-seg .btn:not(.on):hover{opacity:.85}
.src-seg .btn.on{box-shadow:0 1px 4px rgba(29,78,216,.35)}

.src-act{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mau-links{font-size:.88em;color:#475569}
.mau-links a{font-weight:600;color:#1d4ed8;text-decoration:underline}

/* Chọn sẵn giám sát */
.side-box.gsb{border-color:#c7d2fe;background:#eef2ff}
.gs-picks{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0}
.gs-picks select.gs-pick{min-width:200px}
.gs-picks select.gs-pick.on{border-color:#4338ca;font-weight:600}

.rooms-td{white-space:nowrap}
.rooms-td .copy-all{margin-left:4px;font-size:14px;color:#1d4ed8;border:1px solid #c7d2fe;border-radius:6px;padding:1px 5px;background:#eef2ff;cursor:pointer}
.rooms-td .copy-all:hover{background:#1d4ed8;color:#fff}

/* Biên bản: tiêu đề cột không rớt dòng (xuống dòng chỉ ở chỗ chủ động <br>) */
#print-root table.grid.nw th{white-space:nowrap}
#print-root table.grid.nw td.c.b{white-space:nowrap}
#print-root table.grid.nw.g2{width:100%}
#print-root table.grid.nw.g2 th,#print-root table.grid.nw.g2 td{font-size:10.5pt;padding:2pt 3pt}
#print-root table.grid.nw.g2 td{white-space:nowrap}

/* Biên bản coi thi theo môn: 2 buổi trên 1 trang */
#print-root table.grid.ms th,#print-root table.grid.ms td{font-size:11pt;padding:1.3pt 3pt;line-height:1.15}
#print-root table.grid.ms tr.mon-row td{text-align:center;padding:2pt 4pt}
