@font-face { font-family: 'Cormorant Garamond'; font-style: italic; font-weight: 500; font-display: swap; src: url('../fonts/cormorant-garamond-500-italic.woff2') format('woff2'); }
@font-face { font-family: 'Cormorant Garamond'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/cormorant-garamond-500.woff2') format('woff2'); }
@font-face { font-family: 'Instrument Sans'; font-style: normal; font-weight: 400 600; font-display: swap; src: url('../fonts/instrument-sans-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: 'Instrument Sans'; font-style: normal; font-weight: 400 600; font-display: swap; src: url('../fonts/instrument-sans-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

/* == Dunkelkammer: Tokens ==================================
   Warmes Schwarz statt Papier, ein einziger Akzent (Safelight-Amber).
   Formen durchgehend scharfkantig, keine Radien. */
:root {
  color-scheme: dark;
  --bg: #141210;
  --bg-rgb: 20 18 16;
  --bg-2: #1B1815;
  --bg-3: #241F1A;
  --ink: #EDE6D8;
  --body: #C6BDAE;
  --muted: #8F877A;
  --line: rgba(237, 230, 216, 0.12);
  --hair: rgba(237, 230, 216, 0.26);
  --accent: #D2913F;
  --accent-ink: #141210;
  --serif: 'Cormorant Garamond', Georgia, serif;
  --sans: 'Instrument Sans', 'Helvetica Neue', Arial, sans-serif;
  --pad: clamp(1.25rem, 4vw, 3.5rem);
  --section: clamp(6rem, 13vw, 12rem);
  --nav-h: 104px;
  --col: 51rem;
  --label: 0.7rem;
  --track: 0.2em;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* == Tageslicht: helle Variante, gleiche Familie ==============
   Warmes Steingrau statt Papierweiss, Akzent abgedunkelt bis
   er als Text lesbar bleibt (>= 4.5:1). Aktiv per <html data-theme="light">. */
html[data-theme="light"] {
  color-scheme: light;
  --bg: #EFECE6;
  --bg-rgb: 239 236 230;
  --bg-2: #E7E3DC;
  --bg-3: #DCD7CE;
  --ink: #1B1815;
  --body: #4D463E;
  --muted: #6B635A;
  --line: rgba(27, 24, 21, 0.12);
  --hair: rgba(27, 24, 21, 0.3);
  --accent: #8F5B1A;
  --accent-ink: #EFECE6;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 1.0125rem;
  line-height: 1.7;
  overflow-x: clip;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
/* Filmkorn: fixe Ebene, scrollt nicht mit */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 60;
  pointer-events: none;
  opacity: 0.06;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
h1, h2, h3 { font-family: var(--serif); font-weight: 500; line-height: 1.02; letter-spacing: -0.02em; margin: 0 0 1rem; text-wrap: balance; }
h1 em, h2 em, h3 em { font-style: italic; font-weight: 500; letter-spacing: -0.004em; }
h1, h2 { padding-bottom: 0.08em; }
h2 { font-size: clamp(2.4rem, 5vw, 4.4rem); }
h3 { font-size: clamp(1.5rem, 2.2vw, 2rem); line-height: 1.12; }
p { margin: 0 0 1rem; text-wrap: pretty; }
p:last-child { margin-bottom: 0; }
.lead { font-size: clamp(1.05rem, 1.3vw, 1.2rem); line-height: 1.6; color: var(--body); max-width: 34em; }
.wrap { padding-inline: max(var(--pad), env(safe-area-inset-left)) max(var(--pad), env(safe-area-inset-right)); }
::selection { background: var(--accent); color: var(--accent-ink); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
a, button, summary, label, input, textarea { touch-action: manipulation; -webkit-tap-highlight-color: color-mix(in srgb, var(--accent) 20%, transparent); }
[id] { scroll-margin-top: calc(var(--nav-h) + 1.5rem); }
.muted { color: var(--muted); }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.skip-link { position: fixed; top: 0.6rem; left: 0.6rem; z-index: 100; background: var(--accent); color: var(--accent-ink); font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; text-decoration: none; padding: 0.9rem 1.5rem; transform: translateY(-200%); }
.skip-link:focus-visible { transform: none; }

/* == Buttons & Links ======================================== */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; text-decoration: none;
  padding: 1.15rem 2.3rem; white-space: nowrap;
  background: var(--accent); color: var(--accent-ink); border: 1px solid var(--accent);
  transition: background 0.5s var(--ease), color 0.5s var(--ease), border-color 0.5s var(--ease), transform 0.15s ease;
}
.btn:hover { background: var(--ink); border-color: var(--ink); color: var(--bg); }
.btn:active { transform: translateY(1px); }
.link {
  display: inline-flex; align-items: baseline; gap: 0.6rem;
  font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; text-decoration: none;
  color: var(--ink); border-bottom: 1px solid var(--hair); padding-bottom: 0.55rem;
  transition: border-color 0.5s var(--ease), color 0.5s var(--ease);
}
.link::after { content: "\2192"; transition: transform 0.5s var(--ease); }
.link:hover { color: var(--accent); border-color: var(--accent); }
.link:hover::after { transform: translateX(6px); }

/* == Navigation ============================================= */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 40; height: var(--nav-h);
  display: flex; align-items: center; justify-content: space-between; gap: 2rem;
  padding-inline: max(var(--pad), env(safe-area-inset-left)) max(var(--pad), env(safe-area-inset-right));
}
.nav::before {
  content: ""; position: absolute; inset: -140px 0 0 0; z-index: -1;
  background: rgb(var(--bg-rgb) / 0.78); border-bottom: 1px solid var(--line);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  opacity: 0; transition: opacity 0.5s var(--ease);
}
.nav.is-scrolled::before { opacity: 1; }
.brand { font-family: var(--serif); font-size: 1.5rem; letter-spacing: 0.01em; line-height: 1; text-decoration: none; }
/* Logo statt Wortmarke: Text bleibt fuer Screenreader, Maske faerbt sich mit currentColor */
@supports (mask-image: url("../img/logo.png")) or (-webkit-mask-image: url("../img/logo.png")) {
  .brand {
    --logo-h: 44px;
    display: block; width: calc(var(--logo-h) * 1.62); height: var(--logo-h);
    overflow: hidden; text-indent: -100vw;
    background: currentColor;
    -webkit-mask: url("../img/logo.png") no-repeat center / contain;
    mask: url("../img/logo.png") no-repeat center / contain;
  }
}
.nav-links { display: flex; align-items: center; gap: clamp(1.2rem, 2.4vw, 2.4rem); }
/* Das Polster oben und unten sieht man nicht, es macht die Schaltflaeche nur
   von 18 auf 26 Pixel hoch — die 24, die eine Maus zum Treffen braucht. Der
   Unterstrich rutscht um dasselbe Mass nach oben und bleibt, wo er war. */
.nav-links a {
  position: relative; text-decoration: none; white-space: nowrap; padding: 0.25rem 0;
  font-size: 0.66rem; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--body);
  transition: color 0.35s var(--ease);
}
.nav-links a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -0.25rem; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform 0.5s var(--ease); }
.nav-links a:hover, .nav-links a[aria-current="page"] { color: var(--ink); }
.nav-links a:hover::after, .nav-links a[aria-current="page"]::after { transform: none; }
.nav-links .nav-cta { color: var(--accent); margin-left: clamp(0.2rem, 1vw, 1rem); }
.nav-links .nav-cta::after { transform: none; opacity: 0.5; }
.nav-links .nav-cta:hover { color: var(--accent); }
.nav-links .nav-cta:hover::after { opacity: 1; }
.nav-toggle { display: none; }
@media (max-width: 900px) {
  :root { --nav-h: 72px; }
  .brand { position: relative; z-index: 2; --logo-h: 40px; }
  .nav-toggle { display: inline-flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 44px; padding: 11px 5px; background: none; border: 0; cursor: pointer; position: relative; z-index: 2; }
  .nav-toggle span { display: block; height: 1px; width: 100%; background: var(--ink); transition: transform 0.35s var(--ease), opacity 0.2s; }
  .nav-open .nav-toggle span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
  .nav-open .nav-toggle span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
  .nav-links {
    position: fixed; inset: 0; z-index: 1; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 0;
    background: var(--bg); padding: calc(var(--nav-h) + 1.5rem) var(--pad) max(2rem, env(safe-area-inset-bottom, 0px) + 1.5rem);
    opacity: 0; visibility: hidden;
    overflow-y: auto; overscroll-behavior: contain;
    transition: opacity 0.4s var(--ease), visibility 0.4s;
  }
  .nav-open { overflow: hidden; }
  .nav-open .nav-links { opacity: 1; visibility: visible; }
  .nav-links a { font-family: var(--serif); font-size: clamp(2rem, 8vw, 2.6rem); line-height: 1.05; letter-spacing: -0.02em; text-transform: none; color: var(--ink); padding: 0.16em 0; }
  .nav-links a[aria-current="page"] { color: var(--accent); }
  .nav-links a::after { display: none; }
  .nav-links .nav-cta { margin: 2rem 0 0; padding: 1.15rem 2.3rem; font-family: var(--sans); font-size: var(--label); line-height: 1; letter-spacing: var(--track); text-transform: uppercase; background: var(--accent); color: var(--accent-ink); }
  /* Links steigen nacheinander auf; beim Schliessen verschwinden alle zugleich. */
  .nav-links > a { opacity: 0; transform: translateY(0.9rem); transition: opacity 0.3s var(--ease), transform 0.3s var(--ease); }
  .nav-open .nav-links > a { opacity: 1; transform: none; transition-duration: 0.6s, 0.7s; }
  .nav-open .nav-links > a:nth-child(1) { transition-delay: 0.08s; }
  .nav-open .nav-links > a:nth-child(2) { transition-delay: 0.13s; }
  .nav-open .nav-links > a:nth-child(3) { transition-delay: 0.18s; }
  .nav-open .nav-links > a:nth-child(4) { transition-delay: 0.23s; }
  .nav-open .nav-links > a:nth-child(5) { transition-delay: 0.28s; }
  .nav-open .nav-links > a:nth-child(6) { transition-delay: 0.33s; }
  .nav-open .nav-links > a:nth-child(7) { transition-delay: 0.42s; }
  /* Unter den Links ein Bild aus der Galerie, laeuft nach oben ins Beige aus. */
  .nav-links::after { content: ""; position: absolute; inset: auto 0 0 0; height: 42%; z-index: -1; pointer-events: none; background: url(/assets/img/g-tanz-800.jpg) center 28% / cover; -webkit-mask: linear-gradient(to bottom, transparent, #000 45%); mask: linear-gradient(to bottom, transparent, #000 45%); opacity: 0; transform: scale(1.06); transform-origin: bottom; transition: opacity 0.4s var(--ease), transform 0.4s var(--ease); }
  .nav-open .nav-links::after { opacity: 1; transform: none; transition: opacity 0.9s var(--ease) 0.3s, transform 1.2s var(--ease) 0.3s; }
  @media (max-height: 560px) { .nav-links::after { display: none; } }
  /* Auf dem Handy deckt der Balken voll ab: durchscheinender Text war unlesbar. */
  .nav::before { background: var(--bg); backdrop-filter: none; -webkit-backdrop-filter: none; }
}
/* Ohne Skript bliebe der Schalter wirkungslos und das Menue unerreichbar.
   Dann steht die Leiste still und traegt die Links offen unter dem Logo. */
@media (max-width: 900px) and (scripting: none) {
  .nav { position: absolute; height: auto; flex-wrap: wrap; padding-block: 1rem 1.25rem; }
  .nav::before { inset: 0; opacity: 1; }
  .nav-toggle { display: none; }
  .nav-links {
    position: static; order: 3; width: 100%;
    flex-direction: row; flex-wrap: wrap; justify-content: flex-start; gap: 0.4rem 1.4rem;
    padding: 1rem 0 0; background: none;
    opacity: 1; visibility: visible; transform: none; transition: none;
  }
  .nav-links a { font-family: var(--sans); font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--body); padding: 0.35rem 0; }
  .nav-links .nav-cta { margin: 0; padding: 0.35rem 0; background: none; color: var(--accent); }
}

/* == Hero: WebGL-Bild, Text unten links ===================== */
.hero { position: relative; min-height: 100dvh; display: grid; align-items: end; isolation: isolate; overflow: hidden; }
.hero-media { position: absolute; inset: 0; z-index: -1; background: var(--bg); }
.hero-media img, .hero-canvas { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-canvas { opacity: 0; transition: opacity 0.8s ease; }
.hero-canvas.is-ready { opacity: 1; }
.hero-media::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(to top, rgb(var(--bg-rgb) / 0.94) 0%, rgb(var(--bg-rgb) / 0.5) 30%, rgb(var(--bg-rgb) / 0) 60%),
    linear-gradient(to bottom, rgb(var(--bg-rgb) / 0.55), rgb(var(--bg-rgb) / 0) 28%);
}
.hero-copy { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 2rem clamp(2rem, 5vw, 6rem); align-items: end; padding-block: calc(var(--nav-h) + 2rem) clamp(2.5rem, 6vh, 5rem); }
.hero h1 { margin: 0; font-size: clamp(3.1rem, 8.2vw, 8.4rem); line-height: 0.98; letter-spacing: -0.025em; padding-bottom: 0; }
.kicker { display: block; font-family: var(--sans); font-size: var(--label); font-weight: 500; line-height: 1.5; letter-spacing: var(--track); text-transform: uppercase; color: var(--body); margin-bottom: clamp(1.2rem, 2.5vw, 2rem); }
/* Zeilenmaske: Unterlängen und Komma brauchen Luft nach unten, Kursivschwung nach links */
.line { display: block; overflow: hidden; padding: 0 0 0.14em 0.06em; margin: 0 0 -0.14em -0.06em; }
.line > span, .line > em { display: block; }
.hero .lead { color: var(--body); margin-bottom: 2rem; max-width: 30em; }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem 2rem; }
@media (max-width: 900px) {
  .hero-media::after { background: linear-gradient(to top, rgb(var(--bg-rgb) / 0.96) 0%, rgb(var(--bg-rgb) / 0.72) 38%, rgb(var(--bg-rgb) / 0.25) 62%, rgb(var(--bg-rgb) / 0) 80%), linear-gradient(to bottom, rgb(var(--bg-rgb) / 0.55), rgb(var(--bg-rgb) / 0) 28%); }
  .hero-copy { grid-template-columns: 1fr; gap: 1.75rem; }
  .hero h1 { font-size: clamp(2.9rem, 12vw, 4.8rem); }
}
@media (max-width: 560px) {
  .hero-actions { flex-direction: column; align-items: stretch; }
  .hero-actions .link { justify-content: center; }
}

/* == Intro: Porträt bis zur linken Kante ==================== */
section.intro { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2.5rem, 6vw, 7rem); align-items: center; padding-block: var(--section); padding-right: max(var(--pad), env(safe-area-inset-right)); }
.intro-media { aspect-ratio: 4 / 5; }
.intro-media img { width: 100%; height: 100%; object-fit: cover; }
.intro-copy { max-width: 36rem; }
.intro-copy p { color: var(--body); }
.facts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem clamp(1.25rem, 3vw, 2.25rem); border-top: 1px solid var(--line); margin: 2.75rem 0 2.25rem; padding-top: 1.75rem; }
.facts > div { border-left: 1px solid var(--line); padding-left: clamp(1rem, 2.5vw, 1.75rem); }
.facts > div:first-child { border-left: 0; padding-left: 0; }
.facts dt, .facts dd { margin: 0; }
.facts dt { font-size: var(--label); letter-spacing: var(--track); text-transform: uppercase; color: var(--body); line-height: 1.35; min-height: 2.7em; }
.facts strong { display: block; font-variant-numeric: tabular-nums; font-family: var(--serif); font-size: clamp(2.25rem, 4vw, 2.9rem); font-weight: 500; line-height: 1; letter-spacing: -0.02em; }
.facts-note { display: block; margin-top: 0.55rem; font-size: 0.78rem; line-height: 1.5; color: var(--muted); }
@media (max-width: 900px) {
  section.intro { grid-template-columns: 1fr; padding-inline: var(--pad); }
  .intro-media { margin-inline: calc(-1 * var(--pad)); }
}
@media (max-width: 560px) {
  .facts { grid-template-columns: 1fr; gap: 1.5rem; }
  .facts > div { border-left: 0; padding-left: 0; }
  .facts dt { min-height: 0; }
}

