/* FODL FRAMEWORK — the six-layer process, directly below the CLIENT VOICES marquee.
   Interaction ported from fragment-marketing-landing-pages.webflow.io/ui-kit/accordions
   ("Static Accordions"): a stack of rows, each opening to copy + a checklist + a CTA,
   the "+" rotating 135deg into an x. Theirs is pure Webflow IX2 — DROPDOWN_OPEN fires
   action list a-13, which flips display none->block and tweens an inline height from
   0px to AUTO alongside opacity and the icon rotation, all 500ms outQuad. None of that
   machinery comes across: the panel here is grid-template-rows 0fr -> 1fr, which is the
   same result with nothing measured, so it survives a resize or a late font load. Their
   500ms is kept; the easing moves to the site's own cubic-bezier(.075,.82,.165,1) (the
   curve .fpr-item and .fway-row already grow on — and, as it happens, the one their own
   button uses). Their single-open is an accident of Webflow dropdowns closing on any
   outside click, so open and close animate at once and the stack jumps mid-swap; ours
   closes before it opens.
   Surfaces are the CLIENT VOICES card directly above (fodl-voices.css) so the two
   sections read as one system, the check chip is that section's .fvo-avatar, and both
   icons are Material Symbols inlined on currentColor — the same set and viewBox the
   .fway-row arrows already use, so no foreign asset enters the page.
   Motion is CSS; the inline script (ffw block at the end of index.html) only toggles a
   class, gates the video and fires the entrance. */

