{"version":3,"file":"HeroSection.DvcppME4.mjs","names":["useState","useRef","useCallback","_Fragment","heroStyle"],"sources":["https:/framerusercontent.com/modules/ModvBWTRjqCEm4gOfDxa/QdEcaVkkJdr8sFgwbWpO/HeroSection.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,useRef,useCallback}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// ─── Brand constants ──────────────────────────────────────────────────────────\n// The wide lockup contains the \"The Art of Crypto\" wordmark baked in as white paths, so any\n// layout that also renders brandName as text prints the name twice -- which is what the live\n// /wins hero does. The gold theme uses AOC_MARK instead. Same note in Footer/SiteFooter.tsx.\nconst AOC_LOGO=\"https://framerusercontent.com/images/6tgxXoNxl1P8llnNFQNUsphYFbU.svg\";// Icon-only \"ac\" mark in brand blue on transparent -- the same asset SiteFooter uses, so the\n// hero lockup and the footer lockup match exactly.\nconst AOC_MARK=\"https://files.catbox.moe/bpdgim.png\";const PURPLE=\"#8B5CF6\";const BLUE=\"#3B9DF5\";const GOLD_BRIGHT=\"#FFE552\";const GRADIENT_LOGO=\"linear-gradient(135deg, #8B5CF6 0%, #3B9DF5 100%)\";// Gold theme. #F0B91E is /bootcamp's gold, the most-used accent on the site and the page cold\n// traffic goes to next -- so /wins -> /bootcamp stops reading as two companies. Every gold\n// rule below is scoped under .theme-gold; nothing here reaches the default.\nconst GOLD=\"#F0B91E\";const GOLD_DEEP=\"#C8892A\";const GRADIENT_GOLD=\"linear-gradient(135deg, #F0B91E 0%, #C8892A 100%)\";const WHITE_65=\"rgba(255,255,255,0.65)\";const WHITE_35=\"rgba(255,255,255,0.35)\";const BORDER=\"rgba(255,255,255,0.07)\";const F_DISPLAY=`-apple-system, \"SF Pro Display\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`;const F_TEXT=`-apple-system, \"SF Pro Text\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`;// ── LOADING, AND WHY THERE IS NO OVERLAY IN GOLD ─────────────────────────────\n// This component used to inject its stylesheet into document.head from inside a useEffect,\n// which runs one paint AFTER mount. That is a real flash of unstyled content, and the\n// full-screen LoadingOverlay existed to hide it. The whole gold sequence ran to about 800ms\n// before the hero settled, roughly 500ms of it the overlay fading over content that was\n// already correct underneath.\n//\n// The cause was the injection, not the overlay. The stylesheet is now rendered inline as\n// <style>{css}</style> -- the pattern every other section on /drafts/wins-v2 uses -- so it\n// lands in the same paint as the elements it styles. Gold renders styled immediately and\n// starts its reveal at 80ms.\n//\n// THE OVERLAY IS STILL SHOWN ON THE PURPLE THEME. That instance is the live /wins page;\n// removing a load screen there is a visible production change nobody asked for.\nconst REVEAL_DELAY_MS=80;const NUM_BARS=7;const BAR_COLOR=\"rgba(139,92,246,0.65)\";// ─── Teaser thumbnails ────────────────────────────────────────────────────────\nconst TEASER_IMGS=[\"https://framerusercontent.com/images/YQpPAQVSyue8Ev1BPn2Ybv0oYX0.webp\",\"https://framerusercontent.com/images/MHq6cM2ps21SfcKabAkk8Se4oto.webp\",\"https://framerusercontent.com/images/8MvpOmGr8S2qoCHjLdGdKYZaXQ.webp\",\"https://framerusercontent.com/images/qM0GZHjCnDCJYtnPr6Qe1PYgxr8.webp\",\"https://framerusercontent.com/images/nRd55Mgj89w9UVX3WoDnEcdxVfA.webp\"];// ─── Proof stats ──────────────────────────────────────────────────────────────\n// Same 4 numbers as the /diagnostic hero's stat cards, kept identical across both pages so\n// the claim reads as one consistent number set site-wide.\n//\n// Structured as target/decimals/prefix/suffix (not pre-formatted strings) so the value can\n// animate from 0 on load and re-format every frame.\n//\n// decimals is 0 on the three whole-number stats and 1 only on 78.6%. Deliberately NOT 1 on\n// the $5M card: that animates more smoothly but leaves the number reading \"$5.0M+\" at rest.\n//\n// `short` labels are for the gold theme only. The full ones wrap to three ragged lines in\n// that layout, which breaks the alignment across the four columns.\n//\n// THE WINRATE LABEL NAMES ITS SUBJECT ON PURPOSE. It was \"Tracked Winrate\", which has no\n// subject at all -- so on a page whose entire job is student outcomes, a cold reader takes it\n// as a student outcome. Two sections down, Wesley's card says \"On a 30% win rate, so most\n// trades lost\". Both figures are true and they are about different things (AOC's own public\n// BTC calls vs. one student's trading), but read in sequence the page appears to brag and\n// then shrug. Naming the owner is the whole fix; do not shorten this back.\nconst STAT_CARDS=[{target:5,decimals:0,prefix:\"$\",suffix:\"M+\",label:\"Student Funding Capital Secured\",short:\"Funding Secured\"},{target:1e3,decimals:0,suffix:\"+\",label:\"Traders Helped\",short:\"Traders Helped\"},{target:100,decimals:0,suffix:\"+\",label:\"Verified Funded Certs\",short:\"Funded Certs\"},{target:78.6,decimals:1,suffix:\"%\",label:\"Publicly Tracked BTC Winrate\",short:\"Our BTC Winrate\"}];function formatStat(value,decimals,suffix,prefix=\"\"){const body=decimals>0?value.toFixed(decimals):Math.round(value).toLocaleString(\"en-US\");return`${prefix}${body}${suffix}`;}// Counts 0 -> target once `active` flips true, easing out. `delay` staggers the 4 cards so\n// they don't all land in lockstep.\nfunction useCountUp(target,active,delay,duration=1100){const[value,setValue]=useState(0);const startedRef=useRef(false);useEffect(()=>{if(!active||startedRef.current)return;startedRef.current=true;let raf=0;const timeout=setTimeout(()=>{const start=performance.now();const tick=now=>{const t=Math.min((now-start)/duration,1);const eased=1-Math.pow(1-t,3);setValue(target*eased);if(t<1)raf=requestAnimationFrame(tick);};raf=requestAnimationFrame(tick);},delay);return()=>{clearTimeout(timeout);if(raf)cancelAnimationFrame(raf);};},[active,target,delay,duration]);return value;}// ─── Analytics ───────────────────────────────────────────────────────────────\nfunction trackHeroCTA(label){const w=window;if(typeof w.gtag!==\"function\")return;w.gtag(\"event\",\"wins_hero_cta_click\",{event_category:\"CTA\",location:\"wins_hero\",cta_label:label});}// ─── Loading overlay (purple theme only) ─────────────────────────────────────\nfunction LoadingOverlay({visible,logoUrl,accent}){const[gone,setGone]=useState(false);if(gone)return null;return /*#__PURE__*/_jsxs(\"div\",{onTransitionEnd:()=>{if(!visible)setGone(true);},style:{position:\"fixed\",inset:0,zIndex:9999,background:\"rgb(10,11,15)\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",gap:20,opacity:visible?1:0,pointerEvents:visible?\"auto\":\"none\",transition:\"opacity 0.5s ease\"},children:[/*#__PURE__*/_jsx(\"img\",{src:logoUrl,alt:\"AOC\",style:{width:\"auto\",height:48,objectFit:\"contain\",display:\"block\"}}),/*#__PURE__*/_jsxs(\"svg\",{width:\"36\",height:\"36\",viewBox:\"0 0 36 36\",fill:\"none\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"18\",cy:\"18\",r:\"14\",stroke:\"rgba(255,255,255,0.08)\",strokeWidth:\"2.5\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"18\",cy:\"18\",r:\"14\",stroke:accent,strokeWidth:\"2.5\",strokeLinecap:\"round\",strokeDasharray:\"22 66\",children:/*#__PURE__*/_jsx(\"animateTransform\",{attributeName:\"transform\",type:\"rotate\",from:\"0 18 18\",to:\"360 18 18\",dur:\"0.85s\",repeatCount:\"indefinite\"})})]})]});}// ─── Styles ───────────────────────────────────────────────────────────────────\n// NOTE FOR ANYONE EDITING THE COMMENTS INSIDE THIS STRING: it is a template literal, so a\n// backtick anywhere in it terminates the string. Do not quote CSS keywords with backticks\n// the way the TypeScript comments above do -- write cover, not the backticked form. The\n// resulting parse error points at a line number well past the real one.\nconst css=`\nhtml { scroll-behavior: smooth; }\n\n.aoc-hero {\n    position: relative; width: 100%;\n    min-height: 100vh; min-height: 100dvh;\n    background: radial-gradient(125% 125% at 50% 10%, #000 40%, #3b2abf 100%);\n    display: flex; flex-direction: column;\n    align-items: center; justify-content: center;\n    overflow: hidden; box-sizing: border-box;\n    padding: 120px 24px 100px;\n}\n.aoc-hero::after {\n    content: \"\"; position: absolute; bottom: 0; left: 0; right: 0; height: 1px;\n    background: ${BORDER};\n}\n\n.aoc-bars { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; display: flex; align-items: flex-end; }\n.aoc-bar  { flex: 1 0 0%; height: 100%; transform-origin: bottom center; animation: aoc-pulse-bar 2s ease-in-out infinite alternate; }\n@keyframes aoc-pulse-bar {\n    0%   { transform: scaleY(var(--initial-scale)); }\n    100% { transform: scaleY(calc(var(--initial-scale) * 0.62)); }\n}\n\n/* z-index ladder, gold theme: background image 0, vignette 1, content 2. The vignette is a\n   ::before, which paints BEFORE element children -- so without explicit values the image\n   layer would sit on top of the vignette it is supposed to be underneath. */\n.aoc-hero-inner {\n    position: relative; z-index: 2;\n    display: flex; flex-direction: column;\n    align-items: center; text-align: center;\n    max-width: 760px; width: 100%;\n}\n.aoc-hero-brand {\n    display: flex; flex-direction: row; align-items: center;\n    justify-content: center; gap: 4px; margin-bottom: 44px; line-height: 1;\n}\n.aoc-hero-brand-name {\n    font-family: ${F_DISPLAY}; font-size: 17px; font-weight: 600;\n    letter-spacing: -0.01em; line-height: 1;\n    background: ${GRADIENT_LOGO};\n    -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n    margin: 0; padding: 0; white-space: nowrap; align-self: center;\n}\n/* Eyebrow and CTA note. Both render ONLY when their prop is set, and the live /wins instance\n   sets neither, so these rules cannot change it. */\n.aoc-hero-eyebrow {\n    font-family: ${F_TEXT}; font-size: 11.5px; font-weight: 600;\n    letter-spacing: 0.16em; text-transform: uppercase;\n    color: ${WHITE_35}; margin: 0 0 18px;\n}\n.aoc-hero-note {\n    font-family: ${F_TEXT}; font-size: 13px; font-weight: 400;\n    line-height: 1.5; letter-spacing: 0.005em;\n    color: ${WHITE_35}; margin: 18px 0 0; max-width: 420px;\n}\n.aoc-hero-headline {\n    font-family: ${F_DISPLAY}; font-size: clamp(36px,5.5vw,64px);\n    font-weight: 600; line-height: 1.07; letter-spacing: -0.03em;\n    margin: 0 0 44px; white-space: pre-line; color: #ffffff;\n    text-shadow: 0 0 40px rgba(139,92,246,0.55), 0 0 80px rgba(139,92,246,0.25);\n}\n\n/* ── Proof stats row (right under the headline) ── */\n.aoc-hero-stats {\n    display: flex; align-items: flex-start; justify-content: center;\n    gap: 44px; margin: 0 0 32px; width: 100%;\n    animation: aoc-fadein 0.8s ease 0.15s backwards;\n}\n.aoc-hero-stat { display: flex; flex-direction: column; align-items: center; gap: 5px; }\n.aoc-hero-stat-value {\n    font-family: ${F_DISPLAY}; font-size: 23px; font-weight: 700;\n    letter-spacing: -0.02em; line-height: 1.1;\n    background: ${GRADIENT_LOGO};\n    -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n    font-variant-numeric: tabular-nums;\n}\n.aoc-hero-stat-label {\n    font-family: ${F_TEXT}; font-size: 10.5px; font-weight: 600;\n    letter-spacing: 0.06em; line-height: 1.35; color: ${WHITE_35};\n    text-transform: uppercase; max-width: 108px;\n}\n\n.aoc-hero-sub {\n    font-family: ${F_DISPLAY}; font-size: clamp(17px,1.8vw,21px);\n    font-weight: 400; line-height: 1.47; letter-spacing: -0.01em;\n    color: ${WHITE_65}; margin: 0 0 48px; max-width: 520px;\n}\n\n/* explainFirst: the subheading moves above the stats, so the spacing swaps. */\n.aoc-hero-inner.explain-first .aoc-hero-headline { margin-bottom: 22px; }\n.aoc-hero-inner.explain-first .aoc-hero-sub { margin-bottom: 36px; max-width: 560px; }\n.aoc-hero-inner.explain-first .aoc-hero-stats { margin-bottom: 48px; }\n\n.aoc-hero-cta { display: flex; align-items: center; justify-content: center; }\n\n/* ── Hover CTA button (purple theme) ── */\n.aoc-cta-btn {\n    position: relative; isolation: isolate;\n    padding: 14px 32px; border-radius: 100px;\n    font-family: ${F_DISPLAY}; font-size: 16px; font-weight: 500;\n    line-height: 1; letter-spacing: -0.01em; color: #ffffff;\n    background: rgba(80, 50, 180, 0.28);\n    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);\n    border: 1px solid rgba(139, 92, 246, 0.35);\n    cursor: pointer; overflow: hidden;\n    box-shadow:\n        inset 0 0 18px 0 rgba(139, 92, 246, 0.12),\n        inset 0 -3px 12px 0 rgba(139, 92, 246, 0.18),\n        0 4px 24px 0 rgba(59, 42, 191, 0.35);\n    transition: transform 0.15s ease, border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;\n}\n.aoc-cta-btn:hover {\n    background: rgba(100, 60, 210, 0.38);\n    border-color: rgba(139, 92, 246, 0.6);\n    box-shadow:\n        inset 0 0 24px 0 rgba(139, 92, 246, 0.20),\n        inset 0 -3px 14px 0 rgba(139, 92, 246, 0.28),\n        0 6px 32px 0 rgba(59, 42, 191, 0.55);\n}\n.aoc-cta-btn:active { transform: scale(0.975); }\n\n.aoc-cta-trail {\n    position: absolute; width: 56px; height: 56px; border-radius: 50%;\n    transform: translate(-50%,-50%); filter: blur(16px);\n    pointer-events: none; z-index: -1; opacity: 0; transition: opacity 0.3s ease;\n    background: radial-gradient(circle, rgba(139,92,246,0.95) 0%, rgba(59,157,245,0.6) 100%);\n}\n.aoc-cta-trail.fi { opacity: 0.8; }\n.aoc-cta-trail.fo { opacity: 0; transition: opacity 1.2s ease; }\n\n/* ── Glow CTA button (gold theme) ──\n   Solid dark pill with a blurred gradient bleeding out from behind it. The glow sits at\n   inset:-3px on purpose -- that overhang past the pill's edge IS the effect.\n\n   The reference ran indigo -> purple -> pink and the shimmer came from the hue shift. Gold\n   has no equivalent range, so this shifts by VALUE instead: bronze -> gold -> pale gold.\n\n   The 1px ring exists because blur alone gives a halo with no defined edge on a near-black\n   page. mask-composite punches the centre out of a gradient-filled box, which is the only\n   way to put a gradient on a border. */\n.aoc-glow-btn {\n    position: relative; isolation: isolate;\n    display: inline-flex; align-items: center; justify-content: center;\n    padding: 15px 34px; border-radius: 100px;\n    border: none; background: #1A1A1E;\n    cursor: pointer; overflow: visible;\n    transition: transform 0.15s ease, background 0.2s ease;\n}\n.aoc-glow-btn:hover { background: #212127; }\n.aoc-glow-btn:active { transform: scale(0.978); }\n.aoc-glow-btn:focus-visible { outline: 2px solid ${GOLD}; outline-offset: 3px; }\n.aoc-glow-btn-glow {\n    position: absolute; inset: -3px; z-index: -1; border-radius: inherit;\n    background: linear-gradient(90deg, ${GOLD_DEEP} 0%, ${GOLD} 50%, ${GOLD_BRIGHT} 100%);\n    filter: blur(11px); opacity: 0.42; transition: opacity 0.45s ease;\n}\n.aoc-glow-btn:hover .aoc-glow-btn-glow { opacity: 0.85; }\n.aoc-glow-btn-ring {\n    position: absolute; inset: 0; border-radius: inherit; padding: 1px;\n    background: linear-gradient(90deg, ${GOLD_DEEP}, ${GOLD}, ${GOLD_BRIGHT});\n    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n    -webkit-mask-composite: xor; mask-composite: exclude;\n    opacity: 0.75; transition: opacity 0.3s ease; pointer-events: none;\n}\n.aoc-glow-btn:hover .aoc-glow-btn-ring { opacity: 1; }\n.aoc-glow-btn-inner {\n    position: relative; display: inline-flex; align-items: center; gap: 8px;\n    color: #FFFFFF; font-family: ${F_DISPLAY}; font-size: 16px; font-weight: 500;\n    letter-spacing: -0.01em; line-height: 1; white-space: nowrap;\n}\n/* The arrow POINTS DOWN and the hover nudges it DOWN. This button scrolls the page to the\n   proof section, so an up-and-right arrow was saying \"leaves this page\", which it does not do.\n   Gold theme only: the purple CTA on live /wins is HoverCTAButton and is untouched. */\n.aoc-glow-btn-arrow { transition: transform 0.2s ease; flex-shrink: 0; }\n.aoc-glow-btn:hover .aoc-glow-btn-arrow { transform: translateY(2px); }\n\n/* ── Scroll hint ── */\n.aoc-hero-scroll-hint {\n    position: absolute; bottom: 36px; left: 50%; transform: translateX(-50%);\n    display: flex; flex-direction: column; align-items: center; gap: 8px;\n    z-index: 2; animation: aoc-fadein 0.8s ease 1.2s forwards;\n    cursor: pointer; transition: opacity 0.2s ease;\n}\n.aoc-hero-scroll-hint:hover { opacity: 0.75 !important; }\n.aoc-hero-scroll-thumbs { display: flex; align-items: center; margin-bottom: 2px; }\n.aoc-hero-scroll-thumb {\n    width: 26px; height: 26px; border-radius: 6px;\n    object-fit: cover; border: 1.5px solid rgba(0,0,0,0.6);\n    margin-left: -7px; flex-shrink: 0;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.5);\n}\n.aoc-hero-scroll-thumb:first-child { margin-left: 0; }\n.aoc-hero-scroll-label {\n    font-family: ${F_TEXT}; font-size: 11px; letter-spacing: 0.1em;\n    text-transform: uppercase; color: ${WHITE_35}; margin: 0;\n}\n.aoc-hero-chevron { animation: aoc-bounce 1.8s ease-in-out infinite; display: block; }\n@keyframes aoc-fadein { from { opacity: 0; } to { opacity: 1; } }\n@keyframes aoc-bounce {\n    0%, 100% { transform: translateY(0); }\n    50%       { transform: translateY(5px); }\n}\n\n/* ══ GOLD THEME ══════════════════════════════════════════════════════════════\n   Everything below is scoped under .theme-gold. The live /wins instance never sets the\n   prop, so not one of these rules can reach it. */\n\n/* GROUND COLOUR: #0A0B0F, SiteFooter's own dark background. Every section on\n   /drafts/wins-v2 uses it, and so does the page canvas, so there is no seam anywhere. */\n.aoc-hero.theme-gold {\n    background-color: #0A0B0F;\n    background-image: none;\n    padding: 100px 24px 92px;\n}\n\n/* ── THE BACKGROUND REVEAL ────────────────────────────────────────────────────\n   The still lives on ITS OWN LAYER rather than on the section's background-image, for one\n   reason: a background-image cannot be transformed. Only a real element can, and the reveal\n   needs a transform.\n//\n   An earlier version faded a flat #0A0B0F sheet off the top of the section. That is a fade\n   in the arithmetic sense and reads as almost nothing -- a dark rectangle becoming a\n   slightly different dark rectangle over a photograph that is 88% near-black anyway.\n//\n   This does two things at once, on different clocks:\n     * opacity 0 -> 1 over 1.6s, linear-ish ease, so it arrives gently.\n     * scale 1.06 -> 1 over 2.6s on a long ease-out, so it settles OUTWARD. The image is\n       already cropped by cover, so starting 6% in and easing back is free -- nothing is\n       revealed at the edges that was not going to be there.\n   The transform running half a second longer than the opacity is what stops it reading as\n   one mechanical move: the picture is fully visible before it has finished settling.\n//\n   6% and 2.6s are the ceiling for this. Past either it stops being a settle and becomes a\n   Ken Burns pan, which on a hero behind live text reads as a slideshow. */\n/* -- BREATHING --\n   A second layer, and it exists because ONE ELEMENT CANNOT OWN TWO TRANSFORMS. The still\n   below already runs a transition on transform for the load settle. Adding a keyframe\n   animation to that same element makes the two fight: the animation wins, the settle is\n   discarded, and the hero snaps to full size instead of easing out of its 6% zoom. So the\n   wrap breathes and the layer inside it settles.\n\n   IT IS DELIBERATELY HARD TO NOTICE. 1.6% over 34 seconds is roughly a pixel every two\n   seconds on a 1440 display, which is below the threshold at which the eye tracks motion. The\n   first pass ran 2.8% over 26s and read as an animation, which is the failure mode here: the\n   moment a reader notices the background moving they watch it instead of the headline.\n\n   If it needs tuning, move the DURATION before the amplitude. Slower is always safer.\n\n   The delay clears the load settle, which runs 2.6s, so the two never overlap. */\n.aoc-hero.theme-gold .aoc-hero-bgwrap {\n    position: absolute; inset: 0; z-index: 0; pointer-events: none;\n    transform-origin: center 42%;\n    animation: aoc-breathe 34s ease-in-out 3.2s infinite;\n}\n@keyframes aoc-breathe {\n    0%, 100% { transform: scale(1); }\n    50%      { transform: scale(1.016); }\n}\n\n.aoc-hero.theme-gold .aoc-hero-bgimg {\n    position: absolute; inset: 0; z-index: 0; pointer-events: none;\n    background-image: var(--aoc-hero-bg);\n    background-size: cover; background-position: center; background-repeat: no-repeat;\n    opacity: 0; transform: scale(1.06);\n    transform-origin: center 42%;\n    will-change: opacity, transform;\n    transition: opacity 1.6s ease, transform 2.6s cubic-bezier(0.16, 1, 0.3, 1);\n}\n.aoc-hero.theme-gold.is-in .aoc-hero-bgimg { opacity: 1; transform: scale(1); }\n\n/* ── Reveal on load, GOLD ONLY ──\n   The hero column rises 16px and fades, 110ms apart, in DOM order. nth-child rather than\n   named classes so the order follows the DOM and stays correct whichever way explainFirst\n   is set. NOT applied to purple: that instance is the live page.\n\n   The stats row has its own aoc-fadein keyframe for the purple layout. Left running here it\n   fights this transition and the row arrives twice, so it is cancelled in gold. */\n.aoc-hero.theme-gold .aoc-hero-inner > * {\n    opacity: 0; transform: translateY(16px);\n    transition: opacity 0.72s cubic-bezier(0.16,1,0.3,1), transform 0.72s cubic-bezier(0.16,1,0.3,1);\n}\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > * { opacity: 1; transform: none; }\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(1) { transition-delay: 0s; }\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(2) { transition-delay: 0.11s; }\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(3) { transition-delay: 0.22s; }\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(4) { transition-delay: 0.33s; }\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(5) { transition-delay: 0.44s; }\n/* Six and seven exist because the eyebrow and the CTA note are optional children. Without\n   them the column is five deep and these never match, which is why they are additive rather\n   than a renumbering. */\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(6) { transition-delay: 0.55s; }\n.aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(7) { transition-delay: 0.66s; }\n.aoc-hero.theme-gold .aoc-hero-stats { animation: none; }\n\n/* Vignette over the DESKTOP photograph. background-size:cover crops the still to the\n   viewport's aspect, throwing away the empty middle and keeping the two lit figures, so it\n   reads far brighter on screen than the file measures. This darkens the left and right\n   thirds where the figures sit and leaves the centre column clear for the type.\n\n   Bottom stop matches the section ground so the hero resolves INTO the page. */\n.aoc-hero.theme-gold::before {\n    content: \"\";\n    position: absolute; inset: 0; z-index: 1; pointer-events: none;\n    background:\n        linear-gradient(180deg,\n            rgba(10,11,15,0) 82%,\n            rgba(10,11,15,0.72) 94%,\n            rgba(10,11,15,1) 100%),\n        linear-gradient(90deg,\n            rgba(8,8,8,0.82) 0%,\n            rgba(8,8,8,0.35) 20%,\n            rgba(8,8,8,0.10) 38%,\n            rgba(8,8,8,0.10) 62%,\n            rgba(8,8,8,0.35) 80%,\n            rgba(8,8,8,0.82) 100%),\n        radial-gradient(70% 58% at 50% 48%,\n            rgba(8,8,8,0) 0%,\n            rgba(8,8,8,0.30) 68%,\n            rgba(8,8,8,0.72) 100%);\n}\n\n/* The 1px bottom hairline is right for the purple hero, which sits on a different colour\n   from the section below it. In gold they are the same value, so a line across the join is\n   the only thing that would make the seam visible. */\n.aoc-hero.theme-gold::after { display: none; }\n\n/* Brand lockup matches SiteFooter: blue icon-only mark, wordmark in plain white. The\n   wordmark and the stat values previously shared one gradient, so nothing in the type said\n   which mattered. Gold now means exactly one thing here: the numbers. */\n.aoc-hero.theme-gold .aoc-hero-brand-name {\n    background: none;\n    -webkit-text-fill-color: #FFFFFF;\n    background-clip: initial;\n    -webkit-background-clip: initial;\n    color: #FFFFFF;\n}\n.aoc-hero.theme-gold .aoc-hero-logo { height: 34px !important; }\n.aoc-hero.theme-gold .aoc-hero-brand { gap: 10px; }\n\n.aoc-hero.theme-gold .aoc-hero-stat-value {\n    background: ${GRADIENT_GOLD};\n    -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n}\n.aoc-hero.theme-gold .aoc-hero-stat-label { max-width: 132px; }\n\n/* The eyebrow is the only gold text in the hero besides the numbers, and it sits directly\n   above the headline, so it is deliberately quiet: gold at 62% rather than full strength.\n   At full it competes with the stat values, which are the thing gold is supposed to mean. */\n.aoc-hero.theme-gold .aoc-hero-eyebrow { color: rgba(240,185,30,0.62); }\n.aoc-hero.theme-gold .aoc-hero-note { color: rgba(255,255,255,0.42); }\n\n/* Glow cut hard, not recoloured. Purple glow behind white type read as atmosphere; gold glow\n   at the same strength reads as a smudge, and there is a real image behind the headline now\n   doing that job. */\n.aoc-hero.theme-gold .aoc-hero-headline { text-shadow: 0 2px 30px rgba(0,0,0,0.85); }\n\n/* The five 26px student photos read as glitch artifacts against a busy dark photograph. */\n.aoc-hero.theme-gold .aoc-hero-scroll-thumbs { display: none; }\n.aoc-hero.theme-gold .aoc-hero-scroll-hint { bottom: 28px; gap: 6px; }\n\n/* ── Wide screens (>=1600px), GOLD ONLY ──\n   The base rules top out at a 1440-class display: the headline clamps at 64px and the stat\n   value is a flat 23px that never grows. Scoped to gold because the base rules are live. */\n@media (min-width: 1600px) {\n    .aoc-hero.theme-gold { padding: 128px 24px 116px; }\n    .aoc-hero.theme-gold .aoc-hero-inner { max-width: 900px; }\n    .aoc-hero.theme-gold .aoc-hero-logo { height: 40px !important; }\n    .aoc-hero.theme-gold .aoc-hero-brand-name { font-size: 20px; }\n    .aoc-hero.theme-gold .aoc-hero-brand { margin-bottom: 52px; }\n    .aoc-hero.theme-gold .aoc-hero-headline { font-size: 76px; }\n    .aoc-hero.theme-gold .aoc-hero-sub { font-size: 23px; max-width: 640px; }\n    .aoc-hero.theme-gold .aoc-hero-eyebrow { font-size: 13px; margin-bottom: 22px; }\n    .aoc-hero.theme-gold .aoc-hero-note { font-size: 14px; margin-top: 22px; max-width: 480px; }\n    .aoc-hero.theme-gold .aoc-hero-stats { gap: 62px; }\n    .aoc-hero.theme-gold .aoc-hero-stat-value { font-size: 30px; }\n    .aoc-hero.theme-gold .aoc-hero-stat-label { font-size: 12px; max-width: 162px; }\n    .aoc-hero.theme-gold .aoc-glow-btn { padding: 17px 40px; }\n    .aoc-hero.theme-gold .aoc-glow-btn-inner { font-size: 17.5px; }\n    .aoc-hero.theme-gold .aoc-hero-scroll-label { font-size: 12px; }\n    .aoc-hero.theme-gold .aoc-hero-inner.explain-first .aoc-hero-headline { margin-bottom: 26px; }\n    .aoc-hero.theme-gold .aoc-hero-inner.explain-first .aoc-hero-sub { margin-bottom: 42px; }\n    .aoc-hero.theme-gold .aoc-hero-inner.explain-first .aoc-hero-stats { margin-bottom: 56px; }\n}\n\n@media (min-width: 2200px) {\n    .aoc-hero.theme-gold .aoc-hero-inner { max-width: 1020px; }\n    .aoc-hero.theme-gold .aoc-hero-headline { font-size: 88px; }\n    .aoc-hero.theme-gold .aoc-hero-sub { font-size: 25px; max-width: 700px; }\n    .aoc-hero.theme-gold .aoc-hero-stat-value { font-size: 34px; }\n    .aoc-hero.theme-gold .aoc-hero-stat-label { font-size: 13px; max-width: 180px; }\n    .aoc-hero.theme-gold .aoc-hero-stats { gap: 72px; }\n}\n\n/* ── Tablet (769-1024px) ── */\n@media (max-width: 1024px) and (min-width: 769px) {\n    .aoc-hero { padding: 92px 40px 84px; }\n    .aoc-hero-brand { margin-bottom: 36px; }\n    .aoc-hero-headline { margin-bottom: 36px; }\n    .aoc-hero-stats { gap: 30px; margin-bottom: 28px; }\n    .aoc-hero-stat-value { font-size: 21px; }\n    .aoc-hero-stat-label { max-width: 96px; }\n    .aoc-hero-sub { margin-bottom: 40px; max-width: 460px; }\n    .aoc-hero-inner.explain-first .aoc-hero-headline { margin-bottom: 18px; }\n    .aoc-hero-inner.explain-first .aoc-hero-sub { margin-bottom: 30px; }\n    .aoc-hero-inner.explain-first .aoc-hero-stats { margin-bottom: 40px; }\n    .aoc-hero.theme-gold { padding: 84px 40px 78px; }\n    .aoc-hero.theme-gold .aoc-hero-logo { height: 31px !important; }\n    .aoc-hero.theme-gold .aoc-hero-stat-label { max-width: 116px; }\n}\n\n@media (max-width: 768px) {\n    /* min-height, not height. The stats block is roughly twice as tall as the one-line\n       version it replaces, and a locked 100dvh with overflow:hidden would clip the CTA off\n       the bottom on shorter phones. */\n    .aoc-hero {\n        min-height: 100dvh;\n        padding: 72px 20px 80px;\n        justify-content: center;\n    }\n    .aoc-hero-logo { height: 30px !important; }\n    .aoc-hero-brand-name { font-size: 13px; }\n    .aoc-hero-brand { gap: 6px; margin-bottom: 28px; }\n    .aoc-hero-headline { font-size: clamp(34px,9vw,48px); letter-spacing: -0.025em; margin-bottom: 28px; }\n\n    /* Numbers on their own line at display size. A previous pass put value and label side by\n       side at 18px -- tidy, but it read as a caption and got skimmed. The problem was scale,\n       not arrangement. */\n    .aoc-hero-stats {\n        display: flex; flex-direction: column; align-items: center;\n        gap: 20px; margin: 0 0 32px; width: 100%;\n    }\n    .aoc-hero-stat { flex-direction: column; align-items: center; gap: 3px; }\n    .aoc-hero-stat-value { font-size: 38px; letter-spacing: -0.03em; line-height: 1.05; }\n    .aoc-hero-stat-label { font-size: 10.5px; letter-spacing: 0.08em; max-width: none; white-space: nowrap; }\n\n    .aoc-hero-eyebrow { font-size: 10.5px; letter-spacing: 0.14em; margin-bottom: 14px; }\n    .aoc-hero-note { font-size: 12px; margin-top: 16px; max-width: 300px; }\n    .aoc-hero-sub { font-size: 15px; line-height: 1.55; margin-bottom: 36px; max-width: 100%; }\n    .aoc-cta-btn { font-size: 15px; padding: 13px 28px; }\n    .aoc-glow-btn { padding: 14px 30px; }\n    .aoc-glow-btn-inner { font-size: 15px; }\n    .aoc-hero-scroll-hint { bottom: 24px; }\n    .aoc-hero-scroll-label { font-size: 10px; }\n\n    .aoc-hero-inner.explain-first .aoc-hero-headline { margin-bottom: 18px; }\n    .aoc-hero-inner.explain-first .aoc-hero-sub { margin-bottom: 30px; }\n    .aoc-hero-inner.explain-first .aoc-hero-stats { margin-bottom: 36px; }\n\n    .aoc-hero.theme-gold { padding: 68px 20px 74px; }\n    .aoc-hero.theme-gold .aoc-hero-logo { height: 27px !important; }\n    .aoc-hero.theme-gold .aoc-hero-brand { gap: 8px; }\n    .aoc-hero.theme-gold .aoc-hero-stat-label { max-width: none; }\n\n    /* Tighter stagger on a phone. The column is taller here (stats stacked, not in a row), so\n       the same 110ms step spreads the reveal over noticeably longer. */\n    .aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(2) { transition-delay: 0.07s; }\n    .aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(3) { transition-delay: 0.14s; }\n    .aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(4) { transition-delay: 0.21s; }\n    .aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(5) { transition-delay: 0.28s; }\n    .aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(6) { transition-delay: 0.35s; }\n    .aoc-hero.theme-gold.is-in .aoc-hero-inner > *:nth-child(7) { transition-delay: 0.42s; }\n\n    /* ── Phone background ──\n       The DESKTOP still is 16:9 with its clear zone running HORIZONTALLY across the middle.\n       A phone crops to roughly the centre column, which either loses both figures or lands\n       one behind the copy. So it is dropped below 768 along with its vignette. */\n    .aoc-hero.theme-gold .aoc-hero-bgimg { display: none; }\n    .aoc-hero.theme-gold::before { display: none; }\n    /* No still on a phone by default, so there is nothing to breathe. Stop the animation\n       rather than scaling an empty box forever. */\n    .aoc-hero.theme-gold .aoc-hero-bgwrap { animation: none; }\n\n    /* ...unless a purpose-made 9:16 still is supplied. That image is composed the other way\n       round: empty upper two thirds, both figures low in the frame. So it is anchored to the\n       BOTTOM, its vignette is weighted to the bottom too, and the reveal scales from the\n       bottom rather than the centre -- scaling a bottom-anchored image about its middle\n       pushes the subjects off the edge of the frame.\n\n       ── WHY THE LAYER STOPS SHORT OF THE SECTION BOTTOM ──\n       The figures sat too low in the viewport, and background-position could not lift them:\n       a phone viewport is roughly 9:19.5 while the still is 9:16, so under cover the image\n       is HEIGHT-constrained -- it fills the height exactly and overflows sideways. With no\n       vertical overflow there is nothing for background-position to slide, so center bottom\n       and center top render identically. The only vertical lever left is the size of the box\n       itself.\n\n       So the layer ends --mbg-lift above the section floor. The image still fills that\n       shorter box under cover, which raises everything in it by the same amount, and the\n       strip that opens up underneath is flat ground already covered by the vignette (its\n       last stop is opaque, and it is the same #0A0B0F as the section, so no seam shows).\n\n       Cost: the figures also shrink by that percentage, since the box drives the cover\n       scale. At 8% that is not perceptible. Much past 12% it is, and the picture starts\n       reading as a band across the top rather than a background. Tune --mbg-lift, never the\n       background-position. */\n    .aoc-hero.theme-gold.has-mbg {\n        --mbg-lift: 8%;\n    }\n    /* With a phone still supplied there IS something to breathe, but it scales from the\n       BOTTOM: the image is anchored there, and scaling it about its middle pushes the figures\n       off the bottom of the frame. Amplitude halved again, to 0.9%. The portrait still is\n       height-constrained under cover, so the same percentage moves the subjects visibly\n       further than it does on a desktop crop. */\n    .aoc-hero.theme-gold.has-mbg .aoc-hero-bgwrap {\n        animation: aoc-breathe-sm 38s ease-in-out 3.2s infinite;\n        transform-origin: center bottom;\n    }\n    @keyframes aoc-breathe-sm {\n        0%, 100% { transform: scale(1); }\n        50%      { transform: scale(1.009); }\n    }\n    .aoc-hero.theme-gold.has-mbg .aoc-hero-bgimg {\n        display: block;\n        inset: 0 0 var(--mbg-lift) 0;\n        background-image: var(--aoc-hero-mbg);\n        background-position: center bottom;\n        transform-origin: center bottom;\n    }\n    /* Reaches full opacity at 92%, above the layer's new bottom edge, so the join between the\n       photograph and the ground below it is never visible. */\n    .aoc-hero.theme-gold.has-mbg::before {\n        display: block;\n        background:\n            linear-gradient(180deg,\n                rgba(10,11,15,0.55) 0%,\n                rgba(10,11,15,0.30) 26%,\n                rgba(10,11,15,0.42) 52%,\n                rgba(10,11,15,0.86) 80%,\n                rgba(10,11,15,1) 92%);\n    }\n}\n\n/* Final state, no transition. A shortened reveal is still a reveal, and this one gates\n   visibility -- so it must be forced on, not merely sped up. */\n@media (prefers-reduced-motion: reduce) {\n    .aoc-bar { animation: none; }\n    .aoc-hero-chevron { animation: none; }\n    .aoc-hero-stats { animation: none; }\n    .aoc-hero-scroll-hint { animation: none; opacity: 1 !important; }\n    .aoc-hero.theme-gold .aoc-hero-inner > * {\n        opacity: 1; transform: none; transition: none !important;\n    }\n    .aoc-hero.theme-gold .aoc-hero-bgimg {\n        opacity: 1; transform: none; transition: none !important;\n    }\n    /* Breathing is decoration, so unlike the reveal it is switched off rather than forced to\n       a final state. */\n    .aoc-hero.theme-gold .aoc-hero-bgwrap { animation: none !important; transform: none !important; }\n}\n`;function HoverCTAButton({label,anchorId}){const listening=useRef(false);const lastAt=useRef(0);const[circles,setCircles]=useState([]);const addCircle=useCallback((x,y)=>{const id=Date.now()+Math.random();setCircles(p=>[...p,{id,x,y,phase:\"\"}]);requestAnimationFrame(()=>setCircles(p=>p.map(c=>c.id===id?{...c,phase:\"fi\"}:c)));setTimeout(()=>setCircles(p=>p.map(c=>c.id===id?{...c,phase:\"fo\"}:c)),900);setTimeout(()=>setCircles(p=>p.filter(c=>c.id!==id)),2200);},[]);const onMove=useCallback(e=>{if(!listening.current)return;const now=Date.now();if(now-lastAt.current<90)return;lastAt.current=now;const r=e.currentTarget.getBoundingClientRect();addCircle(e.clientX-r.left,e.clientY-r.top);},[addCircle]);const onClick=useCallback(()=>{trackHeroCTA(label);const target=document.getElementById(anchorId);if(target)target.scrollIntoView({behavior:\"smooth\",block:\"start\"});else window.scrollBy({top:window.innerHeight,behavior:\"smooth\"});},[label,anchorId]);return /*#__PURE__*/_jsxs(\"button\",{className:\"aoc-cta-btn\",onPointerEnter:()=>{listening.current=true;},onPointerLeave:()=>{listening.current=false;},onPointerMove:onMove,onClick:onClick,children:[circles.map(({id,x,y,phase})=>/*#__PURE__*/_jsx(\"span\",{className:`aoc-cta-trail${phase?` ${phase}`:\"\"}`,style:{left:x,top:y}},id)),label]});}// ─── Glow CTA Button (gold theme) ────────────────────────────────────────────\n// Same click behaviour and the same analytics event as the purple one, so swapping themes\n// does not quietly change what gets tracked.\nfunction GlowCTAButton({label,anchorId}){const onClick=useCallback(()=>{trackHeroCTA(label);const target=document.getElementById(anchorId);if(target)target.scrollIntoView({behavior:\"smooth\",block:\"start\"});else window.scrollBy({top:window.innerHeight,behavior:\"smooth\"});},[label,anchorId]);return /*#__PURE__*/_jsxs(\"button\",{className:\"aoc-glow-btn\",onClick:onClick,children:[/*#__PURE__*/_jsx(\"span\",{className:\"aoc-glow-btn-glow\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsx(\"span\",{className:\"aoc-glow-btn-ring\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsxs(\"span\",{className:\"aoc-glow-btn-inner\",children:[label,/*#__PURE__*/_jsx(\"svg\",{className:\"aoc-glow-btn-arrow\",width:\"14\",height:\"14\",viewBox:\"0 0 16 16\",fill:\"none\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M8 2.5V13M8 13L12.5 8.5M8 13L3.5 8.5\",stroke:\"rgba(255,255,255,0.92)\",strokeWidth:\"1.7\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})]})]});}// ─── Proof stats row ─────────────────────────────────────────────────────\nfunction StatValue({target,decimals,suffix,prefix,active,delay}){const value=useCountUp(target,active,delay);return /*#__PURE__*/_jsx(\"span\",{className:\"aoc-hero-stat-value\",children:formatStat(value,decimals,suffix,prefix)});}function HeroStats({active,gold}){return /*#__PURE__*/_jsx(\"div\",{className:\"aoc-hero-stats\",children:STAT_CARDS.map((s,i)=>/*#__PURE__*/_jsxs(\"div\",{className:\"aoc-hero-stat\",children:[/*#__PURE__*/_jsx(StatValue,{target:s.target,decimals:s.decimals,suffix:s.suffix,prefix:s.prefix,active:active,delay:i*110}),/*#__PURE__*/_jsx(\"span\",{className:\"aoc-hero-stat-label\",children:gold?s.short:s.label})]},s.label))});}// ─── Main component ───────────────────────────────────────────────────────────\nexport default function TestimonialsHero({logoUrl=AOC_LOGO,brandName=\"The Art of Crypto\",eyebrow=\"\",headline=\"Real Wins.\\nReal People.\",subheading=\"Traders inside the Blueprint — going from inconsistent and undisciplined, to funded, profitable, and free.\",showScrollHint=true,ctaLabel=\"See the Proof\",ctaAnchor=\"results\",ctaNote=\"\",scrollHintLabel=\"See who got funded\",explainFirst=false,theme=\"purple\",backgroundImage=\"\",backgroundImageMobile=\"\",mobileImageLift=8,breathing=true}){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const gold=theme===\"gold\";// Gates the stat count-up. Flips on mount; there is nothing to wait for now that the\n// stylesheet renders inline rather than being injected into head from an effect.\nconst[loaded,setLoaded]=useState(isCanvas);// Separate from `loaded` so the reveal has one frame at its start state to transition\n// FROM. Set immediately on the Framer canvas, where there is no load sequence -- otherwise\n// the section would sit invisible while someone is trying to edit it.\nconst[revealed,setRevealed]=useState(isCanvas);const accent=gold?GOLD:PURPLE;// The overlay only serves the purple theme now. See the note at the top of the file.\nconst useOverlay=!gold&&!isCanvas;// Gold swaps the wide lockup for the footer's icon-only mark, so the wordmark is not\n// printed twice. Compared against AOC_LOGO rather than checked for falsiness: logoUrl\n// defaults to AOC_LOGO, so a plain `||` could never reach the gold branch.\nconst resolvedLogo=gold&&logoUrl===AOC_LOGO?AOC_MARK:logoUrl;const desktopBg=gold&&backgroundImage?backgroundImage:\"\";const mobileBg=gold&&backgroundImageMobile?backgroundImageMobile:\"\";useEffect(()=>{setLoaded(true);},[]);useEffect(()=>{if(revealed)return;const t=setTimeout(()=>setRevealed(true),REVEAL_DELAY_MS);return()=>clearTimeout(t);},[revealed]);const center=(NUM_BARS-1)/2;const bars=Array.from({length:NUM_BARS},(_,i)=>{const t=Math.abs(i-center)/center;const initialScale=.15+.8*Math.pow(t,1.3);return{initialScale,delay:`${i*.15}s`};});const resolvedLabel=ctaLabel&&ctaLabel.trim()||\"See the Proof\";const resolvedAnchor=ctaAnchor&&ctaAnchor.trim()||\"results\";const scrollToAnchor=useCallback(()=>{const target=document.getElementById(resolvedAnchor);if(target)target.scrollIntoView({behavior:\"smooth\",block:\"start\"});else window.scrollBy({top:window.innerHeight,behavior:\"smooth\"});},[resolvedAnchor]);const sub=subheading?/*#__PURE__*/_jsx(\"p\",{className:\"aoc-hero-sub\",children:subheading}):null;// Both stills are handed over as custom properties rather than as background-image, so the\n// media query can choose between them. They are consumed by .aoc-hero-bgimg, which is a\n// real element and therefore transformable -- a background-image is not.\nconst heroVars={};if(desktopBg)heroVars[\"--aoc-hero-bg\"]=`url(${desktopBg})`;if(mobileBg){heroVars[\"--aoc-hero-mbg\"]=`url(${mobileBg})`;// Only read inside the phone media query. Clamped rather than trusted: the stylesheet\n// assumes the vignette reaches full opacity above the layer's bottom edge, and a large\n// enough value would push that edge up past the gradient and expose a hard join.\nconst lift=Math.max(0,Math.min(14,mobileImageLift));heroVars[\"--mbg-lift\"]=`${lift}%`;}const heroStyle=heroVars;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:css}),useOverlay&&/*#__PURE__*/_jsx(LoadingOverlay,{visible:!loaded,logoUrl:resolvedLogo,accent:accent}),/*#__PURE__*/_jsxs(\"div\",{className:`aoc-hero${gold?\" theme-gold\":\"\"}${revealed?\" is-in\":\"\"}${mobileBg?\" has-mbg\":\"\"}`,style:desktopBg||mobileBg?heroStyle:undefined,children:[gold&&(desktopBg||mobileBg)?/*#__PURE__*/_jsx(\"div\",{className:\"aoc-hero-bgwrap\",\"aria-hidden\":\"true\",style:breathing?undefined:{animation:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{className:\"aoc-hero-bgimg\"})}):null,!gold&&/*#__PURE__*/_jsx(\"div\",{className:\"aoc-bars\",children:bars.map((b,i)=>/*#__PURE__*/_jsx(\"div\",{className:\"aoc-bar\",style:{\"--initial-scale\":b.initialScale,animationDelay:b.delay,background:`linear-gradient(to top, ${BAR_COLOR}, transparent)`}},i))}),/*#__PURE__*/_jsxs(\"div\",{className:`aoc-hero-inner${explainFirst?\" explain-first\":\"\"}`,children:[/*#__PURE__*/_jsxs(\"div\",{className:\"aoc-hero-brand\",children:[/*#__PURE__*/_jsx(\"img\",{className:\"aoc-hero-logo\",src:resolvedLogo,alt:\"AOC\",draggable:false,style:{display:\"block\",width:\"auto\",height:\"44px\",objectFit:\"contain\",flexShrink:0,userSelect:\"none\"}}),brandName&&/*#__PURE__*/_jsx(\"p\",{className:\"aoc-hero-brand-name\",children:brandName})]}),eyebrow&&eyebrow.trim()?/*#__PURE__*/_jsx(\"p\",{className:\"aoc-hero-eyebrow\",children:eyebrow}):null,/*#__PURE__*/_jsx(\"h1\",{className:\"aoc-hero-headline\",children:headline}),explainFirst?sub:null,/*#__PURE__*/_jsx(HeroStats,{active:loaded,gold:gold}),explainFirst?null:sub,/*#__PURE__*/_jsx(\"div\",{className:\"aoc-hero-cta\",children:gold?/*#__PURE__*/_jsx(GlowCTAButton,{label:resolvedLabel,anchorId:resolvedAnchor}):/*#__PURE__*/_jsx(HoverCTAButton,{label:resolvedLabel,anchorId:resolvedAnchor})}),ctaNote&&ctaNote.trim()?/*#__PURE__*/_jsx(\"p\",{className:\"aoc-hero-note\",children:ctaNote}):null]}),showScrollHint&&/*#__PURE__*/_jsxs(\"div\",{className:\"aoc-hero-scroll-hint\",onClick:scrollToAnchor,style:{opacity:0},children:[/*#__PURE__*/_jsx(\"div\",{className:\"aoc-hero-scroll-thumbs\",children:TEASER_IMGS.map((src,i)=>/*#__PURE__*/_jsx(\"img\",{className:\"aoc-hero-scroll-thumb\",src:src,alt:\"\",draggable:false,style:{width:26,height:26,borderRadius:6,objectFit:\"cover\",flexShrink:0}},i))}),scrollHintLabel&&scrollHintLabel.trim()?/*#__PURE__*/_jsx(\"p\",{className:\"aoc-hero-scroll-label\",children:scrollHintLabel}):null,/*#__PURE__*/_jsxs(\"svg\",{className:\"aoc-hero-chevron\",width:\"16\",height:\"10\",viewBox:\"0 0 16 10\",fill:\"none\",children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsxs(\"linearGradient\",{id:gold?\"cg3g\":\"cg3\",x1:\"0\",y1:\"0\",x2:\"1\",y2:\"0\",children:[/*#__PURE__*/_jsx(\"stop\",{stopColor:gold?GOLD:PURPLE}),/*#__PURE__*/_jsx(\"stop\",{offset:\"0.5\",stopColor:GOLD_BRIGHT}),/*#__PURE__*/_jsx(\"stop\",{offset:\"1\",stopColor:gold?GOLD_DEEP:BLUE})]})}),/*#__PURE__*/_jsx(\"path\",{d:\"M1 1L8 8L15 1\",stroke:`url(#${gold?\"cg3g\":\"cg3\"})`,strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})]})]})]})]});}addPropertyControls(TestimonialsHero,{logoUrl:{type:ControlType.Image,title:\"Logo\"},brandName:{type:ControlType.String,title:\"Brand Name\",defaultValue:\"The Art of Crypto\"},eyebrow:{type:ControlType.String,title:\"Eyebrow\",defaultValue:\"\",description:\"Small caps line above the headline. Blank hides it. Live /wins leaves it blank.\"},headline:{type:ControlType.String,title:\"Headline\",defaultValue:\"Real Wins.\\nReal People.\",displayTextArea:true},subheading:{type:ControlType.String,title:\"Subheading\",defaultValue:\"Traders inside the Blueprint — going from inconsistent and undisciplined, to funded, profitable, and free.\",displayTextArea:true},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"purple\",\"gold\"],optionTitles:[\"Purple (live)\",\"Gold (rework)\"],defaultValue:\"purple\",description:\"Gold is the /wins rework: gold accents, background stills with a slow reveal, glow CTA, short stat labels, load stagger, wide-screen sizing, no loading overlay. Live /wins stays on purple.\"},backgroundImage:{type:ControlType.String,title:\"Background (desktop)\",defaultValue:\"\",description:\"Landscape 16:9 still. Gold theme only. Fades up and eases out of a 6% zoom on load. Replaced below 768px by the mobile still.\"},backgroundImageMobile:{type:ControlType.String,title:\"Background (mobile)\",defaultValue:\"\",description:\"Portrait 9:16 still, used below 768px. Compose it with the subjects LOW and the upper two thirds empty: it is anchored to the bottom and the copy sits over the clear area. Leave blank to fall back to flat colour.\"},mobileImageLift:{type:ControlType.Number,title:\"Mobile lift\",defaultValue:8,min:0,max:14,step:1,unit:\"%\",displayStepper:true,description:\"Raises the phone still off the bottom of the section. The only vertical control that works: under cover the image already fills the height exactly, so background-position has no slack. Subjects shrink by the same amount, so keep it small.\"},explainFirst:{type:ControlType.Boolean,title:\"Explain first\",defaultValue:false,enabledTitle:\"Sub above\",disabledTitle:\"Sub below\",description:\"Subheading above the stats. On for cold traffic — the numbers mean nothing to a stranger until something explains them.\"},breathing:{type:ControlType.Boolean,title:\"Breathing\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"A very slow scale on the background still, 34s a cycle at 1.6%. Deliberately below the threshold at which the eye tracks motion: it should be felt, not watched. Gold theme only, halved again on phones, off under reduced motion.\"},showScrollHint:{type:ControlType.Boolean,title:\"Scroll Hint\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},ctaLabel:{type:ControlType.String,title:\"CTA Label\",defaultValue:\"See the Proof\"},ctaAnchor:{type:ControlType.String,title:\"CTA Anchor\",defaultValue:\"results\"},ctaNote:{type:ControlType.String,title:\"CTA Note\",defaultValue:\"\",description:\"Quiet line under the button, for a disclaimer. Blank hides it.\",displayTextArea:true},scrollHintLabel:{type:ControlType.String,title:\"Hint Label\",defaultValue:\"See who got funded\",description:\"Text beside the bouncing chevron. Blank leaves the chevron alone, which is what you want once the eyebrow and CTA note are both set.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TestimonialsHero\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HeroSection.map"],"mappings":"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"}