/* ═══════════════════════════════════════════════════════════════════════════
   Styles des Basis-Designs „Amara" (template-one).

   ACHTUNG — DIESE DATEI GILT FÜR ALLE DESIGNS.
   public/site.html lädt sie fest, nicht abhängig vom aktiven Design. Alles, was hier NICHT
   unter .t1-* steht — :root-Tokens, body, .container, .section, .btn, .input —, wirkt damit
   auch in Strähne und Myra. Die beiden bringen ihre eigenen, klassengebundenen Regeln mit
   (.strahne / .sbq) und überschreiben das Nötige; wer hier eine ungescopte Regel ändert,
   ändert also drei Designs auf einmal.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ===== Salon template design tokens ===== */
:root {
  /* Warm cream-toned palette */
  --bg: oklch(0.972 0.012 78);
  --bg-2: oklch(0.955 0.014 75);
  --surface: oklch(0.99 0.006 78);
  --beige: oklch(0.88 0.024 70);
  --beige-2: oklch(0.82 0.030 65);
  --rose: oklch(0.86 0.038 22);
  --rose-2: oklch(0.78 0.050 22);
  --ink: oklch(0.22 0.008 60);
  --ink-2: oklch(0.38 0.010 60);
  --muted: oklch(0.58 0.010 60);
  --line: oklch(0.88 0.010 70);
  --line-2: oklch(0.82 0.014 70);
  --gold: oklch(0.62 0.060 75);

  /* Grund der Leistungs-Kacheln. Eigenes Token statt --surface, weil das auch .card,
     .chip und .btn-light tragen — die Kachel liegt auf --bg-2 und braucht im dunklen
     Farbdesign mehr Hub, als dort für die übrigen Flächen richtig wäre. */
  --t1-tile: oklch(0.99 0.006 78);

  /* Frei gewählte Akzentfarbe. Steht hier nur, damit das Token nie unaufgelöst ist;
     gesetzt wird es ausschließlich als Inline-Property an <html>, und gelesen wird es
     ausschließlich unter :root[data-t1-accent] in schemes.css. */
  --t1-accent: oklch(0.86 0.038 22);

  --display: "Cormorant Garamond", "Cormorant", Georgia, serif;
  --ui: "Manrope", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, Menlo, monospace;

  --radius-s: 6px;
  --radius-m: 12px;
  --radius-l: 22px;

  --shadow-s: 0 1px 2px oklch(0.2 0.01 60 / 0.05);
  --shadow-m: 0 12px 40px -18px oklch(0.2 0.01 60 / 0.18);
  --shadow-l: 0 30px 80px -30px oklch(0.2 0.01 60 / 0.22);

  /* ── Tokens für die Farbdesigns von „Amara" ────────────────────────────────
     Die Werte hier sind EXAKT die, die vorher als Literale im Stylesheet und in
     den Sektionen standen — dieser Block ändert das Aussehen um kein Pixel.
     Überschrieben werden sie ausschließlich in Template1/schemes.css, gescoped
     auf :root[data-t1-scheme="…"].

     WICHTIG: Jedes dieser Tokens braucht hier einen Wert. Eine unaufgelöste var()
     fällt nicht auf den vorherigen Wert zurück, sondern auf den Initialwert der
     Eigenschaft — und templates-src/straehne/source.jsx benutzt die nackte Klasse
     `btn`. Stünde --radius-pill nur unter [data-t1-scheme], bekäme Strähne
     border-radius:0 und rechteckige Buttons. */
  --radius-pill: 999px;

  /* Große dunkle Flächen (TopStrip, Stimmen, Footer). Sie bleiben in JEDEM
     Farbdesign dunkel — auch im dunklen: mit var(--ink) kippten sie dort auf
     Blendweiß und das weiß gesetzte Logo verschwände darin. */
  --invert-bg: oklch(0.22 0.008 60);
  --invert-surface: oklch(0.27 0.01 60);
  --invert-ink: oklch(0.972 0.012 78);
  --invert-ink-2: oklch(0.88 0.024 70);
  --invert-ink-3: oklch(0.85 0.015 70);
  --invert-ink-4: oklch(0.78 0.02 70);
  --invert-muted: oklch(0.65 0.01 60);
  --invert-muted-2: oklch(0.55 0.01 60);
  --invert-line: oklch(0.5 0.01 60);
  --invert-line-2: oklch(0.4 0.01 60);
  --invert-line-3: oklch(0.32 0.01 60);
  --invert-accent: oklch(0.45 0.04 25);

  /* Kartengrafik im Kontaktbereich (SVG). Eigene Tokens, weil die vorhandenen
     Palettenwerte sichtbar heller sind als die Originalstriche. */
  --map-grid: oklch(0.7 0.02 70);
  --map-street: oklch(0.65 0.02 70);

  --on-rose: oklch(0.22 0.008 60);   /* Schrift auf Rosé-Flächen (Chip, Newsletter, .btn-rose) */
  --err: #b4231f;
  --scrim: oklch(0.14 0.012 60 / 0.66);
  --btn-primary-hover: oklch(0.30 0.01 60);
  --btn-light-hover: white;

  /* Bild-Platzhalter (gestreift, wenn kein Foto gepflegt ist) */
  --ph-stripe: oklch(0.78 0.015 70 / 0.45);
  --ph-from: oklch(0.90 0.020 65);
  --ph-to: oklch(0.84 0.030 60);
  --ph-ink: oklch(0.35 0.015 60);
  --ph-rose-stripe: oklch(0.74 0.045 22 / 0.45);
  --ph-rose-from: oklch(0.90 0.035 22);
  --ph-rose-to: oklch(0.83 0.050 22);
  --ph-dark-stripe: oklch(0.35 0.01 60 / 0.5);
  --ph-dark-from: oklch(0.30 0.008 60);
  --ph-dark-to: oklch(0.22 0.008 60);
  --ph-dark-fg: oklch(0.85 0.02 70);
  --tag-bg: oklch(1 0 0 / 0.7);
  --tag-dark-bg: oklch(0 0 0 / 0.4);
  --tag-dark-fg: oklch(0.95 0.005 70);

  /* Schriftpaarung: nur Cormorant Garamond bringt echte Kursive mit. Eine Paarung
     mit Grotesk-Display stellt --display-style auf normal, sonst rechnet der Browser
     eine schiefe Fälschung. */
  --display-style: italic;
  --display-weight: 300;
  --display-track: -0.01em;
  --eyebrow-family: var(--ui);

  /* Bildstil */
  --img-filter: none;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--ui);
  /* 16px, nicht 15: alles darunter löst auf iOS beim Fokus eines Eingabefelds einen Zoom aus,
     aus dem der Gast nicht mehr herausfindet (die Felder erben font über `font: inherit`). */
  font-size: 16px;
  line-height: 1.55;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; display: block; }