/* == Momente: Abzüge auf dem Leuchttisch ==================== */
.moments { padding-block: var(--section) calc(var(--section) * 0.6); }
.moments-head { margin-bottom: clamp(3rem, 6vw, 5rem); }
.moments-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(1.25rem, 3vw, 3rem) clamp(1rem, 2vw, 2rem); align-items: start; }
.m { margin: 0; }
.m img { width: 100%; height: 100%; object-fit: cover; }
.m-1 { grid-column: 1 / 6; aspect-ratio: 4 / 5; }
.m-2 { grid-column: 7 / 13; aspect-ratio: 3 / 2; margin-top: 16vh; }
.m-3 { grid-column: 1 / 8; aspect-ratio: 3 / 2; }
.m-4 { grid-column: 9 / 13; aspect-ratio: 4 / 5; margin-top: 10vh; }
.m-5 { grid-column: 2 / 6; aspect-ratio: 4 / 5; margin-top: 8vh; }
.m-6 { grid-column: 6 / 13; aspect-ratio: 3 / 2; }
.m-7 { grid-column: 8 / 12; aspect-ratio: 4 / 5; }
.moments-foot { margin-top: clamp(3rem, 6vw, 5rem); text-align: center; }
@media (max-width: 720px) {
  .moments-grid { grid-template-columns: repeat(6, 1fr); }
  .m { margin-top: 0 !important; }
  .m-1 { grid-column: 1 / 5; } .m-2 { grid-column: 1 / 7; } .m-3 { grid-column: 1 / 7; } .m-4 { grid-column: 3 / 7; }
  .m-5 { grid-column: 1 / 5; } .m-6 { grid-column: 1 / 7; } .m-7 { grid-column: 2 / 6; }
}

