@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-ext-500-normal-Yta7XZ9C.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-ext-500-normal-lsPpqi9g.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:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-500-normal-CyAY5ZLS.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-500-normal-DkJXBcIH.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-vietnamese-500-normal-BZGLGj12.woff2)format("woff2"),url(/assets/cormorant-garamond-vietnamese-500-normal-DqXqCC0q.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:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-ext-500-normal-CH1kM7og.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-ext-500-normal-DYeaGGzO.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:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-500-normal-BsRWmXhO.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-500-normal-zIXX3Q-H.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:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-ext-500-italic-ClXnudBg.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-ext-500-italic-DakTmaFY.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:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-500-italic-DVnfXoMy.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-500-italic-C9gO-8KC.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-vietnamese-500-italic-D3igDnAQ.woff2)format("woff2"),url(/assets/cormorant-garamond-vietnamese-500-italic-C-296ow0.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:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-ext-500-italic-CE7zdTnu.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-ext-500-italic-CalKM9tT.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:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-500-italic-Y14P-dkT.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-500-italic-DhNIfkTX.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: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}:root{--ink:#101322;--ink-raised:#171b2e;--ink-line:#262b45;--gold:#e3c27c;--gold-dim:#9d8955;--parchment:#e9e2d0;--dim:#8f93a8;--skin:#c98b70;--serif:"Cormorant Garamond", Georgia, serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--sans:system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box;margin:0}html{background:var(--ink);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{font-family:var(--sans);color:var(--parchment);background:radial-gradient(circle at 18% 12%, #e3c27c0d, transparent 40%), var(--ink);min-height:100vh;font-size:15px;line-height:1.5}.mono{font-family:var(--mono);letter-spacing:.02em;font-size:.82em}#app{max-width:1180px;margin:0 auto;padding:2.2rem 1.4rem 1.4rem}.masthead{text-align:center;margin-bottom:2rem}.wordmark{font-family:var(--serif);letter-spacing:.13em;text-transform:uppercase;color:var(--gold);font-size:clamp(1.6rem,5vw,3.1rem);font-weight:500}.wordmark:before,.wordmark:after{content:"✦";vertical-align:.5em;color:var(--gold-dim);margin:0 1.2em;font-size:.45em}.tagline{font-family:var(--serif);color:var(--dim);margin-top:.2rem;font-size:1.15rem;font-style:italic}.layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:1.8rem;display:grid}@media (width<=860px){.layout{grid-template-columns:1fr}}.plate{border:1px solid var(--gold-dim);outline:1px solid var(--ink-line);outline-offset:5px;background:var(--ink-raised);justify-content:center;align-items:center;min-height:320px;display:flex;position:relative}.plate.drag-over{border-color:var(--gold);box-shadow:0 0 0 3px #e3c27c26}#view{cursor:crosshair;max-width:100%;max-height:78dvh;display:block}#view[hidden]{display:none}.plate-caption{text-align:center;font-family:var(--serif);letter-spacing:.08em;color:var(--gold);text-shadow:0 1px 4px #000c;pointer-events:none;font-size:1.05rem;font-style:italic;position:absolute;bottom:.6rem;left:0;right:0}.camera{width:100%;min-height:320px;position:relative}.camera video{object-fit:cover;background:#000;width:100%;height:66dvh;min-height:320px;display:block}.camera video.mirrored{transform:scaleX(-1)}.camera-controls{background:linear-gradient(#0000,#101322a6);justify-content:space-between;align-items:center;padding:2.4rem 1.2rem 1rem;display:flex;position:absolute;bottom:0;left:0;right:0}.shutter{border:3px solid var(--gold);cursor:pointer;background:#e3c27c40;border-radius:50%;width:58px;height:58px;transition:background .15s;box-shadow:0 0 0 4px #1013228c}.shutter:hover{background:#e3c27c8c}.shutter:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.shutter-spacer{width:74px}.camera-error{text-align:center;color:var(--dim);padding:2.4rem 1.6rem;font-style:italic}.empty-state{text-align:center;color:var(--dim);padding:4rem 2rem}.empty-glyph{color:var(--gold-dim);margin-bottom:1rem;font-size:2rem}.empty-actions{flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:1.4rem;display:flex}.plate-actions{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.9rem;display:flex}.hint{color:var(--dim);margin-left:auto;font-size:.82rem}.panel{flex-direction:column;gap:1.1rem;display:flex}.panel-heading{font-family:var(--serif);text-transform:uppercase;letter-spacing:.22em;color:var(--gold-dim);border-bottom:1px solid var(--ink-line);margin-bottom:.9rem;padding-bottom:.4rem;font-size:1rem;font-weight:500}.control-group{background:var(--ink-raised);border:1px solid var(--ink-line);padding:1rem 1.1rem 1.2rem}.segmented{border:1px solid var(--ink-line);margin-bottom:1.1rem;display:flex}.seg-btn{color:var(--dim);font:inherit;cursor:pointer;background:0 0;border:none;flex:1;padding:.45rem .2rem;font-size:.8rem}.seg-btn+.seg-btn{border-left:1px solid var(--ink-line)}.seg-btn.is-active{color:var(--gold);background:#e3c27c1f}.seg-btn:focus-visible,.result:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.slider-row{justify-content:space-between;align-items:baseline;margin-top:.9rem;font-size:.85rem;display:flex}.slider-value{color:var(--gold)}input[type=range]{width:100%;accent-color:var(--gold);margin-top:.3rem}.btn{font:inherit;letter-spacing:.04em;color:var(--gold);border:1px solid var(--gold-dim);cursor:pointer;background:#e3c27c24;padding:.55rem 1.1rem;font-size:.88rem;transition:background .15s}.btn:hover:not(:disabled){background:#e3c27c42}.btn:disabled{opacity:.4;cursor:default}.btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.btn-ghost{border-color:var(--ink-line);color:var(--parchment);background:0 0}.btn-ghost:hover:not(:disabled){background:#e9e2d012}.btn-primary{font-family:var(--serif);letter-spacing:.12em;text-transform:uppercase;width:100%;padding:.75rem 1rem;font-size:1.05rem}.progress{color:var(--dim);text-align:center}.results{flex-direction:column;gap:.45rem;padding:0;list-style:none;display:flex}.result{background:var(--ink-raised);border:1px solid var(--ink-line);cursor:pointer;padding:.65rem .85rem;transition:border-color .15s}.result:hover{border-color:var(--gold-dim)}.result.is-selected{border-color:var(--gold);background:#e3c27c14}.result-name{font-family:var(--serif);color:var(--parchment);font-size:1.15rem}.result.is-selected .result-name{color:var(--gold)}.result-gen{font-family:var(--serif);color:var(--dim);margin-left:.45em;font-size:.95rem;font-style:italic}.result-stats{color:var(--dim);justify-content:space-between;margin-top:.15rem;display:flex}.result-bar{background:var(--ink-line);height:2px;margin-top:.45rem;overflow:hidden}.result-bar>i{background:linear-gradient(90deg, var(--gold-dim), var(--gold));height:100%;display:block}.no-results{color:var(--dim);padding:.4rem 0;font-style:italic}.colophon{border-top:1px solid var(--ink-line);color:var(--dim);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-top:2.5rem;padding-top:1rem;font-size:.8rem;display:flex}@media (width<=480px){#app{padding:1.4rem .9rem 1rem}.wordmark:before,.wordmark:after{margin:0 .5em}.empty-state{padding:2.6rem 1rem}.empty-actions .btn{flex:44%}.hint{flex-basis:100%;margin-left:0}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
