:root{--bg:#fff;--bg-soft:#fafafa;--panel:#f5f5f7;--ink:#0a0a0a;--ink-dim:#5b6571;--ink-mute:#9aa1ab;--hair:rgba(0,0,0,.08);--hair-strong:rgba(0,0,0,.18)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:#0a0a0a;color:var(--ink);font-family:Space Grotesk,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision;overflow:hidden}#stage{position:fixed;inset:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);place-items:center;background:#0a0a0a}#canvas,#stage{overflow:hidden}#canvas{width:1600px;height:1000px;position:relative;background:var(--bg);transform-origin:center center;color:var(--ink)}.mono{font-family:JetBrains Mono,ui-monospace,Menlo,monospace}.serif{font-family:"Instrument Serif",Times New Roman,serif}.nowrap{white-space:nowrap}.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}#dl-bar{position:fixed;top:16px;left:16px;z-index:10000;display:flex;gap:8px;align-items:stretch}#dl-gif,#dl-png,#dl-size{padding:9px 14px;border-radius:8px;cursor:pointer;background:#0a0a0a;color:#fff;border:1px solid hsla(0,0%,100%,.18);font-family:JetBrains Mono,ui-monospace,Menlo,monospace;font-size:11px;font-weight:600;letter-spacing:.08em}#dl-gif:hover,#dl-png:hover{background:#222}#dl-gif:disabled,#dl-png:disabled{opacity:.5;cursor:default}#dl-size{letter-spacing:0;padding-left:10px;padding-right:8px}#dl-back,#dl-name{padding:9px 14px;border-radius:8px;background:#0a0a0a;color:#fff;border:1px solid hsla(0,0%,100%,.18);font-family:JetBrains Mono,ui-monospace,Menlo,monospace;font-size:11px;font-weight:600;letter-spacing:.08em;text-decoration:none;display:flex;align-items:center}#dl-back:hover{background:#222}#dl-name{letter-spacing:0;min-width:220px;outline:none}#dl-name:focus{background:#1a1a1a;border-color:#4f8cff}#dl-status{align-self:center;font-family:JetBrains Mono,ui-monospace,Menlo,monospace;font-size:10px;letter-spacing:.06em;color:#9aa1ab;min-width:64px}#dl-status[data-state=saved]{color:#4ade80}#dl-status[data-state=error]{color:#f87171}