/* ============================================================
   unterseite2.css — Unterseiten von techq.ch im Stil der Startseite v15.
   Angelegt 2026-10-03 (CrackBookAir/Fabrizio, techq-05). Auftrag Fabrizio:
   «die Seiten so überarbeiten, dass sie mit dem neuen Design der Startseite
   sowie dem Kundencenter stimmen».

   AUFBAU
   Eine Unterseite lädt nach ihren bisherigen Blättern hell-dunkel.css,
   dann start2.css (Marken --s15-*, Fusszeile v15) und diese Datei, dazu
   start2.js (Hell/Dunkel-Schalter, statt hell-dunkel.js). <main> trägt
   class="t15" — NICHT `s15`: das brächte die Regeln der Startseite in den
   alten Inhalt (`.s15 a` färbte jeden Knopf-Verweis blau, `.s15 *` stellte
   auf content-box; gemessen 03.10.2026, kontrast.mjs). Diese Datei
   gestaltet die Bausteine, die die Seiten schon haben: Aufmacher
   (.page-hero mit Brotkrume, Titel, Untertitel), Lesespalte (.legal),
   Inhaltsverzeichnis, Umschalter, Konfigurator. Das Markup bleibt.

   HELL UND DUNKEL
   Dunkel bleibt bei hell-dunkel.css: dort stehen Fabios gemessene Werte
   für die alten Marken (schon die v15-Töne #f5f5f7, #a1a1a6, #2c2c2e …)
   und die Korrekturen für fest eingefärbte Bausteine (51 KB, 29.09.2026).
   Hell legt die Brücke unten die alten, leicht bläulichen Töne von
   site.css auf die neutralen der Startseite.

   WARUM NUR DAS BLATT
   tools/rechtsdokument_pdf.py schneidet für das AGB-PDF den GANZEN Inhalt
   von <main> heraus — auch Brotkrume, Titel und Untertitel. Gemessen
   03.10.2026: mit einem neu geschriebenen Aufmacher baute das Werkzeug
   20 statt 24 Seiten, der sha256 wich vom gespeicherten PDF ab, auf das
   jede Zustimmung zeigt. Mit unverändertem <main> und nur diesem Blatt:
   «unveraendert». Darum: im <main> der Rechtstexte kein Byte ändern.
   Grössen aus der v15-Leiter: Titel wie /panel und /domains, Fliesstext
   17 px wie die Antworten unter «Fragen» der Startseite.

   NAMEN
   Eigene Klassen tragen `t15-` (gezählt 03.10.2026: kein anderes Blatt
   nutzt den Präfix; `u15-` gehört /ueberuns/).
   ============================================================ */

/* ── Grund ──────────────────────────────────────────────────── */
body.t15-seite{
  background:var(--s15-bg);
  color:var(--s15-text);
  -moz-osx-font-smoothing:grayscale;
  font-optical-sizing:auto;
  font-synthesis:none;
  overflow-x:clip;
  transition:background .5s,color .5s;
}

/* ── Brücke (nur hell): alte Marken → v15 ────────────────────
   Die Bausteine der Seiten (Konfigurator .wzd, Karten, Listen, Rechtstexte)
   lesen die Marken aus site.css. Im HELLEN Thema zeigen sie in <main class="t15">
   auf die Marken der Startseite v15 — dasselbe Vorgehen wie kc.css §2 im
   Kundencenter. Alle Marken aus site.css :root, gezählt 03.10.2026; die
   Grössenleiter (--s-*) bleibt. --text-faint auf --s15-text3 (#6e6e73,
   5.1:1 auf Weiss): --s15-muted (#86868b) hatte 3.6:1, zu wenig für Text.
   Im DUNKLEN gelten die Werte aus hell-dunkel.css (siehe oben). */
html:not([data-theme="dark"]) .t15{
  --text:var(--s15-text);
  --text-body:var(--s15-text);
  --text-muted:var(--s15-text2);
  --text-faint:var(--s15-text3);
  --text-soft:var(--s15-text2);
  --border:var(--s15-line);
  --border-strong:var(--s15-chip);
  --border-faint:var(--s15-card2);
  --surface:var(--s15-bg);
  --bg:var(--s15-bg);
  --bg-elev:var(--s15-bg);
  --bg-alt:var(--s15-bg2);
  --bg-soft:var(--s15-bg2);
  --bg-strong:var(--s15-card2);
  --row-hover:var(--s15-bg2);
  --accent:var(--s15-cta);
  --accent-text:var(--s15-link);
  --accent-hover:var(--s15-ctah);
  --accent-soft:rgba(0,113,227,.08);
  --btn-bg:var(--s15-inv);
  --btn-bg-hover:#000;
  --btn-text:var(--s15-invtext);
  /* Grün für «reicht», «Enthalten»: #10825A hatte auf der grauen Karte
     (#f5f5f7) 4.42:1 — #0e7a54 hat 4.89:1, auf #e8f6f0 4.79:1. */
  --success:#0e7a54;
}

/* ── Aufmacher (.page-hero aus site.css) ───────────────────────
   Mittig, ohne Linie darunter. Die Brotkrume steht, wo die Startseite ihre
   graue Oberzeile hat (.s15-ueber: 17 px, halbfett) — sie bleibt eine echte
   Navigation, und die Seiten behalten sie (mail_seite_pruefstand verlangt
   sie auf /mail).
   ABSTÄNDE, gemessen 03.10.2026 (messen.mjs) an /ueberuns/werte, /panel,
   /domains: Kopfzeile → Oberzeile 81 px, Oberzeile → Titel 12, Titel →
   Untertitel 22 — hier gleich. Untertitel → Inhalt:
   - Produktseiten wie Werte: 96–112 px am Rechner, 56–64 am Telefon.
   - Dokumente enger, 80 / 61 (1024) / 48 (Telefon): wer die AGB oder eine
     Anleitung öffnet, will lesen; mit 112 px stand der Text am Rechner erst
     ab Bildschirmmitte. Derselbe Schritt wie beim kleineren Titel.
   Der Abstand setzt sich aus diesem Polster und dem Polster des Inhalts
   zusammen (Rechtstexte und Hilfe: style="padding-top:clamp(34px,4vw,56px)"
   am Abschnitt; /mail: margin-top am Rechner).
   ZWEI MASSSTÄBE für den Titel, am <main> gewählt:
   - .t15--produkt: wie /panel und /domains, 44–88 px («techQ Mail»).
   - sonst (Dokumente: Rechtstexte, Hilfe): 34–56 px wie die Abschnittstitel
     der Startseite (.s15-fragen__titel). Hilfe-Titel sind im Median 45, bis
     80 Zeichen lang (gezählt 03.10.2026, 162 Seiten) — bei 72 px liefe der
     längste über vier Zeilen, und «Geschäftsbedingungen.» passt bei 88 px
     nicht in die 900-px-Spalte. */
.t15 .page-hero{border-bottom:0;text-align:center;}
/* Eigene Zentrierung: /pakete lädt kein site.css (Stile inline) — dort fehlte
   .container{margin:0 auto}, der Aufmacher klebte links (gemessen 03.10.2026). */
