/* ============================================================
   Fondazione Senatore Cappelli — "Heritage Forest Ledger"
   Calm editorial. Deep green, gold hairlines, ledger ticks.
   Square corners. No shadows. 72px section rhythm.
   ============================================================ */

:root {
  --site-bg: #1e3a2e;
  --site-surface: #24463a;
  --site-text: #f3ecdb;
  --site-muted: #a7b6a5;
  --site-accent: #c9a24b;

  --fw-bg: #1e3a2e;
  --fw-surface: #24463a;
  --fw-surface-2: #2b5044;
  --fw-text: #f3ecdb;
  --fw-muted: #a7b6a5;
  --fw-accent: #c9a24b;
  --fw-accent-2: #e6ddc4;

  --fw-hairline: rgba(201, 162, 75, 0.42);
  --fw-line-soft: rgba(243, 236, 219, 0.12);

  --fw-container: 1180px;
  --fw-pad: 72px;

  --fw-font-head: "Nunito", system-ui, sans-serif;
  --fw-font-body: "Source Sans 3", "Source Sans Pro", system-ui, sans-serif}

* { box-sizing: border-box}

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth}

body {
  margin: 0;
  background: var(--fw-bg);
  color: var(--fw-text);
  font-family: var(--fw-font-body);
  font-size: 17px;
  line-height: 1.65;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased}

img { max-width: 100%; display: block}

h1, h2, h3, h4 {
  font-family: var(--fw-font-head);
  font-weight: 800;
  line-height: 1.15;
  margin: 0 0 .5em;
  letter-spacing: -0.01em}

p { margin: 0 0 1rem; max-width: 72ch}

a { color: var(--fw-accent); text-decoration: none}
a:hover { color: var(--fw-accent-2)}

:focus-visible {
  outline: 2px solid var(--fw-accent);
  outline-offset: 3px}

/* ---------- Layout helpers ---------- */
.fw-container {
  width: 100%;
  max-width: var(--fw-container);
  margin: 0 auto;
  padding-inline: 24px}

.fw-section {
  padding-block: clamp(48px, 8vw, var(--fw-pad))}

.fw-section--tint { background: var(--fw-surface)}
.fw-section--deep { background: #1a3227}

/* Ledger-tick section header */
.fw-sec-head { margin-bottom: 40px; max-width: 60ch}
.fw-sec-kicker {
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: .78rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--fw-accent);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px}
.fw-sec-kicker::before,
.fw-sec-kicker::after {
  content: "";
  width: 14px;
  height: 1px;
  background: var(--fw-accent);
  box-shadow: 0 4px 0 var(--fw-accent), 0 -4px 0 var(--fw-accent)}
.fw-sec-title {
  font-size: clamp(1.7rem, 3.6vw, 2.6rem)}
.fw-sec-intro { color: var(--fw-muted); font-size: 1.08rem}

.fw-hairline {
  border: 0;
  height: 1px;
  background: var(--fw-hairline);
  margin: 0}

/* ---------- Buttons ---------- */
.fw-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: 1rem;
  padding: 14px 28px;
  border-radius: 0;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background .2s, color .2s, border-color .2s;
  line-height: 1}
.fw-btn--gold {
  background: var(--fw-accent);
  color: #1e3a2e}
.fw-btn--gold:hover { background: var(--fw-accent-2); color: #1e3a2e}
.fw-btn--ghost {
  background: transparent;
  color: var(--fw-text);
  border-color: var(--fw-hairline)}
.fw-btn--ghost:hover { border-color: var(--fw-accent); color: var(--fw-accent-2)}

/* ============================================================
   HEADER — thin utility top bar + large rounded-sans nav
   ============================================================ */
#page-header-tca {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--fw-bg);
  border-bottom: 1px solid var(--fw-line-soft);
  transition: box-shadow .2s, background .2s}
#page-header-tca.is-scrolled {
  border-bottom-color: var(--fw-hairline)}

.fw-topbar {
  background: #182c22;
  border-bottom: 1px solid var(--fw-line-soft);
  font-size: .84rem;
  color: var(--fw-muted)}
.fw-topbar-inner {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 26px;
  align-items: center;
  justify-content: flex-end;
  padding-block: 8px}
.fw-topbar-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--fw-muted);
  font-weight: 600}
.fw-topbar-link:hover { color: var(--fw-accent-2)}
.fw-topbar-link i { color: var(--fw-accent)}

.fw-nav-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-block: 18px}

/* Brand / logo */
.fw-brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  min-width: 0}
.fw-brand-icon { width: 38px; height: 38px; flex: none}
.fw-brand-name {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: 1.35rem;
  color: var(--fw-text);
  letter-spacing: -0.01em;
  line-height: 1}

.fw-nav-list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 30px;
  list-style: none;
  margin: 0;
  padding: 0}
.fw-nav-item a {
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: 1.02rem;
  color: var(--fw-text);
  letter-spacing: .01em;
  padding-bottom: 4px;
  border-bottom: 2px solid transparent}
.fw-nav-item a:hover,
.fw-nav-item a.is-current {
  color: var(--fw-accent-2);
  border-bottom-color: var(--fw-accent)}

.fw-nav-cta { display: inline-flex}

.fw-burger {
  display: none;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  background: transparent;
  border: 1px solid var(--fw-hairline);
  color: var(--fw-text);
  cursor: pointer;
  font-size: 1.2rem}

