.hero.hero-ribbon{background:#030914;min-height:clamp(740px,92svh,960px);padding:0}.ribbon-scene,.ribbon-art,.ribbon-instruments{pointer-events:none;display:block;position:absolute;inset:0}.ribbon-scene{filter:brightness(.9)}.ribbon-scene:after{content:"";background:linear-gradient(90deg,#0000 55%,#0309141a 65%,#03091466 85%,#03091475 100%);position:absolute;inset:0}.ribbon-art img{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.ribbon-instruments{z-index:1;width:100%;height:100%}.ribbon-instruments-portrait{display:none}.ribbon-candle-body{transform-box:fill-box;transform-origin:bottom;animation:ribbon-candle-form var(--tempo) ease-in-out var(--phase) infinite both;animation-play-state:paused}.ribbon-signal{stroke-linecap:round;animation:ribbon-signal-travel var(--tempo) linear var(--phase) infinite both;animation-play-state:paused}.hero-ribbon[data-motion=on][data-visible=true] :is(.ribbon-candle-body,.ribbon-signal){animation-play-state:running}@keyframes ribbon-candle-form{0%,to{transform:scaleY(.88)}42%{transform:scaleY(1.12)}76%{transform:scaleY(.98)}}@keyframes ribbon-signal-travel{0%{stroke-dashoffset:0}to{stroke-dashoffset:-1000px}}.ribbon-veil{pointer-events:none;background:linear-gradient(90deg,#0309148c,#0309147a 58%,#0309141a 76%,#0000 90%);position:absolute;inset:0}.hero-ribbon>.ribbon-shell{z-index:1;align-items:center;padding-top:160px;padding-bottom:180px;position:relative}.ribbon-copy{text-align:left;width:min(100%,920px)}.hero-ribbon .hero-title{color:#f5f7fc;max-width:100%;font-size:clamp(40px,5.2vw,72px);line-height:1.09}.ribbon-title-sub{color:#b5d1ee}.hero-ribbon .hero-lede{color:#d1dbe7;max-width:47ch;margin:10px 0 45px;font-size:18px;line-height:1.7}.hero-ribbon .hero-cta{justify-content:flex-start;gap:16px;margin-top:32px}.hero-ribbon .hero-cta .btn{min-height:48px}.hero-ribbon .btn-ghost{color:#e6edf7;background:#030914c2;border-color:#586779}.hero-ribbon .btn-ghost:hover{background:#18263a}@media (max-width:1099px){.hero.hero-ribbon{min-height:0}.hero-ribbon>.ribbon-shell{flex:none;padding-top:164px;padding-bottom:clamp(112px,16vw,176px)}.ribbon-copy{width:100%}.hero-ribbon .hero-title{font-size:clamp(25px,7.6vw,54px);line-height:1.12}.hero-ribbon .hero-lede{max-width:46ch;margin-top:28px;font-size:17px;line-height:1.65}.hero-ribbon .hero-cta{gap:14px;margin-top:28px}.ribbon-veil{background:linear-gradient(#030914e0 0%,#030914db 30%,#030914d1 62%,#0309143d 82%,#0309140f 100%)}}@media (max-width:599px) and (orientation:portrait){.ribbon-art img{object-position:center bottom}.ribbon-instruments-wide{display:none}.ribbon-instruments-portrait{display:block}.hero-ribbon>.ribbon-shell{flex:none;padding-top:114px;padding-bottom:clamp(142px,16vw,176px)}}@media (min-width:600px) and (max-width:1099px) and (max-height:500px){.hero-ribbon>.ribbon-shell{padding-top:160px;padding-bottom:100px}.hero-ribbon .hero-title{font-size:clamp(32px,4.8vw,44px)}}@media (prefers-reduced-motion:reduce){.ribbon-candle-body{animation:none}.ribbon-signal{animation:none;display:none}}
.cv3{z-index:1;max-width:var(--maxw);padding-inline:var(--gutter);text-align:center;margin-inline:auto;position:relative}.cv3-title{max-width:34ch;margin-inline:auto}.cv3-lede{max-width:56ch;margin:clamp(16px,2.2vh,26px) auto 0}.cv3-fig{width:100%;max-width:1120px;height:auto;margin:clamp(26px,4vh,52px) auto 0;display:block;overflow:hidden}.cv3-cta{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:clamp(20px,3vh,34px);display:flex}.cv3-pole{font-family:var(--font-mono);letter-spacing:.2em;fill:var(--ink-3);font-size:13px}.cv3-mark{font-family:var(--font-mono);letter-spacing:.34em;fill:var(--ink-3);font-size:11px}.cv3-node{font-family:var(--font-mono);letter-spacing:.06em;fill:var(--ink-2);font-size:11px;font-weight:500}.cv3-node-sub{font-family:var(--font-mono);letter-spacing:.13em;fill:var(--ink-4);font-size:8.5px}.cv3-found{font-family:var(--font-mono);letter-spacing:.16em;fill:var(--ink-2);font-size:11px}.cv3-found-tag{font-family:var(--font-mono);letter-spacing:.2em;fill:var(--ink-4);font-size:8px}.cv3-fig{--cyc:9s}.cv3-approach,.cv3-route,.cv3-stem,.cv3-flare,.cv3-flare-ring,.cv3-rule-glow,.cv3-tile-wake,.cv3-found-sweep{opacity:0}.cv3-flare,.cv3-flare-ring,.cv3-tile-wake{transform-box:fill-box;transform-origin:50%}.cv3-rule-glow{mix-blend-mode:screen}@keyframes cv3-approach{0%{stroke-dashoffset:1px;opacity:0}3%{opacity:.9}26%{opacity:.9}32%{stroke-dashoffset:0;opacity:0}to{stroke-dashoffset:0;opacity:0}}.cv3-fig.is-live .cv3-approach{animation:cv3-approach var(--cyc) cubic-bezier(.45, 0, .55, 1) infinite}@keyframes cv3-flare{0%,28%{opacity:0;transform:scale(.8)}36%{opacity:.7;transform:scale(1.15)}50%{opacity:0;transform:scale(1.35)}to{opacity:0;transform:scale(1.35)}}.cv3-fig.is-live .cv3-flare{animation:cv3-flare var(--cyc) cubic-bezier(.22, .61, .36, 1) infinite}@keyframes cv3-flare-ring{0%,31%{opacity:0;transform:scale(1)}37%{opacity:.55}56%{opacity:0;transform:scale(2.3)}to{opacity:0;transform:scale(2.3)}}.cv3-fig.is-live .cv3-flare-ring{animation:cv3-flare-ring var(--cyc) cubic-bezier(.16, .7, .3, 1) infinite}@keyframes cv3-rule-glow{0%,30%{opacity:0}37%{opacity:.85}50%{opacity:0}to{opacity:0}}.cv3-fig.is-live .cv3-rule-glow{animation:cv3-rule-glow var(--cyc) ease-out infinite}@keyframes cv3-fanout{0%,38%{stroke-dashoffset:1px;opacity:0}42%{opacity:.9}70%{opacity:.9}76%{stroke-dashoffset:0;opacity:0}to{stroke-dashoffset:0;opacity:0}}.cv3-fig.is-live .cv3-stem{animation:cv3-fanout var(--cyc) cubic-bezier(.4, 0, .5, 1) infinite;animation-delay:-.2s}.cv3-fig.is-live .cv3-route{animation:cv3-fanout var(--cyc) cubic-bezier(.4, 0, .5, 1) infinite}@keyframes cv3-tile-wake{0%,60%{opacity:0;transform:scale(.7)}68%{opacity:.5;transform:scale(1)}80%{opacity:0;transform:scale(1.4)}to{opacity:0}}.cv3-fig.is-live .cv3-tile-wake{animation:cv3-tile-wake var(--cyc) ease-out infinite}@keyframes cv3-found-sweep{0%,70%{opacity:0;transform:translate(0)}74%{opacity:1}88%{opacity:1}93%{transform:translateX(var(--sweep,900px));opacity:0}to{transform:translateX(var(--sweep,900px));opacity:0}}.cv3-fig.is-live .cv3-found-sweep{animation:cv3-found-sweep var(--cyc) cubic-bezier(.3, 0, .3, 1) infinite}@media (prefers-reduced-motion:reduce){.cv3-fig.is-live .cv3-approach,.cv3-fig.is-live .cv3-route,.cv3-fig.is-live .cv3-stem{opacity:.3;stroke-dashoffset:.5px;animation:none}.cv3-fig.is-live .cv3-flare,.cv3-fig.is-live .cv3-flare-ring,.cv3-fig.is-live .cv3-rule-glow,.cv3-fig.is-live .cv3-tile-wake,.cv3-fig.is-live .cv3-found-sweep{opacity:0;animation:none}}
