:root{--page:#ffffff;--panel:#fafaf6;--rule:#e1e1d8;--rule-strong:#c9c9bd;--text:#2a2a2a;--head:#01114b;--muted:#737373;--faint:#a3a39a;--action:#002bd6;--action-hover:#0020a8;--ok:#0c6e4e;--bad:#d91212;--warn:#b4530a;--warn-bg:#fdf3e7}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{color:var(--text);background:var(--page);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.mono{font-family:var(--font-mono),Monaco,monospace;font-size:12.5px}.label{font-size:12px;color:var(--muted)}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.rail{border-right:1px solid var(--rule);background:var(--panel);padding:22px 18px;position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.rail .brand img{height:30px;width:auto;display:block;margin-bottom:28px}.rail h6{margin:22px 0 6px;font-size:12px;font-weight:500;color:var(--faint)}.rail a.item,.rail span.item{display:block;padding:5px 0;font-size:14px;color:var(--text)}.rail a.item:hover{color:var(--action)}.rail span.item{color:var(--faint)}.rail .foot{margin-top:auto;font-size:12px;color:var(--muted);padding-top:14px;border-top:1px solid var(--rule);word-break:break-all}.main{padding:40px 48px 72px;max-width:1100px;width:100%;min-width:0}h1{font-size:30px;line-height:1.15;margin:0 0 8px;letter-spacing:-.01em}h1,h2{font-weight:600;color:var(--head)}h2{font-size:17px;margin:0 0 10px}.lede{color:var(--muted);max-width:640px;margin:0 0 30px;font-size:16px}.facts{display:flex;flex-wrap:wrap;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:38px}.facts>div{flex:1 1 160px;padding:14px 18px 14px 0}.facts .k,.facts dt{font-size:12px;color:var(--muted);margin-bottom:2px}.facts .v{font-size:20px;font-weight:500;color:var(--head)}.facts .v small{font-size:13px;color:var(--muted);font-weight:400;margin-left:4px}.state-ok{color:var(--ok)}.state-bad{color:var(--bad)}.state-warn{color:var(--warn)}.modules{width:100%;border-collapse:collapse}.modules th{font-size:12px;font-weight:500;color:var(--muted);text-align:left;padding:0 12px 8px 0;border-bottom:1px solid var(--rule-strong)}.modules td{padding:14px 12px 14px 0;border-bottom:1px solid var(--rule);vertical-align:top}.modules td.name{font-weight:600;color:var(--head);white-space:nowrap;width:190px}.modules td.desc{color:var(--text)}.modules td.st{color:var(--muted);white-space:nowrap;width:130px;font-size:13px}.modules tr.off td.name{color:var(--faint);font-weight:500}.modules tr.off td.desc{color:var(--muted)}.modules a.row-link{color:var(--action);font-weight:600}.modules a.row-link:hover{text-decoration:underline}.foot-note{margin-top:26px;font-size:12.5px;color:var(--muted)}.gate{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--panel)}.gate .box{width:min(420px,100%);background:var(--page);border:1px solid var(--rule);padding:34px 32px 30px}.gate img{height:34px;margin-bottom:26px;display:block}.gate p{color:var(--muted);margin:0 0 24px}button{font:inherit;font-size:13.5px;padding:8px 14px;border:1px solid var(--rule-strong);background:var(--page);color:var(--text);border-radius:2px;cursor:pointer}button:hover{border-color:var(--text)}button.primary{background:var(--action);border-color:var(--action);color:#fff}button.primary:hover{background:var(--action-hover);border-color:var(--action-hover)}button.wide{width:100%;padding:11px 16px;font-size:14.5px}.framing{display:grid;grid-template-columns:minmax(180px,260px) 1fr;grid-gap:16px;gap:16px;align-items:start;margin:10px 0 6px}.framing-canvas{width:100%;height:auto;touch-action:none;cursor:-webkit-grab;cursor:grab;background:var(--panel);border:1px solid var(--rule)}.framing-canvas:active{cursor:-webkit-grabbing;cursor:grabbing}.framing-controls .field{margin-bottom:8px}.framing-controls input[type=range]{width:100%;padding:0;border:0}@media (max-width:640px){.framing{grid-template-columns:1fr}}.dropzone{display:grid;grid-gap:2px;gap:2px;padding:16px 14px;border:1px dashed var(--rule-strong);background:var(--panel);font-size:13px;color:var(--muted)}.dropzone strong{color:var(--text);font-weight:600;font-size:13.5px}.dropzone.over{border-color:var(--action);border-style:solid;background:#f1f3fd}.dropzone.disabled{opacity:.55}button.linklike{padding:0;border:0;background:none;color:var(--action);text-decoration:underline;font-size:inherit}button.linklike:hover{color:var(--action-hover)}button.linklike:disabled{color:var(--muted);cursor:default}.banner{border:1px solid #e9c9a6;background:var(--warn-bg);color:#6b3205;padding:10px 14px;margin:14px 0;font-size:14px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 22px}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:13.5px}table.data th{font-size:12px;font-weight:500;color:var(--muted);text-align:left;padding:0 14px 8px 0;border-bottom:1px solid var(--rule-strong);white-space:nowrap}table.data td{padding:10px 14px 10px 0;border-bottom:1px solid var(--rule);vertical-align:top}.s-done{color:var(--ok)}.s-failed{color:var(--bad)}.s-cancel_requested,.s-running{color:var(--action)}.s-queued{color:var(--muted)}.s-cancelled{color:var(--faint)}.bar{height:3px;background:var(--rule);min-width:70px;margin-top:5px}.bar>i{display:block;height:100%;background:var(--action)}@media (max-width:900px){.shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}.rail{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 18px;padding:12px 18px;border-right:0;border-bottom:1px solid var(--rule)}.rail .brand img{margin:0 8px 0 0;height:24px}.rail .foot,.rail h6,.rail span.item{display:none}.main{padding:26px 18px 48px}.modules td.name,.modules td.st{white-space:normal;width:auto}}.stack{grid-gap:12px;max-width:720px}.form-row,.stack{display:grid;gap:12px}.form-row{grid-template-columns:repeat(3,1fr);grid-gap:12px}.field{display:grid;grid-gap:4px;gap:4px;font-size:13px;color:var(--muted)}.field input{font:inherit;font-size:14px;color:var(--text);padding:7px 9px;border:1px solid var(--rule-strong);border-radius:2px;background:var(--page);min-width:0}.field input:focus{outline:2px solid var(--action);outline-offset:-1px;border-color:var(--action)}.field.inline{grid-template-columns:1fr 96px;align-items:center;margin:6px 0}.row-link{color:var(--action);font-weight:500}.row-link:hover{text-decoration:underline}.editor{display:grid;grid-template-columns:340px 1fr;grid-gap:36px;gap:36px;align-items:start}.editor .controls{display:grid;grid-gap:12px;gap:12px}.editor details{border-top:1px solid var(--rule);padding-top:12px}.editor summary{cursor:pointer;font-weight:500;color:var(--head)}.editor h3{font-size:13px;margin:14px 0 4px;color:var(--head)}.previews{display:grid;grid-gap:28px;gap:28px;min-width:0}.previews figure{margin:0}.previews canvas{width:100%;height:auto;border:1px solid var(--rule);display:block;margin:6px 0}@media (max-width:1000px){.editor,.form-row{grid-template-columns:1fr}}.editor h2{margin-top:18px}.editor .seg{list-style:none;margin:0;padding:0;font-size:13px;display:grid;grid-gap:4px;gap:4px}.editor .seg li{display:flex;gap:8px;align-items:baseline}.editor .seg .play{min-width:52px;padding:2px 8px;font-size:12px}.check{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--muted)}.pairs{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.cutout{max-width:140px;max-height:140px;background:var(--panel)}.cutout,.frame{border:1px solid var(--rule);display:block}.frame{width:100%;height:auto;margin:8px 0 18px}.field select{font:inherit;font-size:14px;color:var(--text);padding:7px 9px;border:1px solid var(--rule-strong);border-radius:2px;background:var(--page);min-width:0}input[type=color]{padding:0;height:32px;width:64px}.rec-stage{position:relative;background:#111;aspect-ratio:16/9;width:100%;overflow:hidden;border:1px solid var(--rule)}.rec-video{width:100%;height:100%;object-fit:contain;transform:scaleX(-1);display:block}.rec-guide{position:absolute;top:0;bottom:0;left:50%;aspect-ratio:9/16;transform:translateX(-50%);border-left:1px dashed rgba(255,255,255,.8);border-right:1px dashed rgba(255,255,255,.8);pointer-events:none}.rec-count{place-items:center;font-size:120px;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.6)}.rec-count,.rec-empty{position:absolute;inset:0;display:grid}.rec-empty{place-items:center;color:#aaa;font-size:14px}.rec-time{align-self:center;font-size:14px;color:var(--head)}.script{font:inherit;font-size:14px;color:var(--text);padding:8px 9px;border:1px solid var(--rule-strong);border-radius:2px;background:var(--page);width:100%;box-sizing:border-box;resize:vertical}.pt-float{position:fixed;right:24px;top:90px;width:400px;height:520px;min-width:260px;min-height:280px;resize:both;overflow:hidden;display:flex;flex-direction:column;z-index:50;border:1px solid #000;box-shadow:0 6px 24px rgba(0,0,0,.35)}.pt-handle{cursor:move;background:#222;color:#ccc;font-size:12px;padding:5px 10px;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pt-panel{position:relative;display:flex;flex-direction:column;height:100%;color:#fff;outline:none}.pt-panel,.pt-scroll{min-height:0;flex:1 1}.pt-scroll{overflow:hidden}.pt-text{padding:35% 7% 65%;line-height:1.35;font-weight:500}.pt-text p{margin:0 0 .9em}.pt-controls{background:#181818;padding:8px 10px 10px;display:grid;grid-gap:6px;gap:6px;font-size:12.5px;color:#ddd}.pt-controls button{padding:5px 10px;font-size:12.5px;background:#2a2a2a;color:#fff;border-color:#555}.pt-controls button.primary{background:var(--action);border-color:var(--action)}.pt-controls .check{color:#ddd}.pt-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.pt-slider{display:grid;grid-gap:2px;gap:2px}.pt-slider b{color:#fff;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pt-slider input{width:100%;padding:0;border:0}.pt-help{margin:0;font-size:11.5px;color:#999}.pt-readline{position:absolute;left:0;right:0;top:35%;height:0;border-top:2px solid rgba(255,214,10,.85);pointer-events:none;z-index:1;transform:translateY(-2px)}.rec-player{width:100%;max-width:420px;display:block;margin-top:6px}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk Fallback;src:local("Arial");ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.00%;size-adjust:100.94%}.__className_c8454b{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.__variable_c8454b{--font-text:"Hanken Grotesk","Hanken Grotesk Fallback"}@font-face{font-family:Fragment Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/2e87b23cef325683-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Fragment Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/c95d0e421d34c90b-s.woff2) format("woff2");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:Fragment Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d8848e31105c7f17-s.p.woff2) format("woff2");unicode-range:u+00??,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:Fragment Mono Fallback;src:local("Arial");ascent-override:68.53%;descent-override:18.03%;line-gap-override:0.00%;size-adjust:138.63%}.__className_21d4b3{font-family:Fragment Mono,Fragment Mono Fallback;font-weight:400;font-style:normal}.__variable_21d4b3{--font-mono:"Fragment Mono","Fragment Mono Fallback"}