/* == Echte Hochzeiten: Filmstreifen laeuft durchs Fenster === */
.strip { position: relative; background: var(--bg-2); overflow: hidden; }
.strip-track { display: flex; align-items: flex-start; gap: clamp(1.5rem, 3vw, 3rem); }
.frame { flex: none; text-decoration: none; display: block; }
.frame figure { margin: 0; }
.frame-img { overflow: hidden; aspect-ratio: 4 / 5; background: var(--bg-3); }
.frame-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.9s var(--ease); }
.frame:hover .frame-img img { transform: scale(1.04); }
.frame figcaption { padding-top: 1.1rem; }
.frame .t { display: block; font-family: var(--serif); font-size: 1.45rem; line-height: 1.2; letter-spacing: -0.015em; margin-bottom: 0.4rem; transition: color 0.35s var(--ease); }
.frame:hover .t { color: var(--accent); }
.frame .s { font-size: 0.64rem; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); }
.strip-end { flex: none; display: flex; align-items: center; }
@media (min-width: 900px) {
  .strip { height: 100dvh; display: flex; align-items: center; padding-left: max(var(--pad), env(safe-area-inset-left)); }
  .strip-intro { flex: none; width: clamp(300px, 30vw, 480px); padding: 2rem clamp(2rem, 4vw, 4rem) 2rem 0; }
  .strip-window { --fade: clamp(6rem, 12vw, 14rem); flex: 1; min-width: 0; overflow: hidden; -webkit-mask-image: linear-gradient(to right, transparent, #000 var(--fade)); mask-image: linear-gradient(to right, transparent, #000 var(--fade)); }
  .strip-track { width: max-content; padding-inline: var(--fade) var(--pad); will-change: transform; }
  .frame { width: clamp(280px, 27vw, 420px); }
  .strip-end { align-self: center; width: clamp(220px, 22vw, 320px); padding-left: clamp(1rem, 2vw, 2rem); }
}
@media (max-width: 899px) {
  .strip { padding-block: var(--section); }
  .strip-intro { padding: 0 var(--pad) 2.5rem; }
  .strip-track { overflow-x: auto; scroll-snap-type: x mandatory; padding-inline: var(--pad); scroll-padding-inline: var(--pad); align-items: flex-start; scrollbar-width: none; }
  .strip-track::-webkit-scrollbar { display: none; }
  .frame { width: min(74vw, 360px); scroll-snap-align: start; }
  .strip-end { width: min(60vw, 280px); padding-block: 2rem; scroll-snap-align: start; }
}

/* == Preise: drei Spalten, eine Tafel ======================== */
.prices { padding-block: var(--section); }
.prices .lead { margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.tiers { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); border-block: 1px solid var(--line); }
.tier { display: grid; grid-template-rows: subgrid; grid-row: span var(--rows, 5); padding: 2.25rem clamp(1.25rem, 2.2vw, 2.25rem) 2.5rem; border-left: 1px solid var(--line); }
.tier:first-child { border-left: 0; padding-left: 0; }
.tier h3 { grid-row: 1; font-size: clamp(1.5rem, 1.8vw, 1.8rem); margin-bottom: 1.25rem; }
.tier-price { grid-row: 2; font-variant-numeric: tabular-nums; font-family: var(--serif); font-size: clamp(2.6rem, 3.4vw, 3.6rem); line-height: 1; letter-spacing: -0.02em; margin: 0 0 1.25rem; }
.tier-note { grid-row: 3; margin: 0 0 1.75rem; max-width: 30ch; font-size: 0.9rem; line-height: 1.55; color: var(--muted); }
.tier-facts { grid-row: 4; display: flex; gap: clamp(2rem, 3vw, 3.5rem); margin: 0 0 1.5rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.tier-facts div { display: flex; flex-direction: column-reverse; }
.tier-facts dd { margin: 0; font-variant-numeric: tabular-nums; font-family: var(--serif); font-size: 1.9rem; line-height: 1; letter-spacing: -0.02em; }
.tier-facts dt { font-size: 0.66rem; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); margin-top: 0.5rem; }
.tier-extras { grid-row: 5; list-style: none; margin: 0; padding: 0; font-size: 0.9rem; color: var(--body); }
.tier-extras li { position: relative; padding: 0.55rem 0 0.55rem 1.1rem; border-top: 1px solid var(--line); }
.tier-extras li::before { content: ""; position: absolute; left: 0; top: 1.2rem; width: 0.45rem; height: 1px; background: var(--accent); }
.tier-extras .is-add, .tier-extras .is-off { color: var(--muted); }
.tier-extras .is-add::before, .tier-extras .is-off::before { background: currentColor; }
.tier.is-featured { background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 13%, transparent), color-mix(in srgb, var(--accent) 4%, transparent)); box-shadow: inset 0 2px 0 var(--accent); }
.tier.is-featured .tier-price { color: var(--accent); }
.price-foot { display: flex; flex-wrap: wrap; gap: 1.25rem 2.5rem; align-items: center; margin-top: 3rem; }
@media (max-width: 900px) {
  .tiers { grid-template-columns: 1fr; }
  .tier { border-left: 0; padding: 1.75rem 0 2rem; }
  .tier:nth-child(n+2) { border-top: 1px solid var(--line); }
  .tier.is-featured { padding-inline: 1.25rem; margin-inline: -1.25rem; }
}

/* == Ablauf: Bild bleibt stehen, Schritte ziehen vorbei ===== */
.process { padding-block: var(--section); }
.process h2 { margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.process-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2.5rem, 6vw, 7rem); align-items: start; }
.process-sticky { position: sticky; top: calc(var(--nav-h) + 1.5rem); }
.process-media { position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--bg-3); }
.process-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transform: scale(1.06); transition: opacity 1s var(--ease), transform 1.6s var(--ease); }
.process-media img.is-active { opacity: 1; transform: none; }
.steps { list-style: none; margin: 0; padding: 0; display: grid; row-gap: clamp(6rem, 24vh, 13rem); }
.step { opacity: var(--step-dim, 0.7); transition: opacity 0.7s var(--ease); }
.step.is-active { opacity: 1; }
html[data-theme="light"] { --step-dim: 0.8; }
.num { display: block; font-family: var(--serif); font-style: italic; font-size: clamp(2rem, 3vw, 2.8rem); line-height: 1; color: var(--accent); margin-bottom: 1rem; }
.step h3 { font-size: clamp(1.8rem, 2.8vw, 2.6rem); margin-bottom: 0.9rem; }
.step p { color: var(--body); max-width: 32em; font-size: 1rem; line-height: 1.65; }
@media (max-width: 900px) {
  .process-grid { grid-template-columns: 1fr; gap: 1rem; }
  .process-sticky { position: static; }
  .process-media { display: none; }
  .steps { row-gap: 0; }
  .step { padding-block: 1.75rem; opacity: 1; }
}

/* == Stimmen ================================================ */
.voices { padding-block: var(--section); background: var(--bg-2); }
.quotes { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(2.5rem, 5vw, 4rem) 2rem; margin-top: clamp(3rem, 6vw, 5rem); }
.quote { margin: 0; min-width: 0; }
.quote:nth-child(1) { grid-column: 1 / 8; }
.quote:nth-child(2) { grid-column: 6 / 13; }
.quote:nth-child(3) { grid-column: 2 / 10; }
.quote blockquote { margin: 0 0 1.3rem; font-family: var(--serif); font-style: italic; font-size: clamp(1.5rem, 2.4vw, 2.2rem); line-height: 1.3; letter-spacing: -0.012em; padding-bottom: 0.08em; }
.quote figcaption { display: flex; align-items: center; gap: 1.2rem; font-size: 0.64rem; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); }
.quote figcaption img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; flex: none; outline: 1px solid var(--hair); outline-offset: 4px; }
.quote figcaption strong { display: block; font-family: var(--serif); font-weight: 500; font-size: 1.2rem; letter-spacing: -0.01em; text-transform: none; color: var(--ink); margin-bottom: 0.35rem; }
.voices-foot { margin-top: clamp(3rem, 6vw, 5rem); text-align: center; }
@media (max-width: 900px) { .quotes { grid-template-columns: 1fr; } .quote:nth-child(n) { grid-column: 1 / -1; } }

