@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/libre-franklin-cyrillic-ext-400-normal-B9g9xgcO.woff2) format("woff2"),url(/assets/libre-franklin-cyrillic-ext-400-normal-D5jvQp33.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/libre-franklin-cyrillic-400-normal-BxQnOlOp.woff2) format("woff2"),url(/assets/libre-franklin-cyrillic-400-normal-T4bKsRTj.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/libre-franklin-vietnamese-400-normal-BejjGN4K.woff2) format("woff2"),url(/assets/libre-franklin-vietnamese-400-normal-DVbyimmf.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/libre-franklin-latin-ext-400-normal-BlKPGRwu.woff2) format("woff2"),url(/assets/libre-franklin-latin-ext-400-normal-CEHJ3Zjr.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/libre-franklin-latin-400-normal-DNAyL8lK.woff2) format("woff2"),url(/assets/libre-franklin-latin-400-normal-B5qoBLOl.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/libre-franklin-cyrillic-ext-500-normal-CEScqsDp.woff2) format("woff2"),url(/assets/libre-franklin-cyrillic-ext-500-normal-DNjvXlO5.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/libre-franklin-cyrillic-500-normal-DmkkefNM.woff2) format("woff2"),url(/assets/libre-franklin-cyrillic-500-normal-BbpetOLr.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/libre-franklin-vietnamese-500-normal-RIIoSqy6.woff2) format("woff2"),url(/assets/libre-franklin-vietnamese-500-normal-r-ir2lkU.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/libre-franklin-latin-ext-500-normal-B0aoLQ4L.woff2) format("woff2"),url(/assets/libre-franklin-latin-ext-500-normal-BEjoZNRk.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/libre-franklin-latin-500-normal-Cbta7Jiu.woff2) format("woff2"),url(/assets/libre-franklin-latin-500-normal-BQKhRarp.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/libre-franklin-cyrillic-ext-600-normal-Drvu5lSS.woff2) format("woff2"),url(/assets/libre-franklin-cyrillic-ext-600-normal-DzWQ5Djp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/libre-franklin-cyrillic-600-normal-B9QZ7Zqf.woff2) format("woff2"),url(/assets/libre-franklin-cyrillic-600-normal-BDh_aE24.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Libre Franklin;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/libre-franklin-vietnamese-600-normal-B9bGnPdK.woff2) format("woff2"),url(/assets/libre-franklin-vietnamese-600-normal-BRdbLLo3.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/libre-franklin-latin-ext-600-normal-CSmGWxVI.woff2) format("woff2"),url(/assets/libre-franklin-latin-ext-600-normal-BbCuItST.woff) format("woff");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:Libre Franklin;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/libre-franklin-latin-600-normal-BBKMvfE-.woff2) format("woff2"),url(/assets/libre-franklin-latin-600-normal-DjS29Py2.woff) format("woff");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: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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+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: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+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: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+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}:root{--bg: #151515;--bg-raised: #1b1b1a;--text: #ece9e3;--muted: #a8a49b;--border: #2c2c2b;--border-strong: #3a3a39;--accent: #a9c47f;--accent-hover: #b9d290;--accent-text: #17211c;--sans: "Libre Franklin", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,p,figure{margin:0}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration-color:var(--border-strong);text-underline-offset:3px}a:hover{text-decoration-color:currentColor}p a{color:var(--text);text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}code{font:400 .9em var(--mono)}.muted{color:var(--muted)}.wrap{width:min(100% - 40px,1100px);margin-inline:auto}.wrap-wide{width:min(100%,1340px);margin-inline:auto}.skip{position:absolute;left:12px;top:-80px;padding:8px 12px;background:var(--text);color:var(--bg);z-index:10}.skip:focus{top:12px}.nav{display:flex;align-items:center;justify-content:space-between;height:64px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:17px;letter-spacing:-.01em;text-decoration:none}.brand-mark{display:block}.nav-links{display:flex;align-items:center;gap:24px;font-size:14.5px}.nav-links a{color:var(--muted);text-decoration:none}.nav-links a:hover,.nav-links a[data-app-link]{color:var(--text)}.btn{display:inline-flex;align-items:center;height:40px;padding:0 16px;border:1px solid var(--border-strong);border-radius:4px;font:500 14.5px/1 var(--sans);color:var(--text);text-decoration:none;white-space:nowrap}.btn:hover{border-color:var(--muted)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.text-link{color:var(--muted);font-size:15px}.text-link:hover{color:var(--text)}.intro{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:end;padding:88px 0 48px}.intro h1{font-size:clamp(34px,4.6vw,54px);line-height:1.08;font-weight:600;letter-spacing:-.025em;max-width:14ch}.intro-side p{color:var(--muted);max-width:46ch}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-top:24px}figure img{width:100%}.frame{position:relative;overflow:hidden}.exif{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;padding-top:10px;font-size:14px}.exif-data{font:400 12.5px/1.6 var(--mono);color:var(--muted)}.hero .exif{padding-inline:20px}.af{position:absolute;left:49.5%;top:57%;width:9.5%;aspect-ratio:1.3;translate:-50% -50%;border:2px solid rgba(236,233,227,.9);box-shadow:0 0 0 1px #00000059,inset 0 0 0 1px #00000059;opacity:0;pointer-events:none}.af.is-hunting{opacity:1;animation:af-hunt .9s cubic-bezier(.3,.7,.2,1) forwards}.af.is-locked{opacity:1;border-color:#cbeb94;animation:af-lock .36s steps(2,jump-none) 1}@keyframes af-hunt{0%{scale:1.7;translate:-38% -62%}45%{scale:1.15;translate:-55% -46%}to{scale:1;translate:-50% -50%}}@keyframes af-lock{50%{opacity:.2}}.feature{display:grid;grid-template-columns:minmax(0,440px) minmax(0,1fr);gap:64px;align-items:center;padding-top:120px}.feature-flip .feature-photo{order:2}.feature-text{max-width:48ch}.feature h2,.wide h2,.download h2,.about h2{font-size:26px;line-height:1.2;font-weight:600;letter-spacing:-.015em;margin-bottom:14px}.feature-text p+p,.about p+p{margin-top:14px}.wide{padding-top:120px}.wide-text{display:grid;grid-template-columns:1fr 1.6fr;gap:48px;margin-top:40px}.wide-text p{max-width:58ch}.play{padding-top:140px}.play-head{display:grid;grid-template-columns:1fr 1.6fr;gap:48px;margin-bottom:28px}.play h2{font-size:26px;line-height:1.2;font-weight:600;letter-spacing:-.015em}.play-head p{max-width:58ch}.play-frame{position:relative;overflow:hidden;background:var(--bg-raised)}.play-frame img,.play-frame canvas{display:block;width:100%;height:auto}.play-frame canvas{position:absolute;inset:0;height:100%;cursor:crosshair;opacity:0}.play-frame canvas.is-ready{opacity:1}.play-af{position:absolute;width:4.5%;aspect-ratio:1.3;translate:-50% -50%;border:2px solid #cbeb94;box-shadow:0 0 0 1px #00000059,inset 0 0 0 1px #00000059;pointer-events:none;opacity:0}.play-af.is-locked{opacity:1;animation:af-lock .36s steps(2,jump-none) 1}.play-status{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding:12px 0;font-size:14.5px;border-bottom:1px solid var(--border)}.play-dof{display:block;font-size:13.5px}.ev{display:flex;align-items:center;gap:8px;font:400 13px var(--mono);color:var(--muted)}.ev output{min-width:4ch;text-align:right;color:var(--text)}.meter{display:flex;align-items:flex-end;gap:3px;height:14px}.meter i{width:3px;height:6px;background:var(--border-strong)}.meter i.major{height:10px;background:var(--muted)}.meter i:nth-child(10){height:14px;background:var(--text)}.meter i.on{background:var(--accent)}.meter.over i:last-child,.meter.under i:first-child{background:#e2826f}.play-controls{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;padding:24px 0}.ctl{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:6px 12px}.ctl-name{font-weight:600;font-size:15px}.ctl output{font:400 14px var(--mono)}.ctl input{grid-column:1 / -1}.ctl-hint{grid-column:1 / -1;font-size:13.5px;line-height:1.5;color:var(--muted)}.ctl input[type=range]{appearance:none;width:100%;height:28px;margin:0;background:transparent;cursor:pointer}.ctl input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--border-strong)}.ctl input[type=range]::-moz-range-track{height:2px;background:var(--border-strong)}.ctl input[type=range]::-webkit-slider-thumb{appearance:none;width:14px;height:20px;margin-top:-9px;border-radius:2px;background:var(--text)}.ctl input[type=range]::-moz-range-thumb{width:14px;height:20px;border:0;border-radius:2px;background:var(--text)}.play-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14.5px}.play-actions button{height:32px;padding:0 12px;background:none;border:1px solid var(--border-strong);border-radius:4px;font:500 14px var(--sans);color:var(--text);cursor:pointer}.play-actions button:hover{border-color:var(--muted)}.play-actions .play-reset{margin-left:auto;border-color:transparent;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.play-fallback{display:none;margin-top:12px}.play-note{margin-top:20px;max-width:70ch;font-size:13.5px}.play.is-unsupported .play-fallback{display:block}.play.is-unsupported :is(.play-status,.play-controls,.play-actions){display:none}.download{padding-top:140px}.download>.muted a{color:var(--muted)}.dl-rows{margin-top:28px;border-top:1px solid var(--border)}.dl-row{display:grid;grid-template-columns:1fr auto;gap:12px 32px;align-items:center;padding:24px 0;border-bottom:1px solid var(--border)}.dl-row h3{font-size:17px;font-weight:600}.dl-row .muted{font-size:14.5px;max-width:52ch}.dl-links{display:flex;flex-wrap:wrap;gap:8px}.dl-row.is-mine .dl-links .btn:first-child{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.dl-note{grid-column:1 / -1;font-size:14.5px;color:var(--muted)}.dl-note summary{cursor:pointer;width:fit-content}.dl-note summary:hover{color:var(--text)}.dl-note p{margin:10px 0;max-width:64ch}.cmd{display:flex;align-items:center;gap:8px;max-width:640px;padding:8px 8px 8px 12px;background:var(--bg-raised);border:1px solid var(--border);border-radius:4px}.cmd code{flex:1;overflow-x:auto;white-space:nowrap;color:var(--text)}.copy{flex:none;height:28px;padding:0 10px;background:none;border:1px solid var(--border-strong);border-radius:4px;font:500 13px var(--sans);color:var(--text);cursor:pointer}.copy:hover{border-color:var(--muted)}.about{display:grid;grid-template-columns:140px minmax(0,1fr);gap:32px;align-items:start;padding:120px 0 96px}.about img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:4px}.about p{max-width:56ch;color:var(--muted)}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding:24px 0 40px;border-top:1px solid var(--border);font-size:14px}@media(max-width:860px){.intro,.feature,.wide-text,.about{grid-template-columns:1fr}.intro{gap:20px;padding:48px 0 32px}.feature{gap:28px;padding-top:80px}.feature-flip .feature-photo{order:0}.feature-photo{max-width:440px}.wide,.play{padding-top:80px}.play-head{grid-template-columns:1fr;gap:12px}.play-controls{grid-template-columns:1fr;gap:20px}.play-actions .play-reset{margin-left:0}.wide-text{gap:0;margin-top:28px}.download{padding-top:96px}.dl-row{grid-template-columns:1fr}.about{gap:28px;padding:96px 0 80px}.about img{max-width:112px}}@media(max-width:560px){.hide-sm{display:none}.nav-links{gap:18px}}@media(prefers-reduced-motion:reduce){.af{animation:none!important}}
