.fi{--accent-tint: color-mix(in srgb, var(--accent) 12%, transparent);position:fixed;inset:0;z-index:950;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;transition:opacity .4s ease}.fi.fi-out{opacity:0;pointer-events:none}html.fi-lock{overflow:hidden;scrollbar-gutter:auto}.fi-stage{position:absolute;inset:0;width:100%;height:100%;display:block}.fi-bg{fill:var(--bg)}.fi-dotfill{fill:url(#fi-dots)}#fi-dots ellipse{fill:var(--bar)}.fi-edge{fill:none;stroke:var(--bar);stroke-width:1.5}.fi-edge-lit{fill:none;stroke-width:2}.fi-edge-lit.p{stroke:var(--text-muted)}.fi-edge-lit.s{stroke:var(--accent)}.fi-pulse.p{fill:var(--text)}.fi-pulse.s{fill:var(--accent)}.fi-node .fi-box{fill:var(--surface);stroke:var(--bar);stroke-width:1.2;transition:fill .35s,stroke .35s}.fi-node .fi-ibox{fill:none;stroke:var(--bar);stroke-width:1.2;transition:fill .35s,stroke .35s}.fi-node .fi-icon{fill:none;stroke:var(--edge);stroke-width:1.7;stroke-linecap:square;stroke-linejoin:miter;transition:stroke .35s}.fi-node .fi-icon-fill{fill:var(--edge);transition:fill .35s}.fi-node .fi-kicker{font:600 9.5px var(--font);letter-spacing:.14em;fill:var(--edge);transition:fill .35s}.fi-node .fi-title{font:600 14px var(--font);fill:var(--text-muted);transition:fill .35s}.fi-node .fi-sub{font:400 11.5px var(--font);fill:var(--edge);transition:fill .35s}.fi-node .fi-handle{fill:var(--bg);stroke:var(--bar);stroke-width:1.2;transition:fill .35s,stroke .35s}.fi-node .fi-badge{opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s}.fi-node .fi-badge rect{stroke-width:1.2}.fi-node .fi-badge text{font:600 9.5px var(--font);letter-spacing:.1em}.fi-node.on .fi-badge{opacity:1;transform:none}.fi-node.on:is(.problem,.trigger) .fi-box,.fi-node.on:is(.problem,.trigger) .fi-ibox{stroke:var(--text-muted)}.fi-node.on:is(.problem,.trigger) .fi-icon{stroke:var(--text)}.fi-node.on:is(.problem,.trigger) .fi-title{fill:var(--text)}.fi-node.on:is(.problem,.trigger) .fi-kicker{fill:var(--text-muted)}.fi-node.on:is(.problem,.trigger) .fi-handle{stroke:var(--text-muted)}.fi-node:is(.problem,.trigger) .fi-badge rect{fill:var(--bg);stroke:var(--text-muted)}.fi-node:is(.problem,.trigger) .fi-badge text{fill:var(--text)}.fi-node.on.connect .fi-box{fill:var(--accent);stroke:var(--accent)}.fi-node.on.connect .fi-ibox{stroke:var(--on-accent)}.fi-node.on.connect .fi-icon-fill{fill:var(--on-accent)}.fi-node.on.connect :is(.fi-kicker,.fi-title,.fi-sub){fill:var(--on-accent)}.fi-node.on.connect .fi-handle{fill:var(--accent);stroke:var(--on-accent)}.fi-node.connect .fi-badge rect{fill:var(--text);stroke:var(--text)}.fi-node.connect .fi-badge text{fill:var(--bg)}.fi-node.on:is(.solution,.result) .fi-box{stroke:var(--accent)}.fi-node.on.result .fi-box{fill:var(--accent-tint)}.fi-node.on:is(.solution,.result) .fi-ibox{fill:var(--accent);stroke:var(--accent)}.fi-node.on:is(.solution,.result) .fi-icon{stroke:var(--on-accent)}.fi-node.on:is(.solution,.result) .fi-title{fill:var(--text)}.fi-node.on:is(.solution,.result) .fi-kicker{fill:var(--accent)}.fi-node.on:is(.solution,.result) .fi-sub{fill:var(--text-muted)}.fi-node.on:is(.solution,.result) .fi-handle{stroke:var(--accent)}.fi-node:is(.solution,.result) .fi-badge rect{fill:var(--accent);stroke:var(--accent)}.fi-node:is(.solution,.result) .fi-badge text{fill:var(--on-accent)}.fi-lens-ring{fill:none;stroke:var(--text-muted);stroke-width:1.8;transition:stroke .3s}.fi-lens-outer{fill:none;stroke:var(--bar);stroke-width:1;stroke-dasharray:2 6}.fi-lens-glass{fill:none;stroke:var(--bg);stroke-opacity:.55;stroke-width:10}.fi-lens-tick{stroke:var(--text-muted);stroke-width:1.8;transition:stroke .3s}.fi-lens-label{font:600 11px var(--font);letter-spacing:.16em;fill:var(--text-muted);transition:fill .3s}.fi-lens-ping{fill:none;stroke:var(--accent);stroke-width:2}.fi-lens.solved :is(.fi-lens-ring,.fi-lens-tick){stroke:var(--accent)}.fi-lens.solved .fi-lens-label{fill:var(--accent)}.fi-kick{margin:0;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}.fi-slashes{fill:var(--accent);width:1.03em;height:1em;flex:none}.fi-topbar{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:calc(18px + env(safe-area-inset-top,0px)) max(24px,calc(16px + env(safe-area-inset-right,0px))) 0 max(24px,calc(16px + env(safe-area-inset-left,0px)));pointer-events:none}.fi-skip{pointer-events:auto;font:600 12px var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--text);background:var(--bg);border:1px solid var(--edge);border-radius:0;padding:9px 14px;cursor:pointer;transition:border-color .2s,color .2s}.fi-skip:hover{border-color:var(--accent);color:var(--accent)}.fi-skip:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.fi-hud{position:absolute;left:max(24px,calc(16px + env(safe-area-inset-left,0px)));right:max(24px,calc(16px + env(safe-area-inset-right,0px)));bottom:calc(34px + env(safe-area-inset-bottom,0px));pointer-events:none}.fi-hud{display:grid;gap:6px}.fi-big{margin:0;font-weight:800;line-height:.9;letter-spacing:-.01em;font-size:clamp(44px,8vw,84px);font-variant-numeric:tabular-nums;color:var(--text);transition:color .3s}.fi-unit{font-size:.42em;font-weight:600;color:var(--text-muted);margin-left:.18em;letter-spacing:0}.fi-hud.solved .fi-big{color:var(--accent)}.fi-lbl{margin:0;font-size:14px;color:var(--text-muted)}.fi-progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--line)}.fi-progress span{display:block;height:100%;width:0;background:var(--accent)}@media(max-width:520px){.fi-long{display:none}}.fi-open{position:absolute;top:50%;transform:translateY(-50%);left:max(24px,calc(16px + env(safe-area-inset-left,0px)));right:max(24px,calc(16px + env(safe-area-inset-right,0px)));display:grid;gap:18px;pointer-events:none}.fi-open .fi-kick{opacity:0}.fi-open-lines{margin:0;font-weight:800;text-transform:uppercase;font-size:clamp(46px,9vw,132px);line-height:.9;letter-spacing:-.02em}.fi-line{display:block;overflow:hidden;padding-bottom:.04em}.fi-line>span{display:block;transform:translateY(105%);will-change:transform}.fi-open-lines em{font-style:normal;color:var(--accent)}.fi-stage,.fi-hud,.fi-topbar .fi-kick{opacity:0}.fi-node:is(.solution,.result) *{transition-duration:.08s}.fi-node.fi-flash .fi-box{stroke:var(--text)}
