.fn-article{--fn-paper:#fff;--fn-ink:#111;--fn-soft:#3a3a3a;--fn-accent:#111;--fn-hazard:#ffd60a;--fn-mark:rgba(255,214,10,.45);--fn-rule:#d8d3c8;--fn-line:#d8d3c8;--fn-btn-bg:#ffd60a;--fn-btn-ink:#111;--fn-btn-line:#111;--fn-btn-hover-bg:#111;--fn-btn-hover-ink:#ffd60a;--fn-blob-bg:#f4f1ea;--fn-blob-str:#3f6b4a;--fn-blob-num:#9a5a34;--fn-code-bg:#161616;--fn-code-tab:#1f1f1f;--fn-code-file:#b9b4aa;--fn-code-text:#d6d3cc;--fn-tk-key:#ff9d6f;--fn-tk-str:#a9cf96;--fn-tk-fn:#e7b65e;--fn-tk-prop:#f4f1ea;--fn-tk-com:#858179;--fn-tk-num:#d98a5e;--fn-tk-add:#8fb56b;--fn-tk-chg:#e7b65e;--fn-tk-del:#e08a6e;--fn-log-bg:#0d0d0d;--fn-log-text:#c9c5bd;--fn-log-ok:#8fb56b;--fn-log-no:#e08a6e;--fn-log-ac:#ffd60a;--fn-log-muted:#858179;background:var(--fn-paper);color:var(--fn-ink);font-family:var(--fn-body),system-ui,sans-serif;font-size:19px;line-height:1.62}.fn-article .page{max-width:896px;margin:0 auto}.fn-article .intro>.deck,.fn-article .intro>h1{border-image-source:linear-gradient(var(--fn-hazard),var(--fn-hazard));border-image-slice:0 fill;border-image-width:0;border-image-outset:0 100vmax}.fn-article .intro>h1{font-size:clamp(40px,6.4vw,76px);line-height:.98;margin:0;padding:44px 0 .3em}.fn-article .intro>.deck{color:#2a2a2a;max-width:none;margin:0;padding:0 0 56px}.fn-article .intro>.deck+hr.rule{max-width:none;height:18px;margin:0 0 56px;border:0;border-image-source:repeating-linear-gradient(-45deg,#111 0 14px,#ffd60a 14px 28px);border-image-slice:0 fill;border-image-width:0;border-image-outset:0 100vmax}.fn-article .kicker{margin:0 0 14px}.fn-article .beat-line,.fn-article .demo h2,.fn-article .finish,.fn-article .step-say,.fn-article .stop h3,.fn-article h1{font-synthesis:none}.fn-article h1{font-family:var(--fn-display);font-weight:400;font-size:clamp(34px,9vw,54px);line-height:1.02;letter-spacing:.01em;text-transform:uppercase;margin:0 0 .3em}.fn-article .deck{font-size:21px;color:var(--fn-soft);margin:0 0 8px;max-width:60ch}.fn-article p{margin:0 0 22px;max-width:66ch}.fn-article .lead{font-size:21px}.fn-article strong{font-weight:600}.fn-article em{font-style:italic}.fn-article .accent{color:var(--fn-accent);font-weight:600;text-decoration:underline;text-decoration-color:var(--fn-hazard);text-decoration-thickness:3px;text-underline-offset:4px}.fn-article .mark{background:var(--fn-mark);color:var(--fn-ink);padding:0 .12em;border-radius:0;box-decoration-break:clone;-webkit-box-decoration-break:clone}.fn-article .beat-line{font-family:var(--fn-display);font-weight:400;font-size:clamp(26px,6.5vw,34px);line-height:1.15;letter-spacing:.01em;margin:40px 0 26px;max-width:20ch}.fn-article hr.rule{border:0;height:0;border-top:4px solid var(--fn-hazard);max-width:60px;margin:44px 0 40px}.fn-article .route{margin:36px 0 12px}.fn-article .stop{display:flex;gap:20px;align-items:flex-start}.fn-article .art{flex:0 0 60px;width:60px;height:60px;color:var(--fn-ink)}.fn-article .art svg{width:100%;height:100%;display:block}.fn-article .stop h3{font-family:var(--fn-display);font-weight:400;font-size:22px;margin:6px 0 3px;letter-spacing:.01em;text-transform:uppercase}.fn-article .stop p{margin:0;color:var(--fn-soft);font-size:17px;line-height:1.5}.fn-article .tie{margin:6px 0 6px 29px;color:var(--fn-accent)}.fn-article .tie svg{display:block}.fn-article .finish{font-family:var(--fn-display);font-weight:400;font-size:clamp(24px,6vw,32px);line-height:1.2;letter-spacing:.01em;margin:48px 0 0}.fn-article .tail{color:var(--fn-soft);font-size:17px;margin-top:14px}.fn-article .demo{--fn-ink:#f4f1ea;--fn-soft:#b9b4aa;--fn-accent:#ffd60a;--fn-mark:rgba(255,214,10,.3);--fn-blob-bg:#1f1f1f;--fn-blob-str:#a9cf96;--fn-blob-num:#d98a5e;--fn-btn-line:#ffd60a;--fn-btn-hover-bg:#f4f1ea;--fn-btn-hover-ink:#111;color:var(--fn-ink);margin-top:8px;padding:64px 0 96px;border-image-source:linear-gradient(#111,#111);border-image-slice:0 fill;border-image-width:0;border-image-outset:0 100vmax}.fn-article .demo .accent{text-decoration:none}.fn-article .demo .log,.fn-article .demo pre.code{box-shadow:0 0 0 1px #3a3a3a}.fn-article .demo h2{font-family:var(--fn-display);font-weight:400;font-size:clamp(30px,8vw,42px);line-height:1.04;letter-spacing:.01em;text-transform:uppercase;margin:0 0 .3em}.fn-article .demo .deck{margin-bottom:26px}.fn-article .who-q{font-size:16px;color:var(--fn-soft);margin:0 0 8px}.fn-article .who{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0 0 8px;padding:0;list-style:none}.fn-article .who button{font-family:var(--fn-body);font-size:19px;font-weight:600;background:none;border:0;padding:2px 0;cursor:pointer;color:var(--fn-soft);border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.fn-article .who button:hover{color:var(--fn-ink)}.fn-article .who button[aria-pressed=true]{color:var(--fn-ink);border-bottom:4px solid var(--fn-hazard)}.fn-article .who-note{font-size:15px;color:var(--fn-soft);min-height:1.4em;margin:0 0 20px}.fn-article .who-note b{color:var(--fn-ink);font-weight:600}.fn-article .journey{display:flex;justify-content:space-between;gap:6px;margin:4px 0 26px}.fn-article .j-stop{flex:1;text-align:center;color:var(--fn-soft);opacity:.4;transition:opacity .2s,color .2s}.fn-article .j-stop svg{width:34px;height:34px;display:block;margin:0 auto 5px}.fn-article .j-stop small{font-family:var(--fn-mono);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.fn-article .j-stop.done{opacity:.7}.fn-article .j-stop.active{opacity:1;color:var(--fn-accent)}.fn-article .j-stop.active svg{transform:scale(1.12)}.fn-article .step-say{font-family:var(--fn-display);font-weight:400;font-size:clamp(20px,5vw,25px);line-height:1.22;letter-spacing:.01em;margin:0 0 18px;min-height:2.4em}.fn-article .step-say.empty{color:var(--fn-soft)}.fn-article .flow-data{display:flex;flex-direction:column;gap:14px;margin:0 0 20px}.fn-article .blob-label{font-family:var(--fn-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fn-soft);margin:0 0 5px}.fn-article .blob{font-family:var(--fn-mono);font-size:13.5px;line-height:1.55;background:var(--fn-blob-bg);border-left:4px solid var(--fn-hazard);padding:11px 14px;white-space:pre;overflow-x:auto;color:var(--fn-ink)}.fn-article .blob .bk{color:var(--fn-accent);font-weight:500}.fn-article .blob .bs{color:var(--fn-blob-str)}.fn-article .blob .bn{color:var(--fn-blob-num)}.fn-article .arrow-b{align-self:center;color:var(--fn-accent);font-size:18px;margin:-4px 0}.fn-article .code-wrap{margin:0 0 20px}.fn-article .code-file{display:inline-block;font-family:var(--fn-mono);font-size:11.5px;color:var(--fn-code-file);background:var(--fn-code-tab);padding:5px 12px 6px;border-radius:0;letter-spacing:.02em}.fn-article pre.code{margin:0;background:var(--fn-code-bg);color:var(--fn-code-text);font-family:var(--fn-mono);font-size:13px;line-height:1.62;padding:14px 15px;border-radius:0;overflow-x:auto;-webkit-overflow-scrolling:touch}.fn-article pre.code .k{color:var(--fn-tk-key)}.fn-article pre.code .s{color:var(--fn-tk-str)}.fn-article pre.code .f{color:var(--fn-tk-fn)}.fn-article pre.code .p{color:var(--fn-tk-prop)}.fn-article pre.code .c{color:var(--fn-tk-com);font-style:italic}.fn-article pre.code .n{color:var(--fn-tk-num)}.fn-article pre.code .add{color:var(--fn-tk-add)}.fn-article pre.code .chg{color:var(--fn-tk-chg)}.fn-article pre.code .del{color:var(--fn-tk-del)}.fn-article .log-label{font-family:var(--fn-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fn-soft);margin:22px 0 6px}.fn-article .log{background:var(--fn-log-bg);border-radius:0;padding:12px 14px;font-family:var(--fn-mono);font-size:12.5px;line-height:1.7;color:var(--fn-log-text);min-height:44px;max-height:210px;overflow-y:auto}.fn-article .log div{white-space:pre-wrap;word-break:break-word}.fn-article .log .t{color:var(--fn-log-muted)}.fn-article .log .ok{color:var(--fn-log-ok)}.fn-article .log .no{color:var(--fn-log-no)}.fn-article .log .ac{color:var(--fn-log-ac)}.fn-article .log .muted{color:var(--fn-log-muted)}.fn-article .controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:22px 0 0}.fn-article .btn{display:inline-flex;align-items:center;justify-content:center;height:52px;font-family:var(--fn-mono);font-weight:600;font-size:14px;text-transform:uppercase;letter-spacing:.06em;background:var(--fn-btn-bg);color:var(--fn-btn-ink);border:2px solid var(--fn-btn-line);border-radius:0;padding:0 24px;cursor:pointer;transition:background-color .15s,color .15s}.fn-article .btn:hover{background:var(--fn-btn-hover-bg);color:var(--fn-btn-hover-ink);border-color:var(--fn-btn-hover-bg)}.fn-article .btn[disabled]{opacity:.35;cursor:default}.fn-article .btn[disabled]:hover{background:var(--fn-btn-bg);color:var(--fn-btn-ink);border-color:var(--fn-btn-line)}.fn-article .btn.ghost{background:none;color:var(--fn-ink);border-color:transparent;padding:0 2px;text-decoration:underline;text-decoration-color:var(--fn-hazard);text-decoration-thickness:3px;text-underline-offset:5px}.fn-article .btn.ghost:hover{background:none;color:var(--fn-ink);text-decoration-color:var(--fn-ink)}.fn-article .btn-label{display:inline-flex;align-items:center;gap:9px}.fn-article .btn-play{width:12px;height:14px;display:block;flex:0 0 auto}.fn-article :focus-visible{outline:3px solid var(--fn-ink);outline-offset:3px}