.legend[data-v-e92bc516]{position:absolute;z-index:5;display:flex;gap:6px;align-items:flex-end}.legend.top-left[data-v-e92bc516]{top:8px;left:8px;flex-direction:row;align-items:flex-start}.legend.top-right[data-v-e92bc516]{top:8px;right:8px;flex-direction:row-reverse;align-items:flex-start}.legend.bottom-left[data-v-e92bc516]{bottom:8px;left:8px;flex-direction:row}.legend.bottom-right[data-v-e92bc516]{bottom:8px;right:8px;flex-direction:row-reverse}.legend-btn[data-v-e92bc516]{width:24px;height:24px;flex:none;display:flex;align-items:center;justify-content:center;line-height:1;font-size:14px;padding:0;border-radius:50%;background:var(--scrim);border:1px solid var(--line);color:var(--ink)}.legend-btn[data-v-e92bc516]:hover{background:var(--scrim);border-color:var(--accent);color:var(--accent)}.legend-card[data-v-e92bc516]{padding:8px 10px;background:var(--scrim-strong);border:1px solid var(--line);border-radius:var(--radius-xs);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:grid;gap:3px;white-space:nowrap;box-shadow:var(--shadow-soft)}.legend-title[data-v-e92bc516]{font-family:var(--gb-font-en);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint);margin-bottom:3px}.legend-row[data-v-e92bc516]{display:flex;gap:8px;font-size:var(--fs-2xs);color:var(--ink-soft)}.legend-k[data-v-e92bc516]{flex:none;min-width:62px;color:var(--accent)}.legend-d[data-v-e92bc516]{color:var(--ink-mute)}.title-row[data-v-8535942c]{display:flex;align-items:center;justify-content:space-between;gap:8px}header h1[data-v-8535942c]{margin:0 0 6px;font-size:var(--fs-lg);font-weight:600;letter-spacing:-.02em;color:var(--ink)}.hdr-toggles[data-v-8535942c]{flex:none;display:flex;align-items:center;gap:6px}.hdr-toggle[data-v-8535942c]{flex:none;min-width:36px;height:28px;padding:0 9px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-sunken);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-mute);font-size:var(--fs-2xs);line-height:1}.hdr-toggle[data-v-8535942c]:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.sub[data-v-8535942c]{margin:0 0 22px;color:var(--ink-mute);font-size:var(--fs-2xs);line-height:1.55}.modes[data-v-13595a79]{display:flex;gap:4px;margin-bottom:22px;padding:4px;background:var(--surface-sunken);border:1px solid var(--line-soft);border-radius:var(--radius-s)}.tab-s[data-v-13595a79]{flex:1;padding:8px 6px;background:transparent;border:1px solid transparent;border-radius:var(--radius-xs);color:var(--ink-mute);font-size:var(--fs-2xs)}.tab-s[data-v-13595a79]:hover{background:var(--surface-muted);color:var(--ink)}.tab-s.on[data-v-13595a79],.tab-s.on[data-v-13595a79]:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.layers[data-v-38ad1eac]{list-style:none;margin:0 0 8px;padding:0}.layers li[data-v-38ad1eac]{display:flex;align-items:center;gap:8px;padding:7px 9px;margin-bottom:5px;background:var(--surface-sunken);border:1px solid var(--line);border-radius:var(--radius-xs);font-size:var(--fs-xs);cursor:pointer;transition:background .18s var(--ease),border-color .18s var(--ease)}.layers li[data-v-38ad1eac]:hover{background:var(--surface-muted)}.layers li.active[data-v-38ad1eac]{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.layers li.hidden[data-v-38ad1eac]{opacity:.5}.layers .grip[data-v-38ad1eac]{color:var(--ink-faint);cursor:grab}.layers .lthumb[data-v-38ad1eac]{width:28px;height:28px;object-fit:contain;background:var(--canvas-bg) repeating-conic-gradient(var(--canvas-check-a) 0% 25%,var(--canvas-check-b) 0% 50%) 0 0 / 10px 10px;border:1px solid var(--line);border-radius:6px}.layers .lname[data-v-38ad1eac]{flex:1;color:var(--ink)}.facing-ctl[data-v-0da1f056]{-webkit-user-select:none;user-select:none}.cube-card[data-v-0da1f056]{position:relative;padding:6px 8px 4px;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--canvas-bg)}.cube-stage[data-v-0da1f056]{position:relative;width:180px;height:140px;margin:0 auto;perspective:480px;display:flex;align-items:center;justify-content:center}.ring-svg[data-v-0da1f056]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none}.ring-back[data-v-0da1f056]{z-index:0}.ring-front[data-v-0da1f056]{z-index:2}.cube[data-v-0da1f056]{position:relative;z-index:1;width:96px;height:96px;transform-style:preserve-3d;transition:transform .18s var(--ease)}.cube-face[data-v-0da1f056]{position:absolute;width:96px;height:96px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-2xs);font-weight:600;color:var(--on-accent);text-shadow:0 1px 3px rgba(0,0,0,.6);background:linear-gradient(150deg,#ffffff38,#fff0 55%),var(--facing-face);border:1.5px solid var(--accent);box-sizing:border-box;cursor:pointer;backface-visibility:hidden;transition:background .18s var(--ease)}.cube-face[data-v-0da1f056]:hover{background:var(--accent)}.cube-face.cap[data-v-0da1f056]{color:var(--on-accent);background:linear-gradient(150deg,#ffffff29,#fff0 55%),var(--facing-cap);border-color:var(--accent);cursor:default;font-size:10px}.cube-face.cap[data-v-0da1f056]:hover{background:linear-gradient(150deg,#ffffff29,#fff0 55%),var(--facing-cap)}.cube-face.top[data-v-0da1f056]{transform:rotateX(90deg) translateZ(48px)}.cube-face.bottom[data-v-0da1f056]{transform:rotateX(-90deg) translateZ(48px)}.ring-track[data-v-0da1f056]{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round}.ring-track.back[data-v-0da1f056]{stroke:var(--ink-faint);stroke-dasharray:3 4;opacity:.9}.ring-arrow[data-v-0da1f056]{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;opacity:.85}.ring-arrow-head[data-v-0da1f056]{fill:var(--accent)}.ring-tick[data-v-0da1f056]{fill:var(--ink-mute);pointer-events:auto;cursor:pointer;transition:fill .15s var(--ease)}.ring-tick[data-v-0da1f056]:hover{fill:var(--accent)}.ring-hit[data-v-0da1f056]{fill:none;stroke:transparent;stroke-width:20;pointer-events:stroke;cursor:ew-resize;touch-action:none}.ring-knob[data-v-0da1f056]{fill:var(--accent);stroke:var(--on-accent);stroke-width:2;pointer-events:none}.ring-labels[data-v-0da1f056]{display:flex;justify-content:space-between;margin:4px 8px 0;font-size:10px;color:var(--ink-faint)}.uv-editor{position:relative;margin:10px 0;border:1px solid var(--line);border-radius:var(--radius-xs);background:var(--canvas-bg) repeating-conic-gradient(var(--canvas-check-a) 0% 25%,var(--canvas-check-b) 0% 50%) 0 0 / 24px 24px;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.uv-editor:active{cursor:grabbing}.uv-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;opacity:.5;pointer-events:none}.g-logo{position:absolute;pointer-events:auto;cursor:move;outline:1px dashed var(--accent)}.g-handle{position:absolute;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:1;font-size:18px;color:var(--on-accent);border:2px solid var(--on-accent);box-shadow:var(--shadow-soft);pointer-events:auto;-webkit-user-select:none;user-select:none;z-index:3}.g-rotate{background:var(--handle-rotate);cursor:grab}.g-scale{background:var(--handle-scale);cursor:nwse-resize}.numbox{position:absolute;left:6px;top:6px;z-index:4}.numtoggle{width:28px;height:28px;display:flex;align-items:center;justify-content:center;line-height:1;font-size:16px;padding:0;border-radius:8px;background:var(--scrim);border:1px solid var(--line);color:var(--ink)}.numfields{margin-top:4px;padding:8px;background:var(--scrim);border:1px solid var(--line);border-radius:var(--radius-xs);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:grid;gap:5px}.numfields label{display:flex;align-items:center;gap:4px;font-size:var(--fs-2xs);color:var(--ink-soft)}.numfields input{width:56px;background:var(--surface-sunken);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:3px 5px}.numfields input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.check[data-v-937edb89]{display:flex;align-items:center;gap:8px;margin:8px 0;font-size:var(--fs-2xs);color:var(--ink-mute);cursor:pointer}.check input[data-v-937edb89]{accent-color:var(--accent)}.marking[data-v-18691e94],.marking[data-v-18691e94]:hover:not(:disabled){border-color:var(--mark);color:var(--mark-ink)}.features[data-v-18691e94]{list-style:none;margin:0 0 6px;padding:0;max-height:160px;overflow-y:auto}.features li[data-v-18691e94]{display:flex;align-items:center;gap:6px;padding:5px 8px;margin-bottom:4px;background:var(--surface-sunken);border:1px solid var(--line);border-radius:8px;font-size:var(--fs-2xs);transition:border-color .18s var(--ease)}.features li[data-v-18691e94]:hover{border-color:var(--mark)}.features .fname[data-v-18691e94]{flex:1}.features .fname-input[data-v-18691e94]{flex:1;min-width:0;background:var(--surface-sunken);border:1px solid var(--line);border-radius:6px;color:var(--ink);font-size:var(--fs-2xs);padding:3px 6px}.features .fname-input[data-v-18691e94]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.cut-tools[data-v-18691e94]{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:8px 0;font-size:var(--fs-2xs);color:var(--ink-mute)}.cut-tools .finish[data-v-18691e94]:not(:disabled){border-color:var(--accent);color:var(--accent)}.features label[data-v-18691e94]{display:flex;align-items:center;gap:8px;cursor:pointer}.features input[type=checkbox][data-v-18691e94]{accent-color:var(--accent)}.part-canvas-scroll[data-v-65ad7750]{max-width:100%;overflow-x:auto;overflow-y:hidden;margin:10px 0;padding:12px 10px}.panel-bar[data-v-65ad7750]{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-2xs);color:var(--ink-mute);padding:2px 2px 0}.part-canvas-host.floating[data-v-65ad7750]{position:fixed;z-index:60;background:var(--bg-deep);border:1px solid var(--accent);border-radius:var(--radius-m);box-shadow:var(--shadow-hover);padding:8px 10px 10px;overflow:auto;max-width:90vw;max-height:90vh}.part-canvas-host.floating .panel-resize[data-v-65ad7750]{position:absolute;right:2px;bottom:2px;width:16px;height:16px;cursor:nwse-resize;z-index:5;opacity:.55;background:linear-gradient(135deg,transparent 0 45%,var(--ink-mute) 45% 55%,transparent 55% 70%,var(--ink-mute) 70% 80%,transparent 80%);border-bottom-right-radius:var(--radius-m)}.part-canvas-host.floating .panel-resize[data-v-65ad7750]:hover{opacity:1}.part-canvas-host.floating .panel-bar[data-v-65ad7750]{cursor:move;-webkit-user-select:none;user-select:none}.part-canvas-host.floating .part-canvas-scroll[data-v-65ad7750]{overflow:auto}.part-outline[data-v-65ad7750]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.part-outline .p-region[data-v-65ad7750]{fill:var(--accent-soft);stroke:var(--accent)}.part-outline .p-ref[data-v-65ad7750]{fill:none;stroke:var(--ink-mute)}.part-outline .p-feat[data-v-65ad7750]{fill:var(--mark-soft);stroke:var(--mark)}.art-clip[data-v-65ad7750]{position:absolute;top:0;right:0;bottom:0;left:0}.canvas-dim[data-v-65ad7750]{position:absolute;right:6px;bottom:4px;font-family:var(--gb-font-mono);font-size:10px;color:var(--ink-mute);background:var(--scrim);padding:2px 6px;border-radius:var(--radius-pill);pointer-events:none}.region[data-v-a366c32a]{margin-top:8px}.shape-row[data-v-a366c32a]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 2px;font-size:var(--fs-2xs);color:var(--ink-mute)}.shape-select[data-v-a366c32a]{flex:1;max-width:130px;background:var(--surface-sunken);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:4px 6px;cursor:pointer;transition:border-color .18s var(--ease)}.shape-select[data-v-a366c32a]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.place-info[data-v-a366c32a]{font-family:var(--gb-font-mono);font-size:var(--fs-2xs);color:var(--ink-mute)}.region-params[data-v-a366c32a]{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;margin:10px 0 2px}.region-params label[data-v-a366c32a]{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:var(--fs-2xs);color:var(--ink-mute)}.region-params input[data-v-a366c32a]{width:56px;background:var(--surface-sunken);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:3px 6px;transition:border-color .18s var(--ease)}.region-params input[data-v-a366c32a]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.parts[data-v-6245a2ba]{list-style:none;margin:0 0 8px;padding:0}.parts li[data-v-6245a2ba]{display:flex;align-items:center;gap:8px;padding:9px 11px;margin-bottom:5px;background:var(--surface-sunken);border:1px solid var(--line);border-radius:var(--radius-xs);font-size:var(--fs-xs);color:var(--ink);cursor:pointer;transition:background .18s var(--ease),border-color .18s var(--ease),opacity .18s var(--ease)}.parts li[data-v-6245a2ba]:hover{background:var(--surface-muted)}.parts li.active[data-v-6245a2ba]{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.parts .swatch[data-v-6245a2ba]{width:14px;height:14px;flex:none;border-radius:4px;border:1px solid var(--line)}.parts .pname[data-v-6245a2ba]{flex:1}.parts li[data-v-6245a2ba]:not(.has-decals){opacity:.62}.parts li:not(.has-decals) .swatch[data-v-6245a2ba]{filter:grayscale(.7)}.parts li.has-decals[data-v-6245a2ba]{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.parts li.has-decals.active[data-v-6245a2ba]{box-shadow:inset 3px 0 0 var(--accent),0 0 0 4px var(--accent-glow)}.parts .pcount[data-v-6245a2ba]{display:inline-flex;align-items:center;gap:3px;margin-left:auto}.parts .pcount .pdot[data-v-6245a2ba]{width:6px;height:6px;border-radius:50%;background:var(--accent)}.parts .pcount b[data-v-6245a2ba]{font-family:var(--gb-font-mono);font-size:var(--fs-2xs);color:var(--accent);font-weight:500}.update-banner[data-v-a5351622]{position:fixed;right:20px;bottom:20px;z-index:1100;display:flex;align-items:center;gap:12px;max-width:360px;padding:12px 14px;border:1px solid var(--accent);border-radius:var(--radius-xs);background:var(--surface-sunken);color:var(--ink-soft);font-size:var(--fs-2xs);line-height:1.5;box-shadow:0 6px 24px var(--scrim-strong)}.msg[data-v-a5351622]{flex:1}.refresh[data-v-a5351622]{flex:none;padding:6px 12px;border:none;border-radius:var(--radius-xs);background:var(--accent);color:var(--bg);font-size:var(--fs-2xs);font-weight:600;cursor:pointer}.refresh[data-v-a5351622]:hover{filter:brightness(1.08)}.dismiss[data-v-a5351622]{flex:none;padding:0 4px;border:none;background:none;color:var(--ink-soft);font-size:16px;line-height:1;cursor:pointer;opacity:.7}.dismiss[data-v-a5351622]:hover{opacity:1}.app[data-v-7a9cea02]{display:grid;grid-template-columns:320px 1fr;height:100vh}.sidebar[data-v-7a9cea02]{padding:24px 20px;background:var(--bg);border-right:1px solid var(--line);overflow-y:auto}.load-modal[data-v-7a9cea02]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:var(--scrim-strong);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.load-card[data-v-7a9cea02]{display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--ink-soft);font-size:var(--fs-sm)}.load-spinner[data-v-7a9cea02]{width:38px;height:38px;border:3px solid var(--accent-glow);border-top-color:var(--accent);border-radius:50%;animation:load-spin-7a9cea02 .8s linear infinite}@keyframes load-spin-7a9cea02{to{transform:rotate(360deg)}}.canvas-wrap[data-v-7a9cea02]{position:relative;min-height:0;min-width:0}.canvas[data-v-7a9cea02]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--canvas-bg);touch-action:none}.canvas.marking[data-v-7a9cea02]{cursor:crosshair}.error[data-v-7a9cea02]{margin-top:4px;padding:10px 12px;border:1px solid var(--danger);border-radius:var(--radius-xs);background:var(--surface-sunken);color:var(--danger);font-size:var(--fs-2xs);line-height:1.55}:root{--gb-blue-50: #eaf2ff;--gb-blue-100: #d1e3ff;--gb-blue-200: #a8c8ff;--gb-blue-300: #7aa8ff;--gb-blue-400: #4d8aff;--gb-blue-500: #0066ff;--gb-blue-600: #0052cc;--gb-blue-700: #0040b0;--gb-blue-800: #003088;--gb-blue-900: #002566;--gb-blue-950: #001a47;--gb-violet-300: #bf9bff;--gb-violet-400: #a371f7;--gb-violet-500: #8b5cf6;--gb-violet-600: #7c3aed;--gb-violet-700: #6d28d9;--gb-gold-500: #d4a574;--gb-warm-50: #f5f5f7;--gb-warm-100: #ebebef;--gb-warm-200: #d2d2d7;--gb-warm-300: #b8b8bf;--gb-warm-400: #86868b;--gb-warm-500: #6e6e73;--gb-warm-600: #424245;--gb-warm-700: #2c2c2e;--gb-warm-800: #1d1d1f;--gb-warm-900: #000000;--gb-font-sc: "Noto Sans SC", sans-serif;--gb-font-en: "Inter", sans-serif;--gb-font-mono: "JetBrains Mono", "Consolas", monospace}:root{--bg: var(--gb-warm-50);--bg-deep: var(--gb-warm-100);--surface: rgba(255, 255, 255, .72);--surface-strong: rgba(255, 255, 255, .85);--surface-sunken: rgba(0, 0, 0, .025);--surface-muted: rgba(0, 0, 0, .04);--ink: var(--gb-warm-800);--ink-soft: var(--gb-warm-600);--ink-mute: var(--gb-warm-400);--ink-faint: var(--gb-warm-300);--line: rgba(0, 0, 0, .08);--line-soft: rgba(0, 0, 0, .04);--accent: var(--gb-blue-500);--accent-deep: var(--gb-blue-700);--accent-glow: rgba(0, 102, 255, .12);--accent-soft: rgba(0, 102, 255, .1);--gold: var(--gb-gold-500);--radius-l: 28px;--radius-m: 20px;--radius-s: 14px;--radius-pill: 100px;--shadow-soft: 0 1px 3px rgba(0, 0, 0, .04), 0 8px 32px rgba(0, 0, 0, .04);--shadow-card: 0 1px 2px rgba(0, 0, 0, .04), 0 12px 40px rgba(0, 0, 0, .06), 0 24px 80px rgba(0, 0, 0, .04);--shadow-hover: 0 1px 2px rgba(0, 0, 0, .05), 0 20px 60px rgba(0, 0, 0, .1), 0 40px 120px rgba(0, 0, 0, .06);--fs-3xs: 13px;--fs-2xs: 12px;--fs-xs: 13px;--fs-sm: 15px;--fs-md: 17px;--fs-lg: 20px;--fs-xl: 28px;--fs-2xl: 40px;--fs-3xl: clamp(36px, 5vw, 64px);--fs-4xl: clamp(48px, 8vw, 110px);--ease: cubic-bezier(.22, 1, .36, 1);--ease-emphasis: cubic-bezier(.32, .72, 0, 1)}[data-theme=dark]{--bg: var(--gb-warm-900);--bg-deep: var(--gb-warm-900);--surface: rgba(28, 26, 38, .62);--surface-strong: rgba(34, 32, 46, .85);--surface-sunken: rgba(255, 255, 255, .04);--surface-muted: rgba(255, 255, 255, .06);--ink: #fff;--ink-soft: #d4d4dc;--ink-mute: #9a9aa3;--ink-faint: #5a5760;--line: rgba(255, 255, 255, .08);--line-soft: rgba(255, 255, 255, .04);--accent: var(--gb-blue-400);--accent-deep: var(--gb-blue-600);--accent-glow: rgba(77, 138, 255, .18);--accent-soft: rgba(77, 138, 255, .1);--shadow-soft: 0 1px 3px rgba(0, 0, 0, .5), 0 8px 32px rgba(0, 0, 0, .4);--shadow-card: 0 1px 2px rgba(0, 0, 0, .5), 0 12px 40px rgba(0, 0, 0, .5), 0 24px 80px rgba(0, 0, 0, .4);--shadow-hover: 0 1px 2px rgba(0, 0, 0, .55), 0 20px 60px rgba(0, 0, 0, .6), 0 40px 120px rgba(0, 0, 0, .5)}:root{--radius-xs: 10px;--canvas-bg: #e6e8ec;--canvas-check-a: #dcdee3;--canvas-check-b: #eef0f3;--facing-face: rgba(0, 102, 255, .55);--facing-cap: rgba(0, 102, 255, .32);--on-accent: #ffffff;--handle-rotate: var(--gb-blue-500);--handle-scale: #16a34a;--mark: #ff2bd0;--mark-soft: rgba(255, 43, 208, .12);--mark-ink: #ff9be9;--danger: #ff8a80;--scrim: rgba(255, 255, 255, .78);--scrim-strong: rgba(246, 247, 249, .9)}[data-theme=dark]{--canvas-bg: #0a0c10;--canvas-check-a: #15181f;--canvas-check-b: #0e1015;--facing-face: rgba(77, 138, 255, .78);--facing-cap: rgba(77, 138, 255, .5);--scrim: rgba(0, 0, 0, .65);--scrim-strong: rgba(10, 12, 18, .86)}:root{color-scheme:dark;font-family:var(--gb-font-en),var(--gb-font-sc),system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0}*{scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{background:var(--ink-faint);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--ink-mute)}button,input,textarea,select{font:inherit}button:focus-visible,input:focus-visible,.file-btn:focus-within{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}button{cursor:pointer;border:1px solid var(--line);background:var(--surface-muted);color:var(--ink-soft);border-radius:var(--radius-xs);padding:8px 12px;transition:background .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease)}button:hover{background:var(--surface-strong);color:var(--ink)}button:disabled{opacity:.4;cursor:not-allowed}button:disabled:hover{background:var(--surface-muted);color:var(--ink-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface-muted);color:var(--ink-soft);font-size:var(--fs-xs);line-height:1.2;cursor:pointer;transition:background .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease)}.btn-block{display:flex;width:100%}.btn-accent{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn-accent:hover:not(:disabled){background:var(--accent-deep);border-color:var(--accent-deep);color:var(--on-accent)}.btn-accent:disabled:hover{background:var(--accent);color:var(--on-accent)}.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--ink-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.btn-ghost:hover:not(:disabled){background:var(--surface-strong);border-color:var(--accent);color:var(--ink)}.seg{padding:4px 9px;border-radius:6px;border:1px solid var(--line);background:var(--surface-sunken);color:var(--ink-mute);font-size:var(--fs-2xs);line-height:1.4}.seg:hover:not(:disabled){background:var(--surface-muted);color:var(--ink)}.seg.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.seg.on:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.licon{flex:none;padding:3px 7px;border-radius:6px;background:var(--surface-sunken);border:1px solid var(--line);color:var(--ink-soft);font-size:var(--fs-2xs)}h2{margin:0 0 10px;font-size:var(--fs-xs);font-weight:600;color:var(--ink-soft);letter-spacing:-.01em}section{margin-bottom:24px}.hint{margin:8px 0;color:var(--ink-mute);font-size:var(--fs-2xs);line-height:1.55}.file-btn{position:relative;cursor:pointer;text-align:center}.file-btn input{display:none}
