:root{--bg: #16181c;--panel: #202329;--panel-2: #2a2e35;--fg: #e6e8eb;--fg-dim: #9aa0a8;--border: #343a42;--accent: #4a9eff;--btn: #2a2e35;--btn-hover: #343a42;--status-h: 26px;--top-h: 44px}*{box-sizing:border-box}html,body,#app{margin:0;height:100%;width:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg);overflow:hidden}#app{display:flex;flex-direction:column}#topbar{min-height:var(--top-h);flex:0 0 auto;display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;row-gap:4px;padding:4px 12px;background:var(--panel);border-bottom:1px solid var(--border);user-select:none}.brand{display:flex;align-items:center;margin:0 12px 0 2px;order:-1}.hamburger{display:none;appearance:none;background:none;border:none;color:var(--fg);font-size:20px;line-height:1;cursor:pointer;padding:4px 8px;margin-right:4px;border-radius:6px}.hamburger:hover{background:var(--btn-hover)}.menubar{display:flex;align-items:center;gap:1px}.menu{position:relative}.menu-btn{appearance:none;background:none;border:none;color:var(--fg);padding:6px 10px;border-radius:6px;cursor:pointer;font-size:13px;line-height:1}.menu-btn:hover,.menu.open .menu-btn{background:var(--btn-hover)}.menu-list{position:absolute;top:100%;left:0;margin:4px 0 0;padding:4px;list-style:none;min-width:190px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 34px #0006;z-index:60;display:none}.menu.open .menu-list{display:block}.menu-list li[role=menuitem]{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:6px 10px 6px 26px;border-radius:5px;font-size:13px;cursor:pointer;position:relative;white-space:nowrap}.menu-list li[role=menuitem]:hover:not(.disabled),.menu-list li[role=menuitem]:focus{background:var(--btn-hover);outline:none}.menu-list li.disabled{opacity:.4;cursor:default}.menu-list li.checked:before{content:"✓";position:absolute;left:9px;color:var(--accent);font-size:12px}.menu-list .mk{color:var(--fg-dim);font-size:11px;font-variant-numeric:tabular-nums}.menu-div{height:1px;background:var(--border);margin:4px 6px}#logo{height:30px;width:auto;display:block;filter:invert(1)}body.light #logo{filter:none}.tools{display:flex;gap:4px;align-items:center;flex-wrap:nowrap;justify-content:flex-start;margin-left:6px}.tools .sep,#drawbar .sep{width:1px;align-self:stretch;background:var(--border);margin:4px 3px}.topbar-right{display:flex;gap:4px;align-items:center;flex-wrap:nowrap;margin-left:auto}.iconbtn{appearance:none;border:1px solid transparent;background:transparent;color:var(--fg);width:32px;height:32px;border-radius:7px;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center}.iconbtn:hover:not(:disabled){background:var(--btn-hover);border-color:var(--border)}.iconbtn:disabled{opacity:.35;cursor:default}.iconbtn.active{background:var(--accent);border-color:var(--accent);color:#fff}.iconbtn .ic,.tool .ic{display:block;pointer-events:none}.iconbtn.file-btn{display:inline-flex}.tool-tip{position:fixed;z-index:200;pointer-events:none;background:var(--panel-2);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:12px;line-height:1.3;box-shadow:0 6px 20px #0006;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.tool-tip.hidden{display:none}.tool-tip .tt-name{font-weight:500}.tool-tip .tt-key{font-size:10.5px;font-weight:700;color:var(--accent);letter-spacing:.03em;background:color-mix(in srgb,var(--accent) 16%,transparent);padding:1px 5px;border-radius:4px;font-variant-numeric:tabular-nums}.btn{appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg);padding:5px 12px;border-radius:6px;cursor:pointer;font-size:13px;line-height:1}.btn:hover:not(:disabled){background:var(--btn-hover)}.btn:disabled{opacity:.4;cursor:default}.file-btn{display:inline-flex;align-items:center}.file-btn input{display:none}#drawbar{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-start;padding:6px 12px;background:var(--panel-2);border-bottom:1px solid var(--border);user-select:none}#drawbar.hidden{display:none}.drawbar-tools{display:contents}.drawbar-collapse{appearance:none;background:transparent;border:1px solid transparent;color:var(--fg-dim);width:24px;height:28px;border-radius:6px;cursor:pointer;font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.drawbar-collapse:hover{background:var(--btn-hover);color:var(--fg)}#drawbar.collapsed .drawbar-tools,#drawbar.collapsed .draw-hint{display:none}.drawbar-active{flex:0 0 auto}.drawbar-active.hidden{display:none}.tool{appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg);width:32px;height:32px;padding:0;border-radius:6px;cursor:pointer;font-size:13px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.tool:hover{background:var(--btn-hover)}.tool.active{background:var(--accent);border-color:var(--accent);color:#fff}.draw-hint{color:var(--fg-dim);font-size:12px;margin-left:8px}.text-input{position:fixed;z-index:20;background:var(--panel);color:var(--fg);border:1px solid var(--accent);border-radius:4px;padding:3px 6px;font:14px system-ui,sans-serif;min-width:120px;outline:none}.text-input.hidden{display:none}.dyninput{position:absolute;z-index:25;display:flex;gap:5px;align-items:center;padding:4px 5px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--border);border-radius:7px;box-shadow:0 4px 16px #00000059;pointer-events:none;font-variant-numeric:tabular-nums}.dyninput .di-input,.dyninput .adi-step,.dyninput .ac-mode{pointer-events:auto}.dyninput.hidden{display:none}.di-field{display:inline-flex;align-items:center;gap:3px}.di-label{font-size:10px;color:var(--fg-dim);letter-spacing:.02em}.di-input{width:58px;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:4px;padding:2px 4px;font:12px/1 system-ui,sans-serif;outline:none;text-align:right}.di-input:focus{border-color:var(--accent)}.di-field.focused .di-input{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.di-field.locked .di-input{border-color:var(--accent);font-weight:700;background:color-mix(in srgb,var(--accent) 14%,var(--bg))}.di-field.locked .di-label{color:var(--accent);font-weight:700}.di-field.locked .di-label:after{content:" 🔒";font-size:9px}.array-di{gap:4px}.array-di .adi-label{font-size:11px;color:var(--accent);font-weight:600;letter-spacing:.02em;min-width:60px;text-align:right;font-variant-numeric:tabular-nums}.array-di .adi-input{width:52px}.array-di .adi-step{appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg);width:24px;height:24px;border-radius:5px;cursor:pointer;font-size:15px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.array-di .adi-step:hover{background:var(--btn-hover);border-color:var(--accent)}@media(pointer:coarse){.array-di .adi-step{width:34px;height:34px;font-size:18px}.array-di .adi-input{width:60px;font-size:15px}}.array-create{flex-direction:column;align-items:stretch;gap:6px;min-width:220px}.ac-chooser{display:flex;gap:4px}.ac-mode{flex:1;appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg-dim);padding:4px 8px;border-radius:6px;cursor:pointer;font-size:11px;font-weight:600;letter-spacing:.02em}.ac-mode.active{background:color-mix(in srgb,var(--accent) 18%,var(--bg));border-color:var(--accent);color:var(--fg)}.ac-mode:hover{border-color:var(--accent)}.ac-fields{display:grid;grid-template-columns:1fr 1fr;gap:5px 8px}.ac-field{display:inline-flex;align-items:center;justify-content:space-between;gap:5px}.ac-field .di-input{width:62px}@media(pointer:coarse){.array-create{min-width:260px}.ac-mode{padding:8px 10px;font-size:13px}.ac-field .di-input{width:72px;font-size:15px}}.cmdbar{position:absolute;left:50%;transform:translate(-50%);bottom:calc(var(--status-h) + 8px);z-index:70;width:min(440px,calc(100% - 24px));background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 40px #00000073;overflow:hidden}.cmdbar.hidden{display:none}.cmd-row{display:flex;align-items:center;gap:8px;padding:8px 10px}.cmd-prompt{color:var(--accent);font-size:14px}.cmd-input{flex:1;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font:13px ui-monospace,SFMono-Regular,Menlo,monospace;outline:none;text-transform:uppercase}.cmd-input:focus{border-color:var(--accent)}.cmd-list{list-style:none;margin:0;padding:4px;max-height:240px;overflow-y:auto;border-top:1px solid var(--border)}.cmd-list li{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:6px 8px;border-radius:5px;cursor:pointer;font-size:13px}.cmd-list li:hover,.cmd-list li.active{background:var(--btn-hover)}.cmd-name{font-weight:600}.cmd-alias{color:var(--accent);font:11px ui-monospace,monospace}.cmd-kind{color:var(--fg-dim);font-size:10px;text-transform:uppercase;letter-spacing:.04em}.modal{position:absolute;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;background:#00000080}.modal.hidden{display:none}.modal-box{width:min(640px,calc(100% - 32px));max-height:calc(100% - 48px);overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 20px 60px #00000080}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);font-weight:600;font-size:15px;position:sticky;top:0;background:var(--panel)}.modal-head .x{background:none;border:none;color:var(--fg-dim);font-size:22px;cursor:pointer;line-height:1}.modal-body{padding:14px 16px 18px;display:grid;grid-template-columns:1fr 1fr;gap:14px 26px}.sc-group h4{margin:0 0 6px;font-size:12px;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.sc-group dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0}.sc-group dt{font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--btn);border:1px solid var(--border);border-radius:4px;padding:1px 5px;justify-self:start;white-space:nowrap}.sc-group dd{margin:0;font-size:12.5px;color:var(--fg);align-self:center}.modal-foot{padding:10px 16px 14px;border-top:1px solid var(--border);color:var(--fg-dim);font-size:11px;opacity:.8}@media(max-width:560px){.modal-body{grid-template-columns:1fr}}.drop-logo{width:220px;max-width:60%;height:auto;margin-bottom:12px;filter:invert(1);opacity:.9}body.light .drop-logo{filter:none}#stage{position:relative;flex:1 1 auto;min-height:0}#gl{display:block;width:100%;height:100%;touch-action:none}.drop{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,rgba(74,158,255,.06),transparent 60%);text-align:center;pointer-events:none;transition:background .15s}.drop.dragover{background:#4a9eff24;pointer-events:auto}.drop.hidden{display:none}.drop-inner{pointer-events:auto;max-width:460px;padding:24px}.drop-icon{font-size:52px;margin-bottom:8px}.drop h1{font-size:20px;font-weight:600;margin:4px 0 8px}.drop p{margin:6px 0;color:var(--fg-dim);font-size:14px}.drop .link,.link{color:var(--accent);cursor:pointer;text-decoration:underline}.drop .hint{font-size:12.5px;opacity:.85}.drop .hint.dwg{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.panel{position:absolute;top:10px;right:10px;width:240px;max-height:calc(100% - 20px);background:var(--panel);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;box-shadow:0 8px 30px #00000059;overflow:hidden}.panel.hidden{display:none}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--border);font-weight:600;font-size:13px}.panel-head .x{background:none;border:none;color:var(--fg-dim);font-size:18px;cursor:pointer;line-height:1}.panel-actions{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border)}.mini{flex:1;font-size:12px;padding:4px;border:1px solid var(--border);background:var(--btn);color:var(--fg);border-radius:5px;cursor:pointer}.mini:hover{background:var(--btn-hover)}#layerlist{list-style:none;margin:0;padding:4px 0;overflow-y:auto}.layer-row{display:flex;align-items:center;gap:8px;padding:4px 10px;font-size:13px;cursor:pointer}.layer-row:hover{background:var(--panel-2)}.layer-row input{accent-color:var(--accent);cursor:pointer}.swatch{width:12px;height:12px;border-radius:3px;border:1px solid rgba(255,255,255,.25);flex:0 0 auto}.layer-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-count{color:var(--fg-dim);font-size:11px}#statusbar{height:var(--status-h);flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:0 12px;background:var(--panel);border-top:1px solid var(--border);font-size:12px;color:var(--fg-dim);font-variant-numeric:tabular-nums;user-select:none}#statusbar .coords{margin-left:auto}#copyright{color:var(--fg-dim);opacity:.7;font-size:11px;white-space:nowrap}.chip{appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg-dim);padding:1px 8px;border-radius:10px;cursor:pointer;font-size:10.5px;letter-spacing:.04em;line-height:1.6}.chip:hover{background:var(--btn-hover)}.chip.active{background:color-mix(in srgb,#33dd88 22%,var(--btn));border-color:#3d8;color:var(--fg)}#beditbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;background:color-mix(in srgb,var(--accent) 12%,var(--panel-2));border-bottom:1px solid var(--accent);font-size:13px}#beditbar.hidden{display:none}#beditbar .bedit-label{color:var(--fg)}#beditbar strong{color:var(--accent)}.panel.props{top:10px;right:10px;width:260px}.props-body{overflow-y:auto;padding:6px 0 10px}.props-section{padding:6px 10px;border-bottom:1px solid var(--border)}.props-section:last-child{border-bottom:none}.props-sec-title{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);margin:2px 0 6px}.props-row{display:flex;align-items:center;gap:8px;margin:4px 0}.props-label{flex:0 0 84px;font-size:12px;color:var(--fg-dim)}.props-input{flex:1;min-width:0;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:5px;padding:3px 6px;font:12px ui-monospace,SFMono-Regular,Menlo,monospace;outline:none;text-align:right}.props-input:focus{border-color:var(--accent)}.props-input.ro{opacity:.7;text-align:left}.props-input.bad{border-color:#e0533d}.props-select{flex:1;min-width:0;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:5px;padding:3px 6px;font-size:12px;outline:none}.props-swatches{display:flex;flex-wrap:wrap;gap:4px;flex:1}.props-swatch{width:18px;height:18px;border-radius:4px;border:1px solid var(--border);cursor:pointer;font-size:8.5px;color:var(--fg);padding:0;line-height:16px;text-align:center}.props-swatch.sel{outline:2px solid var(--accent);outline-offset:1px}.props-note{font-size:11px;color:var(--fg-dim);margin:4px 0}.props-count{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--fg)}.props-empty{padding:16px 12px;color:var(--fg-dim);font-size:13px;text-align:center}@media(max-width:640px){#copyright{font-size:9px;opacity:.6}#statusbar .coords{margin-left:8px}}.spinner{position:absolute;inset:0;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;background:#00000059;color:var(--fg);font-size:14px}.spinner.hidden{display:none}.ring{width:34px;height:34px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}body.light{--bg: #f5f5f4;--panel: #ffffff;--panel-2: #eeeeec;--fg: #1a1a1a;--fg-dim: #6b7280;--border: #d6d6d3;--btn: #ececea;--btn-hover: #e0e0dd}.icon-btn{font-size:15px;line-height:1;padding:5px 9px}body.focus #topbar,body.focus #drawbar,body.focus #beditbar,body.focus #statusbar,body.focus #propspanel,body.focus #layerpanel{display:none!important}body.focus #stage{flex:1 1 100%}.focus-pill{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:75;display:flex;align-items:center;gap:10px;padding:6px 8px 6px 14px;border-radius:999px;background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid var(--border);box-shadow:0 6px 24px #0006;font-size:12.5px;color:var(--fg);backdrop-filter:blur(6px)}.focus-pill.hidden{display:none}.fp-tool{font-weight:600}.fp-hint{color:var(--fg-dim);font-size:11px}.fp-btn{appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg);width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:14px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.fp-btn:hover{background:var(--btn-hover)}.panel-head{cursor:default}.panel-head .collapse{background:none;border:none;color:var(--fg-dim);font-size:13px;cursor:pointer;line-height:1;padding:2px 6px;margin-right:2px;border-radius:4px}.panel-head .collapse:hover{background:var(--btn-hover);color:var(--fg)}.panel.collapsed .panel-actions,.panel.collapsed .props-body,.panel.collapsed #layerlist,.panel.collapsed #propspanel .props-body{display:none}.panel.collapsed{max-height:none}.fab{position:absolute;right:16px;bottom:16px;z-index:55;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;font-size:24px;line-height:1;box-shadow:0 6px 20px #00000073;display:none;align-items:center;justify-content:center}.fab.hidden{display:none!important}.fab.open{transform:rotate(45deg)}.fab-sheet{position:absolute;right:16px;bottom:84px;z-index:56;display:grid;grid-template-columns:repeat(4,56px);gap:8px;padding:12px;border-radius:14px;background:var(--panel);border:1px solid var(--border);box-shadow:0 12px 40px #00000080;max-height:60vh;overflow-y:auto}.fab-sheet.hidden{display:none}.fab-sheet button{width:56px;height:56px;border-radius:12px;border:1px solid var(--border);background:var(--btn);color:var(--fg);font-size:12px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px}.fab-sheet button.active{background:var(--accent);border-color:var(--accent);color:#fff}.fab-sheet button:disabled,.fab-sheet button.disabled{opacity:.38;cursor:not-allowed}.fab-sheet button .fab-ic{display:inline-flex;align-items:center;justify-content:center;line-height:1}.fab-sheet button .fab-ic svg{display:block}.fab-sheet button span:last-child{font-size:10px}.sheet-backdrop{position:absolute;inset:0;z-index:88;background:#00000059}.sheet-backdrop.hidden{display:none}.bottom-sheet{position:absolute;left:0;right:0;bottom:0;z-index:89;max-height:72%;display:flex;flex-direction:column;background:var(--panel);border-top:1px solid var(--border);border-radius:16px 16px 0 0;box-shadow:0 -8px 40px #00000080;transition:transform .18s ease-out;touch-action:none}.bottom-sheet.hidden{display:none}.sheet-handle{display:flex;justify-content:center;padding:8px 0 4px;cursor:grab}.sheet-grip{width:42px;height:5px;border-radius:3px;background:var(--border)}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:4px 16px 10px;font-weight:600;font-size:15px;border-bottom:1px solid var(--border)}.sheet-head .x{background:none;border:none;color:var(--fg-dim);font-size:24px;cursor:pointer;line-height:1;min-width:40px;min-height:40px}.sheet-body{overflow-y:auto;padding:8px 0 24px;-webkit-overflow-scrolling:touch}.sheet-body .layer-row{padding:12px 16px;min-height:44px}.sheet-body .props-section{padding:10px 16px}.sheet-body .props-input,.sheet-body .props-select{min-height:40px;font-size:15px}.touch-di{position:absolute;left:50%;transform:translate(-50%);top:8px;z-index:78;width:min(420px,calc(100% - 16px));background:var(--panel);border:1px solid var(--accent);border-radius:12px;box-shadow:0 8px 30px #00000080;padding:8px;touch-action:none}.touch-di.hidden{display:none}.tdi-fields{display:flex;gap:6px;margin-bottom:6px}.tdi-field{flex:1;display:flex;flex-direction:column;gap:2px}.tdi-field label{font-size:10px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.04em;text-align:center}.tdi-field .tdi-val{height:40px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--fg);text-align:center;font:16px ui-monospace,Menlo,monospace;display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none}.tdi-field.active .tdi-val{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.tdi-field.locked .tdi-val{background:color-mix(in srgb,var(--accent) 16%,var(--bg));font-weight:700}.tdi-keys{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.tdi-keys button{height:42px;border:1px solid var(--border);border-radius:8px;background:var(--btn);color:var(--fg);font-size:17px;cursor:pointer}.tdi-keys button:active{background:var(--accent);color:#fff}.tdi-keys button.tdi-wide{grid-column:span 2}.tdi-keys button.tdi-go{background:var(--accent);color:#fff;border-color:var(--accent)}.draw-finish{position:absolute;left:50%;transform:translate(-50%);bottom:calc(var(--status-h) + 12px);top:auto;z-index:79;display:flex;gap:8px;pointer-events:none}.draw-finish.hidden{display:none}.df-chip{appearance:none;border:1px solid var(--border);border-radius:999px;padding:8px 16px;font-size:14px;font-weight:600;cursor:pointer;background:var(--panel);color:var(--fg);box-shadow:0 6px 20px #0006;min-height:40px;pointer-events:auto}.df-ok{background:#2f9e57;border-color:#2f9e57;color:#fff}.df-ok:active,.df-ok:hover{background:#268a4a}.df-close{background:var(--btn)}.df-close:active,.df-close:hover{background:var(--btn-hover)}.df-cancel{background:var(--btn);color:var(--fg-dim)}.df-cancel:active,.df-cancel:hover{background:var(--btn-hover);color:var(--fg)}.df-chip.hidden{display:none}.stat-hint{color:var(--accent);font-size:11px;letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:46vw}.ctxmenu{position:absolute;z-index:90;min-width:170px;padding:6px;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 40px #00000080;display:flex;flex-direction:column;gap:2px}.ctxmenu.hidden{display:none}.ctx-item{appearance:none;border:none;background:none;color:var(--fg);text-align:left;padding:12px 14px;border-radius:8px;font-size:15px;cursor:pointer;min-height:44px}.ctx-item:active:not(.disabled),.ctx-item:hover:not(.disabled){background:var(--btn-hover)}.ctx-item.disabled{color:var(--fg-dim);opacity:.45;cursor:default}.ctx-sep{height:1px;margin:4px 6px;background:var(--border)}@media(max-width:640px){#statusbar{gap:10px;font-size:11px}#logo{height:26px}#copyright{display:none}#statusbar{overflow:hidden}#statusbar>*{min-width:0;flex-shrink:1}.hamburger{display:inline-flex}#topbar{position:relative}.menubar{display:none;position:absolute;top:100%;left:6px;z-index:65;flex-direction:column;align-items:stretch;gap:2px;padding:6px;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 40px #00000073;min-width:200px}.menubar.mobile-open{display:flex}.menu-btn{width:100%;text-align:left}.menu-list{position:static;box-shadow:none;border:none;margin:0 0 2px 8px;min-width:0;padding:2px;background:transparent}#btn-focus{min-width:40px;min-height:40px}}@media(pointer:coarse),(max-width:900px){#btn-new,#btn-save,#btn-extents,#btn-bg,#btn-palette,#btn-layers,#topbar .tools .file-btn,#topbar .tools>.sep{display:none!important}#topbar .tools{gap:6px;flex-wrap:nowrap}}@media(pointer:coarse),(max-width:900px){.panel{width:calc(100% - 20px);left:10px;right:10px}#drawbar{display:none!important}.fab{display:flex}#statusbar{gap:8px}#stat-hint,#statusbar #stat-entities,#statusbar #stat-layers,#statusbar .coords{display:none}#layerpanel,#propspanel{display:none!important}}@media(pointer:coarse),(max-width:900px){.btn,.tool,.mini,.iconbtn{min-height:40px;min-width:40px;font-size:14px}.btn{padding:10px 14px}.draw-hint{width:100%;margin-left:0}.layer-row{padding:10px;min-height:40px}.panel-head .x{min-width:40px;min-height:40px}.menu-list li[role=menuitem]{min-height:40px;padding-top:9px;padding-bottom:9px}.menu-btn{min-height:40px;padding:10px 12px}.hamburger{min-width:40px;min-height:40px}.chip{min-height:40px;display:inline-flex;align-items:center}}.palette{position:absolute;top:10px;left:10px;width:264px;max-height:calc(100% - 20px);background:var(--panel);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;box-shadow:0 8px 30px #00000059;overflow:hidden;z-index:8}.palette.hidden{display:none}.pal-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--border);font-weight:600;font-size:13px}.pal-head .x{background:none;border:none;color:var(--fg-dim);font-size:18px;cursor:pointer;line-height:1}.pal-tabs{display:flex;flex-wrap:wrap;gap:3px;padding:6px 8px;border-bottom:1px solid var(--border)}.pal-tab{appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg-dim);font-size:10.5px;padding:3px 7px;border-radius:5px;cursor:pointer;line-height:1.4}.pal-tab:hover{background:var(--btn-hover);color:var(--fg)}.pal-tab.trade{border-style:dashed}.pal-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.pal-searchwrap{padding:6px 8px;border-bottom:1px solid var(--border)}#pal-search{width:100%;box-sizing:border-box;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:12px}#pal-search:focus{border-color:var(--accent);outline:none}.pal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px;overflow-y:auto;align-content:start}.pal-empty{grid-column:1 / -1;color:var(--fg-dim);font-size:12px;padding:16px;text-align:center}.pal-tile{position:relative;appearance:none;border:1px solid var(--border);background:var(--panel-2);border-radius:7px;padding:5px 3px 3px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:78px}.pal-tile:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--panel-2))}.pal-tile.has-variants{border-style:dashed}.pal-thumb{width:56px;height:56px;object-fit:contain;image-rendering:crisp-edges;background:var(--bg);border-radius:4px}.pal-thumb-miss{opacity:.3}.pal-label{font-size:9.5px;color:var(--fg);line-height:11px;text-align:center;width:100%;word-break:break-word;overflow:hidden;display:block;height:22px;min-height:22px;flex:0 0 auto}.pal-badge{position:absolute;top:3px;right:3px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;min-width:14px;height:14px;border-radius:7px;display:flex;align-items:center;justify-content:center;padding:0 3px}.pal-flyout{position:fixed;z-index:30;background:var(--panel);border:1px solid var(--accent);border-radius:8px;box-shadow:0 10px 34px #00000073;padding:8px;max-width:240px}.pal-flyout.hidden{display:none}.pal-fly-head{font-size:11px;font-weight:600;color:var(--accent);margin:0 0 6px 2px}.pal-fly-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.pal-fly-tile{appearance:none;border:1px solid var(--border);background:var(--panel-2);border-radius:6px;padding:3px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}.pal-fly-tile:hover{border-color:var(--accent)}.pal-fly-tile .pal-thumb{width:44px;height:44px}.pal-fly-orient{font-size:9px;color:var(--fg-dim);font-weight:700}#layerlist.layers-v2{padding:0}.lyr-toolbar{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border)}.lyr-btn{flex:1;appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg);font-size:11.5px;padding:6px 4px;border-radius:6px;cursor:pointer}.lyr-btn:hover{background:var(--btn-hover)}.lyr-btn.preset{border-color:var(--accent);color:var(--accent)}.lyr-row{display:flex;align-items:center;gap:5px;padding:5px 8px;font-size:12.5px;cursor:pointer;border-bottom:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.lyr-row:hover{background:var(--panel-2)}.lyr-row.current{background:color-mix(in srgb,var(--accent) 12%,transparent)}.lyr-row.current .lyr-name{font-weight:700}.lyr-row.locked .lyr-name{opacity:.65;font-style:italic}.lyr-row.file .lyr-name{color:var(--fg-dim)}.lyr-cur,.lyr-eye,.lyr-lock,.lyr-del{appearance:none;border:none;background:none;cursor:pointer;color:var(--fg-dim);font-size:12px;padding:2px;line-height:1;flex:0 0 auto;border-radius:4px}.lyr-cur.on{color:var(--accent)}.lyr-eye.off{color:color-mix(in srgb,var(--fg-dim) 60%,transparent)}.lyr-lock.on{color:#e6b34a}.lyr-del:hover{color:#ff6b6b;background:color-mix(in srgb,#ff6b6b 14%,transparent)}.lyr-del:disabled{opacity:.3;cursor:default}.lyr-swatch{width:15px;height:15px;border-radius:4px;border:1px solid rgba(255,255,255,.28);flex:0 0 auto;appearance:none;cursor:pointer;padding:0}.lyr-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lyr-count{color:var(--fg-dim);font-size:10.5px;font-variant-numeric:tabular-nums;flex:0 0 auto;min-width:16px;text-align:right}.lyr-colorpop{position:fixed;z-index:40;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 26px #0006;padding:6px;display:grid;grid-template-columns:repeat(6,1fr);gap:4px;max-width:156px}.lyr-cs{width:20px;height:20px;border-radius:4px;border:1px solid rgba(255,255,255,.25);cursor:pointer;appearance:none}.lyr-cs.custom{background:var(--btn);color:var(--fg);font-weight:700}.chip.curlayer{display:inline-flex;align-items:center;gap:5px}.chip.curlayer .cl-sw{width:10px;height:10px;border-radius:2px;border:1px solid rgba(255,255,255,.3);background:#4a9eff}#cl-name{color:var(--fg);font-weight:600}#layerlist.layers-v2.mobile .lyr-row,.sheet-body #layerlist.layers-v2 .lyr-row{padding:11px 12px;min-height:44px;font-size:14px}#layerlist.layers-v2.mobile .lyr-cur,#layerlist.layers-v2.mobile .lyr-eye,#layerlist.layers-v2.mobile .lyr-lock,#layerlist.layers-v2.mobile .lyr-del{font-size:16px;padding:6px}#layerlist.layers-v2.mobile .lyr-swatch{width:22px;height:22px}.sheet-body .pal-grid{grid-template-columns:repeat(3,1fr);gap:8px;padding:8px}.sheet-body .pal-tile{min-height:92px}.sheet-body .pal-tabs{position:sticky;top:0;background:var(--panel);z-index:1}@media(pointer:coarse),(max-width:900px){#palette{display:none!important}}body.focus #palette{display:none!important}.acct-cluster{display:inline-flex;align-items:center;gap:6px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 85%,#000)}.acct-btn{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-btn.is-pro{border-color:var(--accent);color:var(--accent)}.credit-chip{display:inline-flex;align-items:center;gap:3px;border-radius:12px;padding:2px 10px}.credit-chip .cc-num{font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums}.credit-chip .cc-lbl{color:var(--fg-dim);font-size:10px}.credit-chip.signedout{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,var(--border))}.credit-chip.signedout .cc-freebie{font-size:10.5px;font-weight:600}.signin-box{width:min(400px,calc(100% - 24px));max-height:none}.signin-body{display:block;padding:16px 18px 20px}.signin-ctx{margin:0 0 12px;padding:8px 10px;font-size:12.5px;color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,var(--border));border-radius:8px}.signin-ctx.hidden{display:none}.signin-lead{margin:0 0 12px;font-size:14px;color:var(--fg);font-weight:600}#signin-step-email .signin-lead{font-weight:400;color:var(--fg-dim);font-size:13px}.signin-field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.signin-field span{font-size:11px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.04em}.signin-field input{background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:15px;min-height:44px}.signin-field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 1px var(--accent)}.signin-send{width:100%;min-height:44px;font-size:14px}.signin-resend{min-height:44px}.signin-err{margin:10px 0 0;color:#ff6b6b;font-size:12.5px}.signin-err.hidden{display:none}.signin-fineprint{margin:12px 0 0;font-size:11.5px;color:var(--fg-dim)}.signin-sent-msg{margin:0 0 14px;font-size:13.5px;color:var(--fg);line-height:1.5}.signin-devlink{margin:10px 0 0;font-size:12px}.signin-devlink.hidden,#signin-step-email.hidden,#signin-step-sent.hidden{display:none}@media(pointer:coarse),(max-width:640px){.signin-modal{align-items:flex-end}.signin-box{width:100%;border-radius:16px 16px 0 0;border-bottom:none;animation:sheet-up .18s ease-out}.signin-body{padding-bottom:max(20px,env(safe-area-inset-bottom))}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.acct-popover{position:fixed;z-index:85;width:300px;max-width:calc(100vw - 16px);background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 48px #00000080;padding:14px;color:var(--fg)}.acct-popover.hidden{display:none}.acct-pop-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px}.acct-pop-email{font-size:12.5px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-signout{font-size:12px;white-space:nowrap}.acct-bal{font-size:13px;color:var(--fg);margin-bottom:12px}.acct-bal .acct-bal-num{font-size:22px;font-weight:800;color:var(--accent);margin-right:4px}.acct-bal.muted{color:var(--fg-dim);font-size:12.5px}.acct-upsell{margin:0 0 12px;padding:8px 10px;font-size:12.5px;color:var(--fg);background:color-mix(in srgb,#ff6b6b 14%,transparent);border:1px solid color-mix(in srgb,#ff6b6b 40%,var(--border));border-radius:8px}.acct-sec-title{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-dim);margin:0 0 8px}.pack-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}.pack-row{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--fg);background:var(--btn);min-height:40px}.pack-row:hover{border-color:var(--accent);background:var(--btn-hover)}.pack-cr{font-size:12.5px;font-weight:600}.pack-price{font-size:12.5px;color:var(--accent);font-weight:700}.pro-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;text-decoration:none;min-height:44px;background:color-mix(in srgb,var(--accent) 16%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 50%,var(--border));color:var(--fg);font-size:13px;font-weight:600}.pro-row:hover:not(.is-pro){background:color-mix(in srgb,var(--accent) 26%,var(--panel))}.pro-row.is-pro{opacity:.85;cursor:default}.pro-badge{font-size:11px;font-weight:700;color:var(--accent);white-space:nowrap}.acct-pop-foot{margin:12px 0 0;font-size:10.5px;color:var(--fg-dim);line-height:1.45}@media(max-width:640px){#topbar-right .acct-cluster{display:inline-flex!important}.acct-btn{max-width:96px}.credit-chip.signedout .cc-freebie{font-size:9.5px}}.dillo-btn{display:inline-flex;align-items:center;gap:6px}.dillo-btn .dillo-btn-av{width:16px;height:16px;object-fit:contain;border-radius:3px}body:not(.light) .dillo-btn .dillo-btn-av{filter:brightness(1.15)}.dillo-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.dillo-btn.active .dillo-btn-av{filter:brightness(0) invert(1)}.dillo-panel{position:fixed;top:0;right:0;bottom:0;z-index:60;width:360px;max-width:92vw;display:flex;flex-direction:column;background:var(--panel);border-left:1px solid var(--border);box-shadow:-6px 0 24px #00000052}.dillo-panel.hidden{display:none}@media(min-width:861px){body.dillo-open #stage{margin-right:360px}}.dillo-head{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--panel-2);border-bottom:1px solid var(--border)}.dillo-head-av{width:22px;height:22px;object-fit:contain;border-radius:4px}body:not(.light) .dillo-head-av{filter:brightness(1.15)}.dillo-title{font-weight:600;font-size:13px}.dillo-bal{margin-left:auto;font-size:11px;color:var(--accent);font-variant-numeric:tabular-nums;font-weight:600}.dillo-close{appearance:none;background:none;border:none;color:var(--fg-dim);font-size:20px;line-height:1;cursor:pointer;padding:0 2px}.dillo-close:hover{color:var(--fg)}.dillo-log{flex:1 1 auto;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}.dillo-log.hidden{display:none}.dillo-empty{margin:auto;text-align:center;color:var(--fg-dim)}.dillo-empty-av{width:48px;height:48px;object-fit:contain;opacity:.85;margin-bottom:8px}body:not(.light) .dillo-empty-av{filter:brightness(1.15)}.dillo-empty p{font-size:14px;margin:0}.dillo-signedout{padding:24px 18px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;flex:1 1 auto;justify-content:center}.dillo-signedout.hidden{display:none}.dillo-so-av{width:52px;height:52px;object-fit:contain}body:not(.light) .dillo-so-av{filter:brightness(1.15)}.dillo-so-greet{font-size:16px;font-weight:600;margin:4px 0 0}.dillo-so-sub{font-size:12.5px;color:var(--fg-dim);margin:0 0 6px;line-height:1.5}.dillo-signedout .btn.primary{margin-top:4px}.dillo-msg{display:flex;gap:8px;align-items:flex-start}.dillo-msg.dillo-user{justify-content:flex-end}.dillo-msg-av{width:22px;height:22px;object-fit:contain;border-radius:4px;flex:0 0 auto;margin-top:1px}body:not(.light) .dillo-msg-av{filter:brightness(1.15)}.dillo-bubble{max-width:82%;padding:8px 11px;border-radius:12px;font-size:13px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.dillo-user .dillo-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.dillo-bot .dillo-bubble{background:var(--panel-2);color:var(--fg);border:1px solid var(--border);border-bottom-left-radius:4px}.dillo-bot .dillo-bubble.dillo-thinking-only .dillo-text:after{content:"working…";color:var(--fg-dim);font-style:italic}.dillo-text:empty{display:none}.dillo-chips{display:flex;flex-wrap:wrap;gap:5px}.dillo-chips:not(:empty){margin-bottom:6px}.dillo-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:999px;background:var(--btn);border:1px solid var(--border);color:var(--fg-dim)}.dillo-chip-pending{opacity:.7}.dillo-chip-pending:before,.dillo-chip-ready:before{content:"•";color:var(--accent)}.dillo-chip-done{color:var(--fg)}.dillo-chip-done:before{content:"✓";color:#4caf7d}.dillo-chip-error{color:#e0685f;border-color:#e0685f}.dillo-chip-error:before{content:"✕"}.dillo-sys{font-size:12px;text-align:center;color:var(--fg-dim);padding:2px 0}.dillo-sys-error{color:#e0685f}.dillo-cost{font-size:11px;text-align:right;color:var(--fg-dim);font-variant-numeric:tabular-nums;padding-right:2px}.dillo-input-wrap{border-top:1px solid var(--border);padding:8px 10px;background:var(--panel)}.dillo-input-wrap.hidden{display:none}.dillo-input{width:100%;box-sizing:border-box;resize:none;overflow-y:auto;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;line-height:1.4;font-family:inherit;max-height:160px}.dillo-input:focus{outline:none;border-color:var(--accent)}.dillo-input-foot{display:flex;align-items:center;justify-content:space-between;margin-top:6px}.dillo-est{font-size:11px;color:var(--fg-dim)}.dillo-send{appearance:none;border:1px solid var(--accent);background:var(--accent);color:#fff;padding:5px 16px;border-radius:7px;font-size:12.5px;font-weight:600;cursor:pointer}.dillo-send:disabled{opacity:.5;cursor:default;background:var(--btn);border-color:var(--border);color:var(--fg-dim)}@media(max-width:860px){.dillo-panel{inset:auto 0 0;width:100%;max-width:100%;height:72vh;max-height:72vh;border-left:none;border-top:1px solid var(--border);border-radius:14px 14px 0 0;box-shadow:0 -8px 28px #0000006b}body.dillo-open #stage{margin-right:0}}.dwg-modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#0000008c;padding:16px}.dwg-box{width:min(460px,100%);max-height:90vh;overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 60px #0000008c;color:var(--fg)}.dwg-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);font-weight:600}.dwg-head .x{appearance:none;border:none;background:none;color:var(--fg-dim);font-size:22px;line-height:1;cursor:pointer}.dwg-head .x:hover{color:var(--fg)}.dwg-body{padding:14px 16px;font-size:14px;line-height:1.5}.dwg-body p{margin:0 0 10px}.dwg-privacy{font-size:12.5px;color:var(--fg-dim);background:var(--panel-2);border-radius:8px;padding:10px 12px}.dwg-refusal{color:var(--accent)}.dwg-file{display:inline-block;margin-top:4px;cursor:pointer}.dwg-progress{margin-top:12px;font-size:13px;color:var(--fg-dim)}.dwg-foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--border)}.dwg-foot .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.imp-modal{z-index:210}.imp-box{max-width:520px;width:min(520px,92vw)}.imp-body{padding:16px 18px 18px}.imp-note{color:var(--fg-dim);font-size:13px;margin:0 0 12px;line-height:1.45}.imp-row{display:flex;align-items:center;gap:8px;margin:10px 0;flex-wrap:wrap}.imp-row label{font-size:13px;color:var(--fg)}.imp-input{background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font:13px system-ui,sans-serif;outline:none;min-width:90px}.imp-input:focus{border-color:var(--accent)}.imp-input.imp-bad{border-color:#e0534e;box-shadow:0 0 0 1px #e0534e}select.imp-input{min-width:150px}.imp-hint{font-size:11px;color:var(--fg-dim)}.imp-presets{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 14px}.imp-chip{appearance:none;background:var(--btn);border:1px solid var(--border);color:var(--fg);border-radius:999px;padding:4px 10px;font-size:12px;cursor:pointer}.imp-chip:hover{background:var(--btn-hover);border-color:var(--accent)}.imp-foot{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap}.imp-foot-col{flex-direction:column;align-items:stretch}.imp-foot-col .imp-row{justify-content:space-between}.imp-primary{background:var(--accent);border-color:var(--accent);color:#fff}.imp-ghost{opacity:.8}.imp-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;max-height:60vh;overflow:auto}.imp-thumb{appearance:none;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px}.imp-thumb:hover{border-color:var(--accent)}.imp-thumb canvas{background:#fff;border-radius:4px;width:120px;height:auto}.imp-thumb-n{font-size:12px;color:var(--fg-dim)}.imp-thumb-miss{opacity:.5}.calib-banner{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:90;background:var(--panel);color:var(--fg);border:1px solid var(--accent);border-radius:8px;padding:8px 14px;font-size:13px;box-shadow:0 8px 28px #00000073;display:flex;align-items:center;gap:8px;max-width:92vw}.calib-step{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;font-size:12px}.calib-skip{appearance:none;background:var(--btn);border:1px solid var(--border);color:var(--fg);border-radius:6px;padding:3px 9px;font-size:12px;cursor:pointer;margin-left:4px}.calib-skip:hover{background:var(--btn-hover)}.lyr-ulhead{padding:6px 8px 2px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-dim)}.ul-row{background:color-mix(in srgb,var(--accent) 6%,transparent)}.ul-lock{font-size:11px;opacity:.8}.ul-name{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px}.ul-opacity{flex:1 1 60px;min-width:54px;accent-color:var(--accent)}.beta-tag{font-size:9.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);padding:1px 5px;border-radius:4px;margin-left:6px;vertical-align:middle}.threed-bar{position:fixed;top:52px;left:50%;transform:translate(-50%);z-index:120;display:flex;gap:8px;align-items:center;padding:6px 10px;background:color-mix(in srgb,var(--panel) 94%,transparent);border:1px solid var(--border);border-radius:10px;box-shadow:0 6px 22px #0006;font-size:13px;color:var(--fg);backdrop-filter:blur(6px)}.threed-bar.hidden{display:none}.threed-badge{font-weight:700;display:flex;align-items:center;gap:5px}.threed-badge em{font-style:normal;font-size:9.5px;font-weight:700;text-transform:uppercase;color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);padding:1px 5px;border-radius:4px}.threed-btn{appearance:none;border:1px solid var(--border);background:var(--btn);color:var(--fg);border-radius:7px;padding:4px 10px;font-size:12px;cursor:pointer}.threed-btn:hover{background:var(--btn-hover)}.threed-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.threed-report{color:var(--fg-dim);font-size:11px;font-variant-numeric:tabular-nums}.threed-settings{position:fixed;top:92px;left:50%;transform:translate(-50%);z-index:121;width:300px;max-height:60vh;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 34px #00000073;color:var(--fg);font-size:13px}.threed-settings.hidden{display:none}.threed-pop-head{padding:8px 12px;font-weight:700;border-bottom:1px solid var(--border)}.threed-pop-body{padding:6px 12px}.threed-row{display:flex;align-items:center;gap:6px;padding:3px 0}.threed-row label{flex:1 1 auto;color:var(--fg-dim);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.threed-row input{width:62px;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:5px;padding:2px 5px}.threed-row span{color:var(--fg-dim);font-size:11px}.threed-pop-foot{padding:8px 12px;border-top:1px solid var(--border);text-align:right}.threed-pop-foot button{appearance:none;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:7px;padding:5px 14px;font-size:12px;cursor:pointer;font-weight:600}.owner-badge{display:inline-flex;align-items:center;height:20px;padding:0 7px;font-size:9.5px;font-weight:700;letter-spacing:.06em;line-height:1;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:5px;text-transform:uppercase;user-select:none}.owner-badge.hidden{display:none}.credit-chip.is-owner .cc-inf{color:var(--accent);font-size:15px;font-weight:800}.acct-bal.is-owner .acct-bal-num{color:var(--accent)}.acct-owner-tag{color:var(--accent);font-weight:700}.gate-wall{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:24px;background:color-mix(in srgb,var(--bg) 78%,#000);backdrop-filter:blur(10px) saturate(1.1);-webkit-backdrop-filter:blur(10px) saturate(1.1);animation:gate-fade .18s ease-out}.gate-wall.hidden{display:none}@keyframes gate-fade{0%{opacity:0}to{opacity:1}}.gate-card{width:min(420px,100%);background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:0 24px 80px #00000080;padding:28px 26px 20px;text-align:center}.gate-logo{width:56px;height:auto;margin:0 auto 10px;display:block;filter:invert(1)}body.light .gate-logo{filter:none}.gate-title{margin:0 0 8px;font-size:20px;font-weight:700;color:var(--fg);letter-spacing:-.01em}.gate-msg{margin:0 0 20px;font-size:14px;line-height:1.55;color:var(--fg-dim)}.gate-form{text-align:left}.gate-form.hidden{display:none}.gate-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.gate-field span{font-size:11px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.04em}.gate-field input{background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:9px;padding:12px 14px;font-size:16px;min-height:46px}.gate-field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 40%,transparent)}.gate-send{width:100%;min-height:46px;font-size:15px;border-radius:9px}.gate-resend{min-height:44px;border-radius:9px}.gate-err{margin:12px 0 0;color:#ff6b6b;font-size:12.5px}.gate-err.hidden{display:none}.gate-fine{margin:14px 0 0;font-size:12px;color:var(--fg-dim);text-align:center}.gate-sent-lead{margin:0 0 8px;font-size:15px;font-weight:700;color:var(--fg);text-align:center}.gate-sent-msg{margin:0 0 16px;font-size:13.5px;color:var(--fg-dim);line-height:1.55;text-align:center}.gate-devlink{margin:12px 0 0;font-size:12px;text-align:center}.gate-devlink.hidden{display:none}.gate-foot{margin-top:18px;padding-top:14px;border-top:1px solid var(--border);text-align:center}.gate-foot-link{color:var(--accent);font-size:12.5px;text-decoration:none}.gate-foot-link:hover{text-decoration:underline}body.gate-walled{overflow:hidden}@media(pointer:coarse),(max-width:640px){.gate-wall{align-items:flex-end;padding:0}.gate-card{width:100%;border-radius:18px 18px 0 0;border-bottom:none;padding:24px 20px calc(20px + env(safe-area-inset-bottom));animation:sheet-up .2s ease-out}}
