/* ==========================================================================
   KORDAVI — Design System
   "Editorial Ledger" art direction
   Class scheme: kdv-[module]-[element]--[state]
   ========================================================================== */

:root{
  /* shared tokens (also consumed by the cookie-consent banner) */
  --site-bg: #2b1622;
  --site-surface: #3a2130;
  --site-text: #e9e1e0;
  --site-muted: #a98f95;
  --site-accent: #d98ea3;

  /* internal extensions */
  --site-accent2: #e3b7a0;
  --site-surface-2: #472a3a;
  --kdv-line: rgba(233,225,224,.14);
  --kdv-container: 1160px;

  --kdv-font-heading: "Work Sans", Arial, sans-serif;
  --kdv-font-body: "Lora", Georgia, serif;
}

/* ==========================================================================
   Reset / base
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
html,body{ max-width:100%; overflow-x:hidden; }
body{
  margin:0;
  background:var(--site-bg);
  color:var(--site-text);
  font-family:var(--kdv-font-body);
  font-size:1rem;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
img,svg{ max-width:100%; display:block; }
a{ color:inherit; }
ul,ol{ margin:0; padding:0; }
li{ list-style:none; }
button{ font-family:inherit; }
input,textarea,select,button{ font-family:inherit; color:inherit; }

h1,h2,h3,h4,h5{
  font-family:var(--kdv-font-heading);
  font-weight:600;
  line-height:1.15;
  margin:0 0 1rem;
  color:var(--site-text);
}

p{ margin:0 0 1.2rem; }

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible{
  outline:2px solid var(--site-accent);
  outline-offset:3px;
}

.kdv-container{
  width:100%;
  max-width:var(--kdv-container);
  margin:0 auto;
  padding:0 24px;
}

/* ==========================================================================
   Section band system — full-width alternating plum stripes
   ========================================================================== */
.kdv-page{ counter-reset:kdv-section; }

.kdv-band{
  position:relative;
  padding:56px 0;
  counter-increment:kdv-section;
  overflow:hidden;
}
@media (min-width:768px){ .kdv-band{ padding:72px 0; } }
@media (min-width:1024px){ .kdv-band{ padding:92px 0; } }

.kdv-band--a{ background:var(--site-bg); }
.kdv-band--b{ background:var(--site-surface); }
.kdv-band--c{ background:var(--site-surface-2); }

/* signature element: oversized outline numerals, auto-numbered per band */
.kdv-signature-num{
  display:block;
  font-family:var(--kdv-font-heading);
  font-weight:700;
  line-height:.8;
  color:transparent;
  -webkit-text-stroke:1.5px var(--site-accent2);
  opacity:.45;
  user-select:none;
  margin:0 0 .5rem;
  margin-left:clamp(-24px, -3vw, -8px);
}
.kdv-signature-num::before{ content: counter(kdv-section, decimal-leading-zero); }
.kdv-signature-num--lg{ font-size:clamp(5rem, 15vw, 10rem); }
.kdv-signature-num--md{ font-size:clamp(3rem, 8vw, 5.5rem); }
.kdv-signature-num--sm{ font-size:clamp(2rem, 5vw, 3rem); margin-bottom:1rem; }

.kdv-eyebrow{
  display:inline-block;
  font-family:var(--kdv-font-heading);
  font-size:.8rem;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--site-accent);
  margin-bottom:1rem;
}

.kdv-section-head{ margin-bottom:3rem; }
.kdv-section-title{ font-size:clamp(1.8rem,4vw,2.6rem); max-width:16ch; }
.kdv-lead{ color:var(--site-muted); max-width:520px; font-size:1.08rem; }

.kdv-rule{ border:none; border-top:1px solid var(--kdv-line); margin:0; }

/* ==========================================================================
   Buttons
   ========================================================================== */
.kdv-btn{
  display:inline-flex;
  align-items:center;
  gap:.6rem;
  padding:.95rem 2.1rem;
  font-family:var(--kdv-font-heading);
  font-weight:600;
  font-size:.92rem;
  letter-spacing:.03em;
  text-decoration:none;
  border:1px solid var(--site-accent);
  border-radius:0;
  background:transparent;
  color:var(--site-text);
  cursor:pointer;
  transition:background .25s ease, color .25s ease, border-color .25s ease;
}
.kdv-btn--primary{ background:var(--site-accent); color:var(--site-bg); }
.kdv-btn--primary:hover{ background:transparent; color:var(--site-accent); }
.kdv-btn--ghost{ border-color:rgba(233,225,224,.35); }
.kdv-btn--ghost:hover{ border-color:var(--site-accent); color:var(--site-accent); }

