@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-vietnamese-standard-normal-rJmnGBSt.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-ext-standard-normal-7khWdh9v.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-standard-normal-DY7AcnAa.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#12233a;--ink-soft:#44546a;--paper:#fbfcfa;--wash:#edf1ee;--rule:#cfd7d3;--route:#e6007e;--focus:#2c6fe0;--panel-width:384px;color:var(--ink);background:var(--paper);-webkit-text-size-adjust:100%;font-family:Archivo Variable,system-ui,sans-serif;font-stretch:100%}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{font-size:15px;line-height:1.4;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}[hidden]{display:none!important}h2,h3,p,ul,ol,dl,dd,figure,fieldset{margin:0;padding:0}ul,ol{list-style:none}fieldset{border:0;min-width:0}.boot{max-width:60ch;margin:auto;padding:32px 16px}.boot-error h1{margin:0 0 12px;font-size:24px}.boot-error pre{white-space:pre-wrap;font:inherit;color:#a82d27}.shell{grid-template-columns:var(--panel-width) minmax(0, 1fr);height:100dvh;display:grid;position:relative}.panel{background:var(--paper);border-right:1px solid var(--rule);overscroll-behavior:contain;flex-direction:column;min-height:0;display:flex;overflow-y:auto}.viewport{background:#d3dfe6;min-width:0;min-height:0;position:relative;overflow:hidden}.viewport canvas{display:block;position:absolute;inset:0}.shell.immersive{grid-template-columns:minmax(0,1fr)}.shell.immersive .panel,.shell.immersive .stack{display:none}.masthead{background:var(--ink);color:#fff;padding:16px 20px 14px}.brand{all:unset;cursor:pointer;display:block}.brand:focus-visible{outline-offset:2px;outline:2px solid #fff}.brand-name{letter-spacing:-.01em;font-size:30px;font-weight:640;font-stretch:118%;line-height:1.05;display:block}.brand-place{color:#bccadb;margin-top:4px;font-size:14px;display:block}.fiction-short,.panel-foot{display:none}.fiction{color:var(--ink);border-left:5px solid var(--route);background:#fff;margin-top:12px;padding:8px 10px;font-size:13px;font-weight:500;line-height:1.35}.panel-body{flex-direction:column;gap:18px;padding:16px 20px 28px;display:flex}.filters summary{cursor:pointer;padding:2px 0;font-size:18px;font-weight:620}.filters[open] summary{margin-bottom:10px}.chips{flex-wrap:wrap;gap:6px;margin-bottom:11px;display:flex}.chips legend{color:var(--ink-soft);margin-bottom:5px;padding:0;font-size:13px}.chip{background:var(--paper);border:1px solid #a9b6b1;min-height:34px;padding:4px 11px}.chip:hover{background:var(--wash)}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.nums{grid-template-columns:1fr 1fr;gap:10px;display:grid}.num{color:var(--ink-soft);flex-direction:column;gap:4px;font-size:13px;display:flex}.num:last-child{grid-column:1/-1}.num input,.field select{width:100%;min-height:38px;color:var(--ink);background:#fff;border:1px solid #a9b6b1;border-radius:0;padding:6px 8px;font-size:16px}.results{border-top:2px solid var(--ink);flex-direction:column;gap:14px;padding-top:12px;display:flex}.results-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.results-head h2{font-size:22px;font-weight:640;font-stretch:112%}.link{text-underline-offset:2px;color:var(--ink);background:0 0;border:0;padding:6px 0;text-decoration:underline}.group h3{color:var(--ink-soft);margin-bottom:3px;font-size:13px;font-weight:500}.unit-row{text-align:left;border:0;border-top:1px solid var(--rule);border-left:5px solid var(--c);background:0 0;grid-template-columns:58px 1fr auto;column-gap:8px;width:100%;min-height:52px;padding:7px 8px 7px 12px;display:grid}.unit-row:hover{background:var(--wash)}.unit-id{font-variant-numeric:tabular-nums;grid-row:1/3;align-self:center;font-size:17px;font-weight:650}.unit-what{font-variant-numeric:tabular-nums;font-size:14px}.unit-status{grid-area:1/3;justify-self:end;font-size:13px;font-weight:560}.unit-price{font-variant-numeric:tabular-nums;grid-column:2/4;font-size:14px;font-weight:560}.stock-date{color:var(--ink-soft);font-size:13px}.empty,.empty-block p{color:var(--ink-soft);max-width:42ch}.empty-block{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.btn{border:1px solid var(--ink);background:#fff;min-height:42px;padding:7px 14px;font-weight:560}.btn:hover{background:var(--wash)}.btn.primary{background:var(--ink);color:#fff}.btn.primary:hover{background:#24395a}.btn.primary.active{background:var(--route);border-color:var(--route)}.btn.wide{background:var(--route);border-color:var(--route);width:100%}.btn.wide:hover{background:#c4006b}.back{align-self:flex-start;font-size:14px}.unit-head{justify-content:space-between;align-items:center;gap:12px;margin-top:-10px;display:flex}.unit-head h2{letter-spacing:-.015em;font-variant-numeric:tabular-nums;font-size:46px;font-weight:680;font-stretch:122%;line-height:1}.status{background:var(--c);color:#fff;padding:5px 10px;font-size:14px;font-weight:600}.unit-sub{color:var(--ink-soft);margin-top:-10px}.unit-money{font-variant-numeric:tabular-nums;margin-top:-6px;font-size:25px;font-weight:620}.actions{flex-wrap:wrap;gap:8px;display:flex}.actions .btn{flex:auto}.plan{border:1px solid var(--rule);background:#fff;padding:8px}.plan-svg{width:100%;height:auto;max-height:56vh;font-family:inherit;display:block}.plan figcaption{color:var(--ink-soft);justify-content:space-between;align-items:center;gap:10px;margin-top:4px;font-size:12.5px;display:flex}.plan-dialog{border:1px solid var(--ink);width:min(1100px,100vw - 16px);max-width:none;max-height:calc(100dvh - 16px);color:var(--ink);background:#fff;padding:12px}.plan-dialog::backdrop{background:#12233a99}.plan-dialog-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.plan-dialog-head h2{font-size:22px;font-weight:640}.plan-dialog .plan-svg{max-height:calc(100dvh - 96px)}.facts{grid-template-columns:1fr 1fr;gap:10px 14px;display:grid}.facts dt{color:var(--ink-soft);font-size:13px}.facts dd{font-variant-numeric:tabular-nums;font-weight:580}.rooms{border-collapse:collapse;width:100%}.rooms caption{text-align:left;padding-bottom:5px;font-weight:620}.rooms th{text-align:left;font-weight:400}.rooms td{text-align:right;font-variant-numeric:tabular-nums}.rooms th,.rooms td{border-top:1px solid var(--rule);padding:5px 0}.route-box{border-left:5px solid var(--route);background:#fdf0f7;flex-direction:column;gap:10px;padding:12px;display:flex}.route-box h3{font-size:18px;font-weight:620}.field{color:var(--ink-soft);flex-direction:column;gap:4px;font-size:13px;display:flex}.check{align-items:center;gap:8px;min-height:32px;display:flex}.check input{width:20px;height:20px;accent-color:var(--route)}.steps{flex-wrap:wrap;gap:3px 0;font-size:14px;display:flex}.steps li+li:before{content:"›";color:var(--route);margin:0 7px;font-weight:700}.steps li:last-child{font-weight:650}.route-meta{color:var(--ink-soft);font-size:13.5px}.stack{border:1px solid var(--ink);background:#fbfcfaf0;flex-direction:column;gap:3px;width:248px;padding:10px;display:flex;position:absolute;top:14px;right:14px}.stack-all{background:#fff;border:1px solid #a9b6b1;min-height:34px;margin-bottom:5px;font-weight:560}.stack-all:hover{background:var(--wash)}.stack-all.on{background:var(--ink);border-color:var(--ink);color:#fff}.stack-row{grid-template-columns:30px 1fr;gap:3px;display:grid}.stack-floor{font-variant-numeric:tabular-nums;background:#fff;border:1px solid #a9b6b1;min-height:36px;padding:0;font-weight:640}.stack-floor:hover{background:var(--wash)}.stack-row.on .stack-floor{background:var(--ink);border-color:var(--ink);color:#fff}.stack-units{gap:2px;display:flex}.stack-cell{background:var(--c);border:0;flex-basis:0;min-width:0;padding:0}.stack-cell:hover{outline:2px solid var(--ink);outline-offset:-2px}.stack-cell.off{background:repeating-linear-gradient(135deg,#e3e7e5 0 3px,#f6f7f5 3px 6px)}.stack-cell.on{outline:3px solid var(--ink);outline-offset:-3px;box-shadow:inset 0 0 0 5px #fff}.stack-toggle{min-height:26px;margin-top:4px;font-size:13px}.stack-toggle input{width:16px;height:16px;accent-color:var(--ink)}.legend{flex-wrap:wrap;gap:3px 10px;margin-top:7px;font-size:12.5px;display:flex}.legend li{align-items:center;gap:5px;display:flex}.legend i{width:11px;height:11px;display:block}.hud{pointer-events:none;padding:max(12px, env(safe-area-inset-top)) 12px max(14px, env(safe-area-inset-bottom));flex-direction:column;display:flex;position:absolute;inset:0}.hud .btn{pointer-events:auto}.hud-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.hud-title{background:var(--ink);color:#fff;flex-direction:column;min-width:0;padding:8px 12px;display:flex}.hud-title span{color:#bccadb;font-size:13px}.hud-where{min-height:1.2em;font-size:17px;font-weight:620}.hud-hint{color:#fff;text-align:center;background:#12233adb;max-width:46ch;margin:auto auto 0;padding:6px 12px;font-size:14px}.hud-bottom{flex-direction:column;align-items:center;gap:8px;margin-top:auto;display:flex}.hud-buttons{gap:8px;display:flex}.progress{border:1px solid var(--ink);background:#ffffffb8;width:min(460px,100%);height:7px}.progress i{background:var(--route);width:0;height:100%;display:block}.joystick{left:max(18px, env(safe-area-inset-left));bottom:max(70px, calc(env(safe-area-inset-bottom) + 62px));pointer-events:auto;touch-action:none;background:#12233a42;border:2px solid #ffffffd9;border-radius:50%;place-items:center;width:128px;height:128px;display:grid;position:absolute}.joystick i{background:#fff;border-radius:50%;width:54px;height:54px;display:block;box-shadow:0 1px 4px #00000059}.fade{background:var(--ink);color:#fff;opacity:0;pointer-events:none;place-items:center;font-size:24px;font-weight:620;font-stretch:112%;transition:opacity .4s;display:grid;position:absolute;inset:0}.fade.on{opacity:1}@media (width<=899px){body{overflow:hidden}.shell{grid-template-rows:minmax(0,50dvh) auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.viewport{grid-row:1}.panel{border-right:0;grid-row:3}.shell.immersive{grid-template-rows:minmax(0,1fr)}.masthead{gap:2px;padding:8px 16px;display:grid}.brand{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.brand-name{font-size:22px}.brand-place{margin:0;font-size:13px}.masthead .fiction{display:none}.fiction-short{color:#fff;font-size:12.5px;display:block}.panel-foot{padding:0 16px 24px;display:block}.panel-foot .fiction{margin:0;font-size:12.5px}.panel-body{padding:14px 16px 24px}.stack{background:var(--paper);border-width:1px 0;flex-direction:row;grid-row:2;align-items:center;gap:4px;width:auto;padding:5px 12px;position:static;overflow-x:auto}.stack-all{flex:none;order:-100;min-height:36px;margin:0;padding:0 10px;font-size:13px}.stack-row{order:var(--level);flex:none;display:block}.stack-floor{width:36px;min-height:36px;font-size:13px}.stack-units,.legend{display:none}.stack-toggle{white-space:nowrap;flex:none;order:100;min-height:36px;margin:0 0 0 auto;font-size:12.5px}.btn{min-height:44px}.chip{min-height:38px}}@media (prefers-reduced-motion:reduce){.fade{transition:none}}