/* color:inherit fehlte: ein <button> faellt sonst auf die Systemfarbe (Schwarz) zurueck.
   Im hellen Design faellt das nicht auf, im dunklen wird die Schrift unsichtbar —
   z. B. die Stellentitel im Karriere-Bereich. Straehne und Myra setzen dasselbe
   bereits in ihren eigenen, gescopten Regeln; fuer sie aendert sich hier nichts. */
button { font: inherit; color: inherit; cursor: pointer; }
a { color: inherit; text-decoration: none; }

/* ===== Type ===== */
.display { font-family: var(--display); font-weight: var(--display-weight); letter-spacing: var(--display-track); line-height: 1.02; }
.display em { font-style: var(--display-style); font-weight: var(--display-weight); color: var(--rose-2); }
.eyebrow {
  font-family: var(--eyebrow-family);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-2);
  font-weight: 500;
}
.serif-italic { font-family: var(--display); font-style: var(--display-style); font-weight: 400; }
.kicker { font-family: var(--eyebrow-family); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }

/* ===== Buttons ===== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 22px;
  border-radius: var(--radius-pill);
  border: 1px solid transparent;
  font-weight: 500;
  font-size: 13.5px;
  letter-spacing: 0.02em;
  transition: all 0.2s ease;
  white-space: nowrap;
}
.btn-primary { background: var(--ink); color: var(--bg); }
.btn-primary:hover { background: var(--btn-primary-hover); transform: translateY(-1px); }
.btn-ghost { background: transparent; color: var(--ink); border-color: var(--line-2); }
.btn-ghost:hover { background: var(--bg-2); border-color: var(--ink); }
.btn-light { background: var(--surface); color: var(--ink); border-color: var(--line); }
.btn-light:hover { background: var(--btn-light-hover); }
.btn-rose { background: var(--rose); color: var(--on-rose); }
.btn-rose:hover { background: var(--rose-2); }
.btn-text { background: none; border: none; padding: 6px 0; color: var(--ink); border-bottom: 1px solid var(--ink); border-radius: 0; }
.btn-sm { padding: 9px 16px; font-size: 12.5px; }

/* ===== Image placeholders — subtle stripes ===== */
.imgph {
  position: relative;
  background:
    linear-gradient(135deg, transparent 0%, transparent 49.5%, var(--ph-stripe) 49.5%, var(--ph-stripe) 50.5%, transparent 50.5%) 0 0 / 14px 14px,
    linear-gradient(180deg, var(--ph-from), var(--ph-to));
  color: var(--ph-ink);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.05em;
  display: flex;
  align-items: flex-end;
  justify-content: flex-start;
  padding: 14px;
  overflow: hidden;
}
.imgph.rose {
  background:
    linear-gradient(135deg, transparent 0%, transparent 49.5%, var(--ph-rose-stripe) 49.5%, var(--ph-rose-stripe) 50.5%, transparent 50.5%) 0 0 / 14px 14px,
    linear-gradient(180deg, var(--ph-rose-from), var(--ph-rose-to));
}
.imgph.ink {
  background:
    linear-gradient(135deg, transparent 0%, transparent 49.5%, var(--ph-dark-stripe) 49.5%, var(--ph-dark-stripe) 50.5%, transparent 50.5%) 0 0 / 14px 14px,
    linear-gradient(180deg, var(--ph-dark-from), var(--ph-dark-to));
  color: var(--ph-dark-fg);
}
.imgph .tag {
  background: var(--tag-bg);
  backdrop-filter: blur(6px);
  padding: 4px 10px;
  border-radius: var(--radius-pill);
  font-size: 10px;
}
.imgph.ink .tag { background: var(--tag-dark-bg); color: var(--tag-dark-fg); }