/* ==========================================================================
   Cards
   ========================================================================== */
.kdv-card{
  background:var(--site-surface);
  border:1px solid var(--kdv-line);
  border-radius:0;
  padding:2.4rem;
}
.kdv-card-consult{
  background:var(--site-surface-2);
  border-radius:0;
  border-top:3px solid var(--site-accent);
  padding:2.8rem;
  text-align:center;
}

/* ==========================================================================
   Photography — duotone documentary imagery, filled boxes, no gaps
   ========================================================================== */
.kdv-photo{
  position:relative;
  overflow:hidden;
  background:var(--site-surface-2);
}
.kdv-photo img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:sepia(.32) saturate(1.35) hue-rotate(288deg) brightness(.92);
}
.kdv-photo::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(155deg, rgba(43,22,34,.5), rgba(217,142,163,.22));
  mix-blend-mode:multiply;
  pointer-events:none;
}
.kdv-photo--wide{ aspect-ratio:21/9; }
.kdv-photo--landscape{ aspect-ratio:16/9; }
.kdv-photo--portrait{ aspect-ratio:3/4; }
.kdv-photo--square{ aspect-ratio:1/1; }

/* ==========================================================================
   HEADER — thin utility bar + big logo/nav row (art.header_style)
   ========================================================================== */
#brand-bar-8yd{
  position:sticky;
  top:0;
  z-index:200;
  background:var(--site-bg);
  border-bottom:1px solid var(--kdv-line);
}
.kdv-header-utility{
  background:var(--site-surface-2);
  border-bottom:1px solid var(--kdv-line);
}
.kdv-utility-row{
  display:flex;
  flex-wrap:wrap;
  gap:.4rem 2rem;
  align-items:center;
  padding:.55rem 0;
  font-size:.78rem;
  letter-spacing:.02em;
  color:var(--site-muted);
}
.kdv-utility-item{ display:flex; align-items:center; gap:.5rem; white-space:nowrap; }
.kdv-utility-item i{ color:var(--site-accent); font-size:.75rem; }
.kdv-utility-item a{ text-decoration:none; color:inherit; }
.kdv-utility-item a:hover{ color:var(--site-accent); }
.kdv-utility-reg{ margin-left:auto; }
@media (max-width:640px){ .kdv-utility-reg{ display:none; } }

.kdv-header-main{ padding:1.3rem 0; transition:padding .25s ease; }
#brand-bar-8yd.is-scrolled .kdv-header-main{ padding:.8rem 0; }

.kdv-header-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
}

.kdv-logo{
  display:inline-flex;
  align-items:center;
  gap:.7rem;
  text-decoration:none;
  color:var(--site-text);
}
.kdv-logo svg{ width:34px; height:34px; color:var(--site-accent); flex-shrink:0; }
.kdv-logo-word{
  font-family:var(--kdv-font-heading);
  font-weight:700;
  font-size:1.5rem;
  letter-spacing:.01em;
  color:var(--site-text);
  white-space:nowrap;
}
.kdv-logo--footer{ margin-bottom:1.4rem; }

#site-nav-ma3{ display:flex; gap:2.4rem; }
.kdv-nav-link{
  font-family:var(--kdv-font-heading);
  font-size:.95rem;
  font-weight:500;
  text-decoration:none;
  color:var(--site-text);
  position:relative;
  padding-bottom:5px;
  transition:color .2s ease;
}
.kdv-nav-link::after{
  content:"";
  position:absolute;
  left:0; right:100%; bottom:0;
  height:2px;
  background:var(--site-accent);
  transition:right .25s ease;
}
.kdv-nav-link:hover{ color:var(--site-accent); }
.kdv-nav-link:hover::after{ right:0; }
.kdv-nav-link--active{ color:var(--site-accent); }
.kdv-nav-link--active::after{ right:0; }

