:root{color-scheme:dark;--bg0: #07090d;--bg1: #0c1016;--bg2: #121821;--bg3: #19212c;--line: #202a36;--line-2: #2e3b4a;--ink: #d9e3ee;--ink-dim: #8595a8;--ink-faint: #5c6a7b;--accent: #45e0c8;--accent-ink: #04261f;--accent-soft: rgba(69, 224, 200, .13);--accent-line: rgba(69, 224, 200, .55);--glow: 0 0 0 1px rgba(69, 224, 200, .35), 0 0 16px -4px rgba(69, 224, 200, .5);--danger: #ff6d7a;--warn: #f0b459;--ok: #62dd93;--ch-size: #4fd8eb;--ch-spacing: #f0b459;--ch-angle: #b39aff;--ch-shape: #ff85b3;--cv-bg: #07090d;--cv-sheet: #0d1219;--cv-panel: #2c3644;--cv-panel-line: #55647a;--cv-handle-ring: #0a0d12;--r: 2px;--r-lg: 3px;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--fs-micro: 10.5px;--fs-label: 11.5px;--fs-body: 12.5px;--fs-value: 12.5px;--fs-title: 14px;--t-fast: .12s;--t-med: .17s;--ease: cubic-bezier(.25, .1, .25, 1);--shadow-pop: 0 6px 28px rgba(0, 0, 0, .5)}[data-theme=light]{color-scheme:light;--bg0: #e9edf1;--bg1: #f5f7f9;--bg2: #ffffff;--bg3: #e6ebf0;--line: #d3dbe2;--line-2: #b7c2cc;--ink: #16212c;--ink-dim: #56677a;--ink-faint: #8695a4;--accent: #0a8d7e;--accent-ink: #ffffff;--accent-soft: rgba(10, 141, 126, .1);--accent-line: rgba(10, 141, 126, .55);--glow: 0 0 0 1px rgba(10, 141, 126, .3), 0 0 14px -4px rgba(10, 141, 126, .35);--danger: #cc2f42;--warn: #9c6408;--ok: #17824a;--ch-size: #0879a8;--ch-spacing: #a86a08;--ch-angle: #6a4bd4;--ch-shape: #c0286b;--cv-bg: #dde3e9;--cv-sheet: #f2f5f7;--cv-panel: #c2ccd7;--cv-panel-line: #8b99a9;--cv-handle-ring: #f5f7f9;--shadow-pop: 0 6px 28px rgba(30, 42, 56, .25)}@media(prefers-reduced-motion:reduce){:root{--t-fast: 0ms;--t-med: 0ms}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg0);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-body);overflow:hidden}:focus-visible{outline:1px solid var(--accent);outline-offset:1px}::selection{background:var(--accent-soft)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.app{display:flex;flex-direction:column;height:100%}button{background:var(--bg2);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);padding:5px 10px;cursor:pointer;font-size:var(--fs-body);font-family:var(--font-ui);transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}button:hover:not(:disabled){border-color:var(--line-2);background:var(--bg3)}button:disabled{opacity:.38;cursor:default}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent);box-shadow:var(--glow);border-color:var(--accent)}button.active{border-color:var(--accent-line);background:var(--accent-soft);color:var(--ink);box-shadow:var(--glow)}button.quiet{background:transparent;border-color:transparent;color:var(--ink-dim)}button.quiet:hover:not(:disabled){color:var(--ink);background:var(--bg3);border-color:transparent}button.danger{color:var(--danger)}button.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:5px 8px}button.icon-btn svg{flex:none}select,input[type=number],input[type=text]{background:var(--bg2);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);padding:4px 6px;font-size:var(--fs-value);font-family:var(--font-ui)}select:hover,input:hover{border-color:var(--line-2)}select:focus,input:focus{border-color:var(--accent-line);outline:none}input[type=checkbox]{accent-color:var(--accent)}kbd{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--ink-dim);background:var(--bg2);border:1px solid var(--line);border-bottom-width:2px;border-radius:var(--r);padding:1px 5px;min-width:16px;display:inline-block;text-align:center}.switch{display:inline-flex;align-items:center;gap:7px;color:var(--ink-dim);cursor:pointer;user-select:none;font-size:var(--fs-label)}.switch input{appearance:none;width:26px;height:14px;margin:0;border:1px solid var(--line-2);border-radius:7px;background:var(--bg2);position:relative;cursor:pointer;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:8px;height:8px;border-radius:50%;background:var(--ink-dim);transition:transform var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.switch input:checked{border-color:var(--accent-line);background:var(--accent-soft)}.switch input:checked:after{transform:translate(12px);background:var(--accent)}.toolbar{display:flex;align-items:center;gap:10px;padding:7px 12px;background:var(--bg1);border-bottom:1px solid var(--line);flex-wrap:wrap;min-height:46px}.brand{display:flex;align-items:center;gap:8px;font-weight:650;font-size:var(--fs-title);letter-spacing:.06em;text-transform:uppercase;margin-right:4px;user-select:none;background:transparent;border:none;padding:2px 4px;color:var(--ink);cursor:pointer}.brand:hover:not(:disabled){background:var(--bg3);border:none}.brand svg{color:var(--accent)}.brand-version{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--ink-faint);letter-spacing:0;align-self:flex-start}.toolbar-group{display:flex;align-items:center;gap:6px}.toolbar-sep{width:1px;height:20px;background:var(--line)}.toolbar-spacer{flex:1}.seed-chip{position:relative;display:flex;align-items:center;border:1px solid var(--line);border-radius:var(--r);background:var(--bg2);overflow:visible}.seed-chip>.seed-label{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);padding:0 4px 0 8px;user-select:none}.seed-chip input{border:none;background:transparent;width:74px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:5px 2px}.seed-chip input:focus{outline:none}.seed-chip:focus-within{border-color:var(--accent-line)}.seed-chip button{border:none;border-left:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink-dim);padding:4px 6px}.seed-chip button:hover:not(:disabled){color:var(--accent);background:var(--bg3)}.seed-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:150px;background:var(--bg1);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);z-index:40;padding:4px}.seed-menu-title{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);padding:4px 8px}.seed-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:5px 8px}.seed-menu button:hover{background:var(--accent-soft);color:var(--ink)}.seed-menu .hint{margin:2px 8px 4px}.context-menu{position:absolute;z-index:55;min-width:160px;background:color-mix(in srgb,var(--bg1) 92%,transparent);backdrop-filter:blur(8px);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:4px;animation:rise-in var(--t-fast) var(--ease)}.context-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:6px 9px}.context-menu button:hover{background:var(--accent-soft)}.main-row{display:flex;flex:1;min-height:0}.mode-rail{display:flex;flex-direction:column;gap:2px;padding:8px 6px;background:var(--bg1);border-right:1px solid var(--line);overflow-y:auto}.mode-btn{display:flex;flex-direction:column;align-items:center;gap:4px;width:64px;padding:8px 2px 6px;background:transparent;border:1px solid transparent;color:var(--ink-dim);position:relative}.mode-btn span{font-size:10px;letter-spacing:.04em;line-height:1.2;text-align:center;max-width:100%}.mode-btn:hover:not(:disabled){color:var(--ink);background:var(--bg3);border-color:transparent}.mode-btn.active{color:var(--accent);background:var(--accent-soft);border-color:transparent;box-shadow:none}.mode-btn.active:before{content:"";position:absolute;left:-6px;top:6px;bottom:6px;width:2px;background:var(--accent)}.canvas-wrap{position:relative;flex:1;min-width:0;background:var(--cv-bg)}.canvas-wrap canvas{display:block;touch-action:none;outline-offset:-2px}.canvas-wrap canvas:focus:not(:focus-visible){outline:none}.canvas-wrap canvas.crosshair{cursor:crosshair}.canvas-wrap canvas.cursor-ew{cursor:ew-resize}.canvas-wrap canvas.cursor-ns{cursor:ns-resize}.canvas-hud{position:absolute;right:10px;top:10px;display:flex;gap:6px}.canvas-hud button{background:color-mix(in srgb,var(--bg1) 82%,transparent);backdrop-filter:blur(6px)}.side-panel{width:292px;overflow-y:auto;background:var(--bg1);border-left:1px solid var(--line);padding:2px 0 24px}.panel-section{padding:10px 14px 12px;border-bottom:1px solid var(--line)}.panel-section h3{display:flex;align-items:center;gap:7px;margin:2px 0 10px;font-size:var(--fs-micro);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-dim)}.panel-section h3:before{content:"";width:7px;height:1px;background:var(--accent);flex:none}.row{display:flex;align-items:center;gap:8px;margin:6px 0}.row select{flex:1;min-width:0}.row-label{color:var(--ink-dim);font-size:var(--fs-label);min-width:62px}.add-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(58px,1fr));gap:6px}.add-row .icon-btn{justify-content:center;padding-left:4px;padding-right:4px}.batch-row{flex-wrap:wrap;row-gap:4px}.option-row{flex-wrap:wrap;column-gap:12px;row-gap:4px}.mini{white-space:nowrap}.hint{color:var(--ink-faint);font-size:var(--fs-label);line-height:1.45;margin:6px 0}.vfield{display:flex;align-items:center;gap:6px;margin:6px 0}.vfield-label{color:var(--ink-dim);font-size:var(--fs-label);min-width:62px;cursor:ew-resize;user-select:none;touch-action:none;border-bottom:1px dashed transparent}.vfield-label:hover{color:var(--ink);border-bottom-color:var(--line-2)}.vfield-label.scrubbing{color:var(--accent);border-bottom-color:var(--accent-line)}.vfield input{width:74px;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.vfield-box{position:relative;display:inline-flex;align-items:center}.vfield-box input{padding-right:18px}.vfield-steppers{position:absolute;right:1px;top:1px;bottom:1px;width:14px;display:flex;flex-direction:column;border-left:1px solid var(--line)}.vfield-step{flex:1;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:0;background:transparent;color:var(--ink-faint)}.vfield-step svg{display:block}.vfield-step.up svg{transform:rotate(180deg)}.vfield-step:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.vfield-unit{color:var(--ink-faint);font-size:var(--fs-micro);min-width:20px}.vfield.compact .vfield-label{min-width:0}.vfield.compact input{width:62px}.sliderfield{display:flex;align-items:center;gap:8px;margin:8px 0}.sliderfield input[type=range]{flex:1;accent-color:var(--accent);height:18px}.sliderfield-value{min-width:62px;text-align:right;color:var(--ink-dim);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-value);background:transparent;border:0;border-radius:0;padding:0;border-bottom:1px dashed transparent}.sliderfield-value:hover{color:var(--ink);border-bottom-color:var(--line-2)}.sliderfield-edit{width:62px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.tabs{display:flex;gap:4px;margin-bottom:8px}.tab{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 2px;font-size:12px;white-space:nowrap;background:transparent;color:var(--ink-dim)}.tab-dot{width:6px;height:6px;border-radius:50%;background:var(--tab-color, var(--accent));opacity:.5;flex:none}.tab.active{color:var(--ink);border-color:var(--tab-color, var(--accent-line));background:var(--bg2);box-shadow:none}.tab.active .tab-dot{opacity:1;box-shadow:0 0 6px var(--tab-color, var(--accent))}.tab-badge{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--ink-faint)}.image-block{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;margin:8px 0;background:var(--bg2)}.controller{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;margin:8px 0;background:var(--bg2);transition:border-color var(--t-fast) var(--ease)}.controller.selected{border-color:var(--accent-line);box-shadow:var(--glow)}.controller-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.controller-kind{font-weight:600;text-transform:capitalize;flex:1;display:flex;align-items:center;gap:6px}.mini{display:flex;align-items:center;gap:4px;color:var(--ink-dim);font-size:var(--fs-label)}.status-bar{display:flex;gap:14px;padding:5px 12px;background:var(--bg1);border-top:1px solid var(--line);color:var(--ink-dim);font-size:var(--fs-label);align-items:center;min-height:28px}.status-bar .stat{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.status-spacer{flex:1}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:5px;background:var(--ok);vertical-align:1px}.status-dot.busy{background:var(--warn)}.status-dot.restarted{background:var(--danger)}.warn{color:var(--warn)}.notum-link{display:inline-flex;align-items:center;color:var(--ink-faint);padding:2px 3px;border-radius:var(--r);transition:color var(--t-fast) var(--ease)}.notum-link:hover{color:var(--ink)}.about{margin-top:14vh;width:min(460px,calc(100vw - 40px))}.about-title{display:flex;align-items:center;gap:12px;margin-bottom:12px}.about-title svg{color:var(--accent)}.about-name{font-size:17px;font-weight:650;letter-spacing:.06em;text-transform:uppercase}.about-version{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--ink-faint)}.about-app p{color:var(--ink-dim);font-size:var(--fs-body);line-height:1.55;margin:8px 0}.about-notum{display:flex;align-items:center;gap:16px;margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg2)}.about-notum-mark{flex:none;color:var(--ink);padding:6px;border-radius:var(--r);transition:color var(--t-fast) var(--ease)}.about-notum-mark:hover{color:var(--accent)}.about-notum-name{font-weight:650;letter-spacing:.03em}.about-notum-tagline{color:var(--ink-dim);font-size:var(--fs-label);margin:3px 0 6px}.about-link{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-line)}.about-link:hover{border-bottom-style:solid;text-shadow:0 0 12px var(--accent-soft)}.overlay-backdrop{position:fixed;inset:0;background:#0406098c;backdrop-filter:blur(3px);z-index:100;display:flex;align-items:flex-start;justify-content:center;animation:fade-in var(--t-med) var(--ease)}[data-theme=light] .overlay-backdrop{background:#1e2a3859}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}}.dialog{background:var(--bg1);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);animation:rise-in var(--t-med) var(--ease);position:relative}.holo-frame:before,.holo-frame:after{content:"";position:absolute;width:12px;height:12px;pointer-events:none}.holo-frame:before{top:-1px;left:-1px;border-top:1px solid var(--accent);border-left:1px solid var(--accent)}.holo-frame:after{bottom:-1px;right:-1px;border-bottom:1px solid var(--accent);border-right:1px solid var(--accent)}.dialog-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}.dialog-head h2{margin:0;font-size:var(--fs-title);font-weight:650;letter-spacing:.05em;text-transform:uppercase;flex:1}.dialog-body{padding:14px 16px;overflow-y:auto}.palette{margin-top:12vh;width:min(580px,calc(100vw - 40px));max-height:62vh;display:flex;flex-direction:column}.palette-input{width:100%;border:none;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:13px 16px;font-size:14px;color:var(--ink)}.palette-input:focus{outline:none;border-bottom-color:var(--accent-line)}.palette-list{overflow-y:auto;padding:6px;margin:0;list-style:none}.palette-section{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);padding:8px 10px 3px}.palette-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r);cursor:pointer;color:var(--ink)}.palette-item svg{color:var(--ink-dim);flex:none}.palette-item .grow{flex:1}.palette-item.hot{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.palette-item.hot svg{color:var(--accent)}.palette-empty{padding:18px 12px;color:var(--ink-faint);text-align:center}.export-dialog{margin-top:9vh;width:min(720px,calc(100vw - 40px));max-height:78vh;display:flex;flex-direction:column}.export-top{display:flex;gap:16px;align-items:stretch}.export-preview{flex:none;border:1px solid var(--line);border-radius:var(--r);background:var(--cv-bg);position:relative;overflow:hidden}.export-preview canvas{display:block}.export-stats{flex:1;display:grid;grid-template-columns:repeat(2,1fr);gap:8px 14px;align-content:start}.export-stat{border:1px solid var(--line);border-radius:var(--r);background:var(--bg2);padding:7px 10px}.export-stat .k{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint)}.export-stat .v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:14px;margin-top:2px}.export-settings{display:flex;gap:18px;align-items:center;margin:14px 0 4px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg2);flex-wrap:wrap}.export-settings .vfield{margin:0}.export-warnings{margin-top:12px;border:1px solid color-mix(in srgb,var(--warn) 45%,var(--line));border-left:2px solid var(--warn);border-radius:var(--r);background:color-mix(in srgb,var(--warn) 7%,var(--bg2));padding:8px 10px;display:flex;flex-direction:column;gap:6px}.export-warning{display:flex;align-items:flex-start;gap:8px;color:var(--ink-dim);font-size:var(--fs-label);line-height:1.4}.export-warning svg{color:var(--warn);flex:none;margin-top:1px}.format-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}.format-card{border:1px solid var(--line);border-radius:var(--r);background:var(--bg2);padding:10px 12px;display:flex;flex-direction:column;gap:6px;transition:border-color var(--t-fast) var(--ease)}.format-card:hover{border-color:var(--line-2)}.format-head{display:flex;align-items:center;gap:8px}.format-head svg{color:var(--accent)}.format-name{font-weight:650;letter-spacing:.04em}.format-ext{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--ink-faint);flex:1;text-align:right}.format-desc{color:var(--ink-dim);font-size:var(--fs-label);line-height:1.4;flex:1}.format-card button{align-self:flex-start}.gallery{margin-top:7vh;width:min(820px,calc(100vw - 40px));max-height:82vh;display:flex;flex-direction:column}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.gallery-card{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:6px;text-align:left;background:var(--bg2)}.gallery-card:hover{border-color:var(--accent-line);box-shadow:var(--glow)}.gallery-card canvas{width:100%;border:1px solid var(--line);border-radius:var(--r)}.gallery-name{font-weight:650;letter-spacing:.03em;margin-top:2px}.gallery-hint{color:var(--ink-faint);font-size:var(--fs-micro);line-height:1.35}.recipe-row{display:flex;gap:8px;flex-wrap:wrap}.gallery-tabs{margin:0 0 0 auto;width:220px}.size-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px;margin-bottom:6px}.size-card{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 6px 7px;background:var(--bg2)}.size-card:hover{border-color:var(--accent-line);box-shadow:var(--glow)}.size-card svg{display:block}.size-dims{color:var(--ink-faint);font-size:var(--fs-micro)}.onboarding{position:fixed;left:86px;bottom:42px;z-index:90;width:300px;background:color-mix(in srgb,var(--bg1) 92%,transparent);backdrop-filter:blur(8px);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:10px 12px;animation:rise-in var(--t-med) var(--ease)}.onboarding-head{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-micro);font-weight:650;text-transform:uppercase;letter-spacing:.09em;color:var(--accent);margin-bottom:6px}.onboarding-step{display:flex;align-items:flex-start;gap:8px;padding:5px 0;color:var(--ink-faint);font-size:var(--fs-label);line-height:1.4}.onboarding-step .idx{font-family:var(--font-mono);font-size:var(--fs-micro);border:1px solid var(--line-2);border-radius:var(--r);min-width:16px;text-align:center;flex:none}.onboarding-step svg{color:var(--ok);flex:none;margin-top:2px}.onboarding-step.hot{color:var(--ink)}.onboarding-step.hot .idx{border-color:var(--accent-line);color:var(--accent)}.onboarding-step.done{color:var(--ink);align-items:center}.mobile-notice{position:fixed;left:50%;transform:translate(-50%);top:52px;z-index:95;width:min(420px,calc(100vw - 16px));background:color-mix(in srgb,var(--bg1) 92%,transparent);backdrop-filter:blur(8px);border:1px solid color-mix(in srgb,var(--warn) 45%,var(--line));border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:10px 12px;animation:rise-in var(--t-med) var(--ease)}.mobile-notice-head{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-micro);font-weight:650;text-transform:uppercase;letter-spacing:.09em;color:var(--warn);margin-bottom:6px}.mobile-notice-body{color:var(--ink-faint);font-size:var(--fs-label);line-height:1.4}.shape-editor{margin-top:7vh;width:min(760px,calc(100vw - 40px));max-height:82vh;display:flex;flex-direction:column}.shape-editor-body{display:flex;gap:16px;align-items:flex-start}.shape-preview{flex:none;position:sticky;top:0}.shape-preview canvas{border:1px solid var(--line);border-radius:var(--r);display:block}.shape-layers{flex:1;min-width:0}.shape-layers .controller{margin-top:10px}.scale-dialog{margin-top:16vh;width:min(420px,calc(100vw - 40px))}.scale-quick{display:inline-flex;gap:4px;margin-left:8px}.history-pop{position:fixed;top:46px;right:300px;width:260px;max-height:60vh;display:flex;flex-direction:column;z-index:60}.history-list{overflow-y:auto;padding:6px}.history-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:none;background:transparent;padding:6px 8px;color:var(--ink-dim);border-radius:var(--r)}.history-item:hover{background:var(--bg3);color:var(--ink)}.history-item.current{color:var(--accent);background:var(--accent-soft)}.history-item.future{opacity:.55}.history-item .idx{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--ink-faint);min-width:22px}.shortcut-sheet{margin-top:10vh;width:min(560px,calc(100vw - 40px));max-height:74vh;display:flex;flex-direction:column}.shortcut-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 24px}.shortcut-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid var(--line);color:var(--ink-dim);font-size:var(--fs-label)}.shortcut-keys{display:flex;gap:3px;flex:none}.inspector{position:absolute;z-index:50;width:236px;background:color-mix(in srgb,var(--bg1) 90%,transparent);backdrop-filter:blur(8px);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:10px 12px;animation:rise-in var(--t-fast) var(--ease)}.inspector-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.inspector-title{flex:1;font-size:var(--fs-micro);font-weight:650;text-transform:uppercase;letter-spacing:.09em;display:flex;align-items:center;gap:6px}.inspector-dot{width:7px;height:7px;border-radius:50%;flex:none}.inspector .vfield input{width:64px}.inspector-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}.toasts{position:fixed;bottom:40px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:200;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:9px;background:color-mix(in srgb,var(--bg1) 92%,transparent);backdrop-filter:blur(8px);border:1px solid var(--line-2);border-left:2px solid var(--accent);border-radius:var(--r);box-shadow:var(--shadow-pop);padding:9px 12px;min-width:220px;max-width:360px;animation:rise-in var(--t-med) var(--ease);font-size:var(--fs-label)}.toast.ok{border-left-color:var(--ok)}.toast.warn{border-left-color:var(--warn)}.toast.error{border-left-color:var(--danger)}.toast button{margin-left:auto}.panel-error{padding:16px;border:1px dashed var(--danger);border-radius:var(--r);margin:12px;color:var(--ink-dim);font-size:var(--fs-label)}.panel-error b{color:var(--danger);display:block;margin-bottom:6px}@media(pointer:coarse){button{padding:8px 12px}.mode-btn{width:70px}}
