/* bembel.ai – Startseite.
   1:1 aus dem Prototyp uebernommen. Ergaenzungen am Ende der Datei:
   Fokus-Sichtbarkeit, Formularzustaende und Klassen, die im Prototyp
   noch Inline-Styles waren.
   Kopf- und Fusszeile (die Prototyp-Abschnitte NAVIGATION, FOOTER, MOBILE NAV,
   FOOTER COPYRIGHT und ihre @media-Zeilen) stehen seit Schritt 5 unveraendert in
   site-chrome.css, weil jede Seite sie benutzt. An ihren alten Stellen unten steht
   ein Verweis. */

  /* ========== NAVIGATION ========== -> site-chrome.css */

  /* ========== HERO ========== */
  .hero {
    /* Layout: 100svh nach 100vh (audit.md P3). Auf dem Handy ist 100vh die Hoehe bei
       eingeklappten Browserleisten – mit sichtbaren Leisten war der Hero hoeher als der
       Bildschirm und schob die Schaltflaeche unter den Rand. svh ist die kleine Viewport-Hoehe;
       Browser ohne svh behalten 100vh. Am Desktop sind beide gleich (keine Pixelaenderung). */
    min-height:100vh; min-height:100svh; background:var(--navy);
    display:flex; align-items:center;
    padding:100px 0 80px;
    position:relative; overflow:hidden;
  }
  .hero-apple {
    position:absolute; right:-10%; top:50%;
    transform:translateY(-50%);
    width:56%; max-width:700px;
    mix-blend-mode:multiply; opacity:0.7;
    pointer-events:none; user-select:none;
  }
  .hero-apple-fade {
    position:absolute; right:0; top:0; bottom:0; width:58%;
    background:linear-gradient(to right,var(--navy) 0%,transparent 28%);
    pointer-events:none; z-index:2;
  }
  .hero-inner {
    max-width:1100px; margin:0 auto; width:100%;
    padding:0 2.5rem;
    position:relative; z-index:3;
  }
  .hero-text { max-width:560px; }

  .hero-eyebrow {
    display:inline-flex; align-items:center; gap:6px;
    background:var(--white-a08);
    border:1px solid var(--white-a14);
    border-radius:30px; padding:5px 12px;
    /* Typografie: 11px -> 12px (Lesbarkeits-Untergrenze fuer Fliesstext-nahe Beschriftungen,
       audit.md P3). Letter-Spacing unveraendert, passt bei 12px weiterhin zur Pillenbreite. */
    font-size:12px; font-weight:500;
    letter-spacing:.14em; text-transform:uppercase;
    /* Kontrast: .55 -> .60 (4.29:1 -> 4.79:1 auf der halbtransparenten Pille) */
    color:var(--white-a60); margin-bottom:1.4rem;
  }
  .eyebrow-dot { width:5px; height:5px; border-radius:50%; background:var(--mint); flex-shrink:0; }

  .hero-headline {
    font-family:'DM Sans',sans-serif;
    font-size:clamp(2.6rem,5.2vw,4rem);
    font-weight:700; color:#fff;
    line-height:1.06; letter-spacing:-.025em;
    margin-bottom:1.6rem;
    /* Typografie: text-wrap:balance neu (kein Prototyp-Wert veraendert) – verteilt Zeilen
       gleichmaessiger, statt dass eine kurze letzte Zeile allein steht. Wirkt nur, wenn die
       Ueberschrift ohnehin umbricht; einzeilige Breiten bleiben unveraendert. */
    text-wrap: balance;
  }
  .hero-headline em {
    font-family:'Fraunces',serif;
    font-style:italic; font-weight:300;
    color:var(--lavender-mid); letter-spacing:-.01em;
  }

  .hero-sub {
    font-size:1.05rem; color:var(--white-a68);
    line-height:1.65; margin-bottom:2.5rem; max-width:460px;
  }

  .btn-primary {
    display:inline-flex; align-items:center; gap:8px;
    background:#fff; color:var(--navy);
    text-decoration:none; padding:14px 28px;
    border-radius:var(--radius-sm); font-weight:600; font-size:15px;
    transition:transform .2s,box-shadow .2s; white-space:nowrap;
  }
  .btn-primary:hover { transform:translateY(-2px); box-shadow:0 10px 28px var(--black-a28); }

  /* Distill: .btn-secondary/.btn-secondary:hover entfernt (audit.md P3, DESIGN.md "Known debt")
     – der Prototyp hatte eine zweite Hero-CTA (ghost button), die im Homepage-Block-Aufbau nie
     benutzt wurde; keine Vorlage referenziert die Klasse. */

  .hero-actions { display:flex; gap:1rem; flex-wrap:wrap; }

  .hero-trust { display:flex; gap:.6rem; flex-wrap:wrap; margin-top:2.2rem; }
  .chip {
    display:inline-flex; align-items:center; gap:5px;
    background:var(--white-a07);
    border:1px solid var(--white-a12);
    border-radius:20px; padding:5px 11px;
    font-size:12px; color:var(--white-a60); white-space:nowrap;
  }
  .chip svg {
    width:11px; height:11px; stroke:var(--white-a40);
    fill:none; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0;
  }

  /* ========== SECTIONS SHARED ========== */
  section { padding: 80px 2rem; }
  .section-inner { max-width: 1100px; margin: 0 auto; }
  .section-eyebrow {
    font-size: 12px; font-weight: 600;
    letter-spacing: 0.15em; text-transform: uppercase;
    color: var(--navy); margin-bottom: 0.75rem;
  }
  .section-title {
    font-size: clamp(1.8rem, 3.5vw, 2.6rem);
    font-weight: 700; color: var(--navy);
    letter-spacing: -0.02em; line-height: 1.2; margin-bottom: 1rem;
    /* Typografie: text-wrap:balance neu, wie .hero-headline. */
    text-wrap: balance;
  }
  .section-lead {
    font-size: 1.1rem; color: var(--text-mid);
    line-height: 1.7; max-width: 620px;
  }

  /* ========== USP BAND ========== */
  .usp-band { background: var(--lavender); padding: 52px 2.5rem; }
  .usp-band .section-inner {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem;
  }
  .usp-item { display: flex; gap: 1rem; align-items: flex-start; }
  .usp-icon {
    width: 44px; height: 44px; background: var(--white);
    border-radius: var(--radius-sm); display: flex; align-items: center;
    justify-content: center; flex-shrink: 0;
    box-shadow: 0 2px 8px var(--navy-a10);
  }
  .usp-icon svg { width: 22px; height: 22px; stroke: var(--navy); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  /* Semantik: <h4> -> <h2 class="usp-heading"> (die Seite sprang von h1 auf h4); gleiche Werte. */
  .usp-content .usp-heading { font-size: 15px; font-weight: 600; color: var(--navy); margin-bottom: 4px; }
  .usp-content p { font-size: 14px; color: var(--text-mid); line-height: 1.5; }

  /* ========== LEISTUNGEN ========== */
  .leistungen { background: var(--white); }
  .leistungen-header { margin-bottom: 3.5rem; }
  .leistungen-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
  .leistung-card {
    background: var(--lavender); border-radius: var(--radius-md);
    padding: 2rem; position: relative; overflow: hidden;
    transition: transform 0.2s, box-shadow 0.2s;
  }
  .leistung-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 28px var(--navy-a12);
  }

  .leistung-card.featured { background: var(--navy); color: var(--white); }
  /* Distill: .leistung-num/.leistung-card.featured .leistung-num entfernt (audit.md P3) – die
     Kartennummer wird seit dem Port ueber services_block.html/{{ service.number }} mit der
     Klasse .card-number ausgezeichnet (siehe ERGAENZUNGEN unten, "KARTEN-ECKEN & NUMMER"),
     .leistung-num wird von keiner Vorlage mehr referenziert. */
  .leistung-card h3 {
    font-size: 1.25rem; font-weight: 700; color: var(--navy);
    letter-spacing: -0.01em; margin-bottom: 0.75rem;
  }
  .leistung-card.featured h3 { color: var(--white); }
  .leistung-card p { font-size: 14px; color: var(--text-mid); line-height: 1.6; }
  .leistung-card.featured p { color: var(--white-a75); }
  .leistung-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 1.25rem; }
  .tag {
    font-size: 12px; font-weight: 500; padding: 4px 10px;
    border-radius: 20px; background: var(--navy-a10); color: var(--navy);
  }
  .leistung-card.featured .tag { background: var(--white-a15); color: var(--white-a90); }

  /* ========== ABOUT ========== */
  .about { background: var(--navy); color: var(--white); }
  .about-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: center; }
  /* Distill: .about-photo-placeholder/.placeholder-icon entfernt (audit.md P3) – der Prototyp
     zeigte hier einen Platzhalter, bevor das echte Portrait eingebunden war; .about-photo im
     ERGAENZUNGEN-Teil rendert seit Schritt 2 das echte Bild ueber {% picture %}. Keine Vorlage
     referenziert diese Klassen mehr (geprueft per Grep ueber Templates, JS und content_seed.py). */
  .about-content .section-eyebrow { color: var(--lavender-mid); }
  .about-content .section-title { color: var(--white); }
  .about-content .section-lead { color: var(--white-a75); margin-bottom: 2rem; }
  .about-list {
    list-style: none; display: flex; flex-direction: column;
    gap: 10px; margin-bottom: 2.5rem;
  }
  .about-list li { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; color: var(--white-a80); }
  .check-icon {
    width: 20px; height: 20px; background: var(--white-a15);
    border-radius: 50%; display: flex; align-items: center;
    justify-content: center; flex-shrink: 0; margin-top: 2px;
  }
  .check-icon svg { width: 10px; height: 10px; stroke: var(--white); fill:none; stroke-width:3; stroke-linecap:round; stroke-linejoin:round; }

  /* ========== WORKSHOPS ========== */
  .workshops { background: var(--white); }
  .workshops-header { margin-bottom: 3rem; }
  .workshops-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; margin-bottom: 3rem; }
  .workshop-card {
    border: 1.5px solid var(--lavender-mid); border-radius: var(--radius-md);
    padding: 1.75rem; transition: border-color 0.2s, transform 0.2s;
  }
  /* Distill: .workshop-card:hover entfernt (audit.md P3) – setzte border-color/transform exakt
     auf die Ruhewerte zurueck (Wirkung 0), keine Pixelaenderung. */
  .workshop-icon {
    width: 44px; height: 44px; background: var(--lavender);
    border-radius: var(--radius-sm); display: flex; align-items: center;
    justify-content: center; margin-bottom: 1rem;
  }
  .workshop-icon svg { width: 22px; height: 22px; stroke: var(--navy); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .workshop-card h3 { font-size: 1.05rem; font-weight: 700; color: var(--navy); margin-bottom: 0.5rem; }
  .workshop-card p { font-size: 14px; color: var(--text-mid); line-height: 1.55; }
  .workshops-cta-box {
    background: var(--lavender); border-radius: var(--radius-md);
    padding: 2.5rem; display: flex; align-items: center;
    justify-content: space-between; gap: 2rem; flex-wrap: wrap;
  }
  .workshops-cta-box h3 { font-size: 1.2rem; font-weight: 700; color: var(--navy); margin-bottom: 0.4rem; }
  .workshops-cta-box p { font-size: 14px; color: var(--text-mid); }

  /* ========== ZIELGRUPPEN ========== */
  .zielgruppen { background: var(--lavender); }
  .zielgruppen-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; margin-top: 3rem; }
  .zg-card {
    background: var(--white); border-radius: var(--radius-md);
    padding: 1.75rem; transition: transform 0.2s, box-shadow 0.2s;
  }
  /* Distill: .zg-card:hover entfernt (audit.md P3) – ebenfalls ein No-op (Ruhewerte). */
  /* Typografie: 11px -> 12px (Lesbarkeits-Untergrenze, audit.md P3); letter-spacing unveraendert. */
  .zg-label {
    font-size: 12px; font-weight: 600; letter-spacing: 0.12em;
    text-transform: uppercase; color: var(--text-light); margin-bottom: 0.6rem;
  }
  .zg-card h3 { font-size: 1.15rem; font-weight: 700; color: var(--navy); margin-bottom: 0.75rem; }
  .zg-card p { font-size: 14px; color: var(--text-mid); line-height: 1.55; }

  /* ========== CONTACT ========== */
  .contact { background: var(--white); }
  .btn-booking {
    display: inline-flex; align-items: center; gap: 10px;
    background: var(--navy); color: var(--white);
    padding: 14px 28px; border-radius: var(--radius-md);
    font-size: 15px; font-weight: 600; text-decoration: none;
    margin-bottom: 1.5rem; transition: opacity 0.2s; align-self: flex-start;
  }
  .btn-booking:hover { opacity: 0.88; }
  .contact-or {
    font-size: 13px; color: var(--text-light);
    text-align: left; margin-bottom: 0.75rem; margin-top: 0;
  }
  .contact-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: flex-start; }
  .contact-info h2 {
    font-size: clamp(1.8rem, 3.5vw, 2.6rem); font-weight: 700;
    color: var(--navy); letter-spacing: -0.02em; line-height: 1.2; margin-bottom: 1rem;
    /* Typografie: text-wrap:balance neu, wie .section-title. */
    text-wrap: balance;
  }
  .contact-info p:not(.section-eyebrow) { font-size: 1rem; color: var(--text-mid); line-height: 1.7; margin-bottom: 2rem; }
  .contact-info { display: flex; flex-direction: column; align-items: flex-start; }
  .contact-details { display: flex; flex-direction: column; gap: 1rem; }
  .contact-item { display: flex; align-items: center; gap: 12px; font-size: 15px; color: var(--text-dark); }
  .contact-item a { color: var(--navy); text-decoration: none; font-weight: 500; }
  .contact-item a:hover { text-decoration: underline; }
  .contact-icon-wrap {
    width: 36px; height: 36px; background: var(--lavender);
    border-radius: var(--radius-sm); display: flex; align-items: center;
    justify-content: center; flex-shrink: 0;
  }
  .contact-icon-wrap svg { width: 18px; height: 18px; stroke: var(--navy); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
  .contact-form { background: var(--lavender); border-radius: var(--radius-lg); padding: 2.5rem; }
  .contact-form h3 { font-size: 1.15rem; font-weight: 700; color: var(--navy); margin-bottom: 1.5rem; }
  .form-group { margin-bottom: 1.2rem; }
  .form-group label { display: block; font-size: 13px; font-weight: 500; color: var(--text-mid); margin-bottom: 6px; }
  .form-group input, .form-group textarea, .form-group select {
    width: 100%; padding: 11px 14px;
    border: 1.5px solid var(--lavender-mid);
    border-radius: var(--radius-sm);
    font-family: 'DM Sans', sans-serif; font-size: 15px;
    color: var(--text-dark); background: var(--white);
    transition: border-color 0.2s; outline: none;
  }
  .form-group input:focus, .form-group textarea:focus, .form-group select:focus { border-color: var(--navy); }
  .form-group textarea { resize: vertical; min-height: 110px; }
  .btn-form {
    width: 100%; padding: 14px; background: var(--navy);
    color: var(--white); border: none; border-radius: var(--radius-sm);
    font-family: 'DM Sans', sans-serif; font-size: 15px; font-weight: 600;
    cursor: pointer; transition: background 0.2s, transform 0.2s;
  }
  .btn-form:hover { background: var(--navy-light); transform: translateY(-1px); }

  /* Navy-Variante für helle Sektionen */
  /* Distill: !important entfernt (audit.md P3) – ueberfluessig, denn .btn-navy hat dieselbe
     Spezifitaet wie .btn-primary (je eine Klasse) und steht im Quelltext weiter unten, gewinnt
     also schon allein durch die Kaskade. Keine Pixelaenderung. */
  .btn-navy {
    background: var(--navy);
    color: var(--white);
  }
  .btn-navy:hover { box-shadow: 0 10px 28px var(--navy-a25); }

  /* ========== FOOTER ========== -> site-chrome.css */

  /* ========== RESPONSIVE ========== */
  /* Die Kopf-/Fusszeilen-Zeilen (.nav-links, .nav-mobile-toggle, .footer-inner) stehen in
     site-chrome.css. */
  @media (max-width: 900px) {
    .hero-inner { padding: 0 1.5rem; }
    .usp-band .section-inner { grid-template-columns: 1fr; }
    .leistungen-grid { grid-template-columns: 1fr; }
    .about-inner { grid-template-columns: 1fr; gap: 3rem; }
    .workshops-grid { grid-template-columns: 1fr; }
    .zielgruppen-grid { grid-template-columns: 1fr; }
    .contact-inner { grid-template-columns: 1fr; gap: 3rem; }
    .hero-apple { width:90%; right:-22%; }
    .hero-apple-ink { width:90%; right:-22%; }
    /* Entfernt: @keyframes apfelIn { to { opacity:.45; } } aus dem Prototyp. Die globale
       apfelIn-Regel (0.7) steht spaeter in der Datei und hat immer gewonnen; Jesse hat
       entschieden, die freigegebenen 0.7 auch auf dem Handy zu behalten. */
    .hero-apple-fade { width:100%; background:linear-gradient(to right,var(--navy) 0%,transparent 60%); }
  }
  @media (max-width: 600px) {
    section { padding: 60px 1.25rem; }
    .hero { padding: 88px 0 60px; }
    .hero-actions { flex-direction: column; }
  }

  /* ========== MODAL ========== */
  /* Kopf/Fuss: die Grundform des Dialogs (.modal-overlay, .modal-box, modalIn, .modal-close und
     ihr 640px-Innenabstand) steht unveraendert in site-chrome.css – die Datenschutz-Einstellungen
     sind ein Dialog auf jeder Seite, nicht nur auf der Startseite. Hier bleibt, was nur die
     Dialoge der Startseite betrifft. */
  .modal-box .section-eyebrow { margin-bottom: 0.4rem; }
  .modal-box h2 { font-size: clamp(1.5rem, 3vw, 2rem); color: var(--navy); margin-bottom: 0.75rem; }
  .modal-box .section-lead { margin-bottom: 2rem; }
  .card-cta-hint {
    margin-top: 1.25rem;
    font-size: 13px; font-weight: 600;
    color: var(--white-a65);
    letter-spacing: 0.02em;
    transition: color 0.15s;
  }
  .leistung-card.featured:hover .card-cta-hint { color: var(--white-a100); }
  .leistung-card:not(.featured) .card-cta-hint { color: var(--text-light); }
  .leistung-card:not(.featured):hover .card-cta-hint { color: var(--navy); }
  /* Distill: .modal-box .workshop-card:hover entfernt (audit.md P3) – derselbe No-op wie
     .workshop-card:hover oben, hier nur fuer den Modal-Kontext wiederholt. */
  /* (@media (max-width: 640px) .modal-box -> site-chrome.css) */


  /* ========== FAQ ========== */
  /* Layout: padding 6rem 0 -> padding-block 6rem. Die 0 hob den seitlichen Abstand der
     gemeinsamen section-Regel auf, sodass die FAQ unter ca. 1160px bis an den Bildschirmrand
     lief (0px statt 20px Handy / 32px Tablet wie alle anderen Sektionen). */
  .faq-section { background: var(--lavender); padding-block: 6rem; }
  .faq-list { max-width: 720px; display: flex; flex-direction: column; gap: 0; }
  .faq-item { border-bottom: 1px solid var(--lavender-mid); padding: 1.75rem 0; }
  .faq-item:first-child { border-top: 1px solid var(--lavender-mid); }
  /* Layout: position:relative traegt den Trefffläche-Layer aus der ERGAENZUNGEN-Sektion
     (::before, vergroessert 24px -> ~40px Hoehe, ohne den Text zu verschieben). */
  /* Politur: font-family:inherit – <button> erbt die Schrift nicht, die Fragen standen in Arial
     statt DM Sans (wie schon bei button.btn-primary, CLAUDE.md Abweichung 14). */
  .faq-question { font-family:inherit; position:relative; width:100%; background:none; border:none; padding: 0; font-size: 1.05rem; font-weight: 400; color: var(--navy); line-height: 1.4; cursor:pointer; display:flex; justify-content:space-between; align-items:center; gap:1rem; text-align:left; }
  .faq-question:hover { color: var(--navy-light); }
  .faq-icon { flex-shrink:0; transition: transform 0.25s ease; color: var(--text-light); }
  .faq-question[aria-expanded="true"] .faq-icon { transform: rotate(180deg); }
  .faq-answer { font-size: 0.95rem; color: var(--text-mid); line-height: 1.7; margin: 0; padding-top: 0.75rem; }

  /* Required field indicator */
  .required-note { font-size: 12px; color: var(--text-light); margin-bottom: 1rem; display: block; }
  label .req { color: var(--navy-light); font-size: 13px; }


  /* ========== SCROLL TO TOP ========== */
  .scroll-top { position:fixed; bottom:2rem; right:2rem; width:44px; height:44px; background:var(--navy); color:var(--white); border:none; border-radius:50%; cursor:pointer; display:flex; align-items:center; justify-content:center; opacity:0; transform:translateY(8px); transition:opacity 0.25s, transform 0.25s; z-index:99; box-shadow:0 4px 12px var(--navy-a25); }
  .scroll-top.visible { opacity:1; transform:translateY(0); }
  .scroll-top:hover { background:var(--navy-light); }

  /* ========== MOBILE NAV ========== -> site-chrome.css */

  /* ========== ABOUT PHOTO ========== */
  .about-photo { display:flex; justify-content:center; align-items:center; }
  .about-photo img { width:100%; max-width:420px; height:auto; border-radius:50%; box-shadow:0 24px 60px var(--black-a40); }

  /* ========== ABOUT PULL-QUOTE ========== */
  .about-quote { position:relative; margin:1.75rem 0 2.25rem; padding-top:1.6rem; font-size:1.5rem; font-weight:600; font-style:normal; color:#fff; line-height:1.35; letter-spacing:-0.01em; max-width:580px; }
  .about-quote::before { content:""; position:absolute; top:0; left:0; width:46px; height:3px; background:var(--periwinkle); border-radius:2px; }
  .about-quote span { color:var(--periwinkle); }

  /* ========== ABOUT PERSONAL NOTE ========== */
  .about-personal { display:flex; align-items:flex-start; gap:11px; margin-top:2rem; padding-top:1.5rem; border-top:1px solid var(--white-a13); font-size:14px; color:var(--white-a62); line-height:1.5; }
  .about-personal svg { flex-shrink:0; color:var(--lavender-mid); margin-top:2px; }



  /* ========== KARTEN-ECKEN & NUMMER ========== */
  .leistung-card::before,
  .leistung-card::after {
    content:""; position:absolute; width:16px; height:16px;
    border-color:var(--navy); opacity:0.22; pointer-events:none;
    transition:opacity 0.2s;
  }
  .leistung-card::before { top:14px; left:14px; border-top:1.5px solid; border-left:1.5px solid; border-top-left-radius:3px; }
  .leistung-card::after  { bottom:14px; right:14px; border-bottom:1.5px solid; border-right:1.5px solid; border-bottom-right-radius:3px; }
  .leistung-card.featured::before,
  .leistung-card.featured::after { border-color:var(--white); opacity:0.3; }
  .leistung-card:hover::before,
  .leistung-card:hover::after { opacity:0.5; }

  /* Kontrast: 0.4 -> 0.7 (2.21:1 -> 4.71:1 auf Lavendel) */
  /* Typografie: font-variant-numeric:tabular-nums neu – die zweistelligen Kartennummern
     (01-04) bekommen gleich breite Ziffern, damit sie in der Karten-Ecke exakt gleich sitzen. */
  .card-number { display:block; font-size:12px; font-weight:700; letter-spacing:0.12em; color:var(--navy); opacity:0.7; margin-bottom:0.6rem; font-variant-numeric: tabular-nums; }
  /* Kontrast: 0.45 -> 0.55 (3.85:1 -> 4.95:1 auf Navy) */
  .leistung-card.featured .card-number { color:var(--white); opacity:0.55; }






  /* ========== HERO TEXT-REVEAL ========== */
  .reveal { opacity:0; transform:translateY(14px); animation:heroReveal 0.7s cubic-bezier(.22,.7,.3,1) forwards; }
  .hero-headline .reveal { display:inline-block; }
  .r0 { animation-delay:0.05s; }
  .r1 { animation-delay:0.20s; }
  .r2 { animation-delay:0.34s; }
  .r3 { animation-delay:0.48s; }
  .r4 { animation-delay:0.70s; }
  .r5 { animation-delay:0.86s; }
  .r6 { animation-delay:1.00s; }
  @keyframes heroReveal { to { opacity:1; transform:translateY(0); } }
  @media (prefers-reduced-motion: reduce) {
    .reveal { opacity:1; transform:none; animation:none; }
  }


  /* ========== SCROLL-REVEAL ========== */
  .sr { opacity:0; transform:translateY(20px); transition:opacity .65s cubic-bezier(.22,.7,.3,1), transform .65s cubic-bezier(.22,.7,.3,1); }
  .sr-in { opacity:1; transform:none; }
  @media (prefers-reduced-motion: reduce) { .sr { opacity:1; transform:none; transition:none; } }


  /* ========== HERO: MUSTER ZEICHNET SICH ========== */
  .hero-apple-ink {
    position:absolute; right:-10%; top:50%;
    transform:translateY(-50%);
    width:56%; max-width:700px;
    pointer-events:none; user-select:none;
    z-index:3; overflow:visible;
  }
  /* Layout: die Linienzeichnung muss deckungsgleich auf .hero-apple liegen. Der Prototyp setzt
     beide in RESPONSIVE (@media max-width:900px) auf width:90%/right:-22%, aber diese
     Grundregel steht spaeter in der Datei und ueberschrieb dort die Mobil-Werte – nur fuer die
     Linie. Unter 901px lief die Zeichnung deshalb kleiner und versetzt neben dem Apfel
     (390px: Apfel 351px breit bei x=125, Linie 218px bei x=211). Gleicher Kaskadenfehler wie
     beim Fusszeilen-Copyright (Abweichung 4). Hier dieselben Mobil-Werte nach der Grundregel. */
  @media (max-width: 900px) {
    .hero-apple-ink { width:90%; right:-22%; }
  }
  .hero-apple-ink .ln {
    fill:none; stroke:var(--lavender-mid); stroke-width:2;
    stroke-linejoin:round; stroke-linecap:round;
    stroke-dasharray:1000; stroke-dashoffset:1000; opacity:0;
  }
  .hero.ap-run .hero-apple { opacity:0.1; animation:apfelIn 1.4s ease 4.9s forwards; }
  .hero.ap-run .hero-apple-ink .ln { opacity:1; }
  .hero.ap-run .hero-apple-ink .l0 { animation:apfelDraw 3.6s linear .25s forwards, apfelDim 1.2s ease 5.0s forwards; }
  .hero.ap-run .hero-apple-ink .l1 { animation:apfelDraw .45s ease-out 3.90s forwards, apfelDim 1.2s ease 5.0s forwards; }
  .hero.ap-run .hero-apple-ink .l2 { animation:apfelDraw .40s ease-out 4.15s forwards, apfelDim 1.2s ease 5.0s forwards; }
  .hero.ap-run .hero-apple-ink .l3 { animation:apfelDraw .35s ease-out 4.40s forwards, apfelDim 1.2s ease 5.0s forwards; }
  .hero.ap-run .hero-apple-ink .l4 { animation:apfelDraw .30s ease-out 4.60s forwards, apfelDim 1.2s ease 5.0s forwards; }

  /* Hover-Fläche über dem Apfel – nur Desktop */
  .hero-apple-hit {
    position:absolute; right:-10%; top:50%; transform:translateY(-50%);
    width:56%; max-width:700px; aspect-ratio:547/602;
    z-index:2; cursor:pointer;
  }
  @media (hover:none), (pointer:coarse), (max-width:900px) { .hero-apple-hit { display:none; } }
  @keyframes apfelDraw { to { stroke-dashoffset:0; } }
  @keyframes apfelDim  { to { opacity:0; } }
  @keyframes apfelIn   { to { opacity:0.7; } }
  @media (prefers-reduced-motion: reduce) {
    .hero-apple { opacity:0.7; animation:none; }
    .hero-apple-ink { display:none; }
  }


  /* ========== FOOTER COPYRIGHT ========== -> site-chrome.css */


  /* ==================================================================
     ERGAENZUNGEN GEGENUEBER DEM PROTOTYP
     1. Klassen anstelle der Inline-Styles des Prototyps (gleiche Werte)
     2. Fokus-Sichtbarkeit (BFSG / WCAG 2.1 AA)
     3. Zustaende der serverseitig geprueften Formulare
     ================================================================== */

  /* --- 1. Ehemalige Inline-Styles ---------------------------------- */
  /* (.nav-mobile-toggle-Reset -> site-chrome.css) */
  .leistung-open { cursor: pointer; }
  .workshops-header .section-lead { max-width: 480px; }
  .btn-nowrap { white-space: nowrap; }

  .modal-box--form   { max-width: 520px; }
  .modal-box--detail { max-width: 560px; }
  /* schlaegt .modal-box h2 – im Prototyp stand hier ein Inline-Style */
  .modal-box h2.modal-title       { font-size: clamp(1.3rem, 2.5vw, 1.7rem); margin-bottom: 0.75rem; }
  .modal-box h2.modal-title--form { margin-bottom: 0.5rem; }
  .modal-lead  { font-size: 15px; color: var(--text-mid);   line-height: 1.6; margin-bottom: 1.5rem; }
  .modal-items { font-size: 13px; color: var(--text-light); line-height: 1.8; margin-bottom: 1.5rem; }
  .modal-cta   { display: inline-block; }
  .btn-modal-submit { display: block; margin-top: 0.5rem; margin-left: auto; }

  /* --- 2. Fokus-Sichtbarkeit --------------------------------------- */
  a:focus-visible,
  button:focus-visible,
  [role="button"]:focus-visible,
  input:focus-visible,
  select:focus-visible,
  textarea:focus-visible {
    outline: 2px solid var(--navy);
    outline-offset: 2px;
    border-radius: 3px;
  }
  /* Kontrast: heller Ring nur dort, wo der Ring selbst auf dunklem Grund liegt.
     Die dunklen Leistungs-Karten stehen auf weißem Grund – ihr Ring bleibt navy (1.38:1 -> 12.78:1).
     Der helle Ring der Fusszeile steht in site-chrome.css. */
  .hero a:focus-visible,
  .about a:focus-visible {
    outline-color: var(--lavender-mid);
  }
  .form-group input:focus-visible,
  .form-group select:focus-visible,
  .form-group textarea:focus-visible {
    outline-offset: 1px;
    border-radius: var(--radius-sm);
  }

  /* --- 3. Formularzustaende ---------------------------------------- */
  .form-group.has-error input,
  .form-group.has-error select,
  .form-group.has-error textarea { border-color: var(--error); }

  .form-error {
    display: flex; align-items: flex-start; gap: 6px;
    font-size: 13px; line-height: 1.45; color: var(--error);
    margin-top: 6px;
  }

  .form-success {
    display: flex; align-items: flex-start; gap: 10px;
    font-size: 15px; line-height: 1.6; color: var(--navy);
    background: var(--white-a75);
    border: 1.5px solid var(--lavender-mid);
    border-radius: var(--radius-sm);
    padding: 1rem 1.15rem;
  }
  .form-success svg { flex-shrink: 0; margin-top: 3px; stroke: var(--navy); }
  .modal-box .form-success { background: var(--lavender); border-color: var(--lavender-mid); }

  /* --- 4. Fusszeile: Copyright + Marke als ein Block -> site-chrome.css --- */

  /* --- 5. Trefffläche (WCAG 2.5.8, mind. 24x24 CSS-px) ------------------ */
  /* (Desktop-Navigation -> site-chrome.css) */
  /* FAQ-Frage: 24px -> ~40px hohe Trefffläche via Pseudo-Element, reicht in den
     vorhandenen Innenabstand von .faq-item (28px) hinein, ohne die Antwort darunter zu
     beruehren (die beginnt erst 12px unter der Schaltfläche). */
  .faq-question::before { content: ""; position: absolute; inset: -8px 0; }

  /* --- 6. Portrait: <picture> statt <img> (responsive Renditions) ------- */
  /* Layout: {% picture %} (core/blocks/about_block.html) rendert <picture><img></picture>
     statt eines nackten <img>. <picture> ist standardmaessig inline, wodurch die
     "width:100%" auf .about-photo img keinen Bezugsrahmen mehr hat, sobald das (nun lazy
     geladene) Bild noch nicht entschieden ist -> Bildflaeche kollabiert auf 0 Hoehe. Fix:
     .about-photo picture uebernimmt dieselbe Breiten-/Groessenlogik wie zuvor .about-photo
     img, damit die Kreisflaeche sofort reserviert ist (kein Layout-Sprung beim Laden). */
  .about-photo picture { display: block; width: 100%; max-width: 420px; }
  /* img bleibt sonst inline im (jetzt blockigen) <picture> -> ein paar Pixel
     Zeilenhoehen-Luecke unter dem Kreis (Descender-Gap). display:block entfernt sie. */
  .about-photo picture img { display: block; }

  /* --- 7. Leistungskarten: echte Ueberschrift mit echtem Button ------------ */
  /* Semantik: vorher war die ganze Karte role="button" – die h3 fiel aus der Ueberschriften-
     navigation und der Name des Buttons war der komplette Kartentext. Jetzt steckt ein
     <button> (Name = Titel) in der h3. Er sieht aus wie die h3 vorher, sein ::after spannt
     sich ueber die ganze Karte (.leistung-card ist position:relative), damit sie weiter
     ueberall klickbar ist. */
  .leistung-open {
    display: block; width: 100%;
    margin: 0; padding: 0; border: 0; background: none;
    font: inherit; color: inherit; letter-spacing: inherit; text-align: inherit;
  }
  .leistung-open::after { content: ""; position: absolute; inset: 0; }
  /* Der Fokusring sitzt wie vorher auf der Karte (gleiche Werte wie [role="button"]:focus-visible
     in Abschnitt 2), nicht um den Titel. Politur: ohne den 3px-Radius dieser Regel – er galt
     fuer die Karte selbst und machte ihre 12px-Ecken eckig, solange sie den Fokus hatte. Der
     Ring folgt jetzt dem Kartenradius (Umrisse folgen border-radius). */
  .leistung-open:focus-visible { outline: none; }
  .leistung-card:has(.leistung-open:focus-visible) {
    outline: 2px solid var(--navy);
    outline-offset: 2px;
  }
  /* Browser ohne :has(): Ring innen auf der Klickflaeche, in Textfarbe der Karte
     (navy auf Lavendel, weiss auf Navy) – overflow:hidden der Karte wuerde einen
     aeusseren Ring abschneiden. */
  @supports not selector(:has(*)) {
    .leistung-open:focus-visible::after {
      outline: 2px solid currentColor; outline-offset: -5px; border-radius: var(--radius-md);
    }
  }

  /* --- 8. Formular-Rueckmeldung ------------------------------------------ */
  /* Die Bestaetigung bekommt nach dem Absenden per Skript den Fokus (tabindex="-1"), damit
     Screenreader sie vorlesen. Sie ist kein Bedienelement – kein Fokusring. */
  .form-success[tabindex="-1"]:focus { outline: none; }

  /* --- 9. Reduzierte Bewegung ---------------------------------------------
     Der Hero (Zeile ~519-575) und der Scroll-Reveal (Zeile ~535-538) bringen ihre eigene
     prefers-reduced-motion-Behandlung schon aus dem Prototyp mit und bleiben unveraendert.
     Alles Uebrige, was noch Bewegung erzeugt, wird hier an einer Stelle gebuendelt: der
     Dialog-Einflug, der Hover-Lift auf Karten/Buttons, die FAQ-Chevron-Drehung und der
     Nach-oben-Button (das Burger-Icon gehoert zur Kopfzeile -> site-chrome.css). Ergebnis bleibt jeweils sichtbar (Endzustand),
     nur ohne animierte Bewegung; kurze Opacity-/Farbuebergaenge (z.B. Kartenschatten,
     Icon-Ausblenden) bleiben, weil sie kein Ortswechsel sind und den Zustand mit erklaeren. */
  @media (prefers-reduced-motion: reduce) {
    .modal-box { animation: none; }

    .btn-primary:hover { transform: none; }
    .leistung-card:hover { transform: none; }
    .btn-form:hover { transform: none; }

    .faq-icon { transition: none; }

    .scroll-top {
      transition: opacity 0.25s;
      transform: none;
    }
    .scroll-top.visible { transform: none; }
  }

  /* --- 10. Politur (Schritt 7) ------------------------------------------ */
  /* Fokusring in der Form des Elements: die Fokusregel in Abschnitt 2 setzt border-radius:3px
     auf alles, was den Fokus hat. Fuer Text-Links rundet das nur den Ring; Schaltflaechen mit
     eigenem Radius verloren damit aber ihre Form, solange sie fokussiert waren (Buttons 6px ->
     3px, runde Knoepfe 50% -> 3px). Hier bekommen sie ihren eigenen Radius zurueck. */
  .btn-primary:focus-visible,
  .btn-form:focus-visible { border-radius: var(--radius-sm); }
  .btn-booking:focus-visible { border-radius: var(--radius-md); }
  .modal-close:focus-visible,
  .scroll-top:focus-visible { border-radius: 50%; }

  /* .btn-primary steht auch auf <button> (Workshop-Anfrage, Absenden im Dialog). Der Prototyp
     setzte dort keinen Reset: der Browser zeichnete seinen grauen Rahmen und nahm seine eigene
     Schrift statt DM Sans. Jetzt sehen sie aus wie die gleichnamigen Links. */
  button.btn-primary {
    border: 0;
    font-family: inherit; line-height: inherit;
    cursor: pointer;
  }

  /* Druck: Abschnitte, die der Scroll-Reveal noch nicht erreicht hat, stehen auf opacity:0 und
     fehlten im Ausdruck. Der Nach-oben-Knopf und die Hover-Flaeche ueber dem Apfel sind reine
     Bedienung. Navy-Flaechen mit weisser Schrift drucken ihren Hintergrund mit, sonst stuende
     weisser Text auf weissem Papier. */
  @media print {
    .sr, .reveal { opacity: 1; transform: none; transition: none; animation: none; }
    .scroll-top, .hero-apple-hit { display: none; }
    .hero, .about, .leistung-card.featured {
      -webkit-print-color-adjust: exact; print-color-adjust: exact;
    }
  }
