.fh{position:relative;width:100vw;margin-left:calc(-50vw + 50%);padding:72px 24px 56px;margin-bottom:2rem;background:#1a1b26;border-bottom:1px solid rgba(59,66,97,.4);display:flex;flex-direction:column;align-items:center;overflow:hidden}.fh-grid-bg{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(122,162,247,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(122,162,247,.03) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse 70% 50% at 50% 40%,black 10%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse 70% 50% at 50% 40%,black 10%,transparent 70%)}.fh-loop-svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:700px;height:240px;pointer-events:none;opacity:.12}.fh-loop-track{fill:none;stroke:#3b4261;stroke-width:1.5}.fh-loop-pulse{fill:none;stroke:url(#fh-loop-grad);stroke-width:2.5;stroke-dasharray:80 520;stroke-linecap:round;animation:fhLoopPulse 4s linear infinite}@keyframes fhLoopPulse{to{stroke-dashoffset:-600}}.fh-header{position:relative;z-index:1;text-align:center;margin-bottom:36px;opacity:0;transform:translateY(24px);animation:fhFadeUp .7s cubic-bezier(.16,1,.3,1) .15s forwards}@keyframes fhFadeUp{to{opacity:1;transform:translateY(0)}}.fh-badge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#7aa2f7;padding:3px 12px;border-radius:20px;border:1px solid rgba(122,162,247,.25);background:#7aa2f70f;margin-bottom:20px}.fh-title{font-size:clamp(2.2rem,6vw,3.6rem);font-weight:700;letter-spacing:-.04em;line-height:1.05;margin:0 0 16px;background:linear-gradient(135deg,#c0caf5,#7aa2f7 60%,#bb9af7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.fh-deck{font-size:clamp(1.05rem,2.2vw,1.25rem);color:#9aa5ce;font-weight:400;max-width:600px;margin:0 auto 6px;line-height:1.55}.fh-deck-sub{font-size:clamp(.9rem,1.8vw,1.05rem);color:#565f89;font-weight:400;max-width:600px;margin:0 auto;line-height:1.65}.fh-card{position:relative;z-index:1;width:100%;max-width:720px;background:#1a1b26d9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(59,66,97,.5);border-radius:14px;padding:0;margin-bottom:24px;overflow:hidden;opacity:0;transform:translateY(24px);animation:fhFadeUp .7s cubic-bezier(.16,1,.3,1) .4s forwards;box-shadow:0 12px 48px #0006,0 0 0 1px #7aa2f70d}.fh-card:before{content:"";position:absolute;inset:-1px;border-radius:15px;padding:1px;background:linear-gradient(160deg,rgba(122,162,247,.2),transparent 35%,transparent 65%,rgba(187,154,247,.12));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.fh-scope-canvas{display:block;width:100%;height:260px;background:#1a1b26}.fh-flow{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-top:1px solid rgba(59,66,97,.35);background:#24283b80;font-size:11px;font-weight:600;font-family:SF Mono,Fira Code,Cascadia Code,monospace;color:#565f89}.fh-flow-node{padding:2px 8px;border-radius:4px;background:#3b42614d;border:1px solid rgba(59,66,97,.4);letter-spacing:.02em}.fh-flow-ref{color:#9ece6a;border-color:#9ece6a40}.fh-flow-sigma{color:#565f89;font-size:13px}.fh-flow-pid{color:#7aa2f7;border-color:#7aa2f740}.fh-flow-plant{color:#ff9e64;border-color:#ff9e6440}.fh-flow-out{color:#7dcfff;border-color:#7dcfff40}.fh-flow-arrow{color:#3b4261;font-size:13px}.fh-flow-fb{color:#565f89;font-size:15px;margin-left:4px;opacity:.7}.fh-controls{position:relative;z-index:1;display:flex;gap:20px;justify-content:center;margin-bottom:28px;opacity:0;transform:translateY(20px);animation:fhFadeUp .7s cubic-bezier(.16,1,.3,1) .6s forwards}.fh-knob{display:flex;align-items:center;gap:10px;padding:8px 16px;background:#24283b99;border:1px solid rgba(59,66,97,.4);border-radius:10px;color:var(--knob-color);transition:border-color .2s,box-shadow .2s}.fh-knob:hover{border-color:color-mix(in srgb,var(--knob-color) 40%,#3b4261);box-shadow:0 0 16px color-mix(in srgb,var(--knob-color) 10%,transparent)}.fh-knob-label{font-size:12px;font-weight:700;min-width:24px;color:var(--knob-color);cursor:default}.fh-knob input[type=range]{-webkit-appearance:none;appearance:none;width:80px;height:4px;border-radius:2px;background:color-mix(in srgb,var(--knob-color) 20%,#3b4261);outline:none;cursor:pointer}.fh-knob input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;border:2px solid var(--knob-color);background:#1a1b26;cursor:pointer;transition:background .15s,box-shadow .15s}.fh-knob input[type=range]::-webkit-slider-thumb:hover{background:var(--knob-color);box-shadow:0 0 8px color-mix(in srgb,var(--knob-color) 50%,transparent)}.fh-knob input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;border:2px solid var(--knob-color);background:#1a1b26;cursor:pointer}.fh-knob-val{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;min-width:28px;text-align:right;color:var(--knob-color);opacity:.7}.fh-actions{position:relative;z-index:1;display:flex;justify-content:center;opacity:0;transform:translateY(20px);animation:fhFadeUp .7s cubic-bezier(.16,1,.3,1) .75s forwards}.fh-cta{display:inline-flex;align-items:center;gap:8px;padding:11px 24px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;transition:background .25s,transform .25s,box-shadow .25s}.fh-cta:hover{transform:translateY(-1px)}.fh-cta-primary{background:#7aa2f71f;color:#7aa2f7;border:1px solid rgba(122,162,247,.3)}.fh-cta-primary:hover{background:#7aa2f72e;box-shadow:0 4px 20px #7aa2f726;color:#7aa2f7}@media(max-width:640px){.fh{padding:48px 16px 40px}.fh-header{margin-bottom:28px}.fh-loop-svg{width:400px;height:140px}.fh-scope-canvas{height:200px}.fh-controls{flex-direction:column;gap:10px;align-items:stretch;padding:0 8px}.fh-knob{justify-content:space-between}.fh-knob input[type=range]{flex:1;width:auto}.fh-flow{font-size:10px;gap:4px;padding:8px 10px}.fh-flow-node{padding:2px 5px}}@media(prefers-reduced-motion:reduce){.fh *,.fh *:before,.fh *:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