#nav-toggle-dea{
  display:none;
  width:32px; height:22px;
  position:relative;
  background:none;
  border:none;
  padding:0;
  cursor:pointer;
  flex-direction:column;
  justify-content:space-between;
}
#nav-toggle-dea span{
  display:block; height:2px; width:100%;
  background:var(--site-text);
  transition:transform .3s ease, opacity .3s ease;
}
#nav-toggle-dea[aria-expanded="true"] span:nth-child(1){ transform:translateY(10px) rotate(45deg); }
#nav-toggle-dea[aria-expanded="true"] span:nth-child(2){ opacity:0; }
#nav-toggle-dea[aria-expanded="true"] span:nth-child(3){ transform:translateY(-10px) rotate(-45deg); }

#nav-overlay-qkt{
  position:fixed; inset:0;
  background:rgba(15,8,12,.6);
  opacity:0; pointer-events:none;
  transition:opacity .3s ease;
  z-index:220;
}
#nav-overlay-qkt.is-open{ opacity:1; pointer-events:auto; }

#slideout-7ax{
  position:fixed; top:0; right:0; height:100%;
  width:min(340px,86vw);
  background:var(--site-surface);
  border-left:1px solid var(--kdv-line);
  transform:translateX(100%);
  transition:transform .35s ease;
  z-index:230;
  padding:1.6rem 1.8rem 3rem;
  overflow-y:auto;
}
#slideout-7ax.is-open{ transform:translateX(0); }
#drawer-close-t5t{
  background:none; border:1px solid var(--kdv-line); color:var(--site-text);
  width:38px; height:38px; font-size:1.3rem; line-height:1;
  cursor:pointer; margin-bottom:2rem;
}
.kdv-drawer-nav{ display:flex; flex-direction:column; gap:1.4rem; }
.kdv-drawer-nav .kdv-nav-link{ font-size:1.1rem; }

@media (max-width:860px){
  #site-nav-ma3{ display:none; }
  #nav-toggle-dea{ display:flex; }
}
@media (min-width:861px){
  #slideout-7ax, #nav-overlay-qkt{ display:none; }
}

/* ==========================================================================
   HERO — editorial hero (index)
   ========================================================================== */
.kdv-hero-title{
  font-size:clamp(2.2rem, 5.2vw, 3.9rem);
  max-width:14ch;
  margin-bottom:2rem;
}
.kdv-hero-lead-col{ max-width:480px; }
.kdv-hero-lead{
  font-size:1.15rem;
  line-height:1.75;
  color:var(--site-muted);
  margin-bottom:2.2rem;
}
.kdv-hero-media{ margin-top:4.5rem; }
.kdv-hero-media .kdv-photo{ aspect-ratio:4/3; }
@media (min-width:640px){ .kdv-hero-media .kdv-photo{ aspect-ratio:16/9; } }
@media (min-width:1024px){ .kdv-hero-media .kdv-photo{ aspect-ratio:21/9; } }

/* ==========================================================================
   SPLIT FEATURE — alternating image/text rows
   ========================================================================== */
.kdv-split-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:3rem;
  align-items:center;
}
.kdv-split-row + .kdv-split-row{ margin-top:5rem; }
.kdv-split-row--reverse .kdv-split-media{ order:2; }
.kdv-split-row--reverse .kdv-split-content{ order:1; }
.kdv-split-media .kdv-photo{ aspect-ratio:4/5; }
.kdv-split-title{ font-size:clamp(1.5rem,3vw,2.1rem); }
.kdv-split-text{ color:var(--site-muted); }
@media (max-width:860px){
  .kdv-split-row{ grid-template-columns:1fr; gap:2rem; }
  .kdv-split-row--reverse .kdv-split-media,
  .kdv-split-row--reverse .kdv-split-content{ order:0; }
  .kdv-split-media .kdv-photo{ aspect-ratio:16/9; }
}

/* ==========================================================================
   GALLERY — 3-column image grid
   ========================================================================== */
.kdv-gallery-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(260px, 1fr));
  gap:1.8rem;
}
.kdv-gallery-item .kdv-photo{ aspect-ratio:4/5; }

/* ==========================================================================
   INTRO — centered manifesto paragraph
   ========================================================================== */
.kdv-intro{ text-align:center; }
.kdv-intro-text{
  max-width:660px;
  margin:0 auto;
  font-family:var(--kdv-font-body);
  font-style:italic;
  font-size:clamp(1.2rem,2.6vw,1.55rem);
  line-height:1.85;
  color:var(--site-text);
}