/* Drawer */
#scrim-uey {
  position: fixed;
  inset: 0;
  background: rgba(10, 22, 16, .6);
  opacity: 0;
  visibility: hidden;
  transition: opacity .25s;
  z-index: 200}
#scrim-uey.is-open { opacity: 1; visibility: visible}

#off-canvas-szn {
  position: fixed;
  top: 0;
  right: 0;
  height: 100%;
  width: min(84vw, 340px);
  background: var(--fw-surface);
  border-left: 1px solid var(--fw-hairline);
  transform: translateX(100%);
  transition: transform .28s ease;
  z-index: 210;
  padding: 24px;
  overflow-y: auto}
#off-canvas-szn.is-open { transform: translateX(0)}

.fw-drawer-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--fw-hairline);
  margin-bottom: 20px}
#drawer-close-mxd {
  width: 44px; height: 44px;
  background: transparent;
  border: 1px solid var(--fw-hairline);
  color: var(--fw-text);
  cursor: pointer;
  font-size: 1.1rem}
.fw-drawer-list {
  list-style: none;
  margin: 0 0 24px;
  padding: 0;
  display: flex;
  flex-direction: column}
.fw-drawer-list a {
  display: block;
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: 1.15rem;
  color: var(--fw-text);
  padding: 14px 0;
  border-bottom: 1px solid var(--fw-line-soft)}
.fw-drawer-list a:hover { color: var(--fw-accent)}

/* ============================================================
   HERO — with inline stat row baked in + floating stat card
   ============================================================ */
.fw-hero {
  position: relative;
  overflow: hidden;
  background: #1a3227}
.fw-hero-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 48px;
  align-items: center;
  padding-block: clamp(48px, 8vw, 88px)}
.fw-hero-copy { min-width: 0}
.fw-hero-eyebrow {
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: .8rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--fw-accent);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 20px}
.fw-hero-eyebrow::before {
  content: "";
  width: 26px; height: 1px;
  background: var(--fw-accent);
  box-shadow: 0 4px 0 var(--fw-accent), 0 -4px 0 var(--fw-accent)}
.fw-hero-title {
  font-size: clamp(2.1rem, 5.5vw, 3.5rem);
  margin-bottom: 18px}
.fw-hero-lead {
  color: var(--fw-muted);
  font-size: 1.15rem;
  max-width: 56ch;
  margin-bottom: 28px}
.fw-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 40px}

/* inline stat row baked into hero */
.fw-hero-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 24px;
  border-top: 1px solid var(--fw-hairline);
  padding-top: 28px}
.fw-hero-stat-num {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: clamp(1.8rem, 4vw, 2.4rem);
  color: var(--fw-accent-2);
  line-height: 1}
.fw-hero-stat-label {
  color: var(--fw-muted);
  font-size: .9rem;
  margin-top: 8px}

/* hero media + floating stat/price card */
.fw-hero-media { position: relative; min-width: 0}
.fw-hero-photo {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border: 1px solid var(--fw-hairline)}
.fw-hero-photo img {
  width: 100%; height: 100%; object-fit: cover}
.fw-hero-floatcard {
  position: relative;
  margin: -56px 24px 0 auto;
  max-width: 280px;
  background: var(--fw-surface);
  border: 1px solid var(--fw-hairline);
  padding: 22px 24px}
.fw-hero-floatcard-label {
  font-size: .78rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--fw-muted);
  font-weight: 700}
.fw-hero-floatcard-price {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: 2.2rem;
  color: var(--fw-accent);
  margin: 6px 0 4px}
.fw-hero-floatcard-note { color: var(--fw-muted); font-size: .9rem; margin: 0}

@media (min-width: 900px) {
  .fw-hero-grid { grid-template-columns: 1.55fr 1fr}
}

/* ============================================================
   PAGE HERO variants (content/contact pages)
   ============================================================ */
/* tinted band */
.fw-pagehero {
  background: var(--fw-surface);
  border-bottom: 1px solid var(--fw-hairline)}
.fw-pagehero-inner { padding-block: clamp(48px, 7vw, 80px)}
.fw-pagehero-title { font-size: clamp(2rem, 5vw, 3rem)}
.fw-pagehero-lead { color: var(--fw-muted); font-size: 1.12rem; max-width: 62ch}

/* centered compact hero */
.fw-pagehero--center { text-align: center; background: #1a3227}
.fw-pagehero--center .fw-pagehero-inner {
  padding-block: clamp(44px, 6vw, 68px)}
.fw-pagehero--center .fw-pagehero-lead { margin-inline: auto}
.fw-pagehero--center .fw-sec-kicker { justify-content: center}

/* ============================================================
   STATS — big numbers (row) + bordered boxes variant
   ============================================================ */
.fw-stats-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px}
.fw-stat {
  padding: 28px 20px;
  border-left: 1px solid var(--fw-line-soft)}
.fw-stat:first-child { border-left: 0}
.fw-stat-num {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: clamp(2.2rem, 5vw, 3.2rem);
  color: var(--fw-accent);
  line-height: 1}
.fw-stat-label { color: var(--fw-muted); margin-top: 10px; font-size: .95rem}

/* bordered boxes */
.fw-stats-boxes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 20px}
.fw-statbox {
  border: 1px solid var(--fw-hairline);
  padding: 30px 26px;
  background: #1a3227}
.fw-statbox .fw-stat-num { font-size: clamp(2rem, 4.5vw, 2.8rem)}

/* ============================================================
   PRICING — tiered cards + quote-based teaser
   ============================================================ */
.fw-pricing-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 24px;
  align-items: start}