/* == FAQ ==================================================== */
.faq { padding-block: var(--section); }
.faq-grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(2.5rem, 6vw, 7rem); align-items: start; }
.faq-intro { position: sticky; top: calc(var(--nav-h) + 2rem); }
.faq-intro .lead { margin-bottom: 2rem; }
.faq-list details + details { border-top: 1px solid var(--line); }
.faq-list summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 1.5rem; align-items: baseline; padding: 1.5rem 0; font-family: var(--serif); font-size: clamp(1.3rem, 1.8vw, 1.65rem); letter-spacing: -0.014em; line-height: 1.25; transition: color 0.35s var(--ease); }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { content: "+"; font-family: var(--sans); font-size: 1.1rem; opacity: 0.55; flex: none; transition: transform 0.5s var(--ease); }
.faq-list details[open] summary::after { transform: rotate(45deg); }
.faq-list summary:hover { color: var(--accent); }
.faq-body { padding: 0 0 1.75rem; color: var(--body); max-width: 60ch; }
@media (max-width: 860px) { .faq-grid { grid-template-columns: 1fr; gap: 2.5rem; } .faq-intro { position: static; } }

/* == Finale: das Buch schliesst wie es aufgeht ============== */
.finale { position: relative; min-height: min(68dvh, 620px); display: grid; align-items: end; isolation: isolate; overflow: hidden; }
.finale-media { position: absolute; inset: 0; z-index: -1; }
.finale-media img { position: absolute; inset: -10% 0; width: 100%; height: 120%; object-fit: cover; }
.finale-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgb(var(--bg-rgb) / 0.66) 0, rgb(var(--bg-rgb) / 0.53) 29rem, rgb(var(--bg-rgb) / 0) 62rem), linear-gradient(to top, rgb(var(--bg-rgb) / 0.92) 0%, rgb(var(--bg-rgb) / 0.45) 44%, rgb(var(--bg-rgb) / 0.06) 82%); }
.finale-copy { padding-block: clamp(2.75rem, 6vh, 4.5rem); max-width: 40rem; }
.finale p { color: var(--body); max-width: 30em; margin-bottom: 2rem; }
/* Schmal: Text laeuft ueber die volle Breite, also senkrecht statt seitlich abdunkeln */
@media (max-width: 900px) {
  .finale-media::after { background: linear-gradient(to top, rgb(var(--bg-rgb) / 0.95) 0%, rgb(var(--bg-rgb) / 0.74) 52%, rgb(var(--bg-rgb) / 0.12) 88%); }
}

/* == Footer ================================================= */
.footer { border-top: 1px solid var(--line); padding-block: 5rem 6rem; font-size: 0.88rem; }
.footer-grid { display: grid; grid-template-columns: 2.2fr 1fr 1fr 1fr; gap: 3rem 2.5rem; }
.footer h3 { font-family: var(--sans); font-size: var(--label); font-weight: 500; line-height: 1.4; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); margin: 0 0 1.3rem; }
.footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.footer a { text-decoration: none; color: var(--body); transition: color 0.35s var(--ease); }
.footer a:hover { color: var(--ink); }
.footer-brand .brand { font-size: 1.9rem; --logo-h: 80px; }
.footer-brand p { color: var(--body); max-width: 30ch; margin-top: 1rem; }
.footer-bottom { margin-top: 4rem; padding-top: 1.75rem; border-top: 1px solid var(--line); color: var(--muted); font-size: 0.64rem; letter-spacing: 0.18em; text-transform: uppercase; display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) {
  .footer { padding-block: 3rem 5.5rem; }
  .footer-grid { grid-template-columns: 1fr; gap: 1.75rem; }
  .footer-grid > div:nth-child(2) { display: none; } /* "Seiten" = Hauptmenü, auf dem Handy doppelt */
  .footer-brand .brand { font-size: 1.5rem; --logo-h: 56px; }
  .footer-brand p { margin-top: 0.6rem; }
  .footer h3 { margin-bottom: 0.6rem; }
  .footer ul { display: flex; flex-wrap: wrap; gap: 0.5rem 1.4rem; }
  .footer-bottom { margin-top: 2.25rem; padding-top: 1.25rem; }
  .footer-bottom span + span:not(.footer-links) { display: none; } /* Portale behalten Impressum/Datenschutz */
}

/* == Mobile CTA ============================================= */
.mobile-cta {
  position: fixed; inset: auto 0 0 0; z-index: 30; display: none;
  padding: 0.7rem max(var(--pad), env(safe-area-inset-right)) calc(0.7rem + env(safe-area-inset-bottom)) max(var(--pad), env(safe-area-inset-left));
  background: rgb(var(--bg-rgb) / 0.88); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-top: 1px solid var(--line);
  transform: translateY(110%); transition: transform 0.4s var(--ease);
}
.mobile-cta.visible { transform: none; }
.nav-open .mobile-cta.visible { transform: translateY(110%); }
.mobile-cta .btn { width: 100%; }
@media (max-width: 900px) { .mobile-cta { display: block; } }

/* == Unterseiten-Kopf: nur Typografie, links gesetzt ======== */
.page-head { padding-block: calc(var(--nav-h) + clamp(3rem, 9vh, 6.5rem)) clamp(3rem, 6vw, 5rem); }
.page-head h1 { font-size: clamp(2.9rem, 6.6vw, 6.6rem); max-width: 11em; margin: 0; }
.page-head .kicker { margin-bottom: clamp(1rem, 2vw, 1.6rem); }
.page-head .lead { margin-top: clamp(1.5rem, 3vw, 2.25rem); }
.page-head.has-media { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 3fr); gap: 2rem clamp(2rem, 6vw, 8rem); align-items: end; }
.head-media { margin: 0; aspect-ratio: 4 / 5; }
.head-media img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 720px) {
  .page-head.has-media { grid-template-columns: 1fr; }
  .head-media { width: 62%; margin-left: auto; }
}
[hidden] { display: none !important; }
.flag { display: inline-block; margin-left: 0.9rem; font-family: var(--sans); font-size: 0.6rem; font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; color: var(--accent); vertical-align: middle; transform: translateY(-0.4em); }

/* == Ueber mich: Kontaktbogen, Ueberschrift zwischen zwei Abzuegen */
.about { padding-block: calc(var(--nav-h) + clamp(2rem, 6vh, 4rem)) calc(var(--section) * 0.35); }
.bio { padding-top: calc(var(--section) * 0.65); }
.about-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(2rem, 4vw, 4rem) clamp(1rem, 2vw, 2rem); align-items: start; }
.about-a, .about-b { margin: 0; aspect-ratio: 4 / 5; }
.about-a { grid-column: 1 / 6; grid-row: 1 / 3; }
.about-copy { grid-column: 7 / 13; grid-row: 1; padding-top: clamp(1rem, 6vh, 5rem); }
.about-b { grid-column: 8 / 13; grid-row: 2; }
.about img { width: 100%; height: 100%; object-fit: cover; }
.about h1 { font-size: clamp(2.9rem, 6vw, 6rem); margin: 0 0 1.5rem; }
.bio .step p { font-size: clamp(1.1rem, 1.45vw, 1.3rem); line-height: 1.6; max-width: 30em; }
.bio .step a { color: var(--ink); text-underline-offset: 3px; text-decoration-color: var(--hair); transition: color 0.35s var(--ease); }
.bio .step a:hover { color: var(--accent); }
@media (max-width: 900px) {
  .about-grid { grid-template-columns: repeat(6, 1fr); }
  .about-copy { grid-column: 1 / -1; grid-row: 1; padding-top: 0; }
  .about-a { grid-column: 1 / 5; grid-row: 2; }
  .about-b { grid-column: 3 / 7; grid-row: 3; margin-top: -22%; }
}