/* ==========================================================================
   CTA STRIP — full-width / split / centered-card variants
   ========================================================================== */
.kdv-cta-strip{ text-align:center; }
.kdv-cta-title{ font-size:clamp(1.7rem,3.6vw,2.4rem); }
.kdv-cta-text{ color:var(--site-muted); max-width:520px; margin:0 auto 1.8rem; }

.kdv-cta-strip--split .kdv-cta-row{
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:3rem;
  align-items:center;
  text-align:left;
}
.kdv-cta-strip--split .kdv-cta-text{ margin:0 0 1.6rem; }
.kdv-cta-contact{ display:flex; flex-direction:column; gap:.9rem; }
.kdv-cta-contact a{
  font-family:var(--kdv-font-heading);
  text-decoration:none;
  border-bottom:1px solid var(--kdv-line);
  padding-bottom:.8rem;
}
.kdv-cta-contact a:hover{ color:var(--site-accent); }
@media (max-width:860px){ .kdv-cta-strip--split .kdv-cta-row{ grid-template-columns:1fr; text-align:center; } }

.kdv-cta-strip--card .kdv-cta-card{
  max-width:640px;
  margin:0 auto;
  background:var(--site-surface-2);
  border-top:3px solid var(--site-accent);
  padding:3rem 2.4rem;
}

/* ==========================================================================
   PAGE HERO — side image / type-only / centered variants
   ========================================================================== */
.kdv-pagehero-title{ font-size:clamp(2.1rem,5vw,3.4rem); max-width:16ch; }
.kdv-pagehero-lead{ color:var(--site-muted); font-size:1.1rem; max-width:480px; }

.kdv-pagehero--side .kdv-pagehero-row{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:3rem;
  align-items:center;
}
.kdv-pagehero--side .kdv-pagehero-media .kdv-photo{ aspect-ratio:3/4; }
@media (max-width:860px){
  .kdv-pagehero--side .kdv-pagehero-row{ grid-template-columns:1fr; }
  .kdv-pagehero--side .kdv-pagehero-media .kdv-photo{ aspect-ratio:16/9; }
}

.kdv-pagehero--type{ text-align:left; }
.kdv-pagehero--type .kdv-pagehero-title{
  font-size:clamp(2.6rem, 8vw, 6rem);
  max-width:none;
}
.kdv-pagehero--type .kdv-pagehero-lead{ max-width:560px; }

.kdv-pagehero--centered{ text-align:center; }
.kdv-pagehero--centered .kdv-pagehero-title,
.kdv-pagehero--centered .kdv-pagehero-lead{ margin-left:auto; margin-right:auto; }

/* ==========================================================================
   SERVICES — alternating rows with outline numerals
   ========================================================================== */
.kdv-services-row{
  display:grid;
  grid-template-columns:130px 1fr;
  gap:2rem;
  padding:2.6rem 0;
  border-top:1px solid var(--kdv-line);
  align-items:start;
}
.kdv-services-row:first-of-type{ border-top:none; }
.kdv-services-row--reverse{ grid-template-columns:1fr 130px; }
.kdv-services-row--reverse .kdv-services-num{ order:2; text-align:right; }
.kdv-services-num{
  font-family:var(--kdv-font-heading);
  font-weight:700;
  font-size:2.6rem;
  color:transparent;
  -webkit-text-stroke:1.5px var(--site-accent2);
  opacity:.55;
  line-height:1;
}
.kdv-services-title{ font-size:1.4rem; margin-bottom:.7rem; }
.kdv-services-text{ color:var(--site-muted); max-width:60ch; }
@media (max-width:640px){
  .kdv-services-row,
  .kdv-services-row--reverse{ grid-template-columns:1fr; gap:.8rem; }
}

/* ==========================================================================
   PROCESS — 4 numbered steps in a row
   ========================================================================== */
.kdv-process-grid{
  position:relative;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(220px,1fr));
  gap:2.4rem 2rem;
}
.kdv-process-badge{
  width:56px; height:56px;
  border:2px solid var(--site-accent);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--kdv-font-heading);
  font-weight:700;
  margin-bottom:1.4rem;
}
.kdv-process-title{ font-size:1.2rem; margin-bottom:.6rem; }
.kdv-process-text{ color:var(--site-muted); font-size:.96rem; }

