/* === DEEP-CMS SELF-HOSTED FONTS (generato da scripts/perf/selfhost-fonts.py) === */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/bricolage-grotesque-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/bricolage-grotesque-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/bricolage-grotesque-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/bricolage-grotesque-500-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/onest-300-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/onest-300-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/onest-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/onest-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/onest-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/onest-500-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/onest-600-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/onest-600-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* === /DEEP-CMS SELF-HOSTED FONTS === */


/* FEBE — foglio unico. Fondo nero pieno, un solo viola per le azioni, giallo per gli accenti.
   Gerarchia per scala e non per peso: titoli a 400, corpo a 200. Niente card, bordi, ombre. */

:root {
  --void: #000000;
  --white: #ffffff;
  --ash: #9a9a9a;
  --mist: #bdbdbd;
  --iris: #8052ff;
  --iris-deep: #6a3fe0;
  --spark: #FFD442;
  --verdant: #15846e;
  --line: rgba(255, 255, 255, 0.14);
  --font: 'Onest', 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-display: 'Bricolage Grotesque', 'Onest', ui-sans-serif, system-ui, sans-serif;
  --wrap: 1280px;
  --radius: 24px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; background: var(--void); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0;
  background: var(--void);
  color: var(--white);
  font-family: var(--font);
  font-weight: 300;
  font-size: 18px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "ss01" on;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 400; line-height: 1.05; margin: 0 0 .4em; font-variation-settings: 'opsz' 96; }
h3, h4 { font-variation-settings: 'opsz' 40; letter-spacing: -0.01em; }
h1 { font-size: clamp(44px, 7.4vw, 96px); letter-spacing: -0.03em; }
h2 { font-size: clamp(34px, 4.6vw, 60px); letter-spacing: -0.025em; }
h3 { font-size: 27px; line-height: 1.1; letter-spacing: -0.01em; }
p { margin: 0 0 1em; }
strong { font-weight: 600; }
.wrap { width: min(var(--wrap), calc(100% - 48px)); margin-inline: auto; }
.eyebrow { font-size: 14px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--spark); margin: 0 0 18px; }
.lede { font-size: 18px; color: var(--mist); max-width: 52ch; }
.section-head { margin-bottom: 60px; }
.section-head h2 { max-width: 20ch; }
.prose p { margin: 0 0 1.1em; }
.prose p:last-child { margin-bottom: 0; }
.prose h2 { font-size: 27px; letter-spacing: -0.01em; margin-top: 1.6em; }
.prose a { color: var(--spark); text-decoration: none; }
.prose a:hover { text-decoration: underline; }

/* Bottoni: un solo viola pieno per l'azione principale */
.btn { display: inline-flex; align-items: center; gap: 8px; padding: 15px 18px; border-radius: 9999px; font-weight: 600; font-size: 14px; letter-spacing: .025em; text-transform: uppercase; text-decoration: none; border: 0; cursor: pointer; line-height: 1.2; transition: background .15s ease, color .15s ease; }
.btn-primary { background: var(--iris); color: var(--white); }
.btn-primary:hover { background: var(--iris-deep); }
.btn-ghost { background: transparent; color: var(--white); padding-inline: 8px; }
.btn-ghost::after { content: '→'; }
.btn-ghost:hover { color: var(--spark); }
.btn-dark { background: transparent; color: var(--white); border: 1px solid var(--line); }
.btn-dark:hover { border-color: var(--white); }
.btn-sm { padding: 12px 16px; }
.text-link { font-size: 14px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; text-decoration: none; color: var(--white); }
.text-link:hover { color: var(--spark); }