.fw-tier {
  border: 1px solid var(--fw-hairline);
  background: var(--fw-surface);
  padding: 34px 30px;
  display: flex;
  flex-direction: column;
  min-width: 0}
.fw-tier--featured {
  background: var(--fw-surface-2);
  border-color: var(--fw-accent);
  position: relative}
.fw-tier-flag {
  position: absolute;
  top: 0; right: 0;
  background: var(--fw-accent);
  color: #1e3a2e;
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: 6px 12px}
.fw-tier-name {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: 1.3rem;
  margin-bottom: 6px}
.fw-tier-desc { color: var(--fw-muted); font-size: .95rem}
.fw-tier-price {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: 2.6rem;
  color: var(--fw-accent);
  margin: 18px 0 4px;
  line-height: 1}
.fw-tier-price span { font-size: 1rem; color: var(--fw-muted); font-weight: 600}
.fw-tier-list {
  list-style: none;
  margin: 22px 0;
  padding: 22px 0 0;
  border-top: 1px solid var(--fw-hairline);
  display: flex;
  flex-direction: column;
  gap: 12px}
.fw-tier-list li {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  color: var(--fw-text);
  font-size: .98rem}
.fw-tier-list li i { color: var(--fw-accent); margin-top: 4px}
.fw-tier .fw-btn { margin-top: auto; justify-content: center}

/* quote-based teaser */
.fw-quoteteaser {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  align-items: center;
  border: 1px solid var(--fw-hairline);
  background: var(--fw-surface);
  padding: clamp(28px, 5vw, 48px)}
.fw-quoteteaser-from {
  font-size: .8rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--fw-muted);
  font-weight: 700}
.fw-quoteteaser-price {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: clamp(2.6rem, 7vw, 4rem);
  color: var(--fw-accent);
  line-height: 1;
  margin: 6px 0 10px}
.fw-quoteteaser-note { color: var(--fw-muted)}
@media (min-width: 760px) {
  .fw-quoteteaser { grid-template-columns: 1.6fr 1fr}
}

/* ============================================================
   TRUST BAR — membership marks + guarantee callouts
   ============================================================ */
.fw-trust {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 14px;
  align-items: center}
.fw-trust-mark {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 22px 16px;
  border: 1px solid var(--fw-line-soft);
  color: var(--fw-muted);
  font-family: var(--fw-font-head);
  font-weight: 700;
  text-align: center}
.fw-trust-mark i { color: var(--fw-accent); font-size: 1.5rem}

/* guarantee callouts */
.fw-guarantees {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 24px}
.fw-guarantee {
  border-left: 3px solid var(--fw-accent);
  padding: 8px 0 8px 22px}
.fw-guarantee-title {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: 1.15rem;
  margin-bottom: 6px}
.fw-guarantee-desc { color: var(--fw-muted); font-size: .96rem; margin: 0}

/* ============================================================
   CHECKLIST — table-style incl/excl + sub-desc + two-column
   ============================================================ */
.fw-checklist {
  border: 1px solid var(--fw-hairline)}
.fw-checklist-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  align-items: center;
  padding: 18px 24px;
  border-bottom: 1px solid var(--fw-line-soft)}
.fw-checklist-row:last-child { border-bottom: 0}
.fw-checklist-row:nth-child(even) { background: rgba(243,236,219,.03)}
.fw-checklist-label {
  font-family: var(--fw-font-head);
  font-weight: 700;
  min-width: 0}
.fw-checklist-mark { font-size: 1.15rem}
.fw-checklist-mark.is-in { color: var(--fw-accent)}
.fw-checklist-mark.is-out { color: var(--fw-muted); opacity: .6}

/* checklist with sub-descriptions */
.fw-checkdesc {
  display: grid;
  grid-template-columns: 1fr;
  gap: 4px}
.fw-checkdesc-item {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 18px;
  padding: 24px 0;
  border-bottom: 1px solid var(--fw-line-soft)}
.fw-checkdesc-item:last-child { border-bottom: 0}
.fw-checkdesc-icon {
  color: var(--fw-accent);
  font-size: 1.3rem;
  margin-top: 2px}
.fw-checkdesc-title {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: 1.12rem;
  margin-bottom: 4px}
.fw-checkdesc-sub { color: var(--fw-muted); font-size: .97rem; margin: 0}

/* two-column checklist */
.fw-checktwo {
  display: grid;
  grid-template-columns: 1fr;
  gap: 4px 48px}
.fw-checktwo-item {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  padding: 16px 0;
  border-bottom: 1px solid var(--fw-line-soft);
  align-items: baseline}
.fw-checktwo-item i { color: var(--fw-accent)}
.fw-checktwo-item span {
  font-family: var(--fw-font-head);
  font-weight: 600;
  min-width: 0}
@media (min-width: 720px) {
  .fw-checktwo { grid-template-columns: 1fr 1fr}
}

/* ============================================================
   CTA STRIP — full-width band + centered card
   ============================================================ */
.fw-cta-band {
  background: var(--fw-accent);
  color: #1e3a2e}
.fw-cta-band-inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  align-items: center;
  padding-block: clamp(40px, 6vw, 64px)}
.fw-cta-band-title {
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  color: #16281f;
  margin: 0}
