/* Selbstgehostete Schriften (Sprint 015, D-122/D-146): latin-Subset, variable Achse, app-owned im Release. KEIN Laufzeit-Request zu Google Fonts o. Ae.; die WOFF2 liegen unter fonts/, die OFL-Lizenz begleitet sie. font-display:swap haelt den Text sofort sichtbar. */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url('fonts/montserrat-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:300 700;font-display:swap;src:url('fonts/cormorantgaramond-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--serif:'Cormorant Garamond','Times New Roman',Georgia,serif;--sans:'Montserrat',system-ui,sans-serif}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:#fff;color:#4a4a4a;font-family:var(--sans);font-size:15px;line-height:1.7;font-weight:300;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:#4a4a4a}a:hover{color:#b28579}
h1,h2,h3{font-family:var(--serif);font-weight:600;color:#2f2f2f}
img{max-width:100%}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,#klmain:focus-visible{outline:2px solid #b28579;outline-offset:2px}
.wrap{padding-left:40px;padding-right:40px}
/* `overflow-wrap:anywhere` (Sprint 014, D-142): „Datenschutzerklärung" ist auf
   320 px breiter als der Textbereich und schob die Seite waagerecht auf
   (gemessen 368 px Inhalt bei 320 px Fenster). Auf breiteren Fenstern ändert
   die Regel nichts — sie greift nur, wenn ein Wort sonst überliefe. */
.h1{font-size:clamp(32px,4vw,44px);margin:0 0 16px;letter-spacing:.06em;overflow-wrap:anywhere}
.intro{text-align:center;padding:64px 24px 0}
.intro p{max-width:62ch;margin:0 auto}
.sub{font-size:13px;color:#8a8a8a}
.btn{display:inline-block;background:#3b3b3b;color:#fff;text-decoration:none;font:400 11.5px var(--sans);letter-spacing:.16em;text-transform:uppercase;padding:14px 34px;border:0;cursor:pointer}
.btn:hover{background:#b28579;color:#fff}
.btn2{display:inline-block;border:1px solid #3b3b3b;background:none;color:#2f2f2f;text-decoration:none;font:400 11.5px var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:13px 30px;cursor:pointer}
.crumb{font-size:12px;color:#8a8a8a;padding:26px 40px 0}
.crumb a{text-decoration:none;color:#8a8a8a}
.notice{background:#000;color:#fff;text-align:center;font-size:12px;font-weight:300;padding:7px 16px;letter-spacing:.02em}
.hd{background:#fff;border-bottom:1px solid #ececec;position:relative;z-index:70}
.hd-in{padding:16px 40px;display:flex;align-items:center;gap:30px}
.hd-nav{margin-left:auto;display:flex;align-items:center;gap:28px;font-size:12.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:#2f2f2f}
.hd-nav>a{text-decoration:none;color:inherit}
.hd-nav a[aria-current]{border-bottom:1px solid #b28579;padding-bottom:3px}
.dd{position:relative}
.dd>a{text-decoration:none;color:inherit;display:inline-flex;align-items:center;gap:6px}
.ddp{display:none;position:absolute;left:-22px;top:100%;padding-top:14px;z-index:80}
.dd:hover .ddp,.dd:focus-within .ddp{display:block}
.ddp>div{background:#fff;border:1px solid #f0f0f0;box-shadow:0 8px 24px rgba(0,0,0,.07);min-width:230px;padding:8px 0}
.ddp a{display:block;text-decoration:none;padding:8px 22px;font-size:13px;letter-spacing:0;text-transform:none;white-space:nowrap;color:#4a4a4a}
.ic{display:inline-flex;padding:6px;color:#2f2f2f;position:relative}
.wlb{position:absolute;top:-2px;right:-4px;min-width:16px;height:16px;border-radius:9px;background:#151515;color:#fff;font-size:10px;line-height:16px;text-align:center;font-weight:400;padding:0 3px;font-family:var(--sans)}
.mh{display:none}
details summary{list-style:none;cursor:pointer}
details summary::-webkit-details-marker{display:none}
.mh-in{padding:0 18px;height:64px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}
.mnav{position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid #ececec;padding:10px 20px 24px;display:flex;flex-direction:column;box-shadow:0 12px 24px rgba(0,0,0,.08);z-index:90}
.mnav a{text-decoration:none;padding:12px 2px;border-bottom:1px solid #f0f0f0;font-size:15px;color:#2f2f2f}
.mnav .sm a{padding:7px 0;border:0;font-size:13.5px;color:#6a6a6a}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px 24px}
.grid4{grid-template-columns:repeat(4,1fr)}
.kcard{position:relative;text-align:center}
.kimg{position:relative;display:block;overflow:hidden;background:#f6f4f2}
.kimg img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;height:auto}
.k2{position:absolute;inset:0;height:100%;opacity:0;transition:opacity .3s ease}
.kcard:hover .k2,.kcard:focus-within .k2{opacity:1}
.ktag{position:absolute;top:12px;left:12px;background:#eed9d4;color:#5f544f;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;padding:4px 12px}
.ktag2{background:#fff;border:1px solid #e5ddd8}
.kheart{position:absolute;top:10px;right:10px;background:rgba(255,255,255,.85);border:0;border-radius:50%;width:36px;height:36px;display:grid;place-items:center;cursor:pointer;color:#3a3a3a;padding:0}
.kheart svg,[data-heart] svg{fill:none;stroke:currentColor;stroke-width:1.5}
[data-heart][data-on] svg{fill:#b28579;stroke:#b28579}
.kmeta{margin:14px 0 0;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#8a8a8a}
.kmeta span{display:block;min-height:17px}
.kmeta a{display:block;font-family:var(--serif);font-weight:600;font-size:19px;color:#2f2f2f;margin-top:3px;line-height:1.35;text-decoration:none;letter-spacing:0;text-transform:none}
.kgr{display:block;font-size:12px;color:#8a8a8a;letter-spacing:0;text-transform:none;margin-top:2px}
.cat{display:grid;grid-template-columns:250px 1fr;gap:44px;align-items:start;padding:44px 40px 90px}
.faside .ft1{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid #ececec;padding-bottom:12px;margin-bottom:6px}
.faside .ft1 span{font-family:var(--serif);font-weight:600;font-size:20px;color:#2f2f2f}
.fgrp{border-bottom:1px solid #f0f0f0;padding:10px 0}
.fgrp summary{display:flex;justify-content:space-between;align-items:center;font-size:13.5px;font-weight:400;color:#2f2f2f}
.fgrp div{display:flex;flex-direction:column;gap:7px;padding:12px 0 6px}
.fgrp label{display:flex;gap:9px;align-items:center;font-size:13px;cursor:pointer}
.fgrp input{accent-color:#b28579}
.lnk{background:none;border:0;cursor:pointer;font:300 12px var(--sans);color:#8a8a8a;padding:0;text-decoration:underline}
.tools{display:flex;align-items:center;gap:18px;border-bottom:1px solid #ececec;padding-bottom:14px;margin-bottom:28px;flex-wrap:wrap}
.tools select{margin-left:auto;font:300 12.5px var(--sans);color:#4a4a4a;border:1px solid #e2e2e2;background:#fff;padding:8px 10px}
.mfb{display:none;align-items:center;gap:8px;background:none;border:1px solid #d8d8d8;cursor:pointer;font:400 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;padding:9px 16px;color:#2f2f2f}
.fback{display:none}
.cta-row{border-top:1px solid #ececec;margin-top:44px;padding-top:26px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.g2{display:grid;grid-template-columns:1fr 1.1fr;gap:52px;align-items:center}
/* Ein Raster mit nur EINEM Kind (fehlendes Bild, fehlender Kartenlink) darf
   keine leere zweite Spalte stehen lassen (Sprint 014, Review A3). */
.g2-1{grid-template-columns:1fr}
/* Bildraster der Loftseite: im Bestand ein Inline-Raster ohne Mobilregel — bei
   320 px blieben drei ~100-px-Bilder stehen (Sprint 014, Review A7). */
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.g2s{align-items:start}
[data-dialog]{position:fixed;inset:0;background:rgba(32,30,29,.45);z-index:200;display:flex;align-items:center;justify-content:center;padding:22px}
[data-dialog][hidden]{display:none}
/* Auf niedrigen Fenstern (Querformat 568×320) war der Dialog höher als der
   sichtbare Bereich und ragte oben und unten heraus; sein Inhalt scrollt jetzt
   in sich (Sprint 014, D-142). `dvh` folgt den einfahrbaren Browserleisten und
   überschreibt die `vh`-Fassung, wo es unterstützt wird (Review A4). */
.dlg{background:#fff;max-width:480px;width:100%;padding:34px 36px;position:relative;box-shadow:0 30px 80px rgba(0,0,0,.25);max-height:calc(100vh - 44px);overflow-y:auto}
.dlg{max-height:calc(100dvh - 44px)}
/* `sticky` statt `absolute`: der Dialog scrollt seit Sprint 014 in sich, der
   Schliessknopf muss dabei sichtbar bleiben (Review A11). */
.dlg .x{position:sticky;top:0;float:right;margin:-20px -22px 0 0;background:none;border:0;cursor:pointer;color:#8a8a8a;padding:6px;z-index:1}
.lb{background:rgba(20,18,17,.88)!important;cursor:zoom-out}
/* Die Lightbox nutzt `.dlg` nicht; ihre Deckelung muss die Polsterung des
   Containers mitrechnen, sonst ragt sie im Querformat heraus (Review A5). */
.lb img{max-width:92vw;max-height:calc(88vh - 44px);object-fit:contain}
.lb img{max-height:calc(88dvh - 44px)}
.lb .x{position:absolute;top:18px;right:22px;color:#fff;background:none;border:0;cursor:pointer;padding:8px}
.pgnav{display:flex;justify-content:center;gap:8px;margin-top:40px;flex-wrap:wrap}
.pg{width:36px;height:36px;border:1px solid #e2e2e2;background:#fff;color:#2f2f2f;display:grid;place-items:center;font:300 13px var(--sans);text-decoration:none}
.pg.akt{background:#3b3b3b;color:#fff;border-color:#3b3b3b}
.fq{border-bottom:1px solid #ececec}
.fq summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 2px;font-size:15.5px;font-weight:400;color:#2f2f2f}
.fq p{margin:0;padding:0 2px 20px;font-size:14.5px}
.fq svg{flex:none;transition:transform .2s ease}
.fq[open] svg{transform:rotate(180deg)}
.attr{display:grid;grid-template-columns:130px 1fr;gap:14px;padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:14px}
.attr span:first-child{color:#8a8a8a}
.attr span:last-child{color:#2f2f2f;font-weight:400}
.thumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-top:10px}
.thumbs img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:#f6f4f2;cursor:pointer;opacity:.65;transition:opacity .2s;height:auto}
.thumbs img:hover,.thumbs img[data-akt]{opacity:1}
.thumbs img[data-akt]{outline:1px solid #b28579;outline-offset:2px}
.drow{display:grid;grid-template-columns:1.1fr 1fr;gap:44px;align-items:center;border-bottom:1px solid #ececec;padding:26px 0;text-decoration:none}
.drow img{width:100%;height:300px;object-fit:cover;display:block;background:#f6f4f2;transition:transform .5s ease}
.drow:hover img{transform:scale(1.025)}
.drow .nr{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#8a8a8a}
.drow h2{font-size:clamp(26px,3vw,36px);margin:6px 0 10px}
.drow p{margin:0 0 14px;font-size:14px;max-width:52ch}
.drow .mehr{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#b28579;border-bottom:1px solid #b28579;padding-bottom:3px}
.band{background:#eed9d4}
.band3{padding:52px 40px;display:grid;grid-template-columns:repeat(3,1fr);gap:36px}
/* Zahlenband der Loftseite: vier Spalten, zentriert. Der Bestand schreibt das
   als Inline-Stil (`generate.mjs:467`) — und ein Inline-Stil schlägt die
   Mobilregel unten, weshalb das Band im Bestand unter ~560 px waagerecht
   überläuft (gemessen: 543 px Inhalt bei 375 px Fenster). Als Klasse greift
   die Mobilregel wieder (Sprint 014, D-142; bewusste Abweichung von Q3). */
.band4{grid-template-columns:repeat(4,1fr);text-align:center}
.band3 h2{font-size:21px;margin:0 0 8px}
.band3 p{margin:0;font-size:14px;color:#5f544f}
.ktr{display:grid;grid-template-columns:120px 1fr;gap:14px;padding:18px 2px;font-size:14.5px;border-bottom:1px solid #ececec}
.ktr span:first-child{color:#8a8a8a}
.ft{background:#000;color:#fff;margin-top:auto}
.ft a{color:#fff;text-decoration:none}.ft a:hover{color:#c9a196}
.ft-in{padding:56px 60px 44px;display:grid;grid-template-columns:repeat(5,1fr);gap:44px}
.ft h2{color:#fff;font-size:19px;margin:0 0 16px;font-family:var(--serif);font-weight:600}
.ft-l{display:grid;gap:7px;font-size:13px;font-weight:300}
.ft-c{border-top:1px solid rgba(255,255,255,.2);padding:16px 60px;font-size:12px;color:rgba(255,255,255,.7);font-weight:300}
.ft-c a{color:rgba(255,255,255,.7);font-weight:700}
.chips{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.chips a{text-decoration:none;border:1px solid #e2dcd7;padding:9px 18px;font-size:13px;color:#2f2f2f}
@media(max-width:1024px){
.hd-desk{display:none}
.mh{display:block}
.wrap{padding-left:18px;padding-right:18px}
.crumb{padding-left:18px;padding-right:18px}
.grid,.grid.grid4{grid-template-columns:repeat(2,1fr);gap:24px 12px}
.cat{grid-template-columns:1fr;padding:34px 18px 70px}
.g2{grid-template-columns:1fr}
.band3,.band4{grid-template-columns:1fr;padding:44px 24px}
.g3{grid-template-columns:1fr}
.ft-in{grid-template-columns:1fr;gap:32px;padding:44px 24px}
.ft-c{padding:16px 24px}
.mfb{display:inline-flex}
/* Wie beim Off-Canvas-Menü (S2-2/D-141): der geschlossene Filter-Drawer ist
   nur aus dem Bild geschoben und behielte sonst 17 unsichtbare Tab-Stopps. */
.faside{position:fixed;inset:0 22% 0 0;background:#fff;z-index:120;overflow-y:auto;padding:24px 22px;transform:translateX(-103%);visibility:hidden;transition:transform .25s ease;box-shadow:20px 0 50px rgba(0,0,0,.12)}
body[data-fopen="1"] .faside{transform:none;visibility:visible}
body[data-fopen="1"] .fback{display:block;position:fixed;inset:0;background:rgba(32,30,29,.35);z-index:110}
.drow{grid-template-columns:1fr}
.drow img{order:-1}
.thumbs{grid-template-columns:repeat(4,1fr)}
}
@media(max-width:430px){.grid,.grid.grid4{grid-template-columns:1fr} }

/* Kleid-Hauptbild — Bestandsdarstellung (`generate.mjs:302`).
   Der Bestand setzte diese Werte inline: width:100%, aspect-ratio:3/4,
   object-fit:cover, display:block, height:auto. Ohne sie wirkt das
   height-Attribut der Variante als Darstellungshinweis weiter und streckt
   das Bild (Lens-2-F2). Die Attribute width/height bleiben stehen — sie
   beschreiben die reale Datei und verhindern Layoutsprünge. */
#klmain{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;display:block;background:#f6f4f2}

/* ==========================================================================
   Startseite und Kleiddetail — Portierung der Bestandsdarstellung.

   Der Bestand (`html/index.html`) trägt diese Gestaltung als **Inline-Stile**
   an klassenlosen `<section>`-Elementen; das Designwerkzeug hat sie so
   ausgegeben. Der Generator vergibt stattdessen sprechende Klassen — schrieb
   aber nie Regeln dafür. Ergebnis: Hero, Markenband, Willkommensband,
   Teaserraster, Kopfzeilen-Wortmarke und die Attributtabelle wurden völlig
   ungestylt ausgeliefert (Lens-4-D5).

   Übernommen sind die gemessenen Bestandswerte, nicht neu erfundene. Wo der
   Bestand eine Zahl nennt (`clamp(620px,52.4vw,986px)`, `#eed9d4`,
   `min(990px,86vw)`), steht sie hier unverändert.
   ========================================================================== */

/* Hero — Bestand: position:relative; height:clamp(...); flex-zentriert */
.hero{position:relative;height:clamp(620px,52.4vw,986px);display:flex;align-items:center;justify-content:center;overflow:hidden}
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-in{position:relative;z-index:5;text-align:center;color:#fff;padding:80px 20px 0;text-shadow:0 1px 26px rgba(0,0,0,.16)}
.hero-in .kick{display:block;font-size:clamp(26px,2.7vw,52px);font-weight:700;letter-spacing:.01em}
.hero-in h1{margin:10px 0 30px}
/* Wortmarke im Hero: der Bestand invertiert das Bild auf Weiss. */
.hero-wm img{width:min(990px,86vw);height:auto;display:block;margin:0 auto;filter:brightness(0) invert(1)}
.hero-in p{margin:0 auto 34px;max-width:64ch;font-size:clamp(16px,1.35vw,23px);font-weight:400}
.hero-in .btn{background:#fff;color:#151515;text-shadow:none;font-size:12px;font-weight:500;letter-spacing:.1em;padding:16px 36px;line-height:1.7}
.hero-in .btn:hover{background:#f1eae6;color:#151515}

/* Markenband */
.marken{padding:64px 0 56px;text-align:center}
.marken img{width:100%;height:auto;margin:0 auto;display:block}

/* Willkommensband — `.band` traegt bereits den Rosenton (#eed9d4). */
.band-in{padding:64px 3%;text-align:center}
.band-in h2{margin:0 0 10px}
.band-in p{margin:0;font-size:15px;font-weight:500;color:#5f544f}
/* Teaser-Kacheln — Q4 index.html `[data-g3]`, gemessene Inline-Werte */
.tgrid{margin:0 auto;padding:10px 0 84px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.tz{text-align:center}
.tz a{position:relative;display:block;overflow:hidden;text-decoration:none}
.tz img{width:100%;aspect-ratio:1/2;height:auto;object-fit:cover;display:block}
.tz-in{position:absolute;left:0;right:0;bottom:0;padding:80px 14px 30px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:10px;color:#fff;text-shadow:0 1px 20px rgba(0,0,0,.4);background:linear-gradient(to top,rgba(0,0,0,.55) 0%,rgba(0,0,0,.35) 50%,rgba(0,0,0,0) 100%)}
.tz-in h2{font-family:var(--serif);font-weight:700;font-size:34px;letter-spacing:.22em;color:#fff;margin:0}
.tz-in p{font-size:14px;margin:0 auto;max-width:34ch}
/* Auf sehr schmalen Geräten ist „BRAUTKLEIDER" bei 34 px und .22em Sperrung
   breiter als die Kachel und wird links wie rechts beschnitten — im Bestand
   ebenso (gemessen: Q4 −9 px bei 320 px, Port −23 px). Zwischen 821 px und
   ~1118 px ist die Kachel im dreispaltigen Raster erneut zu schmal (Review A6).
   Eine `clamp()`-Regel deckt beide Engstellen ab und lässt die Bestandsgrösse
   ab ~1130 px unverändert (Sprint 014, D-142). */
.tz-in h2{font-size:clamp(22px,3vw,34px);letter-spacing:clamp(.1em,.6vw,.22em)}
.tz-pfeil{margin-top:8px;width:46px;height:46px;border:1px solid rgba(255,255,255,.85);border-radius:50%;display:grid;place-items:center;color:#fff}
@media(max-width:820px){.tgrid{grid-template-columns:1fr;gap:10px}}

/* Wortmarke in der Kopfzeile, wenn kein Logomedium gepflegt ist */
.hd-wm{font-size:19px;font-weight:600;letter-spacing:.02em;color:#2f2f2f;white-space:nowrap}

/* Startseitenrahmen — Q4 index.html <style>, wörtlich (D-135). Attributselektoren, nur auf der Startseite emittiert. */
footer#fusszeile a{color:#fff}
footer#fusszeile a:hover{color:#c9a196}
#kloc{position:absolute;opacity:0;pointer-events:none}
[data-ocback]{position:fixed;inset:0;background:rgba(32,30,29,0.4);opacity:0;pointer-events:none;transition:opacity .25s;z-index:90}
/* `visibility:hidden` im geschlossenen Zustand (Sprint 014, S2-2/D-141): der
   Bestand schiebt das Menü nur aus dem Bild, seine Links bleiben dabei
   tabbar — unsichtbare Tab-Stopps vor dem Seiteninhalt. Die Sichtbarkeit
   schaltet OHNE Übergang, damit der geschlossene Zustand zu JEDEM Zeitpunkt
   unerreichbar ist (eine verzögerte Rückschaltung liesse die Stopps für die
   Dauer der Bewegung offen). Preis: das Zufahren wird nicht mehr animiert —
   der Überblendvorhang `[data-ocback]` blendet weiterhin aus. Bewusste
   Abweichung von Q4. */
[data-ocpanel]{position:fixed;top:0;left:0;bottom:0;width:min(320px,85vw);background:#fff;z-index:95;transform:translateX(-102%);visibility:hidden;transition:transform .28s ease;box-shadow:0 0 30px rgba(0,0,0,0.15);overflow-y:auto}
#kloc:checked ~ [data-ocback]{opacity:1;pointer-events:auto}
#kloc:checked ~ [data-ocpanel]{transform:none;visibility:visible}
/* Die Checkbox ist der eigentliche Bedienknopf (das Label ist nur ihr Griff);
   sie ist unsichtbar, ihr Tastaturfokus muss es nicht sein (S2-2). */
#kloc:focus-visible + [data-oclabel]{outline:2px solid #b28579;outline-offset:2px}
[data-oclabel]{cursor:pointer}
[data-ocpanel] details summary{list-style:none;cursor:pointer}
[data-ocpanel] details summary::-webkit-details-marker{display:none}
[data-mobhead]{display:none}
/* Q4 hat keinen Flex-Body: die statische Position des absoluten Kopfs folgt der Hinweisleiste (gemessen: Kopf bei 34 px). */
body:has(> header[data-hh]){display:block;min-height:0}
header[data-hh]{position:absolute;left:0;right:0;z-index:60;color:#fff;background:rgba(0,0,0,0.15);transition:background .25s ease,color .25s ease}
header[data-hh]:hover{background:#fff;color:#151515}
header[data-hh] [data-lw]{display:block}
header[data-hh] .hd-wm{color:inherit}
header[data-hh] [data-wl] svg{fill:none;stroke:currentColor;stroke-width:1.5}
/* Q4 bindet das Design-System-Stylesheet `_ds/classical-…/styles.css` ein (index.html:11). Von dessen Elementregeln wirken auf der Startseite die, die kein Inline-Stil überschreibt: Überschriften-Zeilenhöhe und -Laufweite, Bild als Block, Unterstreichungsabstand, Fokusring (L4r4-1). Spezifität wie im DS (Element) für Überschriften, Bilder, Links und Auswahl, damit Klassen- und Inline-Werte wie in Q4 gewinnen; die beiden Fokusregeln absichtlich mit voller Spezifität, damit sie auf der Startseite die Q3-Fokusregel oben ablösen. Nicht portiert: `*::before,*::after{box-sizing}` (Q4 nutzt keine Pseudoelemente). */
:where(body:has(> header[data-hh])) :is(h1,h2,h3,h4,h5,h6){line-height:1.12;letter-spacing:-.015em}
:where(body:has(> header[data-hh])) img{display:block;max-width:100%}
:where(body:has(> header[data-hh])) a{text-underline-offset:3px}
body:has(> header[data-hh]) :focus{outline:none}
body:has(> header[data-hh]) :focus-visible{outline:2px solid #b68235;outline-offset:2px}
:where(body:has(> header[data-hh])) ::selection{background:rgba(182,130,53,.3)}
header[data-hh] [data-lc]{display:none}
header[data-hh]:hover [data-lw]{display:none}
header[data-hh]:hover [data-lc]{display:block}
@media(max-width:1024px){header[data-hh]{position:sticky;top:0;background:#fff;color:#2f2f2f;border-bottom:1px solid #ececec}}
[data-dd]{position:relative}
[data-dd] [data-ddp]{display:none;position:absolute;left:50%;transform:translateX(-50%);top:100%;padding-top:14px;z-index:70}
/* `:focus-within` ergänzt (Sprint 014, D-141): Q4 öffnet dieses Untermenü nur
   auf Hover — mit der Tastatur war es unerreichbar. Der Elternlink führt
   weiterhin auf die Designerübersicht, Touch bleibt also unverändert bedienbar. */
[data-dd]:hover [data-ddp],[data-dd]:focus-within [data-ddp]{display:block}
[data-ddp] a:hover{color:#b28579!important}
@media(max-width:1024px){[data-desk]{display:none!important}[data-mobhead]{display:block!important}}
@media(max-width:820px){[data-gfoot]{grid-template-columns:1fr!important;gap:32px!important}[data-pad]{padding-left:18px!important;padding-right:18px!important}[data-hide-m]{display:none!important}}
/* Sprint 015 — Terminseite: Hero (.thero) über volle Breite mit Weißverlauf auf
   dem Desktop, unter 820px gestapelt (Bild oben, Text darunter, kein Verlauf).
   Struktur und Werte wörtlich aus der bereitgestellten Referenz (termin.dc.html). */
.thero{position:relative;display:flex;align-items:center;min-height:clamp(430px,46vw,620px);overflow:hidden;background:#f6f4f2}
.thero picture{position:absolute;inset:0;display:block}
.thero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.thero::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to right,rgba(255,255,255,.97) 0%,rgba(255,255,255,.94) 30%,rgba(255,255,255,.66) 48%,rgba(255,255,255,.16) 62%,rgba(255,255,255,0) 72%)}
.thero>div{position:relative;z-index:2;max-width:min(580px,56%);padding:64px clamp(20px,5vw,68px)}
.thero .eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#5f5f5f}
.thero h1{font-size:clamp(32px,4.4vw,52px);margin:10px 0 16px;line-height:1.14;color:#151515}
.thero p{margin:0 0 26px;max-width:44ch}
@media(max-width:820px){
.thero{display:block;min-height:0}
.thero picture{position:static}
.thero img{position:static;width:100%;height:auto;aspect-ratio:4/3;object-position:50% 50%}
.thero::after{display:none}
.thero>div{max-width:none;padding:32px 24px 8px}
.thero h1{font-size:clamp(30px,8.4vw,40px)}
.thero p{max-width:46ch}
}
