@keyframes vshd-sheet-scrim-in{0%{opacity:0}to{opacity:1}}@keyframes vshd-sheet-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.vshd-sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:24;background:var(--vshd-scrim);animation:vshd-sheet-scrim-in var(--vshd-motion-base) var(--vshd-ease-standard)}.vshd-sheet-scrim.is-closing{animation:vshd-sheet-scrim-in var(--vshd-motion-base) var(--vshd-ease-standard) reverse}.vshd-sheet{position:fixed;left:0;right:0;bottom:0;z-index:25;display:flex;flex-direction:column;min-height:0;max-height:92dvh;border-radius:.75rem .75rem 0 0;background:var(--vshd-glass-surface);border:1px solid var(--vshd-border);border-bottom:none;box-shadow:var(--vshd-glass-shadow);backdrop-filter:var(--vshd-glass-blur);-webkit-backdrop-filter:var(--vshd-glass-blur);color:var(--vshd-text);transition:height .22s ease;animation:vshd-sheet-in var(--vshd-motion-base) var(--vshd-ease-standard);padding-bottom:env(safe-area-inset-bottom,0);padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}.vshd-sheet.is-dragging{transition:none}.vshd-sheet.is-closing{animation:vshd-sheet-in var(--vshd-motion-base) var(--vshd-ease-standard) reverse;pointer-events:none}.vshd-sheet__handle-row{position:relative;flex:none;display:flex;align-items:center;justify-content:center;height:1.75rem;touch-action:none;cursor:grab}.vshd-sheet.is-dragging .vshd-sheet__handle-row{cursor:grabbing}.vshd-sheet__handle{width:2.5rem;height:.28rem;border-radius:999px;background:color-mix(in srgb,var(--vshd-text) 25%,transparent)}.vshd-sheet__close{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);width:var(--vshd-touch-target);height:var(--vshd-touch-target);display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--vshd-text-muted);cursor:pointer}.vshd-sheet__close:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:-2px}.vshd-sheet__body{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:0 .75rem .75rem}@media(prefers-reduced-motion:reduce){.vshd-sheet{transition:none!important}}.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__chrome{position:relative;z-index:15;border-bottom:1px solid var(--vshd-border);background:var(--vshd-surface)}.app-shell__body{display:grid;grid-template-columns:1fr auto;min-height:0}.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}@media(max-width:1024px){.app-shell{display:block;position:relative}.app-shell__body{position:absolute;top:0;right:0;bottom:0;left:0;display:block}.app-shell__canvas-region{position:absolute;top:0;right:0;bottom:0;left:0}.app-shell__chrome{position:fixed;top:0;left:0;right:0;padding-top:env(safe-area-inset-top,0);padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);background:var(--vshd-glass-surface);box-shadow:var(--vshd-glass-shadow);backdrop-filter:var(--vshd-glass-blur);-webkit-backdrop-filter:var(--vshd-glass-blur)}.app-shell__status-strip{position:fixed;z-index:15;bottom:calc(.5rem + env(safe-area-inset-bottom,0));right:calc(.5rem + env(safe-area-inset-right,0));left:auto;top:auto;width:fit-content;max-width:calc(50vw - 1rem);min-height:0;padding:.35rem .65rem;border:1px solid var(--vshd-border);border-radius:.6rem;background:var(--vshd-glass-surface);box-shadow:var(--vshd-glass-shadow);backdrop-filter:var(--vshd-glass-blur);-webkit-backdrop-filter:var(--vshd-glass-blur)}}.app-bar{display:flex;align-items:center;gap:.5rem;min-height:var(--vshd-app-bar-height);padding:.25rem .75rem;flex-wrap:nowrap}.app-bar__actions{display:flex;align-items:center;gap:.25rem;flex:none;margin-left:auto}.product-switcher{position:relative;min-width:0;flex:0 1 auto}.product-switcher__trigger{display:flex;align-items:center;gap:.25rem;max-width:100%;padding:.3rem .4rem;border:1px solid transparent;border-radius:.4rem;background:transparent;color:var(--vshd-text);cursor:pointer}.product-switcher__trigger:hover{border-color:var(--vshd-border)}.product-switcher__trigger:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:1px}.product-switcher__wordmark{font-weight:600;font-size:clamp(.62rem,2.6vw,.95rem);letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-switcher__chevron{flex:none;width:.9em;height:.9em;color:var(--vshd-text-muted)}@keyframes vshd-popover-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.product-switcher__menu{position:absolute;top:calc(100% + .35rem);left:0;z-index:5;display:flex;flex-direction:column;gap:.15rem;min-width:min(20rem,calc(100vw - 1rem));padding:.35rem;border:1px solid var(--vshd-border);border-radius:.6rem;background:var(--vshd-surface);box-shadow:var(--vshd-glass-shadow);transform-origin:top left;animation:vshd-popover-in var(--vshd-motion-fast) var(--vshd-ease-standard)}.product-switcher__item{display:flex;flex-direction:column;gap:.1rem;padding:.5rem .6rem;border:1px solid transparent;border-radius:.45rem;background:transparent;color:var(--vshd-text);text-align:left;text-decoration:none;font:inherit;cursor:pointer}.product-switcher__item:hover,.product-switcher__item:focus-visible{border-color:var(--vshd-border);background:var(--vshd-bg);outline:none}.product-switcher__item:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:-2px}.product-switcher__item[aria-current=page]{background:var(--vshd-accent-tint);border-color:var(--vshd-accent)}.product-switcher__item[aria-disabled=true]{cursor:default;color:var(--vshd-text-muted)}.product-switcher__item-name{display:flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:600}.product-switcher__check{width:.9rem;height:.9rem;color:var(--vshd-accent)}.product-switcher__item-desc{font-size:.75rem;color:var(--vshd-text-muted)}.product-switcher__badge{align-self:flex-start;margin-top:.2rem;padding:.05rem .4rem;border-radius:var(--vshd-pill-radius);border:1px solid var(--vshd-border);font-size:.65rem;letter-spacing:.03em;text-transform:uppercase;color:var(--vshd-text-muted)}.overflow-menu{position:relative;display:inline-flex}.overflow-menu__panel{position:absolute;top:calc(100% + .35rem);right:0;z-index:5;display:flex;flex-direction:column;gap:.1rem;min-width:13rem;max-width:calc(100vw - 1rem);padding:.3rem;border:1px solid var(--vshd-border);border-radius:.6rem;background:var(--vshd-surface);box-shadow:var(--vshd-glass-shadow);transform-origin:top right;animation:vshd-popover-in var(--vshd-motion-fast) var(--vshd-ease-standard)}.overflow-menu__item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.45rem .55rem;border:1px solid transparent;border-radius:.4rem;background:transparent;color:var(--vshd-text);font-size:.8rem;text-align:left;cursor:pointer}.overflow-menu__item:hover:not(:disabled){background:var(--vshd-bg)}.overflow-menu__item:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:-2px}.overflow-menu__item:disabled{opacity:.5;cursor:not-allowed}.overflow-menu__item[aria-pressed=true]{background:var(--vshd-accent-tint);border-color:var(--vshd-accent);font-weight:600}.overflow-menu__item-icon{flex:none;width:var(--vshd-icon-size);height:var(--vshd-icon-size)}.pill-strip{position:relative;display:flex;align-items:center;gap:.35rem;min-height:var(--vshd-strip-height);padding:0 .5rem .35rem}.pill-strip__track{display:flex;align-items:center;gap:.35rem;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-behavior:smooth;padding:.2rem .15rem;scrollbar-width:none;-ms-overflow-style:none}.pill-strip__track::-webkit-scrollbar{display:none}@media(prefers-reduced-motion:reduce){.pill-strip__track{scroll-behavior:auto}}.pill-strip__group{display:flex;align-items:center;gap:.35rem;flex:none}.pill-strip__divider{flex:none;width:1px;align-self:stretch;margin:.2rem .15rem;background:var(--vshd-border)}.pill-strip__pinned{position:relative;z-index:1;display:flex;align-items:center;gap:.35rem;flex:none;padding-left:.4rem}.pill-strip__pinned:empty{display:none}.pill-strip__more{gap:.2rem}.pill-strip__more svg{width:var(--vshd-icon-size);height:var(--vshd-icon-size)}button.vshd-icon-btn.pill-strip__drawer-toggle{border-radius:var(--vshd-pill-radius)}.pill-strip__hint{position:absolute;top:100%;left:.75rem;margin:.15rem 0 0;font-size:.7rem;color:var(--vshd-text-muted)}.vshd-pill{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;flex:none;padding:.35rem .7rem;min-height:1.85rem;border:1px solid var(--vshd-border);border-radius:var(--vshd-pill-radius);background:var(--vshd-surface);color:var(--vshd-text);font-size:.75rem;white-space:nowrap;cursor:pointer;transition:background-color var(--vshd-motion-fast) var(--vshd-ease-standard),border-color var(--vshd-motion-fast) var(--vshd-ease-standard),color var(--vshd-motion-fast) var(--vshd-ease-standard)}.vshd-pill:disabled{opacity:.5;cursor:not-allowed}.vshd-pill:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:1px}button.vshd-icon-btn.vshd-pill--icon{width:auto;height:auto;min-width:1.85rem;padding:.35rem;border-radius:var(--vshd-pill-radius)}.vshd-pill[aria-selected=true],button.vshd-icon-btn.vshd-pill[aria-pressed=true]{background:var(--vshd-accent-tint);border-color:var(--vshd-accent-border);color:var(--vshd-accent-text);font-weight:var(--vshd-weight-semibold)}.edit-mode-badge{flex:none;padding:.2rem .55rem;border-radius:var(--vshd-pill-radius);background:var(--vshd-accent);color:var(--vshd-accent-contrast);font-size:var(--vshd-text-2xs);font-weight:var(--vshd-weight-semibold);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}@media(max-width:1024px){.app-bar{padding:.25rem .5rem}.app-bar__actions{gap:.15rem}.edit-mode-badge{padding:.15rem .4rem;font-size:.6rem;letter-spacing:.02em}.vshd-pill{min-height:var(--vshd-touch-target);padding-inline:.85rem}button.vshd-icon-btn.vshd-pill--icon{min-width:var(--vshd-touch-target);min-height:var(--vshd-touch-target)}.pill-strip__pinned{background:var(--vshd-glass-chrome-bg);border-left:1px solid var(--vshd-border)}.product-switcher__item{min-height:var(--vshd-touch-target);justify-content:center}.overflow-menu__item{min-height:var(--vshd-touch-target);font-size:.85rem}}.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: var(--vshd-glass-surface);--vshd-panel-chrome-bg: var(--vshd-glass-chrome-bg);--vshd-panel-shadow: var(--vshd-glass-shadow);--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:var(--vshd-glass-blur);-webkit-backdrop-filter:var(--vshd-glass-blur)}.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);padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,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:var(--vshd-touch-target);height:var(--vshd-touch-target)}@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:var(--vshd-accent-contrast);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:var(--vshd-accent-contrast);border-color:var(--vshd-accent)}.vshd-control__button--danger{color:var(--vshd-danger);border-color:var(--vshd-danger-border)}.vshd-control__button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:1024px){.vshd-control__segment,.vshd-control__button{min-height:var(--vshd-touch-target)}.vshd-control__checkbox{width:1.5rem;height:1.5rem}.vshd-control--inline{min-height:var(--vshd-touch-target)}}.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:var(--vshd-text-2xs);padding:.1rem .5rem;border-radius:var(--vshd-radius-xs);background:var(--vshd-overlay-chip-bg);color:var(--vshd-overlay-chip-text)}.viewer__scope-banner{position:absolute;top:.75rem;left:50%;transform:translate(-50%);z-index:5;display:flex;align-items:center;gap:.6rem;max-width:calc(100% - 2rem);padding:.4rem .6rem .4rem .85rem;border:1px solid var(--vshd-border);border-radius:var(--vshd-pill-radius);background:var(--vshd-glass-surface);box-shadow:var(--vshd-glass-shadow);backdrop-filter:var(--vshd-glass-blur);-webkit-backdrop-filter:var(--vshd-glass-blur);color:var(--vshd-text);font-size:var(--vshd-text-sm)}.viewer__scope-banner button{flex:none;padding:.3rem .65rem;border:1px solid var(--vshd-accent-border);border-radius:var(--vshd-pill-radius);background:var(--vshd-accent);color:var(--vshd-accent-contrast);font-size:var(--vshd-text-sm);font-weight:var(--vshd-weight-semibold);cursor:pointer}.viewer__scope-banner button:focus-visible{outline:2px solid var(--vshd-accent);outline-offset:2px}@media(max-width:1024px){.viewer__scope-banner{top:calc(var(--vshd-app-bar-height) + var(--vshd-strip-height) + env(safe-area-inset-top,0) + .5rem);left:.5rem;right:.5rem;max-width:none;transform:none;flex-wrap:wrap}.viewer__scope-banner button{min-height:var(--vshd-touch-target);padding-inline:.85rem}}.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:var(--vshd-danger)}.viewer__loading{display:flex;flex-direction:column;align-items:center;gap:.4rem}.viewer__loading-mark{width:1.75rem;height:1.75rem;margin-bottom:.15rem;border-radius:50%;border:3px solid color-mix(in srgb,var(--vshd-accent) 25%,transparent);border-top-color:var(--vshd-accent);animation:vshd-loading-spin .9s linear infinite}@keyframes vshd-loading-spin{to{transform:rotate(360deg)}}.viewer__loading-brand{margin:0;font-size:var(--vshd-text-2xs);font-weight:var(--vshd-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--vshd-text-muted)}.viewer__loading-text{margin:0;font-size:var(--vshd-text-sm);color:var(--vshd-text)}.viewer__progress-track{width:12rem;max-width:60vw;height:.3rem;border-radius:999px;background:color-mix(in srgb,var(--vshd-text) 20%,transparent);overflow:hidden}.viewer__progress-fill{height:100%;background:var(--vshd-accent);width:0%;transition:width .12s linear}@media(prefers-reduced-motion:reduce){.viewer__loading-mark{animation:none}.viewer__progress-fill{transition:none}}:root{--vshd-green-50: #f1f9f7;--vshd-green-100: #dbf0ea;--vshd-green-200: #b6ddd2;--vshd-green-300: #84c2b2;--vshd-green-400: #4ea68f;--vshd-green-500: #3a8873;--vshd-green-600: #2f6f5e;--vshd-green-700: #255b4c;--vshd-green-800: #1a4237;--vshd-green-900: #112d25;--vshd-gray-0: #ffffff;--vshd-gray-25: #fbfbfc;--vshd-gray-50: #f4f5f6;--vshd-gray-100: #f0f2f3;--vshd-gray-150: #e7e9eb;--vshd-gray-200: #dde1e4;--vshd-gray-300: #c3c9cf;--vshd-gray-500: #5f6771;--vshd-gray-600: #4a515a;--vshd-gray-700: #343a42;--vshd-gray-750: #2f363e;--vshd-gray-800: #232930;--vshd-gray-850: #1b2026;--vshd-gray-900: #12161a;--vshd-gray-950: #0e1216;--vshd-gray-ink: #1c2226;--vshd-gray-fog: #e5e9ed;--vshd-red-400: #ff8787;--vshd-red-500: #e5484d;--vshd-red-600: #c92a2a;--vshd-red-border-light: #f0b0b0;--vshd-red-border-dark: #7a3b3b;--vshd-radius-xs: .25rem;--vshd-radius-sm: .3rem;--vshd-radius-md: .45rem;--vshd-radius-lg: .6rem;--vshd-radius-xl: .75rem;--vshd-radius-pill: 999px;--vshd-space-1: .25rem;--vshd-space-2: .5rem;--vshd-space-3: .75rem;--vshd-space-4: 1rem;--vshd-space-5: 1.5rem;--vshd-text-2xs: .6875rem;--vshd-text-xs: .75rem;--vshd-text-sm: .8125rem;--vshd-text-base: .875rem;--vshd-text-md: 1rem;--vshd-text-lg: 1.125rem;--vshd-line-tight: 1.25;--vshd-line-normal: 1.45;--vshd-weight-medium: 500;--vshd-weight-semibold: 600;--vshd-motion-fast: .12s;--vshd-motion-base: .18s;--vshd-motion-slow: .24s;--vshd-ease-standard: cubic-bezier(.2, 0, 0, 1);--vshd-ease-emphasized: cubic-bezier(.2, 0, 0, 1.2);--vshd-overlay-chip-bg: color-mix(in srgb, #0a0e12 60%, transparent);--vshd-overlay-chip-text: #ffffff;--vshd-app-bar-height: 3rem;--vshd-strip-height: 2.75rem;--vshd-pill-radius: var(--vshd-radius-pill);--vshd-icon-size: 16px;--vshd-touch-target: 44px;--vshd-bg: var(--vshd-gray-50);--vshd-surface: var(--vshd-gray-0);--vshd-surface-soft: var(--vshd-gray-100);--vshd-canvas-bg: var(--vshd-gray-150);--vshd-border: var(--vshd-gray-200);--vshd-border-strong: var(--vshd-gray-300);--vshd-text: var(--vshd-gray-ink);--vshd-text-muted: var(--vshd-gray-500);--vshd-accent: var(--vshd-green-600);--vshd-accent-contrast: var(--vshd-gray-0);--vshd-accent-text: var(--vshd-green-700);--vshd-accent-border: var(--vshd-green-600);--vshd-accent-tint: color-mix(in srgb, var(--vshd-green-600) 12%, var(--vshd-surface));--vshd-danger: var(--vshd-red-600);--vshd-danger-border: var(--vshd-red-border-light);--vshd-elevation-1: 0 1px 2px rgba(20, 28, 34, .08);--vshd-elevation-2: 0 4px 12px rgba(20, 28, 34, .12), 0 1px 3px rgba(20, 28, 34, .08);--vshd-elevation-3: 0 12px 32px rgba(20, 28, 34, .2), 0 2px 6px rgba(20, 28, 34, .12);--vshd-focus-ring: 0 0 0 2px var(--vshd-accent);--vshd-glass-surface: color-mix(in srgb, var(--vshd-surface) 82%, transparent);--vshd-glass-chrome-bg: color-mix(in srgb, var(--vshd-surface) 90%, transparent);--vshd-glass-shadow: var(--vshd-elevation-2);--vshd-glass-blur: blur(8px) saturate(120%);--vshd-scrim: rgba(10, 14, 18, .28);color-scheme:light}:root[data-theme=dark]{--vshd-bg: var(--vshd-gray-900);--vshd-surface: var(--vshd-gray-850);--vshd-surface-soft: var(--vshd-gray-800);--vshd-canvas-bg: var(--vshd-gray-950);--vshd-border: var(--vshd-gray-750);--vshd-border-strong: var(--vshd-gray-700);--vshd-text: var(--vshd-gray-fog);--vshd-text-muted: #9aa3ad;--vshd-accent: var(--vshd-green-400);--vshd-accent-contrast: var(--vshd-green-900);--vshd-accent-text: var(--vshd-green-300);--vshd-accent-border: var(--vshd-green-400);--vshd-accent-tint: color-mix(in srgb, var(--vshd-green-400) 18%, var(--vshd-surface));--vshd-danger: var(--vshd-red-400);--vshd-danger-border: var(--vshd-red-border-dark);--vshd-elevation-1: 0 1px 2px rgba(0, 0, 0, .45);--vshd-elevation-2: 0 4px 14px rgba(0, 0, 0, .5), 0 1px 3px rgba(0, 0, 0, .4);--vshd-elevation-3: 0 14px 36px rgba(0, 0, 0, .6), 0 2px 8px rgba(0, 0, 0, .45);--vshd-glass-shadow: var(--vshd-elevation-2);--vshd-scrim: rgba(0, 0, 0, .5);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--vshd-bg: var(--vshd-gray-900);--vshd-surface: var(--vshd-gray-850);--vshd-surface-soft: var(--vshd-gray-800);--vshd-canvas-bg: var(--vshd-gray-950);--vshd-border: var(--vshd-gray-750);--vshd-border-strong: var(--vshd-gray-700);--vshd-text: var(--vshd-gray-fog);--vshd-text-muted: #9aa3ad;--vshd-accent: var(--vshd-green-400);--vshd-accent-contrast: var(--vshd-green-900);--vshd-accent-text: var(--vshd-green-300);--vshd-accent-border: var(--vshd-green-400);--vshd-accent-tint: color-mix( in srgb, var(--vshd-green-400) 18%, var(--vshd-surface) );--vshd-danger: var(--vshd-red-400);--vshd-danger-border: var(--vshd-red-border-dark);--vshd-elevation-1: 0 1px 2px rgba(0, 0, 0, .45);--vshd-elevation-2: 0 4px 14px rgba(0, 0, 0, .5), 0 1px 3px rgba(0, 0, 0, .4);--vshd-elevation-3: 0 14px 36px rgba(0, 0, 0, .6), 0 2px 8px rgba(0, 0, 0, .45);--vshd-glass-shadow: var(--vshd-elevation-2);--vshd-scrim: rgba(0, 0, 0, .5);color-scheme:dark}}:root{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);font-size:var(--vshd-text-base);line-height:var(--vshd-line-normal)}button{font:inherit}.vshd-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.right-drawer{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.drawer-section{border:1px solid var(--vshd-border);border-radius:var(--vshd-radius-sm);background:var(--vshd-surface)}.drawer-section__summary{cursor:pointer;-webkit-user-select:none;user-select:none;padding:.45rem .6rem;font-size:var(--vshd-text-sm);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:var(--vshd-radius-sm)}.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:var(--vshd-radius-sm);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:var(--vshd-accent-contrast);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:1024px){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:var(--vshd-text-sm);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:var(--vshd-text-sm);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:var(--vshd-text-sm);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:var(--vshd-text-sm)}.region-list__kind{color:var(--vshd-text-muted)}.region-list__limit-message{margin:.5rem 0 0;font-size:var(--vshd-text-xs);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:var(--vshd-text-sm);flex-wrap:wrap}.floor-list__field{display:flex;align-items:center;gap:.2rem;font-size:var(--vshd-text-xs);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:var(--vshd-text-xs)}.area-list__row{display:flex;flex-direction:column;gap:.3rem;padding-bottom:.4rem;border-bottom:1px solid var(--vshd-border);font-size:var(--vshd-text-sm)}.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:var(--vshd-text-xs)}.area-list__total{margin:.4rem 0 0;font-size:var(--vshd-text-xs);font-weight:600}.area-list__empty{margin:0;color:var(--vshd-text-muted);font-size:var(--vshd-text-sm)}.area-form{display:flex;flex-direction:column;gap:.4rem;margin-top:.5rem;font-size:var(--vshd-text-sm)}.area-form__row{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.area-tool-controls{margin-top:.5rem;font-size:var(--vshd-text-sm)}.area-tool-controls p{margin:0 0 .3rem;color:var(--vshd-text-muted)}.area-tool-controls__error{color:var(--vshd-danger)}.yaml-editor__text{width:100%;min-height:12rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:var(--vshd-text-xs);border:1px solid var(--vshd-border);border-radius:var(--vshd-radius-sm);padding:.4rem;resize:vertical}.yaml-editor__error{color:var(--vshd-danger);font-size:var(--vshd-text-xs);margin:.3rem 0}.yaml-editor__notice{font-size:var(--vshd-text-xs);color:var(--vshd-text-muted);margin:0 0 .4rem}.status-strip{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}.status-strip__notice{font-size:var(--vshd-text-xs);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:var(--vshd-radius-sm);background:var(--vshd-surface);font-size:var(--vshd-text-xs);cursor:pointer;min-height:2.2rem}.furniture-library__grid button[aria-pressed=true]{background:var(--vshd-accent);color:var(--vshd-accent-contrast);border-color:var(--vshd-accent)}.furniture-library__grid button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:1024px){.furniture-library__grid button{min-height:var(--vshd-touch-target)}}@media(max-width:1024px){.drawer-panel button,.drawer-panel select,.drawer-panel input[type=text],.drawer-panel input[type=number],.section-axis__row{min-height:var(--vshd-touch-target)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