.t15 .page-hero .container{max-width:900px;margin-left:auto;margin-right:auto;padding:0 22px;}
.t15 .page-hero .hero-inner{padding:clamp(56px,9vh,110px) 0 clamp(14px,2vw,24px);}
.t15--produkt .page-hero .hero-inner{padding-bottom:clamp(30px,4vw,56px);}
.t15 .breadcrumbs{
  display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px;
  font-family:inherit;font-size:17px;font-weight:600;letter-spacing:-0.01em;
  text-transform:none;color:var(--s15-text2);
}
/* `:not(#_)`: site.css färbt `.breadcrumbs a` an zwei Stellen fest (#6B7480). */
.t15 .breadcrumbs a:not(#_){color:var(--s15-text2);text-decoration:none;}
.t15 .breadcrumbs a:not(#_):hover{color:var(--s15-text);text-decoration:underline;text-underline-offset:3px;}
.t15 .breadcrumbs .sep{color:var(--s15-muted);font-weight:400;}
.t15 .breadcrumbs .now{color:var(--s15-text2);}
.t15 .page-hero h1{
  margin:12px auto 0;max-width:none;
  font-size:clamp(34px,4.4vw,56px);line-height:1.06;
  font-weight:600;letter-spacing:-0.028em;color:var(--s15-text);text-wrap:balance;
}
.t15--produkt .page-hero h1{font-size:clamp(44px,6.4vw,88px);line-height:1.02;letter-spacing:-0.034em;}
.t15 .page-hero .hero-sub{
  margin:22px auto 0;max-width:620px;
  font-size:clamp(17px,1.5vw,21px);line-height:1.45;
  color:var(--s15-text2);letter-spacing:-0.01em;text-wrap:balance;
}
.t15--produkt .page-hero .hero-sub{max-width:660px;}

/* ── Kapitel-Kopf der Über-uns-Seiten (.about-sub-hero) ───────
   Team, Partner, Infrastruktur: dieselbe Form wie /ueberuns/werte — mittig,
   graue Oberzeile ohne Punkt und ohne Grossbuchstaben, Titel einfarbig im
   Produktmassstab (44–88 px), Einleitung grau. Das blau gesetzte Titelwort
   (<em>) trägt v15 nicht: die Titel der Startseite sind einfarbig. */
.t15 .about-sub-hero{border-bottom:0;text-align:center;}
.t15 .about-sub-hero .container{max-width:900px;margin-left:auto;margin-right:auto;padding:0 22px;}
.t15 .about-sub-hero .hero-inner{padding:clamp(56px,9vh,110px) 0 clamp(30px,4vw,56px);}
.t15 .about-sub-hero .eyebrow,
.t15 .page-hero .eyebrow{
  font-family:inherit;font-size:17px;font-weight:600;letter-spacing:-0.01em;
  text-transform:none;color:var(--s15-text2);
}
.t15 .about-sub-hero .eyebrow .dot{display:none;}
.t15 .about-sub-hero h1{
  margin:12px auto 0;max-width:none;
  font-size:clamp(44px,6.4vw,88px);line-height:1.02;font-weight:600;
  letter-spacing:-0.034em;color:var(--s15-text);text-wrap:balance;
}
.t15 .about-sub-hero h1 em{color:inherit;}
.t15 .about-sub-hero .lede{
  margin:22px auto 0;max-width:620px;
  font-size:clamp(17px,1.5vw,21px);line-height:1.45;
  color:var(--s15-text2);letter-spacing:-0.01em;text-wrap:balance;
}

/* ── Lesespalte (.legal) ────────────────────────────────────────
   Mittig in der Breite, die die AGB schon tragen (style="max-width:70ch").
   Unten knapp: die Fusszeile bringt 80 px Abstand selbst mit (start2.css). */
.t15 .legal{margin-left:auto;margin-right:auto;max-width:70ch;padding-bottom:clamp(24px,3vw,40px);}
.t15 .legal h2{
  margin:56px 0 14px;padding-top:28px;border-top:1px solid var(--s15-line);
  font-size:clamp(23px,2.3vw,28px);line-height:1.15;font-weight:600;
  letter-spacing:-0.02em;color:var(--s15-text);
  scroll-margin-top:80px;text-wrap:balance;
}
.t15 .legal h3{
  margin:32px 0 8px;
  font-size:19px;line-height:1.3;font-weight:600;letter-spacing:-0.012em;
  color:var(--s15-text);scroll-margin-top:80px;
}
.t15 .legal p,
.t15 .legal li{font-size:17px;line-height:1.6;color:var(--s15-text);}
/* «pretty» nur an Absätzen: an Listenpunkten mit zwei, drei Zeilen verteilte es
   den ganzen Punkt neu (am Telefon stand «einstellen» allein in Zeile 1). */
.t15 .legal p{text-wrap:pretty;}
.t15 .legal p{margin:0 0 16px;}
.t15 .legal ul,
.t15 .legal ol{margin:0 0 18px;padding-left:22px;gap:8px;}
.t15 .legal strong{color:var(--s15-text);font-weight:600;}
.t15 .legal em{color:var(--s15-text2);}
/* Verweise im Fliesstext bleiben unterstrichen (site.css, «p a:not(.btn)…»):
   im Text sind sie so nicht nur an der Farbe erkennbar. Nur die Farbe kommt
   aus v15. `:not(#_)` hebt die Regel über die von site.css (0,3,2). */
.t15 .legal a:not(#_){color:var(--s15-link);}
.t15 .legal table{width:100%;margin:6px 0 20px;border-collapse:collapse;font-size:15px;}
.t15 .legal th,
.t15 .legal td{padding:10px 14px 10px 0;border-top:1px solid var(--s15-line);text-align:left;vertical-align:top;color:var(--s15-text);}
.t15 .legal th{font-weight:600;color:var(--s15-text2);}

/* Umschalter AGB · Datenschutz · AVV: mittig; Farben und Form im Block
   «Umschalter» unten (für alle Seiten gleich). */
.t15 .legal .tq-seg{display:flex;width:max-content;max-width:100%;margin:0 auto;}
.t15 .legal .tq-pill{padding:9px 18px;font-size:15px;font-weight:400;text-decoration:none;}
.t15 .legal .tq-pill:hover{text-decoration:none;}
/* Die Pillen sind Verweise: ohne diese Zeile färbt `.t15 .legal a:not(#_)` sie blau. */
.t15 .legal a.tq-pill:not(#_){color:var(--s15-text);text-decoration:none;}

/* Fassung und Stand: eine ruhige Zeile unter dem Umschalter. */
.t15 .legal .updated{
  display:flex;justify-content:center;margin:16px 0 40px;
  font-family:inherit;font-size:13px;letter-spacing:0;text-transform:none;
  color:var(--s15-text2);font-variant-numeric:tabular-nums;
}
.t15 .legal .tq-seg + .updated{display:flex;margin-top:16px;}

/* Inhaltsverzeichnis: eine graue Fläche wie die Karten der Startseite. */
.t15 .legal-toc{
  margin:0 0 8px;padding:24px 28px;border:0;border-radius:18px;
  background:var(--s15-bg2);
}
.t15 .legal-toc h2.toc-titel{
  margin:0 0 12px;padding:0;border:0;
  font-family:inherit;font-size:15px;font-weight:600;letter-spacing:-0.01em;
  text-transform:none;color:var(--s15-text);
}
.t15 .legal-toc ol{margin:0;padding-left:20px;columns:2;column-gap:36px;display:block;}
.t15 .legal-toc li{padding:4px 0;font-size:15px;line-height:1.4;break-inside:avoid;color:var(--s15-text2);}
/* Das Verzeichnis ist eine Navigation, kein Fliesstext: ohne Unterstrich. */
.t15 .legal-toc a:not(#_){color:var(--s15-text);text-decoration:none;}
.t15 .legal-toc a:not(#_):hover{color:var(--s15-link);}

/* Ab 1280 px steht das Verzeichnis LINKS NEBEN dem Text und fährt beim Lesen
   mit; der Text bleibt auf der Mittelachse unter dem Titel. Die Spalte bleibt
   bei ~70 Zeichen (lesbar) — der Platz links und rechts trägt die Navigation
   statt längerer Zeilen. Reines Blatt: `float` mit negativem Rand schiebt das
   Verzeichnis aus der Textspalte, `sticky` hält es fest, solange .legal zu
   sehen ist. Das Markup (und damit das PDF) bleibt.
   184 + 56 Abstand: bei 1280 px bleiben links 47 px Rand (gemessen). */
@media (min-width:1280px){
  .t15 .legal-toc{
    /* oben 16 px: die erste Überschrift steht 56 px unter der Fassungszeile, das
       Verzeichnis 40 (deren margin-bottom) — so beginnt es auf ihrer Linie (gemessen). */
    float:left;width:184px;margin:16px 0 0 -240px;
    position:sticky;top:96px;
    max-height:calc(100vh - 128px);overflow:auto;overscroll-behavior:contain;
    padding:0;border-radius:0;background:none;
  }
  .t15 .legal-toc h2.toc-titel{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--s15-text2);}
  /* 28 px: «10.» ist bei 14 px 23 px breit — mit 20 px schnitt overflow:auto die erste Ziffer ab (gemessen). */
  .t15 .legal-toc ol{columns:1;padding-left:28px;}
  .t15 .legal-toc li{padding:3px 0;font-size:14px;line-height:1.35;}
  .t15 .legal-toc a:not(#_){color:var(--s15-text2);}
  .t15 .legal-toc a:not(#_):hover{color:var(--s15-text);}
}

/* Knopf «Als PDF herunterladen» (a.btn.btn-soft) — die graue Pille der
   Startseite. Das Markup bleibt: rechtsdokument_pdf.py erkennt den Knopf an
   `class="btn…"` und lässt ihn aus dem PDF. */
.t15 .legal a.btn:not(#_){
  display:inline-flex;align-items:center;gap:8px;
  padding:11px 22px;border:0;border-radius:980px;
  background:var(--s15-card2);color:var(--s15-text);
  font-size:15px;font-weight:500;box-shadow:none;text-decoration:none;
  transition:background .2s ease;
}
.t15 .legal a.btn:not(#_):hover{background:var(--s15-chip);color:var(--s15-text);text-decoration:none;}

/* Fokus sichtbar, wie in der Kopfzeile. */
.t15 .legal a:focus-visible,
.t15 .breadcrumbs a:focus-visible{outline:2px solid var(--s15-link);outline-offset:3px;border-radius:6px;}

/* ── Hilfe-Artikel (hilfe.css): Herkunft, Verwandte Themen, Kasten ──
   Die Artikel stehen in derselben `.legal`-Spalte wie die Rechtstexte. Ihre
   Zwischenüberschriften in «Verwandte Themen» und im Kasten sind keine
   Abschnitte — ohne Linie und klein (sonst griffe `.t15 .legal h2`). */
/* «Anleitungen · Alle Fragen» wiederholt die Brotkrume darüber («Start /
   Hilfe / Anleitungen») und stand allein im Weissraum zwischen Aufmacher und
   Text. Auf v15-Seiten trägt die Brotkrume diese Angabe; das Markup bleibt
   (der Erzeuger schreibt es, hilfe_seiten_bauen.py). */
.t15 .legal .hlf-quelle{display:none;}
.t15 .legal .hlf-verwandt h2,
.t15 .legal .hlf-cta h2{
  margin:0 0 12px;padding:0;border:0;
  font-size:17px;line-height:1.3;font-weight:600;letter-spacing:-0.01em;
}
.t15 .legal .hlf-verwandt{margin-top:56px;padding-top:28px;border-top:1px solid var(--s15-line);}
.t15 .legal .hlf-verwandt ul{padding-left:0;list-style:none;}
.t15 .legal .hlf-verwandt a:not(#_){text-decoration:none;}
.t15 .legal .hlf-verwandt a:not(#_):hover{text-decoration:underline;}
.t15 .legal .hlf-cta{
  margin-top:40px;padding:24px 28px;border:0;border-radius:18px;background:var(--s15-bg2);
}
.t15 .legal .hlf-cta p{font-size:15px;line-height:1.55;color:var(--s15-text2);}

/* ── Knöpfe (site.css .btn …) — Form der Startseite (.s15-knopf) ──
   Hauptknopf als blaue Pille (--s15-cta, Weiss 4.7:1), auch im Dunkeln —
   so steht er auf der Startseite. site.css setzte ihn fast schwarz mit 8 px
   Radius, hell-dunkel.css dunkel umgekehrt hell. Nebenknopf: graue Pille.
   `:not(#_)` hebt über site.css, hell-dunkel.css und Seitenstile. */
.t15 .btn:not(#_),
.t15 .btn-dark:not(#_){border-radius:980px;}
.t15 .btn-primary:not(#_),
.t15 .btn-dark:not(#_){background:var(--s15-cta);color:#fff;border-color:transparent;}
.t15 .btn-primary:not(#_):hover,
.t15 .btn-dark:not(#_):hover{background:var(--s15-ctah);color:#fff;}
/* Gesperrter Hauptknopf (04.10.2026, Code-Durchsicht von 20f1b1b0): --s15-text2 auf
   --s15-card2 hatte 4.15:1, site.css verlangt für gesperrte Knöpfe 4.5 (dort 5.24).
   Hell #58585d auf #e8e8ed = 5.8:1. Dunkel stand er ohne Rand als #1d1d1f auf der
   Karte — 1.2:1, der Bezahlknopf «verschwand»; jetzt #8e8e93 auf #1d1d1f (5.2:1) mit
   dem Feldrand (3:1 und mehr), wie hell-dunkel.css es für .btn-primary:disabled will. */
.t15 .btn-primary:not(#_):disabled{background:var(--s15-card2);color:#58585d;border-color:var(--s15-chip);}
html[data-theme="dark"] .t15 .btn-primary:not(#_):disabled{background:#1d1d1f;color:#8e8e93;border-color:var(--s15-feld-rand);}
.t15 .btn-soft:not(#_),
.t15 .btn-ghost:not(#_){background:var(--s15-card2);color:var(--s15-text);border-color:transparent;}
.t15 .btn-soft:not(#_):hover,
.t15 .btn-ghost:not(#_):hover{background:var(--s15-chip);color:var(--s15-text);}
/* Dunkel behält der Nebenknopf seinen Rand (hell-dunkel.css: --s15-feld-rand, 3:1). Die
   Zeile darüber setzte ihn durchsichtig, der Knopf stand dann als #1d1d1f auf Schwarz
   (1.3:1) — gemessen an «Zurück zum Warenkorb» (Code-Durchsicht, 04.10.2026). */
html[data-theme="dark"] .t15 .btn-soft:not(#_),
html[data-theme="dark"] .t15 .btn-ghost:not(#_){border-color:var(--s15-feld-rand);}
.t15 .btn-textlink:not(#_){color:var(--s15-link);}
/* Im Aufmacher in der Grösse der Startseite (17 px, 12/22 px). */
.t15 .page-hero .btn:not(#_),
.t15 .page-hero .btn-dark:not(#_){font-size:17px;padding:12px 22px;}
/* Knopfzeilen und Hinweise im Aufmacher stehen mittig wie Titel und
   Untertitel (vorher links: der Aufmacher war linksbündig). */
.t15 .page-hero .hero-inner > div:not(.breadcrumbs),
.t15 .page-hero .hero-inner > p:not(.hero-sub){justify-content:center;margin-left:auto;margin-right:auto;}
.t15 .page-hero .qp-beta-fahne{max-width:620px;}
.t15 .page-hero .hero-knoepfe{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:32px;}
.t15 .page-hero .pk-ueberblick{margin-top:22px;font-size:15px;line-height:1.5;}

/* ── Umschalter (.tq-seg, .billing-toggle) ──────────────────────
   Wie .s15-segment der Startseite: Leiste --s15-card2, Radius 12/9 px, die
   Wahl auf --s15-segon mit Schatten, Schrift --s15-text. site.css setzt fest
   #EDEDED/#fff (hell: inaktive Schrift 4.33:1, gemessen 03.10.2026 auf
   /pakete und /vergleich); dunkel sind es dieselben Werte wie in
   hell-dunkel.css (#1d1d1f / #636366). `:not(#_)` hebt über beide. */
.t15 .tq-seg:not(#_),
.t15 .billing-toggle:not(#_){gap:2px;padding:3px;border-radius:12px;background:var(--s15-card2);}
.t15 .tq-pill:not(#_),
.t15 .billing-toggle button:not(#_){border-radius:9px;background:transparent;box-shadow:none;color:var(--s15-text);}
.t15 .tq-pill.active:not(#_),
.t15 .billing-toggle button.active:not(#_){background:var(--s15-segon);box-shadow:var(--s15-segsh);font-weight:600;color:var(--s15-text);}
/* «−12%»: Blau auf eigenem Grund — auf der Leiste und in der Wahl lesbar
   (hell 5.6:1, dunkel 6.96:1). */
.t15 .tq-pill .save:not(#_),
.t15 .billing-toggle .save:not(#_){background:var(--s15-bg);color:var(--s15-link);}

/* ── Einzelne Bausteine, gemessen 03.10.2026 (kontrast.mjs) ──────
   Abschnitts-Etikett («Das Wichtigste», «Ablauf»): die Oberzeile der
   Startseite (.s15-ueber: 17 px, halbfett, grau) statt Mono in
   Grossbuchstaben. site.css färbte es fest #6B7480 (auf #f5f5f7 4.35:1). */
.t15 .section-tag:not(#_){
  font-family:inherit;font-size:17px;font-weight:600;letter-spacing:-0.01em;
  text-transform:none;color:var(--s15-text2);
}
/* /entdecken: Band «Unsere Empfehlung» Weiss auf #3f7fdf (3.95:1) und der
   Pfeil in derselben Farbe — auf das Blau der Knöpfe bzw. der Verweise. */
.t15 .wsp-karte__band:not(#_){background:var(--s15-cta);}
.t15 .wsp-seq__wink-pfeil:not(#_){color:var(--s15-link);}
/* /webmail: Verweis in der Fussnote mit --accent (4.31:1 auf #f5f5f7). */
.t15 .wm-fussnote a:not(#_){color:var(--s15-link);}

/* ── Produktseiten: Inhalt unter dem Aufmacher ─────────────────
   Eine Spalte, mittig, 880 px — die Breite, in der /mail schon stand (eine
   Produktseite liest sich noch als Text, ein Regler wirkt noch als Regler). */
.t15-produkt{padding:0 22px clamp(24px,3vw,40px);}
.t15-produkt__innen{max-width:880px;margin:0 auto;}

/* Konfigurator (.wzd, site.css) als Fläche der Startseite: grau, rund, ohne
   Rand — wie «Prepaid» (.s15-laufzeit). Schriftgrössen bleiben auf der
   Leiter von site.css (tools/mail_leiter_pruefstand.py). */
.t15 .wzd{border:0;border-radius:28px;background:var(--s15-bg2);padding:clamp(24px,3.6vw,44px);}
.t15 .wzd-stepper,
.t15 .wzd-feld input:not(.wzd-schieber){background:var(--s15-bg);}
.t15 .wzd-ergebnis{border-top-color:var(--s15-line);}
.t15 .wzd-kaufen{border-radius:980px;background:var(--s15-cta);color:#fff;}
.t15 .wzd-kaufen:hover:not([disabled]){background:var(--s15-ctah);}
.t15 .wzd-chip{background:var(--s15-bg);}

/* Abschnitte darunter: offen, mit Haarlinie (keine gestapelten Kästen). */
.t15 .mail-abschnitt{margin-top:clamp(48px,6vw,72px);padding-top:clamp(28px,3vw,36px);border-top:1px solid var(--s15-line);}

/* ── Telefon ────────────────────────────────────────────────── */
@media (max-width:640px){
  /* «Geschäftsbedingungen.» ist auch bei 34 px breiter als ein Telefon
     (390 px): deutsch trennen statt rechts hinauslaufen. */
  .t15 .page-hero h1{hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word;}
  .t15 .breadcrumbs{font-size:15px;}
  .t15 .legal h2{margin-top:44px;padding-top:24px;}
  .t15 .legal p,
  .t15 .legal li{font-size:16px;}
  .t15 .legal-toc{padding:20px 22px;}
  .t15 .legal-toc ol{columns:1;}
  /* shop-mobil.css macht jeden Verweis hier zu einem 44-px-Fingerziel
     (padding-block 14px) — kein eigenes Zeilenpolster obendrauf. */
  .t15 .legal-toc li{padding:0;}
  .t15 .legal .tq-pill{padding:9px 14px;font-size:14px;}
}

/* shop-mobil.css polstert bis 700 px jeden Brotkrumen-Verweis auf 44 px
   Fingerhöhe (padding-block 15px). Die Tippfläche bleibt; die Zeile rückt um
   dieselben 15 px zurück, damit Oberzeile und Titel stehen wie auf /panel. */
@media (max-width:700px){
  .t15 .breadcrumbs{margin-block:-15px;}
  /* Die Tippfläche reicht 15 px in den Titel hinein; ohne eigene Ebene überdeckte er sie
     (gemessen 43 statt 44 px, mobil_pruefstand). */
  .t15 .breadcrumbs{position:relative;z-index:1;}
  /* Auch in der Breite 44 px (04.10.2026): «Start» war 35 px breit. Polster plus gleich
     grosser Gegenrand vergrössert die Tippfläche, ohne dass sich der Text verschiebt. */
  .t15 .breadcrumbs a{padding-inline:6px;margin-inline:-6px;}
  /* Fingerziele 44 px (SHOP-46): der Tipp unter dem Preis auf /mail (35 px) und
     «Pakete ansehen» auf /webmail (23 px), gemessen mit mobil_pruefstand. */
  .t15 .wzd-tipp{min-height:44px;}
  .t15 a.fw-mehr{display:inline-flex;align-items:center;min-height:44px;}
}

/* ── Druck: hell, ohne Fläche ───────────────────────────────── */
@media print{
  .t15 .legal-toc{background:none;border:1px solid #d2d2d7;}
}

/* ══ Inhaltsbausteine v15 (Runde 2, 06.10.2026, techq-83) ═══════════
   Auftrag Fabrizio: die Seiten, die unter dem v15-Kopf noch alte Bausteine
   tragen, innen ebenfalls auf v15 bringen — NUR mit diesem Blatt, das Markup
   bleibt (techq-b9 hat Textänderungen an /pakete, /vergleich, den Landeseiten
   u. a. geparkt; die müssen konfliktfrei aufgehen). Vokabular wie /kontakt
   (kontakt2.css) und /entdecken (entdecken2.css): Karten ohne Rand auf
   --s15-card, Rundung 24/28; Überschriften halbfett; Tabellen in
   --s15-line-Linien; Fragen wie .s15-frage; Schlusskästen grau ohne Rand.
   `:not(#_)` hebt über site.css, die Seitenblätter und hell-dunkel.css;
   dunkel kommen die Werte aus den --s15-Marken. Rechtstexte und Hilfe
   tragen keinen dieser Bausteine (Pixelvergleich vorher/nachher). */

/* ── 1 · Abschnittstitel halbfett (site.css: 500) ─────────────── */
.t15 .section-title:not(#_){font-weight:600;letter-spacing:-0.028em;color:var(--s15-text);}
.t15 .section-sub:not(#_){color:var(--s15-text2);}

/* ── 2 · Karten und Schritte (Landeseiten) ──────────────────────
   Ohne Rand auf der grauen Fläche wie die Kacheln von /kontakt (24 px). */
.t15 .svc-card:not(#_){border:0;border-radius:24px;background:var(--s15-card);}
.t15 .lp-karten .svc-card:not(#_) h3,
.t15 .lp-schritte:not(#_) h3{font-weight:600;letter-spacing:-0.012em;color:var(--s15-text);}
.t15 .lp-schritte:not(#_) li{border:0;border-radius:24px;background:var(--s15-card);padding:26px;}
/* Die Ziffer: Blau auf zarter Tönung (wie die gewählte Spalte), ohne Mono. */
.t15 .lp-schritte:not(#_) li::before{
  background:var(--s15-kc-tint);color:var(--s15-link);
  font-family:inherit;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;
}

/* ── 3 · Vergleichstabellen (.compare) in v15-Linien ────────────
   Kein Rahmen um die Tabelle, Zeilen auf der Linie, Gruppenzeilen als
   ruhige Zwischenzeile statt Mono in Grossbuchstaben, gewählte Spalte in
   der Tönung von /entdecken. Zahlen bleiben gleich breit (site.css). */
.t15 .compare-wrap:not(#_){border:0;border-radius:0;background:transparent;}
.t15 .compare:not(#_){font-size:15px;}
.t15 .compare:not(#_) th,
.t15 .compare:not(#_) td{border-bottom:1px solid var(--s15-line);}
.t15 .compare:not(#_) thead th{background:var(--s15-bg);border-bottom:1px solid var(--s15-line);}
.t15 .compare:not(#_) .plan-h{font-weight:600;}
.t15 .compare:not(#_) .plan-h-price{font-family:inherit;font-variant-numeric:tabular-nums;color:var(--s15-text2);}
.t15 .compare:not(#_) tr.group td{
  padding-top:24px;background:transparent;
  font-family:inherit;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;
  color:var(--s15-text2);
}
.t15 .compare:not(#_) .featured-col{background:var(--s15-kc-tint);}
.t15 .compare:not(#_) thead th.featured-col{box-shadow:none;}
.t15 .compare:not(#_) thead th.featured-col .plan-h{color:var(--s15-link);}
/* Der kleine Preis in der getönten Spalte: --s15-text2 hatte dort 4.43:1 (axe, /vergleich). */
.t15 .compare:not(#_) .featured-col .plan-h-price{color:var(--s15-text);}
.t15 .compare-scroll-hint:not(#_){font-family:inherit;font-size:13px;letter-spacing:0;text-transform:none;color:var(--s15-text2);}

/* ── 4 · Fragen der Landeseiten (.lp-faq) wie .s15-frage ────────
   20 px halbfett, Plus dreht sich zum Kreuz (Startseite, /kontakt). */
.t15 .lp-faq:not(#_) details{padding:0;border-top:1px solid var(--s15-line);}
.t15 .lp-faq:not(#_) details:last-child{border-bottom:1px solid var(--s15-line);}
.t15 .lp-faq:not(#_) summary{
  align-items:center;gap:24px;padding:22px 0;
  font-size:20px;font-weight:600;letter-spacing:-0.012em;color:var(--s15-text);
}
.t15 .lp-faq:not(#_) summary::after{
  content:"+";flex:none;font-size:28px;font-weight:300;line-height:1;
  color:var(--s15-text3);transition:transform .3s;
}
.t15 .lp-faq:not(#_) details[open] summary::after{content:"+";transform:rotate(45deg);}
.t15 .lp-faq:not(#_) summary:focus-visible{outline:2px solid var(--s15-link);outline-offset:3px;border-radius:6px;}
.t15 .lp-faq:not(#_) .lp-antwort{margin:0;padding:0 48px 24px 0;}
.t15 .lp-faq:not(#_) .lp-antwort p{font-size:17px;line-height:1.5;color:var(--s15-text2);}

/* ── 5 · Schlusskästen (.lp-schluss, /faq .hfr-help) ─────────────
   Grau ohne Rand, Rundung 28 wie die Karten — dunkel auf dem Kartenton
   (#161617): --s15-bg2 wäre dort #0b0b0c auf Schwarz, nicht zu sehen. */
.t15 .lp-schluss:not(#_),
.t15 .hfr-help:not(#_){border:0;border-radius:28px;background:var(--s15-bg2);}
html[data-theme="dark"] .t15 .lp-schluss:not(#_),
html[data-theme="dark"] .t15 .hfr-help:not(#_){background:var(--s15-card);}
.t15 .lp-schluss:not(#_) h2{font-weight:600;letter-spacing:-0.028em;color:var(--s15-text);}
.t15 .hfr-help:not(#_){padding:clamp(26px,3vw,40px);}
.t15 .hfr-help-t:not(#_){font-size:21px;font-weight:600;letter-spacing:-0.012em;color:var(--s15-text);}

/* ── 6 · Häufige Fragen (/faq, faq-shop.css) ─────────────────────
   Gruppen als graue Oberzeile statt Grossbuchstaben, die Liste ohne Kasten:
   Linien zwischen den Fragen wie .s15-frage, aber 17 px — die Seite trägt
   110 Fragen, 20 px wären dort eine Wand. Antworten grau, 17 px. */
/* Jede Gruppe steht in einem eigenen .hfr-gruppe-block — `:first-of-type` trifft
   darum JEDE Überschrift; der Abstand gehört an den Block. */
.t15 .hfr-gruppe:not(#_){
  margin:0 0 6px;
  font-size:17px;font-weight:600;letter-spacing:-0.01em;text-transform:none;color:var(--s15-text2);
}
.t15 .hfr-gruppe-block:not(#_) + .hfr-gruppe-block{margin-top:56px;}
.t15 .hfr-liste:not(#_){border:0;border-radius:0;background:transparent;overflow:visible;border-bottom:1px solid var(--s15-line);}
.t15 .hfr-eintrag:not(#_){border-top:1px solid var(--s15-line);}
.t15 .hfr-frage:not(#_){padding:20px 0;font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--s15-text);}
.t15 .hfr-frage:not(#_):hover{background:none;color:var(--s15-link);}
.t15 .hfr-frage:not(#_):focus-visible{outline:2px solid var(--s15-link);outline-offset:3px;border-radius:6px;box-shadow:none;}
.t15 .hfr-pfeil:not(#_){color:var(--s15-text3);}
.t15 .hfr-antwort:not(#_){padding:0 48px 22px 0;}
.t15 .hfr-antwort:not(#_) p,
.t15 .hfr-antwort:not(#_) li{font-size:17px;line-height:1.5;color:var(--s15-text2);}
.t15 .hfr-antwort:not(#_) strong{color:var(--s15-text);font-weight:600;}
.t15 .hfr-eigene:not(#_){font-size:15px;}
.t15 .hfr-leer:not(#_){padding:28px 0;}
/* Sprungmarken als graue Pillen (wie der Nebenknopf), dunkel mit Rand. */
.t15 .hfr-sprung:not(#_) a{padding:8px 16px;border:0;background:var(--s15-card2);color:var(--s15-text);font-size:14px;}
.t15 .hfr-sprung:not(#_) a:hover{background:var(--s15-chip);color:var(--s15-text);}
html[data-theme="dark"] .t15 .hfr-sprung:not(#_) a{border:1px solid var(--s15-chip);}
.t15 .hfr-sprung:not(#_) a:focus-visible{outline:2px solid var(--s15-link);outline-offset:3px;}
/* Suchfeld als Pille wie die Domainsuche; Rand 3:1 (--s15-feld-rand). */
.t15 .hfr-suche:not(#_) input{border:1px solid var(--s15-feld-rand);border-radius:980px;background:var(--s15-bg);color:var(--s15-text);padding-left:44px;}
.t15 .hfr-suche:not(#_) input:focus{border-color:var(--s15-link);box-shadow:0 0 0 1px var(--s15-link);}
.t15 .hfr-suche:not(#_) svg{left:16px;color:var(--s15-text3);}
.t15 .hfr-zaehler:not(#_){color:var(--s15-text2);}

/* ── 7 · /pakete: Inline-Stile (pakete.html, pakete.js) ──────────
   Die Seite trägt ihre Gestaltung inline; überschreiben geht nur mit
   !important. Begrenzt auf die Seite mit dem Kartengitter (:has(#plansGrid)),
   also nirgends sonst. Das Leuchten der Empfehlung (.tq-rec-highlight,
   pakete.js) ist ausgenommen — ein !important-Schatten hielte es an. */
main.t15:has(#plansGrid) span[style*="text-transform:uppercase"]{
  font-family:inherit !important;font-size:17px !important;font-weight:600 !important;
  letter-spacing:-0.01em !important;text-transform:none !important;color:var(--s15-text2) !important;
}
main.t15:has(#plansGrid) h2[style*="font-weight:500"]{font-weight:600 !important;letter-spacing:-0.028em !important;}
main.t15:has(#plansGrid) div[style*="border:1px solid var(--border)"][style*="border-radius:18px"]{
  border:0 !important;border-radius:28px !important;background:var(--s15-bg2) !important;
}
html[data-theme="dark"] main.t15:has(#plansGrid) div[style*="border:1px solid var(--border)"][style*="border-radius:18px"]{background:var(--s15-card) !important;}
main.t15:has(#plansGrid) a[style*="background:var(--btn-bg)"]{
  border-radius:980px !important;background:var(--s15-cta) !important;color:#fff !important;
}
main.t15:has(#plansGrid) a[style*="background:var(--btn-bg)"]:hover{background:var(--s15-ctah) !important;}
/* Die Karten (pakete.js): ohne Rand auf --s15-card, Rundung 28 wie .s15-karte;
   die empfohlene mit blauem Ring statt Rahmen und Schatten. */
main.t15:has(#plansGrid) #plansGrid > [data-plan-id],
main.t15:has(#plansGrid) #plansGrid div[style*="max-width:460px"]{
  border:0 !important;border-radius:28px !important;background:var(--s15-card) !important;
}
main.t15:has(#plansGrid) #plansGrid > [data-plan-id]:not(.tq-rec-highlight),
main.t15:has(#plansGrid) #plansGrid div[style*="max-width:460px"]{box-shadow:none !important;}
main.t15:has(#plansGrid) #plansGrid > [data-plan-id][style*="solid var(--accent)"]:not(.tq-rec-highlight),
main.t15:has(#plansGrid) #plansGrid div[style*="max-width:460px"]{box-shadow:0 0 0 2px var(--s15-cta) !important;}
/* Paketname: Kartentitel der Startseite (.s15-karte__titel 28 px) statt Mono in Versalien. */
main.t15:has(#plansGrid) #plansGrid span[style*="text-transform:uppercase"]{
  font-family:inherit !important;font-size:28px !important;font-weight:600 !important;
  letter-spacing:-0.022em !important;text-transform:none !important;color:var(--s15-text) !important;
}
/* Buchen: blaue Pille auf jeder Karte, wie die Karten der Startseite. */
main.t15:has(#plansGrid) #plansGrid button[data-tq="kaufen"]{
  border:0 !important;border-radius:980px !important;background:var(--s15-cta) !important;color:#fff !important;
  font-size:15px !important;
}
main.t15:has(#plansGrid) #plansGrid button[data-tq="kaufen"]:hover{background:var(--s15-ctah) !important;}
main.t15:has(#plansGrid) #plansGrid button[data-tq="kaufen"]:focus-visible{outline:2px solid var(--s15-link);outline-offset:3px;}
main.t15:has(#plansGrid) #plansGrid button[disabled]{border-radius:980px !important;}
/* Fingerziele 44 px: die Knöpfe standen bei 42–43 px (gemessen live und neu, 06.10.2026). */
main.t15:has(#plansGrid) #plansGrid button[data-tq="kaufen"],
main.t15:has(#plansGrid) #plansGrid button[disabled]{min-height:44px !important;}
@media (max-width:700px){
  /* «Die sechs Grössen im Überblick» war am Telefon 23 px hoch. */
  main.t15:has(#plansGrid) .pk-ueberblick a{min-height:44px;}
}
main.t15:has(#plansGrid) #plansGrid a[style*="background:var(--btn-bg)"]{border-radius:980px !important;}

/* ══ Inhaltsbausteine v15 (Runde 3, 06.10.2026, techq-83) ═══════════
   Seiten mit eigenen alten Bausteinen: /quin-plus, /reseller, /paket-finder,
   der Umzugskasten auf /vergleich, dazu /ueberuns/infrastruktur, /team und
   /partner (Fabrizio: «über uns ebenfalls»). Wie Runde 2 NUR in diesem Blatt,
   das Markup bleibt (techq-b9 hat Texte u. a. in /vergleich, /reseller,
   /paket-finder und /ueberuns/infrastruktur geparkt). Jede Regel hängt an einem
   Merkmal genau ihrer Seite — `main.t15:has(<Baustein>)` —, weil Blätter und
   Klassen dahinter auch anderswo vorkommen (ueberuns-kapitel.css laden 162
   Hilfe-Seiten, die wzd-Zeilen des Zahlenrechners stehen auch auf /mail).
   Ausnahme: .about-foot-cta, den nur /quin-plus und /ueberuns/team tragen
   (gezählt 06.10.). */

/* ── 8 · /quin-plus ───────────────────────────────────────────── */
/* Die vier Etiketten stehen im Markup in Versalien («PAKET», «ABLAUF»,
   «FÄHIGKEITEN», «FRAGEN») — `text-transform:none` hilft dort nicht. Es ist je
   ein deutsches Hauptwort: klein gesetzt, der erste Buchstabe gross ergibt die
   richtige Schreibung. Nur hier; anderswo stehen Etiketten in Normalschrift. */
main.t15:has(.qpp-karte) .section-tag:not(#_){text-transform:lowercase;}
main.t15:has(.qpp-karte) .section-tag:not(#_)::first-letter{text-transform:uppercase;}
/* Preiskarten: ohne Rand auf --s15-card, Rundung 28 wie /pakete. Die Karte
   zum Buchen trägt den blauen Ring der Empfehlung; Streifen und Schatten fallen
   weg (zwei Hervorhebungen heben nichts hervor). */
main.t15:has(.qpp-karte) .qpp-karte:not(#_){border:0;border-radius:28px;background:var(--s15-card);}
main.t15:has(.qpp-karte) .qpp-karte-wahl:not(#_){box-shadow:0 0 0 2px var(--s15-cta);}
main.t15:has(.qpp-karte) .qpp-streifen:not(#_){display:none;}
main.t15:has(.qpp-karte) .qpp-leib:not(#_){padding:clamp(26px,3vw,36px);}
/* Kartentitel wie .s15-karte__titel (28 px) statt Mono in Versalien. */
main.t15:has(.qpp-karte) .qpp-name:not(#_){font-family:inherit;font-size:28px;font-weight:600;letter-spacing:-0.022em;text-transform:none;color:var(--s15-text);}
@media (max-width:640px){
  /* «Web-M · Web-L · Web-XL» brach bei 28 px am Bindestrich («Web-» / «XL»,
     390 px); 24 px passt auf eine Zeile, auch bei 375 px. */
  main.t15:has(.qpp-karte) .qpp-name:not(#_){font-size:24px;}
}
main.t15:has(.qpp-karte) .qpp-marke:not(#_){font-family:inherit;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;padding:4px 10px;}
main.t15:has(.qpp-karte) .qpp-text:not(#_){font-size:17px;line-height:1.42;color:var(--s15-text2);}
main.t15:has(.qpp-karte) .qpp-num:not(#_){color:var(--s15-text);}
main.t15:has(.qpp-karte) .qpp-cur:not(#_),
main.t15:has(.qpp-karte) .qpp-per:not(#_),
main.t15:has(.qpp-karte) .qpp-sub:not(#_){color:var(--s15-text2);}
main.t15:has(.qpp-karte) .qpp-liste:not(#_){border-top-color:var(--s15-line);}
main.t15:has(.qpp-karte) .qpp-liste li:not(#_){font-size:15px;color:var(--s15-text2);}
main.t15:has(.qpp-karte) .qpp-liste b:not(#_){color:var(--s15-text);font-weight:600;}
/* Ablauf: Nummern als graue Oberzeile statt Mono mit Sperrung. */
main.t15:has(.qpp-karte) .about-section .sec-num:not(#_){font-family:inherit;font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--s15-text2);}
/* Attrappe der Bestätigungskarte: ohne Rand, Form des Kundencenters (kc.css:
   Karten 18 px, Knöpfe als Pille), Feldnamen ohne Versalien. «Ja, ausführen»
   im Blau, das die echte Karte dort trägt (kc.css: --kbc-marke = --kc-blue
   #0071e3) statt im alten #1c4f9e; weiss darauf 4.70:1. */
main.t15:has(.qpp-karte) .qpk:not(#_){border:0;border-radius:18px;}
main.t15:has(.qpp-karte) .qpk-kopf:not(#_){border-bottom-color:var(--s15-line);}
main.t15:has(.qpp-karte) .qpk-feld:not(#_){font-family:inherit;font-size:13px;letter-spacing:0;text-transform:none;color:var(--s15-text2);}
main.t15:has(.qpp-karte) .qpk-ja:not(#_),
main.t15:has(.qpp-karte) .qpk-nein:not(#_){border-radius:980px;}
main.t15:has(.qpp-karte) .qpk-ja:not(#_){background:var(--s15-cta);border-color:var(--s15-cta);}
/* «Was er für Sie ausführen kann»: der Kasten trägt seinen Grund inline
   (background:var(--surface)) — darum !important. Grau, rund, ohne Rand. */
main.t15:has(.qpp-karte) .info-card:not(#_){border:0;border-radius:28px;background:var(--s15-card) !important;padding:clamp(26px,3vw,40px);}
main.t15:has(.qpp-karte) .qp-liste li:not(#_){font-size:15px;color:var(--s15-text2);}
main.t15:has(.qpp-karte) .qp-liste b:not(#_){color:var(--s15-text);font-weight:600;}
main.t15:has(.qpp-karte) .qp-stand:not(#_),
main.t15:has(.qpp-karte) .qp-kleingedruckt:not(#_){color:var(--s15-text2);}

/* ── 9 · Kasten am Seitenende (.about-foot-cta) ───────────────────
   Grau ohne Rand, Rundung 28 wie die Schlusskästen der Landeseiten (Runde 2);
   dunkel auf dem Kartenton — --s15-bg2 wäre dort auf Schwarz nicht zu sehen. */
.t15 .about-foot-cta:not(#_){border:0;border-radius:28px;background:var(--s15-bg2);}
html[data-theme="dark"] .t15 .about-foot-cta:not(#_){background:var(--s15-card);}
.t15 .about-foot-cta:not(#_) h3{font-size:21px;font-weight:600;letter-spacing:-0.012em;color:var(--s15-text);}
.t15 .about-foot-cta:not(#_) p{font-size:17px;line-height:1.45;color:var(--s15-text2);}

/* ── 10 · /reseller ──────────────────────────────────────────── */
/* Schritte, Stufen und Fragen als Karten ohne Rand auf --s15-card; die
   mittlere Stufe mit dem blauen Ring wie die Empfehlung auf /pakete. */
main.t15:has(.rs-karten) .rs-schritt:not(#_){border:0;border-radius:24px;background:var(--s15-card);padding:26px;}
/* Die Ziffer wie auf den Landeseiten: Blau auf zarter Tönung, ohne Mono. */
main.t15:has(.rs-karten) .rs-nr:not(#_){
  display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;
  background:var(--s15-kc-tint);color:var(--s15-link);
  font-family:inherit;font-size:14px;font-weight:600;letter-spacing:0;font-variant-numeric:tabular-nums;
}
main.t15:has(.rs-karten) .rs-schritt h3:not(#_){margin:14px 0 6px;font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--s15-text);}
main.t15:has(.rs-karten) .rs-schritt p:not(#_){font-size:15px;line-height:1.5;color:var(--s15-text2);}
main.t15:has(.rs-karten) .rs-karte:not(#_){border:0;border-radius:28px;background:var(--s15-card);padding:clamp(26px,3vw,34px);}
main.t15:has(.rs-karten) .rs-karte-hebt:not(#_){box-shadow:0 0 0 2px var(--s15-cta);}
main.t15:has(.rs-karten) .rs-karte h3:not(#_){font-size:28px;font-weight:600;letter-spacing:-0.022em;color:var(--s15-text);}
main.t15:has(.rs-karten) .rs-tag:not(#_){font-size:15px;color:var(--s15-text2);}
/* Preis in der Seitenschrift statt Mono, 28 px wie der Kartentitel, Ziffern
   gleich breit (wie die Preise auf /pakete). */
main.t15:has(.rs-karten) .rs-preis:not(#_){font-family:inherit;font-size:28px;font-weight:600;letter-spacing:-0.022em;color:var(--s15-text);font-variant-numeric:tabular-nums;}
main.t15:has(.rs-karten) .rs-preis .rs-per:not(#_),
main.t15:has(.rs-karten) .rs-zyklus:not(#_){font-size:14px;color:var(--s15-text2);}
main.t15:has(.rs-karten) .rs-specs li:not(#_){border-bottom-color:var(--s15-line);font-size:15px;color:var(--s15-text2);}
main.t15:has(.rs-karten) .rs-specs b:not(#_){font-family:inherit;font-size:15px;font-weight:600;color:var(--s15-text);font-variant-numeric:tabular-nums;}
/* Tabelle in v15-Linien wie .compare (Runde 2): kein Kasten, Kopf ohne Versalien. */
main.t15:has(.rs-karten) .rs-tabelle-huelle:not(#_){border:0;border-radius:0;background:transparent;}
main.t15:has(.rs-karten) .rs-tabelle:not(#_){font-size:15px;}
main.t15:has(.rs-karten) .rs-tabelle:not(#_) th,
main.t15:has(.rs-karten) .rs-tabelle:not(#_) td,
main.t15:has(.rs-karten) .rs-tabelle:not(#_) tbody tr:last-child td{border-bottom:1px solid var(--s15-line);}
main.t15:has(.rs-karten) .rs-tabelle:not(#_) thead th{font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--s15-text2);}
main.t15:has(.rs-karten) .rs-tabelle:not(#_) td{font-variant-numeric:tabular-nums;}
main.t15:has(.rs-karten) .rs-frage:not(#_){border:0;border-radius:24px;background:var(--s15-card);padding:26px;}
/* Ausgeglichen umbrechen: am Telefon stand sonst «… ein techQ-» / «Konto?». */
main.t15:has(.rs-karten) .rs-frage h3:not(#_){font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--s15-text);text-wrap:balance;}
main.t15:has(.rs-karten) .rs-frage p:not(#_){font-size:15px;line-height:1.5;color:var(--s15-text2);}

/* ── 11 · /paket-finder ──────────────────────────────────────── */
/* Der Assistent als graue Fläche der Startseite (.s15-laufzeit), ohne Rand;
   die Kopfzeile ohne eigenen Grund, «Frage 1 von 7» als Oberzeile. Die
   Wahlkacheln sind Bedienelemente: weiss mit 3:1-Rand (--s15-feld-rand),
   gewählt blau wie die Wahl auf /entdecken. */
main.t15:has(.wizard) .wizard:not(#_){border:0;border-radius:28px;background:var(--s15-bg2);}
html[data-theme="dark"] main.t15:has(.wizard) .wizard:not(#_){background:var(--s15-card);}
main.t15:has(.wizard) .wizard-head:not(#_){background:transparent;border-bottom:1px solid var(--s15-line);}
main.t15:has(.wizard) .wizard-step-label:not(#_){font-family:inherit;font-size:15px;font-weight:600;letter-spacing:-0.01em;text-transform:none;color:var(--s15-text2);}
main.t15:has(.wizard) .wizard-progress .step:not(#_){background:var(--s15-chip);}
main.t15:has(.wizard) .wizard-progress .step.done:not(#_){background:var(--s15-cta);opacity:.45;}
main.t15:has(.wizard) .wizard-progress .step.active:not(#_){background:var(--s15-cta);opacity:1;}
main.t15:has(.wizard) .wizard-question:not(#_){font-weight:600;letter-spacing:-0.022em;color:var(--s15-text);}
main.t15:has(.wizard) .wizard-hint:not(#_){font-size:17px;color:var(--s15-text2);}
main.t15:has(.wizard) .wizard-option:not(#_){border-color:var(--s15-feld-rand);border-radius:18px;background:var(--s15-bg);}
main.t15:has(.wizard) .wizard-option.selected:not(#_){border-color:var(--s15-cta);background:var(--s15-kc-tint);box-shadow:0 0 0 1px var(--s15-cta) inset;}
/* Fokus als Umriss wie die übrigen v15-Bedienelemente: der Schatten gehört der
   Wahl — mit ihm als Fokuszeichen (site.css: --ring) verlor die gewählte
   Kachel ihren Fokusring, sobald diese Regel die Wahl zeichnete. */
main.t15:has(.wizard) .wizard-option:not(#_):focus-visible,
main.t15:has(.wizard) .wz-term:not(#_):focus-visible,
main.t15:has(.wizard) .wz-chip:not(#_):focus-visible{outline:2px solid var(--s15-link);outline-offset:3px;}
main.t15:has(.wizard) .wizard-option:not(#_) .wz-opt-icon{background:var(--s15-card2);color:var(--s15-text2);}
main.t15:has(.wizard) .wizard-option.selected:not(#_) .wz-opt-icon{background:var(--s15-cta);color:#fff;}
/* Dunkel: Flächen IN einer Karte eine Stufe darüber, nie darunter (hell-dunkel.css,
   «Flächen in einer Karte») — Schwarz wären auf #161617 Löcher. Die gewählte
   Kachel behält die Tönung, die über dem Kartenton liegt. */
html[data-theme="dark"] main.t15:has(.wizard) .wizard-option:not(#_){background:var(--s15-card2);}
html[data-theme="dark"] main.t15:has(.wizard) .wizard-option.selected:not(#_){background:var(--s15-kc-tint);}
html[data-theme="dark"] main.t15:has(.wizard) .wizard-option:not(#_) .wz-opt-icon{background:var(--s15-chip);}
html[data-theme="dark"] main.t15:has(.wizard) .wizard-option.selected:not(#_) .wz-opt-icon{background:var(--s15-cta);}
main.t15:has(.wizard) .wizard-option:not(#_) .opt-title{font-weight:600;color:var(--s15-text);}
main.t15:has(.wizard) .wizard-option:not(#_) .opt-desc{color:var(--s15-text2);}
/* Gewählt: Grau auf der Tönung hatte 4.08:1 (axe, hell) — die Beschreibung
   darin in der Textfarbe, wie /entdecken die Angaben der Wahl umfärbt. */
main.t15:has(.wizard) .wizard-option.selected:not(#_) .opt-desc{color:var(--s15-text);}
main.t15:has(.wizard) .wizard-option:not(#_) .wz-opt-key{font-family:inherit;font-size:12px;border-color:var(--s15-line);color:var(--s15-text2);}
main.t15:has(.wizard) .wizard-foot:not(#_){border-top:1px solid var(--s15-line);}
/* Ergebnis (finder.js): Oberzeile statt Versalien, Hinweise ohne Rahmen. */
main.t15:has(.wizard) .wz-res-eyebrow:not(#_){font-family:inherit;font-size:17px;font-weight:600;letter-spacing:-0.01em;text-transform:none;color:var(--s15-text2);}
main.t15:has(.wizard) .wz-res-title:not(#_){font-weight:600;letter-spacing:-0.024em;color:var(--s15-text);}
main.t15:has(.wizard) .wz-reasons li:not(#_){font-size:15px;color:var(--s15-text2);}
main.t15:has(.wizard) .wz-tip:not(#_){border:0;border-radius:18px;background:var(--s15-kc-tint);color:var(--s15-text);}
main.t15:has(.wizard) .wz-capnote:not(#_){border:0;border-radius:18px;}
main.t15:has(.wizard) .wz-chips-wrap:not(#_){border-top-color:var(--s15-line);}
main.t15:has(.wizard) .wz-chips-label:not(#_){font-family:inherit;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--s15-text2);}
main.t15:has(.wizard) .wz-chip:not(#_){border-color:var(--s15-feld-rand);background:var(--s15-bg);color:var(--s15-text);font-size:13px;}
/* Treffer der Zahlenliste («kleinstes, das reicht», finder.js): Blau ohne Versalien. */
main.t15:has(.wizard) .wzd-marke:not(#_){font-family:inherit;font-size:var(--s-daten);font-weight:600;letter-spacing:0;text-transform:none;color:var(--s15-link);}
/* Empfehlung im Ergebnis wie die empfohlene Karte auf /pakete (Runde 2): ohne
   Rahmen, Rundung 28, blauer Ring; «Empfohlen» als blaues Band in
   Normalschrift (weiss auf #0071e3: 4.70:1). Paketname wie der Kartentitel. */
main.t15:has(.wizard) .wz-plan-card:not(#_){border:0;border-radius:28px;background:var(--s15-bg);box-shadow:0 0 0 2px var(--s15-cta);padding:32px 26px 26px;}
main.t15:has(.wizard) .wz-plan-badge:not(#_){
  top:-14px;left:22px;padding:5px 12px;border-radius:980px;background:var(--s15-cta);color:#fff;
  font-family:inherit;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;line-height:1.2;
}
main.t15:has(.wizard) .wz-plan-name:not(#_){font-family:inherit;font-size:28px;font-weight:600;letter-spacing:-0.022em;text-transform:none;color:var(--s15-text);}
main.t15:has(.wizard) .wz-plan-tagline:not(#_){font-size:15px;color:var(--s15-text2);}
/* Laufzeit: Wahlknöpfe als Pillen, Rand 3:1 wie die Wahlkacheln. */
main.t15:has(.wizard) .wz-term:not(#_){border-color:var(--s15-feld-rand);border-radius:980px;background:transparent;color:var(--s15-text);font-family:inherit;font-size:13px;font-weight:500;}
main.t15:has(.wizard) .wz-term.active:not(#_){border-color:var(--s15-cta);background:var(--s15-kc-tint);color:var(--s15-link);box-shadow:0 0 0 1px var(--s15-cta) inset;}
/* Dunkel: #2997ff auf der Tönung über der Karte (#1d1d1f) nur 4.41:1 (axe). */
html[data-theme="dark"] main.t15:has(.wizard) .wz-term.active:not(#_){color:var(--s15-text);}
main.t15:has(.wizard) .wz-price-cur:not(#_),
main.t15:has(.wizard) .wz-price-per:not(#_),
main.t15:has(.wizard) .wz-price-sub:not(#_){color:var(--s15-text2);}
main.t15:has(.wizard) .wz-plan-features:not(#_){border-top-color:var(--s15-line);}
main.t15:has(.wizard) .wz-plan-features li:not(#_){font-size:14px;}
main.t15:has(.wizard) .wz-plan-features strong:not(#_){font-weight:600;}
/* Die zwei Ausweichpakete: Karten ohne Rand, Oberzeile statt Versalien. */
main.t15:has(.wizard) .wz-alt:not(#_){border:0;border-radius:24px;background:var(--s15-bg);padding:22px 24px;}
main.t15:has(.wizard) .wz-alt-label:not(#_){font-family:inherit;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--s15-text2);}
main.t15:has(.wizard) .wz-alt-name:not(#_){font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--s15-text);}
main.t15:has(.wizard) .wz-alt-note:not(#_){font-size:14px;color:var(--s15-text2);}
main.t15:has(.wizard) .wz-alt-price:not(#_){font-family:inherit;font-size:13px;font-variant-numeric:tabular-nums;color:var(--s15-text2);}
main.t15:has(.wizard) .wz-chosen-note:not(#_),
main.t15:has(.wizard) .wz-smallprint:not(#_){color:var(--s15-text2);}
/* Zahlenrechner (.wzd, Fläche seit 03.10.): Ziffern in der Seitenschrift statt
   Mono, Linien und Treffer wie oben. Grössen bleiben auf der Leiter von site.css
   (tools/mail_leiter_pruefstand.py). */
main.t15:has(.wizard) .wzd-feld input:not(#_){border-color:var(--s15-feld-rand);border-radius:12px;font-family:inherit;}
main.t15:has(.wizard) .wzd-zeile:not(#_){border-top-color:var(--s15-line);}
/* Die Zeile «kleinstes, das reicht» behält ihre Tönung (site.css, 6 %); die
   kräftigere --s15-kc-tint drückte Blau, Grün und Grau darauf unter 4.5:1.
   Grau stand schon live bei 4.3:1 (axe, hell) — Daten und Preis darin in der
   Textfarbe. */
main.t15:has(.wizard) .wzd-zeile.kleinstes:not(#_) .wzd-daten,
main.t15:has(.wizard) .wzd-zeile.kleinstes:not(#_) .wzd-preis{color:var(--s15-text);}
main.t15:has(.wizard) .wzd-name:not(#_){font-weight:600;}
main.t15:has(.wizard) .wzd-daten:not(#_),
main.t15:has(.wizard) .wzd-preis:not(#_){font-family:inherit;}
/* Dunkel: beide Flächen der Seite auf dem Kartenton wie die Schlusskästen
   (Runde 2) — #0b0b0c (--s15-bg2) stünde unsichtbar auf Schwarz, und der
   Assistent darüber trüge einen anderen Ton als der Rechner darunter. Was in
   den Flächen liegt, eine Stufe darüber (#1d1d1f). */
html[data-theme="dark"] main.t15:has(.wizard) .wzd:not(#_){background:var(--s15-card);}
html[data-theme="dark"] main.t15:has(.wizard) .wzd-feld input:not(#_),
html[data-theme="dark"] main.t15:has(.wizard) .wz-chip:not(#_),
html[data-theme="dark"] main.t15:has(.wizard) .wz-plan-card:not(#_),
html[data-theme="dark"] main.t15:has(.wizard) .wz-alt:not(#_){background:var(--s15-card2);}
@media (max-width:640px){
  /* Fingerziele im Ergebnis: Angaben-Chips 27 px, Laufzeitknöpfe 29 px hoch
     (live gemessen 06.10., 390 und 375 px). */
  main.t15:has(.wizard) .wz-chip:not(#_),
  main.t15:has(.wizard) .wz-term:not(#_){min-height:44px;}
}

/* ── 12 · /vergleich: Kasten «Schon woanders gehostet?» ──────────
   Inline gestaltet (vergleich.html), darum der Stil-Anker und !important; er
   kommt auf der Seite genau einmal vor. Grau ohne Rand wie die Schlusskästen. */
main.t15:has(.vg-wahl) div[style*="border:1px solid var(--border)"][style*="max-width:720px"]{
  border:0 !important;border-radius:28px !important;background:var(--s15-bg2) !important;padding:clamp(26px,3vw,40px) !important;
}
html[data-theme="dark"] main.t15:has(.vg-wahl) div[style*="border:1px solid var(--border)"][style*="max-width:720px"]{background:var(--s15-card) !important;}
main.t15:has(.vg-wahl) div[style*="max-width:720px"] > div[style*="font-weight:550"]{font-size:21px;font-weight:600 !important;letter-spacing:-0.012em;color:var(--s15-text);}
main.t15:has(.vg-wahl) div[style*="max-width:720px"] > p{font-size:17px !important;line-height:1.45 !important;color:var(--s15-text2) !important;}

/* ── 13 · /ueberuns/infrastruktur: Kapitel wie /kontakt (kontakt2.css) ──
   ueberuns-kapitel.css laden auch die 162 Hilfe-Seiten und die Hilfe-Hülle —
   jede Regel hier hängt an `main.t15:has(.kap-zahlen)` (gezählt 06.10.: keine
   Hilfe-Seite trägt einen kap-Baustein). */
main.t15:has(.kap-zahlen) .kap-bild:not(#_){border:0;border-radius:28px;}
main.t15:has(.kap-zahlen) .kap-bild__quelle:not(#_){font-family:inherit;font-size:12px;letter-spacing:0;}
/* Kennzahlen: Kacheln ohne Rahmen wie /kontakt (.k15-zahl), Werte einfarbig. */
main.t15:has(.kap-zahlen) .kap-zahlen:not(#_){gap:20px;border:0;border-radius:0;background:transparent;overflow:visible;}
main.t15:has(.kap-zahlen) .kap-zahl:not(#_){background:var(--s15-card);border-radius:24px;padding:30px;}
main.t15:has(.kap-zahlen) .kap-zahl__wert:not(#_){font-size:clamp(28px,3.2vw,42px);font-weight:600;letter-spacing:-0.024em;color:var(--s15-text);}
main.t15:has(.kap-zahlen) .kap-zahl__wert:not(#_) .einheit{color:var(--s15-text2);}
main.t15:has(.kap-zahlen) .kap-zahl__text:not(#_){font-size:17px;line-height:1.42;color:var(--s15-text2);}
/* Kapitel ohne Strichzeichnung: links Nummer, Titel, Text, rechts die Fragen.
   Ausdrückliche Zeilen (auto auto 1fr): Nur so spannt `grid-row:1/-1` wirklich
   alle Zeilen — im impliziten Raster spannt -1 nichts —, und der Überhang der
   langen Fragenliste geht in die 1fr-Zeile, statt links die Abstände zu dehnen.
   Jedes Kapitel hat genau vier Kinder (Nummer, h2, Text, Liste; gezählt 06.10.). */
main.t15:has(.kap-zahlen) .kap:not(#_){display:block;border-top-color:var(--s15-line);}
main.t15:has(.kap-zahlen) .kap__bild:not(#_){display:none;}
main.t15:has(.kap-zahlen) .kap__text:not(#_){
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto 1fr;
  column-gap:clamp(40px,6vw,96px);align-items:start;
}
main.t15:has(.kap-zahlen) .kap__text:not(#_) > :not(.kap-liste){grid-column:1;}
/* Erste Linie der Fragen auf Höhe des Titels, 36 px wie /kontakt (.k15-fragen):
   Oberzeile 20 px + 12 px Abstand, die Linie liegt 4 px unter der Titelbox
   (gemessen 06.10.; /kontakt 1–8 px). */
main.t15:has(.kap-zahlen) .kap__text:not(#_) > .kap-liste{grid-column:2;grid-row:1 / -1;margin-top:36px;}
main.t15:has(.kap-zahlen) .kap__nr:not(#_){font-family:inherit;font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--s15-text2);}
main.t15:has(.kap-zahlen) .kap:not(#_) h2{
  margin-top:12px;max-width:none;font-size:clamp(34px,3.8vw,56px);line-height:1.04;
  font-weight:600;letter-spacing:-0.03em;color:var(--s15-text);
}
/* v15-Titel sind einfarbig (wie /kontakt). */
main.t15:has(.kap-zahlen) .kap:not(#_) h2 em{color:inherit;}
main.t15:has(.kap-zahlen) .kap__lauf:not(#_){margin-top:20px;max-width:560px;font-size:19px;line-height:1.45;letter-spacing:-0.01em;color:var(--s15-text2);}
main.t15:has(.kap-zahlen) .kap__lauf:not(#_) strong{color:var(--s15-text);font-weight:600;}
/* Fragen wie .s15-frage: Linien, 20 px halbfett; das Plus dreht sich zum
   Kreuz statt zum Minus. Auf und zu macht weiter ueberuns-kapitel.js. */
main.t15:has(.kap-zahlen) .kap-liste:not(#_){border-top-color:var(--s15-line);}
main.t15:has(.kap-zahlen) .kap-zeile:not(#_){border-bottom-color:var(--s15-line);}
main.t15:has(.kap-zahlen) .kap-zeile__knopf:not(#_){padding:22px 0;gap:24px;font-size:20px;font-weight:600;letter-spacing:-0.012em;color:var(--s15-text);}
main.t15:has(.kap-zahlen) .kap-zeile__knopf:not(#_):hover,
main.t15:has(.kap-zahlen) .kap-zeile__knopf:not(#_):active{color:var(--s15-text);}
main.t15:has(.kap-zahlen) .kap-zeile__knopf:not(#_):focus-visible{box-shadow:none;outline:2px solid var(--s15-link);outline-offset:3px;border-radius:6px;}
main.t15:has(.kap-zahlen) .kap-zeile__zeichen:not(#_){width:20px;height:20px;color:var(--s15-text3);transition:transform .3s;}
main.t15:has(.kap-zahlen) .kap-zeile__knopf:not(#_) .kap-zeile__zeichen::after{transform:rotate(90deg);}
main.t15:has(.kap-zahlen) .kap-zeile__knopf[aria-expanded="true"]:not(#_) .kap-zeile__zeichen{transform:rotate(45deg);}
main.t15:has(.kap-zahlen) .kap-zeile__inhalt:not(#_) > div{padding:0 48px 24px 0;}
main.t15:has(.kap-zahlen) .kap-zeile__inhalt:not(#_) p{max-width:none;font-size:17px;line-height:1.5;color:var(--s15-text2);}
main.t15:has(.kap-zahlen) .kap-zeile__inhalt:not(#_) strong{color:var(--s15-text);font-weight:600;}
main.t15:has(.kap-zahlen) .kap-zeile__inhalt:not(#_) .mono{font-family:inherit;font-size:1em;font-weight:500;color:var(--s15-text);}
/* Schluss: das Schlussfeld der v15-Seiten (Standard §4.6) — grau, rund, mittig,
   grosser Titel, Schein von unten; «Zur Statusseite» als Umkehrpille, «Zum
   Team» als Textverweis. Der Pfeil im Knopf ist Schmuck (aria-hidden). */
main.t15:has(.kap-zahlen) .kap-schluss:not(#_){
  flex-direction:column;justify-content:center;text-align:center;gap:0;
  border:0;border-radius:36px;padding:clamp(72px,9vw,120px) 22px;
  background:radial-gradient(60% 70% at 50% 120%, var(--s15-glow), transparent 72%), var(--s15-bg2);
}
main.t15:has(.kap-zahlen) .kap-schluss:not(#_) h3{
  margin:0 auto;max-width:800px;font-size:clamp(38px,5.4vw,68px);line-height:1.04;
  font-weight:600;letter-spacing:-0.03em;color:var(--s15-text);text-wrap:balance;
}
main.t15:has(.kap-zahlen) .kap-schluss:not(#_) p{margin:20px auto 0;max-width:520px;font-size:19px;line-height:1.45;color:var(--s15-text2);}
main.t15:has(.kap-zahlen) .kap-schluss__knoepfe:not(#_){margin-top:32px;gap:18px 28px;justify-content:center;align-items:center;}
main.t15:has(.kap-zahlen) .kap-schluss:not(#_) .btn-dark{
  padding:13px 26px;border-radius:980px;background:var(--s15-inv);color:var(--s15-invtext);font-size:17px;font-weight:400;
}
main.t15:has(.kap-zahlen) .kap-schluss:not(#_) .btn-dark:hover{background:var(--s15-inv);color:var(--s15-invtext);opacity:.88;}
main.t15:has(.kap-zahlen) .kap-schluss__pfeil:not(#_){display:none;}
main.t15:has(.kap-zahlen) .kap-schluss:not(#_) .btn-hell{
  padding:0;min-height:44px;border:0;border-radius:0;background:none;color:var(--s15-link);font-size:17px;font-weight:400;
}
main.t15:has(.kap-zahlen) .kap-schluss:not(#_) .btn-hell:hover{color:var(--s15-link);text-decoration:underline;text-underline-offset:3px;}
main.t15:has(.kap-zahlen) .kap-schluss:not(#_) .btn-hell:focus-visible{outline:2px solid var(--s15-link);outline-offset:3px;border-radius:6px;}
@media (max-width:1099.98px){
  main.t15:has(.kap-zahlen) .kap-zahlen:not(#_){grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:959.98px){
  main.t15:has(.kap-zahlen) .kap__text:not(#_){grid-template-columns:minmax(0,1fr);grid-template-rows:none;}
  main.t15:has(.kap-zahlen) .kap__text:not(#_) > .kap-liste{grid-column:1;grid-row:auto;margin-top:32px;}
}
@media (max-width:640px){
  main.t15:has(.kap-zahlen) .kap-zahlen:not(#_){grid-template-columns:minmax(0,1fr);gap:12px;}
  main.t15:has(.kap-zahlen) .kap-zahl:not(#_){padding:24px;}
  main.t15:has(.kap-zahlen) .kap__lauf:not(#_){font-size:17px;}
  /* Fragen am Telefon 18 px wie /kontakt (kontakt2.css .k15-fragen). */
  main.t15:has(.kap-zahlen) .kap-zeile__knopf:not(#_){font-size:18px;}
  main.t15:has(.kap-zahlen) .kap-zeile__inhalt:not(#_) > div{padding-right:0;}
}

/* ── 14 · /ueberuns/team ─────────────────────────────────────── */
/* Karten ohne Rand auf --s15-card, Rundung 28. Der Platzhalter fürs Porträt
   bleibt (Monogramm und «Porträt folgt»), aber ruhig grau statt Punktraster. */
main.t15:has(.founder-grid) .founder-card:not(#_){border:0;border-radius:28px;background:var(--s15-card);}
main.t15:has(.founder-grid) .founder-photo:not(#_){background-color:var(--s15-card2);background-image:none;}
main.t15:has(.founder-grid) .founder-monogram:not(#_){font-weight:600;color:var(--s15-link);}
main.t15:has(.founder-grid) .founder-photo-tag:not(#_){
  font-family:inherit;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;
  color:var(--s15-text2);background:var(--s15-bg);border:0;border-radius:980px;padding:5px 12px;
}
main.t15:has(.founder-grid) .founder-body:not(#_){padding:clamp(24px,3vw,32px);gap:8px;}
main.t15:has(.founder-grid) .founder-role:not(#_){font-family:inherit;font-size:15px;font-weight:600;letter-spacing:-0.01em;text-transform:none;color:var(--s15-text2);}
main.t15:has(.founder-grid) .founder-name:not(#_){font-size:28px;font-weight:600;letter-spacing:-0.022em;color:var(--s15-text);}
main.t15:has(.founder-grid) .founder-line:not(#_){font-size:17px;line-height:1.42;color:var(--s15-text2);}
/* Mailadresse als Verweis in der Seitenschrift, 44 px Fingerziel. */
main.t15:has(.founder-grid) .founder-mail:not(#_){
  display:inline-flex;align-items:center;min-height:44px;margin-top:0;
  font-family:inherit;font-size:15px;letter-spacing:0;border:0;color:var(--s15-link);
}
main.t15:has(.founder-grid) .founder-mail:not(#_):hover{text-decoration:underline;text-underline-offset:3px;}

/* ── 15 · /ueberuns/partner ──────────────────────────────────── */
main.t15:has(.partner-grid) .partner-card:not(#_){border:0;border-radius:28px;background:var(--s15-card);}
main.t15:has(.partner-grid) .partner-card:not(#_)::after{display:none;}
main.t15:has(.partner-grid) .partner-card:not(#_):hover{box-shadow:none;}
main.t15:has(.partner-grid) .partner-logo:not(#_){border:0;border-radius:18px;}
main.t15:has(.partner-grid) .partner-name:not(#_){font-size:21px;font-weight:600;letter-spacing:-0.012em;color:var(--s15-text);}
main.t15:has(.partner-grid) .partner-link:not(#_){font-family:inherit;font-size:15px;color:var(--s15-link);}
main.t15:has(.partner-grid) .partner-desc:not(#_){font-size:15px;line-height:1.5;color:var(--s15-text2);}
/* Platzhalter «Partner werden?»: bleibt als offene Stelle erkennbar —
   gestrichelt, aber in den v15-Linien und mit der Rundung der Karten. */
main.t15:has(.partner-grid) .partner-card--ghost:not(#_){background:transparent;border:1.5px dashed var(--s15-chip);}
main.t15:has(.partner-grid) .partner-card--ghost:not(#_):hover{border-color:var(--s15-cta);}
main.t15:has(.partner-grid) .partner-ghost-icon:not(#_){background:var(--s15-kc-tint);color:var(--s15-link);border-radius:50%;}
main.t15:has(.partner-grid) .partner-ghost-title:not(#_){font-size:17px;font-weight:600;color:var(--s15-text);}
main.t15:has(.partner-grid) .partner-ghost-text:not(#_){font-size:15px;color:var(--s15-text2);}
main.t15:has(.partner-grid) .partner-ghost-mail:not(#_){
  min-height:44px;padding:0 18px;border:0;border-radius:980px;background:var(--s15-card2);color:var(--s15-text);font-size:15px;
}
main.t15:has(.partner-grid) .partner-ghost-mail:not(#_):hover{background:var(--s15-chip);}
html[data-theme="dark"] main.t15:has(.partner-grid) .partner-ghost-mail:not(#_){border:1px solid var(--s15-feld-rand);}

/* ── 16 · /mail: Konfigurator (dunkel Kartenton, Ränder 3:1) ───
   Wie /paket-finder (Abschnitt 11): Dunkel stand die Fläche auf #0b0b0c
   (--s15-bg2), auf Schwarz kaum zu sehen; jetzt #161617 (--s15-card). Was in
   ihr liegt — Zahlenfelder und Laufzeit-Chips, bisher --s15-bg (#000) —, eine
   Stufe darüber (#1d1d1f), nie darunter (hell-dunkel.css, «Flächen in einer
   Karte»). Nur /mail: .wzd-felder--regler steht nur dort (gezählt 06.10.). */
html[data-theme="dark"] main.t15:has(.wzd-felder--regler) .wzd:not(#_){background:var(--s15-card);}
html[data-theme="dark"] main.t15:has(.wzd-felder--regler) .wzd-stepper:not(#_),
html[data-theme="dark"] main.t15:has(.wzd-felder--regler) .wzd-feld input:not(.wzd-schieber):not(#_),
html[data-theme="dark"] main.t15:has(.wzd-felder--regler) .wzd-chip:not(#_){background:var(--s15-card2);}
/* Ränder der Bedienteile 3:1 (Standard §4.5), hell und dunkel: Zahlenfeld,
   Laufzeit-Chips und die leere Schieberspur standen hell auf --border-strong
   (#d2d2d7, 1.38:1 auf #f5f5f7), dunkel hatte die Spur 1.59:1. Jetzt
   --s15-feld-rand wie das Suchfeld auf /domains (hell #8e8e8e, 3.01:1 auf
   #f5f5f7; dunkel derselbe Wert wie --hd-feld-rand). Als Marke am Element,
   damit :hover und [aria-pressed] der Quelle weiter greifen; am Schieber
   erben sie die Pseudo-Elemente (wie --fuell), also auch der Ring des Griffs —
   der Griff ist weiss auf #f5f5f7 und vor allem an diesem Ring zu erkennen.
   Die Trennlinien der Pfeile (--border) bleiben. */
main.t15:has(.wzd-felder--regler) .wzd-stepper:not(#_),
main.t15:has(.wzd-felder--regler) .wzd-chip:not(#_),
main.t15:has(.wzd-felder--regler) .wzd-schieber:not(#_){--border-strong:var(--s15-feld-rand);}

/* [hidden] je Klasse (Standard §4) */
.t15 .legal .tq-seg[hidden],
.t15 .legal .updated[hidden],
.t15-produkt[hidden]{display:none;}
