:root{color-scheme:dark;--bg: #111318;--surface: rgb(23 26 33 / .94);--surface-solid: #171a21;--surface-raised: #222733;--surface-sunken: #0d0f13;--border: #343b4a;--text: #e6e8eb;--muted: #aab2c0;--accent: #f5a524;--accent-soft: rgb(245 165 36 / .16);--accent-ink: #111318;--danger: #ff7b6e;--touch: 44px;--radius: 12px;--shadow: 0 6px 24px rgb(0 0 0 / .45);--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--topbar-row: 56px;--topbar-status-row: 42px;--topbar-h: var(--topbar-row);--tray-h: 68px;--tray-w: 220px;--panel-w: 340px;--sheet-h: 52dvh;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent}html,body{margin:0;width:100%;height:100%;background:var(--bg);overflow:hidden;overscroll-behavior:none}#root,.app-root{position:relative;width:100%;height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none;background:var(--bg)}.canvas-container{position:absolute;inset:0;z-index:0;isolation:isolate;touch-action:none}canvas{display:block;touch-action:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.free-area{position:fixed;top:calc(var(--topbar-h) + var(--safe-top));right:var(--safe-right);bottom:calc(var(--tray-h) + var(--safe-bottom));left:var(--safe-left);pointer-events:none}.app-root--panel-open .free-area{bottom:var(--sheet-h)}.icon-button{flex:none;display:inline-flex;align-items:center;justify-content:center;width:var(--touch);height:var(--touch);padding:0;border:0;border-radius:10px;background:transparent;color:var(--text)}.icon-button:hover:not(:disabled){background:#ffffff12}.icon-button:active:not(:disabled){background:#ffffff1f}.icon-button:disabled{opacity:.35}.icon-button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.icon-button--danger:not(:disabled){color:var(--danger)}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--touch);padding:0 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface-raised);color:var(--text);white-space:nowrap}.text-button:disabled{opacity:.4}.text-button--primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);font-weight:600}.chip{min-width:var(--touch);min-height:var(--touch);padding:0 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface-sunken);color:var(--text);font-size:14px;white-space:nowrap}.top-bar{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;gap:4px;box-sizing:border-box;height:calc(var(--topbar-h) + var(--safe-top));padding:var(--safe-top) max(6px,var(--safe-right)) 0 max(6px,var(--safe-left));background:var(--surface);border-bottom:1px solid var(--border);backdrop-filter:blur(10px);user-select:none}.stage-name{flex:1 1 auto;min-width:0;height:var(--touch);padding:0 10px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text);font-size:16px;font-weight:600;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}button.stage-name:hover{background:#ffffff0f}.stage-name--editing{box-sizing:border-box;border-color:var(--accent);background:var(--surface-sunken);outline:none}.top-bar__actions{flex:none;display:flex;align-items:center;gap:2px}.tray{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;box-sizing:border-box;padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--surface);border-top:1px solid var(--border);backdrop-filter:blur(10px);user-select:none}.tray__items{margin:0;padding:0;list-style:none}.tray__item{display:flex;align-items:center;justify-content:center;gap:10px;min-width:52px;min-height:52px;padding:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);color:var(--text)}.tray__item:active{border-color:var(--accent);background:var(--accent-soft)}.tray__name{font-size:14px;line-height:1.2}.tray__presets{display:flex;gap:6px}.tray__toggle{flex:none;display:inline-flex;align-items:center;justify-content:center;width:var(--touch);border:0;background:transparent;color:var(--muted)}.tray--collapsed{align-items:center;height:calc(var(--tray-h) + var(--safe-bottom))}.tray--collapsed .tray__toggle{height:100%}.tray--collapsed .tray__items{flex:1 1 auto;display:flex;gap:6px;padding:0 8px 0 2px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;touch-action:pan-x;overscroll-behavior:contain;mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent)}.tray--collapsed .tray__items::-webkit-scrollbar{display:none}.tray--collapsed .tray__cell{scroll-snap-align:start}.tray--expanded:not(.tray--wide){z-index:25;flex-direction:column;max-height:70dvh;box-shadow:0 -8px 30px #0006}.tray--expanded:not(.tray--wide) .tray__toggle{width:100%;height:32px}.tray--expanded:not(.tray--wide) .tray__items{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;padding:0 12px 12px;overflow-y:auto;touch-action:pan-y;overscroll-behavior:contain}.tray--expanded .tray__cell{display:flex;flex-direction:column;gap:6px}.tray--expanded .tray__item{justify-content:flex-start;padding:0 12px}.tray--wide{top:calc(var(--topbar-h) + var(--safe-top));right:auto;width:calc(var(--tray-w) + var(--safe-left));flex-direction:column;border-top:0;border-right:1px solid var(--border);overflow-y:auto}.tray--wide .tray__items{display:flex;flex-direction:column;gap:6px;padding:10px}.action-bar{position:fixed;top:0;left:0;z-index:18;display:flex;gap:2px;padding:4px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow);backdrop-filter:blur(10px);visibility:hidden;user-select:none}.free-badge{position:fixed;top:0;left:0;z-index:19;padding:4px 10px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:700;white-space:nowrap;pointer-events:none;user-select:none}.draw-bar{position:fixed;left:50%;bottom:calc(12px + var(--safe-bottom));z-index:20;box-sizing:border-box;width:min(560px,calc(100vw - 16px - var(--safe-left) - var(--safe-right)));transform:translate(-50%);padding:10px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow);backdrop-filter:blur(10px);user-select:none}.draw-bar__top{display:flex;align-items:center;gap:8px;margin-bottom:4px}.draw-bar__hint{flex:1 1 auto;margin:0 4px;color:var(--muted);font-size:14px}.draw-bar__buttons{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.draw-bar__buttons .text-button--primary{margin-left:auto}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;flex-direction:column;box-sizing:border-box;height:var(--sheet-h);padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);border-top:1px solid var(--border);border-radius:16px 16px 0 0;background:var(--surface-solid);box-shadow:0 -8px 30px #0006}.sheet__grip{flex:none;width:36px;height:4px;margin:8px auto 0;border-radius:2px;background:var(--border)}.sheet__header{flex:none;display:flex;align-items:center;gap:4px;padding:2px 6px 2px 16px}.sheet__title{flex:1 1 auto;min-width:0;margin:0;font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sheet__body{flex:1 1 auto;overflow-y:auto;padding:4px 16px 24px;overscroll-behavior:contain;touch-action:pan-y}.properties__subhead{margin:18px 0 8px;color:var(--muted);font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.properties__note{margin:0 0 12px;color:var(--muted);font-size:13px}.field{min-width:0;margin-bottom:12px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field__label{display:block;margin-bottom:4px;color:var(--muted);font-size:13px}.field__input{box-sizing:border-box;width:100%;min-height:var(--touch);padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-sunken);color:var(--text);font-size:16px}textarea.field__input{padding:10px;resize:vertical}.field__input:focus{border-color:var(--accent);outline:none}.field__input:disabled{opacity:.5}.field--invalid .field__input{border-color:var(--danger)}.field__error,.field__hint{margin:4px 0 0;font-size:12px}.field__error{color:var(--danger)}.field__hint{color:var(--muted)}.toggle{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--touch);cursor:pointer}.field--toggle .field__label{margin:0;color:var(--text);font-size:15px}.toggle__input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.toggle__track{position:relative;flex:none;width:44px;height:26px;border-radius:13px;background:#3a4150;transition:background .12s}.toggle__track:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .12s}.toggle__input:checked+.toggle__track{background:var(--accent)}.toggle__input:checked+.toggle__track:after{transform:translate(18px)}.toggle__input:focus-visible+.toggle__track{outline:2px solid var(--accent);outline-offset:2px}.toggle__input:disabled+.toggle__track{opacity:.4}.toggle--inline{justify-content:flex-start;padding:0 6px;font-size:14px}.port{margin:0 0 12px;padding:4px 12px 0;border:1px solid var(--border);border-radius:10px}.port__legend{display:flex;align-items:center;gap:4px;padding:0 4px;color:var(--muted);font-size:13px}.toast{position:fixed;left:50%;bottom:calc(var(--tray-h) + 12px + var(--safe-bottom));z-index:40;transform:translate(-50%);display:flex;align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:8px 8px 8px 14px;border-radius:10px;background:#1f2430;border:1px solid var(--border);box-shadow:var(--shadow);font-size:14px;user-select:none}.toast span{white-space:nowrap}.toast button{min-height:var(--touch);padding:0 12px;border:0;border-radius:6px;font:inherit;cursor:pointer}.toast-action{background:var(--accent);color:var(--accent-ink);font-weight:600}.toast-dismiss{min-width:var(--touch);background:transparent;color:var(--muted);font-size:20px;line-height:1}@media(min-width:768px){.free-area{left:calc(var(--tray-w) + var(--safe-left));bottom:var(--safe-bottom)}.app-root--panel-open .free-area{right:calc(var(--panel-w) + var(--safe-right));bottom:var(--safe-bottom)}.sheet--right,.sheet--left{top:calc(var(--topbar-h) + var(--safe-top));bottom:0;width:calc(var(--panel-w) + var(--safe-right));height:auto;border-top:0;border-radius:0;box-shadow:none}.sheet--right{left:auto;right:0;padding-left:0;border-left:1px solid var(--border)}.sheet--left{left:0;right:auto;padding-right:0;border-right:1px solid var(--border)}.sheet__grip{display:none}.sheet__header{padding-top:6px}.draw-bar{left:calc(50% + var(--tray-w) / 2)}.toast{bottom:calc(16px + var(--safe-bottom))}}.top-bar-status{flex:none;display:flex;align-items:center;gap:6px;min-width:0;margin-left:4px}.save-indicator-wrap{display:flex}.hud-pill{position:relative;display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;min-height:34px;padding:0 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font-size:13px;font-weight:600;line-height:1;white-space:nowrap;backdrop-filter:blur(10px);user-select:none}button.hud-pill:after{content:"";position:absolute;inset:-5px 0}button.hud-pill:active{background:var(--surface-raised)}.round-chip{font-variant-numeric:tabular-nums}.round-chip--over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.save-indicator{color:var(--muted);font-weight:500}.save-indicator__dot{flex:none;width:8px;height:8px;border-radius:50%;background:#4fbf84}.save-indicator--busy .save-indicator__dot,.save-indicator--warn .save-indicator__dot{background:var(--accent)}.save-indicator--busy .save-indicator__dot{animation:save-pulse 1s ease-in-out infinite}.save-indicator--warn,.save-indicator--error{color:var(--text)}.save-indicator--error .save-indicator__dot{background:var(--danger)}@keyframes save-pulse{50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.save-indicator--busy .save-indicator__dot{animation:none}}.save-indicator__detail{position:fixed;z-index:35;top:calc(var(--topbar-h) + var(--safe-top) + 8px);right:max(8px,var(--safe-right));box-sizing:border-box;width:min(300px,calc(100vw - 16px));margin:0;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface-solid);box-shadow:var(--shadow);font-size:13px}@media(max-width:559.98px){:root{--topbar-h: calc(var(--topbar-row) + var(--topbar-status-row))}.top-bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:var(--topbar-row) var(--topbar-status-row);column-gap:4px;align-content:start}.top-bar-status{grid-column:1 / -1;grid-row:2;justify-self:end;margin-left:0;max-width:100%}.round-chip{min-width:0;overflow:hidden;text-overflow:ellipsis}}@media(max-width:767.98px){.stage-sheet{--sheet-h: 62dvh;bottom:var(--kb-inset, 0px);height:min(var(--sheet-h),calc(var(--vv-height, 100dvh) - var(--topbar-h) - var(--safe-top)))}html.keyboard-open .stage-sheet{padding-bottom:0}}.toast-stack{position:fixed;left:50%;bottom:calc(var(--tray-h) + 12px + var(--safe-bottom));z-index:45;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;max-width:calc(100vw - 32px);pointer-events:none}.toast-stack .toast{position:static;transform:none;pointer-events:auto}@media(min-width:768px){.toast-stack{bottom:calc(16px + var(--safe-bottom))}}.stage-toast{z-index:45;width:max-content;max-width:calc(100vw - 32px);box-sizing:border-box}.stage-toast span{min-width:0;white-space:normal;overflow-wrap:anywhere}.text-button--danger{color:var(--danger)}.free-note{margin:12px 0;padding:10px 12px;border:1px solid var(--accent);border-radius:10px;background:var(--accent-soft);color:var(--text);font-size:14px}.menu-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.menu-row{display:flex;align-items:center;gap:12px;box-sizing:border-box;width:100%;min-height:52px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);color:var(--text);text-align:left}.menu-row:active{border-color:var(--accent);background:var(--accent-soft)}.menu-row__icon{flex:none;display:inline-flex;color:var(--muted)}.menu-row__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.menu-row__label{font-size:16px}.menu-row__hint{color:var(--muted);font-size:13px}.menu-row__badge{flex:none;min-width:22px;padding:2px 7px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:700;text-align:center}.menu-about{margin:18px 0 0;color:var(--muted);font-size:13px;text-align:center}.stage-list__count{margin:4px 0 8px;color:var(--muted);font-size:13px}.stage-cards{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}.stage-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised)}.stage-card--open{border-color:var(--accent)}.stage-card__row{display:flex;align-items:center;gap:4px;padding-right:4px}.stage-card__main{flex:1 1 auto;min-width:0;min-height:60px;padding:8px 12px;border:0;border-radius:var(--radius);background:transparent;color:var(--text);text-align:left;display:flex;flex-direction:column;justify-content:center;gap:3px}.stage-card__name{overflow:hidden;font-size:16px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.stage-card__meta{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.stage-card__badge{padding:1px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:600}.stage-card__actions{display:flex;flex-wrap:wrap;gap:8px;padding:0 12px 12px}.inline-rename{flex:1 1 auto;min-width:0;padding:8px 0 8px 8px}.bay-warning{display:flex;align-items:flex-start;gap:10px;margin:8px 0 12px;padding:10px 12px;border:1px solid var(--accent);border-radius:10px;background:var(--accent-soft);font-size:14px}.bay-warning svg{flex:none;color:var(--accent)}.bay-sides{min-width:0;margin:0 0 12px;padding:0;border:0}.bay-sides__row{display:flex;gap:8px}.check{position:relative;flex:1 1 0;display:flex;align-items:center;gap:8px;box-sizing:border-box;min-height:var(--touch);padding:0 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface-sunken);cursor:pointer}.check:has(.check__input:checked){border-color:var(--accent)}.check__input,.choice__input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.check__box{position:relative;flex:none;box-sizing:border-box;width:20px;height:20px;border:2px solid var(--muted);border-radius:5px}.check__input:checked+.check__box{border-color:var(--accent);background:var(--accent)}.check__input:checked+.check__box:after{content:"";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid var(--accent-ink);border-width:0 2px 2px 0;transform:rotate(45deg)}.check__input:focus-visible+.check__box{outline:2px solid var(--accent);outline-offset:2px}.segmented{display:grid;grid-template-columns:1fr 1fr;overflow:hidden;border:1px solid var(--border);border-radius:10px;background:var(--surface-sunken)}.segmented__option{min-height:var(--touch);border:0;background:transparent;color:var(--text)}.segmented__option+.segmented__option{border-left:1px solid var(--border)}.segmented__option[aria-checked=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.bay-list{display:flex;flex-direction:column;gap:8px;margin:0 0 12px;padding:0;list-style:none}.bay-row{display:flex;align-items:center;gap:6px;padding:6px 4px 6px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised)}.bay-row__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.bay-row__name{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.bay-row__meta{color:var(--muted);font-size:13px}.bay-row__actions{flex:none;display:flex;align-items:center;gap:2px}.bay-row .inline-rename{padding-left:0}.bay-name-form__row{display:flex;align-items:center;gap:2px}.bay-name-form__row .field__input{flex:1 1 auto;min-width:0}.choices{min-width:0;margin:0 0 12px;padding:0;border:0}.choice{position:relative;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:52px;margin-bottom:6px;padding:6px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface-sunken);cursor:pointer}.choice:before{content:"";flex:none;box-sizing:border-box;width:20px;height:20px;border:2px solid var(--muted);border-radius:50%}.choice:has(.choice__input:checked){border-color:var(--accent)}.choice:has(.choice__input:checked):before{border-color:var(--accent);background:radial-gradient(circle,var(--accent) 0 40%,transparent 45%)}.choice:has(.choice__input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.choice__text{display:flex;flex-direction:column;gap:2px;min-width:0}.choice__meta{color:var(--muted);font-size:13px}.new-stage__create{width:100%;margin-top:8px}.breakdown{margin:4px 0 0}.breakdown__row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:15px}.breakdown dt{color:var(--muted)}.breakdown dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.breakdown__row--total{font-weight:700}.breakdown__row--total dt{color:var(--text)}.thresholds{margin:0 0 8px;padding:0;list-style:none}.thresholds__item{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:8px;color:var(--muted);font-size:14px}.thresholds__item.is-current{background:var(--accent-soft);color:var(--text);font-weight:600}.import-issues__headline{margin:8px 0;font-weight:600}.import-issues{margin:0 0 12px;padding-left:20px;color:var(--muted);font-size:14px;overflow-wrap:anywhere}.debug-fps{top:auto!important;left:max(6px,var(--safe-left))!important;bottom:calc(var(--tray-h) + var(--safe-bottom) + 6px)!important;pointer-events:none}.debug-draws{position:fixed;left:max(6px,var(--safe-left));bottom:calc(var(--tray-h) + var(--safe-bottom) + 6px + 48px + 3px);z-index:10000;padding:2px 6px;border-radius:4px;background:#000000b3;color:#0f0;font:10px/1.3 monospace;pointer-events:none}@media(min-width:768px){.debug-fps{left:calc(var(--tray-w) + var(--safe-left) + 6px)!important;bottom:calc(6px + var(--safe-bottom))!important}.debug-draws{left:calc(var(--tray-w) + var(--safe-left) + 6px);bottom:calc(6px + var(--safe-bottom) + 48px + 3px)}}