/* == Portfolio: Abzuege stapeln sich, jeder entwickelt sich = */
.stack { position: relative; }
.slide { position: sticky; top: 0; height: 100dvh; overflow: hidden; background: var(--bg); }
.slide img { width: 100%; height: 100%; object-fit: cover; }
.slide-head::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(to top, rgb(var(--bg-rgb) / 0.92) 0%, rgb(var(--bg-rgb) / 0.45) 32%, rgb(var(--bg-rgb) / 0) 62%), linear-gradient(to bottom, rgb(var(--bg-rgb) / 0.55), rgb(var(--bg-rgb) / 0) 28%); }
.slide-copy { position: absolute; inset: auto 0 0 0; z-index: 2; padding-block: clamp(2.5rem, 6vh, 5rem); }
.slide h1 { font-size: clamp(3rem, 8vw, 8rem); margin: 0 0 1.25rem; padding-bottom: 0; }
.slide .lead { max-width: 30em; }
.folio { padding-block: var(--section) calc(var(--section) * 0.6); }
.folio .m-2, .folio .m-3, .folio .m-6 { aspect-ratio: 1 / 1; }

/* == Preise: dieselben Spalten wie auf der Startseite, mehr Tiefe = */
.tafel { padding-block: calc(var(--section) * 0.5) calc(var(--section) * 0.7); }
.tafel h2 { margin-bottom: clamp(2rem, 4vw, 3.5rem); }
.tiers-detail .tier-note { max-width: none; color: var(--body); }
.tafel-foot { margin-top: 1.5rem; font-size: 0.85rem; color: var(--muted); max-width: 50em; }
.tafel-sub { margin-top: clamp(4rem, 8vw, 7rem); font-size: clamp(1.9rem, 3.4vw, 3rem); }
.tiers-addons { grid-template-columns: 1fr; }
.tiers-addons .tier { grid-template-columns: minmax(0, 15rem) minmax(0, 1fr) auto minmax(11rem, auto); grid-template-rows: auto; grid-row: auto; gap: 0.35rem clamp(1.5rem, 4vw, 4rem); align-items: baseline; padding: 1.35rem 0; border-left: 0; }
.tiers-addons .tier + .tier { border-top: 1px solid var(--line); }
.tiers-addons .tier h3 { grid-area: 1 / 1; margin: 0; font-size: clamp(1.15rem, 1.4vw, 1.35rem); }
.tiers-addons .tier-note { grid-area: 1 / 2; margin: 0; max-width: none; min-height: 3.1em; }
.tiers-addons .tier-price { grid-area: 1 / 3; margin: 0; font-size: clamp(1.35rem, 1.8vw, 1.7rem); text-align: right; white-space: nowrap; }
@media (max-width: 1200px) {
  .tiers-addons .tier { grid-template-columns: minmax(0, 1fr) auto; }
  .tiers-addons .tier-note { grid-area: 2 / 1 / 3 / -1; }
  .tiers-addons .tier-price { grid-area: 1 / 2; }
}
@media (max-width: 720px) {
  .flag { display: block; margin: 0.4rem 0 0; transform: none; }
}

/* == FAQ: Register links, Fragen rechts ==================== */
.faq-page { padding-block: clamp(1rem, 4vw, 3rem) var(--section); }
.register { display: grid; gap: 0.15rem; }
.register a { display: flex; align-items: baseline; gap: 0.9rem; text-decoration: none; font-family: var(--serif); font-size: clamp(1.4rem, 2vw, 1.9rem); letter-spacing: -0.015em; line-height: 1.2; color: var(--muted); padding: 0.5rem 0; transition: color 0.4s var(--ease); }
.register a::before { content: ""; width: 0; height: 1px; background: var(--accent); flex: none; transition: width 0.5s var(--ease); }
.register a:hover, .register a.is-active { color: var(--ink); }
.register a.is-active::before { width: 2rem; }
.faq-group + .faq-group { margin-top: clamp(3rem, 6vw, 5rem); }
.faq-group h2 { font-size: clamp(1.9rem, 3vw, 2.6rem); margin-bottom: 0.5rem; }
@media (max-width: 860px) {
  .register { display: flex; gap: 1.5rem; overflow-x: auto; scrollbar-width: none; margin-top: 1.5rem; }
  .register::-webkit-scrollbar { display: none; }
  .register a { flex: none; font-size: 1.2rem; }
  .register a::before { display: none; }
}

/* == Kontakt: Safelight-Formular ============================ */
.contact { padding-block: clamp(1rem, 3vw, 3rem) var(--section); }
.contact-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(3rem, 7vw, 8rem); align-items: start; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 clamp(1.5rem, 3vw, 3rem); align-items: start; }
.form-field { display: grid; gap: 0.6rem; margin-bottom: clamp(1.8rem, 3vw, 2.6rem); }
.form-field label { font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; color: var(--body); transition: color 0.3s var(--ease); }
.form-field:focus-within label { color: var(--accent); }
.form-field input, .form-field textarea, .form-field select { width: 100%; font: inherit; font-size: 1.1rem; line-height: 1.5; color: var(--ink); background: transparent; border: 0; border-bottom: 1px solid var(--hair); border-radius: 0; padding: 0.55rem 0 0.8rem; transition: border-color 0.3s var(--ease), box-shadow 0.3s var(--ease); }
.form-field textarea { resize: vertical; min-height: 9rem; }
/* Datums- und Auswahlfeld messen sich an den Schriftmetriken des Browsers
   statt an der Zeilenhoehe und geraten so ein paar Pixel neben ein
   Textfeld. Die feste Hoehe (Zeilenhoehe + beide Innenabstaende + Linie)
   haelt alle Unterlinien auf gleicher Hoehe. */
.form-field input[type="date"], .form-field select { height: calc(1.5em + 1.35rem + 1px); }
/* Solange nichts gewaehlt ist, zeigt der Browser die Maske tt.mm.jjjj in
   voller Textfarbe. Gedaempft liest sie sich wie die Beispiele daneben und
   nicht wie ein bereits ausgefuelltes Feld. Klasse setzt main.js. */
.form-field input[type="date"].leer { color: var(--muted); }
.form-field input:focus, .form-field textarea:focus, .form-field select:focus { outline: none; border-bottom-color: var(--accent); box-shadow: 0 1px 0 var(--accent); }
.form-field input:-webkit-autofill { -webkit-text-fill-color: var(--ink); box-shadow: 0 0 0 1000px var(--bg) inset; }
.form-field input::placeholder, .form-field textarea::placeholder { color: var(--muted); opacity: 1; }
/* Das Auswahlfeld traegt seinen Pfeil selbst; Rand und Fuellung kommen von
   der Regel oben, damit es neben den Textfeldern nicht als Kasten auffaellt. */
.form-field select { color: var(--ink); background-color: var(--bg); }
.form-field select option { background: var(--bg-2); }
.form-field .hint { font-size: 0.8rem; color: var(--muted); }
.form-status { margin-top: 1.25rem; color: var(--accent); font-size: 0.95rem; }
.form-status:empty { margin-top: 0; }
/* Nach dem Absenden weicht das Formular dem Dank an gleicher Stelle. */
.form-done { scroll-margin-top: calc(var(--nav-h) + 2rem); outline: none; }
.form-done-line { display: block; width: 4rem; height: 1px; background: var(--accent); margin-bottom: 2.25rem; transform-origin: left; animation: done-line 1.2s var(--ease) both; }
.form-done h2 { font-size: clamp(2.6rem, 5.5vw, 4.2rem); animation: done-rise 0.9s var(--ease) 0.15s both; }
.form-done p { color: var(--body); max-width: 34em; animation: done-rise 0.9s var(--ease) 0.3s both; }
.form-done-mail strong { color: var(--ink); font-weight: 500; }
@keyframes done-line { from { transform: scaleX(0); } }
@keyframes done-rise { from { opacity: 0; transform: translateY(22px); } }
.next-steps .is-done { opacity: 0.45; }
.next-steps .is-done .num { color: var(--muted); }
.next-steps .is-done strong { text-decoration: line-through; text-decoration-color: var(--hair); }
.form-note { font-size: 0.85rem; color: var(--muted); margin-top: 1.25rem; max-width: 40em; }
.form-note a { color: var(--body); text-underline-offset: 3px; }
.contact-aside { position: sticky; top: calc(var(--nav-h) + 2rem); display: grid; gap: clamp(2rem, 3vw, 2.75rem); }
.contact-aside h2 { font-size: clamp(1.9rem, 2.6vw, 2.4rem); margin-bottom: 1.25rem; }
.contact-aside h3 { font-family: var(--sans); font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); margin: 0 0 0.7rem; }
.contact-aside p { color: var(--body); font-size: 0.95rem; }
.contact-aside a { color: var(--ink); text-decoration-color: var(--hair); text-underline-offset: 3px; transition: color 0.35s var(--ease); }
.contact-aside a:hover { color: var(--accent); }
.next-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.5rem; }
.next-steps li { display: grid; grid-template-columns: 2.4rem 1fr; gap: 0.75rem; align-items: baseline; }
.next-steps .num { font-size: 1.4rem; margin: 0; }
.next-steps strong { display: block; font-family: var(--serif); font-weight: 500; font-size: 1.35rem; letter-spacing: -0.015em; line-height: 1.2; margin-bottom: 0.25rem; }
.next-steps p { font-size: 0.92rem; }
@media (max-width: 900px) { .contact-grid { grid-template-columns: 1fr; } .contact-aside { position: static; border-top: 1px solid var(--line); padding-top: 2.5rem; } }
@media (max-width: 560px) { .form-row { grid-template-columns: 1fr; } }

