:root{color-scheme:dark;--bg: #0b0a10;--fg: #f3f0f7;--accent: #ff6b6b;--panel-bg: rgba(16, 14, 22, .86)}*{box-sizing:border-box}html,body{margin:0;height:100%;width:100%;overflow:hidden;background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-tap-highlight-color:transparent}.stage{position:fixed;inset:0;display:flex}#canvas{width:100%;height:100%;display:block}.panel{position:fixed;top:0;right:0;width:min(320px,88vw);height:100%;padding:1rem 1.1rem 1.4rem;background:var(--panel-bg);backdrop-filter:blur(10px);border-left:1px solid rgba(255,255,255,.08);overflow-y:auto;display:flex;flex-direction:column;gap:.65rem;transition:transform .25s ease;z-index:2}.panel.hidden{transform:translate(100%)}.panel-head{display:flex;align-items:center;justify-content:space-between}.panel-head h1{margin:0;font-size:1.3rem;color:var(--accent);letter-spacing:.01em}.row{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;opacity:.92}.row span{display:flex;justify-content:space-between}.row output{opacity:.6;font-variant-numeric:tabular-nums}input[type=text],select{font-size:1rem;padding:.5rem .6rem;border-radius:.5rem;border:1px solid rgba(255,255,255,.14);background:#ffffff0d;color:var(--fg)}input[type=range]{width:100%;accent-color:var(--accent)}.buttons{display:flex;gap:.5rem}.buttons button{flex:1;min-height:2.6rem;border-radius:.55rem;border:1px solid rgba(255,255,255,.14);background:#ffffff0d;color:var(--fg);font-size:.9rem;font-weight:600;cursor:pointer}.buttons button:active{transform:scale(.98)}.buttons .primary{background:var(--accent);color:#0c0a10;border:none}.ghost{background:none;border:none;color:var(--fg);font-size:1.4rem;line-height:1;cursor:pointer;opacity:.6}.self-ref{margin-top:auto;padding-top:.8rem;font-size:.75rem;opacity:.55}.self-ref a{color:var(--fg)}.show-panel{position:fixed;top:.8rem;right:.8rem;z-index:1;width:2.6rem;height:2.6rem;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:var(--panel-bg);color:var(--fg);font-size:1.2rem;cursor:pointer}.panel:not(.hidden)~.show-panel{display:none}.toast{position:fixed;bottom:1.2rem;left:50%;transform:translate(-50%) translateY(2rem);background:#000000d1;color:#fff;padding:.6rem 1rem;border-radius:.6rem;font-size:.85rem;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;max-width:90vw;word-break:break-all}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}