/* Evidenziatore giallo: la pennellata si stende quando entra in vista */
mark { color: var(--void); background-color: transparent; background-image: linear-gradient(100deg, rgba(255,212,66,.98) 0%, rgba(255,212,66,.9) 100%); background-repeat: no-repeat; background-size: 0% 100%; background-position: left center; padding: .06em .3em; margin: 0 -.08em; border-radius: .25em .4em .2em .45em; -webkit-box-decoration-break: clone; box-decoration-break: clone; transition: background-size .9s cubic-bezier(.2,.8,.2,1) .25s, color .3s ease .5s; }
mark:not(.in) { color: var(--white); }
mark.in { background-size: 100% 100%; }
@media (prefers-reduced-motion: reduce) { mark, mark:not(.in) { background-size: 100% 100%; color: var(--void); transition: none; } }

/* Reveal */
.reveal { opacity: 0; transform: translateY(16px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } }

/* Particelle: canvas a tutto contenitore */
.particles { display: block; width: 100%; height: 100%; }
.page-field { position: fixed; inset: 0; z-index: 0; pointer-events: none; }
.site-header, main, .site-footer, .blog-shell, .post-shell { position: relative; z-index: 1; }

/* ---------------------------------------------------------------- Header */
.site-header { position: sticky; top: 0; z-index: 50; background: rgba(0,0,0,.72); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.site-header__inner { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px; height: 84px; }
.brand img { width: 96px; height: auto; }
.nav { display: flex; align-items: center; gap: 2px; padding: 5px; border-radius: 9999px; border: 1px solid rgba(255,255,255,.1); background: rgba(255,255,255,.03); }
.nav a { position: relative; display: inline-flex; align-items: center; padding: 9px 16px; border-radius: 9999px; text-decoration: none; font-size: 13px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--ash); transition: color .2s, background .2s; }
.nav a span { position: relative; z-index: 1; }
.nav a::before { content: ''; position: absolute; inset: 0; border-radius: 9999px; background: rgba(255,255,255,.08); opacity: 0; transform: scale(.85); transition: opacity .2s, transform .25s cubic-bezier(.2,.8,.2,1); }
.nav a:hover { color: var(--white); }
.nav a:hover::before { opacity: 1; transform: scale(1); }
.nav a::after { content: ''; position: absolute; left: 50%; bottom: 4px; width: 4px; height: 4px; border-radius: 50%; background: var(--spark); transform: translateX(-50%) scale(0); transition: transform .25s cubic-bezier(.2,.8,.2,1); }
.nav a.is-active { color: var(--white); }
.nav a.is-active::after { transform: translateX(-50%) scale(1); }
.nav a:focus-visible { outline: 2px solid var(--spark); outline-offset: 2px; }
.header-action { display: flex; align-items: center; justify-content: flex-end; gap: 18px; }
.header-action .btn { white-space: nowrap; }
.header-action .btn-primary { box-shadow: 0 0 0 0 rgba(128,82,255,0); transition: background .2s, box-shadow .25s, transform .2s; }
.header-action .btn-primary:hover { box-shadow: 0 0 0 6px rgba(128,82,255,.18); transform: translateY(-1px); }
.burger { display: none; width: 44px; height: 44px; border: 0; background: transparent; padding: 10px; cursor: pointer; flex-direction: column; justify-content: center; gap: 6px; }
.burger span { display: block; height: 1.5px; background: var(--white); transition: transform .2s, opacity .2s; }
.burger.is-open span:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
.burger.is-open span:nth-child(2) { opacity: 0; }
.burger.is-open span:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

.mobile-menu { position: fixed; inset: 84px 0 0 0; z-index: 49; background: var(--void); padding: 30px 24px; display: flex; flex-direction: column; gap: 6px; visibility: hidden; opacity: 0; transform: translateY(-8px); transition: opacity .2s, transform .2s, visibility 0s .2s; }
.mobile-menu.is-open { visibility: visible; opacity: 1; transform: none; transition: opacity .2s, transform .2s; }
.mobile-menu a:not(.btn) { text-decoration: none; font-size: 36px; font-weight: 400; letter-spacing: -0.02em; padding: 12px 0; color: var(--white); }
.mobile-menu .btn { margin-top: 24px; align-self: flex-start; }

