/* ==========================================================================
   Wovero — parent brand design system  (v0.1 draft, 2026-08-13)
   Privacy-first, EU-sovereign software. Bad Hersfeld, Hessen.

   Identity rationale (own brand, not a vaagmodo/kaho copy):
   - Palette: warm parchment ground (bridges Kaho's Vellum family) + deep pine /
     emerald green. Green = trust, safety, EU/sovereign — distinct from
     vaagmodo (navy+steel) and Kaho (rust).
   - Type: Space Grotesk display (grotesk confidence for the software parent,
     distinct from both siblings' serifs) + Inter body + JetBrains Mono labels
     (the `//` label thread ties the product family together).
   - All fonts self-hosted (GDPR): no Google Fonts, no third-party CDN.
   All text/bg pairs target WCAG 2.1 AA in both themes (verified by script).
   ========================================================================== */

/* ---------- self-hosted fonts ---------- */
@font-face { font-family:"Space Grotesk"; font-style:normal; font-weight:500; font-display:swap; src:url("./fonts/space-grotesk-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family:"Space Grotesk"; font-style:normal; font-weight:600; font-display:swap; src:url("./fonts/space-grotesk-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family:"Space Grotesk"; font-style:normal; font-weight:700; font-display:swap; src:url("./fonts/space-grotesk-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family:"Inter"; font-style:normal; font-weight:400; font-display:swap; src:url("./fonts/inter-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family:"Inter"; font-style:normal; font-weight:500; font-display:swap; src:url("./fonts/inter-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family:"Inter"; font-style:normal; font-weight:600; font-display:swap; src:url("./fonts/inter-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family:"JetBrains Mono"; font-style:normal; font-weight:400; font-display:swap; src:url("./fonts/jetbrains-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family:"JetBrains Mono"; font-style:normal; font-weight:500; font-display:swap; src:url("./fonts/jetbrains-mono-latin-500-normal.woff2") format("woff2"); }

/* ---------- primitives ---------- */
:root {
  --w-pine-900:#0E1F18; --w-pine-800:#133026; --w-pine-700:#1B4130;
  --w-pine-600:#235039; --w-pine-500:#2C6547;
  --w-emerald-600:#1B7A4B; --w-emerald-500:#2E9160; --w-emerald-400:#46B983; --w-emerald-300:#6FD6A2;

  --w-paper:#F5F2E9; --w-paper-2:#ECE7D8; --w-surface:#FBFAF3;
  --w-sand-200:#E0D9C6; --w-sand-300:#CBC1A8;
  --w-ink:#1B211C; --w-ink-2:#14201A; --w-ink-muted:#4E574C;

  --w-night:#0E1A16; --w-night-2:#060F0B; --w-night-surface:#15241D;
  --w-night-border:#243A2E; --w-night-border-2:#33503F;
  --w-mist:#E8EFE7; --w-mist-muted:#9FB2A3;

  /* type */
  --font-display:"Space Grotesk", system-ui, sans-serif;
  --font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;
  --lead-tight:1.06; --lead-snug:1.22; --lead-body:1.62;

  /* space / radius / shadow */
  --r-sm:6px; --r-md:10px; --r-lg:16px; --r-xl:22px; --r-full:999px;
  --shadow-sm:0 1px 2px rgba(14,31,24,.06);
  --shadow-md:0 4px 16px rgba(14,31,24,.08), 0 1px 3px rgba(14,31,24,.05);
  --shadow-lg:0 16px 44px rgba(14,31,24,.14), 0 4px 12px rgba(14,31,24,.07);

  /* motion */
  --ease:cubic-bezier(.16,1,.3,1);
  --t-fast:150ms; --t-base:260ms; --t-reveal:640ms;
}

/* ---------- semantic: light (default) ---------- */
:root, :root[data-theme="light"] {
  color-scheme:light;
  --bg:var(--w-paper); --bg-2:var(--w-paper-2); --surface:var(--w-surface);
  --border:var(--w-sand-200); --border-strong:var(--w-sand-300);
  --text:var(--w-ink); --text-muted:var(--w-ink-muted); --heading:var(--w-ink-2);
  --primary:var(--w-pine-700); --primary-hover:var(--w-pine-800); --on-primary:var(--w-paper);
  --link:var(--w-pine-700); --accent:var(--w-pine-600); --accent-2:var(--w-emerald-500);
  --logo-a:var(--w-ink-2); --logo-b:var(--w-pine-600);
  /* Signet lockup (tile mark + WOVERO) */
  --logo-tile:#1B4130; --logo-w:#F5F2E9; --logo-word:#133026; --logo-stroke:transparent;
  --nav-bg:rgba(245,242,233,.8);
}

/* ---------- semantic: dark ---------- */
:root[data-theme="dark"] {
  color-scheme:dark;
  --bg:var(--w-night); --bg-2:var(--w-night-2); --surface:var(--w-night-surface);
  --border:var(--w-night-border); --border-strong:var(--w-night-border-2);
  --text:var(--w-mist); --text-muted:var(--w-mist-muted); --heading:#FFFFFF;
  --primary:var(--w-emerald-400); --primary-hover:var(--w-emerald-300); --on-primary:#08130D;
  --link:var(--w-emerald-300); --accent:var(--w-emerald-300); --accent-2:var(--w-emerald-400);
  --logo-a:#FFFFFF; --logo-b:var(--w-emerald-300);
  --logo-tile:#17392A; --logo-w:#6FD6A2; --logo-word:#F1F0E6; --logo-stroke:#2E9160;
  --nav-bg:rgba(14,26,22,.78);
}
@media (prefers-color-scheme:dark) {
  :root:not([data-theme]) {
    color-scheme:dark;
    --bg:var(--w-night); --bg-2:var(--w-night-2); --surface:var(--w-night-surface);
    --border:var(--w-night-border); --border-strong:var(--w-night-border-2);
    --text:var(--w-mist); --text-muted:var(--w-mist-muted); --heading:#FFFFFF;
    --primary:var(--w-emerald-400); --primary-hover:var(--w-emerald-300); --on-primary:#08130D;
    --link:var(--w-emerald-300); --accent:var(--w-emerald-300); --accent-2:var(--w-emerald-400);
    --logo-a:#FFFFFF; --logo-b:var(--w-emerald-300);
  --logo-tile:#17392A; --logo-w:#6FD6A2; --logo-word:#F1F0E6; --logo-stroke:#2E9160;
    --nav-bg:rgba(14,26,22,.78);
  }
}

/* "night" bands keep the dark ground in BOTH themes (hero + cta + footer) */
.night {
  --bg:var(--w-night); --surface:var(--w-night-surface);
  --border:var(--w-night-border); --border-strong:var(--w-night-border-2);
  --text:var(--w-mist); --text-muted:var(--w-mist-muted); --heading:#FFFFFF;
  --primary:var(--w-emerald-400); --primary-hover:var(--w-emerald-300); --on-primary:#08130D;
  --link:var(--w-emerald-300); --accent:var(--w-emerald-300); --accent-2:var(--w-emerald-400);
  --logo-a:#FFFFFF; --logo-b:var(--w-emerald-300);
  --logo-tile:#17392A; --logo-w:#6FD6A2; --logo-word:#F1F0E6; --logo-stroke:#2E9160;
  background:var(--w-night); color:var(--w-mist);
}

/* ---------- base ---------- */
*,*::before,*::after { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:5.5rem; -webkit-text-size-adjust:100%; }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }
body {
  margin:0; font-family:var(--font-body); background:var(--bg); color:var(--text);
  line-height:var(--lead-body); -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
h1,h2,h3 { font-family:var(--font-display); font-weight:600; color:var(--heading); line-height:var(--lead-snug); letter-spacing:-.02em; margin:0; text-wrap:balance; }
h1 { line-height:var(--lead-tight); letter-spacing:-.035em; }
p { margin:0; }
a { color:var(--link); text-decoration:none; }
img,svg { display:block; }
::selection { background:var(--w-emerald-400); color:#08130D; }

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

.wrap { width:100%; max-width:72rem; margin-inline:auto; padding-inline:1.25rem; }
@media (min-width:640px){ .wrap{ padding-inline:2rem; } }
.section { padding-block:clamp(3.5rem,8vw,7rem); }

.eyebrow {
  font-family:var(--font-mono); font-size:.78rem; font-weight:500; letter-spacing:.02em;
  text-transform:uppercase; color:var(--accent);
}
.night .eyebrow { color:var(--w-emerald-300); }
.lead { font-size:clamp(1.05rem,2.2vw,1.25rem); color:var(--text-muted); line-height:1.55; }

.skip-link {
  position:absolute; left:1rem; top:-4rem; z-index:100; background:var(--primary); color:var(--on-primary);
  padding:.6rem 1rem; border-radius:var(--r-md); font-weight:600; transition:top var(--t-fast) var(--ease);
}
.skip-link:focus { top:1rem; }

/* ---------- buttons ---------- */
.btn {
  display:inline-flex; align-items:center; gap:.5rem; font-family:var(--font-body); font-weight:600;
  font-size:.98rem; border-radius:var(--r-full); padding:.7rem 1.35rem; border:1px solid transparent; cursor:pointer;
  transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.btn-primary { background:var(--primary); color:var(--on-primary); }
.btn-primary:hover { background:var(--primary-hover); }
.btn-ghost { border-color:var(--border-strong); color:var(--heading); }
.btn-ghost:hover { border-color:var(--primary); color:var(--primary); }
.night .btn-ghost { border-color:var(--w-night-border-2); color:#fff; }
.night .btn-ghost:hover { border-color:var(--w-emerald-300); color:var(--w-emerald-300); }
.arrow { display:inline-block; transition:transform var(--t-fast) var(--ease); }
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  a:hover .arrow, .btn:hover .arrow, .group:hover .arrow { transform:translateX(3px); }
}
@media (max-width:420px){ .btn{ width:100%; justify-content:center; } }

/* ---------- header ---------- */
.hdr {
  position:fixed; inset-inline:0; top:0; z-index:50; border-bottom:1px solid var(--border);
  background:var(--nav-bg); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
}
.hdr .wrap { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-block:.7rem; }
.brand { display:inline-flex; align-items:center; }
.brand svg { height:1.55rem; width:auto; }
.nav { display:none; align-items:center; gap:.35rem; }
@media (min-width:860px){ .nav{ display:flex; } }
.nav a.navlink {
  position:relative; font-size:.92rem; font-weight:500; color:var(--text); padding:.5rem .7rem; border-radius:var(--r-sm);
}
.nav a.navlink::after {
  content:""; position:absolute; left:.7rem; right:.7rem; bottom:.32rem; height:1px; background:currentColor;
  transform:scaleX(0); transform-origin:left; transition:transform var(--t-base) var(--ease);
}
.nav a.navlink:hover { color:var(--heading); }
.nav a.navlink:hover::after, .nav a.navlink:focus-visible::after { transform:scaleX(1); }
.hdr-actions { display:flex; align-items:center; gap:.5rem; }
.theme-toggle {
  display:inline-flex; align-items:center; justify-content:center; width:2.2rem; height:2.2rem; border-radius:var(--r-full);
  border:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; transition:border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.theme-toggle:hover { border-color:var(--border-strong); color:var(--heading); }
.theme-toggle .sun{ display:none; } .theme-toggle .moon{ display:block; }
:root[data-theme="dark"] .theme-toggle .sun{ display:block; } :root[data-theme="dark"] .theme-toggle .moon{ display:none; }
@media (prefers-color-scheme:dark){ :root:not([data-theme]) .theme-toggle .sun{ display:block; } :root:not([data-theme]) .theme-toggle .moon{ display:none; } }
.nav-cta { display:none; } @media (min-width:640px){ .nav-cta{ display:inline-flex; } }

/* ---------- hero ---------- */
.hero { position:relative; overflow:hidden; padding-top:6.5rem; }
.hero::before {
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background:
    radial-gradient(60rem 32rem at 78% -8%, rgba(70,185,131,.16), transparent 60%),
    radial-gradient(48rem 28rem at 8% 108%, rgba(43,101,71,.20), transparent 60%);
}
.hero .wrap { position:relative; padding-block:clamp(2.5rem,6vw,4.5rem); }
.hero-grid { display:grid; gap:2.5rem clamp(2rem,5vw,4rem); align-items:center; }
@media (min-width:960px){ .hero-grid{ grid-template-columns:minmax(0,1fr) minmax(0,26rem); } }
.hero h1 { font-size:clamp(2.4rem,6.2vw,4.1rem); font-weight:700; max-width:15ch; }
.hero h1 .g { color:var(--w-emerald-300); }
.hero p.lead { margin-top:1.4rem; max-width:44ch; color:var(--w-mist-muted); }
.hero-cta { margin-top:2rem; display:flex; flex-wrap:wrap; gap:.85rem; }
.proof {
  margin-top:2.4rem; padding-top:1.4rem; border-top:1px solid var(--w-night-border);
  display:flex; flex-wrap:wrap; gap:.35rem .9rem; list-style:none; padding-left:0;
  font-family:var(--font-mono); font-size:.8rem; color:var(--w-mist-muted);
}
.proof li { display:flex; align-items:center; gap:.9rem; }
.proof li:not(:last-child)::after { content:"·"; color:#557066; }
@media (max-width:560px){ .proof li{ width:100%; } .proof li:not(:last-child)::after{ content:none; } }

/* hero visual: sovereignty diagram card */
.hero-visual {
  position:relative; border:1px solid var(--w-night-border-2); border-radius:var(--r-lg);
  background:linear-gradient(180deg, rgba(21,36,29,.9), rgba(10,20,15,.9)); padding:1.4rem; box-shadow:var(--shadow-lg);
}
.hero-visual .hv-top { display:flex; align-items:center; gap:.5rem; margin-bottom:1.1rem; }
.hv-dot { width:.55rem; height:.55rem; border-radius:var(--r-full); }
.hv-label { margin-left:auto; font-family:var(--font-mono); font-size:.68rem; letter-spacing:.08em; color:#7d9488; text-transform:uppercase; }
.hv-flow { display:grid; gap:.6rem; }
.hv-node {
  display:flex; align-items:center; gap:.7rem; padding:.7rem .85rem; border-radius:var(--r-md);
  border:1px solid var(--w-night-border-2); background:rgba(14,31,24,.55); font-size:.85rem; color:#d6e4d9;
}
.hv-node .ic { color:var(--w-emerald-300); flex:none; }
.hv-node small { display:block; color:#89a094; font-family:var(--font-mono); font-size:.66rem; letter-spacing:.03em; }
.hv-arrow { display:flex; justify-content:center; color:#4a6459; }
.hv-node.is-eu { border-color:rgba(70,185,131,.45); box-shadow:inset 0 0 0 1px rgba(70,185,131,.08); }
.hv-badge { margin-left:auto; font-family:var(--font-mono); font-size:.6rem; letter-spacing:.06em; text-transform:uppercase; color:#08130D; background:var(--w-emerald-300); padding:.15rem .45rem; border-radius:var(--r-full); }

/* ---------- generic section pieces ---------- */
.kicker-h2 { margin-top:.55rem; font-size:clamp(1.7rem,3.6vw,2.5rem); }
.section-intro { margin-top:1.1rem; max-width:52ch; color:var(--text-muted); font-size:1.05rem; }

.grid-cards { display:grid; gap:1.1rem; margin-top:2.6rem; }
.card {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--shadow-sm);
  transition:box-shadow var(--t-base) var(--ease), transform var(--t-base) var(--ease), border-color var(--t-base) var(--ease);
}
.card-link:hover { box-shadow:var(--shadow-lg); border-color:var(--border-strong); transform:translateY(-3px); }
@media (prefers-reduced-motion:reduce){ .card-link:hover{ transform:none; } }

/* product cards */
.products { display:grid; gap:1.25rem; margin-top:2.6rem; }
@media (min-width:820px){ .products{ grid-template-columns:1fr 1fr; } }
.product { display:flex; flex-direction:column; padding:1.9rem; }
@media (min-width:640px){ .product{ padding:2.3rem; } }
.product .p-label { font-family:var(--font-mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--accent); }
.product h3 { font-family:var(--font-display); font-size:2rem; font-weight:600; margin-top:.85rem; color:var(--heading); }
.product .p-body { margin-top:.9rem; color:var(--text-muted); font-size:1rem; flex:1; }
.product .p-tags { margin-top:1.2rem; display:flex; flex-wrap:wrap; gap:.4rem; }
.chip {
  font-family:var(--font-mono); font-size:.7rem; color:var(--text-muted); border:1px solid var(--border-strong);
  border-radius:var(--r-full); padding:.25rem .65rem;
}
.product .p-link { margin-top:1.5rem; font-weight:600; color:var(--link); display:inline-flex; align-items:center; gap:.4rem; }

/* why-sovereign feature grid */
.features { display:grid; gap:1.1rem; margin-top:2.6rem; }
@media (min-width:640px){ .features{ grid-template-columns:1fr 1fr; } }
@media (min-width:980px){ .features{ grid-template-columns:repeat(4,1fr); } }
.feature { padding:1.6rem; display:flex; flex-direction:column; }
.feature .f-ic {
  width:2.6rem; height:2.6rem; border-radius:var(--r-md); display:flex; align-items:center; justify-content:center;
  background:color-mix(in srgb, var(--accent-2) 14%, transparent); color:var(--accent-2);
}
.feature h3 { font-family:var(--font-display); font-size:1.1rem; font-weight:600; margin-top:1.1rem; color:var(--heading); letter-spacing:-.01em; }
.feature p { margin-top:.6rem; font-size:.92rem; color:var(--text-muted); }

/* company split */
.company { display:grid; gap:2rem; align-items:center; }
@media (min-width:860px){ .company{ grid-template-columns:1.1fr .9fr; gap:3.5rem; } }
.stat-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.stat { padding:1.4rem; }
.stat .n { font-family:var(--font-display); font-size:1.7rem; font-weight:700; color:var(--heading); letter-spacing:-.02em; }
.stat .l { margin-top:.4rem; font-size:.85rem; color:var(--text-muted); }

/* cta band */
.cta-band { text-align:center; }
.cta-band h2 { font-size:clamp(1.8rem,4vw,2.7rem); max-width:20ch; margin-inline:auto; }
.cta-band p { margin-top:1rem; color:var(--w-mist-muted); max-width:46ch; margin-inline:auto; }
.cta-band .btns { margin-top:2rem; display:flex; flex-wrap:wrap; gap:.85rem; justify-content:center; }

/* ---------- footer ---------- */
.foot { padding-block:3.5rem 2rem; }
.foot-grid { display:grid; gap:2rem; grid-template-columns:1fr; }
@media (min-width:720px){ .foot-grid{ grid-template-columns:1.6fr 1fr 1fr 1fr; } }
.foot h4 { font-family:var(--font-body); font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; color:#8ea295; margin:0 0 .9rem; }
.foot ul { list-style:none; margin:0; padding:0; display:grid; gap:.55rem; }
.foot a { color:#b9c9bd; font-size:.9rem; } .foot a:hover { color:#fff; }
.foot .tag { color:#8ea295; font-size:.88rem; margin-top:1rem; max-width:30ch; }
.foot-bottom {
  margin-top:2.6rem; padding-top:1.4rem; border-top:1px solid var(--w-night-border);
  display:flex; flex-wrap:wrap; gap:.6rem 1.4rem; justify-content:space-between; align-items:center;
  font-size:.82rem; color:#8ea295;
}
.foot-bottom .fb-links { display:flex; gap:1.2rem; flex-wrap:wrap; }
.foot-bottom a { color:#8ea295; } .foot-bottom a:hover { color:#fff; }

/* ---------- prose (legal pages) ---------- */
.prose { max-width:60ch; }
.prose h1 { font-size:clamp(2rem,4vw,2.6rem); }
.prose h2 { font-family:var(--font-display); font-size:1.3rem; font-weight:600; margin-top:2.4rem; color:var(--heading); }
.prose p, .prose li { color:var(--text-muted); margin-top:.9rem; }
.prose a { color:var(--link); text-decoration:underline; text-underline-offset:3px; }
.prose ul { padding-left:1.2rem; } .prose li { margin-top:.4rem; }
.prose .placeholder { color:var(--accent-2); font-family:var(--font-mono); font-size:.85em; }
.back-link { display:inline-flex; align-items:center; gap:.4rem; font-size:.9rem; font-weight:500; color:var(--link); margin-bottom:1.5rem; }

/* ---------- scroll reveal ---------- */
@media (prefers-reduced-motion:no-preference){
  html.js .reveal { opacity:0; translate:0 16px; transition:opacity var(--t-reveal) var(--ease), translate var(--t-reveal) var(--ease); }
  html.js .reveal.in { opacity:1; translate:0 0; }
  html.js .stagger > .reveal:nth-child(2){ transition-delay:70ms; }
  html.js .stagger > .reveal:nth-child(3){ transition-delay:140ms; }
  html.js .stagger > .reveal:nth-child(4){ transition-delay:210ms; }
  html.js .hero-enter { animation:heroIn 560ms var(--ease) both; }
  html.js .hero-enter.d1{ animation-delay:80ms; } html.js .hero-enter.d2{ animation-delay:160ms; } html.js .hero-enter.d3{ animation-delay:240ms; }
}
@keyframes heroIn { from{ opacity:0; transform:translateY(12px); } }

/* ---------- wordmark lockup ---------- */
/* Signet lockup (tile mark + WOVERO wordmark), themed via --logo-* vars */
.wv-logo { height:1.55rem; width:auto; flex:none; }
.foot .wv-logo { height:1.85rem; }

.hv-foot {
  margin-top:1.1rem; padding-top:.9rem; border-top:1px solid var(--w-night-border);
  font-family:var(--font-mono); font-size:.68rem; letter-spacing:.02em; color:#89a094; line-height:1.5;
}

/* ==========================================================================
   Multi-page additions (2026-08-13): nav state, mobile menu, page hero,
   service rows, split blocks, contact, kaho feature grid, CTA row.
   ========================================================================== */

/* active nav link */
.nav a.navlink.is-active { color:var(--heading); }
.nav a.navlink.is-active::after { transform:scaleX(1); }

/* mobile menu */
.menu-btn {
  display:inline-flex; align-items:center; justify-content:center; width:2.2rem; height:2.2rem;
  border-radius:var(--r-full); border:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer;
  transition:border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.menu-btn:hover { border-color:var(--border-strong); color:var(--heading); }
@media (min-width:860px){ .menu-btn{ display:none; } }
.mobile-menu { display:none; border-top:1px solid var(--border); background:var(--nav-bg); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); }
.mobile-menu.open { display:block; }
@media (min-width:860px){ .mobile-menu{ display:none !important; } }
.mobile-menu .wrap { display:flex; flex-direction:column; gap:.15rem; padding-block:.8rem 1.1rem; }
.mobile-menu a { padding:.7rem .3rem; font-size:1.02rem; font-weight:500; color:var(--text); border-bottom:1px solid var(--border); }
.mobile-menu a.is-active { color:var(--heading); }
.mobile-menu a:last-of-type { border-bottom:none; }
.mobile-menu .btn { margin-top:.9rem; width:100%; justify-content:center; }

/* page hero (interior pages) */
.page-hero { padding-top:7.5rem; }
.page-hero .wrap { padding-block:clamp(1.4rem,4vw,2.6rem) clamp(1rem,3vw,1.6rem); }
.crumb { font-family:var(--font-mono); font-size:.76rem; letter-spacing:.02em; color:var(--text-muted); }
.crumb a { color:var(--text-muted); } .crumb a:hover { color:var(--heading); }
.page-hero h1 { font-size:clamp(2.1rem,5vw,3.3rem); font-weight:700; max-width:20ch; margin-top:.7rem; }
.page-hero .lead { margin-top:1.2rem; max-width:56ch; color:var(--text-muted); }
.night.page-hero .lead { color:var(--w-mist-muted); }

/* interior hero: fill the empty right half with a key-facts card */
.page-hero-grid { display:grid; gap:2rem; }
@media (min-width:900px){
  .page-hero-grid { grid-template-columns:1.15fr .85fr; align-items:center; gap:3rem; }
  .page-hero-grid .ph-lead .lead { max-width:52ch; }
}
.hero-facts { align-self:center; background:var(--w-night-surface); border:1px solid var(--w-night-border); border-radius:var(--r-lg); padding:1.4rem 1.5rem; box-shadow:var(--shadow-md); }
.hero-facts .hf-label { font-family:var(--font-mono); font-size:.72rem; font-weight:500; text-transform:uppercase; letter-spacing:.06em; color:var(--w-emerald-300); margin-bottom:1rem; }
.hero-facts ul { list-style:none; margin:0; padding:0; display:grid; gap:.85rem; }
.hero-facts li { display:flex; align-items:flex-start; gap:.65rem; color:var(--w-mist); font-size:.95rem; line-height:1.35; }
.hero-facts li::before { content:""; flex:none; width:7px; height:7px; margin-top:.5rem; border-radius:2px; background:var(--w-emerald-400); }
@media (max-width:899px){ .hero-facts { display:none; } }

/* section header block */
.sec-head { max-width:60ch; }
.sec-head .kicker-h2 { max-width:22ch; }

/* service rows */
.svc-list { display:grid; gap:1.1rem; margin-top:2.8rem; }
.svc {
  display:grid; gap:1rem 2rem; padding:1.9rem; align-items:start;
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--shadow-sm);
  transition:box-shadow var(--t-base) var(--ease), border-color var(--t-base) var(--ease), transform var(--t-base) var(--ease);
}
@media (min-width:820px){ .svc{ grid-template-columns:auto 1fr; padding:2.3rem; gap:2.4rem; } }
.svc:hover { box-shadow:var(--shadow-md); border-color:var(--border-strong); }
.svc-num {
  font-family:var(--font-mono); font-size:.8rem; color:var(--accent); font-weight:500;
  padding-top:.35rem; letter-spacing:.04em;
}
.svc-body h3 { font-family:var(--font-display); font-size:1.4rem; font-weight:600; color:var(--heading); letter-spacing:-.015em; }
.svc-body .svc-sub { margin-top:.2rem; font-family:var(--font-mono); font-size:.74rem; text-transform:uppercase; letter-spacing:.05em; color:var(--accent); }
.svc-body p { margin-top:1rem; color:var(--text-muted); font-size:1rem; max-width:64ch; }
.svc-tags { margin-top:1.2rem; display:flex; flex-wrap:wrap; gap:.4rem; }

/* flagship service (first, emphasised) */
.svc.is-flagship { border-color:var(--border-strong); box-shadow:var(--shadow-md); }
.svc.is-flagship .svc-body h3 { font-size:1.6rem; }
.svc-flag { display:inline-block; margin-bottom:.9rem; font-family:var(--font-mono); font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--on-primary); background:var(--primary); padding:.2rem .6rem; border-radius:var(--r-full); }

/* generic two-column split */
.split { display:grid; gap:2rem; align-items:start; }
@media (min-width:860px){ .split{ grid-template-columns:1.05fr .95fr; gap:3.5rem; } }
.split.center { align-items:center; }

/* definition / fact list */
.facts { display:grid; gap:0; margin-top:1.6rem; border-top:1px solid var(--border); }
.facts div { display:grid; grid-template-columns:1fr; gap:.15rem; padding:.9rem 0; border-bottom:1px solid var(--border); }
@media (min-width:520px){ .facts div{ grid-template-columns:11rem 1fr; gap:1rem; align-items:baseline; } }
.facts dt { font-family:var(--font-mono); font-size:.78rem; letter-spacing:.02em; color:var(--text-muted); text-transform:uppercase; }
.facts dd { margin:0; color:var(--heading); font-size:.98rem; font-weight:500; }

/* prose lead within sections */
.lead-body { color:var(--text-muted); font-size:1.05rem; max-width:60ch; }
.lead-body + .lead-body { margin-top:1.1rem; }

/* value / bullet grid */
.value-grid { display:grid; gap:1.1rem; margin-top:2.6rem; }
@media (min-width:640px){ .value-grid{ grid-template-columns:1fr 1fr; } }
@media (min-width:980px){ .value-grid.cols-3{ grid-template-columns:repeat(3,1fr); } }
.value { padding:1.6rem; }
.value h3 { font-family:var(--font-display); font-size:1.12rem; font-weight:600; color:var(--heading); letter-spacing:-.01em; }
.value p { margin-top:.6rem; font-size:.94rem; color:var(--text-muted); }
.value .v-ic {
  width:2.6rem; height:2.6rem; border-radius:var(--r-md); display:flex; align-items:center; justify-content:center; margin-bottom:1rem;
  background:color-mix(in srgb, var(--accent-2) 14%, transparent); color:var(--accent-2);
}

/* kaho feature spotlight */
.kaho-hero-visual {
  border:1px solid var(--w-night-border-2); border-radius:var(--r-lg);
  background:linear-gradient(180deg, rgba(21,36,29,.92), rgba(10,20,15,.94)); padding:1.3rem; box-shadow:var(--shadow-lg);
  font-family:var(--font-mono); font-size:.82rem; color:#d6e4d9;
}
.kaho-hero-visual .kv-top { display:flex; align-items:center; gap:.5rem; margin-bottom:1rem; }
.kaho-hero-visual .kv-line { padding:.35rem 0; color:#9fb2a3; }
.kaho-hero-visual .kv-line b { color:var(--w-emerald-300); font-weight:500; }
.kaho-hero-visual .kv-caret { color:var(--w-emerald-300); }

/* contact card */
.contact-grid { display:grid; gap:1.25rem; margin-top:2.6rem; }
@media (min-width:820px){ .contact-grid{ grid-template-columns:1.1fr .9fr; gap:2rem; } }
.contact-card { padding:2rem; }
@media (min-width:640px){ .contact-card{ padding:2.4rem; } }
.contact-card h3 { font-family:var(--font-display); font-size:1.2rem; font-weight:600; color:var(--heading); }
.contact-card .big-mail { display:inline-flex; align-items:center; gap:.5rem; margin-top:1rem; font-family:var(--font-display); font-size:clamp(1.2rem,3vw,1.6rem); font-weight:600; color:var(--link); word-break:break-all; }
.contact-card address { font-style:normal; margin-top:1.4rem; color:var(--text-muted); line-height:1.7; font-size:.98rem; }
.contact-list { list-style:none; margin:1.4rem 0 0; padding:0; display:grid; gap:.7rem; }
.contact-list li { position:relative; padding-left:1.5rem; color:var(--text-muted); font-size:.95rem; }
.contact-list li::before { content:"→"; position:absolute; left:0; color:var(--accent-2); }

/* pill list (services teaser on home) */
.mini-svc { display:grid; gap:1.1rem; margin-top:2.6rem; }
@media (min-width:640px){ .mini-svc{ grid-template-columns:1fr 1fr; } }
.mini {
  padding:1.6rem 1.7rem; display:flex; flex-direction:column;
}
.mini .m-num { font-family:var(--font-mono); font-size:.74rem; color:var(--accent); letter-spacing:.04em; }
.mini h3 { font-family:var(--font-display); font-size:1.18rem; font-weight:600; color:var(--heading); margin-top:.5rem; letter-spacing:-.01em; }
.mini p { margin-top:.55rem; font-size:.93rem; color:var(--text-muted); flex:1; }
.mini .m-tags { margin-top:1rem; font-family:var(--font-mono); font-size:.72rem; color:var(--text-muted); }

/* section link row */
.sec-cta { margin-top:2.4rem; }
.sec-cta .p-link { font-weight:600; color:var(--link); display:inline-flex; align-items:center; gap:.45rem; }