/* ===== Hero =====
   Diese Werte standen bis zum Varianten-Umbau als Inline-Styles im JSX. Sie sind
   hier 1:1 uebernommen — der Umbau selbst aendert das Aussehen nicht. Erst dadurch
   lassen sich die Varianten in Template1/schemes.css ueberhaupt formulieren:
   gegen Inline-Styles kaeme keine Regel ohne !important an, und !important wuerde
   mit dem Mobil-Block am Dateiende kollidieren. */
.t1-hero-section { padding: 40px 0 90px; }
.t1-hero {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 56px;
  align-items: center;
}
.t1-hero-kicker { align-items: center; margin-bottom: 28px; }
.t1-hero-rule { width: 36px; height: 1px; background: var(--ink); }
.t1-hero-title { font-size: clamp(56px, 7vw, 104px); margin: 0; }
.t1-hero-lead { font-size: 18px; line-height: 1.6; color: var(--ink-2); max-width: 480px; margin-top: 32px; }
.t1-hero-stats { margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--line); }
.t1-hero-statvalue { font-size: 36px; }
.t1-hero-visual { position: relative; height: 720px; }
.t1-hero-main { position: absolute; inset: 0; }
.t1-hero-detail {
  position: absolute;
  bottom: -34px;
  left: -34px;
  width: 220px;
  height: 280px;
  overflow: hidden;
  border: 8px solid var(--bg);
}
.t1-hero-detail > .imgph { width: 100%; height: 100%; }
.t1-hero-aicard {
  position: absolute;
  top: 24px;
  right: -24px;
  width: 220px;
  background: var(--surface);
  border: 1px solid var(--line);
  padding: 18px;
  box-shadow: var(--shadow-m);
}
.t1-hero-aiquote {
  font-family: var(--display);
  font-style: var(--display-style);
  font-size: 18px;
  line-height: 1.3;
  margin: 10px 0 0;
}

/* Bildstil (Feld „Bildstil"): --img-filter ist im Standard `none`, dieser Block
   ändert das Aussehen also erst, wenn ein Stil gewählt wurde. */
.imgph img, .t1-svc-img img { filter: var(--img-filter); }

/* ===== Layout helpers ===== */
.container { max-width: 1400px; margin: 0 auto; padding: 0 40px; }
.section { padding: 110px 0; }
.section-tight { padding: 70px 0; }
.divider { height: 1px; background: var(--line); }

/* ===== Cards ===== */
.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-l);
  padding: 24px;
}
.card-flat {
  background: var(--bg-2);
  border-radius: var(--radius-l);
  padding: 28px;
}

/* ===== Pill chips ===== */
.chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  background: var(--surface);
  border: 1px solid var(--line);
  font-size: 12px;
  color: var(--ink-2);
}
.chip.active { background: var(--ink); color: var(--bg); border-color: var(--ink); }

/* ===== Form ===== */
.field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.field label {
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--muted);
}
.input, .textarea, .select {
  width: 100%;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px 14px;
  font: inherit;
  /* Explizit, damit ein Design mit kleinerer Grundschrift den iOS-Zoom nicht zurückholt. */
  font-size: 16px;
  color: var(--ink);
  transition: border 0.15s ease;
}
.input:focus, .textarea:focus, .select:focus { outline: none; border-color: var(--ink); }
.textarea { resize: vertical; min-height: 100px; }