/* == Blog: Archivraster, der neueste Abzug doppelt breit ==== */
.blog-filter { position: sticky; top: var(--nav-h); z-index: 20; display: flex; gap: clamp(1.5rem, 3vw, 2.5rem); padding-block: 0.9rem; margin-bottom: clamp(2.5rem, 5vw, 4rem); background: rgb(var(--bg-rgb) / 0.86); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--line); overflow-x: auto; scrollbar-width: none; }
.blog-filter::-webkit-scrollbar { display: none; }
.blog-filter button { flex: none; background: none; border: 0; border-bottom: 1px solid transparent; padding: 0.4rem 0; font: inherit; font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); cursor: pointer; transition: color 0.35s var(--ease), border-color 0.35s var(--ease); }
.blog-filter button:hover { color: var(--ink); }
.blog-filter button[aria-pressed="true"] { color: var(--accent); border-color: var(--accent); }
.archive { padding-bottom: var(--section); }
.post-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(2.5rem, 4vw, 4rem) clamp(1rem, 2vw, 2rem); }
.post-grid > a { text-decoration: none; display: block; min-width: 0; scroll-margin-top: calc(var(--nav-h) + 4.5rem); }
.post-grid > a:first-child { grid-column: span 2; grid-row: span 2; }
.post-grid figure { margin: 0; }
.post-grid .thumb { aspect-ratio: 3 / 2; background: var(--bg-3); }
.post-grid .thumb img { width: 100%; height: 100%; object-fit: cover; }
.post-grid figcaption { padding-top: 1rem; }
.post-meta { display: block; font-size: 0.64rem; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); margin-bottom: 0.6rem; }
.post-grid .post-title { display: block; font-family: var(--serif); font-size: clamp(1.25rem, 1.5vw, 1.5rem); line-height: 1.2; letter-spacing: -0.015em; transition: color 0.35s var(--ease); }
.post-grid > a:first-child .post-title { font-size: clamp(1.7rem, 2.6vw, 2.6rem); max-width: 18em; }
.post-grid > a:hover .post-title { color: var(--accent); }
.filter-empty { margin-top: 2rem; }
@media (max-width: 1000px) { .post-grid { grid-template-columns: repeat(2, 1fr); } .post-grid > a:first-child { grid-row: auto; } }
@media (max-width: 560px) { .post-grid { grid-template-columns: 1fr; } .post-grid > a:first-child { grid-column: auto; } }

/* == Beitrag: Titel ueber dem Cover, eine linke Kante fuer alles ==
   Kopf, Fliesstext, Bilder und Galerie beginnen an derselben Kante. Der Text
   laeuft nur kuerzer, statt als schmaler Streifen in der Mitte zu stehen. */
.post-head { padding-block: calc(var(--nav-h) + clamp(3rem, 8vh, 5.5rem)) clamp(2.5rem, 5vw, 4rem); max-width: calc(60rem + 2 * var(--pad)); margin-inline: auto; }
.post-head h1, .post-head .post-meta { max-width: var(--col); }
.post-head h1 { font-size: clamp(2.3rem, 4vw, 3.75rem); margin: 0; }
.post-head .post-meta { margin-bottom: clamp(1.2rem, 2.5vw, 2rem); }
.post-meta span + span::before { content: ""; display: inline-block; width: 1px; height: 0.8em; background: var(--hair); margin: 0 0.9em; vertical-align: -0.05em; }
.cover { margin: 0; height: min(66.7vw, 88dvh); }
.cover img { width: 100%; height: 100%; object-fit: cover; }
.article-body { max-width: calc(60rem + 2 * var(--pad)); margin-inline: auto; padding-block: clamp(3rem, 6vw, 5rem) var(--section); }
.article-body > * { max-width: var(--col); }
.article-body p, .article-body li { color: var(--body); font-size: clamp(1.0125rem, 0.94rem + 0.5vw, 1.3125rem); line-height: 1.62; }
.article-body p { margin-bottom: 1.4rem; }
.article-body .intro { font-size: clamp(1.1rem, 1rem + 0.7vw, 1.6rem); line-height: 1.5; color: var(--ink); margin-bottom: 2rem; }
.article-body h2 { font-size: clamp(1.9rem, 3vw, 2.6rem); margin: clamp(2.5rem, 5vw, 3.5rem) 0 1rem; }
.article-body h3 { font-size: clamp(1.45rem, 2vw, 1.8rem); margin: 2.25rem 0 0.75rem; }
.article-body h4 { font-family: var(--serif); font-weight: 500; font-size: 1.3rem; margin: 2rem 0 0.5rem; }
.article-body a { color: var(--ink); text-underline-offset: 3px; text-decoration-color: var(--hair); transition: color 0.35s var(--ease); }
.article-body a:hover { color: var(--accent); }
.article-body ul, .article-body ol { padding-left: 1.2rem; margin: 0 0 1.4rem; }
.article-body li + li { margin-top: 0.4rem; }
.article-body blockquote { margin: 2.5rem 0; padding-left: 1.5rem; border-left: 1px solid var(--hair); font-family: var(--serif); font-style: italic; font-size: clamp(1.35rem, 2vw, 1.7rem); line-height: 1.35; color: var(--ink); }
.article-body figure { margin: clamp(2.5rem, 5vw, 3.5rem) 0; }
.article-body figcaption { font-size: 0.8rem; color: var(--muted); padding-top: 0.7rem; }
/* Zwei Breiten, mehr nicht: die Lesespalte und die volle Bildbreite. */
.article-body { --plate: min(60rem, 100vw - 2 * var(--pad)); }
.article-body > figure, .article-body > .masonry, .article-body > .galerie, .article-body > .venue, .article-body > .article-nav { max-width: none; }
.article-body .masonry { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 3vw, 3rem) clamp(1rem, 2vw, 2rem); align-items: start; margin-block: clamp(2.5rem, 5vw, 4rem); }
.masonry figure { margin: 0; }
.masonry figure:nth-child(even) { margin-top: clamp(2rem, 6vw, 5rem); }
.article-body .galerie { margin-block: clamp(2.5rem, 5vw, 4rem); min-height: 60vh; }
.inline-cta { margin: 2.5rem 0; }
/* Ortsangaben: das Beispielbild der Location traegt seine Eckdaten, statt
   ohne Bezug ueber der Galerie zu schweben. Die Tafel liegt auf der rechten
   Bildkante auf, damit beides als ein Block gelesen wird. */
.venue { margin-block: clamp(3.5rem, 7vw, 5.5rem); display: grid; grid-template-columns: minmax(0, 1.22fr) minmax(0, 0.78fr); }
/* Das Bild waechst mit der Tafel mit, damit neben einer langen Liste kein
   Briefmarkenbild steht. Der Deckel begrenzt, wie stark das Querformat dabei
   beschnitten wird. */