@media (max-width: 1100px) {
  .site-header__inner { grid-template-columns: auto 1fr; }
  .nav { display: none; }
  .header-action .btn { display: none; }
  .burger { display: flex; }
}

/* ---------------------------------------------------------------- Sezioni */
.hero, .audience, .method, .path, .people, .reviews, .company, .faq, .posts, .contact, .prose-page { padding: 170px 0; }
@media (max-width: 720px) { .hero, .audience, .method, .path, .people, .reviews, .company, .faq, .posts, .contact, .prose-page { padding: 96px 0; } }

/* ---------------------------------------------------------------- FbHero */
.hero { padding: 36px 0 72px; position: relative; overflow: hidden; }
.hero__visual { position: absolute; left: 50%; top: 50%; width: min(1100px, 130vw); aspect-ratio: 1 / 1; transform: translate(-50%, -54%); opacity: .8; pointer-events: none; }
.hero__inner { position: relative; z-index: 2; min-height: min(82vh, 820px); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.hero__copy { display: flex; flex-direction: column; align-items: center; }
.hero__title { font-size: clamp(46px, 7.6vw, 104px); max-width: 15ch; margin-bottom: 30px; text-shadow: 0 0 40px rgba(0,0,0,.9), 0 0 12px rgba(0,0,0,.9); }
.hero__lede { font-size: 18px; color: var(--white); max-width: 54ch; margin-bottom: 36px; text-shadow: 0 0 18px rgba(0,0,0,.95); }
.hero__lede p { margin: 0; }
.hero__lede mark { text-shadow: none; }
.hero__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 18px; }
.hero__trust { margin: 72px 0 0; max-width: 60ch; color: var(--mist); font-size: 15px; line-height: 1.5; text-shadow: 0 0 14px rgba(0,0,0,.95); }
.hero__trust p { margin: 0; }
@media (max-width: 860px) {
  .hero { padding-top: 24px; }
  .hero__visual { width: 150vw; transform: translate(-50%, -52%); opacity: .6; }
  .hero__inner { min-height: 0; padding: 60px 0 20px; }
}

/* ---------------------------------------------------------------- FbAudience */
.audience__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 60px; }
.audience__card { position: relative; padding-top: 36px; }
.audience__media { margin: 0 0 30px; aspect-ratio: 4 / 5; max-width: 420px; border-radius: var(--radius); overflow: hidden; background: #0b0b0d; }
.audience__media img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); filter: grayscale(.55) contrast(1.05); transition: filter 1.2s ease .3s; will-change: transform; }
.media-reveal { clip-path: inset(0 0 100% 0 round var(--radius)); transition: clip-path 1.2s cubic-bezier(.2,.8,.2,1); }
.media-reveal.in { clip-path: inset(0 0 0 0 round var(--radius)); }
.media-reveal.in img { filter: grayscale(0) contrast(1); }
.audience__card:hover .audience__media img { filter: grayscale(0) contrast(1.08); }
@media (prefers-reduced-motion: reduce) { .media-reveal { clip-path: none; transition: none; } .audience__media img { filter: none; transform: none; } }
.audience__card:nth-child(2) { margin-top: 120px; }
@media (max-width: 760px) { .audience__card:nth-child(2) { margin-top: 0; } }
.audience__num { position: absolute; top: 0; left: 0; font-size: 14px; font-weight: 600; letter-spacing: .025em; color: var(--iris); }
.audience__num::before { content: '0'; }
.audience__card h3 { margin-bottom: 18px; }
.audience__card .prose { color: var(--mist); }
.prose strong, .lede strong { font-weight: 500; color: var(--white); }
.audience__note { margin: 72px 0 0; max-width: 52ch; color: var(--white); font-weight: 400; }
@media (max-width: 760px) { .audience__grid { grid-template-columns: 1fr; gap: 48px; } }

