/* ============================================================================
   Wyna AI - brand design system.  Neutral canvas + blue accents, theme-aware.
   Surfaces/greys use the SAME neutral oklch values as Open WebUI's palette so
   the website, portal and chat read as one product; blue (navy/sky) is
   reserved for accents and marketing highlights.
   No third-party fonts by design: a sovereignty product shouldn't leak visitor
   data to a font CDN. System grotesque stack, Swiss typographic treatment.
   ========================================================================== */
:root{
  --navy:#08375a; --navy-2:#17588f; --sky:#29a3e0; --sky-2:#5cb8e8;
  --violet:#6b5ae0;   /* the AI hue: Wyna = blue, AI = violet (owner 2026-09-01) -
                         decorative only (orbs, gradients, Logo) - never text/controls */
  --bg:oklch(98% 0 0); --surface:#ffffff; --border:oklch(91% 0 0); --hair:oklch(95% 0 0);
  --text:oklch(20% 0 0); --muted:oklch(50% 0 0);
  --accent:#17588f; --accent-strong:#08375a;
  --ring:rgba(41,163,224,.45); --shadow:0 1px 2px rgba(0,0,0,.04), 0 10px 30px rgba(0,0,0,.05);
  --btn-ink:#ffffff;
  --shadow-lift:0 20px 55px rgba(0,0,0,.22),0 8px 22px rgba(0,0,0,.12);
  --orb1:color-mix(in oklab,#25b4f2 22%,transparent);
  --orb2:color-mix(in oklab,#3fa7f0 22%,transparent);
  --orb3:color-mix(in oklab,#8a72ff 20%,transparent);
}
@media (prefers-color-scheme:dark){
  :root{
    color-scheme:dark;
    --bg:oklch(16% 0 0); --surface:oklch(20% 0 0); --border:oklch(30% 0 0); --hair:oklch(25% 0 0);
    --text:oklch(93% 0 0); --muted:oklch(69% 0 0);
    --accent:#33a8e6; --accent-strong:#6fc2ee; --violet:#8b7bef;
    --ring:rgba(51,168,230,.5); --shadow:0 1px 2px rgba(0,0,0,.45), 0 14px 34px rgba(0,0,0,.5);
    --btn-ink:#06131e;
    --shadow-lift:0 20px 55px rgba(0,0,0,.55),0 8px 22px rgba(0,0,0,.35);
    --orb1:color-mix(in oklab,var(--sky) 21%,transparent);
    --orb2:color-mix(in oklab,var(--navy-2) 18%,transparent);
    --orb3:color-mix(in oklab,var(--violet) 17%,transparent);
  }
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:oklch(98% 0 0); --surface:#ffffff; --border:oklch(91% 0 0); --hair:oklch(95% 0 0);
  --text:oklch(20% 0 0); --muted:oklch(50% 0 0); --accent:#17588f; --accent-strong:#08375a;
  --ring:rgba(41,163,224,.45); --shadow:0 1px 2px rgba(0,0,0,.04), 0 10px 30px rgba(0,0,0,.05);
  --btn-ink:#ffffff;
  --shadow-lift:0 20px 55px rgba(0,0,0,.22),0 8px 22px rgba(0,0,0,.12);
  --orb1:color-mix(in oklab,#25b4f2 22%,transparent);
  --orb2:color-mix(in oklab,#3fa7f0 22%,transparent);
  --orb3:color-mix(in oklab,#8a72ff 20%,transparent);
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:oklch(16% 0 0); --surface:oklch(20% 0 0); --border:oklch(30% 0 0); --hair:oklch(25% 0 0);
  --text:oklch(93% 0 0); --muted:oklch(69% 0 0); --accent:#33a8e6; --accent-strong:#6fc2ee; --violet:#8b7bef;
  --ring:rgba(51,168,230,.5); --shadow:0 1px 2px rgba(0,0,0,.45), 0 14px 34px rgba(0,0,0,.5);
    --btn-ink:#06131e;
    --shadow-lift:0 20px 55px rgba(0,0,0,.55),0 8px 22px rgba(0,0,0,.35);
    --orb1:color-mix(in oklab,var(--sky) 21%,transparent);
    --orb2:color-mix(in oklab,var(--navy-2) 18%,transparent);
    --orb3:color-mix(in oklab,var(--violet) 17%,transparent);
}
/* motion primitives: referenced by BOTH the base rules and their
   reduced-motion exemptions, so the two can never drift apart again */
:root{
  --lift-tr:transform .3s cubic-bezier(.2,.7,.3,1.2),box-shadow .3s ease;
  --od1:orbdrift1 26s ease-in-out infinite;
  --od2:orbdrift2 32s ease-in-out infinite;
  --od3:orbdrift3 38s ease-in-out infinite;
  /* navy aurora (sky+violet washes over navy) - the brand's gradient AIR;
     used by .sov, the portal chat-cta and the total stat tile */
  --aurora:radial-gradient(90% 130% at 16% 0%, color-mix(in oklab,var(--sky) 26%,transparent), transparent 58%),
    radial-gradient(110% 140% at 88% 24%, color-mix(in oklab,var(--violet) 24%,transparent), transparent 60%),
    var(--navy);
}
/* Self-hosted variable fonts (OFL, files + licenses in /brand/fonts) - the
   sovereignty rule holds: no font CDN, nothing leaves our domain. */
@font-face{font-family:"Mona Sans";src:url("/brand/fonts/mona-sans-var.woff2") format("woff2-variations");
  font-weight:200 900;font-style:normal;font-display:swap}
@font-face{font-family:Inter;src:url("/brand/fonts/inter-var.woff2") format("woff2-variations");
  font-weight:100 900;font-style:normal;font-display:swap}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0;min-height:100%;overflow-x:clip}
body{
  background:var(--bg); color:var(--text);
  font:16px/1.6 Inter,-apple-system,"Segoe UI","Helvetica Neue",Helvetica,Arial,system-ui,sans-serif;
  display:flex; flex-direction:column; min-height:100vh; -webkit-font-smoothing:antialiased;
  letter-spacing:.1px;
}
h1,h2,.hi,.brand,.tier .name,.tier .price,.card .h,.panel-card h3{font-family:"Mona Sans",-apple-system,"Segoe UI",Helvetica,Arial,system-ui,sans-serif}
/* headings inherited the body's 1.6 leading - far too airy at display sizes */
h2{line-height:1.18;text-wrap:balance}
a{color:inherit}
img{max-width:100%}
/* Footnote markers must not stretch their line: kill the line-height and lift
   via relative positioning instead of vertical-align (v2.13.x). */
sup{font-size:.65em;line-height:0;position:relative;top:-.45em;vertical-align:baseline}
.wrap{width:100%;max-width:1080px;margin:0 auto;padding:0 28px}
main{flex:1 0 auto}
/* the former top accent line - retired (owner 2026-09-01); markup kept */
.topbar{display:none}
/* skip link: first tab stop on every public page, visible only on focus */
.skiplink{position:absolute;left:12px;top:-56px;z-index:200;background:var(--surface);color:var(--accent-strong);
  border:1px solid var(--border);border-radius:0 0 10px 10px;padding:10px 16px;font-weight:700;font-size:14px;
  text-decoration:none;transition:top .15s ease}
.skiplink:focus{top:0}

/* ---- header / nav ---- */
.site-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 0;flex-wrap:wrap}
.brand{display:flex;align-items:center;text-decoration:none}
.brand img{height:38px;width:auto}
/* theme-swap utility: exactly ONE of an only-light/only-dark pair renders
   (logos, bento screenshots). NOTE: keep higher-specificity display rules off
   these elements - they would show both variants in the un-stamped theme. */
.only-light{display:block}
.only-dark{display:none}
@media (prefers-color-scheme:dark){.only-light{display:none}.only-dark{display:block}}
:root[data-theme="dark"] .only-light{display:none}
:root[data-theme="dark"] .only-dark{display:block}
:root[data-theme="light"] .only-light{display:block}
:root[data-theme="light"] .only-dark{display:none}
.beta{display:inline-flex;align-items:center;align-self:center;margin-left:10px;font-size:11px;
  font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--sky);
  border:1px solid var(--sky);border-radius:999px;padding:2px 8px;line-height:1.35}
.nav{display:flex;align-items:center;gap:6px}
.nav a.link{font-size:14px;font-weight:600;text-decoration:none;color:var(--muted);padding:9px 12px;border-radius:8px}
.nav a.link:hover{color:var(--accent-strong)}
.nav a.link.active{color:var(--accent-strong);background:var(--hair)}
/* burger (mobile only) */
.nav-toggle{display:none;align-items:center;justify-content:center;width:38px;height:38px;
  border:1px solid var(--border);background:var(--surface);color:var(--text);
  border-radius:10px;cursor:pointer;padding:0;transition:.16s ease}
.nav-toggle:hover{border-color:var(--accent);color:var(--accent)}
.nav-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);
  background:var(--surface);color:var(--text);border-radius:10px;padding:10px 16px;
  font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;transition:.16s ease}
.btn:hover{border-color:var(--accent)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}
.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--btn-ink)}
.btn--primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}
.btn--icon{padding:10px;line-height:0;color:var(--muted)}
.btn--icon:hover{color:var(--accent)}
/* header nav: theme toggle and Anmelden share exactly one height */
.nav .btn{height:38px;padding:0 16px}
.nav .btn--icon{width:38px;height:38px;padding:0}
.btn--onnavy{background:#fff;border-color:#fff;color:var(--navy)}
.btn--onnavy:hover{background:var(--sky-2);border-color:var(--sky-2)}
.btn--ghostnavy{background:transparent;border-color:rgba(255,255,255,.35);color:#fff}
.btn--ghostnavy:hover{border-color:#fff}

/* ---- eyebrow + hero ---- */
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.chflag{width:14px;height:14px;flex:none;display:inline-block;vertical-align:-2px}
.hero{text-align:center;padding:100px 0 72px}
.hero h1{font-size:clamp(36px,6.4vw,62px);line-height:1.04;letter-spacing:-.025em;margin:20px auto 14px;max-width:16ch;font-weight:650;text-wrap:balance}
.hero .sub{color:var(--muted);font-size:clamp(16px,2.3vw,20px);max-width:62ch;margin:0 auto}
.hero .actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:34px}
/* full-viewport opener (Start + Preise): nav + hero fill the first screen */
.hero--fill{min-height:calc(100vh - 100px);min-height:calc(100svh - 100px);
  display:flex;flex-direction:column;justify-content:center;padding:20px 0 36px}
.hero--fill .eyebrow{align-self:center}
@media (max-width:680px){.hero--fill{min-height:0;padding:36px 0}}

/* ---- section scaffolding ---- */
.block{padding:40px 0}
.block__head{max-width:64ch}
.block h2{font-size:clamp(26px,3.8vw,36px);letter-spacing:-.025em;margin:8px 0 10px;font-weight:650}
.block .lead{color:var(--muted);font-size:clamp(15px,2.1vw,18px);margin:0}

/* ---- action cards ---- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:24px 0 8px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;
  text-decoration:none;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;min-height:158px;position:relative;overflow:hidden;
  transition:var(--lift-tr)}
/* hover: surface and border stay - a soft black, blurry lift shadow + zoom
   (--shadow-lift carries the theme-specific alpha) */
.card:hover{transform:translateY(-3px) scale(1.02);box-shadow:var(--shadow-lift)}
/* card headings are h3 for the document outline - kill the UA margins */
.card .h{margin:0;font-weight:700;font-size:18px;display:flex;align-items:center;justify-content:space-between;letter-spacing:-.01em}
.card .p{color:var(--muted);font-size:14px}
.pill{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--accent);
  border:1px solid var(--border);border-radius:999px;padding:2px 9px}
.card.is-soon{opacity:.7}
.card.is-soon:hover{transform:none;box-shadow:var(--shadow)}

/* ---- SIGNATURE: sovereignty panel (navy, W watermark) ---- */
.sov{position:relative;overflow:hidden;border-radius:22px;padding:44px;color:#eaf3fa;
  background:var(--aurora);box-shadow:var(--shadow)}
.sov .eyebrow{color:var(--sky-2)}
.sov h2{color:#fff;margin:12px 0 10px}
.sov .lead{color:#c6dcec;max-width:70ch}
.sov__grid{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px 26px;margin-top:26px}
.sov__item{display:flex;flex-direction:column;gap:5px}
.sov__item .t{font-weight:700;font-size:15px;display:flex;align-items:center;gap:9px;color:#fff}
.sov__item .d{color:#bcd3e6;font-size:14px;line-height:1.5}
.sov__item .d a{color:var(--sky-2);text-decoration:underline;text-underline-offset:2px}
.sov__item .d a:hover{color:#fff}
.sov__item .dot{width:8px;height:8px;border-radius:50%;background:var(--sky-2);flex:0 0 auto;box-shadow:0 0 0 4px rgba(91,188,232,.18)}
.sov .actions{position:relative;margin-top:28px;display:flex;gap:12px;flex-wrap:wrap}

/* ---- ambient orbs (flat components, gradient AIR - v2.14.0) ---- */
.orbwrap{position:relative;isolation:isolate}
/* Each cluster is a fixed 1600x900 "stage" centered on its section; orbs sit
   at px offsets inside it, so the cluster geometry (relative positions, orb
   sizes AND blur reach) is invariant. Small screens scale the WHOLE stage via
   --orbscale - the old %-positions collapsed with the viewport while the px
   orbs did not, merging everything into one blue wall on phones. */
.orbs{position:absolute;left:50%;top:-110px;width:1600px;height:900px;margin-left:-800px;
  pointer-events:none;z-index:-1;overflow:visible;
  transform:scale(var(--orbscale,1));transform-origin:50% 0}
@media (max-width:1199px){.orbs{--orbscale:.85}}
@media (max-width:899px){.orbs{--orbscale:.7}}
@media (max-width:599px){.orbs{--orbscale:.55}}
.orbs i{position:absolute;border-radius:50%;filter:blur(130px);will-change:transform;
  /* mouse parallax (start page JS sets --mx/--my on <html>): rides the
     separate translate property so it composes with the drift animation */
  translate:calc(var(--mx,0)*var(--pf,0)*1px) calc(var(--my,0)*var(--pf,0)*1px)}
.orbs .o1{--pf:40;animation:var(--od1)}
.orbs .o2{--pf:-30;animation:var(--od2)}
.orbs .o3{--pf:52;animation:var(--od3)}
@keyframes orbdrift1{50%{transform:translate(64px,-44px) scale(1.07)}}
@keyframes orbdrift2{50%{transform:translate(-54px,56px) scale(.94)}}
@keyframes orbdrift3{50%{transform:translate(44px,50px) scale(1.1)}}
/* page-level orb layer: painted at root stacking with z-index:-1, i.e.
   BEHIND every UI element (nav, video, cards) while the glow may span
   several sections - for pages whose hero is too short to host the orbs */
.orbs.pageorbs{top:0;height:1050px}
/* default offsets = the hero composition (stage coordinates, px) */
.orbs .o1{width:760px;height:760px;left:10px;top:170px;background:var(--orb1)}
.orbs .o2{width:820px;height:820px;right:-10px;top:270px;background:var(--orb2)}
.orbs .o3{width:720px;height:720px;left:520px;top:390px;background:var(--orb3)}

/* ---- Wyna creek map inside the sov panel (see _wyna_map.html) ---- */
.sov .creek{position:absolute;top:-4%;right:-26px;height:108%;width:auto;pointer-events:none}
.sov .creek path{fill:none;stroke:#7bc0e8;stroke-width:2;opacity:.5;
  stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.sov .creek .dot{fill:rgba(255,255,255,.55)}
.sov .creek .dotlbl{fill:rgba(255,255,255,.55);font-size:2.3px;letter-spacing:.03em}
.sov .creek .home{fill:#7bc0e8}
.sov .creek .home-halo{fill:none;stroke:#7bc0e8;stroke-width:.5;opacity:.5}
.sov .creek .home-lbl{fill:#a8d6f2;font-weight:700;opacity:1}
.sov > *:not(.creek){position:relative}
.sov .mapcredit{position:absolute;right:14px;bottom:10px;font-size:10px;color:rgba(234,243,250,.62)}
@media (min-width:861px){
  .sov > *:not(.creek):not(.mapcredit){margin-right:min(29%,330px)}
}
@media (max-width:860px){
  .sov .creek,.sov .mapcredit{display:none}
  .sov > *:not(.creek){margin-right:0}
  /* orbs stay full-bleed on mobile: the page-level overflow-x:clip cuts them
     at the VIEWPORT edge (no gutters, no sideways scroll, no scroll creep) -
     clamping them to the padded section box left white borders */
}

/* ---- Funktionen bento + edge-docked screenshots (v2.14.0) ---- */
.bento{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;padding:24px 0 8px}
.b2{grid-column:span 2}.b3{grid-column:span 3}
.bento .card .p{margin-bottom:14px}
.card .shot{margin-top:auto;padding-top:14px;position:relative}
.card .shot img{width:100%;height:auto}
.shot.e-b.sm{height:150px;width:min(380px,80%);margin:auto auto -26px;padding-top:0;
  overflow:hidden;border:1px solid var(--hair);border-bottom:0;
  border-radius:12px 12px 0 0;box-shadow:var(--shadow)}
.shot.bar-l,.shot.bar-r2{height:112px}
.shot.bar-l img,.shot.bar-r2 img{height:100%;width:auto}
.shot.bar-l{margin:auto auto -10px -24px}
.shot.bar-r2{margin:auto -24px -10px auto;display:flex;justify-content:flex-end}
.card.split{flex-direction:row;gap:20px;align-items:stretch}
.card.split .txt{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.shot.side-r{margin:0 -24px 0 0;width:52%;flex:none;padding:0;position:relative;overflow:hidden;
  border:1px solid var(--hair);border-right:0;border-radius:12px 0 0 12px;box-shadow:var(--shadow)}
.shot.side-r img{width:100%;height:100%;object-fit:cover;object-position:left top}
.shot.side-r img.pengu{display:none}   /* mobile-only stand-in (see below) */
@media (max-width:860px){
  .bento{grid-template-columns:1fr}.b2,.b3{grid-column:auto}
  .card.split{flex-direction:column}
  /* Bildgenerierung on phones: the split screenshot reads badly - show only
     the generated penguin, contained and centered; Tooling + Websuche drop
     their screenshots entirely (owner 2026-09-03) */
  .shot.side-r{width:auto;margin:14px 0 0;border:0;border-radius:0;max-height:none;overflow:visible;box-shadow:none}
  .card .shot.side-r img.only-light,.card .shot.side-r img.only-dark{display:none}
  .card .shot.side-r img.pengu{display:block;width:min(100%,360px);height:auto;margin:0 auto;border-radius:12px;box-shadow:var(--shadow)}
  .shot.e-b.sm{display:none}
  .shot.bar-r2{margin-right:-20px}.shot.bar-l{margin-left:-20px}
  /* phones: the height-locked split bars would clip hard - scale to width */
  .shot.bar-l,.shot.bar-r2{height:auto}
  .shot.bar-l img,.shot.bar-r2 img{height:auto;width:100%}
}

/* ---- subscription tier cards (shared: preise hero + portal plan chooser).
   A .card plus the owner-traced mountain sky band from _tier_peak.html:
   fill-rule:evenodd band rect minus silhouette - the mountain is a hole
   showing the card surface; blues-only vertical sky via .st1/.st2 stops. */
.tier{text-align:left}
.tier .bgpeak{position:absolute;top:0;left:0;width:100%;height:auto;aspect-ratio:210/106;pointer-events:none}
/* Sky v5 (owner, Sky Lab 2026-09-03): the sov-card aurora inside the band -
   navy base + sky radial wash (16%/1%, r 100%, .26) + violet radial wash
   (88%/21%, r 57%, .24); geometry lives on the gradients in _tier_peak.html */
.tier .bgpeak .skybase{fill:var(--navy)}
.tier .bgpeak .sta{stop-color:var(--sky);stop-opacity:.26} .tier .bgpeak .sta0{stop-color:var(--sky);stop-opacity:0}
.tier .bgpeak .stb{stop-color:var(--violet);stop-opacity:.24} .tier .bgpeak .stb0{stop-color:var(--violet);stop-opacity:0}
.tier .inner{position:relative;display:flex;flex-direction:column;gap:8px;flex:1;padding-top:132px}
.tier .name{margin:0;font-weight:800;font-size:20px;letter-spacing:-.01em;display:flex;align-items:center;gap:8px}
.tier .price{font-size:clamp(26px,3vw,32px);font-weight:800;letter-spacing:-.02em;margin-top:2px;font-variant-numeric:tabular-nums}
.tier .price small{font-size:14px;color:var(--muted);font-weight:600}
.tier .desc{color:var(--muted);font-size:14px;flex:1}
.tier .btn{justify-content:center;margin-top:10px}

/* ---- CTA band closer (v2.14.0) ---- */
.ctaband{position:relative;overflow:hidden;border-radius:24px;color:#eaf3fa;
  background:
    radial-gradient(90% 150% at 12% 0%, color-mix(in oklab,var(--sky) 26%,transparent), transparent 58%),
    radial-gradient(110% 160% at 90% 30%, color-mix(in oklab,var(--violet) 24%,transparent), transparent 60%),
    var(--navy);
  padding:clamp(28px,5vw,48px);display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:center;text-align:left}
.ctaband h2{color:#fff;font-weight:650;letter-spacing:-.02em;font-size:clamp(24px,3.4vw,34px);margin:0 0 8px}
.ctaband .s{color:#c6dcec;margin:0;font-size:15px}
.ctaband .acts{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:860px){.ctaband{grid-template-columns:1fr}.ctaband .acts{justify-content:flex-start}}

/* ---- consulting CTA ---- */
.consult{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border);
  border-radius:22px;padding:clamp(28px,5vw,48px);box-shadow:var(--shadow)}
.consult h2{font-size:clamp(26px,3.8vw,36px);letter-spacing:-.025em;margin:10px 0 12px;font-weight:650}
.consult .lead{color:var(--muted);font-size:clamp(15px,2.1vw,18px);max-width:70ch;margin:0}
.consult__people{margin:18px 0 0;font-size:15px;color:var(--text)}
.consult .actions{margin-top:24px;display:flex;gap:12px;flex-wrap:wrap}
a.inlink{color:var(--accent-strong);font-weight:600;text-decoration:none;white-space:nowrap}
a.inlink:hover{text-decoration:underline;text-underline-offset:2px}

/* ---- FAQ accordion ---- */
.faq__list{margin-top:22px;display:flex;flex-direction:column;gap:12px}
.faq__item{background:var(--surface);border:1px solid var(--border);border-radius:14px;
  box-shadow:var(--shadow);overflow:hidden}
.faq__item summary{list-style:none;cursor:pointer;padding:18px 22px;font-weight:700;
  font-size:clamp(15px,2vw,17px);letter-spacing:-.01em;display:flex;align-items:center;
  justify-content:space-between;gap:18px;color:var(--text)}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary::after{content:"";flex:none;width:11px;height:11px;margin-top:-4px;
  border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);
  transform:rotate(45deg);transition:transform .18s ease}
.faq__item[open] summary::after{transform:rotate(-135deg);margin-top:4px}
.faq__item summary:hover{color:var(--accent-strong)}
.faq__item summary:focus-visible{outline:none;box-shadow:inset 0 0 0 3px var(--ring)}
.faq__a{padding:0 22px 20px;color:var(--muted);font-size:15px;line-height:1.62}
.faq__a p{margin:0}
@media (prefers-reduced-motion:reduce){.faq__item summary::after{transition:none}}

/* ---- pricing table ---- */
.priceframe{overflow-x:auto;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}
table.price{width:100%;border-collapse:collapse;min-width:600px;font-size:15px}
table.price caption{text-align:left;padding:18px 22px 4px;color:var(--muted);font-size:12.5px;letter-spacing:.02em}
table.price th,table.price td{padding:15px 22px;text-align:left;border-bottom:1px solid var(--hair);vertical-align:top}
table.price thead th{font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:700}
table.price th.num,table.price td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.price tr.grp .grpsub{display:block;font-weight:500;color:var(--muted);font-size:12px;letter-spacing:0;text-transform:none;margin-top:3px}
table.price tr.grp td{font-weight:700;color:var(--accent-strong);font-size:12px;letter-spacing:.07em;
  text-transform:uppercase;padding-top:22px;border-bottom:1px solid var(--border);background:linear-gradient(90deg,rgba(43,160,219,.06),transparent)}
table.price tbody tr:last-child td{border-bottom:none}
.mname{font-weight:700;letter-spacing:-.01em}
.msub{color:var(--muted);font-size:13px;margin-top:3px}
.tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;border:1px solid var(--border);
  border-radius:999px;padding:2px 9px;color:var(--accent);margin-left:8px;vertical-align:middle}
.fineprint{color:var(--muted);font-size:13px;margin-top:16px}

/* ---- footer ---- */
.site-footer{border-top:1px solid var(--border);margin-top:32px;padding:28px 0;
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px}
.site-footer .fby{color:var(--muted)}
.site-footer .fby a{color:var(--accent-strong);text-decoration:none;font-weight:600}
.site-footer .fby a:hover{text-decoration:underline;text-underline-offset:2px}
.site-footer .fend{display:flex;align-items:center;gap:12px}
.site-footer nav a{color:var(--muted);text-decoration:none;margin-left:16px}
.site-footer nav a:hover{color:var(--accent-strong)}

/* ---- mobile: collapse nav into a burger dropdown ---- */
@media (max-width:680px){
  .nav-toggle{display:inline-flex}
  .site-header{position:relative;padding:16px 0}
  .nav{position:absolute;top:calc(100% - 2px);left:0;right:0;z-index:50;display:none;
    flex-direction:column;align-items:stretch;gap:6px;padding:12px;
    background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}
  .nav.open{display:flex}
  .nav a.link{padding:12px;border-radius:9px;font-size:15px;color:var(--text)}
  .nav a.link:hover{background:var(--hair)}
  .nav .btn,.nav .btn--primary,.nav .btn--icon{width:100%;height:44px;justify-content:center}
  .hero{padding:56px 0 36px}
  .block{padding:28px 0}
  .sov{padding:26px 20px}
  .cards{padding:16px 0 4px}
}
@media (max-width:560px){
  .wrap{padding:0 20px}
  .site-footer{flex-direction:column;align-items:flex-start}
  .site-footer nav a{margin:0 16px 0 0}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
/* The orbs are exempt from reduced motion (owner decision 2026-09-01): their
   drift is very slow ambient background movement - never blocking, never
   gating an action - and should look identical on every OS. */
@media (prefers-reduced-motion:reduce){
  .orbs .o1{animation:var(--od1)!important}
  .orbs .o2{animation:var(--od2)!important}
  .orbs .o3{animation:var(--od3)!important}
  /* the card hover lift is exempt too (tiers are .card) - gentle, never blocking */
  .card,.reco{transition:var(--lift-tr)!important}
}