.article-body .venue-shot { margin: 0; grid-area: 1 / 1 / 2 / 2; max-height: calc(var(--plate) * 0.55); overflow: hidden; }
.article-body .venue-shot img { width: 100%; height: 100%; object-fit: cover; }
.venue-box, .venue-facts { padding: clamp(1.6rem, 3vw, 2.5rem); background: var(--bg-2); border: 1px solid var(--line); }
.venue-facts { grid-area: 1 / 2 / 2 / 3; position: relative; align-self: start; margin: clamp(1.25rem, 3vw, 2.5rem) 0 0 calc(-1 * clamp(1.5rem, 4vw, 3.5rem)); }
/* Beitraege ohne Beispielbild: dieselbe Tafel, nur ohne Bild dahinter. */
.venue-box { margin: clamp(3.5rem, 7vw, 5.5rem) 0; }
.article-body .venue-box h2, .article-body .venue-facts h2 { font-size: clamp(1.45rem, 2.1vw, 1.95rem); margin: 0 0 1.25rem; }
.venue-box dl, .venue-facts dl { margin: 0; display: grid; gap: 1.1rem; }
.venue-box dt, .venue-facts dt { font-size: 0.64rem; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); margin-bottom: 0.25rem; }
.venue-box dd, .venue-facts dd { margin: 0; color: var(--body); font-size: 0.95rem; line-height: 1.6; }
.article-body .venue-note { margin: 1.4rem 0 0; padding-top: 1.2rem; border-top: 1px solid var(--line); color: var(--body); font-size: 0.95rem; line-height: 1.6; }
@media (max-width: 820px) {
  .venue { grid-template-columns: 1fr; }
  /* Einspaltig steht das Bild in voller Breite: der Deckel von oben wuerde
     ein Hochformat auf einen Streifen zusammenschneiden. */
  .article-body .venue-shot { grid-area: 1 / 1 / 2 / 2; max-height: none; }
  .venue-facts { grid-area: 2 / 1 / 3 / 2; margin: calc(-1 * clamp(1.75rem, 6vw, 3rem)) 0 0 clamp(1rem, 5vw, 2.5rem); }
}
.article-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; border-top: 1px solid var(--line); margin-top: clamp(3rem, 6vw, 4.5rem); padding-top: 1.75rem; }
.article-nav a { text-decoration: none; display: grid; gap: 0.5rem; align-content: start; }
.article-nav .next { text-align: right; }
.article-nav .dir { font-size: 0.64rem; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); }
.article-nav .t { font-family: var(--serif); font-size: clamp(1.2rem, 1.6vw, 1.5rem); line-height: 1.2; letter-spacing: -0.015em; transition: color 0.35s var(--ease); }
.article-nav a:hover .t { color: var(--accent); }
@media (max-width: 560px) { .article-nav { grid-template-columns: 1fr; } .article-nav .next { text-align: left; } .article-body .masonry { grid-template-columns: 1fr; } .masonry figure:nth-child(even) { margin-top: 0; } }

/* == Fliesstext: Impressum, Datenschutz, 404 =============== */
.prose { padding-bottom: var(--section); }
.prose > * { max-width: 70ch; }
.prose h2 { font-size: clamp(1.8rem, 2.8vw, 2.4rem); margin: clamp(2.5rem, 4vw, 3.5rem) 0 1rem; }
.prose h3 { font-size: clamp(1.35rem, 1.8vw, 1.6rem); margin: 2rem 0 0.75rem; }
.prose p, .prose li { color: var(--body); }
.prose a { color: var(--ink); text-underline-offset: 3px; text-decoration-color: var(--hair); transition: color 0.35s var(--ease); }
.prose a:hover { color: var(--accent); }
.prose ul { padding-left: 1.2rem; }
.link-list { list-style: none; margin: 2rem 0; padding: 0; display: grid; gap: 1.1rem; justify-items: start; }