.fw-cta-band-text { color: #22392e; margin: 8px 0 0; max-width: 56ch}
.fw-cta-band .fw-btn--dark {
  background: #1e3a2e;
  color: var(--fw-accent-2);
  justify-self: start}
.fw-cta-band .fw-btn--dark:hover { background: #16281f}
@media (min-width: 820px) {
  .fw-cta-band-inner { grid-template-columns: 2fr 1fr}
  .fw-cta-band .fw-btn--dark { justify-self: end}
}

/* centered CTA card */
.fw-cta-card {
  max-width: 760px;
  margin-inline: auto;
  text-align: center;
  border: 1px solid var(--fw-accent);
  background: var(--fw-surface);
  padding: clamp(36px, 6vw, 60px)}
.fw-cta-card-title { font-size: clamp(1.7rem, 4vw, 2.4rem)}
.fw-cta-card-text { color: var(--fw-muted); margin-inline: auto; margin-bottom: 26px}
.fw-cta-card .fw-btn { }

/* ============================================================
   CONTACT — form + address/phone/email block
   ============================================================ */
.fw-contact-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 48px;
  align-items: start}
@media (min-width: 880px) {
  .fw-contact-grid { grid-template-columns: 1.5fr 1fr}
}
.fw-contact-info { min-width: 0}
.fw-contact-line {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  padding: 20px 0;
  border-bottom: 1px solid var(--fw-line-soft);
  align-items: flex-start}
.fw-contact-line i {
  color: var(--fw-accent);
  font-size: 1.2rem;
  margin-top: 3px}
.fw-contact-line-label {
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: .8rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--fw-muted);
  display: block;
  margin-bottom: 3px}
.fw-contact-line a, .fw-contact-line address {
  color: var(--fw-text);
  font-style: normal;
  min-width: 0}

/* ---------- Forms ---------- */
.fw-form {
  border: 1px solid var(--fw-hairline);
  background: var(--fw-surface);
  padding: clamp(24px, 4vw, 40px);
  display: grid;
  gap: 20px}
.fw-form-row {
  display: flex;
  flex-wrap: wrap;
  gap: 20px}
.fw-form-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1 1 200px;
  min-width: 0}
.fw-form-label {
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: .9rem;
  color: var(--fw-accent-2)}
.fw-form-input,
.fw-form-textarea,
.fw-form-select {
  width: 100%;
  background: #17291f;
  border: 1px solid var(--fw-hairline);
  color: var(--fw-text);
  font-family: var(--fw-font-body);
  font-size: 1rem;
  padding: 13px 15px;
  border-radius: 0}
.fw-form-textarea { min-height: 150px; resize: vertical}
.fw-form-input:focus,
.fw-form-textarea:focus,
.fw-form-select:focus {
  outline: none;
  border-color: var(--fw-accent)}
.fw-form-input::placeholder,
.fw-form-textarea::placeholder { color: var(--fw-muted)}
.fw-form-consent {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-start;
  font-size: .9rem;
  color: var(--fw-muted)}
.fw-form-consent input { margin-top: 4px; accent-color: var(--fw-accent)}

/* ============================================================
   Editorial narrative block (2fr 1fr unequal grid)
   ============================================================ */
.fw-narrative {
  display: grid;
  grid-template-columns: 1fr;
  gap: 40px;
  align-items: start}
@media (min-width: 860px) {
  .fw-narrative { grid-template-columns: 2fr 1fr}
}
.fw-narrative-side {
  background: var(--fw-surface);
  border-top: 2px solid var(--fw-accent);
  padding: 30px 28px}
.fw-media-box {
  overflow: hidden;
  border: 1px solid var(--fw-hairline);
  aspect-ratio: 16 / 10}
.fw-media-box img { width: 100%; height: 100%; object-fit: cover}

/* ============================================================
   ACCORDIONS
   ============================================================ */
[data-folds] { border-top: 1px solid var(--fw-hairline)}
[data-acc-item] { border-bottom: 1px solid var(--fw-hairline)}
[data-fold-head] {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
  padding: 22px 4px;
  font-family: var(--fw-font-head);
  font-weight: 700;
  font-size: 1.1rem;
  color: var(--fw-text)}
[data-fold-head] i { color: var(--fw-accent); transition: transform .3s; flex: none}
.is-open [data-fold-head] i { transform: rotate(45deg)}
[data-acc-item] .fw-acc-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height .3s ease}
[data-acc-item].is-open .fw-acc-body { max-height: 600px}
.fw-acc-body-inner { padding: 0 4px 24px; color: var(--fw-muted)}

/* ============================================================
   SWIPER
   ============================================================ */
.glider-04h { padding-bottom: 44px}
.glider-04h .swiper-slide {
  background: var(--fw-surface);
  border: 1px solid var(--fw-hairline);
  padding: 30px;
  height: auto}
.glider-04h .swiper-pagination-bullet {
  background: var(--fw-muted);
  opacity: .5;
  border-radius: 0;
  width: 12px; height: 3px}
.glider-04h .swiper-pagination-bullet-active {
  background: var(--fw-accent);
  opacity: 1}
.glider-04h .swiper-button-prev,
.glider-04h .swiper-button-next {
  color: var(--fw-accent)}
.glider-04h .swiper-button-prev::after,
.glider-04h .swiper-button-next::after { font-size: 1.4rem}

/* ============================================================
   MODALS (scroll-safe)
   ============================================================ */
.lightbox-qci {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(10, 22, 16, .72)}
.lightbox-qci.is-open { display: flex}
.fw-modal-dialog {
  background: var(--fw-surface);
  border: 1px solid var(--fw-accent);
  max-width: 460px;
  width: 100%;
  padding: 40px 34px;
  text-align: center}
