@font-face{font-family:Inter;font-weight:400;font-display:swap;src:url(/fonts/inter-400.woff2)format("woff2")}@font-face{font-family:Inter;font-weight:700;font-display:swap;src:url(/fonts/inter-700.woff2)format("woff2")}@font-face{font-family:Caveat;font-weight:400 700;font-display:swap;src:url(/fonts/caveat-500.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-400.woff2)format("woff2")}:root{--bg:#1b1e26;--panel:#22262f;--panel-border:#2e3340;--canvas:#14161c;--grid-minor:#1d2029;--grid-major:#272b37;--text:#e8eaf0;--muted:#8a90a0;--accent:#4dd0e1;--selection:#4d9fe1;--danger:#e05c5c;--snap:#e0b34d;--axis-x:#e05c5c;--axis-y:#4caf7d}[data-theme=light]{--bg:#eceef2;--panel:#f7f8fa;--panel-border:#d8dbe2;--canvas:#fafbfc;--grid-minor:#eef0f4;--grid-major:#dfe3ea;--text:#20242c;--muted:#565d6e}*{box-sizing:border-box}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}*{scrollbar-width:thin;scrollbar-color:var(--muted) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--muted) 45%, transparent);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}::-webkit-scrollbar-track{background:0 0}.icon{pointer-events:none;display:block}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-user-select:none;user-select:none;font:13px/1.4 Inter,system-ui,sans-serif;overflow:hidden}.app{grid-template:"top top top"44px"toolbar viewport dock"1fr"status status status"28px/48px 1fr auto;height:100%;display:grid}.topbar{background:var(--panel);border-bottom:1px solid var(--panel-border);grid-area:top;align-items:center;gap:8px;padding:0 10px;display:flex}.topbar button{align-items:center;gap:5px;display:inline-flex}.save-label{font-size:11px}.topbar .name{font-weight:700}.topbar .spacer{flex:1}.toolbar{background:var(--panel);border-right:1px solid var(--panel-border);flex-direction:column;grid-area:toolbar;align-items:center;gap:4px;padding:6px 0;display:flex}.toolbar button{justify-content:center;align-items:center;width:40px;height:40px;display:flex}.toolbar-sep{background:var(--panel-border);width:24px;height:1px;margin:3px 0}.viewport{background:var(--canvas);grid-area:viewport;position:relative;overflow:hidden}.dock{background:var(--panel);border-left:1px solid var(--panel-border);flex-direction:column;grid-area:dock;width:280px;display:flex;overflow-y:auto}.dock .panel{border-bottom:1px solid var(--panel-border)}.dock .panel-header{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:8px 10px;font-weight:600;display:flex}.dock .panel-header:hover{background:var(--bg)}.panel-chevron{color:var(--muted);transition:transform .12s;display:flex}.panel-header.collapsed .panel-chevron{transform:rotate(-90deg)}.dock{position:relative}.dock-resize{cursor:ew-resize;z-index:5;width:6px;position:absolute;top:0;bottom:0;left:-3px}.dock-resize:hover{background:color-mix(in srgb, var(--accent) 35%, transparent)}.active-layer-chip{color:var(--muted);border:1px solid var(--panel-border);white-space:nowrap;text-overflow:ellipsis;border-radius:10px;align-items:center;gap:5px;max-width:140px;padding:1px 8px;font-size:11px;display:inline-flex;overflow:hidden}.chip-swatch{border-radius:50%;flex:none;width:8px;height:8px}.dock .panel-body{color:var(--muted);padding:8px 10px}.statusbar{background:var(--panel);border-top:1px solid var(--panel-border);color:var(--muted);grid-area:status;align-items:center;gap:14px;padding:0 10px;font-size:12px;display:flex}.statusbar .hint{min-width:0;color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.statusbar .coords,.statusbar .zoom{text-align:right;white-space:nowrap;min-width:130px;font-family:JetBrains Mono,monospace}.statusbar .zoom{min-width:56px}.statusbar .snap-kind{color:var(--snap);text-align:right;text-transform:capitalize;white-space:nowrap;min-width:80px;font-size:11px}@media (max-width:980px){.statusbar .coords,.statusbar .snap-kind{display:none}}.badges{gap:4px;display:flex}.badge{color:var(--muted);border-radius:3px;padding:2px 6px;font-size:10px;transition:border-color .1s,color .1s}.badge:hover{border-color:var(--accent);color:var(--text)}.badge:active{transform:scale(.94)}.badge.on{color:var(--accent);border-color:var(--accent)}.zoom-control{position:relative}.zoom-control .zoom{background:0 0;border:1px solid #0000;justify-content:flex-end;align-items:center;gap:3px;padding:2px 6px;display:inline-flex}.zoom-control .zoom:hover{border-color:var(--panel-border)}.zoom-panel{min-width:150px;position:absolute;bottom:24px;right:0}.measure-input{background:var(--bg);border:1px solid var(--panel-border);width:150px;color:var(--text);border-radius:4px;padding:3px 8px;font-family:JetBrains Mono,monospace;font-size:12px}.measure-input:focus{border-color:var(--accent);outline:none}.measure-input.invalid{border-color:var(--danger);animation:.6s flash-invalid}@keyframes flash-invalid{0%,to{background:var(--bg)}50%{background:#e05c5c40}}.toolbar-sep{border-top:1px solid var(--panel-border);width:24px;margin:4px 0}.context-menu{z-index:100;background:var(--panel);border:1px solid var(--panel-border);border-radius:6px;min-width:170px;padding:4px;position:fixed;box-shadow:0 6px 24px #00000073}.context-menu>div{position:relative}.context-menu.submenu{position:absolute;top:-4px;left:calc(100% - 4px)}.menu-item{text-align:left;background:0 0;border:none;border-radius:4px;justify-content:space-between;gap:12px;width:100%;padding:5px 10px;font-size:12px;display:flex}.menu-item:hover:not(.disabled){background:var(--bg);border:none}.menu-item.disabled{opacity:.35}.menu-sep{border-top:1px solid var(--panel-border);margin:4px 6px}.menu-caret{color:var(--muted)}.region-picker{z-index:95;cursor:crosshair;background:#00000040;outline:none;position:fixed}.region-rect{border:1.5px dashed var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);pointer-events:none;position:absolute}.region-hint{background:var(--panel);border:1px solid var(--panel-border);color:var(--text);pointer-events:none;border-radius:6px;padding:5px 12px;font-size:12px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.help-link{border:1px solid var(--panel-border);width:22px;height:22px;color:var(--muted);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.help-link:hover{color:var(--accent);border-color:var(--accent)}.asset-row{align-items:center;gap:6px;padding:3px 0;font-size:12px;display:flex}.starter-help{margin-top:14px;display:block}.starter-help a{color:var(--accent)}.shortcuts-modal{background:var(--panel);border:1px solid var(--panel-border);width:min(760px,94vw);max-height:88vh;color:var(--text);border-radius:12px;padding:16px 20px;overflow-y:auto}.sc-columns{grid-template-columns:1fr 1fr;gap:4px 28px;margin:8px 0 12px;display:grid}@media (max-width:700px){.sc-columns{grid-template-columns:1fr}}.sc-group{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:12px 0 4px;font-size:11px}.sc-row{align-items:baseline;gap:10px;padding:2px 0;font-size:13px;display:flex}.sc-keys{white-space:nowrap;flex:0 0 150px}.sc-desc{color:var(--muted)}.shortcuts-modal kbd,kbd{background:var(--bg);border:1px solid var(--panel-border);border-bottom-width:2px;border-radius:4px;padding:1px 6px;font:11px JetBrains Mono,monospace}.eden-chip{color:var(--muted);border:1px solid var(--panel-border);white-space:nowrap;border-radius:10px;padding:1px 8px;font-size:11px}.eden-chip.error{color:var(--danger);border-color:var(--danger)}.eden-chip.newer{color:var(--accent);border-color:var(--accent)}.eden-projects{border-top:1px solid var(--panel-border);margin-top:10px;padding-top:4px}.eden-project-list{flex-direction:column;gap:2px;max-height:180px;display:flex;overflow-y:auto}.eden-project-row{border-radius:4px;align-items:center;gap:10px;padding:4px 6px;display:flex}.eden-project-row:hover{background:var(--bg)}.eden-freshness{border:1px solid var(--panel-border);color:var(--muted);white-space:nowrap;border-radius:8px;padding:1px 7px;font-size:10px}.eden-freshness.ok{color:var(--axis-y);border-color:var(--axis-y)}.eden-freshness.ahead{color:var(--snap);border-color:var(--snap)}.eden-freshness.newer{color:var(--accent);border-color:var(--accent)}.eden-config-input{background:var(--bg);width:100%;color:var(--text);border:1px solid var(--panel-border);resize:vertical;border-radius:4px;padding:6px;font-family:JetBrains Mono,monospace;font-size:11px}.objects-panel{max-height:260px;margin:-4px -4px 0;overflow-y:auto}.objects-layer-name{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:6px 4px 2px;font-size:10px}.object-row{cursor:pointer;color:var(--text);border-radius:4px;align-items:center;gap:6px;padding:3px 4px;font-size:12px;display:flex}.object-row:hover{background:var(--bg)}.object-row.selected{background:color-mix(in srgb, var(--selection) 18%, transparent);outline:1px solid var(--selection)}.object-row.dimmed{opacity:.45}.object-icon{color:var(--muted);flex:none;display:flex}.object-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.object-flag{font-size:10px}.object-delete{color:var(--muted);visibility:hidden;background:0 0;border:none;padding:2px;display:flex}.object-row:hover .object-delete{visibility:visible}.object-delete:hover{color:var(--danger)}.layer-row{cursor:pointer;border-radius:4px;align-items:center;gap:6px;padding:3px 4px;display:flex}.layer-row.active{background:var(--bg);font-weight:600}.layer-swatch{border:1px solid var(--panel-border);background:0 0;border-radius:3px;width:22px;height:22px;padding:0}.layer-swatch:hover{border-color:var(--accent)}.layer-opacity{align-items:center;gap:6px;display:inline-flex}.layer-opacity-value{color:var(--muted);min-width:32px;font-size:11px}.layer-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.layer-name-input{background:var(--bg);border:1px solid var(--accent);min-width:0;color:var(--text);border-radius:3px;flex:1;padding:1px 4px}.layer-toggle{opacity:.25;background:0 0;border:none;padding:1px 2px;font-size:11px}.layer-toggle.on{opacity:1}.layer-footer{border-top:1px solid var(--panel-border);align-items:center;gap:4px;margin-top:6px;padding-top:6px;display:flex}.layer-footer button.on{border-color:var(--accent);color:var(--accent)}.layer-opacity{flex:1;display:flex}.layer-opacity input{width:100%}.layer-migrate{background:var(--bg);color:var(--text);border-radius:6px;flex-direction:column;gap:6px;margin:6px 0;padding:8px;display:flex}.layer-migrate-actions{flex-wrap:wrap;gap:4px;display:flex}.inspector{color:var(--text);flex-direction:column;gap:6px;display:flex}.insp-title{text-transform:capitalize;color:var(--accent);font-weight:600}.insp-field{justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.insp-field>span:first-child{color:var(--muted);min-width:54px}.insp-field input:not([type=checkbox]):not([type=color]):not([type=range]),.insp-field select{background:var(--bg);border:1px solid var(--panel-border);color:var(--text);border-radius:3px;width:110px;padding:2px 5px;font-family:JetBrains Mono,monospace;font-size:11px}.insp-field input.narrow{width:48px}.insp-field input.invalid{border-color:var(--danger);animation:.6s flash-invalid}.insp-inline{align-items:center;gap:4px;display:flex}.insp-inline select{width:auto}.insp-check{color:var(--muted);align-items:center;gap:3px;font-size:11px;display:flex}.insp-actions{gap:6px;margin-top:4px;display:flex}.style-editor{border-top:1px solid var(--panel-border);flex-direction:column;gap:6px;padding-top:6px;display:flex}button.danger{border-color:var(--danger);color:var(--danger)}.muted{color:var(--muted)}.appmenu{position:relative}.appmenu-backdrop{z-index:99;position:fixed;inset:0}.appmenu-panel{z-index:100;position:absolute;top:calc(100% + 4px);left:0}.save-dot{background:var(--muted);opacity:.4;border-radius:50%;width:8px;height:8px}.save-dot.saving{background:var(--snap);opacity:1}.save-dot.saved{background:var(--axis-y);opacity:1}.save-dot.error{background:var(--danger);opacity:1}.modal-backdrop{z-index:90;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.projects-modal{background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;flex-direction:column;gap:12px;width:min(720px,92vw);max-height:84vh;padding:14px;display:flex;overflow-y:auto}.projects-head{align-items:center;gap:8px;display:flex}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.project-card{border:1px solid var(--panel-border);border-radius:8px;flex-direction:column;gap:5px;padding:8px;display:flex}.project-card.current{border-color:var(--accent)}.project-thumb{background:var(--canvas);cursor:pointer;border-radius:5px;justify-content:center;align-items:center;height:110px;display:flex;overflow:hidden}.project-thumb img{object-fit:cover;width:100%;height:100%}.project-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.project-meta{font-size:11px}.project-actions{gap:4px;display:flex}.project-actions button{padding:2px 7px;font-size:11px}.storage-meter{color:var(--muted);font-size:11px}.storage-meter.warn{color:var(--danger)}.storage-banner{z-index:80;background:var(--danger);color:#fff;border-radius:6px;padding:5px 14px;font-size:12px;position:fixed;top:48px;left:50%;transform:translate(-50%)}.toasts{z-index:110;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:40px;right:16px}.toast{background:var(--panel);border:1px solid var(--panel-border);border-left:3px solid var(--accent);max-width:340px;color:var(--text);border-radius:6px;align-items:center;gap:10px;padding:8px 12px;font-size:12px;display:flex;box-shadow:0 6px 24px #0006}.toast.error{border-left-color:var(--danger)}.toast.success{border-left-color:var(--axis-y)}.toast-x{color:var(--muted);background:0 0;border:none;padding:0 2px;font-size:14px}.export-modal{background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;flex-direction:column;gap:12px;width:min(860px,94vw);max-height:88vh;padding:14px;display:flex;overflow-y:auto}.export-body{grid-template-columns:320px 1fr;gap:16px;display:grid}.export-options{color:var(--text);flex-direction:column;gap:8px;display:flex}.export-layers{flex-wrap:wrap;max-width:220px}.export-preview{background:repeating-conic-gradient(var(--panel-border) 0% 25%, var(--panel) 0% 50%) 0 0 / 16px 16px;border:1px solid var(--panel-border);border-radius:6px;justify-content:center;align-items:center;min-height:320px;display:flex;overflow:hidden}.export-preview img{max-width:100%;max-height:60vh;box-shadow:0 4px 16px #0006}button.primary{border-color:var(--accent);color:var(--accent);font-weight:600}.settings-modal{background:var(--panel);border:1px solid var(--panel-border);width:min(420px,92vw);max-height:86vh;color:var(--text);border-radius:10px;flex-direction:column;gap:10px;padding:14px;display:flex;overflow-y:auto}.keymap-editor{flex-direction:column;gap:4px;display:flex}.keymap-row{justify-content:space-between;align-items:center;font-size:12px;display:flex}.keymap-row button{min-width:110px;font-family:JetBrains Mono,monospace}.starter-modal{background:var(--panel);border:1px solid var(--panel-border);width:min(720px,94vw);max-height:90vh;color:var(--text);text-align:center;border-radius:12px;padding:22px;overflow-y:auto}.starter-modal h2{margin:0 0 16px}.starter-cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;display:grid}.starter-card{border-radius:10px;flex-direction:column;align-items:center;gap:8px;padding:20px 14px;font-size:13px;display:flex}.starter-card small{color:var(--muted);line-height:1.35}.starter-icon{height:36px;color:var(--accent);justify-content:center;align-items:center;display:flex}.coach-mark{z-index:85;background:var(--panel);border:1px solid var(--accent);max-width:340px;color:var(--text);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-size:12px;display:flex;position:fixed;top:56px;left:60px;box-shadow:0 6px 24px #0006}.inline-text-editor{z-index:95;min-width:120px;color:var(--text);border:1px solid var(--accent);resize:none;background:#14161ceb;border-radius:4px;outline:none;padding:2px 6px;font-family:Inter,system-ui,sans-serif;line-height:1.3;position:fixed}button{background:var(--panel);border:1px solid var(--panel-border);color:var(--text);cursor:pointer;border-radius:4px;padding:4px 10px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}button.active{border-color:var(--accent);color:var(--accent)}
