@font-face{font-family:BVP;font-weight:400;src:url(assets/fonts/bvp-Regular.woff2);font-display:swap}
@font-face{font-family:BVP;font-weight:600;src:url(assets/fonts/bvp-SemiBold.woff2);font-display:swap}
@font-face{font-family:BVP;font-weight:700;src:url(assets/fonts/bvp-Bold.woff2);font-display:swap}
@font-face{font-family:BVP;font-weight:800;src:url(assets/fonts/bvp-ExtraBold.woff2);font-display:swap}
/* t256u: CSS asks 900 in places — BVP has no Black; map 900→ExtraBold to avoid synthetic/fallback glyphs */
@font-face{font-family:BVP;font-weight:900;src:url(assets/fonts/bvp-ExtraBold.woff2);font-display:swap}
/* Vietnamese glyph fallback (Inter subset) when BVP misses a codepoint — not a theme redesign */
@font-face{font-family:"Inter VN";font-weight:400;src:url(assets/fonts/inter-vn.woff2);font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303,U+0309,U+0323,U+1EA0-1EF9}
/* t418: same Vietnamese fallback at all UI weights so bold buttons don't drop to a system font */
@font-face{font-family:"Inter VN";font-weight:600;src:url(assets/fonts/inter-vn.woff2);font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303,U+0309,U+0323,U+1EA0-1EF9}
@font-face{font-family:"Inter VN";font-weight:700;src:url(assets/fonts/inter-vn.woff2);font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303,U+0309,U+0323,U+1EA0-1EF9}
@font-face{font-family:"Inter VN";font-weight:800;src:url(assets/fonts/inter-vn.woff2);font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303,U+0309,U+0323,U+1EA0-1EF9}
@font-face{font-family:"Inter VN";font-weight:900;src:url(assets/fonts/inter-vn.woff2);font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303,U+0309,U+0323,U+1EA0-1EF9}
:root{--up:#5EF2B5;--dn:#FF7A6B;--tq:#42CAD7;--teal:#0C7A87;--gold:#FFD27A;--mut:rgba(30,42,48,0.76);--mut2:rgba(30,42,48,0.52);--ln:rgba(30,42,48,0.084);
--font:BVP,"Inter VN",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
--fs-xs:11px;--fs-sm:12px;--fs-md:13.5px;--fs-lg:16px;--fs-xl:22px;
--fw-reg:400;--fw-sem:700;--fw-bold:800;
--c-wait:#FFD27A;--c-stay:#7FE7F0;--c-paid:#5EF2B5;
--rad-chip:99px;--sp-1:6px;--sp-2:8px;--sp-3:12px}
*{margin:0;padding:0;box-sizing:border-box}
html,body{font-family:var(--font)}
body{background:#073A45;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}
/* t418: native controls do not inherit font-family; keep one app face and wrap long status text */
button,input,select,textarea,.btn,[role=button],a{font-family:inherit;font-synthesis:none}
#app .gl,#app .cs,#app [data-st],#app [data-stays-source],#app [data-inventory-line]{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-word;white-space:normal}
/* t431: labels stay one line; values never shrink away; stack on a narrow pane */
#app .kv div span,#app .kv.kv-list>div span{flex:0 1 auto;min-width:7em;max-width:58%;color:var(--mut);white-space:nowrap;overflow-wrap:normal;word-break:normal}
#app .kv div b,#app .kv.kv-list>div b{flex:1 1 auto;min-width:3.5em;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;overflow-wrap:normal;word-break:normal}
#app .kv.kv-list>div b{flex:0 0 auto}
#app .kv.kv-list>div span{flex:1 1 auto;max-width:none;min-width:0;overflow:hidden;text-overflow:ellipsis}
#app.M .kv div,#app .bkdetail .kv div,#app .bkdesk .bkdetail .kv div{flex-wrap:wrap}
#app.M .kv div span,#app .bkdetail .kv div span{flex:1 0 100%;max-width:100%}
#app.M .kv div b,#app .bkdetail .kv div b{flex:1 0 auto;text-align:left}
#app .stay-line,.stay-line{overflow-wrap:normal;word-break:normal;white-space:nowrap;flex:1 1 140px;min-width:8em}
#app .ckr{flex-wrap:nowrap!important;align-items:center}
#app .ckr .inp{flex:1 1 auto;min-width:100px;width:auto!important}
#app .ckr .btn,#app .ckr button{flex:0 0 auto;white-space:nowrap}
#app .ck-lookup{display:flex;gap:8px;align-items:center;flex-wrap:nowrap;margin:10px 0}
#app .ck-lookup .inp{flex:1 1 auto;min-width:0}
#app .ck-lookup .btn,#app .ck-lookup button{flex:0 0 auto;white-space:nowrap}
#app #scst,#app [data-scan-notice],#app [data-counter-source],#app .foot{font-size:13px;line-height:1.45;color:var(--tx,#1E2A30);opacity:.92}
#app .holder-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:normal;display:block;max-width:100%}
#tq-test-picker{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
#app .btn{font-family:inherit;font-weight:700}
/* t416d: never leave staff <a> as UA blue/underline/serif; classed chips/pills/buttons keep their own color */
#app a,#app a:link,#app a:visited{font-family:inherit;font-synthesis:none;text-decoration:none;cursor:pointer}
#app a:not([class]),#app a:not([class]):link,#app a:not([class]):visited{color:inherit}
#app .stays-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
#app .apill{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;border-radius:99px;font-family:inherit;font-synthesis:none;font-size:12px;font-weight:800;line-height:1;white-space:nowrap;text-decoration:none;flex:none;color:rgba(30,42,48,0.92);background:rgba(30,42,48,0.06);border:1px solid rgba(30,42,48,0.108)}
#app .apill:hover{background:rgba(30,42,48,0.10)}
.scr{position:relative;overflow:hidden;flex:none;background:linear-gradient(162deg,#0E8C99 0%,#0C7A87 22%,#0A4F5C 58%,#073A45 100%);isolation:isolate}
.mob{width:390px;height:844px;border-radius:0}.desk{width:1440px;height:900px}
.blob{position:absolute;border-radius:50%;filter:blur(60px);z-index:-1;pointer-events:none}
.b1{width:340px;height:340px;background:#42CAD7;opacity:.55;top:-90px;right:-110px}
.b2{width:300px;height:300px;background:#5EF2B5;opacity:.22;top:380px;left:-150px}
.b3{width:280px;height:280px;background:#42CAD7;opacity:.35;bottom:-60px;right:-60px}
.desk .b1{width:620px;height:620px;top:-220px;right:-160px}.desk .b2{width:520px;height:520px;top:420px;left:-200px}.desk .b3{width:480px;height:480px;bottom:-200px;right:380px}
.grain{position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 30% 20%,rgba(30,42,48,0.05),transparent 40%),radial-gradient(circle at 80% 70%,rgba(66,202,215,.12),transparent 45%)}
.gl{background:rgba(30,42,48,0.066);-webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%);border:1px solid rgba(30,42,48,0.132);box-shadow:0 10px 32px rgba(0,24,32,.28),inset 0 1px 0 rgba(30,42,48,0.108);border-radius:20px}
.gl2{background:rgba(30,42,48,0.05);border:1px solid rgba(30,42,48,0.084);border-radius:14px}
.sb{display:flex;justify-content:space-between;align-items:center;height:46px;padding:0 26px 0 30px;font-weight:700;font-size:15px}
.sb .r{display:flex;gap:6px;align-items:center;font-size:12px}.bat{border:1.5px solid rgba(30,42,48,0.92);border-radius:4px;padding:0 4px;font-size:10px;font-weight:800}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:9.5px;font-weight:800;letter-spacing:.5px;padding:3px 8px;border-radius:99px;background:rgba(255,210,122,.18);color:var(--gold);border:1px solid rgba(255,210,122,.4)}
.tag.est{background:rgba(94,242,181,.14);color:var(--up);border-color:rgba(94,242,181,.4)}
.hd{padding:2px 18px 8px;display:flex;justify-content:space-between;align-items:flex-start}
.hd h1{font-size:28px;font-weight:800;letter-spacing:-.3px;line-height:1.15}.hd .sub{font-size:15px;color:var(--mut);font-weight:700}
.ib{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.ibs{display:flex;gap:0;border-radius:99px;padding:0 4px}.ibs .ib{width:44px}
.seg{display:flex;padding:4px;border-radius:14px;gap:2px}.seg div{flex:1;text-align:center;font-size:12.5px;font-weight:700;padding:7px 0;border-radius:10px;color:var(--mut)}
.seg div.on{background:rgba(30,42,48,0.144);color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15),inset 0 1px 0 rgba(30,42,48,0.15)}
.pill{display:inline-block;min-width:66px;text-align:center;font-weight:800;font-size:13px;padding:4px 8px;border-radius:8px;color:#06333B}
.pill.up{background:var(--up);color:#06333B}.pill.dn{background:var(--dn);color:#fff}.pill.nt{background:rgba(30,42,48,0.15);color:#fff}
.up{color:var(--up)}.dn{color:var(--dn)}.mut{color:var(--mut)}.mut2{color:var(--mut2)}
.tb{position:absolute;left:12px;right:12px;bottom:14px;height:66px;border-radius:26px;display:flex;justify-content:space-around;align-items:center;z-index:5}
.tb div{text-align:center;font-size:10.5px;font-weight:700;color:var(--mut);width:68px;padding:6px 0;border-radius:18px}.tb svg{display:block;margin:0 auto 3px}
.tb .on{color:#fff;background:rgba(30,42,48,0.12);box-shadow:inset 0 1px 0 rgba(30,42,48,0.15)}
.row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--ln)}.row:last-child{border-bottom:0}
.row .nm{flex:1;min-width:0}.row .nm b{display:block;font-size:15.5px;font-weight:800}.row .nm span{font-size:11.5px;color:var(--mut)}
.row .vl{text-align:right;width:104px}.row .vl b{display:block;font-size:15px;font-weight:700;margin-bottom:3px}
.kv{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.kv div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:var(--fs-sm);padding:7px 0;border-bottom:1px solid var(--ln);flex-wrap:nowrap}
.kv div span{color:var(--mut);flex:0 1 auto;min-width:7em}.kv div b{font-weight:700;flex:1 1 auto;min-width:3.5em;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
#app .kv.kv-list, .kv.kv-list{display:flex;flex-direction:column;grid-template-columns:none}
#app .kv.kv-list>div,.kv.kv-list>div{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;gap:12px;width:100%;flex-wrap:nowrap}
#app.M .kv.kv-list{grid-template-columns:none!important}
.ct{font-size:13.5px;font-weight:800;margin-bottom:2px}.cs{font-size:12px;line-height:1.35;font-weight:700;color:var(--mut)}
.lg{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;color:var(--mut)}.lg i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.sheet{position:absolute;left:0;right:0;bottom:0;border-radius:30px 30px 0 0;z-index:6}
.grab{width:38px;height:5px;border-radius:3px;background:rgba(30,42,48,0.46);margin:8px auto 0}
.dim{position:absolute;inset:0;background:rgba(3,25,31,.45);z-index:4}
.foot{font-size:10px;color:var(--mut2);text-align:center}
.lt{display:inline-block;width:10px;height:10px;border-radius:50%;box-shadow:0 0 8px currentColor}
.lt.g{background:#5EF2B5;color:#5EF2B5}.lt.y{background:#FFD27A;color:#FFD27A}.lt.r{background:#FF7A6B;color:#FF7A6B}
.chk{width:20px;height:20px;border-radius:6px;border:1.5px solid rgba(30,42,48,0.57);display:inline-flex;align-items:center;justify-content:center;flex:none}
.chk.on{background:var(--up);border-color:var(--up);color:#06333B;font-weight:900;font-size:13px}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 16px;border:0;border-radius:16px;font-family:inherit;font-weight:800;font-size:15px;color:inherit;cursor:pointer;-webkit-appearance:none;appearance:none;margin:0}
.btn.pri{background:linear-gradient(180deg,#6FF5C0,#3FD9A0);color:#05343A;box-shadow:0 8px 22px rgba(63,217,160,.35)}
.btn.gl2{border:1px solid rgba(30,42,48,0.108);background:rgba(30,42,48,0.06)}
svg text{font-family:BVP,sans-serif}
.dnav{width:232px;padding:22px 16px;display:flex;flex-direction:column;gap:4px;position:absolute;left:16px;top:16px;bottom:16px;border-radius:24px}
.dnav .it{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:14px;font-weight:700;font-size:14px;color:var(--mut)}.dnav .it.on{background:rgba(30,42,48,0.12);color:#fff}
.dmain{position:absolute;left:264px;right:16px;top:16px;bottom:16px}

#g27 .row{padding:7px 0}#g27 .row .nm b{font-size:15px}
.cmp>div{gap:2px!important;font-size:11px!important}
/* ================= SPA layout (app.html) ================= */
html,body{background:#073A45}
#app{position:relative;min-height:100vh;min-height:100dvh;background:linear-gradient(162deg,#0E8C99 0%,#0C7A87 22%,#0A4F5C 58%,#073A45 100%);isolation:isolate;overflow-x:clip;overflow-y:visible;width:100%;max-width:100%}
#app .blob{position:fixed}#app .grain{position:fixed}
#app.D .b1{width:620px;height:620px;top:-220px;right:-160px}#app.D .b2{width:520px;height:520px;top:420px;left:-200px}#app.D .b3{width:480px;height:480px;bottom:-200px;right:380px}
#app.M .b1{width:300px;height:300px;top:-90px;right:-80px}#app.M .b2{width:280px;height:280px;top:380px;left:-120px}#app.M .b3{width:260px;height:260px;bottom:-60px;right:-60px}
#app.D .dnav{position:fixed;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}
#app.D .dnav .it{cursor:pointer;padding:8px 12px;font-size:13.5px}
#app.D .dnav .grp{font-size:10.5px;font-weight:800;letter-spacing:.8px;color:rgba(30,42,48,0.57);margin:10px 12px 2px}
#app.D .dnav .it .n{margin-left:auto;background:#FF7A6B;color:#fff;font-size:10.5px;border-radius:99px;padding:1px 7px}
#app.D .dmain{position:relative;left:auto;right:auto;top:auto;bottom:auto;margin-left:264px;padding:16px 16px 24px 0;min-height:100vh}
#app.M{max-width:100%;width:100%;margin:0;padding-bottom:96px}
#app.M .tb{position:fixed;left:50%;transform:translateX(-50%);width:min(366px,calc(100% - 24px));bottom:14px}
#app.M .tb div{cursor:pointer}
#app.M .sheet{position:fixed;left:0;right:0;width:100%;max-width:100%;margin:0;overflow:auto}
#app .dim{position:fixed}
[data-go]{cursor:pointer}
.dh{display:flex;align-items:center;gap:12px;min-height:56px;margin-bottom:14px}
.dh .t{font-size:26px;font-weight:800;letter-spacing:-.3px}
.chipbar{display:flex;gap:6px;overflow-x:auto;padding:0 14px 10px;scrollbar-width:none;align-items:center}
.chipbar a,.chipbar div,.chipbar .btn{flex:none;box-sizing:border-box;height:32px;margin:0;padding:0 12px;border-radius:99px;font-size:12px;font-weight:800;background:rgba(30,42,48,0.06);border:1px solid rgba(30,42,48,0.108);color:rgba(30,42,48,0.92);white-space:nowrap;display:inline-flex;align-items:center;justify-content:center}
.chipbar .on{background:#fff;color:#0A4F5C}
.bd{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:800;white-space:nowrap;border:1px solid transparent}
.bd.ok{background:rgba(94,242,181,.18);color:#5EF2B5;border-color:rgba(94,242,181,.35)}
.bd.wn{background:rgba(255,210,122,.16);color:#FFD27A;border-color:rgba(255,210,122,.35)}
.bd.dn{background:rgba(255,122,107,.16);color:#FF9C90;border-color:rgba(255,122,107,.4)}
.bd.tq{background:rgba(127,231,240,.15);color:#7FE7F0;border-color:rgba(127,231,240,.35)}
.bd.mt{background:rgba(30,42,48,0.06);color:rgba(30,42,48,0.92);border-color:rgba(30,42,48,0.12)}
.bd.vi{background:rgba(185,167,255,.16);color:#CFC3FF;border-color:rgba(185,167,255,.35)}
.bd.stay{background:rgba(12,122,135,.18);color:var(--c-stay);border-color:rgba(66,202,215,.4)}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:11px;font-weight:800;letter-spacing:.3px;color:rgba(30,42,48,0.69);padding:8px 10px;border-bottom:1px solid rgba(30,42,48,0.108);white-space:nowrap}
.tbl td{padding:9px 10px;border-bottom:1px solid rgba(30,42,48,0.05);vertical-align:middle}
.tbl .r,.tbl th.r{text-align:right}.tbl tr.sel td{background:rgba(30,42,48,0.072)}.tbl tr.tot td{font-weight:800;border-top:1px solid rgba(30,42,48,0.18);border-bottom:none}
.tbl tr[data-go]:hover td{background:rgba(30,42,48,0.05)}
.bar{height:10px;border-radius:6px;background:rgba(30,42,48,0.072);overflow:hidden}.bar i{display:block;height:100%;border-radius:6px}
.lr{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid rgba(30,42,48,0.06);font-size:13px}.lr:first-child{border-top:none}
.ico{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex:none;background:rgba(30,42,48,0.084)}
.cnt{display:flex;align-items:center;gap:6px}.cnt span{width:30px;height:30px;border-radius:10px;background:rgba(30,42,48,0.084);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px}
.modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:8;border-radius:26px;background:rgba(10,70,82,.72)!important}
.mono{font-family:var(--font);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:0}
.calg{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.calg .c{border-radius:12px;padding:6px 7px;min-height:58px;font-size:11px;line-height:1.3;border:1px solid rgba(30,42,48,0.084)}
.calg .h{font-size:11px;font-weight:800;color:rgba(30,42,48,0.69);text-align:center}
.swt{width:40px;height:24px;border-radius:99px;background:rgba(30,42,48,0.12);position:relative;flex:none}.swt::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff}
.swt.on{background:#2FBF8F}.swt.on::after{left:19px}
.mbar{display:flex;align-items:center;gap:10px;padding:8px 16px 10px}
#app.D .tbl th{white-space:nowrap}#app.D .tbl td{white-space:normal}#app.D .tbl td .cs{white-space:normal}#app.D .tbl td .nw,#app.D .tbl .mono{white-space:nowrap}
#app.M .kv{grid-template-columns:1fr!important}
#app.M .calg{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}#app.M .calg .c{min-height:44px;border-radius:9px}
#app.M .tbl{width:100%;table-layout:auto}#app.M .tbl th,#app.M .tbl td{padding:7px 3px;font-size:11.5px}#app.M .tbl td:first-child,#app.M .tbl th:first-child{padding-left:0}#app.M .tbl td:last-child,#app.M .tbl th:last-child{padding-right:0}
/* Chạm trên điện thoại (iOS chỉ gửi click cho phần tử "bấm được"): mọi nút dạng div đều có con trỏ + bỏ trễ double-tap */
.btn,.ib,[role=button],[data-back],[data-tastep],[data-tabstep],[data-tasave],[data-taoff],[data-taon],[data-taoff1],[data-taon1],[data-tabulk],[data-tarange],[data-tab0],[data-hvlock],[data-hvlock2],[data-xlsx],[data-pdf],[data-print],[data-tqtx],[data-tqtxgo],[data-tqdoc],[data-tqlogin],[data-tqout],[data-tqre],[data-tqst],[data-kbgo],[data-scgo],[data-gadd],[data-grm],[data-gmode],[data-tysave],[data-tykind],[data-bcxlsx],[data-resend],[data-cam],[data-camstop],[data-fcam],[data-fsel],[data-fshot],[data-fagain],[data-cd],[data-shot]{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:rgba(127,231,240,.18)}
[data-tastep],[data-tabstep]{-webkit-user-select:none;user-select:none}
[data-tasave].tadis{opacity:.55}
[data-printbk],[data-pdfbk],[data-kbcopy]{cursor:pointer;touch-action:manipulation}

/* t419/t425: booking desk stacks under 1500px so the detail panel is not clipped */
#app.D .bkdesk{display:flex;gap:12px;align-items:flex-start}
@media (max-width:1500px){
  #app.D .bkdesk{flex-direction:column}
  #app.D .bkdesk .bkdetail{position:static;flex:1 1 auto;width:100%;max-width:100%;min-width:0}
}
#app .stay-line{font-variant-numeric:tabular-nums;white-space:normal}
#app details.ck-add>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;height:32px;padding:0 12px;border-radius:99px;font-size:12px;font-weight:800;background:rgba(30,42,48,0.06);border:1px solid rgba(30,42,48,0.108)}
#app details.ck-add>summary::-webkit-details-marker{display:none}


/* t438u: Quỹ phòng TA/HV tables — columns stay on the same row as headers; draft rows highlighted */
.tbl.quy-ta,.tbl.quy-hv{table-layout:fixed;width:100%}
.tbl.quy-ta th,.tbl.quy-ta td,.tbl.quy-hv th,.tbl.quy-hv td{text-align:left;vertical-align:middle}
.tbl.quy-ta .quy-step-cell,.tbl.quy-hv .quy-step-cell{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-start}
.tbl.quy-ta .quy-step-cell>b,.tbl.quy-hv .quy-step-cell>b{min-width:1.6em;text-align:center}
.quy-step-slot{width:32px;height:32px;flex:none;box-sizing:border-box}
.tbl.quy-ta tr.quy-changed td{background:rgba(245,166,35,.16)}