/* ---------------------------------------------------------------- FbMethod */
.method { padding-top: 60px; }
.method__stage { position: relative; overflow: hidden; }
.method__visual { position: absolute; left: -12vw; top: 50%; width: min(900px, 80vw); aspect-ratio: 1 / 1; transform: translateY(-50%); pointer-events: none; opacity: .9; }
.method__grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 60px; min-height: min(70vh, 640px); align-items: center; }
.method__copy { grid-column: 2; text-shadow: 0 0 18px rgba(0,0,0,.95); }
.method__copy .prose { color: var(--mist); max-width: 52ch; }
.principles__wrap { position: relative; margin-top: 96px; }
.principles__arrows { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.principles { list-style: none; margin: 0; padding: 0; counter-reset: p; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 200px 160px; align-items: start; position: relative; }
.principles li:nth-child(2) { margin-top: 110px; }
.principles li:nth-child(3) { margin-left: 14%; }
.principles li:nth-child(4) { margin-top: 110px; margin-left: 8%; }
.principles li { max-width: 420px; }
.principles li { counter-increment: p; padding: 0 0 0 60px; position: relative; }
.principles li:nth-child(even) { justify-self: end; }
.principles li::before { content: counter(p, decimal-leading-zero); position: absolute; left: 0; top: 4px; font-size: 14px; font-weight: 600; color: var(--iris); }
.principles h3 { font-size: 24px; letter-spacing: -0.02em; margin-bottom: 8px; }
.principles .prose { color: var(--mist); }
.method__note { margin-top: 96px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 60px; align-items: start; }
.method__note h3 { font-size: clamp(30px, 3.4vw, 42px); letter-spacing: -0.03em; margin: 0; max-width: 16ch; }
.method__note .prose { color: var(--mist); }
.method__note .prose::before { content: 'La pagina scritta'; display: block; font-size: 14px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--spark); margin-bottom: 18px; }
@media (max-width: 860px) {
  .method__grid, .method__note, .principles { grid-template-columns: 1fr; gap: 36px; }
  .method__copy { grid-column: 1; }
  .method__visual { left: -30vw; width: 120vw; opacity: .45; }
  .principles__wrap { margin-top: 60px; }
  .principles { gap: 96px; }
  .principles li { max-width: none; }
  .principles li:nth-child(n) { margin: 0; }
}

/* ---------------------------------------------------------------- FbPath */
.path__steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 36px; }
.path__step { padding-top: 30px; position: relative; }
.path__step::before { content: ''; position: absolute; top: 0; left: 0; width: 9px; height: 9px; border-radius: 50%; background: var(--iris); }
.path__step::after { content: ''; position: absolute; top: 4px; left: 20px; right: -36px; height: 1px; background: var(--line); }
.path__step:last-child::after { display: none; }
.path__label { font-size: 12px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--spark); }
.path__step h3 { font-size: 27px; margin: 12px 0 14px; }
.path__step .prose { color: var(--mist); font-size: 16px; }
.path__step .prose p { margin: 0 0 .8em; }
.path__cta { margin: 72px 0 0; }
@media (max-width: 960px) {
  .path__steps { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 36px; }
  .path__step:nth-child(2n)::after { display: none; }
}
@media (max-width: 560px) { .path__steps { grid-template-columns: 1fr; } .path__step::after { display: none; } }