/* ===== Utility ===== */
.flex { display: flex; }
.col { display: flex; flex-direction: column; }
.center { display: flex; align-items: center; justify-content: center; }
.between { display: flex; align-items: center; justify-content: space-between; }
.gap-2 { gap: 8px; } .gap-3 { gap: 12px; } .gap-4 { gap: 16px; } .gap-6 { gap: 24px; } .gap-8 { gap: 32px; }
.mt-2 { margin-top: 8px; } .mt-4 { margin-top: 16px; } .mt-6 { margin-top: 24px; } .mt-8 { margin-top: 32px; }

/* Mid-range (laptops 881–1180px): collapse secondary actions */
@media (max-width: 1180px) {
  .hide-md { display: none !important; }
  .shrink-md { max-width: 240px !important; width: 240px !important; }
}

/* Mobile */
@media (max-width: 880px) {
  .container { padding: 0 22px; }
  .section { padding: 70px 0; }
  .hide-mobile { display: none !important; }
}
@media (min-width: 881px) {
  .show-mobile { display: none !important; }
}

/* ===== Mobile-Optimierung Template One =====
   Die Sektionen nutzen Inline-Grids; deshalb hier mit !important auf die
   Klassen-Hooks (t1-*) zugreifen, um die Spalten mobil sauber zu stapeln. */

/* Kein horizontales Scrollen (clip statt hidden → sticky-Header bleibt intakt). */
html, body { overflow-x: clip; max-width: 100%; }

/* Burger-Button (mobiles Menü) */
.t1-burger {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 999px;
  background: transparent; border: 1px solid var(--line-2); color: var(--ink);
}
.t1-mobile-drawer {
  border-top: 1px solid var(--line);
  background: var(--bg);
  padding: 18px 22px 26px;
  /* Langes Menü auf kleinen Screens scrollt im Drawer statt über den Viewport hinaus. */
  max-height: calc(100dvh - 64px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.t1-mobile-nav { display: flex; flex-direction: column; }
.t1-mobile-nav a {
  padding: 14px 4px; font-size: 17px; color: var(--ink);
  border-bottom: 1px solid var(--line);
}
.t1-mobile-actions { display: grid; gap: 10px; margin-top: 18px; }
.t1-mobile-actions .btn { width: 100%; min-height: 48px; }

@media (max-width: 880px) {
  /* Größere, gut tappbare Buttons. Auch das Tablet-Hochformat (768px) wird getippt — die
     Grenze gehört deshalb hierher und nicht in den 520px-Block. */
  .btn { min-height: 44px; }
  .btn-sm { min-height: 42px; padding: 11px 18px; }
  .btn-text { min-height: 40px; display: inline-flex; align-items: center; }
  .chip { min-height: 40px; display: inline-flex; align-items: center; }
  .logo { min-height: 44px; align-items: center; }
  .t1-head a.flex { min-height: 40px; }

  /* Header kompakter. Die seitlichen 24px MÜSSEN mit: das !important überschreibt das
     Inline-Padding des Kopfs, und mit `14px 0` klebten Logo und Burger am Bildschirmrand. */
  .t1-header-inner { padding: 14px 24px !important; }

  /* Abschnitts-Köpfe mit seitlicher Aktion → untereinander */
  .t1-head { flex-direction: column !important; align-items: flex-start !important; gap: 14px !important; }

  /* Hero: stapeln, dekorative Float-Karten ausblenden.
     `min-width: 0` ist tragend: Raster-Kinder schrumpfen sonst nicht unter ihre Inhaltsbreite
     (min-width: auto), und die Überschrift schob die ganze Spalte über den Bildschirmrand. */
  .t1-hero { grid-template-columns: 1fr !important; gap: 30px !important; }
  .t1-hero > * { min-width: 0; }
  .t1-hero h1 { overflow-wrap: anywhere; }
  .t1-hero .flex { flex-wrap: wrap; }
  .t1-hero-visual { height: 60vw !important; max-height: 440px !important; min-height: 280px; }
  .t1-hero-detail, .t1-hero-aicard { display: none !important; }

  /* Inhalts-Grids → eine Spalte */
  .t1-services-grid { grid-template-columns: 1fr !important; }
  .t1-about { grid-template-columns: 1fr !important; gap: 32px !important; }
  .t1-about-images { grid-template-columns: 1fr 1fr !important; grid-template-rows: 130px 130px !important; }
  .t1-gallery-grid { grid-template-columns: 1fr 1fr !important; grid-auto-rows: 170px !important; }
  .t1-reviews-grid { grid-template-columns: 1fr !important; }
  .t1-contact { grid-template-columns: 1fr !important; gap: 34px !important; }
  .t1-faq { grid-template-columns: 1fr !important; gap: 30px !important; }
  .t1-newsletter { grid-template-columns: 1fr !important; gap: 22px !important; padding: 36px 24px !important; }
  .t1-team-grid { grid-template-columns: 1fr 1fr !important; }
  .t1-footer-grid { grid-template-columns: 1fr 1fr !important; gap: 30px !important; }
}

@media (max-width: 520px) {
  .t1-header-inner { padding: 12px 16px !important; }
  /* Logo + Buchen-Button + Burger passen nebeneinander nicht mehr; das Menü führt den
     Buchen-Button ohnehin in voller Breite (.t1-mobile-actions). */
  .t1-header-inner > .flex:last-child > .btn { display: none; }
  /* Der Kopf hat auf 320px keinen Platz für Logo + zwei Buttons + Burger nebeneinander.
     Die Konto-Buttons wandern ins Menü, das sie ohnehin führt. */
  .t1-header-inner .hide-mobile { display: none !important; }
  /* Lange Wortmarken schoben den Burger über den Rand. */
  .logo { min-width: 0; max-width: calc(100vw - 110px); overflow: hidden; }
  .logo .logo-img { max-width: 100%; }
  .section { padding: 48px 0 !important; }
  .section-tight { padding: 40px 0 !important; }
  .container { padding: 0 16px; }
  .t1-team-grid,
  .t1-gallery-grid,
  .t1-contact-cards,
  .t1-footer-grid { grid-template-columns: 1fr !important; }
  .t1-form-names { grid-template-columns: 1fr !important; }
  /* Die Werte-Kacheln unter „Über uns" hatten als einziges Raster keine Klasse und
     blieben deshalb bis 320px zweispaltig. */
  .t1-about-values { grid-template-columns: 1fr !important; }
}

/* ── Leistungs-Kategorie-Filter (modern, Template One) ── */
.t1-cat-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 36px;
}
.t1-cat-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--line-2);
  background: var(--surface);
  color: var(--ink-2);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}