/* ==========================================================================
   TESTIMONIALS — 3-up quote cards
   ========================================================================== */
.kdv-testi-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(280px,1fr));
  gap:1.8rem;
}
.kdv-testi-card{
  background:var(--site-surface);
  border-left:3px solid var(--site-accent);
  padding:2.4rem;
}
.kdv-testi-quote{
  font-style:italic;
  font-size:1.08rem;
  line-height:1.75;
  margin-bottom:1.4rem;
}
.kdv-testi-name{ font-family:var(--kdv-font-heading); font-weight:600; }
.kdv-testi-role{ color:var(--site-muted); font-size:.88rem; }

/* ==========================================================================
   CHECKLIST — intro + checkmark list
   ========================================================================== */
.kdv-checklist-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:3.5rem;
  align-items:start;
}
.kdv-check-list{ display:flex; flex-direction:column; gap:1.1rem; }
.kdv-check-item{ display:flex; gap:.9rem; align-items:flex-start; }
.kdv-check-item i{ color:var(--site-accent); margin-top:.3rem; }
@media (max-width:860px){ .kdv-checklist-row{ grid-template-columns:1fr; gap:2rem; } }

/* ==========================================================================
   FAQ — accordion (collapsed by default, expands via .is-open)
   ========================================================================== */
.kdv-faq-item{ border-bottom:1px solid var(--kdv-line); }
.kdv-faq-item:first-child{ border-top:1px solid var(--kdv-line); }
.kdv-faq-toggle{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  background:none;
  border:none;
  text-align:left;
  padding:1.5rem 0;
  font-family:var(--kdv-font-heading);
  font-weight:600;
  font-size:1.08rem;
  color:var(--site-text);
  cursor:pointer;
}
.kdv-faq-toggle i{ color:var(--site-accent); transition:transform .3s ease; flex-shrink:0; }
.kdv-faq-item.is-open .kdv-faq-toggle i{ transform:rotate(45deg); }

.kdv-faq-body,
[data-fold] .kdv-fold-body{
  max-height:0;
  overflow:hidden;
  transition:max-height .3s ease;
}
.kdv-faq-item.is-open .kdv-faq-body,
[data-fold].is-open .kdv-fold-body{
  max-height:600px;
}
.kdv-faq-body-inner{ padding-bottom:1.6rem; color:var(--site-muted); }

/* ==========================================================================
   STATS — row of big numbers
   ========================================================================== */
.kdv-stats-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(180px,1fr));
  gap:2.2rem;
  text-align:center;
}
.kdv-stat{ padding:0 1rem; }
.kdv-stat-num{
  font-family:var(--kdv-font-heading);
  font-weight:700;
  font-size:clamp(2.4rem,6vw,3.8rem);
  color:var(--site-accent);
  line-height:1;
  margin-bottom:.6rem;
}
.kdv-stat-label{
  font-size:.85rem;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--site-muted);
}

/* ==========================================================================
   METHODOLOGY — numbered phases with rule between
   ========================================================================== */
.kdv-method-phase{
  display:grid;
  grid-template-columns:150px 1fr;
  gap:2.4rem;
  padding:2.8rem 0;
  border-top:1px solid var(--kdv-line);
}
.kdv-method-phase:first-child{ border-top:none; padding-top:0; }
.kdv-method-num{
  font-family:var(--kdv-font-heading);
  font-weight:700;
  font-size:3rem;
  color:transparent;
  -webkit-text-stroke:1.5px var(--site-accent2);
  opacity:.55;
  line-height:1;
}
.kdv-method-title{ font-size:1.35rem; margin-bottom:.6rem; }
.kdv-method-text{ color:var(--site-muted); max-width:65ch; }
@media (max-width:640px){ .kdv-method-phase{ grid-template-columns:1fr; gap:.8rem; } }

/* ==========================================================================
   WHY US — three arguments
   ========================================================================== */
.kdv-why-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(260px,1fr));
  gap:2.8rem;
}
.kdv-why-item{ border-top:2px solid var(--site-accent); padding-top:1.4rem; }
.kdv-why-title{ font-size:1.25rem; margin-bottom:.7rem; }
.kdv-why-text{ color:var(--site-muted); }

/* ==========================================================================
   CREDENTIALS — mark tiles with captions
   ========================================================================== */
