:root{--bg:#f7f1ec;--surface:#fffcfa;--surface-2:#f3ebe4;--line:#e8ddd4;--line2:#d9cdc2;--text:#1c1410;--muted:#6e5c52;--accent:#e85d1c;--accent-hover:#d14f14;--soft:#ffe8da;--canvas:#f3eee9;--bed-fill:#fff;--glow-a:transparent;--glow-b:transparent;--cut:#e0435c;--eng:#2563eb;--score:#1f9d62;--guide:#8b919a;--shadow:0 1px 0 #1c14100a, 0 8px 24px #1c14100f;--focus:#e85d1c59;--radius:8px;--radius-sm:6px;--top-h:44px;--prop-h:36px;--status-h:26px;--rail-w:48px;--side-w:252px;--font:"DM Sans", ui-sans-serif, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace}:root[data-density=comfortable]{--top-h:52px;--prop-h:42px;--status-h:30px;--rail-w:60px;--side-w:292px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font:12.5px / 1.4 var(--font);font-feature-settings:"ss01" on, "cv11" on;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;overflow:hidden}:root[data-density=comfortable] body{font-size:13.5px}.editor-shell{grid-template-rows:var(--top-h) var(--prop-h) 1fr var(--status-h);height:100%;color:var(--text);display:grid;overflow:hidden}.top,.prop,.status{background:var(--surface);border-color:var(--line);align-items:center;gap:6px;padding:0 12px;display:flex}.top{border-bottom:1px solid var(--line);gap:8px;box-shadow:0 1px #00000005}.prop{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--surface) 88%, var(--surface-2));gap:6px}.status{border-top:1px solid var(--line);color:var(--muted);letter-spacing:.01em;gap:16px;font-size:11.5px}.logo{letter-spacing:-.02em;white-space:nowrap;margin-right:4px;font-size:13.5px;font-weight:700}.logo b{color:var(--accent);font-weight:700}.cluster{border-radius:var(--radius);background:var(--surface-2);border:1px solid #0000;align-items:center;gap:2px;padding:2px;display:inline-flex}.cluster .chip{box-shadow:none;background:0 0;border-color:#0000}.cluster .chip.on{background:var(--surface);border-color:var(--line);box-shadow:0 1px 2px #0000000a}.cluster .chip:hover:not(:disabled):not(.on){background:color-mix(in srgb, var(--surface) 70%, transparent)}.vdiv{background:var(--line2);flex-shrink:0;width:1px;height:18px;margin:0 4px}.chip,.pill{border:1px solid var(--line2);border-radius:var(--radius-sm);background:var(--surface);height:26px;font:inherit;color:inherit;cursor:default;white-space:nowrap;align-items:center;gap:4px;padding:0 9px;font-size:12px;font-weight:550;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex}:root[data-density=comfortable] .chip,:root[data-density=comfortable] .pill{height:32px;padding:0 11px;font-size:13px}button.chip,button.pill{cursor:pointer}.chip:hover:not(:disabled),.pill:hover:not(:disabled){border-color:color-mix(in srgb, var(--line2) 40%, var(--muted));background:color-mix(in srgb, var(--surface) 70%, var(--soft))}.chip.on,.pill.on{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.chip.on:hover:not(:disabled),.pill.on:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.chip:focus-visible,.pill:focus-visible,.t:focus-visible,.btn:focus-visible,.prop input:focus-visible,.side input:focus-visible,.bed-select select:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.chip:disabled,.pill:disabled{opacity:.4;cursor:not-allowed}.chip.ghost,.pill.ghost{color:var(--muted);background:0 0;border-color:#0000}.chip.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:#0000}.bed-select{gap:4px;padding-right:6px}.bed-select select{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;max-width:150px;font-weight:550}.sp{flex:1;min-width:8px}.prop label{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:600}.prop input{border:1px solid var(--line2);border-radius:var(--radius-sm);width:58px;height:26px;font:500 12px / 1 var(--font-mono);font-variant-numeric:tabular-nums;background:var(--surface);color:var(--text);padding:0 6px;transition:border-color .12s}:root[data-density=comfortable] .prop input{width:64px;height:30px}.prop input:disabled{color:var(--muted);background:var(--surface-2)}.prop input:hover:not(:disabled){border-color:color-mix(in srgb, var(--line2) 50%, var(--muted))}.prop-gap{flex-shrink:0;width:10px}.prop-ops{scrollbar-width:none;flex-wrap:nowrap;align-items:center;gap:3px;max-width:100%;display:inline-flex;overflow-x:auto}.stage-note{color:var(--muted);opacity:.75;margin-left:auto;font-size:11px;font-weight:500}.import-menu{position:relative}.import-menu summary{cursor:pointer;list-style:none}.import-menu summary::-webkit-details-marker{display:none}.import-menu[open]>summary{background:var(--soft);border-color:color-mix(in srgb, var(--accent) 30%, var(--line2));color:var(--accent)}.import-pop{z-index:40;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);min-width:160px;box-shadow:var(--shadow);flex-direction:column;gap:1px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.import-pop button{border-radius:var(--radius-sm);width:100%;height:30px;font:inherit;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:flex-start;padding:0 10px;font-weight:500}.import-pop button:hover{background:var(--soft);color:var(--accent)}.main{grid-template-columns:var(--rail-w) 1fr var(--side-w);min-height:0;display:grid}.rail{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;align-items:center;gap:2px;padding:8px 0;display:flex}.rail-item{flex-direction:column;align-items:center;gap:2px;display:flex}.rail-sep{background:var(--line);width:22px;height:1px;margin:6px 0}.t{border-radius:var(--radius);width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;transition:background .12s,color .12s;display:grid}:root[data-density=comfortable] .t{width:44px;height:44px}.t:hover{background:var(--surface-2);color:var(--text)}.t.on{background:var(--soft);color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent)}.t svg{stroke:currentColor;fill:none;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}:root[data-density=comfortable] .t svg{width:21px;height:21px}.t.deferred,.t:disabled{opacity:.28;cursor:not-allowed}.canvas{background:var(--canvas);cursor:default;touch-action:none;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.canvas.is-panning{cursor:grabbing}.canvas.is-draw{cursor:crosshair}.canvas.is-select{cursor:default}.canvas-empty{pointer-events:none;z-index:2;text-align:center;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.canvas-empty-card{background:color-mix(in srgb, var(--surface) 92%, transparent);border:1px solid var(--line);max-width:320px;box-shadow:var(--shadow);color:var(--muted);border-radius:12px;padding:20px 22px}.canvas-empty-card strong{color:var(--text);letter-spacing:-.02em;margin-bottom:6px;font-size:14px;font-weight:650;display:block}.canvas-empty-card p{margin:0;font-size:12.5px;line-height:1.45}.canvas-empty-card kbd{font:500 11px var(--font-mono);border:1px solid var(--line2);background:var(--surface-2);color:var(--text);border-radius:4px;padding:1px 5px}.canvas-world{will-change:transform;position:absolute;top:0;left:0}.bed{background-color:#0000;background-image:linear-gradient(color-mix(in srgb, var(--line) 70%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--line) 70%, transparent) 1px, transparent 1px);box-shadow:0 0 0 1px color-mix(in srgb, var(--line2) 80%, transparent), var(--shadow);border-radius:2px;position:relative}.bed-outline{pointer-events:auto;display:block;position:absolute;inset:0;overflow:visible}.bed-label{color:var(--muted);letter-spacing:.01em;white-space:nowrap;pointer-events:none;font-size:11px;font-weight:500;position:absolute;top:-20px;left:8px}.handle{pointer-events:auto;cursor:pointer}.handle.rotate{cursor:grab}.pen-hover-ring{pointer-events:none}:root[data-density=comfortable] .handle.node-anchor,:root[data-density=comfortable] .handle.node-handle{stroke-width:2px}.side{border-left:1px solid var(--line);background:var(--surface);scrollbar-width:thin;scrollbar-color:var(--line2) transparent;padding:10px 10px 16px;overflow:auto}.side h4{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:14px 0 8px;font-size:10px;font-weight:650}.side h4:first-child{margin-top:2px}.panel-block{border-radius:var(--radius);border:1px solid var(--line);background:color-mix(in srgb, var(--surface-2) 55%, var(--surface));margin-bottom:4px;padding:8px}.layer,.layer-btn{border-radius:var(--radius-sm);width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:8px;margin-bottom:2px;padding:7px 8px;transition:background .12s,border-color .12s;display:flex}.layer-btn:hover{background:var(--surface-2)}.layer-btn.on{border-color:color-mix(in srgb, var(--accent) 35%, var(--line));background:var(--soft)}.sw{border-radius:3px;flex-shrink:0;width:10px;height:10px;box-shadow:inset 0 0 0 1px #00000014}.sw.cut{background:var(--cut)}.sw.eng{background:var(--eng)}.sw.score{background:var(--score)}.sw.guide{background:var(--guide)}.layer .n,.layer-btn .n{flex:1;font-size:12.5px;font-weight:600}.layer .m,.layer-btn .m{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.btn{border-radius:var(--radius-sm);background:var(--accent);color:#fff;width:100%;font:inherit;letter-spacing:-.01em;cursor:pointer;border:0;margin-top:6px;padding:8px 10px;font-weight:650;transition:background .12s;display:block}.btn:hover:not(:disabled){background:var(--accent-hover)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.o{background:var(--surface);color:var(--text);border:1px solid var(--line2)}.btn.o:hover:not(:disabled){background:var(--surface-2);border-color:color-mix(in srgb, var(--line2) 40%, var(--muted))}.btn-row{grid-template-columns:1fr 1fr;gap:4px;margin-top:6px;display:grid}.btn.tiny{margin-top:0;padding:6px;font-size:11px;font-weight:600}.row{border-bottom:1px solid color-mix(in srgb, var(--line) 80%, transparent);justify-content:space-between;align-items:baseline;gap:10px;padding:5px 0;font-size:12px;display:flex}.row:last-child{border-bottom:0}.row span{color:var(--muted)}.row b{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.row b.ok{color:var(--score)}.side .row input[type=number]{border:1px solid var(--line2);width:64px;height:24px;font:500 11.5px / 1 var(--font-mono);background:var(--surface);color:var(--text);border-radius:5px;padding:0 5px}.check{color:var(--text);align-items:center;gap:7px;padding:4px 0;font-size:12px;display:flex}.check input{accent-color:var(--accent);width:14px;height:14px}.empty-hint{color:var(--muted);padding:4px 0 2px;font-size:12px;line-height:1.4}.gate{text-align:center;background:var(--bg);place-items:center;height:100%;padding:24px;display:grid}.gate a{color:var(--accent);font-weight:700;text-decoration:none}.gate a:hover{text-decoration:underline}.gate code{font:500 12px var(--font-mono);background:var(--surface-2);border-radius:4px;padding:1px 5px}@media (width<=980px){.main{grid-template-columns:var(--rail-w) 1fr}.side,.stage-note,.top .cluster.file-extra{display:none}}@media (width<=720px){.top{scrollbar-width:none;overflow-x:auto}.prop-ops .chip:nth-child(n+5){display:none}}