.ffw-section{background-color:#0A0A0A;position:relative;overflow:hidden}
/* voices above ends on 6em of its own band padding, so the lead-in is trimmed; the
   tail matches the 7em the problems / way sections carry into the block below */
.ffw-section .padding-section-v{padding-top:5em;padding-bottom:7em}

/* --- header: centred, per the comp. The bracket eyebrow is the site's own
   ([ the problem ], [ the fodl way ]) at the .fpr-tag / .fway-tag spec, centred
   instead of right-aligned. The template's global h2 rule uppercases and sets
   line-height .8, so both are restated here. --- */
.ffw-header{grid-row-gap:1.45rem;flex-flow:column;align-items:center;margin-bottom:4.5em;text-align:center;display:flex}
.ffw-tag .labels-block{justify-content:center;grid-column-gap:.55em;grid-row-gap:.55em;font-size:.85rem;padding-bottom:0}
.ffw-tag .label-text{color:#eeb603}
.ffw-title{color:#f0f0f0;max-width:22ch;margin:0;font-family:"Funnel Display",sans-serif;font-size:2.6rem;font-weight:800;letter-spacing:-.03em;line-height:1.08;text-transform:none}
.ffw-points{grid-column-gap:2.2em;grid-row-gap:.7em;flex-flow:row wrap;justify-content:center;align-items:center;margin:.15rem 0 0;padding:0;list-style:none;display:flex}
.ffw-point{grid-column-gap:.7em;color:#dcdcdccc;align-items:center;font-family:Geist,sans-serif;font-size:.95rem;font-weight:500;letter-spacing:-.02em;line-height:1.4;display:flex}

/* --- check chip: the .fvo-avatar circle from the section above, at icon scale.
   Fragment's is rgba(255,255,255,.06) inside a .19 hairline — ours is within a hair
   of that already, so the borrowed component lands on our own token. --- */
.ffw-chip{background-color:#dcdcdc14;border:1px solid #dcdcdc2e;border-radius:50%;flex:none;justify-content:center;align-items:center;width:1.7rem;height:1.7rem;display:flex}
.ffw-ico{color:#EEB603;flex:none;width:.85rem;height:.85rem;display:block}

/* --- layout: media | accordion. The columns stretch, so the frame tracks the stack's
   height and the two stay on one baseline as panels open and close. --- */
.ffw-layout{grid-column-gap:3.5em;grid-row-gap:3em;grid-template-columns:1fr 1.05fr;align-items:stretch;display:grid;position:relative}

/* --- media: the comp's glowing frame. The halo is the .fway-halo construction; the
   yellow-tinted hairline plus a soft spill is what reads as the glow itself. --- */
.ffw-media-col{display:flex;position:relative}
.ffw-glow{background:radial-gradient(50% 45% at 50% 50%,#eeb6031f 0%,#eeb60300 70%);pointer-events:none;position:absolute;inset:-14% -12%}
.ffw-media{border:1px solid #eeb60359;border-radius:12px;flex:1;min-height:21rem;position:relative;overflow:hidden;box-shadow:0 0 2.5rem #eeb60318,0 1.2rem 3.5rem #00000073}
.ffw-video{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}
/* the footage is bright at the base; the veil is the site's convention for holding a
   dark edge under a light frame */
.ffw-media-veil{background:linear-gradient(to top,#0a0a0ae0 0%,#0a0a0a40 45%,#0a0a0a00 72%);pointer-events:none;position:absolute;inset:0}

/* --- accordion --- */
.ffw-acc{grid-row-gap:.6rem;flex-flow:column;display:flex}
.ffw-item{background-color:#dcdcdc08;border:1px solid #dcdcdc24;border-radius:12px;overflow:hidden}
.ffw-item:hover{background-color:#dcdcdc0f;border-color:#eeb60359}
.ffw-item.is-open{background-color:#dcdcdc0f;border-color:#eeb60359}
/* a real <button>, so keyboard and AT behaviour come for free; the font/colour resets
   are what stop the UA stylesheet showing through */
.ffw-head{grid-column-gap:1em;cursor:pointer;color:inherit;text-align:left;background:none;border:0;border-radius:12px;align-items:center;width:100%;padding:1.15rem 1.35rem;font:inherit;display:flex}
.ffw-head:focus-visible{outline:2px solid #EEB603;outline-offset:-3px}
.ffw-num{color:#dcdcdc80;flex:none;font-family:Geist,sans-serif;font-size:1rem;font-weight:500;letter-spacing:-.01em;line-height:1.35}
.ffw-label{color:#f0f0f0;flex:1;font-family:Geist,sans-serif;font-size:1.05rem;font-weight:600;letter-spacing:-.02em;line-height:1.35}
/* Material Symbols "add" — 135deg is Fragment's own figure: a plus lands as an x,
   not a minus */
.ffw-plus{color:#dcdcdc80;flex:none;width:1.15rem;height:1.15rem;display:block}
.ffw-item.is-open .ffw-num,.ffw-item.is-open .ffw-label{color:#EEB603}
.ffw-item.is-open .ffw-plus{color:#EEB603;transform:rotate(135deg)}

/* the 0fr/1fr pair is the whole collapse — no measured height, so a resize or a font
   swapping in mid-life re-lays out on its own */
.ffw-panel{opacity:0;grid-template-rows:0fr;display:grid}
.ffw-item.is-open .ffw-panel{opacity:1;grid-template-rows:1fr}
/* min-height:0 lets the grid row actually reach zero; visibility keeps the closed
   panel out of the a11y tree and off the tab order, held until the collapse finishes */
.ffw-panel-inner{visibility:hidden;min-height:0;overflow:hidden}
.ffw-item.is-open .ffw-panel-inner{visibility:visible}
/* padding lives on the body, not the clipped inner — on the inner it would survive
   the 0fr row and hold the panel open by its own padding box */
.ffw-panel-body{grid-row-gap:1.15rem;flex-flow:column;align-items:flex-start;padding:0 1.35rem 1.45rem;display:flex}
.ffw-copy{color:#dcdcdccc;margin:0;font-family:Geist,sans-serif;font-size:1rem;font-weight:500;letter-spacing:-.03em;line-height:1.7}
.ffw-list{grid-row-gap:.55rem;flex-flow:column;align-items:flex-start;margin:0;padding:0;list-style:none;display:flex}
.ffw-list-item{grid-column-gap:.75em;color:#dcdcdccc;align-items:center;font-family:Geist,sans-serif;font-size:.95rem;font-weight:500;letter-spacing:-.02em;line-height:1.4;display:flex}

/* --- CTA: the .fpw-btn ghost chip already on the page (THE CRAFT / THE PROOF) —
   yellow wipe up, label rolling to near-black behind it --- */
.ffw-btn{color:#f0f0f0;border:1px solid #dcdcdc59;margin-top:.25rem;padding:.62em 1.3em .7em;font-family:Geist,sans-serif;font-size:.78rem;font-weight:500;letter-spacing:.05em;line-height:1.2;text-transform:uppercase;text-decoration:none;display:inline-block;position:relative;overflow:hidden}
.ffw-btn:hover{border-color:#EEB603}
.ffw-btn-wipe{background-color:#EEB603;position:absolute;inset:0;transform:translateY(102%)}
.ffw-btn:hover .ffw-btn-wipe{transform:translateY(0)}
.ffw-btn-clip{display:block;position:relative;overflow:hidden}
.ffw-btn-text{display:block;position:relative}
.ffw-btn-text.is-ab{color:#0a0a0a;position:absolute;inset:0;transform:translateY(110%)}
.ffw-btn:hover .ffw-btn-text{transform:translateY(-110%)}
.ffw-btn:hover .ffw-btn-text.is-ab{transform:translateY(0)}

/* --- transitions: Fragment's 500ms on the site's growth curve --- */
.ffw-item,.ffw-num,.ffw-label,.ffw-plus,.ffw-panel{transition:background-color .5s cubic-bezier(.075,.82,.165,1),border-color .5s cubic-bezier(.075,.82,.165,1),color .5s cubic-bezier(.075,.82,.165,1),transform .5s cubic-bezier(.075,.82,.165,1),opacity .5s cubic-bezier(.075,.82,.165,1),grid-template-rows .5s cubic-bezier(.075,.82,.165,1)}
/* visibility flips instantly on open and waits out the collapse on close */
.ffw-panel-inner{transition:visibility 0s linear .5s}
.ffw-item.is-open .ffw-panel-inner{transition-delay:0s}
.ffw-btn,.ffw-btn-wipe,.ffw-btn-text{transition:border-color .2s,transform .3s cubic-bezier(.77,0,.175,1)}
.ffw-btn:hover .ffw-btn-wipe,.ffw-btn:hover .ffw-btn-text{transition-duration:.5s}

/* --- entrance: the .fvo-rows rise from the section above, staggered down the stack
   (script adds .is-in on first intersection) --- */
.ffw-header,.ffw-media-col,.ffw-item{opacity:0;transform:translateY(26px);transition-property:opacity,transform;transition-duration:.9s;transition-timing-function:cubic-bezier(.16,1,.3,1)}
.ffw-section.is-in .ffw-header,.ffw-section.is-in .ffw-media-col,.ffw-section.is-in .ffw-item{opacity:1;transform:none}
/* the row transition is re-declared above for colour/size, so the stagger is set on
   its own property rather than folded into a shorthand */
.ffw-section.is-in .ffw-media-col{transition-delay:.1s}
.ffw-section.is-in .ffw-item:nth-child(1){transition-delay:.1s}
.ffw-section.is-in .ffw-item:nth-child(2){transition-delay:.18s}
.ffw-section.is-in .ffw-item:nth-child(3){transition-delay:.26s}
.ffw-section.is-in .ffw-item:nth-child(4){transition-delay:.34s}
.ffw-section.is-in .ffw-item:nth-child(5){transition-delay:.42s}
.ffw-section.is-in .ffw-item:nth-child(6){transition-delay:.5s}
/* once risen, the row hands its transition back to the colour/size set, or the first
   hover after the entrance would still be running the .9s rise curve */
.ffw-section.is-in .ffw-item{transition-property:background-color,border-color,opacity,transform;transition-duration:.5s,.5s,.9s,.9s;transition-timing-function:cubic-bezier(.075,.82,.165,1),cubic-bezier(.075,.82,.165,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1)}

@media screen and (max-width:991px){
.ffw-section .padding-section-v{padding-top:4em;padding-bottom:5em}
.ffw-header{margin-bottom:3.5em}
.ffw-title{font-size:2rem}
.ffw-layout{grid-column-gap:0;grid-row-gap:2.5em;grid-template-columns:1fr}
.ffw-media{min-height:0;aspect-ratio:4/3}
.ffw-media-col{display:block}
}
@media screen and (max-width:767px){
.ffw-title{font-size:1.7rem}
.ffw-points{grid-column-gap:1.4em}
.ffw-point{font-size:.9rem}
.ffw-head{grid-column-gap:.75em;padding:1rem 1.05rem}
.ffw-label{font-size:.98rem}
.ffw-panel-body{padding:0 1.05rem 1.25rem}
/* touch: no sticky hover fill left behind after a tap (the .fway-row rule) */
.ffw-item:hover{background-color:#dcdcdc08;border-color:#dcdcdc24}
.ffw-item.is-open:hover{background-color:#dcdcdc0f;border-color:#eeb60359}
}
@media screen and (max-width:479px){
.ffw-title{font-size:1.5rem}
.ffw-points{grid-row-gap:.55em;flex-flow:column;align-items:flex-start;text-align:left}
.ffw-media{aspect-ratio:3/2}
.ffw-copy{font-size:.95rem}
}

/* --- reduced motion: panels snap, nothing rises, the video never starts (the script
   leaves it paused on its poster) --- */
@media (prefers-reduced-motion:reduce){
.ffw-item,.ffw-num,.ffw-label,.ffw-plus,.ffw-panel,.ffw-panel-inner,.ffw-btn,.ffw-btn-wipe,.ffw-btn-text,.ffw-header,.ffw-media-col{transition:none}
.ffw-header,.ffw-media-col,.ffw-item{opacity:1;transform:none}
.ffw-section.is-in .ffw-item{transition:none}
}