.fw-modal-icon {
  font-size: 2.6rem;
  color: var(--fw-accent);
  margin-bottom: 14px}
.fw-modal-title { font-size: 1.6rem; margin-bottom: 10px}
.fw-modal-text { color: var(--fw-muted); margin-bottom: 24px}

/* ============================================================
   LEGAL PAGES
   ============================================================ */
.fw-legal { max-width: 800px}
.fw-legal h2 { font-size: 1.5rem; margin-top: 2em}
.fw-legal h3 { font-size: 1.15rem; margin-top: 1.6em}
.fw-legal p, .fw-legal li { color: var(--fw-muted)}
.fw-legal ul { padding-left: 1.2em}

/* ============================================================
   THANK-YOU PAGE
   ============================================================ */
.fw-thanks {
  text-align: center;
  padding-block: clamp(60px, 12vw, 130px)}
.fw-thanks-icon { font-size: 3.4rem; color: var(--fw-accent); margin-bottom: 20px}

/* ============================================================
   FOOTER — big multi-column with legal + CIPC
   ============================================================ */
.fw-footer {
  background: #16281f;
  border-top: 1px solid var(--fw-hairline);
  padding-top: clamp(48px, 7vw, 72px)}
.fw-footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 40px}
@media (min-width: 680px) {
  .fw-footer-grid { grid-template-columns: 1.6fr 1fr 1fr}
}
@media (min-width: 980px) {
  .fw-footer-grid { grid-template-columns: 1.8fr 1fr 1fr 1.3fr}
}
.fw-footer-brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 18px}
.fw-footer-brand-icon { width: 34px; height: 34px}
.fw-footer-brand-name {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: 1.2rem;
  color: var(--fw-text)}
.fw-footer-blurb { color: var(--fw-muted); font-size: .96rem}
.fw-footer-tagline {
  color: var(--fw-accent);
  font-family: var(--fw-font-head);
  font-style: italic;
  font-weight: 600;
  margin-top: 12px}
.fw-footer-col-title {
  font-family: var(--fw-font-head);
  font-weight: 800;
  font-size: .82rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--fw-accent);
  margin-bottom: 18px}
.fw-footer-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px}
.fw-footer-list a { color: var(--fw-muted); font-size: .96rem}
.fw-footer-list a:hover { color: var(--fw-accent-2)}
.fw-footer-contact { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px}
.fw-footer-contact li {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  color: var(--fw-muted);
  font-size: .95rem}
.fw-footer-contact i { color: var(--fw-accent); margin-top: 3px}
.fw-footer-contact a, .fw-footer-contact address { color: var(--fw-muted); font-style: normal; min-width: 0}
.fw-footer-contact a:hover { color: var(--fw-accent-2)}

.fw-footer-legal {
  border-top: 1px solid var(--fw-line-soft);
  margin-top: clamp(40px, 6vw, 60px);
  padding-block: 28px}
.fw-footer-legal-details {
  color: var(--fw-muted);
  font-size: .82rem;
  line-height: 1.7;
  max-width: 90ch;
  margin-bottom: 18px}
.fw-footer-bottom {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 26px;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid var(--fw-line-soft);
  padding-top: 20px}
.fw-footer-copy { color: var(--fw-muted); font-size: .88rem; margin: 0}
.fw-footer-legal-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 20px;
  list-style: none;
  margin: 0;
  padding: 0}
.fw-footer-legal-links a { color: var(--fw-muted); font-size: .88rem}
.fw-footer-legal-links a:hover { color: var(--fw-accent)}

/* ============================================================
   Responsive: header collapse
   ============================================================ */
@media (max-width: 900px) {
  .fw-nav-list, .fw-nav-cta { display: none}
  .fw-burger { display: inline-flex}
}

/* AOS safety when JS off */
[data-aos] { opacity: 1}


