@font-face{font-family:Work Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/work-sans-vietnamese-wght-normal-BKsN3ITN.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:Work Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/work-sans-latin-ext-wght-normal-B5dZ8C4S.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:Work Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/work-sans-latin-wght-normal-Bl-S9Xys.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{--gray-0: #ffffff;--gray-50: #fcfaf8;--gray-100: #f7f4f1;--gray-150: #f0ece8;--gray-200: #e7e2dd;--gray-300: #d5cfc9;--gray-400: #b8b1aa;--gray-500: #948c85;--gray-600: #736b65;--gray-700: #57514c;--gray-800: #3d3935;--gray-900: #2a2a2a;--navy-500: #3a7196;--navy-700: #0f4d71;--navy-900: #0b3a56;--navy-700-rgb: 15 77 113;--sky-50: #f5faff;--sky-100: #eef6fd;--sky-200: #dcebfa;--sky-300: #bfdaf3;--coral-500: #ff5b3a;--coral-600: #e8472a;--coral-700: #c23a21;--blush-50: #fff7f4;--blush-100: #feeeea;--blush-200: #fcdcd4;--rose-100: #fde3e4;--rose-200: #fbc6c8;--lilac-50: #fbf6fb;--lilac-100: #f3e9f3;--lilac-300: #d7bad6;--lilac-500: #b58db4;--lilac-800: #5e3f5d;--maple-50: #fdf8f1;--maple-100: #f7ecdd;--maple-200: #efdfc9;--maple-300: #e3cdb0;--maple-400: #d0b28e;--maple-600: #a88561;--maple-800: #6f5439;--steel-300: #c9ced3;--steel-500: #979fa7;--steel-700: #5d656d;--surface-app: var(--gray-100);--surface-stage: var(--gray-100);--surface-stage-bar: var(--gray-50);--surface-panel: var(--gray-0);--surface-panel-muted: var(--gray-50);--surface-raised: var(--gray-0);--surface-sunken: var(--gray-150);--surface-hover: var(--gray-50);--surface-pressed: var(--gray-150);--surface-drawing: var(--gray-0);--surface-inverse: var(--gray-900);--scrim: rgb(42 42 42 / .36);--ink-primary: var(--gray-900);--ink-secondary: var(--gray-700);--ink-tertiary: var(--gray-600);--ink-disabled: var(--gray-400);--ink-inverse: var(--gray-0);--line-subtle: var(--gray-200);--line-default: var(--gray-300);--line-strong: var(--gray-400);--accent: var(--navy-700);--accent-hover: var(--navy-900);--accent-soft: var(--sky-100);--accent-soft-hover: var(--sky-200);--accent-border: var(--sky-300);--accent-ink: var(--navy-900);--ink-on-accent: var(--gray-0);--accent-rgb: var(--navy-700-rgb);--accent-tint: rgb(var(--accent-rgb) / .08);--accent-tint-strong: rgb(var(--accent-rgb) / .16);--accent-ring: rgb(var(--accent-rgb) / .18);--focus-ring: var(--navy-500);--cta: var(--coral-500);--cta-hover: var(--coral-600);--ink-on-cta: var(--gray-0);--cta-soft: var(--blush-100);--note-bg: var(--lilac-100);--note-border: var(--lilac-300);--note-strong: var(--lilac-500);--note-ink: var(--lilac-800);--note-soft: var(--lilac-50);--danger: var(--coral-600);--danger-hover: var(--coral-700);--danger-soft: var(--rose-100);--danger-border: var(--rose-200);--danger-ink: var(--coral-700);--success: var(--navy-500);--success-soft: var(--sky-100);--highlight: var(--coral-500);--highlight-soft: var(--blush-50);--highlight-border: var(--blush-200);--measure: var(--coral-600);--measure-ink: var(--gray-0);--piece-fill: var(--maple-100);--piece-wall: var(--maple-200);--piece-drawer: var(--maple-50);--piece-stroke: var(--maple-600);--piece-stroke-width: 1px;--piece-knob: var(--steel-700);--piece-bar: var(--maple-600);--piece-bar-shine: var(--maple-400);--piece-selected: var(--sky-200);--piece-selected-stroke: var(--navy-700);--piece-face-top: var(--maple-50);--piece-face-front: var(--maple-200);--piece-face-side: var(--maple-300);--piece-face-bottom: var(--maple-400);--piece-grain: var(--maple-800);--room-plane: var(--gray-150);--room-floor: var(--gray-200);--room-line: var(--gray-300);--canvas-border: var(--gray-400);--canvas-border-width: 1px;--space-0: 0;--space-1: 2px;--space-2: 4px;--space-3: 6px;--space-4: 8px;--space-5: 12px;--space-6: 16px;--space-7: 20px;--space-8: 24px;--space-9: 32px;--space-10: 48px;--radius-xs: 3px;--radius-sm: 7px;--radius-md: 9px;--radius-lg: 12px;--radius-xl: 18px;--radius-pill: 999px;--font-sans: "Work Sans Variable", "Work Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--text-2xs: 10px;--text-xs: 11px;--text-sm: 12px;--text-md: 13px;--text-lg: 15px;--text-xl: 18px;--text-2xl: 24px;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.2;--leading-normal: 1.45;--tracking-caps: .06em;--shadow-xs: 0 1px 2px rgb(42 42 42 / .08);--shadow-sm: 0 2px 6px rgb(42 42 42 / .1);--shadow-md: 0 6px 16px rgb(42 42 42 / .14);--shadow-lg: 0 12px 28px rgb(42 42 42 / .16);--shadow-sheet: 0 -6px 18px rgb(42 42 42 / .07);--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-emphasized: cubic-bezier(.7, 0, .3, 1);--duration-fast: .12s;--duration-base: .18s;--duration-slow: .28s;--z-canvas: 1;--z-hud: 20;--z-panel: 30;--z-overlay: 40;--z-popover: 50;--z-toast: 60;--z-tooltip: 100;--control-sm: 26px;--control-md: 32px;--control-lg: 38px;--touch-target: 44px;--switch-width: 40px;--switch-height: 24px;--segment-height: calc(var(--control-md) - 6px);--tap-min-width: 0px;--topbar-height: 60px;--panel-width: 344px;--palette-tile: 84px;--sheet-max-height: 62vh;--dock-rest-height: 196px;--modal-pad-top: var(--space-10);--modal-pad-x: var(--space-10);--modal-pad-bottom: var(--space-10)}@media (max-width: 767px),(hover: none) and (pointer: coarse){:root{--control-sm: var(--touch-target);--control-md: var(--touch-target);--control-lg: 48px;--segment-height: var(--touch-target);--tap-min-width: var(--touch-target);--switch-width: 52px;--switch-height: 32px;--text-md: 14px;--topbar-height: auto;--palette-tile: 56px}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--ink-primary);background:var(--surface-app);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}[hidden]{display:none!important}.caps{font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--ink-tertiary)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}:root{--toast-offset: var(--space-8)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);min-width:var(--tap-min-width);height:var(--control-md);padding:0 var(--space-5);border:1px solid var(--line-subtle);border-radius:var(--radius-md);background:var(--surface-raised);color:var(--ink-primary);font-size:var(--text-md);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;touch-action:manipulation;transition:background var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}.btn:hover:not(:disabled){background:var(--surface-hover)}.btn:active:not(:disabled){background:var(--surface-pressed)}.btn:disabled{color:var(--ink-disabled);background:var(--surface-sunken);border-color:transparent}.btn--sm{height:var(--control-sm);padding:0 var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm)}.btn--icon{width:var(--control-md);padding:0;font-size:var(--text-lg)}.btn svg{flex:none;width:18px;height:18px}.btn--sm.btn--icon{width:var(--control-sm)}.btn--block{width:100%}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--ink-on-accent)}.btn--primary:hover:not(:disabled),.btn--primary:active:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn--cta{background:var(--cta);border-color:var(--cta);color:var(--ink-on-cta)}.btn--cta:hover:not(:disabled),.btn--cta:active:not(:disabled){background:var(--cta-hover);border-color:var(--cta-hover)}.btn--ghost{background:transparent;border-color:transparent;color:var(--ink-secondary)}.btn--ghost:hover:not(:disabled){color:var(--ink-primary)}.btn--danger{color:var(--danger)}.btn--danger:hover:not(:disabled),.btn--danger:active:not(:disabled){background:var(--danger-soft);border-color:var(--danger-soft);color:var(--danger-ink)}.btn.is-active,.btn.is-active:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}.close-x{display:grid;place-items:center;flex:none;width:var(--touch-target);height:var(--touch-target);padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-disabled);line-height:1;touch-action:manipulation}.close-x svg{width:22px;height:22px}.close-x:hover,.close-x:active{background:var(--surface-hover);color:var(--ink-tertiary)}.stepper{display:inline-flex;align-self:flex-start;align-items:stretch;height:calc(var(--control-md) + 2px);border:1px solid var(--line-subtle);border-radius:var(--radius-md);background:var(--surface-raised);overflow:hidden}.stepper__btn{display:grid;place-items:center;width:var(--control-md);padding:0;border:0;background:transparent;color:var(--ink-secondary);font-size:var(--text-lg);line-height:1;-webkit-user-select:none;user-select:none;touch-action:manipulation}.stepper__btn:hover:not(:disabled){background:var(--surface-hover);color:var(--ink-primary)}.stepper__btn:active:not(:disabled){background:var(--surface-pressed)}.stepper__btn:disabled,.stepper__btn.is-capped{color:var(--ink-disabled)}.stepper__btn.is-capped{cursor:not-allowed}.stepper__value--edit{border-top:0;border-bottom:0;background:transparent;color:var(--ink-primary);cursor:text}.stepper__value--edit:hover{background:var(--surface-hover)}.stepper__input{width:0;flex:1;border-top:0;border-bottom:0;outline:none;background:var(--accent-soft);text-align:center}.stepper:has(.stepper__input){border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.stepper--block{display:flex;align-self:stretch;width:100%}.stepper--block .stepper__value{flex:1;min-width:0}.stepper__value{display:grid;place-items:center;min-width:60px;padding:0 var(--space-3);border-inline:1px solid var(--line-subtle);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.switch{display:inline-flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:var(--control-md);padding:0;border:0;background:transparent;font-size:var(--text-sm);text-align:left;touch-action:manipulation}.switch__track{flex:none;width:var(--switch-width);height:var(--switch-height);padding:3px;border-radius:var(--radius-pill);background:var(--line-default);transition:background var(--duration-base) var(--ease-standard)}.switch__knob{display:block;width:calc(var(--switch-height) - 6px);height:calc(var(--switch-height) - 6px);border-radius:var(--radius-pill);background:var(--surface-raised);box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-standard)}.switch[aria-checked=true] .switch__track{background:var(--accent)}.switch[aria-checked=true] .switch__knob{transform:translate(calc(var(--switch-width) - var(--switch-height)))}.segmented{--segmented-pad: 3px;display:inline-flex;gap:2px;padding:var(--segmented-pad);border-radius:var(--radius-lg);background:var(--surface-sunken)}.segmented--block{display:flex}.segmented--block .segmented__opt{flex:1}.segmented__opt{min-width:var(--tap-min-width);height:var(--segment-height);padding:0 var(--space-5);border:0;border-radius:calc(var(--radius-lg) - var(--segmented-pad));background:transparent;color:var(--ink-secondary);font-size:var(--text-sm);font-weight:var(--weight-semibold);white-space:nowrap;touch-action:manipulation;transition:background var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}.segmented__opt:hover{color:var(--ink-primary)}.segmented__opt[aria-checked=true]{background:var(--surface-raised);color:var(--ink-primary);box-shadow:var(--shadow-xs)}.tabs{display:flex;gap:var(--space-6);border-bottom:1px solid var(--line-subtle)}.tabs__tab{padding:var(--space-2) 1px var(--space-2);margin-bottom:-1px;border:0;border-bottom:2px solid transparent;background:none;color:var(--ink-tertiary);font-size:var(--text-sm);font-weight:var(--weight-semibold);touch-action:manipulation}.tabs__tab:hover{color:var(--ink-secondary)}.count-label{display:inline-flex;align-items:center;gap:var(--space-3)}.count-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--ink-secondary);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1}[aria-selected=true]>.count-label .count-badge{background:var(--ink-primary);color:var(--surface-raised)}.tabs__tab[aria-selected=true]{color:var(--ink-primary);border-bottom-color:var(--ink-primary)}.popover{position:fixed;z-index:var(--z-popover);min-width:220px;max-width:calc(100vw - 16px);max-height:calc(100vh - 80px);overflow:auto;padding:var(--space-5);border:1px solid var(--line-subtle);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-lg);animation:pop-in var(--duration-base) var(--ease-standard)}.overlay__title{margin-bottom:var(--space-5)}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);background:var(--scrim);animation:fade-in var(--duration-base) var(--ease-standard)}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-popover);display:flex;flex-direction:column;max-height:var(--sheet-max-height);padding-bottom:env(safe-area-inset-bottom);border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:var(--surface-raised);box-shadow:var(--shadow-lg);transition:transform var(--duration-base) var(--ease-standard);animation:sheet-in var(--duration-slow) var(--ease-standard)}.sheet__top{display:flex;flex-direction:column;flex:none;cursor:grab;touch-action:none}.sheet__top .sheet__grip{align-self:center;margin-top:var(--space-4)}.sheet__grip{width:36px;height:4px;border-radius:var(--radius-pill);background:var(--line-default)}.sheet__head{display:flex;align-items:center;justify-content:space-between;flex:none;margin-top:calc(-1 * var(--space-3));padding:0 var(--space-2) var(--space-2) var(--space-6)}.sheet__body{overflow:auto;padding:0 var(--space-6) var(--space-6)}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);display:grid;place-items:center;padding:var(--space-8);background:var(--scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in var(--duration-base) var(--ease-standard)}.modal{position:relative;display:flex;flex-direction:column;width:min(820px,100%);max-height:calc(100dvh - 2 * var(--space-8));overflow:hidden;border-radius:var(--radius-xl);background:var(--surface-raised);box-shadow:var(--shadow-lg);animation:pop-in var(--duration-base) var(--ease-standard)}.modal__close{position:absolute;top:var(--space-5);right:var(--space-5);z-index:2}.modal__body{--modal-pad-top: var(--space-10);--modal-pad-x: var(--space-10);--modal-pad-bottom: var(--space-10);flex:1;min-height:0;overflow:auto;padding:var(--modal-pad-top) var(--modal-pad-x) var(--modal-pad-bottom)}@media (max-width: 767px),(hover: none) and (pointer: coarse){.modal-scrim{place-items:stretch;padding:0}.modal{width:100%;height:100dvh;max-height:none;border-radius:0}.modal__body{--modal-pad-top: calc(var(--space-9) + env(safe-area-inset-top));--modal-pad-x: var(--space-6);--modal-pad-bottom: calc(var(--space-8) + env(safe-area-inset-bottom))}.modal__close{top:calc(var(--space-3) + env(safe-area-inset-top));right:var(--space-3)}}.tooltip{position:fixed;z-index:var(--z-tooltip);max-width:240px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--surface-inverse);color:var(--ink-inverse);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.35;text-align:center;pointer-events:none;box-shadow:var(--shadow-md);transform:translate(-50%,calc(-100% - 8px));animation:fade-in var(--duration-fast) var(--ease-standard)}.tooltip--below{transform:translate(-50%,8px)}.toast{position:fixed;left:50%;bottom:var(--toast-offset);z-index:var(--z-toast);display:flex;align-items:center;gap:var(--space-4);max-width:calc(100vw - var(--space-8));padding:var(--space-3) var(--space-3) var(--space-3) var(--space-6);border-radius:var(--radius-pill);background:var(--surface-inverse);color:var(--ink-inverse);font-size:var(--text-sm);box-shadow:var(--shadow-lg);transform:translate(-50%);animation:toast-in var(--duration-slow) var(--ease-standard)}.toast__dot{flex:none;width:8px;height:8px;border-radius:var(--radius-pill)}.toast--success .toast__dot{background:var(--success)}.toast--danger .toast__dot{background:var(--danger)}.toast__close{display:grid;place-items:center;flex:none;width:var(--control-sm);height:var(--control-sm);padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:inherit;opacity:.7}.toast__close:hover{opacity:1}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}@media (prefers-reduced-motion: reduce){.popover,.sheet,.sheet-scrim,.tooltip,.toast{animation:none}}.shell{display:grid;height:100%;background:var(--surface-app)}.shell--desktop{grid-template-columns:minmax(0,1fr) var(--panel-width);grid-template-rows:var(--topbar-height) minmax(0,1fr);grid-template-areas:"top top" "stage panel"}.shell--mobile{position:relative;height:100dvh;background:var(--surface-stage);grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) var(--dock-rest-height);grid-template-areas:"top" "stage" "dock"}.stage{grid-area:stage;position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;background:var(--surface-stage)}.stage__canvas{position:relative;flex:1;min-height:0;touch-action:pan-x pan-y}.stage__fit{position:absolute;inset:var(--space-9) var(--space-8) var(--space-6);display:flex;overflow:hidden}.stage__fit.is-zoomed{overflow:auto}.stage__content{margin:auto;flex:none}.shell--mobile .stage__fit{inset:var(--space-8) var(--space-5) var(--space-10)}.stage__placeholder{display:grid;place-items:center;border:var(--canvas-border-width) solid var(--canvas-border);box-shadow:none;background:var(--surface-drawing);color:var(--ink-tertiary);font-size:var(--text-sm)}.status{position:absolute;top:var(--space-5);left:var(--space-6);z-index:var(--z-hud);display:flex;align-items:center;gap:var(--space-3);max-width:calc(100% - var(--space-9));min-height:var(--control-md);padding:0 var(--space-3) 0 var(--space-5);border:1px solid var(--accent-border);border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent-ink);font-size:var(--text-sm);white-space:nowrap;box-shadow:var(--shadow-xs);animation:fade-in var(--duration-base) var(--ease-standard)}.status__verb{font-weight:var(--weight-regular)}.status__verb b{font-weight:var(--weight-semibold)}.status__hint{overflow:hidden;text-overflow:ellipsis;padding-right:var(--space-3);color:var(--accent)}.status__done{display:grid;place-items:center;min-width:var(--tap-min-width);height:calc(var(--control-md) - 8px);padding:0;border:0;border-radius:var(--radius-sm);background:var(--accent);color:var(--ink-on-accent);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.stage-bar{flex:none;display:flex;align-items:center;gap:var(--space-5);padding:var(--space-4) var(--space-6) var(--space-4);border-top:1px solid var(--line-subtle);background:var(--surface-stage-bar)}.zoom{flex:none;display:flex;align-items:center;gap:var(--space-1);padding:3px;border:1px solid var(--line-subtle);border-radius:var(--radius-pill);background:var(--surface-raised)}.zoom__btn{display:grid;place-items:center;width:24px;height:24px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-secondary);font-size:var(--text-lg);line-height:1}.zoom__btn:hover:not(:disabled){background:var(--surface-hover)}.zoom__btn:disabled{color:var(--ink-disabled)}.zoom__value{min-width:44px;height:24px;padding:0 var(--space-2);border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-primary);font-size:var(--text-xs);font-weight:var(--weight-semibold)}.zoom__value:hover{background:var(--surface-hover)}.stage-bar__hint{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);min-width:0;color:var(--ink-tertiary);font-size:var(--text-xs);line-height:1.35}.stage-bar__hint strong{color:var(--ink-secondary);font-weight:var(--weight-semibold)}.stage-bar__sep{color:var(--line-default)}.panel{grid-area:panel;display:flex;flex-direction:column;min-height:0;overflow:auto;border-left:1px solid var(--line-subtle);background:var(--surface-panel)}.panel__section{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5) var(--space-6)}.panel__section+.panel__section{border-top:1px solid var(--line-subtle)}.dock{grid-area:dock;z-index:var(--z-panel);display:flex;flex-direction:column;gap:var(--space-3);max-height:58dvh;padding:var(--space-3) var(--space-6) calc(var(--space-5) + env(safe-area-inset-bottom));border-top:1px solid var(--line-subtle);border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:var(--surface-panel);box-shadow:var(--shadow-sheet)}.shell--mobile .dock{position:absolute;left:0;right:0;bottom:0}.topbar{grid-area:top;z-index:var(--z-panel);display:flex;align-items:center;gap:var(--space-6);min-width:0;padding:0 var(--space-6);border-bottom:1px solid var(--line-subtle);background:var(--surface-panel)}.topbar__spacer{flex:1}.topbar--mobile{flex-direction:column;align-items:stretch;gap:var(--space-4);padding:calc(var(--space-3) + env(safe-area-inset-top)) var(--space-5) var(--space-4)}.topbar__row{display:flex;align-items:center;gap:var(--space-3);min-width:0}.topbar__row .view-switch{flex:1}.topbar--mobile .topbar__row+.topbar__row{margin-top:var(--space-3)}.brand{flex:none;display:block;width:auto;height:40px}.topbar:not(.topbar--mobile) .brand{height:50px}.topbar{--topbar-control: calc(var(--control-md) + 4px)}.topbar--mobile{--topbar-control: var(--touch-target)}.topbar:not(.topbar--mobile) .btn{height:var(--topbar-control);font-size:var(--text-lg)}.topbar:not(.topbar--mobile) .btn--cta{padding:0 var(--space-7)}.topbar__divider{flex:none;width:1px;height:28px;background:var(--line-default)}.topbar:not(.topbar--mobile) .view-switch .segmented__opt{font-size:var(--text-md)}.topbar .view-switch{--segmented-pad: 4px;border-radius:var(--radius-md)}.topbar .view-switch .segmented__opt{height:calc(var(--topbar-control) - 2 * var(--segmented-pad));border-radius:calc(var(--radius-md) - var(--segmented-pad))}.fill-dot{flex:none;width:36px;height:36px;margin-left:calc(-1 * var(--space-3));padding:0;border:1px solid var(--line-default);border-radius:var(--radius-pill);box-shadow:inset 0 0 0 2px var(--surface-raised);cursor:pointer}.fill-dot:hover,.fill-dot.is-open{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--surface-raised),0 0 0 3px var(--accent-ring)}.topbar>.brand+.closet-chip{margin-left:calc(-1 * var(--space-2))}.closet-chip{display:flex;align-items:center;gap:var(--space-4);min-width:0;height:36px;padding:0 var(--space-4) 0 var(--space-5);border:1px solid var(--line-subtle);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--ink-primary);white-space:nowrap;touch-action:manipulation;transition:background var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard)}.closet-chip:hover,.closet-chip.is-open{border-color:var(--line-default);background:var(--surface-hover)}.topbar--mobile .closet-chip{height:var(--touch-target);padding:0 var(--space-4);border-radius:var(--radius-lg)}.closet-chip__size{font-size:var(--text-md);font-weight:var(--weight-semibold)}.closet-chip__caret{flex:none;color:var(--ink-secondary)}.view-switch .segmented__opt{padding:0 var(--space-6)}.topbar--mobile .view-switch .segmented__opt{font-size:var(--text-md)}.closet-menu{display:flex;flex-direction:column;gap:var(--space-5)}.menu-heading{color:var(--ink-primary);font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}.menu-divider{height:1px;background:var(--line-subtle)}.settings{display:flex;flex-direction:column;gap:var(--space-6)}.settings__head{display:flex;align-items:center;justify-content:space-between}.unit-switch{border-radius:var(--radius-pill)}.unit-switch .segmented__opt{height:calc(var(--segment-height) - 4px);border-radius:var(--radius-pill)}.size-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}.size-field{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.size-field__label{color:var(--ink-primary);font-size:var(--text-sm)}.size-field .stepper__btn{width:24px}.size-field .stepper__value{padding:0;font-size:var(--text-sm)}@media (max-width: 767px),(hover: none) and (pointer: coarse){.size-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.size-field{flex-direction:row;align-items:center;justify-content:space-between}.size-field__label{font-size:var(--text-sm)}.size-field .stepper{width:170px;flex:none}.size-field .stepper__btn{width:var(--touch-target)}}.settings__switch{width:100%}.bg-picker{display:flex;flex-direction:column;gap:var(--space-4)}.swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-3)}.swatch{display:grid;place-items:center;height:32px;padding:0;border:1px solid var(--line-subtle);border-radius:var(--radius-sm);touch-action:manipulation}.swatch[aria-checked=true]{outline:2px solid var(--accent);outline-offset:2px}.swatch__check{display:grid;place-items:center;width:16px;height:16px;border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--accent);font-size:9px;font-weight:var(--weight-bold);box-shadow:var(--shadow-xs)}.swatch--custom{position:relative;overflow:hidden;background:conic-gradient(#f47b7b,#f4f47b,#85e085,#7dd6e8,#9797ed,#e79de7,#f47b7b);cursor:pointer}.swatch__plus{display:grid;place-items:center;width:18px;height:18px;border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--ink-primary);font-size:var(--text-sm);font-weight:var(--weight-semibold);line-height:1;box-shadow:var(--shadow-xs)}.swatch-slot{position:relative;display:grid}.swatch-slot__native{position:absolute;left:0;bottom:0;width:100%;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.field{flex:none;min-width:0;height:var(--control-md);padding:0 var(--space-4);border:1px solid var(--line-default);border-radius:var(--radius-sm);background:var(--surface-raised);font-size:var(--text-sm)}.field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.export-menu{display:flex;flex-direction:column;gap:var(--space-4)}.export-menu__head{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-1)}.export-menu__title{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.export-card{display:flex;align-items:center;gap:var(--space-5);width:100%;min-height:52px;padding:var(--space-4) var(--space-5);border:1px solid var(--line-subtle);border-radius:var(--radius-md);background:var(--surface-raised);text-align:left;touch-action:manipulation;transition:background var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard)}.export-card:hover{border-color:var(--line-default);background:var(--surface-hover)}.export-card.is-primary{border:1.5px solid var(--accent);background:var(--accent-soft)}.export-card.is-primary:hover{background:var(--accent-soft-hover)}.export-card__text{display:flex;flex-direction:column;gap:2px;min-width:0}.export-card__title{font-size:var(--text-sm);font-weight:var(--weight-semibold)}.export-card__note{color:var(--ink-tertiary);font-size:var(--text-2xs)}.thumb{position:relative;flex:none;width:40px;height:32px;overflow:hidden;border:1px solid var(--line-strong);border-radius:var(--radius-xs);background:var(--surface-drawing)}.thumb span{position:absolute}.thumb__frame{left:3px;top:3px;bottom:3px;width:18px;border:1px solid var(--ink-tertiary)}.thumb__line{left:25px;right:3px;height:1.5px;background:var(--line-strong)}.thumb__line--1{top:6px;background:var(--ink-tertiary)}.thumb__line--2{top:12px}.thumb__line--3{top:18px;right:7px}.thumb--image{background:var(--piece-drawer)}.thumb__divider{left:18px;top:2px;bottom:2px;width:2px;background:var(--piece-stroke)}.thumb__shelf{height:2px;background:var(--piece-stroke)}.thumb__shelf--1{left:2px;width:16px;top:9px}.thumb__shelf--2{left:20px;right:2px;top:13px}.thumb__shelf--3{left:2px;width:16px;top:21px}.thumb--layout{display:grid;place-items:center;border-color:var(--accent);background:var(--accent-soft)}.thumb--svg{display:grid;place-items:center}.thumb__glyph--text{color:var(--ink-secondary)!important;font-size:var(--text-2xs)!important;letter-spacing:.04em}.thumb__glyph{position:static!important;color:var(--accent);font-size:var(--text-lg);font-weight:var(--weight-semibold)}.open-file{display:flex;align-items:center;justify-content:center;height:var(--control-md);border:1px dashed var(--line-default);border-radius:var(--radius-sm);background:var(--surface-raised);color:var(--ink-primary);font-size:var(--text-xs);font-weight:var(--weight-semibold);touch-action:manipulation}.open-file:hover{border-color:var(--accent);background:var(--surface-hover)}.export-menu__switches{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--line-subtle)}.export-menu__switches .switch{width:100%}.palette{display:grid;gap:var(--space-3)}.palette--grid{grid-template-columns:repeat(3,minmax(0,1fr))}.palette--dock{grid-template-columns:repeat(4,minmax(0,1fr))}.tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:var(--palette-tile);padding:var(--space-4) var(--space-2) var(--space-3);border:1px solid var(--line-subtle);border-radius:var(--radius-lg);background:var(--surface-raised);color:var(--ink-primary);-webkit-user-select:none;user-select:none;touch-action:manipulation;transition:background var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard)}.tile:hover{border-color:var(--accent-border);background:var(--accent-soft)}.tile.is-armed,.tile.is-armed:hover{border:1.5px solid var(--accent);background:var(--accent-soft);color:var(--accent-ink);box-shadow:0 0 0 3px var(--accent-ring)}.tile__art{display:grid;place-items:center;width:42px;height:30px;border:1px solid var(--line-subtle);border-radius:var(--radius-sm);background:var(--surface-panel-muted);color:var(--ink-tertiary)}.tile--select .tile__art{border-color:transparent;background:transparent;color:var(--ink-primary)}.tile.is-armed .tile__art{color:var(--accent)}.tile__name{font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1.15;text-align:center}.tile__key{color:var(--ink-disabled);font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1}.palette--dock .tile{gap:3px;padding:var(--space-2);border-radius:var(--radius-md);background:var(--surface-panel-muted)}.palette--dock .tile__art{width:auto;height:22px;border:0;background:transparent}.palette--dock .tile__name{font-size:var(--text-xs)}.palette--dock .glyph{transform:scale(1.15)}.palette--dock .tile__key{display:none}.glyph{position:relative;flex:none;width:26px;height:16px}.glyph:before,.glyph:after{content:"";position:absolute;box-sizing:border-box}.glyph--select:before{left:8px;top:0;width:11px;height:16px;background:currentColor;clip-path:polygon(0 0,100% 62%,58% 66%,80% 100%,62% 100%,40% 70%,0 92%)}.glyph--wall:before{left:11px;top:0;width:4px;height:16px;background:currentColor}.glyph--shelf:before{left:1px;top:6.5px;width:24px;height:3px;background:currentColor}.glyph--stack:before{left:1px;top:1px;width:24px;height:3px;background:currentColor;box-shadow:0 6px 0 currentColor,0 12px 0 currentColor}.glyph--drawer:before{left:3px;top:1px;width:20px;height:14px;border:2px solid currentColor;border-radius:2px}.glyph--drawer:after{left:10px;top:7px;width:6px;height:2px;border-radius:1px;background:currentColor}.glyph--bar:before{left:1px;top:6.5px;width:24px;height:3px;border-radius:var(--radius-pill);background:currentColor}.glyph--label:before{left:2px;top:2px;width:22px;height:12px;border:1.5px solid var(--note-strong);border-radius:3px;background:var(--note-bg)}.glyph--measure:before{left:1px;top:7px;width:24px;height:2px;background:currentColor}.glyph--measure:after{left:1px;top:3px;width:24px;height:10px;border-left:2px solid currentColor;border-right:2px solid currentColor}.panel__top{position:sticky;top:0;z-index:1;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4) var(--space-6) 0;border-bottom:1px solid var(--line-subtle);background:var(--surface-panel)}.panel__top .tabs{margin-top:var(--space-3);margin-bottom:-1px;border-bottom:0}.panel__top .tabs__tab{font-size:var(--text-lg)}.panel__top+.panel__section{padding-top:var(--space-7)}.undo-redo{display:flex;gap:var(--space-3)}.panel .undo-redo .btn{flex:1}.panel__hint{color:var(--ink-tertiary);font-size:var(--text-xs);line-height:1.4}.panel__empty{border-top:1px solid var(--line-subtle)}.panel__note{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-xs);line-height:1.4}.panel__note--warn{border:1px solid var(--highlight-border);background:var(--highlight-soft);color:var(--ink-secondary)}.panel__note-icon{flex:none;display:grid;place-items:center;width:16px;height:16px;border-radius:var(--radius-pill);background:var(--highlight);color:var(--ink-on-cta);font-size:var(--text-2xs);font-weight:var(--weight-bold)}.panel>.selected{flex:1}.selected{gap:var(--space-4);border-top:1px solid var(--line-subtle);background:var(--surface-panel-muted)}.selected>.selected__head,.selected>.selected__name{margin-bottom:var(--space-3)}.selected__head{display:flex;flex-direction:column;gap:var(--space-1)}.selected__name{font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}.prop{display:flex;flex-direction:column;gap:var(--space-3)}.prop__label{color:var(--ink-primary);font-size:var(--text-sm)}.prop__action{padding:0;border:0;background:transparent;color:inherit;font:inherit}.prop__action:hover:not(:disabled){text-decoration:underline}.prop__action:disabled{color:var(--ink-disabled)}.prop__row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3)}.prop__row .stepper{align-self:center}.prop__row .btn--sm{height:calc(var(--control-md) + 2px);margin-left:var(--space-4)}.stepper--static{width:calc(2 * var(--control-md) + 62px);background:var(--surface-sunken)}.stepper--static .stepper__value{flex:1;border-inline:0;color:var(--ink-secondary)}.selected--label{gap:var(--space-4);background:var(--note-soft)}.selected--label__caps{color:var(--note-ink)}.field--note{border-color:var(--note-border);font-weight:var(--weight-semibold)}.field--note:focus{border-color:var(--note-strong);box-shadow:0 0 0 3px var(--note-border)}.selected--label .prop__label,.selected--label .panel__hint{color:var(--note-ink)}.pointer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}.pointer-grid__opt{height:var(--control-md);border:1px solid var(--note-border);border-radius:var(--radius-sm);background:var(--surface-raised);color:var(--note-ink);font-size:var(--text-md);font-weight:var(--weight-semibold);touch-action:manipulation}.pointer-grid__opt:hover{background:var(--note-soft)}.pointer-grid__opt[aria-checked=true]{border-color:var(--note-strong);background:var(--note-bg);box-shadow:0 0 0 2px var(--note-border)}.labels-row-wrap{padding:0 var(--space-6) var(--space-4)}.menu-stack .labels-row-wrap,.dock .labels-row-wrap{padding:0}.labels-switch{width:100%}.materials__head{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-4);margin-bottom:var(--space-3)}.materials__units{color:var(--ink-secondary);font-size:var(--text-sm)}.items{display:flex;flex-direction:column;gap:var(--space-1);margin:0;padding:0;list-style:none}.item{display:flex;align-items:center;gap:var(--space-4);width:100%;min-height:var(--control-lg);padding:var(--space-3) var(--space-4);border:0;border-radius:var(--radius-sm);background:transparent;font-size:var(--text-sm);text-align:left;touch-action:manipulation}.item:hover{background:var(--surface-hover)}.item.is-on,.item.is-on:hover{background:var(--accent-soft);color:var(--accent-ink)}.item .glyph{color:var(--ink-tertiary);transform:scale(.8)}.item.is-on .glyph{color:var(--accent)}.item__name{min-width:86px;font-weight:var(--weight-semibold);white-space:nowrap}.item__dim{margin-left:auto;color:var(--ink-tertiary);font-size:var(--text-xs);white-space:nowrap}.dock__grip{flex:none;align-self:center;width:36px;height:4px;border-radius:var(--radius-pill);background:var(--line-default)}.dock__close{position:absolute;top:var(--space-2);right:var(--space-2);z-index:1}.dock__handle{flex:none;display:grid;place-items:center;height:var(--space-6);margin:calc(-1 * var(--space-3)) calc(-1 * var(--space-6)) 0;cursor:grab;touch-action:none}.dock:not(.dock--selection)>.tabs{margin-right:var(--touch-target)}.dock--closed{flex-direction:row;align-items:center;padding:var(--space-3) var(--space-6) calc(var(--space-3) + env(safe-area-inset-bottom))}.dock--closed .zoom__btn,.dock--closed .zoom__value{height:var(--touch-target)}.dock--closed .zoom__btn{width:var(--touch-target)}.dock--closed .zoom__value{font-size:var(--text-sm)}.dock__list{flex:1;min-height:0;overflow:auto}.dock--materials{height:var(--dock-rest-height)}.dock__scroll{flex:1;min-height:0;margin:0 calc(-1 * var(--space-6));overflow:auto}.dock__scroll .panel__section{border-top:0;background:transparent;padding-top:var(--space-4)}.dock__scroll .selected--label .prop{flex-direction:column;align-items:stretch}.dock .labels-switch .switch__label{font-size:var(--text-md)}.dock--selection{height:min(380px,62dvh)}.dock__scroll .prop{flex-direction:row;align-items:center;justify-content:space-between;gap:var(--space-4)}.dock__scroll .prop__label{font-size:var(--text-md)}.dock__scroll .prop__row{flex:none;flex-wrap:nowrap}.dock__scroll .prop__row .stepper__value{min-width:48px;font-size:var(--text-lg)}.dock__scroll .stepper--static{width:calc(2 * var(--control-md) + 50px)}.dock__scroll .prop__row .btn--sm{width:92px;padding:0}.dock__scroll .prop__row:not(:has(.btn)):after{content:"";flex:none;width:92px;margin-left:var(--space-4)}.dock__scroll .panel__hint{display:none}.dock__actions{flex:none}.sel-actions--block{display:flex;gap:var(--space-6)}.sel-actions--block .btn{flex:1}.btn--danger-soft{border-color:var(--danger-border);background:var(--danger-soft)}.dock>.tabs{margin-bottom:var(--space-6)}.dock>.tabs .tabs__tab{font-size:var(--text-lg)}.surface{position:relative;flex:none;border:var(--canvas-border-width) solid var(--canvas-border);box-shadow:none;touch-action:none;user-select:none;-webkit-user-select:none}.surface.is-armed{cursor:crosshair}.piece{position:absolute;z-index:2;border:var(--piece-stroke-width) solid var(--piece-stroke);border-radius:1px;background:linear-gradient(var(--piece-face-top),var(--piece-fill))}.piece:before{content:"";position:absolute;top:-6px;right:-1px;bottom:-6px;left:-1px}.piece--wall{background:linear-gradient(90deg,var(--piece-fill),var(--piece-wall) 50%,var(--piece-fill))}.piece--wall:before{top:-1px;right:-6px;bottom:-1px;left:-6px}.piece--drawer{border-radius:var(--radius-xs);background:var(--piece-drawer);box-shadow:inset 0 0 0 3px var(--piece-drawer),inset 0 0 0 4px var(--piece-fill)}.piece--drawer:before{content:none}.piece--bar{border:0;border-radius:var(--radius-pill);background:linear-gradient(var(--piece-bar-shine),var(--piece-bar) 60%)}.piece--bar:after{content:"";position:absolute;top:-3px;right:0;bottom:-3px;left:0;border-inline:3px solid var(--piece-knob);border-radius:1px;pointer-events:none}.piece__knob{position:absolute;left:50%;top:50%;width:clamp(12px,16%,34px);height:clamp(3px,9%,6px);border-radius:var(--radius-pill);background:var(--piece-knob);transform:translate(-50%,-50%);pointer-events:none}.surface.is-tool-measure,.is-tool-measure .piece{cursor:crosshair}.is-armed .piece{cursor:inherit}.piece.is-hover{border-color:var(--accent)}.piece.is-selected{border-color:var(--piece-selected-stroke);background:var(--piece-selected)}.piece--drawer.is-selected{box-shadow:inset 0 0 0 3px var(--piece-selected),inset 0 0 0 4px var(--accent-border)}.piece--bar.is-selected{background:var(--accent)}.sel-frame{position:absolute;z-index:3;outline:2px solid var(--accent);outline-offset:1px;box-shadow:0 0 0 5px var(--accent-ring);pointer-events:none}.ghost{position:absolute;z-index:3;border:1.5px dashed var(--accent);background:var(--accent-tint);pointer-events:none}.span-line{position:absolute;z-index:6;display:flex;align-items:center;gap:var(--space-3);pointer-events:none}.span-line--v{flex-direction:column}.span-line__tick{flex:none;width:1px;height:9px;background:var(--accent)}.span-line--v .span-line__tick{width:9px;height:1px}.span-line__rule{flex:1;min-width:4px;min-height:4px;background:var(--accent)}.span-line--h .span-line__rule{height:1px;min-height:0}.span-line--v .span-line__rule{width:1px;min-width:0}.span-line__pill,.chip-accent{flex:none;padding:3px 7px;border-radius:var(--radius-xs);background:var(--accent);color:var(--ink-on-accent);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap}.cell{position:absolute;z-index:1;display:grid;place-items:center;pointer-events:none;box-shadow:inset 0 0 0 1px transparent;transition:background-color var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard)}.cell.is-hot{background:var(--accent-tint);box-shadow:inset 0 0 0 1px var(--accent)}.cell__zone{display:grid;place-items:center;width:calc(100% - 2 * var(--space-4));height:calc(100% - 2 * var(--space-4));pointer-events:auto;cursor:pointer}.cell__menu{z-index:6;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(3px) scale(.96);transition:opacity var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard),visibility 0s linear var(--duration-fast);display:flex;align-items:center;gap:var(--space-1);padding:3px;border:1px solid var(--line-default);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-md);white-space:nowrap}.cell.is-hot .cell__menu{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition-delay:0s}@media (prefers-reduced-motion: reduce){.cell,.cell__menu{transition:none}}.cell__add{display:flex;align-items:center;gap:var(--space-2);min-width:var(--tap-min-width);height:var(--control-sm);padding:0 var(--space-3);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink-primary);font-size:var(--text-xs);font-weight:var(--weight-semibold)}.cell__add:hover{background:var(--surface-hover)}.cell__add .glyph{margin:0 -4px;color:var(--ink-tertiary);transform:scale(.7)}.preview{position:absolute;z-index:4;border:1.5px dashed var(--accent);background:var(--accent-tint-strong);pointer-events:none}.preview--bar{border-radius:var(--radius-pill)}.preview--label{border-color:var(--note-strong);background:var(--note-bg)}.preview__size{position:absolute;z-index:6;padding:3px 7px;border-radius:var(--radius-xs);background:var(--accent);color:var(--ink-on-accent);font-size:var(--text-2xs);font-weight:var(--weight-semibold);white-space:nowrap;transform:translate(12px,12px);pointer-events:none}.gap-band{position:absolute;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);border-block:1px dashed var(--accent);background:var(--accent-tint);pointer-events:none}.gap-handle{position:relative;width:28px;height:8px;padding:0;border:1.5px solid var(--accent);border-radius:var(--radius-pill);background:var(--surface-raised);cursor:ns-resize;pointer-events:auto;touch-action:none}.gap-handle:before{content:"";position:absolute;top:-12px;right:-10px;bottom:-12px;left:-10px}@media (hover: none){.gap-handle{width:40px;height:12px}.gap-handle:before{top:-16px;right:-12px;bottom:-16px;left:-12px}}.wall-ends{position:absolute;z-index:5;pointer-events:none}.wall-end{position:absolute;left:50%;width:12px;height:12px;margin-left:-6px;border:1.5px solid var(--surface-raised);border-radius:var(--radius-xs);background:var(--accent);box-shadow:var(--shadow-xs);cursor:ns-resize;pointer-events:auto;touch-action:none}.wall-end--top{top:-6px}.wall-end--bottom{bottom:-6px}.mark{position:absolute;z-index:12;background:var(--measure);pointer-events:none}.mark--v{width:1px;transform:translate(-50%)}.mark--h{height:1px;transform:translateY(-50%)}.mark__label{position:absolute;padding:3px 5px;border-radius:var(--radius-xs);background:var(--measure);color:var(--measure-ink);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap}.mark--v .mark__label{left:5px;top:50%;transform:translateY(-50%)}.mark--h .mark__label{top:4px;left:50%;transform:translate(-50%)}.note{position:absolute;z-index:11;display:flex;align-items:center;gap:var(--space-3);padding:5px 9px;border:1px solid var(--note-border);border-radius:var(--radius-sm);background:var(--note-bg);color:var(--note-ink);font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap;cursor:move;touch-action:none}.note.is-selected{border-color:var(--note-strong);box-shadow:0 0 0 3px var(--note-border)}.note__ptr{position:absolute;width:10px;height:10px;border:1px solid transparent;background:var(--note-bg);transform:rotate(45deg)}.note__ptr--up{top:-6px;left:50%;margin-left:-5px;border-top-color:var(--note-border);border-left-color:var(--note-border)}.note__ptr--down{bottom:-6px;left:50%;margin-left:-5px;border-right-color:var(--note-border);border-bottom-color:var(--note-border)}.note__ptr--left{left:-6px;top:50%;margin-top:-5px;border-left-color:var(--note-border);border-bottom-color:var(--note-border)}.note__ptr--right{right:-6px;top:50%;margin-top:-5px;border-top-color:var(--note-border);border-right-color:var(--note-border)}.note.is-selected .note__ptr--up{box-shadow:-2px -2px 0 0 var(--note-border)}.note.is-selected .note__ptr--right{box-shadow:2px -2px 0 0 var(--note-border)}.note.is-selected .note__ptr--down{box-shadow:2px 2px 0 0 var(--note-border)}.note.is-selected .note__ptr--left{box-shadow:-2px 2px 0 0 var(--note-border)}.note.is-selected .note__ptr--up,.note.is-selected .note__ptr--right{border-top-color:var(--note-strong)}.note.is-selected .note__ptr--up,.note.is-selected .note__ptr--left{border-left-color:var(--note-strong)}.note.is-selected .note__ptr--down,.note.is-selected .note__ptr--left{border-bottom-color:var(--note-strong)}.note.is-selected .note__ptr--down,.note.is-selected .note__ptr--right{border-right-color:var(--note-strong)}.note.is-editing{cursor:text}.note__input{min-width:3ch;padding:0;border:0;outline:none;background:transparent;color:inherit;font:inherit}.note-tools{position:absolute;bottom:calc(100% + 26px);left:50%;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);border:1px solid var(--line-default);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-md);white-space:nowrap;cursor:default;transform:translate(-50%);animation:fade-in var(--duration-fast) var(--ease-standard)}.note-tools .btn--ghost{color:var(--ink-primary)}.note-tools .btn--danger{background:var(--danger-soft)}.note-aim{position:absolute;display:block;width:10px;height:10px;padding:0;border:0;background:transparent;color:var(--note-strong);opacity:.45;cursor:pointer;touch-action:manipulation;transition:opacity var(--duration-fast) var(--ease-standard)}.note-aim:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px}.note-aim svg{display:block;width:10px;height:10px;fill:currentColor}.note-aim:hover,.note-aim:focus-visible{opacity:1}.note-aim.is-on{color:var(--note-ink);opacity:1}.note-aim--up{bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.note-aim--down{top:calc(100% + 6px);left:50%;transform:translate(-50%)}.note-aim--left{right:calc(100% + 6px);top:50%;transform:translateY(-50%)}.note-aim--right{left:calc(100% + 6px);top:50%;transform:translateY(-50%)}@media (max-width: 767px),(hover: none) and (pointer: coarse){.note-aim:before{top:-14px;right:-14px;bottom:-14px;left:-14px}.note-tools{bottom:calc(100% + 40px)}}.cell.is-hot{z-index:10}.measure-tag--space{border:1.5px dashed var(--accent);background:var(--accent-tint)}.measure-tag{position:absolute;z-index:12;display:grid;place-items:center;pointer-events:none}.marquee{position:absolute;z-index:9;border:1px solid var(--accent);background:var(--accent-tint);pointer-events:none}.hud{position:absolute;z-index:var(--z-hud);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);border:1px solid var(--line-default);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-md);white-space:nowrap;cursor:default}.hud__count{padding:7px 9px;border-radius:var(--radius-sm);background:var(--accent);color:var(--ink-on-accent);font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1}.hud__gap{display:flex;align-items:center;gap:var(--space-1);height:var(--control-md);padding:0 var(--space-1);border:1px solid var(--accent-border);border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent)}.hud__gap-btn{display:grid;place-items:center;width:24px;height:24px;padding:0;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--accent);font-size:var(--text-lg);line-height:1}.hud__gap-btn:hover:not(:disabled){background:var(--accent-soft-hover)}.hud__gap-btn:disabled{color:var(--ink-disabled)}.hud__gap-value{min-width:34px;font-size:var(--text-sm);font-weight:var(--weight-semibold);text-align:center}.hud .btn{border-color:transparent;background:transparent}.hud .btn:hover:not(:disabled){background:var(--surface-hover)}.hud .btn--danger{background:var(--danger-soft)}.hud .btn--danger:hover:not(:disabled){background:var(--danger-soft);color:var(--danger-ink)}.sel-actions{display:flex;align-items:center;gap:var(--space-3)}.sel-actions__icon{color:var(--ink-tertiary);font-size:var(--text-lg);line-height:1}.stage__fit.is-3d{cursor:grab;touch-action:none}.stage__fit.is-3d:active{cursor:grabbing}.scene{position:relative;perspective:1600px;perspective-origin:50% 40%}.scene__rig,.room{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d}.room__plane{position:absolute;border:1px solid var(--room-line);background:var(--room-plane);pointer-events:none}.room__plane--left{left:0;top:0;bottom:0;transform-origin:0 50%;transform:rotateY(-90deg)}.room__plane--right{right:0;top:0;bottom:0;transform-origin:100% 50%;transform:rotateY(90deg)}.room__plane--floor{left:0;right:0;bottom:0;transform-origin:50% 100%;transform:rotateX(-90deg);background:var(--room-floor)}.surface--3d{position:absolute;left:0;top:0;transform-style:preserve-3d;border-color:var(--room-line)}.surface--3d .piece,.surface--3d .wall-ends,.surface--3d .gap-band{transform-style:preserve-3d}.surface--3d .piece,.surface--3d .piece.is-selected,.surface--3d .piece--drawer,.surface--3d .piece--bar{border-color:transparent;background:transparent;box-shadow:none}.surface--3d .piece:before,.surface--3d .piece:after{content:none}.face{position:absolute;border:var(--piece-stroke-width) solid var(--piece-stroke);background:var(--piece-face-front)}.face--front{top:0;right:0;bottom:0;left:0}.face--top{left:0;right:0;top:0;transform-origin:50% 0;background:var(--piece-face-top)}.face--bottom{left:0;right:0;bottom:0;transform-origin:50% 100%;background:var(--piece-face-bottom)}.face--left,.face--right{top:0;bottom:0;background:var(--piece-face-side)}.face--left{left:0;transform-origin:0 50%}.face--right{right:0;transform-origin:100% 50%}.piece--wall .face--front{background:var(--piece-wall)}.piece--drawer .face--front{border-radius:var(--radius-xs);background:var(--piece-drawer);box-shadow:inset 0 0 0 3px var(--piece-drawer),inset 0 0 0 4px var(--piece-fill)}.face--bar,.piece--bar .face--front{border:0;border-radius:var(--radius-pill);background:linear-gradient(var(--piece-bar-shine),var(--piece-bar) 60%)}.piece.is-hover .face{border-color:var(--accent)}.piece.is-selected .face{border-color:var(--piece-selected-stroke);background:var(--piece-selected)}.piece.is-selected .face--bar{background:var(--accent)}.stage__hud{position:absolute;top:var(--space-5);left:50%;z-index:var(--z-hud);transform:translate(-50%)}.hud--floating{position:static}.start{display:flex;flex-direction:column;gap:var(--space-8)}.start__intro{display:flex;flex-direction:column;gap:var(--space-5);padding-right:var(--space-9)}.start__title{margin:0;color:var(--ink-primary);font-size:var(--text-2xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}.start__lede{margin:0;max-width:60ch;color:var(--ink-secondary);font-size:var(--text-lg);line-height:1.5}.start__choices{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--space-6)}.start-card{display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-7);border:1px solid var(--line-subtle);border-radius:var(--radius-lg);background:var(--surface-panel-muted)}.start-card--open{align-items:center;border:2px dashed var(--line-strong);background:var(--surface-raised);text-align:center;transition:border-color var(--duration-fast) var(--ease-standard),background-color var(--duration-fast) var(--ease-standard)}.start-card--open .start-card__text{flex:1}.start-card--open .btn{align-self:stretch}.start-card--open.is-dropping{border-color:var(--accent);background:var(--accent-soft)}.start-card__drop-icon{color:var(--ink-tertiary)}.start-card--open.is-dropping .start-card__drop-icon{color:var(--accent)}.start__warn{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-5) var(--space-6);border:1px solid var(--highlight-border);border-radius:var(--radius-md);background:var(--highlight-soft)}.start__warn-icon{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:var(--radius-pill);background:var(--highlight);color:var(--ink-on-cta);font-size:var(--text-sm);font-weight:var(--weight-bold)}.start__warn-text{flex:1;margin:0;color:var(--ink-secondary);font-size:var(--text-md);line-height:1.45}.start__warn-text strong{color:var(--ink-primary);font-weight:var(--weight-semibold)}.start__warn .btn{flex:none}.start-card__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.start-card__title{margin:0;color:var(--ink-primary);font-size:var(--text-xl);font-weight:var(--weight-semibold)}.start-card__text{margin:0;color:var(--ink-secondary);font-size:var(--text-md);line-height:1.45}.start__sizes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}.start-field{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.start-field__label{color:var(--ink-primary);font-size:var(--text-sm)}.start-field__box{position:relative;display:flex}.start-field__box .field{flex:1;width:100%;height:var(--control-lg);padding-right:var(--space-9);font-size:var(--text-lg);font-weight:var(--weight-semibold);-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.start-field__box .field::-webkit-inner-spin-button,.start-field__box .field::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.start-field__unit{position:absolute;top:50%;right:var(--space-4);color:var(--ink-tertiary);font-size:var(--text-sm);pointer-events:none;transform:translateY(-50%)}.start-card__notice{display:flex;align-items:flex-start;gap:var(--space-4);margin:0;padding:var(--space-4) var(--space-5);border:1px solid var(--highlight-border);border-radius:var(--radius-sm);background:var(--highlight-soft);color:var(--ink-secondary);font-size:var(--text-sm);line-height:1.45}.start-card__notice .start__warn-icon{width:18px;height:18px;font-size:var(--text-xs)}.start-card__hint{margin:0;color:var(--ink-tertiary);font-size:var(--text-xs);line-height:1.5}.link-btn{padding:0;border:0;background:transparent;color:var(--ink-secondary);font:inherit;text-decoration:underline}@media (max-width: 767px),(hover: none) and (pointer: coarse){.start__choices{grid-template-columns:minmax(0,1fr)}.start__intro{padding-right:0}.start__title:before{content:"";float:right;width:var(--space-9);height:1em}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-toast);width:100%;height:100%;pointer-events:none}.modal.modal--celebrate{width:min(440px,100%);text-align:center}.modal--celebrate .modal__body{--modal-pad-top: var(--space-10);--modal-pad-x: var(--space-9);--modal-pad-bottom: var(--space-8)}.modal.modal--kofi{width:min(460px,100%)}.modal--kofi .modal__body{--modal-pad-top: var(--space-10);--modal-pad-x: var(--space-5);--modal-pad-bottom: var(--space-5)}.celebrate{display:flex;flex-direction:column;align-items:center;gap:var(--space-5)}.celebrate__title{margin:0;color:var(--ink-primary);font-size:var(--text-2xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}.celebrate__text{margin:0;color:var(--ink-secondary);font-size:var(--text-lg);line-height:1.45}.coffee-callout{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);width:100%;margin-top:var(--space-3);padding:var(--space-6);border:1px solid var(--highlight-border);border-radius:var(--radius-lg);background:var(--highlight-soft)}.coffee-callout__text{margin:0;color:var(--ink-primary);font-size:var(--text-md);line-height:1.45}.celebrate__dismiss{color:var(--ink-tertiary);font-size:var(--text-sm)}.kofi-frame{display:block;width:100%;height:min(640px,calc(100dvh - 160px));border:0;border-radius:var(--radius-lg);background:var(--surface-raised)}@media (max-width: 767px),(hover: none) and (pointer: coarse){.modal-scrim:has(.modal--celebrate,.modal--kofi){place-items:center;padding:var(--space-6)}.modal.modal--celebrate,.modal.modal--kofi{height:auto;max-height:calc(100dvh - 2 * var(--space-6));border-radius:var(--radius-xl)}.modal--celebrate .modal__body{--modal-pad-top: var(--space-10);--modal-pad-x: var(--space-6);--modal-pad-bottom: var(--space-7)}.modal--celebrate .modal__close,.modal--kofi .modal__close{top:var(--space-5);right:var(--space-5)}}.legal-links{display:flex;align-items:center;gap:var(--space-3);color:var(--ink-tertiary);font-size:var(--text-xs)}.legal-links__link{padding:0;border:0;background:transparent;color:inherit;font:inherit;text-decoration:none;text-underline-offset:2px}.legal-links__link:hover,.legal-links__link:focus-visible{color:var(--ink-secondary);text-decoration:underline}.stage-bar__legal{margin-left:auto}.export-menu__legal{justify-content:center}.modal.modal--legal{width:min(680px,100%)}.legal{display:flex;flex-direction:column;gap:var(--space-6)}.legal .tabs{position:sticky;top:calc(-1 * var(--modal-pad-top));z-index:1;margin:calc(-1 * var(--space-6)) calc(-1 * var(--modal-pad-x)) 0;padding:var(--space-6) calc(var(--modal-pad-x) + var(--space-9)) 0 var(--modal-pad-x);border-bottom:1px solid var(--line-subtle);background:var(--surface-raised)}.legal .tabs__tab{font-size:var(--text-lg)}.legal__body{color:var(--ink-secondary);font-size:var(--text-md);line-height:1.6}.legal__body h3{margin:var(--space-7) 0 var(--space-3);color:var(--ink-primary);font-size:var(--text-lg);font-weight:var(--weight-semibold)}.legal__body p,.legal__body ul{margin:0 0 var(--space-4)}.legal__body ul{padding-left:var(--space-8)}.legal__body li+li{margin-top:var(--space-3)}.legal__body strong{color:var(--ink-primary);font-weight:var(--weight-semibold)}.legal__body a{color:var(--accent)}.legal__meta{color:var(--ink-tertiary);font-size:var(--text-sm)}.legal__body code{padding:1px var(--space-2);border-radius:var(--radius-xs);background:var(--surface-sunken);font-family:var(--font-mono);font-size:var(--text-sm)}.gallery{max-width:760px;margin:0 auto;padding:var(--space-8) var(--space-6) var(--space-10);display:flex;flex-direction:column;gap:var(--space-8)}.gallery__head h1{font-size:var(--text-xl);font-weight:var(--weight-semibold)}.gallery__meta{color:var(--ink-tertiary);font-size:var(--text-xs)}.gallery__section{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-5);padding:var(--space-6);border:1px solid var(--line-subtle);border-radius:var(--radius-lg);background:var(--surface-panel)}.gallery__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}.gallery__stack{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-5)}.gallery__note{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--note-bg);color:var(--note-ink);font-size:var(--text-xs)}.gallery__resize{width:240px;height:80px;min-width:120px;max-width:100%;display:grid;place-items:center;resize:both;overflow:auto;border:1px dashed var(--line-strong);border-radius:var(--radius-md);color:var(--ink-tertiary);font-size:var(--text-xs)}