/* ---------------------------------------------------------------- FbPeople */
.people__grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr); gap: 60px 80px; align-items: start; }
.person { display: grid; grid-template-columns: minmax(0, 1fr); gap: 30px; }
.person--lead { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 40px; align-items: end; }
.person:not(.person--lead) { margin-top: 140px; }
.person__media { aspect-ratio: 4 / 5; border-radius: var(--radius); overflow: hidden; background: #0b0b0d; }
.person:not(.person--lead) .person__media { max-width: 280px; }
.person__media img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); filter: grayscale(.55) contrast(1.05); transition: filter 1.2s ease .3s; will-change: transform; }
.media-reveal.in .person__media img, .person__media.media-reveal.in img { filter: grayscale(0) contrast(1); }
.person__initials { width: 100%; height: 100%; background: #070708; }
.person__role { font-size: 12px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--iris); margin-bottom: 12px; }
.person__body h3 { font-size: clamp(36px, 4.2vw, 60px); letter-spacing: -0.03em; line-height: 1; margin-bottom: 24px; }
.person:not(.person--lead) .person__body h3 { font-size: clamp(30px, 3vw, 42px); }
.person__body .prose { color: var(--mist); font-size: 16px; }
@media (max-width: 960px) {
  .people__grid { grid-template-columns: 1fr; gap: 72px; }
  .person:not(.person--lead) { margin-top: 0; }
}
@media (max-width: 640px) { .person--lead { grid-template-columns: 1fr; } .person__media { max-width: 340px; } }

/* ---------------------------------------------------------------- FbStatement */
.statement { position: relative; padding: 120px 0; overflow: hidden; }
.statement__field { position: absolute; inset: 0; opacity: .9; pointer-events: none; }
.statement__inner { position: relative; z-index: 1; text-align: center; }
.statement__text { max-width: 26ch; margin: 0 auto; font-family: var(--font-display); font-variation-settings: 'opsz' 96; font-size: clamp(28px, 4vw, 54px); font-weight: 400; line-height: 1.15; letter-spacing: -0.03em; text-shadow: 0 0 24px rgba(0,0,0,.95); }
.statement__text p { margin: 0; }
.statement__text strong { font-weight: 400; color: var(--spark); }
@media (max-width: 720px) { .statement { padding: 72px 0; } }

/* ---------------------------------------------------------------- FbReviews */
.reviews__head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 48px; align-items: start; margin-bottom: 60px; }
.reviews__head .section-head { margin-bottom: 0; }
.reviews__badge { display: inline-flex; flex-direction: column; gap: 4px; padding: 18px 22px; border: 1px solid var(--line); border-radius: var(--radius); text-decoration: none; color: var(--white); min-width: 200px; transition: border-color .2s; }
.reviews__badge:hover { border-color: var(--spark); }
.reviews__stars { color: var(--spark); letter-spacing: .1em; font-size: 18px; }
.reviews__score { font-size: 15px; color: var(--mist); }
.reviews__score strong { font-family: var(--font-display); font-weight: 500; font-size: 30px; color: var(--white); margin-right: 6px; }
.reviews__count { font-size: 12px; color: var(--ash); }
.reviews__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 80px; }
.review { margin: 0; padding-left: 28px; border-left: 1px solid var(--iris); }
.review blockquote { margin: 0 0 14px; font-family: var(--font-display); font-variation-settings: 'opsz' 40; font-size: clamp(20px, 2vw, 26px); line-height: 1.25; letter-spacing: -0.01em; color: var(--white); }
.review blockquote::before { content: '\201C'; color: var(--spark); margin-right: 2px; }
.review blockquote::after { content: '\201D'; color: var(--spark); margin-left: 2px; }
.review figcaption { font-size: 13px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--ash); }
@media (max-width: 860px) { .reviews__head, .reviews__grid { grid-template-columns: 1fr; gap: 36px; } }

