@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2) format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*:before,*:after{box-sizing:border-box}:root{color-scheme:dark;--bg: #09090b;--surface: #0f0f12;--text: #fafafa;--muted: #a1a1aa;--muted-strong: #71717a;--border: #27272a;--border-strong: #3f3f46;--accent: #fafafa;--accent-fg: #09090b;--ring: #fafafa;--danger: #ff0000;--danger-bg: #1a0000;--danger-border: #7f1d1d;--danger-text: #ffcccc;--radius: 0px;--radius-button: 4px;--border-w: 1px;--font-weight-regular: 400;--font-weight-semibold: 600;--space: .5rem;--font: "Geist Variable", "Geist", system-ui, sans-serif;--font-mono: "Geist Mono Variable", "Geist Mono", ui-monospace, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-md: 1rem;--font-size-lg: 1.5rem;--touch-min: 44px;--transition: 0s;--press-transition: .1s linear;--shadow: none;--z-empty: 10;--z-panel: 30;--z-toggle: 40;--z-toast: 50;--z-skip: 1000;--scrollbar-size: 6px;--scrollbar-track: transparent;--scrollbar-thumb: #3f3f46;--scrollbar-thumb-hover: #52525b}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}*::-webkit-scrollbar{width:var(--scrollbar-size);height:var(--scrollbar-size)}*::-webkit-scrollbar-track{background:var(--scrollbar-track)}*::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border:none;border-radius:0}*::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}*::-webkit-scrollbar-corner{background:transparent}html,body{margin:0;height:100%;font-family:var(--font);font-size:var(--font-size-md);font-weight:var(--font-weight-regular);line-height:1.4;background:var(--bg);color:var(--text)}.skip-link{position:absolute;top:-100px;left:var(--space);z-index:var(--z-skip);padding:.75rem 1rem;background:var(--accent);color:var(--accent-fg);border:var(--border-w) solid var(--accent-fg);border-radius:var(--radius);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);text-transform:none;letter-spacing:0}.skip-link:focus{top:var(--space);outline:3px solid var(--ring);outline-offset:2px}.app{display:flex;height:100vh;height:100dvh;overflow:hidden;background:linear-gradient(to right,var(--border) 1px,transparent 1px) 0 0 / 48px 48px,linear-gradient(to bottom,var(--border) 1px,transparent 1px) 0 0 / 48px 48px,var(--bg)}.panel-toggle{display:none;position:fixed;top:max(.75rem,env(safe-area-inset-top));left:max(.75rem,env(safe-area-inset-left));z-index:var(--z-toggle);min-height:var(--touch-min);min-width:var(--touch-min);padding:.625rem 1rem;font-weight:var(--font-weight-semibold);text-transform:none;letter-spacing:0}.panel{width:340px;flex-shrink:0;background:var(--surface);border-right:var(--border-w) solid var(--border-strong);overflow-y:auto;overscroll-behavior:contain;padding:1.25rem;padding-bottom:max(1.25rem,env(safe-area-inset-bottom))}.panel h1{margin:0 0 .35rem;font-size:var(--font-size-lg);font-weight:var(--font-weight-regular);letter-spacing:-.03em;line-height:1;text-transform:none}.panel .subtitle{margin:0 0 1.5rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--muted);line-height:1.45;border-bottom:var(--border-w) solid var(--border);padding-bottom:1rem}.panel section{margin-bottom:1.5rem;padding-bottom:1.25rem;border-bottom:var(--border-w) solid var(--border)}.panel section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.panel section h2{margin:0 0 .875rem;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);letter-spacing:.02em;text-transform:none;color:var(--accent)}.advanced{margin-bottom:1.5rem;border:var(--border-w) solid var(--border-strong);border-radius:var(--radius-button);background:var(--bg);padding:0 .875rem .875rem}.advanced summary{cursor:pointer;min-height:var(--touch-min);display:flex;align-items:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);letter-spacing:.02em;text-transform:none;color:var(--text);list-style:none;border-radius:var(--radius-button)}.advanced summary::-webkit-details-marker{display:none}.advanced summary:before{content:"+";display:inline-block;width:1.25rem;margin-right:.5rem;font-family:var(--font-mono);font-weight:var(--font-weight-semibold);color:var(--accent)}.advanced[open] summary:before{content:"−"}.advanced-intro,.control-help{margin:0 0 .875rem;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);color:var(--muted);line-height:1.45}.control-help{margin:.375rem 0 0;font-family:var(--font-mono)}.control{margin-bottom:.875rem}.control label{display:flex;justify-content:space-between;align-items:center;margin-bottom:.375rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);text-transform:none;letter-spacing:0;line-height:1.4}.control label span.value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--accent);font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);letter-spacing:0;text-transform:none}.control input[type=range]{width:100%;height:var(--touch-min);margin:0;accent-color:var(--accent);cursor:pointer}.control input[type=color]{width:100%;min-height:var(--touch-min);height:var(--touch-min);padding:.25rem;border:var(--border-w) solid var(--border-strong);border-radius:var(--radius-button);background:var(--bg);cursor:pointer}.control input[type=file]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.file-picker{display:flex;flex-direction:column;gap:.5rem}.file-picker-trigger{display:flex;align-items:center;justify-content:center;min-height:var(--touch-min);width:100%}.file-meta{margin:0;font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--muted);line-height:1.4;word-break:break-all}.text-input{width:100%;min-height:var(--touch-min);padding:.625rem .75rem;border:var(--border-w) solid var(--border-strong);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--font-size-md);font-weight:var(--font-weight-regular);line-height:1.4}.text-input::placeholder{color:var(--muted-strong);text-transform:none;letter-spacing:0;font-size:var(--font-size-sm)}.text-input:focus-visible,.control input[type=color]:focus-visible,.control input[type=range]:focus-visible,.control.checkbox input:focus-visible,.advanced summary:focus-visible,button:focus-visible,.panel-toggle:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.preset-actions{display:flex;gap:0;margin-bottom:.875rem}.preset-actions button{flex:1}.preset-actions button+button{border-left:none}.preset-list{display:flex;flex-direction:column;gap:.5rem}.preset-item{display:flex;gap:.5rem}.preset-load{flex:1;text-align:left}.preset-delete{flex-shrink:0;color:var(--danger-text);border-color:var(--danger-border);background:var(--danger-bg)}.preset-delete:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.preset-empty,.preset-status{margin:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--muted);line-height:1.4}.preset-status{margin-top:.75rem;min-height:1.25rem;font-family:var(--font-mono);font-size:var(--font-size-xs);text-transform:none;letter-spacing:0}.control.checkbox label{justify-content:flex-start;gap:.625rem;min-height:var(--touch-min);cursor:pointer;text-transform:none;letter-spacing:0;font-weight:var(--font-weight-regular)}.control.checkbox input{width:1.25rem;height:1.25rem;accent-color:var(--accent);flex-shrink:0;border-radius:var(--radius)}.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.export-grid button{border-radius:var(--radius-button)}.ramp-preview{height:1.75rem;border-radius:var(--radius);border:var(--border-w) solid var(--border-strong);margin-bottom:.875rem}.ramp-actions{display:flex;gap:0;margin-bottom:.875rem}.ramp-actions button{flex:1}.ramp-actions button+button{border-left:none}button{min-height:var(--touch-min);padding:.625rem .875rem;border:var(--border-w) solid var(--border-strong);border-radius:var(--radius-button);background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);text-transform:none;letter-spacing:0;cursor:pointer;touch-action:manipulation;box-shadow:var(--shadow);transition:background var(--press-transition),color var(--press-transition),border-color var(--press-transition),transform var(--press-transition)}button:hover{background:#18181b}button:active:not(:disabled){background:var(--accent);color:var(--accent-fg);border-color:var(--accent-fg);transform:translate(2px,2px)}button:disabled{opacity:.4;cursor:not-allowed}button:disabled:hover,button:disabled:active{background:var(--bg);color:var(--text);border-color:var(--border-strong);transform:none}button.primary{background:var(--accent);border-color:var(--accent-fg);color:var(--accent-fg)}button.primary:hover{background:#e4e4e7}button.primary:active:not(:disabled){background:var(--text);color:var(--bg);border-color:var(--text)}button.primary:disabled:hover{background:var(--accent);color:var(--accent-fg);border-color:var(--accent-fg)}.preview{position:relative;flex:1;display:flex;align-items:center;justify-content:center;padding:1.5rem;min-width:0;outline:none;background:var(--bg)}#preview-canvas{max-width:100%;max-height:100%;border:var(--border-w) solid var(--border-strong);border-radius:var(--radius);background:#000}.empty-state{position:absolute;top:1.5rem;right:1.5rem;bottom:1.5rem;left:1.5rem;z-index:var(--z-empty);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;text-align:center;border:var(--border-w) solid var(--border-strong);background:var(--surface)}.empty-state[hidden]{display:none}.empty-state-title{margin:0;font-size:clamp(1.75rem,4vw,2.75rem);font-weight:var(--font-weight-regular);letter-spacing:-.04em;line-height:.95;text-transform:none}.empty-state-body{margin:0;max-width:22rem;font-size:var(--font-size-md);font-weight:var(--font-weight-regular);line-height:1.45;color:var(--muted)}.toast{position:fixed;bottom:max(1.25rem,env(safe-area-inset-bottom));left:50%;z-index:var(--z-toast);display:flex;align-items:center;justify-content:center;gap:.75rem;transform:translate(-50%);min-width:min(18rem,calc(100vw - 2rem));max-width:28rem;padding:.875rem 1.125rem;border:var(--border-w) solid var(--border-strong);border-radius:var(--radius);background:var(--accent);color:var(--accent-fg);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);text-transform:none;letter-spacing:0;line-height:1.3;box-shadow:4px 4px #000;text-align:center}.toast[hidden]{display:none}.toast-message{flex:1}.toast-action{flex-shrink:0;min-height:2.25rem;padding:.375rem .75rem;border-color:var(--accent-fg);background:var(--accent-fg);color:var(--accent);font-weight:var(--font-weight-semibold)}.toast-action:hover{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.toast-action[hidden]{display:none}.toast.is-visible{animation:none}@media(prefers-reduced-motion:reduce){button:active:not(:disabled){transform:none}}@media(max-width:768px){html,body{font-size:16px}.app{flex-direction:column;background:var(--bg)}.panel-toggle{display:inline-flex;align-items:center;justify-content:center}.panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-panel);width:100%;max-width:none;border-right:none;border-top:var(--border-w) solid var(--border-strong);padding-top:calc(max(.75rem,env(safe-area-inset-top)) + var(--touch-min) + .75rem);transform:translateY(100%);transition:transform .1s linear;visibility:hidden}.panel.is-open{transform:translateY(0);visibility:visible}.panel .subtitle,.panel section h2,.control label,button,.text-input,.file-meta,.preset-empty,.preset-status,.advanced summary,.advanced-intro,.control-help,.empty-state-body{font-size:var(--font-size-md)}.control label span.value{font-size:var(--font-size-sm)}.preview{padding:1rem;padding-top:calc(var(--touch-min) + 1.5rem)}.empty-state{top:1rem;right:1rem;bottom:1rem;left:1rem;top:calc(var(--touch-min) + 1.5rem)}.export-grid{grid-template-columns:1fr}}