/* --- cookie consent (per-site) --- */
.gdpr-cit-overlay{position:fixed;inset:0;opacity:0;visibility:hidden;transition:.25s;z-index:9998}
.gdpr-cit-overlay.is-open{opacity:1;visibility:visible}
.gdpr-cit-panel{position:fixed;background:var(--site-surface,#fff);color:var(--site-text,#1a1a1a);
  box-shadow:0 20px 60px rgba(0,0,0,.28);padding:24px;opacity:0;visibility:hidden;transition:.25s;z-index:9999}
.gdpr-cit-panel.is-open{opacity:1;visibility:visible}
.gdpr-cit-panel h3{margin:0 0 8px;font-size:1.2rem}
.gdpr-cit-panel>p{margin:0 0 16px;color:var(--site-muted,#666);font-size:.95rem}
.gdpr-cit-cat{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid rgba(128,128,128,.2)}
.gdpr-cit-cat h4{margin:0 0 2px;font-size:.98rem}
.gdpr-cit-cat p{margin:0;color:var(--site-muted,#777);font-size:.85rem}
.gdpr-cit-switch{position:relative;flex:0 0 auto;width:44px;height:24px}
.gdpr-cit-switch input{opacity:0;width:0;height:0;position:absolute}
.gdpr-cit-switch span{position:absolute;inset:0;background:#c9c9c9;border-radius:999px;transition:.2s;cursor:pointer}
.gdpr-cit-switch span::before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}
.gdpr-cit-switch input:checked+span{background:var(--site-accent,#2b7)}
.gdpr-cit-switch input:checked+span::before{transform:translateX(20px)}
.gdpr-cit-switch input:disabled+span{opacity:.6;cursor:not-allowed}
.gdpr-cit-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.gdpr-cit-actions button{flex:1;min-width:140px;padding:11px 16px;border:none;border-radius:10px;font:inherit;font-weight:600;cursor:pointer}
.gdpr-cit-actions #gdpr-cit-all{background:var(--site-accent,#2b7);color:#fff}
.gdpr-cit-actions #gdpr-cit-save{background:transparent;color:var(--site-text,#222);border:1px solid rgba(128,128,128,.4)}
.gdpr-cit-links{display:flex;gap:16px;margin-top:14px;font-size:.85rem}
.gdpr-cit-links a{color:var(--site-accent,#2b7);text-decoration:underline}
.gdpr-cit-trigger{position:fixed;left:18px;bottom:18px;width:44px;height:44px;border-radius:50%;border:none;cursor:pointer;
  background:var(--site-surface,#fff);color:var(--site-accent,#2b7);box-shadow:0 6px 18px rgba(0,0,0,.2);z-index:9997;font-size:1.1rem}

.gdpr-cit-overlay{background:rgba(0,0,0,.5)}
.gdpr-cit-panel{left:50%;bottom:24px;transform:translate(-50%,20px);width:min(560px,calc(100% - 32px));border-radius:16px}
.gdpr-cit-panel.is-open{transform:translate(-50%,0)}
@media(max-width:520px){.gdpr-cit-actions button{min-width:100%}}
#fab-stack-6eb{left:auto !important;right:18px !important}
@media(max-width:520px){#fab-stack-6eb{right:12px !important}}


/* --- form feedback popup (deterministic) --- */
.form-done-kf3{position:fixed;inset:0;z-index:10000;display:none;align-items:center;justify-content:center;
  padding:20px;background:rgba(8,10,14,.55);backdrop-filter:blur(2px)}
.form-done-kf3.is-open{display:flex}
.form-done-kf3__box{width:min(420px,100%);background:var(--site-surface,#fff);color:var(--site-text,#15181d);
  border-radius:16px;padding:32px 28px;text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.28);
  animation:form-done-kf3-in .22s ease-out}
@keyframes form-done-kf3-in{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
.form-done-kf3__mark{width:56px;height:56px;margin:0 auto 18px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-size:26px;line-height:1;
  background:var(--site-accent,#2e7d5b);color:#fff}
.form-done-kf3__title{margin:0 0 10px;font-size:1.35rem;line-height:1.25}
.form-done-kf3__text{margin:0 0 24px;line-height:1.6;color:var(--site-muted,#5b6472)}
.form-done-kf3__close{display:inline-block;cursor:pointer;border:0;border-radius:999px;
  padding:12px 30px;font:inherit;font-weight:600;background:var(--site-accent,#2e7d5b);color:#fff}
.form-done-kf3__close:hover{filter:brightness(1.08)}
.form-done-kf3__close:focus-visible{outline:2px solid var(--site-text,#15181d);outline-offset:3px}
@media(prefers-reduced-motion:reduce){.form-done-kf3__box{animation:none}}


/* --- safety net (deterministic) --- */
*,*::before,*::after{box-sizing:border-box}
html,body{overflow-x:hidden;overflow-x:clip;max-width:100%}
img,svg,video,iframe,canvas{max-width:100%}
table{max-width:100%}
/* simpleParallax оборачивает <img> в свой .simpleParallax — заставляем обёртку
   тянуться на всю высоту родителя, а фото внутри — cover. Проценты безопасны:
   при родителе без заданной высоты height:100% откатывается к auto (без коллапса). */
.simpleParallax{display:block;width:100%;height:100%}
.simpleParallax img{width:100%;height:100%;object-fit:cover}
/* Браузерный дефолт для <blockquote> и <figure> — margin: 1em 40px. Модель берёт
   эти семантические теги для отзывов и карточек с подписью, но сбросить поля
   забывает: внутри карточки в 267px текст сжимался до 131px (по 40px с каждой
   стороны) и переносился по одному слову, а между карточками зияли пустоты.
   Сбрасываем только горизонтальные поля — вертикальные обычно задуманы. */
blockquote, figure { margin-left: 0; margin-right: 0}
/* Вложенные фигуры внутри сеток тоже не должны добавлять отступ сбоку. */
figure > blockquote, figure > figcaption { margin-left: 0; margin-right: 0}
/* Если AOS не поднялся (CDN недоступен, блокировщик) — main.js вешает .no-aos.
   Без этого элементы с data-aos остались бы с opacity:0 из aos.css, то есть
   половина страницы была бы невидимой. */
html.no-aos [data-aos]{opacity:1 !important;transform:none !important}
/* Пользователи с prefers-reduced-motion получают контент сразу, без анимаций. */
@media(prefers-reduced-motion:reduce){
  [data-aos]{opacity:1 !important;transform:none !important;transition:none !important}
}

/* Юр-страницы собираются из кэшированного текста без классов сайта —
   читаемость обеспечиваем здесь, а не дизайн-системой. */
.legal-doc{max-width:72ch;margin:0 auto;padding:64px 20px;line-height:1.7}
.legal-doc h1{margin:0 0 .6em}
.legal-doc h2{margin:1.8em 0 .5em}
.legal-doc h3{margin:1.4em 0 .4em}
.legal-doc p,.legal-doc li{margin:0 0 .8em}
.legal-doc ul,.legal-doc ol{padding-left:1.4em;margin:0 0 1em}
.legal-doc table{width:100%;border-collapse:collapse;margin:0 0 1.2em}
.legal-doc th,.legal-doc td{border:1px solid currentColor;padding:.5em;text-align:left}

/* Запрет переноса в меню пробовали и убрали: при нехватке места nowrap даёт
   горизонтальный вылет всей страницы, а это хуже некрасивого переноса.
   Аккуратность переносов остаётся задачей вёрстки, а не страховки. */

/* Мобильная страховка: длинные слова и ссылки не растягивают страницу вширь. */
@media (max-width: 720px) {
  body { overflow-x: hidden}
  h1, h2, h3, p, li, td { overflow-wrap: break-word}
  /* Поля формы в ряд с жёсткой min-width не влезают в телефон. */
  input, select, textarea { max-width: 100%; min-width: 0}
  /* Картинки и медиа никогда не шире экрана. */
  img, svg, video, iframe, table { max-width: 100%}
}

/* mobile-flex-guard */
@media (max-width: 720px) {
  /* Ряды без объявленного переноса: на узком экране они сжимали детей
     до нечитаемого вместо переноса. Десктоп не затронут. */
.fw-sec-kicker,
.fw-btn,
.fw-topbar-link,
.fw-brand,
.fw-nav-cta,
.fw-drawer-list,
.fw-hero-eyebrow,
.fw-tier,
.fw-tier-list,
.fw-form-field,
.lightbox-qci.is-open,
.fw-footer-brand,
.fw-footer-list,
.fw-footer-contact,
.gdpr-cit-cat,
.gdpr-cit-links,
.form-done-kf3.is-open,
.form-done-kf3__mark { flex-wrap: wrap}
  /* Классика flexbox: ребёнок не сжимается уже своего min-content и
     вылезает за край контейнера. min-width:0 это снимает. */
.fw-sec-kicker > *,
.fw-btn > *,
.fw-topbar-link > *,
.fw-brand > *,
.fw-nav-cta > *,
.fw-drawer-list > *,
.fw-hero-eyebrow > *,
.fw-tier > *,
.fw-tier-list > *,
.fw-form-field > *,
.lightbox-qci.is-open > *,
.fw-footer-brand > *,
.fw-footer-list > *,
.fw-footer-contact > *,
.gdpr-cit-cat > *,
.gdpr-cit-links > *,
.form-done-kf3.is-open > *,
.form-done-kf3__mark > * { min-width: 0}
}


/* --- cookie consent (per-site) --- */
.gdpr-cit-overlay{position:fixed;inset:0;opacity:0;visibility:hidden;transition:.25s;z-index:9998;}
.gdpr-cit-overlay.is-open{opacity:1;visibility:visible;}
.gdpr-cit-panel{position:fixed;background:var(--site-surface,#fff);color:var(--site-text,#1a1a1a);
  box-shadow:0 20px 60px rgba(0,0,0,.28);padding:24px;opacity:0;visibility:hidden;transition:.25s;z-index:9999;}
.gdpr-cit-panel.is-open{opacity:1;visibility:visible;}
.gdpr-cit-panel h3{margin:0 0 8px;font-size:1.2rem;}
.gdpr-cit-panel>p{margin:0 0 16px;color:var(--site-muted,#666);font-size:.95rem;}
.gdpr-cit-cat{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid rgba(128,128,128,.2);}
.gdpr-cit-cat h4{margin:0 0 2px;font-size:.98rem;}
.gdpr-cit-cat p{margin:0;color:var(--site-muted,#777);font-size:.85rem;}
.gdpr-cit-switch{position:relative;flex:0 0 auto;width:44px;height:24px;}
.gdpr-cit-switch input{opacity:0;width:0;height:0;position:absolute;}
.gdpr-cit-switch span{position:absolute;inset:0;background:#c9c9c9;border-radius:999px;transition:.2s;cursor:pointer;}
.gdpr-cit-switch span::before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;}
.gdpr-cit-switch input:checked+span{background:var(--site-accent,#2b7);}
.gdpr-cit-switch input:checked+span::before{transform:translateX(20px);}
.gdpr-cit-switch input:disabled+span{opacity:.6;cursor:not-allowed;}
.gdpr-cit-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;}
.gdpr-cit-actions button{flex:1;min-width:140px;padding:11px 16px;border:none;border-radius:10px;font:inherit;font-weight:600;cursor:pointer;}
.gdpr-cit-actions #gdpr-cit-all{background:var(--site-accent,#2b7);color:#fff;}
.gdpr-cit-actions #gdpr-cit-save{background:transparent;color:var(--site-text,#222);border:1px solid rgba(128,128,128,.4);}
.gdpr-cit-links{display:flex;gap:16px;margin-top:14px;font-size:.85rem;}
.gdpr-cit-links a{color:var(--site-accent,#2b7);text-decoration:underline;}
.gdpr-cit-trigger{position:fixed;left:18px;bottom:18px;width:44px;height:44px;border-radius:50%;border:none;cursor:pointer;
  background:var(--site-surface,#fff);color:var(--site-accent,#2b7);box-shadow:0 6px 18px rgba(0,0,0,.2);z-index:9997;font-size:1.1rem;}

.gdpr-cit-overlay{background:rgba(0,0,0,.5);}
.gdpr-cit-panel{left:50%;bottom:24px;transform:translate(-50%,20px);width:min(560px,calc(100% - 32px));border-radius:16px;}
.gdpr-cit-panel.is-open{transform:translate(-50%,0);}
@media(max-width:520px){.gdpr-cit-actions button{min-width:100%;}}
#fab-stack-6eb{left:auto !important;right:18px !important;}
@media(max-width:520px){#fab-stack-6eb{right:12px !important;}}


/* --- form feedback popup (deterministic) --- */
.form-done-kf3{position:fixed;inset:0;z-index:10000;display:none;align-items:center;justify-content:center;
  padding:20px;background:rgba(8,10,14,.55);backdrop-filter:blur(2px);}
.form-done-kf3.is-open{display:flex;}
.form-done-kf3__box{width:min(420px,100%);background:var(--site-surface,#fff);color:var(--site-text,#15181d);
  border-radius:16px;padding:32px 28px;text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.28);
  animation:form-done-kf3-in .22s ease-out;}
@keyframes form-done-kf3-in{from{opacity:0;transform:translateY(12px) scale(.97);}to{opacity:1;transform:none;}}
.form-done-kf3__mark{width:56px;height:56px;margin:0 auto 18px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-size:26px;line-height:1;
  background:var(--site-accent,#2e7d5b);color:#fff;}
.form-done-kf3__title{margin:0 0 10px;font-size:1.35rem;line-height:1.25;}
.form-done-kf3__text{margin:0 0 24px;line-height:1.6;color:var(--site-muted,#5b6472);}
.form-done-kf3__close{display:inline-block;cursor:pointer;border:0;border-radius:999px;
  padding:12px 30px;font:inherit;font-weight:600;background:var(--site-accent,#2e7d5b);color:#fff;}
.form-done-kf3__close:hover{filter:brightness(1.08);}
.form-done-kf3__close:focus-visible{outline:2px solid var(--site-text,#15181d);outline-offset:3px;}
@media(prefers-reduced-motion:reduce){.form-done-kf3__box{animation:none;}}


/* --- safety net (deterministic) --- */
*,*::before,*::after{box-sizing:border-box;}
html,body{overflow-x:hidden;overflow-x:clip;max-width:100%;}
img,svg,video,iframe,canvas{max-width:100%;}
table{max-width:100%;}
/* simpleParallax оборачивает <img> в свой .simpleParallax — заставляем обёртку
   тянуться на всю высоту родителя, а фото внутри — cover. Проценты безопасны:
   при родителе без заданной высоты height:100% откатывается к auto (без коллапса). */
.simpleParallax{display:block;width:100%;height:100%;}
.simpleParallax img{width:100%;height:100%;object-fit:cover;}
/* Браузерный дефолт для <blockquote> и <figure> — margin: 1em 40px. Модель берёт
   эти семантические теги для отзывов и карточек с подписью, но сбросить поля
   забывает: внутри карточки в 267px текст сжимался до 131px (по 40px с каждой
   стороны) и переносился по одному слову, а между карточками зияли пустоты.
   Сбрасываем только горизонтальные поля — вертикальные обычно задуманы. */
blockquote, figure { margin-left: 0; margin-right: 0; }
/* Вложенные фигуры внутри сеток тоже не должны добавлять отступ сбоку. */
figure > blockquote, figure > figcaption { margin-left: 0; margin-right: 0; }
/* Если AOS не поднялся (CDN недоступен, блокировщик) — main.js вешает .no-aos.
   Без этого элементы с data-aos остались бы с opacity:0 из aos.css, то есть
   половина страницы была бы невидимой. */
html.no-aos [data-aos]{opacity:1 !important;transform:none !important;}
/* Пользователи с prefers-reduced-motion получают контент сразу, без анимаций. */
@media(prefers-reduced-motion:reduce){
  [data-aos]{opacity:1 !important;transform:none !important;transition:none !important;}
}

/* Юр-страницы собираются из кэшированного текста без классов сайта —
   читаемость обеспечиваем здесь, а не дизайн-системой. */
.legal-doc{max-width:72ch;margin:0 auto;padding:64px 20px;line-height:1.7;}
.legal-doc h1{margin:0 0 .6em;}
.legal-doc h2{margin:1.8em 0 .5em;}
.legal-doc h3{margin:1.4em 0 .4em;}
.legal-doc p,.legal-doc li{margin:0 0 .8em;}
.legal-doc ul,.legal-doc ol{padding-left:1.4em;margin:0 0 1em;}
.legal-doc table{width:100%;border-collapse:collapse;margin:0 0 1.2em;}
.legal-doc th,.legal-doc td{border:1px solid currentColor;padding:.5em;text-align:left;}

/* Запрет переноса в меню пробовали и убрали: при нехватке места nowrap даёт
   горизонтальный вылет всей страницы, а это хуже некрасивого переноса.
   Аккуратность переносов остаётся задачей вёрстки, а не страховки. */

/* Мобильная страховка: длинные слова и ссылки не растягивают страницу вширь. */
@media (max-width: 720px) {
  body { overflow-x: hidden; }
  h1, h2, h3, p, li, td { overflow-wrap: break-word; }
  /* Поля формы в ряд с жёсткой min-width не влезают в телефон. */
  input, select, textarea { max-width: 100%; min-width: 0; }
  /* Картинки и медиа никогда не шире экрана. */
  img, svg, video, iframe, table { max-width: 100%; }
}
