@keyframes f-type{0%{max-width:0}to{max-width:60ch}}@keyframes f-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes f-go{0%{opacity:0;transform:translate(0)}10%,90%{opacity:1}to{opacity:0;transform:translate(330px)}}@keyframes f-back{0%{opacity:0;transform:translate(330px)}10%,90%{opacity:1}to{opacity:0;transform:translate(0)}}@keyframes f-dim{to{opacity:.28}}@keyframes f-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes f-stamp{0%{opacity:0;transform:rotate(-5deg)scale(1.9)}to{opacity:1;transform:rotate(-5deg)scale(1)}}@keyframes f-blink{50%{opacity:0}}.film-page{flex-direction:column;min-height:100vh;display:flex}.film-wrap{width:100%;max-width:1280px;padding:32px var(--gutter) 64px;flex-direction:column;flex:auto;gap:20px;margin:0 auto;display:flex}.film-wrap h1{letter-spacing:-.02em;font-size:clamp(28px,3vw,40px)}.film-frame{border:1px solid var(--line);border-radius:18px;width:100%;max-width:calc(177.778vh - 426.667px);margin:0 auto;position:relative;overflow:hidden}.film-rotate{display:none}@media (max-width:600px) and (orientation:portrait){.film-rotate{display:block}}.film{transform-origin:0 0;background-color:var(--bg);color:var(--text);background-image:linear-gradient(var(--line-soft) 1px, transparent 1px), linear-gradient(90deg, var(--line-soft) 1px, transparent 1px);background-size:48px 48px;position:absolute;top:0;left:0;overflow:hidden}.film-paused *{animation-play-state:paused!important}.film-top{border-bottom:1px solid var(--line-soft);background:color-mix(in srgb, var(--bg) 90%, transparent);align-items:center;gap:12px;height:72px;padding:0 40px;font-size:19px;display:flex;position:absolute;top:0;left:0;right:0}.film-top .muted{font-size:15px}.film-label{letter-spacing:.14em;color:var(--brand);margin-left:auto;font-size:14px}.f-stage{justify-content:center;align-items:center;height:440px;display:flex;position:absolute;top:72px;left:0;right:0}.f-row{justify-content:center;align-items:center;gap:40px;display:flex}.f-col{flex-direction:column;justify-content:center;align-items:center;gap:30px;display:flex}.f-caption{font-family:var(--font-display);text-align:center;font-size:30px;font-weight:600;line-height:1.3;position:absolute;top:536px;left:120px;right:120px}.f-rise{animation:.6s ease-out both rise}.f-pop{animation:.6s cubic-bezier(.2,1.4,.4,1) both f-pop}.f-dim{animation:.6s ease-out both f-dim}.f-bar{transform-origin:0;animation:1.6s cubic-bezier(.3,.7,.3,1) both f-grow}.f-caret{animation:1s step-end infinite f-blink}.f-type{white-space:nowrap;vertical-align:bottom;animation:1.1s steps(40,end) both f-type;display:inline-block;overflow:hidden}.f-term{border:1px solid var(--line-2);background:var(--bg-2);border-radius:16px;width:860px;overflow:hidden;box-shadow:0 40px 90px #0000008c}.f-term-bar{border-bottom:1px solid var(--line-soft);align-items:center;gap:8px;padding:14px 18px;display:flex}.f-term-bar span{background:var(--line-2);border-radius:50%;width:11px;height:11px}.f-term-bar em{color:var(--muted);margin-left:10px;font-size:13px;font-style:normal}.f-term-body{padding:26px 30px 30px;font-size:19px;line-height:2}.f-lanes{flex-direction:column;gap:22px;width:680px;display:flex}.f-lane{align-items:center;gap:18px;display:flex}.f-lane-name{flex-direction:column;width:220px;font-size:20px;font-weight:700;display:flex}.f-lane-name small{color:var(--muted);font-size:13px;font-weight:400}.f-lane-bar{background:var(--chip);border-radius:12px;flex:auto;height:12px}.f-lane-bar .f-bar{background:var(--text-2);border-radius:12px;height:100%;display:block}.f-lane-n{text-align:right;width:40px;font-size:22px}.f-big{text-align:center;flex-direction:column;width:240px;display:flex;position:relative}.f-big b{font-family:var(--font-display);letter-spacing:-.04em;font-size:130px;font-weight:800;line-height:1}.f-big span{color:var(--text-2);font-size:20px}.f-strike{background:var(--text-2);transform-origin:0;border-radius:6px;height:6px;animation:.5s ease-out both f-grow;position:absolute;top:64px;left:-10px;right:-10px}.f-req{align-items:center;display:flex}.f-actor{border:1px solid var(--line-2);background:var(--surface);border-radius:16px;flex-direction:column;align-items:center;gap:10px;width:250px;padding:22px;font-size:19px;display:flex}.f-actor small{color:var(--muted);font-size:13px}.f-avatar{background:var(--safe-soft);border:2px solid var(--safe);width:64px;height:64px;color:var(--safe);border-radius:50%;justify-content:center;align-items:center;font-size:28px;font-weight:800;display:flex}.f-wire{flex-direction:column;justify-content:center;gap:14px;width:360px;height:120px;padding:0 15px;display:flex;position:relative}.f-wire-line{background-image:linear-gradient(90deg, var(--line-3) 50%, transparent 50%);background-size:14px 2px;height:2px;display:block}.f-packet{background:var(--text);border-radius:50%;width:14px;height:14px;animation:1.1s ease-in-out both f-go;position:absolute;top:34px;left:10px}.f-packet-bad{background:var(--accent);animation-name:f-back;top:70px}.f-wire-top,.f-wire-bottom{text-align:center;font-size:15px;position:absolute;left:0;right:0}.f-wire-top{top:-12px}.f-wire-bottom{font-weight:700;bottom:-12px}.f-json{background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent-hi);border-radius:12px;padding:16px 22px;font-size:16px}.f-stamp{letter-spacing:.08em;color:var(--accent);border:3px solid var(--accent);border-radius:8px;padding:8px 16px;font-size:22px;font-weight:700;animation:.45s cubic-bezier(.2,1.2,.4,1) both f-stamp}.f-stamp-solid{color:var(--bg);background:var(--accent);border:0;border-radius:10px;padding:12px 24px;font-size:26px}.f-chain,.f-chain-part{align-items:center;display:flex}.f-node{border:1px solid var(--line-2);background:var(--surface);border-radius:14px;flex-direction:column;gap:8px;width:230px;padding:22px 18px;display:flex}.f-node small{letter-spacing:.12em;color:var(--muted);font-size:12px}.f-node strong{font-size:18px}.f-node span{color:var(--text-2);font-size:13px}.f-node-hot{border:2px solid var(--accent);background:var(--accent-soft)}.f-node-hot small,.f-node-hot span{color:var(--accent-hi)}.f-link{background:var(--accent);width:60px;height:3px;display:block}.f-verdict{gap:72px}.f-code{border:1px solid var(--line-2);background:var(--bg-2);white-space:pre;border-radius:14px;width:560px;padding:24px 26px;font-size:17px;line-height:1.9}.f-code small{letter-spacing:.12em;color:var(--muted);margin-bottom:8px;font-size:12px;display:block}.f-add{color:var(--safe);background:var(--safe-soft)}.f-right{align-items:stretch;gap:16px;width:460px}.f-ok-card,.f-rec{border-radius:12px;flex-direction:column;gap:6px;padding:18px 20px;font-size:16px;display:flex}.f-ok-card{border:1px solid var(--safe);background:var(--safe-soft)}.f-ok-card small{letter-spacing:.12em;color:var(--safe);font-size:12px}.f-ok-card b{color:var(--safe)}.f-rec{border:1px solid var(--line-2);background:var(--surface)}.f-rec strong{font-size:20px}.f-rec-head{justify-content:space-between;align-items:center;display:flex}.f-rec-head small{letter-spacing:.12em;color:var(--muted);font-size:12px}.f-rec-head b{color:var(--bg);background:var(--safe);border-radius:6px;padding:4px 10px;font-size:13px}.f-end{text-align:center;flex-direction:column;gap:22px;height:548px;top:72px}.f-end-title{font-family:var(--font-display);letter-spacing:-.04em;font-size:84px;font-weight:800;line-height:1}.f-end-sub{color:var(--text-2);font-size:24px}.f-end-cta{color:var(--brand-2);font-size:18px}.film-controls{align-items:center;gap:12px;display:flex;position:absolute;bottom:16px;left:40px;right:40px}.film-ctl{border:1px solid var(--line-2);background:var(--surface);width:44px;height:44px;color:var(--text);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.film-ctl:hover{border-color:var(--text)}.film-segs{flex:auto;gap:6px;display:flex}.film-seg{background:0 0;border:0;flex:1 1 0;align-items:center;min-height:44px;padding:0;display:flex}.film-track{background:var(--line);border-radius:4px;width:100%;height:4px;display:block;overflow:hidden}.film-seg:hover .film-track{background:var(--line-3)}.film-track span{background:var(--brand);height:100%;display:block}