/* ---------------------------------------------------------------- FbCompany */
.company .section-head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 60px; align-items: end; }
.company .section-head .eyebrow { grid-column: 1 / -1; }
.company .section-head h2 { grid-column: 1; margin: 0; }
.company .section-head .lede { grid-column: 2; }
.company .section-head .lede { color: var(--mist); }
.company__areas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 60px; margin-bottom: 96px; }
.company__area h3 { font-size: 24px; letter-spacing: -0.02em; margin-bottom: 10px; }
.company__area h3::before { content: ''; display: inline-block; width: 8px; height: 8px; background: var(--spark); transform: rotate(45deg); margin-right: 14px; vertical-align: middle; }
.company__area p { margin: 0; color: var(--mist); }
.company__programs-title { font-size: 14px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--spark); margin-bottom: 24px; }
.company__programs ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 60px; }
.company__programs li { display: flex; justify-content: space-between; gap: 18px; padding: 16px 0; border-top: 1px solid var(--line); font-size: 16px; }
.company__programs li strong { font-weight: 400; color: var(--white); }
.company__programs li span { color: var(--ash); text-align: right; font-size: 14px; }
.company__cta { margin: 60px 0 0; }
@media (max-width: 860px) {
  .company .section-head { grid-template-columns: 1fr; gap: 24px; }
  .company__areas { grid-template-columns: 1fr; gap: 36px; }
  .company__programs ul { grid-template-columns: 1fr; }
  .company__programs li { flex-direction: column; gap: 4px; }
  .company__programs li span { text-align: left; }
}

/* ---------------------------------------------------------------- FbFaq */
.faq__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 60px; align-items: start; }
.faq__grid .section-head { margin-bottom: 0; }
.faq__item { border-top: 1px solid var(--line); }
.faq__item:last-child { border-bottom: 1px solid var(--line); }
.faq__item summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 24px 0; font-size: 24px; font-weight: 400; letter-spacing: -0.01em; }
.faq__item summary::-webkit-details-marker { display: none; }
.faq__icon { flex: 0 0 24px; width: 24px; height: 24px; position: relative; }
.faq__icon::before, .faq__icon::after { content: ''; position: absolute; background: var(--iris); left: 50%; top: 50%; transform: translate(-50%, -50%); }
.faq__icon::before { width: 16px; height: 1.5px; }
.faq__icon::after { width: 1.5px; height: 16px; transition: transform .2s; }
.faq__item[open] .faq__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.faq__answer { padding: 0 0 30px; color: var(--mist); max-width: 56ch; }
@media (max-width: 860px) { .faq__grid { grid-template-columns: 1fr; gap: 36px; } }

/* ---------------------------------------------------------------- FbPosts + card */
.posts__head { display: flex; justify-content: space-between; align-items: end; gap: 24px; margin-bottom: 60px; }
.posts__head h2 { margin: 0; }
.posts__grid, .blog-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px; }
.post-card, .blog-card { display: flex; flex-direction: column; text-decoration: none; }
.post-card__img, .blog-card-img { aspect-ratio: 4 / 3; border-radius: var(--radius); overflow: hidden; background: #0d0d0f; margin-bottom: 24px; }
.post-card__img img, .blog-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.post-card:hover img, .blog-card:hover img { transform: scale(1.03); }
.post-card__body, .blog-card-body { display: flex; flex-direction: column; gap: 10px; }
.post-card__cat, .blog-card-cat { font-size: 12px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--iris); }
.post-card__title, .blog-card-title { font-size: 27px; line-height: 1.1; letter-spacing: -0.02em; margin: 0; font-weight: 400; }
.post-card__abstract, .blog-card-abstract { margin: 0; color: var(--mist); font-size: 16px; }
.blog-card-date, .post-card__date { font-size: 12px; color: var(--ash); margin-top: 6px; }
@media (max-width: 900px) { .posts__grid, .blog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .posts__grid, .blog-grid { grid-template-columns: 1fr; } .posts__head { flex-direction: column; align-items: flex-start; } }