.kdv-cred-row{
  display:flex;
  flex-wrap:wrap;
  gap:2.6rem;
  justify-content:space-between;
}
.kdv-cred-tile{ flex:1 1 160px; text-align:center; }
.kdv-cred-mark{
  height:60px;
  display:flex;
  align-items:center;
  justify-content:center;
  filter:grayscale(1) opacity(.75);
  margin-bottom:.9rem;
}
.kdv-cred-mark img{ max-height:100%; width:auto; margin:0 auto; }
.kdv-cred-caption{ font-size:.85rem; color:var(--site-muted); }

/* ==========================================================================
   QUOTE FEATURE — quote beside a portrait
   ========================================================================== */
.kdv-quote-row{
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:3.5rem;
  align-items:center;
}
.kdv-quote-portrait .kdv-photo{ aspect-ratio:3/4; }
.kdv-quote-mark{
  font-family:var(--kdv-font-heading);
  font-size:4rem;
  color:var(--site-accent);
  line-height:1;
  opacity:.6;
  margin-bottom:1rem;
}
.kdv-quote-text{
  font-style:italic;
  font-size:clamp(1.2rem,2.6vw,1.55rem);
  line-height:1.75;
  margin-bottom:1.4rem;
}
.kdv-quote-name{ font-family:var(--kdv-font-heading); font-weight:600; }
.kdv-quote-role{ color:var(--site-muted); font-size:.9rem; }
@media (max-width:860px){ .kdv-quote-row{ grid-template-columns:1fr; } }

/* ==========================================================================
   CONTACT — reassurance text + form
   ========================================================================== */
.kdv-contact-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:3.5rem;
  align-items:start;
}
.kdv-contact-info-list{ display:flex; flex-direction:column; gap:1.1rem; margin-top:1.8rem; }
.kdv-contact-info-list a{ text-decoration:none; }
.kdv-contact-info-list a:hover{ color:var(--site-accent); }
@media (max-width:860px){ .kdv-contact-row{ grid-template-columns:1fr; } }

/* ==========================================================================
   FORMS
   ========================================================================== */
.kdv-form-group{ margin-bottom:1.5rem; }
.kdv-form-label{
  display:block;
  font-family:var(--kdv-font-heading);
  font-size:.82rem;
  font-weight:600;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--site-muted);
  margin-bottom:.55rem;
}
.kdv-form-input,
.kdv-form-textarea{
  width:100%;
  background:var(--site-bg);
  border:1px solid rgba(233,225,224,.22);
  border-radius:0;
  color:var(--site-text);
  padding:.9rem 1rem;
  font-family:var(--kdv-font-body);
  font-size:1rem;
  transition:border-color .2s ease;
}
.kdv-form-textarea{ min-height:150px; resize:vertical; }
.kdv-form-input:focus,
.kdv-form-textarea:focus{ border-color:var(--site-accent); }
.kdv-form-input--error{ border-color:#e07a7a; }
.kdv-form-note{ font-size:.85rem; color:var(--site-muted); margin-top:.6rem; }

/* ==========================================================================
   FOOTER — big multi-column, formal-document rhythm
   ========================================================================== */
.kdv-footer{
  background:var(--site-surface-2);
  border-top:1px solid var(--kdv-line);
  padding:5.5rem 0 0;
}
.kdv-footer-grid{
  display:grid;
  grid-template-columns:1.3fr 1fr 1fr 1fr;
  gap:2.8rem;
  padding-bottom:3.5rem;
}
.kdv-footer-tagline{
  font-family:var(--kdv-font-heading);
  color:var(--site-accent);
  font-size:.95rem;
  margin-bottom:.9rem;
}
.kdv-footer-blurb{ color:var(--site-muted); font-size:.94rem; }
.kdv-footer-heading{
  font-size:.82rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--site-text);
  margin-bottom:1.2rem;
}
.kdv-footer-nav{ display:flex; flex-direction:column; gap:.8rem; }
.kdv-footer-nav a{ text-decoration:none; color:var(--site-muted); font-size:.95rem; }
.kdv-footer-nav a:hover{ color:var(--site-accent); }
.kdv-footer-legal{ color:var(--site-muted); font-size:.92rem; line-height:1.9; }
.kdv-footer-address{
  font-style:normal;
  display:flex; flex-direction:column; gap:.6rem;
  color:var(--site-muted); font-size:.94rem;
}
.kdv-footer-address a{ text-decoration:none; color:var(--site-muted); }
.kdv-footer-address a:hover{ color:var(--site-accent); }