/* == Kundenportal: Fahrplan statt Fliesstext ================ */
.nav-brand-only { justify-content: flex-start; }
.portal-head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 2rem clamp(2rem, 6vw, 7rem); align-items: end; padding-block: calc(var(--nav-h) + clamp(2rem, 6vh, 4rem)) clamp(2.5rem, 5vw, 4rem); }
.portal-head h1 { font-size: clamp(2.9rem, 6vw, 5.8rem); margin: 0; }
.portal-head .lead { margin-top: 1.5rem; }
.portal-count { margin: clamp(2rem, 4vw, 3rem) 0 0; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.portal-count strong { display: block; font-family: var(--serif); font-weight: 500; font-size: clamp(2.6rem, 4.5vw, 3.6rem); line-height: 1; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.portal-count span { display: block; margin-top: 0.5rem; font-size: 0.85rem; color: var(--muted); }
.portal-media { margin: 0; aspect-ratio: 4 / 5; }
.portal-media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 85%; }
.portal-nav { position: sticky; top: var(--nav-h); z-index: 5; display: flex; flex-wrap: wrap; gap: 0.6rem clamp(1.25rem, 3vw, 2.5rem); padding-block: 1.1rem; border-block: 1px solid var(--line); background: var(--bg); }
.portal-nav a { font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; text-decoration: none; color: var(--body); transition: color 0.35s var(--ease); }
.portal-nav a:hover { color: var(--accent); }
.portal-section { padding-block: clamp(3.5rem, 7vw, 6rem); border-top: 1px solid var(--line); }
.portal-nav + .portal-section { border-top: 0; }
.portal-section h2 { font-size: clamp(2rem, 3.4vw, 3rem); margin-bottom: 0.9rem; }
.portal-section h2 + p { color: var(--body); max-width: 34em; line-height: 1.65; margin: 0; }
.portal-split { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 2.5rem clamp(2rem, 5vw, 6rem); align-items: start; }
.portal-section .link-list { margin: 1.75rem 0 0; }
.timeline { list-style: none; margin: clamp(2.5rem, 5vw, 4rem) 0 0; padding: 1.75rem 0 0; position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2rem clamp(1.25rem, 2.5vw, 2.5rem); }
.timeline::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--line); }
.timeline li { position: relative; }
.timeline li::before { content: ""; position: absolute; top: calc(-1.75rem - 5px); left: 0; width: 11px; height: 11px; border-radius: 50%; background: var(--bg); border: 1px solid var(--hair); }
.timeline .is-done::before { background: var(--hair); }
.timeline .is-next::before { background: var(--accent); border-color: var(--accent); }
.timeline .when { display: block; font-size: 0.8rem; color: var(--muted); margin-bottom: 0.6rem; font-variant-numeric: tabular-nums; }
.timeline .is-next .when { color: var(--accent); }
.timeline h3 { font-size: clamp(1.3rem, 1.7vw, 1.55rem); margin-bottom: 0.45rem; }
.timeline p { margin: 0; font-size: 0.9rem; line-height: 1.55; color: var(--body); }
.timeline .is-done h3, .timeline .is-done p { color: var(--muted); }
.files { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.files li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.25rem 1.5rem; align-items: baseline; padding: 1.1rem 0; border-bottom: 1px solid var(--line); }
.files .t { font-family: var(--serif); font-size: clamp(1.25rem, 1.6vw, 1.5rem); line-height: 1.2; letter-spacing: -0.015em; color: var(--ink); text-decoration: none; transition: color 0.35s var(--ease); }
.files a.t::after { content: "\2192"; display: inline-block; margin-left: 0.5em; transition: transform 0.5s var(--ease); }
.files a.t:hover { color: var(--accent); }
.files a.t:hover::after { transform: translateX(4px); }
.files .s { font-size: 0.8rem; color: var(--muted); text-align: right; }
.tutorials { list-style: none; margin: clamp(2.5rem, 5vw, 4rem) 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.75rem, 3vw, 2.5rem) clamp(1rem, 2vw, 2rem); }
.tutorials figure { margin: 0; }
.tutorials video { width: 100%; aspect-ratio: 16 / 9; background: var(--bg-3); display: block; }
.tutorials figcaption { display: flex; justify-content: space-between; gap: 1rem; padding-top: 0.75rem; font-size: 0.88rem; color: var(--body); }
.tutorials figcaption span { color: var(--muted); font-variant-numeric: tabular-nums; }
.portal-section .facts { margin: 0; padding-top: 0; border-top: 0; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tools-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.75rem, 3vw, 2.5rem) clamp(1rem, 2vw, 2rem); margin-top: clamp(2.5rem, 5vw, 4rem); align-items: start; }
.tool { text-decoration: none; display: block; }
.tool .tool-img { background: var(--bg-3); }
.tool img { width: 100%; height: auto; display: block; }
.tool .t { display: block; font-family: var(--serif); font-size: 1.45rem; line-height: 1.2; letter-spacing: -0.015em; margin: 1rem 0 0.3rem; transition: color 0.35s var(--ease); }
.tool:hover .t { color: var(--accent); }
.tool .s { font-size: 0.8rem; color: var(--muted); }
.footer-links { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.footer-bottom:first-child { margin-top: 0; border-top: 0; }
@media (max-width: 900px) {
  .timeline { grid-template-columns: 1fr; gap: 2rem; padding: 0 0 0 1.75rem; }
  .timeline::before { top: 0; bottom: 0; left: 0; right: auto; width: 1px; height: auto; }
  .timeline li::before { top: 0.45em; left: calc(-1.75rem - 5px); }
  .portal-split { grid-template-columns: 1fr; gap: 1.5rem; }
  .portal-section .facts { grid-template-columns: 1fr; gap: 1.25rem; }
  .portal-section .facts > div { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 1rem; }
}
@media (max-width: 720px) {
  .portal-head { grid-template-columns: 1fr; }
  .portal-media { order: -1; width: 62%; margin-left: auto; }
  .portal-nav { position: static; }
  .tutorials, .tools-grid { grid-template-columns: 1fr; }
}

/* == Bewegung: Ausgangslagen fuer GSAP ======================
   Ohne Skript oder mit reduzierter Bewegung ist alles sofort sichtbar. */
.rise { opacity: 0; transform: translateY(28px); }
.js-hide { visibility: hidden; }
.dev { position: relative; overflow: hidden; }
.dev::after { content: ""; position: absolute; inset: -1px; background: var(--bg); opacity: var(--veil, 1); pointer-events: none; }
.dev img { transform: scale(1.08); filter: saturate(0) brightness(0.55); }
@media (prefers-reduced-motion: reduce), (scripting: none) {
  .rise { opacity: 1; transform: none; }
  .js-hide { visibility: visible; }
  .dev::after { opacity: 0; }
  .dev img { transform: none; filter: none; }
  .step { opacity: 1; }
  .hero-canvas { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0.01ms !important; animation: none !important; }
  .frame:hover .frame-img img { transform: none; }
}

/* -- Preisrechner ------------------------------------------------- */
.pick { grid-row: 6; display: inline-flex; align-items: center; gap: 0.7rem; margin-top: 1.5rem; font-size: var(--label); letter-spacing: var(--track); text-transform: uppercase; cursor: pointer; align-self: start; justify-self: start; }
.pick input { appearance: none; width: 1.1rem; height: 1.1rem; margin: 0; border: 1px solid var(--hair); background: transparent; display: grid; place-content: center; transition: border-color 0.3s var(--ease), background 0.3s var(--ease); }
.pick input[type="radio"] { border-radius: 50%; }
.pick input::before { content: ""; width: 0.5rem; height: 0.5rem; background: var(--accent-ink); transform: scale(0); transition: transform 0.2s var(--ease); }
.pick input[type="radio"]::before { border-radius: 50%; }
.pick input:checked { background: var(--accent); border-color: var(--accent); }
.pick input:checked::before { transform: scale(1); }
.pick:hover input { border-color: var(--accent); }
.pick:has(input:disabled) { opacity: 0.4; cursor: default; }
.tiers-addons .pick { grid-area: 1 / 4; justify-self: end; align-self: start; margin-top: 0.3rem; }
.tier.is-on { box-shadow: inset 0 2px 0 var(--accent); }
.tiers-addons .tier.is-on { box-shadow: inset 3px 0 0 var(--accent); padding-left: 1rem; }
.summe { position: sticky; bottom: 0; z-index: 30; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 0.5rem clamp(1.25rem, 3vw, 3rem); align-items: center; margin-top: clamp(2rem, 5vw, 4rem); padding: 1.1rem clamp(1rem, 2.5vw, 2rem); background: rgb(var(--bg-rgb) / 0.9); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.summe p { margin: 0; }
.summe-text { font-size: 0.85rem; line-height: 1.5; color: var(--body); }
.summe-hinweis { display: block; font-size: 0.72rem; color: var(--muted); }
.summe-tipp { grid-column: 1 / -1; order: -1; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 0.5rem 1.5rem; margin: -1.1rem clamp(-2rem, -2.5vw, -1rem) 0.5rem; padding: 0.8rem clamp(1rem, 2.5vw, 2rem); background: var(--accent); color: var(--accent-ink); font-size: 0.9rem; }
.summe-tipp[hidden] { display: none; }
.tipp-btn { padding: 0.45rem 0.9rem; border: 1px solid currentColor; background: transparent; color: inherit; font: inherit; font-size: var(--label); letter-spacing: var(--track); text-transform: uppercase; cursor: pointer; white-space: nowrap; transition: background 0.3s var(--ease), color 0.3s var(--ease); }
.tipp-btn:hover { background: var(--accent-ink); color: var(--accent); }
.summe-preis { font-family: var(--serif); font-variant-numeric: tabular-nums; font-size: clamp(1.6rem, 2.4vw, 2.2rem); line-height: 1; letter-spacing: -0.02em; white-space: nowrap; }
@media (max-width: 700px) {
  .summe { grid-template-columns: minmax(0, 1fr) auto; padding: 0.9rem 1rem calc(0.9rem + env(safe-area-inset-bottom)); margin-inline: calc(var(--pad) * -1); }
  body:has(#summe:not([hidden])) .mobile-cta { display: none; }
  .summe .btn { grid-column: 1 / -1; text-align: center; }
  .summe-tipp { margin: -0.9rem -1rem 0.25rem; padding: 0.8rem 1rem; }
}
.pick-zeile { grid-area: 1 / 4; display: flex; align-items: center; justify-self: end; align-self: start; margin-top: 0.3rem; }
@media (max-width: 1200px) { .tiers-addons .pick, .pick-zeile { grid-area: 3 / 1 / 4 / -1; justify-self: start; margin-top: 0.75rem; } }
.pick-zeile .pick { margin-top: 0; }
.pick-zeile:has(.stepper:not([hidden])) .pick { display: none; }
.stepper { display: inline-flex; align-items: center; gap: 0.9rem; font-size: var(--label); letter-spacing: var(--track); text-transform: uppercase; }
.stepper button { width: 1.6rem; height: 1.6rem; padding: 0; border: 1px solid var(--hair); background: transparent; color: var(--ink); font: inherit; font-size: 1rem; line-height: 1; cursor: pointer; display: grid; place-content: center; transition: border-color 0.3s var(--ease), color 0.3s var(--ease); }
.stepper button:hover { border-color: var(--accent); color: var(--accent); }
.stepper button:active { transform: translateY(1px); }
.stepper output { min-width: 5.5em; text-align: center; font-variant-numeric: tabular-nums; color: var(--ink); }

/* -- Links: Einstieg von Instagram, YouTube und TikTok (ersetzt bio.site) -- */
.links { padding-top: calc(var(--nav-h) + clamp(1.5rem, 5vw, 4rem)); padding-bottom: var(--section); }
.links-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(2rem, 4vw, 4rem) clamp(1rem, 2vw, 2rem); align-items: start; }
.links-media { grid-column: 1 / 6; margin: 0; aspect-ratio: 4 / 5; position: sticky; top: calc(var(--nav-h) + 1rem); }
.links-media img { width: 100%; height: 100%; object-fit: cover; }
.links-copy { grid-column: 7 / 13; padding-top: clamp(1rem, 6vh, 5rem); }
.links h1 { font-size: clamp(2.6rem, 5vw, 4.4rem); }
.links .btn { margin-top: 0.75rem; }
.links-list { list-style: none; margin: clamp(2.5rem, 5vw, 4rem) 0 0; padding: 0; border-top: 1px solid var(--line); }
.links-list a { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 1.5rem; padding: 1.35rem 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.links-list .t { font-family: var(--serif); font-size: clamp(1.6rem, 2.4vw, 2.1rem); line-height: 1.1; letter-spacing: -0.015em; transition: color 0.35s var(--ease); }
.links-list .s { font-size: 0.8rem; color: var(--muted); margin-top: 0.3rem; }
.links-list a::after { content: "\2197\FE0E"; grid-area: 1 / 2 / 3 / 3; align-self: center; font-size: 1.3rem; color: var(--muted); transition: transform 0.5s var(--ease), color 0.35s var(--ease); }
.links-list a[href^="/"]::after { content: "\2192"; }
.links-list a:hover .t, .links-list a:hover::after { color: var(--accent); }
.links-list a:hover::after { transform: translateX(6px); }
.links-social { display: flex; flex-wrap: wrap; gap: 0.75rem 1.75rem; margin-top: 2rem; }
.links-social a { font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; white-space: nowrap; text-decoration: none; color: var(--body); border-bottom: 1px solid var(--hair); padding-bottom: 0.4rem; transition: color 0.35s var(--ease), border-color 0.35s var(--ease); }
.links-social a:hover { color: var(--accent); border-color: var(--accent); }
@media (max-width: 900px) {
  .links-grid { grid-template-columns: 1fr; gap: 2rem; }
  .links-media { grid-column: 1; position: static; width: 58%; margin-left: auto; aspect-ratio: 4 / 5; }
  .links-copy { grid-column: 1; padding-top: 0; }
}
.links-lang { display: inline-block; margin-bottom: 1.5rem; font-size: var(--label); font-weight: 500; letter-spacing: var(--track); text-transform: uppercase; text-decoration: none; color: var(--muted); border-bottom: 1px solid var(--hair); padding-bottom: 0.4rem; transition: color 0.35s var(--ease), border-color 0.35s var(--ease); }
.links-lang:hover { color: var(--accent); border-color: var(--accent); }