.t1-cat-tab:hover { border-color: var(--ink); color: var(--ink); transform: translateY(-1px); }
.t1-cat-tab.active { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.t1-cat-count {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  opacity: 0.55;
}
.t1-cat-tab.active .t1-cat-count { opacity: 0.75; }
@media (max-width: 720px) {
  .t1-cat-filter { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 0 -24px 28px; padding: 0 24px 4px; }
  .t1-cat-tab { flex: 0 0 auto; }
}
/* Der Scroller zieht sich über den Innenabstand des Containers hinaus, damit die Chips am
   Rand „anschneiden". Unter 520px ist dieser Abstand aber 16px statt 24px — mit dem festen
   Wert ragte die Leiste 8px über den Bildschirmrand hinaus. */
@media (max-width: 520px) {
  .t1-cat-filter { margin: 0 -16px 28px; padding: 0 16px 4px; }
}

/* Rich-Text im „Über uns"-Block: die Absätze kommen aus dem Editor, deshalb hier die
   Ränder normalisieren statt im JSX. Nur Amara setzt diese Klasse. */
.t1-about-body > :first-child { margin-top: 0; }
.t1-about-body > :last-child { margin-bottom: 0; }
.t1-about-body p { margin: 0 0 12px; }
.t1-about-body ul,
.t1-about-body ol { margin: 0 0 12px; padding-left: 20px; }
.t1-about-body li { margin-bottom: 4px; }

/* Eigene Seiten und Rechtstexte (template-one-renderer.jsx). Der Inhalt kommt aus dem
   Rich-Text-Editor, kann also Überschriften, Listen und Tabellen enthalten — ohne diese
   Grundregeln steht eine eingefügte Preisliste als unformatierte Zellenwüste da. */
.page-body h2 { font-size: 26px; letter-spacing: -0.02em; margin: 34px 0 12px; }
.page-body h3 { font-size: 19px; margin: 28px 0 10px; }
.page-body > :first-child { margin-top: 0; }
.page-body p { margin: 0 0 14px; }
.page-body ul,
.page-body ol { margin: 0 0 14px; padding-left: 20px; }
.page-body li { margin-bottom: 6px; }
.page-body table { border-collapse: collapse; margin: 4px 0 18px; width: 100%; }
.page-body th,
.page-body td { border-bottom: 1px solid var(--line); padding: 10px 14px 10px 0; text-align: left; }
.page-body th { color: var(--ink); font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.page-body td:last-child,
.page-body th:last-child { padding-right: 0; text-align: right; }
