.fh-head{max-width:60ch}.fh-head .iz-ey{margin-bottom:14px}.fh-lead{color:var(--tx-dim);font-size:var(--fs-body);max-width:52ch;margin:var(--sp-4) 0 0;line-height:1.6}.fh-stage{justify-content:center;align-items:center;min-height:452px;margin-top:36px;display:flex;position:relative}.fh-view{width:100%;animation:fh-in .42s var(--ease)}@keyframes fh-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.fh-hub{grid-template-columns:repeat(6,1fr);gap:14px;display:grid;-webkit-mask:radial-gradient(128% 116% at 50% 46%,#000 52%,#0000 90%);mask:radial-gradient(128% 116% at 50% 46%,#000 52%,#0000 90%)}.fh-tile{border-radius:var(--r-md);text-align:center;justify-content:center;align-items:center;gap:var(--sp-2);border:1px solid var(--line);min-height:88px;color:inherit;transition:background-color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out), transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);background:0 0;flex-direction:column;padding:10px;text-decoration:none;display:flex}.fh-tile .ti{color:var(--tx-mute);transition:color var(--dur) var(--ease-out);place-items:center;display:grid}.fh-tile .ti svg{width:20px;height:20px}.fh-tile .tl{font-size:var(--fs-label);color:var(--tx-dim);transition:color var(--dur) var(--ease-out);font-weight:500;line-height:1.2}.fh-tile.feat{cursor:pointer}.fh-tile.feat:hover{border-color:var(--orange);background:color-mix(in srgb, var(--orange) 8%, var(--surface));box-shadow:var(--panel-sh);transform:translateY(-2px)}.fh-tile.feat:hover .ti{color:var(--orange)}.fh-tile.feat:hover .tl{color:var(--tx)}.fh-tile.ghost .ti{opacity:.32}.fh-tile.ghost .ti svg{width:17px;height:17px}.fh-hero{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line-strong);min-height:88px;box-shadow:var(--inset), var(--panel-sh);grid-column:span 2;justify-content:center;align-items:center;gap:11px;padding:14px;display:flex}.fh-hero .mk{border-radius:var(--r-pill);background:var(--orange);flex:none;place-items:center;width:32px;height:32px;display:grid}.fh-hero .mk svg{width:18px;height:18px;color:var(--btn-ink)}.fh-hero .ht{font-family:var(--disp);font-weight:600;font-size:var(--fs-body);color:var(--tx);letter-spacing:-.01em;display:block}.fh-hero .hs{font-family:var(--mono);font-size:var(--fs-3xs);letter-spacing:.08em;text-transform:uppercase;color:var(--tx-mute);margin-top:3px;display:block}.fh-stack{flex-direction:column;gap:14px;width:100%;max-width:580px;margin:0 auto;display:flex}.fh-srow{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--inset), var(--panel-sh);opacity:0;animation:fh-row .5s var(--ease-out) forwards;transition:border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), transform var(--dur) var(--ease-out);cursor:default;align-items:center;gap:13px;padding:16px 18px;display:flex}.fh-srow:hover{border-color:color-mix(in srgb, var(--orange) 40%, var(--line));box-shadow:var(--inset), 0 8px 24px -8px color-mix(in srgb, var(--orange) 18%, #00000038);transform:translateY(-2px)}.fh-srow:first-child{animation-delay:50ms}.fh-srow:nth-child(2){margin-left:26px;animation-delay:.16s}.fh-srow:nth-child(3){margin-left:52px;animation-delay:.27s}@keyframes fh-row{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.fh-srow .si{border-radius:var(--r-card);background:var(--bg-2);border:1px solid var(--line);width:38px;height:38px;color:var(--tx-dim);transition:background var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);flex:none;place-items:center;display:grid}.fh-srow:hover .si{background:color-mix(in srgb, var(--orange) 10%, var(--bg-2));border-color:color-mix(in srgb, var(--orange) 35%, var(--line));color:var(--orange)}.fh-srow .si svg{width:19px;height:19px}.fh-srow .sn{font-family:var(--disp);font-weight:500;font-size:var(--fs-body-sm);color:var(--tx)}.fh-srow .ss{font-family:var(--mono);font-size:var(--fs-mono-xs);color:var(--tx-mute);margin-top:3px}.fh-srow .sgrow{align-items:center;gap:var(--sp-3);margin-left:auto;display:flex}.fh-srow .sstat{font-family:var(--mono);font-size:var(--fs-mono-xs);color:var(--tx-dim);border:1px solid var(--line);border-radius:var(--r-sm);padding:4px 9px}.fh-pill{font-family:var(--mono);font-size:var(--fs-2xs);border-radius:var(--r-pill);white-space:nowrap;align-items:center;gap:5px;padding:3px 10px;font-weight:600;display:inline-flex}.fh-pill.ok{background:var(--allow-bg);color:var(--allow)}.fh-pill.wait{color:#d98a1f;background:#e5a02a26}.fh-pill.wait i{border-radius:var(--r-pill);width:6px;height:6px;animation:fh-pulse 1.3s var(--ease-out) infinite;background:#d98a1f}.fh-rule{border-top:1px dashed var(--line-strong);width:100%;margin-top:14px;padding-top:14px}.fh-rule-h{font-family:var(--mono);font-size:var(--fs-2xs);letter-spacing:.04em;color:var(--tx-mute);margin-bottom:var(--sp-2)}.fh-rule-row{align-items:center;gap:var(--sp-2);font-family:var(--mono);font-size:var(--fs-mono);color:var(--tx-dim);padding:var(--sp-1) 0;display:flex}.fh-rule-row b{color:var(--orange);font-weight:500}.fh-srow.col{flex-direction:column;align-items:stretch}.fh-srow .stop{align-items:center;gap:13px;display:flex}@keyframes fh-pulse{0%,to{opacity:1}50%{opacity:.4}}.fh-log-wrap{justify-content:center;align-items:center;width:100%;display:flex}.fh-log{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);width:100%;max-width:620px;box-shadow:var(--inset), var(--panel-sh);transition:box-shadow var(--dur-fast) var(--ease-out);-webkit-user-select:none;user-select:none;overflow:hidden}.fh-log.dragging{box-shadow:var(--inset), 0 24px 48px -16px #00000073}.fh-log-h{border-bottom:1px solid var(--line);background:var(--surface-2);cursor:grab;align-items:center;gap:10px;padding:13px 16px;display:flex}.fh-log.dragging .fh-log-h{cursor:grabbing}.fh-drag-handle{opacity:.45;background-image:radial-gradient(circle, var(--tx-dim) 1.4px, transparent 1.4px);background-repeat:repeat;background-size:5px 5px;flex:none;width:16px;height:12px}.fh-log-h .live{font-family:var(--mono);font-size:var(--fs-mono-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--tx-mute);align-items:center;gap:7px;display:inline-flex}.fh-log-h .live i{border-radius:var(--r-pill);background:var(--allow);width:7px;height:7px;animation:fh-pulse 1.6s var(--ease-out) infinite}.fh-log-h .exp{font-family:var(--mono);font-size:var(--fs-mono-xs);color:var(--orange);border:1px solid color-mix(in srgb, var(--orange) 40%, var(--line-strong));border-radius:var(--r-pill);align-items:center;gap:6px;margin-left:auto;padding:4px 11px;display:inline-flex}.fh-log-h .exp svg{width:12px;height:12px}.fh-log-body{padding:var(--sp-1) 0 0;-webkit-mask:linear-gradient(#000 62%,#0000 100%);mask:linear-gradient(#000 62%,#0000 100%)}.fh-lrow{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);font-size:var(--fs-label);opacity:0;animation:fh-row .5s var(--ease-out) forwards;grid-template-columns:22px 1fr 1.2fr auto auto;align-items:center;display:grid}.fh-lrow:first-child{animation-delay:50ms}.fh-lrow:nth-child(2){animation-delay:.13s}.fh-lrow:nth-child(3){animation-delay:.21s}.fh-lrow:nth-child(4){animation-delay:.29s}.fh-lrow:nth-child(5){animation-delay:.37s}.fh-lrow:nth-child(6){animation-delay:.45s}.fh-lrow .lic{place-items:center;display:grid}.fh-lrow .lic svg{width:15px;height:15px}.fh-lrow .lu{color:var(--tx-dim);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fh-lrow .la{font-family:var(--mono);font-size:var(--fs-mono);color:var(--orange);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fh-lrow .lt{font-family:var(--mono);font-size:var(--fs-2xs);color:var(--tx-mute);text-align:right}.fh-groups{grid-template-columns:repeat(3,1fr);gap:28px;margin-top:30px;display:grid}.fh-group{text-align:left;border:0;border-left:2px solid var(--line);cursor:pointer;opacity:.55;transition:border-color var(--dur) var(--ease-out), opacity var(--dur) var(--ease-out);background:0 0;padding:2px 0 2px 22px;position:relative}.fh-group.on{border-left-color:color-mix(in srgb, var(--orange) 28%, var(--line));opacity:1}.fh-prog{background:var(--orange);transform-origin:top;width:2px;height:100%;animation:fh-prog-fill 5.5s var(--ease-linear) forwards;position:absolute;top:0;left:-2px;transform:scaleY(0)}.fh-prog.paused{animation-play-state:paused}@keyframes fh-prog-fill{to{transform:scaleY(1)}}.fh-group:not(.on):hover{opacity:.82}.fh-group .gi svg{width:21px;height:21px;color:var(--tx-dim);transition:color var(--dur) var(--ease-out)}.fh-group.on .gi svg{color:var(--tx)}.fh-group h4{font-family:var(--disp);font-weight:500;font-size:var(--fs-lead);letter-spacing:-.01em;color:var(--tx-dim);transition:color var(--dur) var(--ease-out);margin:13px 0 0}.fh-group.on h4{color:var(--tx)}.fh-group p{font-size:var(--fs-body-sm);color:var(--tx-mute);max-width:32ch;transition:color var(--dur) var(--ease-out);margin:10px 0 0;line-height:1.55}.fh-group.on p{color:var(--tx-dim)}.fh-group .learn{font-size:var(--fs-sm);color:var(--tx-mute);transition:color var(--dur) var(--ease-out);align-items:center;gap:7px;margin-top:15px;font-weight:500;display:inline-flex}.fh-group.on .learn{color:var(--orange)}.fh-group .learn svg{width:15px;height:15px;transition:transform var(--dur-fast) var(--ease-out)}.fh-group:hover .learn svg{transform:translate(3px)}.fh-cards{gap:var(--sp-5);margin-top:var(--sp-8);display:grid}.fh-card{gap:var(--sp-3);padding:var(--sp-5);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--inset), var(--panel-sh);min-width:0;display:grid}.fh-card-vis{min-width:0;margin-bottom:var(--sp-2)}.fh-card-ey{align-items:center;gap:var(--sp-2);font-family:var(--mono);font-size:var(--fs-mono-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--tx-dim);display:inline-flex}.fh-card-ey svg{width:15px;height:15px;color:var(--orange)}.fh-card-d{font-size:var(--fs-body-sm);color:var(--tx-dim);margin:0;line-height:1.55}.fh-card .learn{font-size:var(--fs-sm);color:var(--orange);align-items:center;gap:7px;font-weight:500;display:inline-flex}.fh-card .learn svg{width:15px;height:15px}@media (max-width:900px){.fh-hub{grid-template-columns:repeat(4,1fr)}.fh-groups{grid-template-columns:1fr;gap:0}.fh-group{padding:18px 0 18px 20px}}@media (max-width:560px){.fh-hub{grid-template-columns:repeat(3,1fr);gap:10px;-webkit-mask:none;mask:none}.fh-tile.ghost{display:none}.fh-hero{grid-column:span 3}.fh-srow:nth-child(2),.fh-srow:nth-child(3){margin-left:0}}@media (prefers-reduced-motion:reduce){.fh-view,.fh-srow,.fh-lrow{opacity:1;animation:none}.fh-tile,.fh-group,.fh-group .learn svg{transition:none}.fh-tile.feat:hover{transform:none}.fh-srow{transition:none}.fh-srow:hover{transform:none}.fh-pill.wait i,.fh-log-h .live i{animation:none}.fh-prog{animation:none;transform:scaleY(1)}.fh-log{transition:none}}
