@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-vietnamese-wght-normal-XAtsl5Q_.woff2) format("woff2-variations");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-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-latin-ext-wght-normal-C4zznr8T.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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;src:url(/assets/archivo-latin-wght-normal-E0tuGl4L.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Spline Sans Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/spline-sans-mono-latin-ext-wght-normal-Dh0aNLWd.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Spline Sans Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/spline-sans-mono-latin-wght-normal-DlaB5ohX.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #eff1ec;--paper-lift: #f8f9f5;--ink: #16211d;--ink-soft: #61706a;--ink-faint: #99a49e;--rule: #ccd3c8;--laser: #ff3b18;--floor: rgba(42, 102, 82, .17);--floor-edge: #16211d;--sans: "Archivo Variable", system-ui, -apple-system, sans-serif;--mono: "Spline Sans Mono Variable", ui-monospace, "SF Mono", monospace;--ease-out: cubic-bezier(.22, 1, .36, 1);--sheet-radius: 26px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--laser);outline-offset:3px;border-radius:4px}.app{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;user-select:none;-webkit-user-select:none}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;display:block}.chrome{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;display:flex;flex-direction:column}.chrome button,.chrome .units{pointer-events:auto}.header{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 14px) 18px 0;gap:12px}.wordmark{font-size:14px;font-weight:600;letter-spacing:-.02em;color:var(--ink);transition:opacity .5s var(--ease-out)}.wordmark[data-dim=true]{opacity:0}.units{display:flex;gap:2px;padding:2px;border:1px solid var(--rule);border-radius:999px;background:color-mix(in srgb,var(--paper-lift) 70%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.units button{min-width:44px;height:30px;border-radius:999px;font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--ink-soft);transition:background .22s var(--ease-out),color .22s var(--ease-out)}.units button[aria-pressed=true]{background:var(--ink);color:var(--paper-lift)}.hint{margin:16px auto 0;font-size:13.5px;font-weight:450;letter-spacing:-.005em;color:var(--ink-soft);text-align:center;padding:0 28px;animation:hint-in .42s var(--ease-out) both}@keyframes hint-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}.spacer{flex:1;pointer-events:none}.readout{padding:0 20px calc(var(--safe-bottom) + 18px);display:flex;flex-direction:column;align-items:center;gap:2px;transition:opacity .26s var(--ease-out),transform .3s var(--ease-out)}.readout[data-hidden=true]{opacity:0;transform:translateY(14px);pointer-events:none}.readout-figure{display:flex;align-items:baseline;gap:8px;font-family:var(--mono);font-variant-numeric:tabular-nums;line-height:1}.readout-value{font-size:62px;font-weight:500;letter-spacing:-.045em;color:var(--ink);transition:color .42s var(--ease-out)}.readout-value[data-provisional=true]{color:var(--ink-soft)}.readout-unit{font-size:21px;font-weight:400;color:var(--ink-soft);letter-spacing:-.01em}.readout-sub{margin-top:6px;font-family:var(--mono);font-size:11.5px;color:var(--ink-faint);font-variant-numeric:tabular-nums;letter-spacing:.01em}.controls{display:flex;align-items:center;justify-content:space-between;padding:0 18px 16px;transition:opacity .22s var(--ease-out)}.controls[data-hidden=true]{opacity:0}.controls[data-hidden=true] button{pointer-events:none}.icon-button{width:46px;height:46px;display:grid;place-items:center;border-radius:999px;border:1px solid var(--rule);background:color-mix(in srgb,var(--paper-lift) 74%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink);transition:transform .16s var(--ease-out),opacity .2s var(--ease-out)}.icon-button:active{transform:scale(.92)}.icon-button:disabled{opacity:.28;cursor:default}.text-button{height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--rule);background:color-mix(in srgb,var(--paper-lift) 74%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:12px;font-weight:500;letter-spacing:.04em;color:var(--ink-soft);transition:transform .16s var(--ease-out)}.text-button:active{transform:scale(.94)}.keypad{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:12px 12px calc(var(--safe-bottom) + 12px);background:var(--paper-lift);border-top:1px solid var(--rule);border-radius:var(--sheet-radius) var(--sheet-radius) 0 0;box-shadow:0 -14px 40px -20px #16211d73;animation:sheet-up .3s var(--ease-out) both}@keyframes sheet-up{0%{transform:translateY(102%)}to{transform:none}}.keypad-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 8px 12px}.keypad-label{font-family:var(--mono);font-size:13px;font-weight:400;letter-spacing:-.01em;color:var(--ink-soft);white-space:nowrap}.keypad-dismiss{flex:none;display:grid;place-items:center;width:34px;height:34px;margin:-6px -4px -6px 0;border-radius:50%;color:var(--ink-soft)}.keypad-value{margin-left:auto;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:34px;font-weight:500;letter-spacing:-.04em;line-height:1;color:var(--ink);display:flex;align-items:baseline;gap:6px}.keypad-value[data-empty=true]{color:var(--ink-faint)}.keypad-value span{font-size:15px;color:var(--ink-soft);font-weight:400}.keypad-value[data-prefilled=true]{background:color-mix(in srgb,var(--laser) 16%,transparent);box-shadow:0 0 0 5px color-mix(in srgb,var(--laser) 16%,transparent);border-radius:3px}.caret{display:inline-block;width:2px;height:26px;background:var(--laser);border-radius:1px;transform:translateY(2px);animation:blink 1.05s steps(2,start) infinite}@keyframes blink{50%{opacity:0}}.keys{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.key{height:56px;border-radius:14px;background:var(--paper);border:1px solid transparent;font-family:var(--mono);font-size:23px;font-weight:500;color:var(--ink);display:grid;place-items:center;transition:transform .12s var(--ease-out),background .14s var(--ease-out)}.key:active{transform:scale(.94);background:#e4e8e0}.key[data-wide=true]{grid-column:span 2}.key[data-role=aux]{color:var(--ink-soft);font-size:19px}.key[data-role=confirm]{grid-column:4;grid-row:2 / span 3;height:auto;background:var(--laser);color:#fff;box-shadow:0 6px 18px -8px #ff3b18e6}.key[data-role=confirm]:active{background:#e6300f}.key[data-role=confirm]:disabled{background:var(--rule);color:var(--paper-lift);box-shadow:none;cursor:default}.grid-dot{fill:var(--rule)}.grid{transition:opacity .6s var(--ease-out);opacity:.85}.grid[data-quiet=true]{opacity:.32}.floor{fill:var(--floor);stroke:none;transition:fill .4s var(--ease-out)}.wall{fill:none;stroke:var(--floor-edge);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.wall-active{stroke:var(--laser);stroke-width:4;stroke-linecap:round}.wall-close{stroke:var(--floor-edge);stroke-width:2.5;stroke-linecap:round;fill:none;stroke-dasharray:1;animation:draw-home .42s var(--ease-out) both}@keyframes draw-home{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.ghost{stroke:var(--ink-faint);stroke-width:1.5;stroke-dasharray:2 6;stroke-linecap:round}.corner,.here{fill:var(--ink)}.ext,.dim-line{stroke:var(--ink-soft);stroke-width:1}.ext{stroke:var(--ink-faint)}.tick{stroke:var(--ink-soft);stroke-width:1.4;stroke-linecap:round}.dim-text{font-family:var(--mono);font-size:13px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.01em;fill:var(--ink)}.dim-unit{font-size:9.5px;fill:var(--ink-soft)}.dim[data-rough=true] .dim-text,.dim[data-rough=true] .dim-unit,.dim[data-rough=true] .tick{fill:var(--ink-faint);stroke:var(--ink-faint)}.dim[data-rough=true] .dim-line{stroke:var(--ink-faint);stroke-dasharray:3 3.5}.dim[data-active=true] .dim-text,.dim[data-active=true] .dim-unit,.target-core{fill:var(--laser)}.target-ring{fill:none;stroke:var(--laser);stroke-width:1.5}.target-pulse{fill:none;stroke:var(--laser);stroke-width:1.5;transform-box:fill-box;transform-origin:center;animation:pulse 1.9s var(--ease-out) infinite}@keyframes pulse{0%{transform:scale(.62);opacity:.55}70%,to{transform:scale(1.5);opacity:0}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