.kdv-footer-bottom{ border-top:1px solid var(--kdv-line); }
.kdv-footer-bottom-row{
  display:flex;
  flex-wrap:wrap;
  gap:1rem 2rem;
  justify-content:space-between;
  align-items:center;
  padding:1.6rem 0;
  font-size:.85rem;
  color:var(--site-muted);
}
.kdv-footer-legal-links{ display:flex; gap:1.6rem; flex-wrap:wrap; }
.kdv-footer-legal-links a{ text-decoration:none; color:var(--site-muted); }
.kdv-footer-legal-links a:hover{ color:var(--site-accent); }

@media (max-width:960px){
  .kdv-footer-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:560px){
  .kdv-footer-grid{ grid-template-columns:1fr; gap:2.2rem; }
}

/* ==========================================================================
   Swiper (used only where a slider block is added)
   ========================================================================== */
.glider-wwb{ padding-bottom:3rem; }
.glider-wwb .swiper-slide{ height:auto; }
.swiper-pagination-bullet{
  background:var(--site-muted);
  opacity:.5;
  border-radius:0;
  width:8px; height:8px;
}
.swiper-pagination-bullet-active{ background:var(--site-accent); opacity:1; }
.swiper-button-prev, .swiper-button-next{ color:var(--site-accent); }
.swiper-button-prev:after, .swiper-button-next:after{ font-size:1.2rem; }

/* ==========================================================================
   Modals — scroll-safe overlay + dialog
   ========================================================================== */
.site-modal, .modal-c2h{
  position:fixed;
  inset:0;
  z-index:999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:2rem;
  opacity:0;
  visibility:hidden;
  transition:opacity .3s ease, visibility .3s ease;
}
.site-modal.is-open, .modal-c2h.is-open{ opacity:1; visibility:visible; }
.site-modal .kdv-modal-backdrop,
.modal-c2h .kdv-modal-backdrop{
  position:absolute; inset:0;
  background:rgba(20,10,15,.75);
}
.site-modal .kdv-modal-dialog,
.modal-c2h .kdv-modal-dialog{
  position:relative;
  max-width:560px;
  width:100%;
  max-height:85vh;
  overflow-y:auto;
  background:var(--site-surface);
  border:1px solid var(--kdv-line);
  border-radius:0;
  padding:2.6rem;
}
[data-close-dialog]{
  position:absolute; top:1.2rem; right:1.2rem;
  background:none; border:1px solid var(--kdv-line);
  width:36px; height:36px;
  color:var(--site-text);
  cursor:pointer;
}

/* ==========================================================================
   Legal / policy pages
   ========================================================================== */
.kdv-legal-content{ max-width:780px; margin:0 auto; }
.kdv-legal-content h2{ margin-top:2.6rem; font-size:1.4rem; }
.kdv-legal-content ul{ padding-left:1.4rem; margin-bottom:1.2rem; }
.kdv-legal-content li{ list-style:disc; margin-bottom:.5rem; color:var(--site-muted); }
.kdv-legal-content p{ color:var(--site-muted); }

/* ==========================================================================
   AOS tuning — subtle, low intensity
   ========================================================================== */
[data-aos]{ transition-duration:600ms !important; }

/* ==========================================================================
   Utility
   ========================================================================== */
.kdv-visually-hidden{
  position:absolute; width:1px; height:1px;
  padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0;
}


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

.consent-bnl-overlay{background:transparent;pointer-events:none;}
.consent-bnl-panel{left:0;right:0;bottom:0;width:100%;border-radius:16px 16px 0 0;transform:translateY(100%);}
.consent-bnl-panel>*{max-width:900px;margin-left:auto;margin-right:auto;}
.consent-bnl-panel.is-open{transform:translateY(0);}
@media(max-width:520px){.consent-bnl-actions button{min-width:100%;}}
#quick-actions-fur{left:auto !important;right:18px !important;}
@media(max-width:520px){#quick-actions-fur{right:12px !important;}}
html[data-cookie-open] #quick-actions-fur{bottom:min(46vh,260px) !important;}


/* --- 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;}
}
