.app-shell{display:grid;grid-template-rows:auto 1fr auto;height:100dvh;width:100vw;color:var(--vshd-text);background:var(--vshd-bg);overflow:hidden}.app-shell__top-toolbar{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-bottom:1px solid var(--vshd-border);background:var(--vshd-surface);min-height:3rem}.app-shell__body{display:grid;grid-template-columns:auto 1fr auto;min-height:0}.app-shell__side-toolbar{display:flex;flex-direction:column;gap:.375rem;padding:.5rem;width:9.5rem;border-right:1px solid var(--vshd-border);background:var(--vshd-surface);overflow-y:auto}.app-shell__canvas-region{position:relative;min-width:0;min-height:0;background:var(--vshd-canvas-bg)}.app-shell__right-drawer{width:20rem;max-width:80vw;border-left:1px solid var(--vshd-border);background:var(--vshd-surface);overflow-y:auto}.app-shell__status-strip{display:flex;align-items:center;gap:.75rem;padding:.25rem .75rem;border-top:1px solid var(--vshd-border);background:var(--vshd-surface);font-size:.75rem;color:var(--vshd-text-muted);min-height:1.75rem}.app-shell__canvas-region .app-shell__drawer-toggle{display:none}@media(max-width:720px){.app-shell__body{grid-template-columns:1fr;grid-template-rows:auto 1fr}.app-shell__right-drawer{position:fixed;inset:0 0 0 auto;z-index:20}.app-shell__right-drawer[data-open=false]{display:none}.app-shell__side-toolbar{flex-direction:row;flex-wrap:wrap;align-items:center;width:auto;border-right:none;border-bottom:1px solid var(--vshd-border);overflow-y:visible}.app-shell__side-toolbar .side-toolbar__nav{flex-flow:row wrap;align-items:center;width:100%}.app-shell__side-toolbar hr{flex-basis:100%;border:none;border-top:1px solid var(--vshd-border);margin:.15rem 0}.app-shell__side-toolbar .side-toolbar__nav button{min-height:var(--vshd-touch-target)}.app-shell__top-toolbar{flex-wrap:wrap}.app-shell__canvas-region .app-shell__drawer-toggle{display:inline-flex;position:absolute;right:.5rem;bottom:.5rem;z-index:21;min-width:var(--vshd-touch-target);min-height:var(--vshd-touch-target)}}.vshd-panel{--vshd-panel-radius: .6rem;--vshd-panel-chrome-h: 2.25rem;--vshd-panel-edge-hit: 14px;--vshd-panel-corner-hit: 20px;--vshd-panel-surface: color-mix(in srgb, var(--vshd-surface) 82%, transparent);--vshd-panel-chrome-bg: color-mix(in srgb, var(--vshd-surface) 90%, transparent);--vshd-panel-shadow: 0 8px 28px rgba(20, 28, 34, .18), 0 1px 3px rgba(20, 28, 34, .12);--vshd-panel-transition: .14s ease;position:fixed;z-index:30;border-radius:var(--vshd-panel-radius);color:var(--vshd-text);font-size:.8rem;line-height:1.4}.vshd-panel__surface{position:relative;width:100%;height:100%;overflow:hidden;background:var(--vshd-panel-surface);border:1px solid var(--vshd-border);border-radius:inherit;box-shadow:var(--vshd-panel-shadow);backdrop-filter:blur(8px) saturate(120%);-webkit-backdrop-filter:blur(8px) saturate(120%)}.vshd-panel__chrome{height:var(--vshd-panel-chrome-h);display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:0 .5rem 0 .75rem;background:var(--vshd-panel-chrome-bg);border-bottom:1px solid var(--vshd-border);cursor:grab;-webkit-user-select:none;user-select:none}.vshd-panel.is-sheet .vshd-panel__chrome{cursor:default}.vshd-panel__chrome:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:-2px}.vshd-panel.is-dragging .vshd-panel__chrome{cursor:grabbing}.vshd-panel__header{display:flex;align-items:baseline;gap:.4rem;min-width:0}.vshd-panel__title{font-size:.8rem;font-weight:600;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vshd-panel__hint{font-size:.7rem;color:var(--vshd-text-muted);white-space:nowrap}.vshd-panel__controls{display:flex;align-items:center;gap:.25rem}.vshd-panel__action{width:1.6rem;height:1.6rem;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:.3rem;background:transparent;color:var(--vshd-text-muted);cursor:pointer;transition:background-color var(--vshd-panel-transition),color var(--vshd-panel-transition)}.vshd-panel__action:hover{background:color-mix(in srgb,var(--vshd-text) 8%,transparent);color:var(--vshd-text)}.vshd-panel__action:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:1px}.vshd-panel__action svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s ease}.vshd-panel__action.is-collapsed svg{transform:rotate(180deg)}.vshd-panel__body{height:calc(100% - var(--vshd-panel-chrome-h));overflow:auto;padding:.6rem .75rem .75rem;scrollbar-gutter:stable}.vshd-panel__resize{position:absolute;z-index:4;touch-action:none;opacity:0;transition:opacity var(--vshd-panel-transition)}.vshd-panel:hover .vshd-panel__resize,.vshd-panel.is-resizing .vshd-panel__resize,.vshd-panel.is-dragging .vshd-panel__resize{opacity:1}.vshd-panel__resize:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;background:color-mix(in srgb,var(--vshd-text) 22%,transparent);border-radius:999px}.vshd-panel__resize--n,.vshd-panel__resize--s{left:var(--vshd-panel-corner-hit);right:var(--vshd-panel-corner-hit);height:var(--vshd-panel-edge-hit)}.vshd-panel__resize--n{top:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--s{bottom:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--n:before,.vshd-panel__resize--s:before{width:36px;height:3px}.vshd-panel__resize--e,.vshd-panel__resize--w{top:var(--vshd-panel-corner-hit);bottom:var(--vshd-panel-corner-hit);width:var(--vshd-panel-edge-hit)}.vshd-panel__resize--e{right:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--w{left:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--e:before,.vshd-panel__resize--w:before{width:3px;height:36px}.vshd-panel__resize--ne,.vshd-panel__resize--nw,.vshd-panel__resize--se,.vshd-panel__resize--sw{width:var(--vshd-panel-corner-hit);height:var(--vshd-panel-corner-hit)}.vshd-panel__resize--ne{top:calc(var(--vshd-panel-edge-hit) * -.5);right:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--nw{top:calc(var(--vshd-panel-edge-hit) * -.5);left:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--se{bottom:calc(var(--vshd-panel-edge-hit) * -.5);right:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--sw{bottom:calc(var(--vshd-panel-edge-hit) * -.5);left:calc(var(--vshd-panel-edge-hit) * -.5)}.vshd-panel__resize--ne:before,.vshd-panel__resize--nw:before,.vshd-panel__resize--se:before,.vshd-panel__resize--sw:before{width:6px;height:6px}.vshd-panel.is-dragging,.vshd-panel.is-resizing{-webkit-user-select:none;user-select:none}.vshd-panel.resize-n,.vshd-panel.resize-s{cursor:ns-resize}.vshd-panel.resize-e,.vshd-panel.resize-w{cursor:ew-resize}.vshd-panel.resize-ne,.vshd-panel.resize-sw{cursor:nesw-resize}.vshd-panel.resize-nw,.vshd-panel.resize-se{cursor:nwse-resize}.vshd-panel.is-sheet{top:auto;left:0;right:0;bottom:0;width:auto;height:auto;max-height:70dvh;border-radius:var(--vshd-panel-radius) var(--vshd-panel-radius) 0 0;padding-bottom:env(safe-area-inset-bottom,0)}.vshd-panel.is-sheet .vshd-panel__surface{border-bottom:none}.vshd-panel.is-sheet .vshd-panel__body{max-height:calc(70dvh - var(--vshd-panel-chrome-h));height:auto}.vshd-panel.is-sheet .vshd-panel__action{width:44px;height:44px}@media(prefers-reduced-motion:reduce){.vshd-panel,.vshd-panel *{transition:none!important}}.vshd-controls{display:flex;flex-direction:column;gap:.9rem}.vshd-controls__section{display:flex;flex-direction:column;gap:.5rem}.vshd-controls__section-title{margin:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--vshd-text-muted)}.vshd-controls__heading{margin:.3rem 0 0;font-size:.78rem;font-weight:600;color:var(--vshd-text)}.vshd-controls__note{margin:0;font-size:.72rem;line-height:1.4;color:var(--vshd-text-muted)}.vshd-controls__divider{border:none;border-top:1px solid var(--vshd-border);margin:.2rem 0}.vshd-control{display:flex;flex-direction:column;gap:.3rem;font-size:.78rem}.vshd-control--inline{flex-direction:row;align-items:center;justify-content:space-between;gap:.6rem}.vshd-control__labelrow{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.vshd-control__label{color:var(--vshd-text);min-width:0}.vshd-control__hint{font-size:.68rem;color:var(--vshd-text-muted)}.vshd-control__valuerow{display:inline-flex;align-items:baseline;gap:.25rem}.vshd-control__unit{font-size:.68rem;color:var(--vshd-text-muted)}.vshd-control__value-input,.vshd-control__number,.vshd-control__text,.vshd-control__select,.vshd-control__vector-field input{font:inherit;font-size:.75rem;color:var(--vshd-text);background:var(--vshd-surface);border:1px solid var(--vshd-border);border-radius:.3rem;padding:.15rem .35rem}.vshd-control__value-input{width:4rem;text-align:right}.vshd-control__number{width:5rem}.vshd-control__text{flex:1;min-width:0}.vshd-control__select{min-width:6rem}.vshd-control__value-input:focus-visible,.vshd-control__number:focus-visible,.vshd-control__text:focus-visible,.vshd-control__select:focus-visible,.vshd-control__vector-field input:focus-visible,.vshd-control__slider:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:1px}.vshd-control__slider{width:100%;accent-color:var(--vshd-accent)}.vshd-control__checkbox{accent-color:var(--vshd-accent);width:1rem;height:1rem}.vshd-control__color{width:2rem;height:1.5rem;padding:0;border:1px solid var(--vshd-border);border-radius:.3rem;background:none}.vshd-control__vector-inputs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.vshd-control__vector-field{display:flex;align-items:center;gap:.2rem}.vshd-control__vector-axis{font-size:.68rem;color:var(--vshd-text-muted)}.vshd-control__vector-field input{width:100%}.vshd-control--segmented{gap:.3rem}.vshd-control__segments{display:inline-flex;gap:.25rem;flex-wrap:wrap}.vshd-control__segment{padding:.2rem .5rem;border:1px solid var(--vshd-border);border-radius:.3rem;background:var(--vshd-surface);color:var(--vshd-text);font-size:.72rem;cursor:pointer}.vshd-control__segment[aria-pressed=true]{background:var(--vshd-accent);color:#fff;border-color:var(--vshd-accent)}.vshd-control__segment:disabled{opacity:.5;cursor:not-allowed}.vshd-control__readout{color:var(--vshd-text);font-variant-numeric:tabular-nums}.vshd-control__button{padding:.35rem .6rem;border:1px solid var(--vshd-border);border-radius:.3rem;background:var(--vshd-surface);color:var(--vshd-text);font-size:.75rem;cursor:pointer}.vshd-control__button--primary{background:var(--vshd-accent);color:#fff;border-color:var(--vshd-accent)}.vshd-control__button--danger{color:#c92a2a;border-color:#f0b0b0}.vshd-control__button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:820px){.vshd-control__segment,.vshd-control__button{min-height:44px}.vshd-control__checkbox{width:1.5rem;height:1.5rem}}.viewer{position:absolute;top:0;right:0;bottom:0;left:0}.viewer canvas{display:block;width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0}.viewer__quad-grid{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px;background:var(--vshd-border)}.viewer__quad-pane{position:relative;background:var(--vshd-canvas-bg)}.viewer__quad-labels{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px;pointer-events:none}.viewer__pane-label{align-self:start;justify-self:start;margin:.4rem 0 0 .5rem;font-size:.7rem;padding:.1rem .5rem;border-radius:.25rem;background:color-mix(in srgb,black 55%,transparent);color:#fff}.viewer__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;color:var(--vshd-text);background:color-mix(in srgb,var(--vshd-canvas-bg) 60%,transparent);font-size:.95rem}.viewer__overlay--error{color:#b3261e}:root{--vshd-bg: #f4f5f6;--vshd-surface: #ffffff;--vshd-border: #dde1e4;--vshd-text: #1c2226;--vshd-text-muted: #6b7480;--vshd-canvas-bg: #e7e9eb;--vshd-accent: #2f6f5e;--vshd-icon-size: 16px;--vshd-touch-target: 44px;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{color:var(--vshd-text);background:var(--vshd-bg)}button{font:inherit}.brand{font-weight:600;font-size:.95rem;letter-spacing:.01em}.top-toolbar__view-controls{display:flex;align-items:center;gap:.375rem;margin-left:1rem}.top-toolbar__view-controls button{padding:.2rem .5rem;border:1px solid var(--vshd-border);border-radius:.3rem;background:var(--vshd-surface);color:var(--vshd-text);font-size:.75rem;cursor:pointer}.top-toolbar__view-controls button[aria-pressed=true]{background:var(--vshd-accent);color:#fff;border-color:var(--vshd-accent)}.side-toolbar__nav{display:flex;flex-direction:column;gap:.3rem}.side-toolbar__nav button{padding:.3rem .5rem;border:1px solid var(--vshd-border);border-radius:.3rem;background:var(--vshd-surface);color:var(--vshd-text);font-size:.75rem;cursor:pointer;white-space:nowrap}.side-toolbar__nav button:disabled{opacity:.5;cursor:not-allowed}.side-toolbar__nav--icons{display:flex;flex-flow:row wrap;gap:.3rem}.side-toolbar__nav hr{border:none;border-top:1px solid var(--vshd-border);margin:.25rem 0;width:100%}.edit-mode-badge{margin-left:auto;padding:.2rem .6rem;border-radius:999px;background:var(--vshd-accent);color:#fff;font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.side-toolbar__placeholder{color:var(--vshd-text-muted);padding:.25rem}.side-toolbar__hint{margin:.2rem 0 0;font-size:.7rem;color:var(--vshd-text-muted);flex-basis:100%}.right-drawer{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.drawer-section{border:1px solid var(--vshd-border);border-radius:.3rem;background:var(--vshd-surface)}.drawer-section__summary{cursor:pointer;-webkit-user-select:none;user-select:none;padding:.45rem .6rem;font-size:.8rem;font-weight:600;letter-spacing:.02em;color:var(--vshd-text);list-style-position:inside}.drawer-section__summary:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:-2px;border-radius:.3rem}.drawer-section[open]>.drawer-section__summary{border-bottom:1px solid var(--vshd-border)}.drawer-section__body{padding:.6rem;display:flex;flex-direction:column;gap:1rem;min-width:0}button.vshd-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:1px solid var(--vshd-border);border-radius:.3rem;background:var(--vshd-surface);color:var(--vshd-text);cursor:pointer}button.vshd-icon-btn svg{width:var(--vshd-icon-size);height:var(--vshd-icon-size)}button.vshd-icon-btn[aria-pressed=true]{background:var(--vshd-accent);color:#fff;border-color:var(--vshd-accent)}button.vshd-icon-btn:disabled{opacity:.5;cursor:not-allowed}button.vshd-icon-btn:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:1px}@media(max-width:720px){button.vshd-icon-btn,.drawer-section__summary{min-width:var(--vshd-touch-target);min-height:var(--vshd-touch-target)}.drawer-section__summary{display:flex;align-items:center}}.drawer-panel h2{margin:0 0 .5rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;color:var(--vshd-text-muted)}.section-axis{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.4rem;font-size:.8rem;margin-bottom:.4rem}.section-axis input[type=number]{width:4.5rem}.section-axis input[type=range]{min-width:2.5rem;width:100%}.section-axis__row{display:flex;align-items:center;gap:.3rem;font-size:.8rem;justify-content:space-between}.region-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.region-list__row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.8rem}.region-list__kind{color:var(--vshd-text-muted)}.region-list__limit-message{margin:.5rem 0 0;font-size:.75rem;color:var(--vshd-text-muted)}.floor-list,.area-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.floor-list__row{display:flex;align-items:center;gap:.4rem;font-size:.8rem;flex-wrap:wrap}.floor-list__field{display:flex;align-items:center;gap:.2rem;font-size:.75rem;color:var(--vshd-text-muted)}.floor-list__field input{width:4.5rem}.floor-list__name{flex:1}.floor-list__elevation{color:var(--vshd-text-muted);font-size:.75rem}.area-list__row{display:flex;flex-direction:column;gap:.3rem;padding-bottom:.4rem;border-bottom:1px solid var(--vshd-border);font-size:.8rem}.area-list__row:last-child{border-bottom:none}.area-list__summary{display:flex;flex-direction:column;gap:.15rem}.area-list__meta{color:var(--vshd-text-muted);font-size:.75rem}.area-list__total{margin:.4rem 0 0;font-size:.75rem;font-weight:600}.area-list__empty{margin:0;color:var(--vshd-text-muted);font-size:.8rem}.area-form{display:flex;flex-direction:column;gap:.4rem;margin-top:.5rem;font-size:.8rem}.area-form__row{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.area-tool-controls{margin-top:.5rem;font-size:.8rem}.area-tool-controls p{margin:0 0 .3rem;color:var(--vshd-text-muted)}.area-tool-controls__error{color:#c92a2a}.yaml-editor__text{width:100%;min-height:12rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.75rem;border:1px solid var(--vshd-border);border-radius:.3rem;padding:.4rem;resize:vertical}.yaml-editor__error{color:#c92a2a;font-size:.75rem;margin:.3rem 0}.yaml-editor__notice{font-size:.75rem;color:var(--vshd-text-muted);margin:0 0 .4rem}.status-strip{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}.status-strip__history{display:inline-flex;gap:.3rem;margin-left:.5rem}.status-strip__notice{font-size:.75rem;color:var(--vshd-text-muted)}.canvas-region__placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--vshd-text-muted);padding:1rem}.furniture-library{margin:.5rem 0}.furniture-library__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem}.furniture-library__grid button{padding:.35rem .4rem;border:1px solid var(--vshd-border);border-radius:.3rem;background:var(--vshd-surface);font-size:.75rem;cursor:pointer;min-height:2.2rem}.furniture-library__grid button[aria-pressed=true]{background:var(--vshd-accent);color:#fff;border-color:var(--vshd-accent)}.furniture-library__grid button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:720px){.furniture-library__grid button{min-height:44px}}
