@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-vietnamese-wght-normal-XAtsl5Q_.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-latin-ext-wght-normal-C4zznr8T.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-latin-wght-normal-E0tuGl4L.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-paper:oklch(15% .008 250);--color-paper-2:oklch(18.5% .01 250);--color-paper-3:oklch(23% .012 250);--color-matte:oklch(12% .006 250);--color-ink:oklch(93% .008 90);--color-ink-2:oklch(66% .01 90);--color-ink-3:oklch(46% .01 90);--color-accent:oklch(60% .2 27);--color-accent-deep:oklch(48% .17 27);--color-accent-ink:oklch(97% .01 90);--color-line:oklch(100% 0 0/.09);--color-line-strong:oklch(100% 0 0/.18);--font-display:"Archivo Variable", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--dur-fast:.12s;--dur-med:.24s;--ease-out:cubic-bezier(.22, 1, .36, 1);--rail-w:300px;--dial-h:128px;--topbar-h:52px}html,body{overflow-x:clip}*,:before,:after{box-sizing:border-box}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-display);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;font-weight:420;line-height:1.5}h1,h2,h3,p{margin:0;font-style:normal}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}img,canvas{display:block}::selection{background:var(--color-accent);color:var(--color-accent-ink)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.app{grid-template-rows:var(--topbar-h) minmax(0, 1fr) auto;height:100dvh;display:grid}.mono{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;font-size:10px;font-weight:500}.topbar{z-index:20;align-items:center;gap:var(--space-4);padding:0 var(--space-4);border-bottom:1px solid var(--color-line);background:var(--color-paper-2);min-width:0;display:flex;position:sticky;top:0}.wordmark{align-items:center;gap:var(--space-2);font-family:var(--font-mono);letter-spacing:.22em;white-space:nowrap;font-size:13px;font-weight:500;display:flex}.rec-dot{background:var(--color-accent);width:8px;height:8px;animation:rec-pulse 2.4s var(--ease-out) infinite;border-radius:50%;flex:none}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.35}}.topbar-file{color:var(--color-ink-3);text-overflow:ellipsis;white-space:nowrap;text-align:center;flex:1;min-width:0;overflow:hidden}.topbar-actions{gap:var(--space-2);flex:none;display:flex}.btn{align-items:center;gap:var(--space-2);border:1px solid var(--color-line-strong);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;color:var(--color-ink-2);transition:color var(--dur-fast), border-color var(--dur-fast), background var(--dur-fast);border-radius:3px;padding:8px 14px;font-size:10px;font-weight:500;display:inline-flex}.btn:hover{color:var(--color-ink);border-color:var(--color-ink-2)}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.35;cursor:not-allowed;transform:none}.btn-accent{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}.btn-accent:hover{background:var(--color-accent-deep);border-color:var(--color-accent-deep);color:var(--color-accent-ink)}.bench{grid-template-columns:minmax(0, 1fr) var(--rail-w);min-height:0;display:grid}.stage{min-width:0;min-height:0;padding:var(--space-5);background:radial-gradient(120% 90% at 50% 40%, var(--color-paper) 0%, var(--color-matte) 100%);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.canvas-box{width:fit-content;max-width:100%;max-height:100%;position:relative;box-shadow:0 24px 80px oklch(0% 0 0/.55)}.stage-canvas{max-width:100%;max-height:calc(100dvh - var(--topbar-h) - var(--dial-h) - 96px);width:auto;height:auto}.dropzone{align-items:center;gap:var(--space-4);width:min(560px,100%);padding:var(--space-7) var(--space-5);border:1px dashed var(--color-line-strong);text-align:center;transition:border-color var(--dur-med), background var(--dur-med);border-radius:4px;flex-direction:column;display:flex}.dropzone:hover,.dropzone.is-hot{border-color:var(--color-accent);background:oklch(60% .2 27/.05)}.dropzone-title{letter-spacing:-.02em;overflow-wrap:anywhere;font-size:clamp(26px,4vw,40px);font-weight:640;line-height:1.05}.dropzone-title em{color:var(--color-accent);font-style:normal}.dropzone-sub{color:var(--color-ink-2);max-width:40ch}.dropzone-hint{color:var(--color-ink-3)}.dropzone-error{color:var(--color-accent)}.rail{border-left:1px solid var(--color-line);background:var(--color-paper-2);flex-direction:column;min-height:0;display:flex;overflow-y:auto}.rail-section{padding:var(--space-4);border-bottom:1px solid var(--color-line);gap:var(--space-3);flex-direction:column;display:flex}.rail-heading{color:var(--color-ink-3);justify-content:space-between;align-items:baseline;display:flex}.rail-heading .value{color:var(--color-accent)}.sim-name{letter-spacing:-.01em;font-size:22px;font-weight:620;line-height:1.1}.sim-desc{color:var(--color-ink-2);font-size:13px}.slider-label{color:var(--color-ink-3);white-space:nowrap;flex:none;min-width:8ch}.seg-row{align-items:center;gap:var(--space-3);display:flex}.seg-row .segmented{flex:1}.seg-row .segmented button[disabled]{opacity:.35;cursor:not-allowed}.link-btn{color:var(--color-ink-3);letter-spacing:.14em;transition:color var(--dur-fast)}.link-btn:hover{color:var(--color-accent)}.btn-lit{color:var(--color-accent);border-color:var(--color-accent)}.slider-row{align-items:center;gap:var(--space-3);display:flex}.slider-row output{font-family:var(--font-mono);color:var(--color-ink-2);text-align:right;flex:none;width:4ch;font-size:10px}input[type=range]{appearance:none;min-width:0;height:24px;accent-color:var(--color-accent);background:0 0;flex:1}input[type=range]::-webkit-slider-runnable-track{background:var(--color-line-strong);height:2px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--color-accent);border:none;border-radius:50%;width:12px;height:12px;margin-top:-5px}input[type=range]::-moz-range-track{background:var(--color-line-strong);height:2px}input[type=range]::-moz-range-thumb{background:var(--color-accent);border:none;border-radius:50%;width:12px;height:12px}.preset-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.preset{border:1px solid var(--color-line-strong);font-family:var(--font-mono);letter-spacing:.12em;color:var(--color-ink-2);transition:color var(--dur-fast), border-color var(--dur-fast);border-radius:3px;padding:6px 10px;font-size:10px}.preset:hover{color:var(--color-ink);border-color:var(--color-ink-2)}.preset.is-on{color:var(--color-accent);border-color:var(--color-accent)}.segmented{border:1px solid var(--color-line-strong);border-radius:3px;display:flex;overflow:hidden}.segmented button{font-family:var(--font-mono);letter-spacing:.14em;color:var(--color-ink-3);transition:color var(--dur-fast), background var(--dur-fast);flex:1;padding:7px 0;font-size:10px}.segmented button.is-on{background:var(--color-paper-3);color:var(--color-ink)}.export-size{font-family:var(--font-mono);color:var(--color-ink-3);letter-spacing:.1em;font-size:10px}.dial{border-top:1px solid var(--color-line);background:var(--color-paper-2);scrollbar-width:thin;scrollbar-color:var(--color-paper-3) transparent;overflow:auto hidden}.dial-track{gap:var(--space-3);padding:var(--space-3) var(--space-4);width:max-content;display:flex}.dial-item{text-align:left;width:108px;transition:border-color var(--dur-fast);border-top:2px solid #0000;flex-direction:column;flex:none;gap:6px;padding-top:6px;display:flex;position:relative}.dial-item:hover .dial-name{color:var(--color-ink)}.dial-item.is-on{border-top-color:var(--color-accent)}.dial-item.is-on .dial-name{color:var(--color-accent)}.dial-idx{font-family:var(--font-mono);color:var(--color-ink-3);letter-spacing:.14em;font-size:9px}.dial-thumb{object-fit:cover;background:var(--color-paper-3);border-radius:2px;width:108px;height:68px}.dial-thumb-ph{background:var(--color-paper-3);width:108px;height:68px;color:var(--color-ink-3);font-family:var(--font-mono);letter-spacing:.2em;border-radius:2px;justify-content:center;align-items:center;font-size:11px;display:flex}.dial-name{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink-2);white-space:nowrap;transition:color var(--dur-fast);font-size:9px}.crop-overlay{touch-action:none;position:absolute;inset:0}.crop-rect{outline:1px solid var(--color-accent);cursor:move;position:absolute;box-shadow:0 0 0 9999px oklch(8% .006 250/.72)}.crop-grid{pointer-events:none;background:linear-gradient(90deg,#0000 calc(33.333% - .5px),oklch(100% 0 0/.35) 33.333%,#0000 calc(33.333% + .5px)),linear-gradient(90deg,#0000 calc(66.666% - .5px),oklch(100% 0 0/.35) 66.666%,#0000 calc(66.666% + .5px)),linear-gradient(#0000 calc(33.333% - .5px),oklch(100% 0 0/.35) 33.333%,#0000 calc(33.333% + .5px)),linear-gradient(#0000 calc(66.666% - .5px),oklch(100% 0 0/.35) 66.666%,#0000 calc(66.666% + .5px));position:absolute;inset:0}.crop-handle{background:var(--color-paper);border:2px solid var(--color-accent);touch-action:none;border-radius:2px;width:14px;height:14px;position:absolute}.crop-handle[data-corner=nw]{cursor:nwse-resize;top:-7px;left:-7px}.crop-handle[data-corner=ne]{cursor:nesw-resize;top:-7px;right:-7px}.crop-handle[data-corner=sw]{cursor:nesw-resize;bottom:-7px;left:-7px}.crop-handle[data-corner=se]{cursor:nwse-resize;bottom:-7px;right:-7px}.split-overlay{cursor:ew-resize;touch-action:none;position:absolute;inset:0}.split-line{background:var(--color-accent);pointer-events:none;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.split-grip{background:var(--color-paper);border:2px solid var(--color-accent);border-radius:50%;width:26px;height:26px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.split-grip:before,.split-grip:after{content:"";border-top:1.5px solid var(--color-accent);border-left:1.5px solid var(--color-accent);width:5px;height:5px;position:absolute;top:50%}.split-grip:before{left:5px;transform:translateY(-50%)rotate(-45deg)}.split-grip:after{right:5px;transform:translateY(-50%)rotate(135deg)}.split-tag{font-family:var(--font-mono);letter-spacing:.14em;color:var(--color-ink);pointer-events:none;background:oklch(12% .006 250/.75);border-radius:2px;padding:3px 7px;font-size:9px;position:absolute;top:10px}.about{border-top:1px solid var(--color-line);background:var(--color-paper-2);padding:var(--space-7) var(--space-5)}.about-section{max-width:720px;margin:0 auto var(--space-7)}.about-kicker{color:var(--color-accent);margin-bottom:var(--space-3)}.about-title{letter-spacing:-.02em;margin-bottom:var(--space-4);overflow-wrap:anywhere;min-width:0;font-size:clamp(24px,3vw,34px);font-weight:640;line-height:1.1}.about-copy{color:var(--color-ink-2);max-width:62ch}.glossary{gap:var(--space-4) var(--space-6);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.glossary-item{gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-line);display:flex}.glossary-idx{color:var(--color-ink-3);flex:none;padding-top:3px}.glossary-name{margin-bottom:2px;font-size:15px;font-weight:620}.glossary-desc{color:var(--color-ink-2);font-size:13px}.faq{margin:0}.faq-item{padding:var(--space-4) 0;border-top:1px solid var(--color-line)}.faq-q{margin-bottom:var(--space-2);font-weight:620}.faq-a{color:var(--color-ink-2);max-width:62ch;margin:0}.footer{max-width:720px;padding-top:var(--space-5);border-top:1px solid var(--color-line);gap:var(--space-2);color:var(--color-ink-3);flex-direction:column;margin:0 auto;display:flex}.footer-fine{letter-spacing:.08em;text-transform:none;font-size:9px}@media (width<=640px){.glossary{grid-template-columns:minmax(0,1fr)}}@media (width<=900px){.app{height:auto;display:block}.bench{display:block;overflow:visible}.stage{min-height:46dvh;padding:var(--space-4)}.stage-canvas{max-height:44dvh}.rail{border-left:0;border-top:1px solid var(--color-line);overflow:visible}.dial{z-index:10;position:sticky;bottom:0}.topbar-file{display:none}}@media (width<=480px){.btn-compare{display:none}}@media (prefers-reduced-motion:reduce){.rec-dot{animation:none}.btn,.preset,.dial-item,.dropzone{transition:none}}@media (width<=900px){input[type=range]::-webkit-slider-thumb{width:20px;height:20px;margin-top:-9px}input[type=range]::-moz-range-thumb{width:20px;height:20px}input[type=range]{height:36px}.preset{padding:10px 14px;font-size:11px}.link-btn{align-items:center;min-height:44px;padding:8px 4px;display:inline-flex}.rail-section .btn{justify-content:center;width:100%;padding:12px 14px}.topbar .btn{width:auto;padding:8px 10px;font-size:9px}.segmented button{padding:10px 0}}@media (width<=480px){.topbar{gap:var(--space-2);padding:0 var(--space-3)}.topbar .btn{letter-spacing:.1em;padding:8px;font-size:8px}.dial-item{width:92px}.dial-thumb,.dial-thumb-ph{width:92px;height:58px}}