/* ---------------------------------------------------------------- FbContact */
.contact__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 60px; align-items: start; }
.contact__details { list-style: none; margin: 36px 0 0; padding: 0; color: var(--ash); font-size: 15px; }
.contact__details li { padding: 14px 0; border-top: 1px solid var(--line); }
.field { display: flex; flex-direction: column; gap: 8px; margin-bottom: 30px; }
.field label { font-size: 12px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--ash); }
.field input, .field textarea { font: inherit; font-weight: 300; font-size: 18px; padding: 10px 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; color: var(--white); width: 100%; }
.field input:focus, .field textarea:focus { outline: none; border-bottom-color: var(--iris); }
.field textarea { resize: vertical; min-height: 120px; }
.privacy { display: flex; gap: 12px; align-items: flex-start; font-size: 14px; color: var(--mist); margin: 0 0 24px; }
.privacy input { margin-top: 4px; accent-color: var(--iris); }
.privacy a { color: var(--white); }
.cf-turnstile { margin: 0 0 24px; }
.submit { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; }
.submit small { color: var(--ash); font-size: 14px; }
.form-error { color: #ff7a6b; font-weight: 400; margin: 14px 0 0; }
.form-success h3 { font-size: 36px; }
@media (max-width: 860px) { .contact__grid { grid-template-columns: 1fr; gap: 36px; } }

/* ---------------------------------------------------------------- FbProse */
.prose-page__inner { max-width: 720px; }
.prose-page h1 { font-size: clamp(36px, 5vw, 60px); margin-bottom: 36px; }
.prose-page .prose { color: var(--mist); }
.prose-page .prose h2 { color: var(--white); }

/* ---------------------------------------------------------------- Blog list */
.blog-shell { padding: 48px 0 120px; }
.blog-head { margin-bottom: 48px; }
.blog-tools { display: flex; flex-wrap: wrap; gap: 18px 30px; align-items: center; margin-bottom: 48px; }
.blog-search-form { display: flex; gap: 8px; }
.blog-search-input { font: inherit; font-weight: 300; font-size: 15px; padding: 11px 18px; border: 1px solid var(--line); border-radius: 9999px; background: transparent; color: var(--white); min-width: 240px; }
.blog-search-input::placeholder { color: var(--ash); }
.blog-search-btn { font: inherit; font-weight: 600; padding: 11px 18px; border-radius: 9999px; border: 0; background: var(--iris); color: var(--white); cursor: pointer; }
.blog-search-btn svg { stroke: currentColor; }
.blog-categories { display: flex; flex-wrap: wrap; gap: 8px; }
.blog-cat-pill { font-size: 12px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; padding: 9px 14px; border-radius: 9999px; border: 1px solid var(--line); text-decoration: none; color: var(--ash); }
.blog-cat-pill.active, .blog-cat-pill:hover { border-color: var(--iris); color: var(--white); }
.blog-featured { display: none; }
.blog-infinite-sentinel { height: 1px; }

/* ---------------------------------------------------------------- Post */
.post-shell { padding-bottom: 120px; }
.post-hero { padding: 48px 0 48px; }
.post-hero-inner { max-width: 880px; }
.post-cat { display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--iris); text-decoration: none; margin-bottom: 18px; }
.post-hero-title { font-size: clamp(36px, 5.6vw, 78px); letter-spacing: -0.04em; max-width: 18ch; }
.post-hero-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; color: var(--ash); }
.post-hero-bg { width: min(var(--wrap), calc(100% - 48px)); margin: 48px auto 0; border-radius: var(--radius); overflow: hidden; aspect-ratio: 21 / 9; position: relative; background: #0d0d0f; }
.post-hero-bg img { width: 100%; height: 100%; object-fit: cover; }
.post-hero-gradient { display: none; }
.post-wrap { max-width: 720px; }
.post-body { font-size: 18px; line-height: 1.6; color: var(--mist); }
.post-body h2 { font-size: 30px; letter-spacing: -0.02em; margin-top: 1.9em; color: var(--white); }
.post-body h3 { margin-top: 1.5em; color: var(--white); }
.post-body p { margin: 0 0 1.15em; }
.post-body blockquote { margin: 1.6em 0; padding: 0 0 0 24px; border-left: 1px solid var(--iris); font-size: 24px; font-weight: 300; color: var(--white); }
.post-body blockquote[style*="background"] { font-size: 16px; font-style: normal; text-align: left; border-left: 0; padding: 24px; border-radius: var(--radius); background: #0d0d0f !important; color: var(--mist); }
.post-body ul, .post-body ol { padding-left: 1.3em; }
.post-body img { border-radius: var(--radius); margin: 1.4em 0; }
.post-body strong { font-weight: 500; color: var(--white); }
.post-body a { color: var(--spark); }
.post-body table { border-collapse: collapse; width: 100%; font-size: 16px; }
.post-body th, .post-body td { border-bottom: 1px solid var(--line); padding: 10px 8px; text-align: left; vertical-align: top; }
.post-cta { margin: 72px 0 36px; padding: 48px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.post-cta h2 { font-size: 36px; letter-spacing: -0.03em; max-width: 18ch; }
.post-cta p { color: var(--mist); max-width: 48ch; }
.blog-share { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 24px 0 0; color: var(--ash); font-size: 14px; }
.blog-share a, .blog-share button { font: inherit; font-size: 14px; padding: 9px 12px; border-radius: 9999px; border: 1px solid var(--line); background: transparent; color: var(--mist); text-decoration: none; cursor: pointer; display: inline-flex; align-items: center; }
.blog-share a:hover, .blog-share button:hover { border-color: var(--white); color: var(--white); }
.blog-related { width: min(var(--wrap), calc(100% - 48px)); margin: 96px auto 0; }
.blog-related-title { font-size: 36px; letter-spacing: -0.02em; margin-bottom: 36px; }
.blog-related-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px; }
.blog-related-card { text-decoration: none; display: flex; flex-direction: column; }
.blog-related-img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; border-radius: var(--radius); margin-bottom: 18px; }
.blog-related-body h3, .blog-related-body h4 { font-size: 24px; font-weight: 400; letter-spacing: -0.02em; }
.blog-related-cat { font-size: 12px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--iris); display: block; margin-bottom: 8px; }
.blog-most-read-item { display: flex; gap: 12px; align-items: center; }
.blog-most-read-num { color: var(--ash); }
.blog-most-read-thumb { width: 56px; height: 56px; object-fit: cover; border-radius: 8px; }
.blog-most-read-info { font-size: 15px; }
.blog-most-read-cat { font-size: 12px; color: var(--iris); text-transform: uppercase; letter-spacing: .025em; }
@media (max-width: 860px) { .blog-related-grid { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- Footer */
.site-footer { padding: 96px 0 36px; color: var(--ash); font-size: 15px; }
.footer-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, .8fr); gap: 48px; padding-bottom: 48px; border-bottom: 1px solid var(--line); }
.footer-contacts__title { font-size: 14px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; color: var(--spark); margin: 0 0 14px; }
.footer-contacts p { margin: 0 0 10px; color: var(--mist); }
.footer-contacts a { color: var(--white); text-decoration: none; }
.footer-contacts strong { font-weight: 600; font-size: 18px; }
.footer-brand img { width: 110px; margin-bottom: 24px; }
.footer-brand p { margin: 0; max-width: 40ch; color: var(--mist); }
.footer-nav { display: flex; flex-wrap: wrap; gap: 12px 30px; align-content: start; justify-content: flex-end; }
.footer-nav a { color: var(--ash); text-decoration: none; font-size: 14px; font-weight: 600; letter-spacing: .025em; text-transform: uppercase; }
.footer-nav a:hover { color: var(--white); }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding-top: 30px; flex-wrap: wrap; }
.legal { margin: 0; font-size: 12px; line-height: 1.8; color: var(--ash); }
.legal a { color: var(--mist); text-decoration: none; }
.legal a:hover { color: var(--white); }
.footer-cms img { height: 52px; width: auto; }
@media (max-width: 900px) { .footer-top { grid-template-columns: 1fr; } .footer-nav { justify-content: flex-start; } }
