:root{--paper: #f2f0e9;--panel: #f7f5ef;--canvas: #e9e6dd;--ink: #1a1915;--ink-60: rgba(26, 25, 21, .6);--ink-40: rgba(26, 25, 21, .4);--line: rgba(26, 25, 21, .14);--line-strong: rgba(26, 25, 21, .3);--accent: #e03e00;--accent-soft: rgba(224, 62, 0, .08);--font-display: "Archivo", sans-serif;--font-mono: "IBM Plex Mono", monospace;--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .18s;--dur-enter: .7s}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:var(--font-display);background:var(--paper);color:var(--ink);display:flex;flex-direction:column;overflow:hidden;-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer;background:none;border:none;color:inherit}.topbar{display:flex;align-items:stretch;gap:24px;border-bottom:1px solid var(--line-strong);padding:0 20px;height:64px;flex:none}.brand{display:flex;align-items:center;gap:12px}.brand-glyph{width:30px;height:30px;display:block}.brand-text{display:flex;flex-direction:column;gap:2px}.brand-name{font-weight:700;font-size:17px;letter-spacing:.04em}.brand-sub{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-60)}.tabs{display:flex;align-items:stretch;margin-left:28px}.tab{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.14em;padding:0 16px;color:var(--ink-60);border-bottom:2px solid transparent;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.tab:hover{color:var(--ink)}.tab.active{color:var(--ink);border-bottom-color:var(--accent)}.titleblock{display:flex;margin-left:auto;border-left:1px solid var(--line)}.tb-cell{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:0 18px;border-right:1px solid var(--line);font-family:var(--font-mono)}.tb-cell span{font-size:9px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-40)}.tb-cell b{font-size:12px;font-weight:500;letter-spacing:.06em}.topbar-actions{display:flex;align-items:center;gap:10px}.btn{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.14em;padding:10px 18px;border:1px solid var(--ink);transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--accent);border-color:var(--accent)}.btn-ghost{border-color:var(--line-strong);color:var(--ink-60)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.layout{display:grid;grid-template-columns:320px 1fr;flex:1;min-height:0}.panel{border-right:1px solid var(--line-strong);background:var(--panel);overflow-y:auto;scrollbar-width:thin;counter-reset:sec}.hidden{display:none!important}.sec{padding:20px;border-bottom:1px solid var(--line);animation:rise var(--dur-enter) var(--ease-out) backwards}.sec:not(.hidden){counter-increment:sec}.sec-title i:before{content:counter(sec,decimal-leading-zero)}.sec:nth-child(1){animation-delay:60ms}.sec:nth-child(2){animation-delay:.13s}.sec:nth-child(3){animation-delay:.2s}.sec:nth-child(4){animation-delay:.27s}.sec:nth-child(5){animation-delay:.34s}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.sec-title{font-family:var(--font-mono);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.2em;margin-bottom:16px;color:var(--ink)}.sec-title i{font-style:normal;color:var(--accent);margin-right:8px}.ctl{margin-bottom:14px}.ctl:last-child{margin-bottom:0}.ctl-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px}.ctl-head label{font-size:12.5px;font-weight:500;color:var(--ink-60)}.ctl-head output,.ctl-row output{font-family:var(--font-mono);font-size:12px;font-weight:500;font-variant-numeric:tabular-nums}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:16px;background:transparent}input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--line-strong)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;margin-top:-5px;background:var(--ink);border:none;transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:active::-webkit-slider-thumb{background:var(--accent);transform:scale(1.15)}input[type=range]::-moz-range-track{height:2px;background:var(--line-strong)}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:0;background:var(--ink);border:none}input[type=range]:hover::-moz-range-thumb{background:var(--accent)}.check{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:500;color:var(--ink-60);cursor:pointer;-webkit-user-select:none;user-select:none}.check input{position:absolute;opacity:0;pointer-events:none}.check .box{width:14px;height:14px;border:1px solid var(--line-strong);position:relative;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.check input:checked+.box{background:var(--accent);border-color:var(--accent)}.check:hover .box{border-color:var(--accent)}.seg{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line-strong)}.seg-opt{position:relative;cursor:pointer}.seg-opt input{position:absolute;opacity:0;pointer-events:none}.seg-opt span{display:block;text-align:center;padding:8px 4px;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-60);transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.seg-opt input:checked+span{background:var(--ink);color:var(--paper)}.seg-opt:first-child{border-right:1px solid var(--line-strong)}.ctl-row{display:flex;align-items:center;gap:10px;transition:opacity var(--dur-fast) var(--ease-out)}.ctl-row[data-disabled=true]{opacity:.35;pointer-events:none}.inline-label{font-size:12.5px;font-weight:500;color:var(--ink-60)}input[type=color]{-webkit-appearance:none;appearance:none;width:28px;height:22px;border:1px solid var(--line-strong);padding:2px;background:var(--panel);cursor:pointer}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:none}textarea,select{width:100%;font-family:var(--font-mono);font-size:13px;color:var(--ink);background:var(--paper);border:1px solid var(--line-strong);padding:10px 12px;resize:vertical;transition:border-color var(--dur-fast) var(--ease-out)}textarea:focus,select:focus{outline:none;border-color:var(--accent)}select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;cursor:pointer}.trace-preview{border:1px solid var(--line);background:var(--paper);min-height:40px;max-height:160px;overflow:hidden;display:grid;place-items:center}.trace-preview:empty{display:none}.trace-preview svg{width:100%;height:auto;max-height:158px}.sec-note{font-size:12px;line-height:1.6;color:var(--ink-60);margin-bottom:14px}.sec-note b{font-family:var(--font-mono);font-size:11px}.export-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.btn-export{padding:12px 0;border-color:var(--line-strong)}.btn-export:hover:not(:disabled){background:var(--ink);border-color:var(--ink);color:var(--paper)}.btn-export:disabled{opacity:.3;cursor:not-allowed}.export-note{margin-top:12px;font-family:var(--font-mono);font-size:10px;line-height:1.6;letter-spacing:.04em;color:var(--ink-40)}.stage{position:relative;min-width:0;background:var(--canvas)}#viewport{position:absolute;inset:0}#viewport canvas{display:block}.empty-state{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;transition:opacity .5s var(--ease-out)}.empty-state.hidden{opacity:0}.empty-frame{position:relative;padding:56px 72px;border:1px dashed var(--line-strong);text-align:center}.tick{position:absolute;width:14px;height:14px;border:0 solid var(--accent)}.tick.tl{top:-1px;left:-1px;border-top-width:2px;border-left-width:2px}.tick.tr{top:-1px;right:-1px;border-top-width:2px;border-right-width:2px}.tick.bl{bottom:-1px;left:-1px;border-bottom-width:2px;border-left-width:2px}.tick.br{bottom:-1px;right:-1px;border-bottom-width:2px;border-right-width:2px}.empty-title{font-size:clamp(28px,4vw,44px);font-weight:700;letter-spacing:.02em;text-transform:uppercase}.empty-sub{margin-top:10px;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-60)}.drop-overlay{position:absolute;inset:10px;border:2px dashed var(--accent);background:var(--accent-soft);display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-out);z-index:5}.drop-overlay.active{opacity:1}.drop-overlay p{font-family:var(--font-mono);font-size:13px;text-transform:uppercase;letter-spacing:.2em;color:var(--accent)}.readouts{position:absolute;left:0;right:0;bottom:0;display:flex;border-top:1px solid var(--line-strong);background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-family:var(--font-mono)}.ro{display:flex;align-items:baseline;gap:8px;padding:10px 18px;border-right:1px solid var(--line)}.ro span{font-size:9px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-40)}.ro b{font-size:13px;font-weight:500;font-variant-numeric:tabular-nums}.ro.accent b{color:var(--accent)}.ro.file{margin-left:auto;border-right:none;border-left:1px solid var(--line);min-width:0}.ro.file b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-weight:400}.notice{position:absolute;top:16px;left:50%;transform:translate(-50%,-8px);padding:10px 20px;background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;border-left:3px solid var(--accent);opacity:0;pointer-events:none;transition:opacity .3s var(--ease-out),transform .3s var(--ease-out);z-index:10;max-width:80%}.notice.visible{opacity:1;transform:translate(-50%)}@media(max-width:900px){.titleblock{display:none}.layout{grid-template-columns:1fr;grid-template-rows:1fr auto}.panel{order:2;max-height:42vh;border-right:none;border-top:1px solid var(--line-strong)}.stage{order:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
