/* Gutschein: Bestellformular (/gutschein, Neugestaltung 18.10.2026 im Stil der Startseite) und Ausstell-Seite (/gutschein/ausstellen).
   Farben nur über die Tokens aus site.css, damit die Saisons (saison.css, html[data-saison]) die Seite mit umfärben. */
.gs-seite { background: var(--paper); }
.gsf [hidden], .gsm [hidden], .gsa [hidden], .gsf-danke[hidden] { display: none !important; }   /* eigene display-Regeln dürfen hidden nicht aushebeln */

/* ---------- Kopf: Grün wie das Titelbild, Logo-Schild, Karte im Licht, Info-Leiste ---------- */
.gsh { position: relative; z-index: 2; isolation: isolate; color: #fff; padding: 64px 0 0; display: flex; flex-direction: column; overflow: hidden;
  background: radial-gradient(60% 55% at 78% 34%, color-mix(in srgb, var(--sage) 45%, transparent), transparent 72%),
    radial-gradient(120% 90% at 0% 100%, rgba(var(--mist, 62,84,60), .85), transparent 70%),
    linear-gradient(165deg, var(--deep) 0%, var(--photo-green) 100%); }
.gsh .wm.gsh-wm { color: var(--gold); opacity: .1; right: auto; left: -60px; top: auto; bottom: 40px; width: 340px; transform: rotate(16deg) scaleX(-1); z-index: -1; }
.gsh-zurueck { position: absolute; top: 12px; right: 12px; z-index: 4; height: 44px; display: inline-flex; align-items: center; gap: 6px; padding: 0 16px;
  border-radius: 999px; background: rgba(255,255,255,.88); color: var(--deep); font: 700 14px/1 var(--sans); text-decoration: none; transition: background-color .2s ease; }
.gsh-zurueck:hover { background: #fff; }

/* Grafik im Kopf: Entwurf 1 „Die Karte im Licht“ (Marian 20.10.2026, aus /vorschau/gutschein-grafik; Quelle entwuerfe/gutschein-grafik/v1.*).
   Die echte Gutscheinkarte mit dem Saison-Foto steht schräg im Raum auf einer spiegelnden Fläche, dahinter ihre Rückseite in Goldfolie.
   Am Handy groß und mittig unter dem Logo-Schild, ab 760 px mittig über der Überschrift (Platz und Kopfhöhe unten im Block ab 760 px).
   Prüfung: entwuerfe/gutschein-grafik/test-karte-im-licht.cjs */
.gg { position: relative; z-index: 1; align-self: center; flex: none; width: min(calc(100% - 40px), 360px); margin: var(--gg-mt, 60px) auto 0;
  aspect-ratio: var(--gg-ar); container-type: inline-size; }
/* Foto der echten Gutscheinkarte, je Saison (public/img/gutschein/, gebaut von entwuerfe/gutschein/foto-bauen.mjs) */
.gg { --gg-foto: url("/img/gutschein/foto-normal.jpg"); }
html[data-saison="herbst"] .gg { --gg-foto: url("/img/gutschein/foto-herbst.jpg"); }
html[data-saison="weihnachten"] .gg { --gg-foto: url("/img/gutschein/foto-weihnachten.jpg"); }
html[data-saison="fruehling"] .gg { --gg-foto: url("/img/gutschein/foto-fruehling.jpg"); }
html[data-saison="sommer"] .gg { --gg-foto: url("/img/gutschein/foto-sommer.jpg"); }
html[data-saison="muttertag"] .gg { --gg-foto: url("/img/gutschein/foto-muttertag.jpg"); }
html[data-saison="valentinstag"] .gg { --gg-foto: url("/img/gutschein/foto-valentinstag.jpg"); }

/* Material: Papierkorn (einmal gerastert, kein Filter je Bild), Goldfolie aus den Saisonfarben, Papier mit Licht von oben links */
.gg {
  --gg-korn: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .32 0 0 0 0 .25 0 0 0 0 .14 0 0 0 .55 -.12'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --gg-gold-h: color-mix(in srgb, var(--gold) 55%, #fff);
  --gg-gold-m: color-mix(in srgb, var(--gold) 72%, var(--gold-d));
  --gg-gold-t: color-mix(in srgb, var(--gold) 45%, var(--gold-d));
  --gg-folie: linear-gradient(118deg, var(--gg-gold-t) 0%, var(--gg-gold-h) 18%, var(--gold) 32%, var(--gg-gold-m) 48%, var(--gg-gold-h) 64%, var(--gold) 76%, var(--gg-gold-t) 100%);
  --gg-papier: linear-gradient(135deg, color-mix(in srgb, var(--paper) 70%, #fff) 0%, var(--paper) 45%, color-mix(in srgb, var(--paper) 88%, var(--gold-d)) 100%);
}
.gg-feder { display: block; aspect-ratio: 382 / 187; background: currentColor; -webkit-mask: url("/img/feder.png") center / contain no-repeat; mask: url("/img/feder.png") center / contain no-repeat; }
.gg-wort { display: block; aspect-ratio: 382 / 248; background: currentColor; -webkit-mask: url("/img/logo.png") center bottom / 100% auto no-repeat; mask: url("/img/logo.png") center bottom / 100% auto no-repeat; }
.gg * { box-sizing: border-box; }
/* Warmes Licht hinter der Grafik, damit sie aus dem dunklen Kopf heraustritt */
.gg::before { content: ""; position: absolute; z-index: -1; inset: -34% -30%; pointer-events: none;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--gold) 30%, transparent) 0%, color-mix(in srgb, var(--gold) 12%, transparent) 55%, transparent 100%); }
/* ---------- 1 · Die Karte im Licht: die echte Gutscheinkarte steht schräg im Raum auf einer spiegelnden Fläche, mit Goldschnitt und Spiegelbild;
   dahinter ihre Rückseite in Goldfolie mit eingeprägtem Logo ---------- */
.gsh { --gg-ar: 1.4; --gg-mt: 84px; --gg-wd: min(36vw, 500px); }
/* ohne Saison trägt das Logo-Schild die Feder und ist am Handy 30 px höher (155 statt 126 px): Grafik entsprechend tiefer */
html:not([data-saison]) .gsh { --gg-mt: 114px; }
.gg1-raum { position: absolute; inset: 0; perspective: 240cqw; }
/* Boden: heller Lichtfleck und Kontaktschatten unter der Karte */
.gg1-boden { position: absolute; left: 2cqw; right: 2cqw; top: 50cqw; height: 18cqw; border-radius: 50%;
  background: radial-gradient(50% 50% at 50% 40%, color-mix(in srgb, var(--gold) 26%, transparent) 0%, transparent 100%); }
.gg1-boden::after { content: ""; position: absolute; left: 22%; right: 8%; top: 22%; height: 2.6cqw; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(0,0,0,.55), rgba(0,0,0,0)); }
/* Karte: steht, um die senkrechte Achse gedreht; Goldschnitt aus drei Lagen dahinter */
.gg1-karte { position: absolute; left: 20cqw; top: 9cqw; width: 70cqw; aspect-ratio: 210 / 148; transform-style: preserve-3d; transform: rotateY(-24deg); transform-origin: 50% 100%; }
.gg1-kante { position: absolute; inset: 0; border-radius: 1.6cqw; background: var(--gg-folie); }
.gg1-kante.k1 { transform: translateZ(-.4cqw); } .gg1-kante.k2 { transform: translateZ(-.8cqw); }
.gg1-kante.k3 { transform: translateZ(-1.2cqw); background: var(--gg-gold-t); box-shadow: -3cqw 3cqw 6cqw -2cqw rgba(0,0,0,.55); }
.gg1-flaeche { position: absolute; inset: 0; border-radius: 1.6cqw; overflow: hidden; container-type: inline-size;
  background: var(--gg-korn), var(--gg-papier); box-shadow: inset 0 0 0 .3cqw color-mix(in srgb, var(--gold) 60%, #fff); }
.gg1-bild { position: absolute; left: 5cqw; top: 5cqw; bottom: 5cqw; width: 55cqw; }
.gg1-bild::before { content: ""; position: absolute; inset: -1.8cqw; border: .32cqw solid color-mix(in srgb, var(--gold-d) 55%, transparent); border-radius: 1.4cqw; }
.gg1-foto { position: absolute; inset: 0; border-radius: .6cqw; background: var(--gg-foto) center / 100% 100% no-repeat;
  box-shadow: inset 0 0 0 .2cqw rgba(0,0,0,.06), 0 .3cqw .8cqw -.2cqw rgba(60,40,20,.35); }
.gg1-text { position: absolute; right: 0; top: 0; bottom: 0; width: 40cqw; padding: 0 4cqw 0 2cqw; display: grid; align-content: center; justify-items: center; gap: 2cqw; color: var(--deep); }
.gg1-text .gg-feder { width: 15cqw; color: var(--gold-d); }
.gg1-text b { font: 500 8.6cqw/1 var(--serif); letter-spacing: -.01em; text-shadow: 0 .12cqw 0 rgba(255,255,255,.8), 0 -.08cqw 0 rgba(0,0,0,.12); }
.gg1-text i { width: 20cqw; height: .5cqw; border-radius: 1cqw; background: var(--gg-folie); }
.gg1-text small { font: 800 2.35cqw/1.3 var(--sans); letter-spacing: .2em; text-transform: uppercase; color: var(--gold-d); text-align: center; }
/* Licht: von links oben, ein breiter Glanz quer über Papier und Foto */
.gg1-licht { position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(105deg, rgba(255,255,255,.5) 0%, rgba(255,255,255,0) 26%, rgba(255,255,255,0) 40%, rgba(255,255,255,.3) 47%, rgba(255,255,255,0) 55%, rgba(0,0,0,0) 72%, rgba(40,25,10,.18) 100%); }
/* Spiegelbild: dieselbe Karte, an der Unterkante gespiegelt; nur das obere Drittel ist zu sehen und läuft nach unten aus */
.gg1-spiegelung { position: absolute; left: 0; right: 0; top: calc(100% + .4cqw); height: 32%; overflow: hidden; }
.gg1-spiegel { inset: 0 0 auto; height: 312.5%; transform: scaleY(-1); opacity: .34;
  -webkit-mask: linear-gradient(to top, #000 0%, rgba(0,0,0,.3) 14%, transparent 32%); mask: linear-gradient(to top, #000 0%, rgba(0,0,0,.3) 14%, transparent 32%); }

/* Rückseite: Goldfolie, Rautenmuster zum Rand hin, Feder und Wortmarke eingeprägt; steht weiter hinten, andersherum gedreht */
.gg1-hinten { position: absolute; left: 5cqw; top: 3cqw; width: 54cqw; aspect-ratio: 210 / 148; transform-style: preserve-3d; transform: rotateY(30deg); transform-origin: 50% 100%; }
.gg1-gold { position: absolute; inset: 0; border-radius: 1.6cqw; overflow: hidden; container-type: inline-size; background: var(--gg-folie);
  box-shadow: inset 0 0 0 .4cqw rgba(255,255,255,.45), inset 0 0 0 1cqw color-mix(in srgb, var(--gold-d) 25%, transparent); }
.gg1-gold:not(.gg1-spiegel) { box-shadow: inset 0 0 0 .4cqw rgba(255,255,255,.45), inset 0 0 0 1cqw color-mix(in srgb, var(--gold-d) 25%, transparent), 2cqw 3cqw 5cqw -2cqw rgba(0,0,0,.5); }
.gg1-muster { position: absolute; inset: 0; opacity: .24; mix-blend-mode: multiply;
  background: repeating-linear-gradient(45deg, var(--gold-d) 0 .2cqw, transparent .2cqw 3cqw), repeating-linear-gradient(-45deg, var(--gold-d) 0 .2cqw, transparent .2cqw 3cqw);
  -webkit-mask: radial-gradient(closest-side, transparent 50%, #000 85%); mask: radial-gradient(closest-side, transparent 50%, #000 85%); }
.gg1-zeichen { position: absolute; left: 3cqw; top: 0; bottom: 0; width: 31cqw; display: grid; align-content: center; justify-items: center; gap: 2.6cqw; }
.gg1-zeichen > * { width: 23cqw; background: color-mix(in srgb, var(--gold-d) 70%, var(--gold));
  filter: drop-shadow(.3cqw .3cqw 0 rgba(255,255,255,.6)) drop-shadow(-.2cqw -.2cqw 0 rgba(0,0,0,.22)); }

@media (prefers-reduced-motion: no-preference) {
  .gg1-karte { animation: gg1-drehen 10s ease-in-out 1.4s infinite alternate; }
  @keyframes gg1-drehen { to { transform: rotateY(-14deg); } }
}

.gsh-claim { padding: 24px 20px 20px; }
.gsh-claim h1 { font-size: 40px; }
/* Leiste ohne Überschriften (Marian 18.10.2026): größere Symbole tragen die Bedeutung */
.gsh .facts { margin-top: 4px; }
.gsh .facts .ic { width: 42px; height: 42px; } .gsh .facts svg { width: 22px; height: 22px; }
.gsh .facts .val { font: 500 15.5px/1.15 var(--serif); }   /* Leiste in der Schrift der Überschriften (Marian 18.10.2026) */

/* ---------- Hauptteil: Creme wie die Abschnitte der Startseite, Federn im Hintergrund ---------- */
.gsm { position: relative; overflow: clip; background: var(--cream); padding: 44px 16px 72px; }
.gsm > .wm { top: 60px; }
.gsm .wm.gsm-wm2 { top: auto; bottom: 120px; right: -70px; width: 260px; transform: rotate(-8deg); opacity: .6; }
.gsm-in { position: relative; max-width: 1140px; margin: 0 auto; display: grid; gap: 26px; }
.gsm-kopf { display: grid; gap: 22px; text-align: center; justify-items: center; }
.gsm-kopf h2 { font-size: 34px; color: var(--deep); }

.gsf-form { display: grid; gap: 22px; align-items: start; }
.gsf-felder { display: grid; gap: 18px; min-width: 0; }

/* Schritte: Karte mit goldener Ziffer; ab Tablet läuft ein goldener Faden durch die Ziffern und füllt sich mit jedem fertigen Schritt */
.gsf-fs { position: relative; margin: 0; padding: 22px 18px 20px; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); display: grid; gap: 16px; min-width: 0;
  box-shadow: 0 22px 40px -34px rgba(40,50,30,.45); }
.gsf-fs legend { float: left; width: 100%; margin: 0 0 4px; padding: 0; font: 500 26px/1.15 var(--serif); color: var(--deep); display: flex; align-items: center; gap: 12px; text-wrap: balance; }
.gsf-fs legend + * { clear: both; }
.gsf-n { width: 36px; height: 36px; border-radius: 50%; flex: none; display: grid; place-items: center; font: 600 19px/1 var(--serif);
  background: var(--deep); color: var(--gold); box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--gold) 70%, transparent); transition: background-color .45s ease, color .45s ease, box-shadow .45s ease; }
.gsf-fs.ist-fertig .gsf-n { background: var(--gold); color: var(--deep); box-shadow: none; animation: fx-pop .55s cubic-bezier(.3,1.5,.5,1); }
@keyframes fx-pop { 0% { scale: .82; } 60% { scale: 1.1; } 100% { scale: 1; } }
@media (min-width: 640px) {
  .gsf-fs { padding: 26px 26px 24px 82px; }
  .gsf-fs legend { position: static; }
  .gsf-n { position: absolute; left: 24px; top: 22px; width: 40px; height: 40px; font-size: 21px; z-index: 1; }
  .gsf-fs:not(:last-child)::after { content: ""; position: absolute; left: 43px; top: 62px; bottom: -40px; width: 2px; border-radius: 2px; z-index: 1;
    background: linear-gradient(var(--gold) 0 0) 0 0 / 100% var(--fl, 0%) no-repeat, color-mix(in srgb, var(--gold-d) 22%, transparent); transition: --fl .6s ease; }
  .gsf-fs.ist-fertig:not(:last-child)::after { --fl: 100%; }
}
@property --fl { syntax: "<percentage>"; inherits: false; initial-value: 0%; }

.gsf-feld { display: grid; gap: 7px; min-width: 0; }
.gsf-zwei { display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 640px) { .gsf-zwei { grid-template-columns: 1fr 1fr; } .gsf-zwei--plz { grid-template-columns: 140px 1fr; } .gsf-in--halb { max-width: calc(50% - 7px); } }
.gsf-lbl { font: 700 11.5px/1.2 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--gold-d); }
.gsf-adr { gap: 10px; } .gsf-adr > div { display: grid; gap: 5px; }   /* Rechnungsadresse: Gruppe unter einer Überschrift */
.gsf-adr .gsf-zwei > div { display: grid; gap: 5px; }
.gsf-sub { font: 600 13px/1.2 var(--sans); color: var(--muted); }
.gsf-req { color: var(--green); } .gsf-opt { font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--muted); }
.gsf-in { width: 100%; font: 500 16px/1.3 var(--sans); color: var(--ink); background: #fff; border: 1.5px solid var(--line); border-radius: 12px; padding: 12px 14px; min-height: 50px;
  transition: border-color .2s ease, box-shadow .2s ease; }
.gsf-in::placeholder { color: color-mix(in srgb, var(--muted) 70%, transparent); }
.gsf-in:hover { border-color: color-mix(in srgb, var(--gold-d) 45%, var(--line)); }
.gsf-in:focus-visible { outline: none; border-color: var(--deep); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sage) 45%, transparent); }
.gsf-in[aria-invalid="true"] { border-color: #b4553c; }
textarea.gsf-in { resize: vertical; min-height: 64px; }
.gsf-hint { margin: 0; font-size: 14.5px; color: var(--muted); } .gsf-hint a { color: var(--green); }
.gsf-auf { animation: gsf-auf .45s cubic-bezier(.2,.7,.2,1) both; }
@keyframes gsf-auf { from { opacity: 0; translate: 0 -8px; } }

/* Art: zwei große Kacheln, gewählt = Dunkelgrün mit Gold wie die Filter-Knöpfe im Regal */
.gsf-art { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.gsf-artk { position: relative; display: grid; grid-template-columns: auto minmax(0,1fr); gap: 12px; align-items: center; padding: 14px; border: 1.5px solid var(--line); border-radius: 16px;
  background: #fff; cursor: pointer; transition: background-color .3s ease, border-color .3s ease, color .3s ease, translate .25s ease; }
.gsf-artk input, .gsf-karte input, .gsf-pill input, .gsp-pos input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.gsf-arti { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--cream); color: var(--deep); font: 600 24px/1 var(--serif); transition: background-color .3s ease; }
.gsf-arti svg { width: 24px; height: 24px; }
.gsf-artk span:last-child { display: grid; gap: 2px; min-width: 0; }
.gsf-artk b { font: 600 20px/1.1 var(--serif); color: var(--deep); } .gsf-artk small { font-size: 13px; line-height: 1.3; color: var(--muted); }
.gsf-artk:hover { border-color: color-mix(in srgb, var(--gold-d) 45%, var(--line)); translate: 0 -1px; }
.gsf-artk:has(input:checked) { background: var(--deep); border-color: var(--deep); }
.gsf-artk:has(input:checked) b { color: var(--gold); } .gsf-artk:has(input:checked) small { color: color-mix(in srgb, #fff 78%, var(--deep)); }
.gsf-artk:has(input:checked) .gsf-arti { background: var(--gold); }
.gsf-artk:has(input:focus-visible), .gsf-karte:has(input:focus-visible), .gsf-pill:has(input:focus-visible), .gsp-pos:has(input:focus-visible) { outline: 3px solid var(--sage); outline-offset: 2px; }
@media (max-width: 479px) { .gsf-artk { grid-template-columns: 1fr; justify-items: start; gap: 10px; } .gsf-artk b { font-size: 19px; } }

/* Betrag */
.gsf-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.gsf-chip { font: 600 19px/1 var(--serif); color: var(--deep); background: #fff; border: 1.5px solid var(--line); border-radius: 999px; padding: 12px 18px; min-height: 48px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px; transition: background-color .2s ease, border-color .2s ease, translate .2s ease; }
.gsf-chip:hover { translate: 0 -1px; border-color: color-mix(in srgb, var(--gold-d) 45%, var(--line)); }
.gsf-chip.is-on { background: var(--gold); border-color: var(--gold); }
.gsf-chip:focus-visible, .gsf-chip:has(input:focus-visible) { outline: 3px solid var(--sage); outline-offset: 2px; }
.gsf-chip--frei { font: 600 15px/1 var(--sans); }
.gsf-chip--frei input { width: 64px; font: 600 19px/1 var(--serif); border: 0; border-bottom: 1.5px solid var(--deep); background: transparent; color: var(--ink); padding: 2px 4px; text-align: right; }
.gsf-chip--frei input:focus { outline: none; }

/* Paket aus der Preisliste: gleicher Aufbau wie „Die komplette Preisliste“, jede Zeile zum Antippen */
.gsp-feld { gap: 12px; }
.gsp.acc summary { padding: 15px 2px; }
.gsp-anz { display: none; font: 700 11px/1 var(--sans); letter-spacing: .06em; background: var(--deep); color: var(--gold); border-radius: 99px; padding: 5px 9px; white-space: nowrap; }
.gsp-anz.is-an { display: inline-block; animation: fx-pop .45s cubic-bezier(.3,1.5,.5,1); }
.gsp.acc ul { gap: 4px; margin: 0 -10px 14px; padding: 0; }
.gsp.acc li { display: block; border-radius: 12px; transition: background-color .25s ease, box-shadow .25s ease; }
.gsp-pos { position: relative; display: grid; grid-template-columns: minmax(0,1fr) auto 32px; gap: 2px 14px; align-items: center; padding: 10px 10px; border-radius: 12px; cursor: pointer;
  transition: background-color .25s ease, box-shadow .25s ease; }
.gsp-pos:hover { background: color-mix(in srgb, var(--cream) 70%, #fff); }
.gsp-n { display: block; } .gsp-n small { display: block; color: var(--muted); font-size: 13.5px; }
.gsp-pos .pr { font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.gsp-x { position: relative; width: 32px; height: 32px; border-radius: 50%; border: 1.5px solid var(--deep); transition: background-color .25s ease, border-color .25s ease, rotate .35s cubic-bezier(.3,1.4,.5,1); }
.gsp-x::before, .gsp-x::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.8px; margin: -.9px 0 0 -6px; border-radius: 2px; background: var(--deep); transition: all .3s ease; }
.gsp-x::after { rotate: 90deg; }
.gsp.acc li:has(input:checked) { background: color-mix(in srgb, var(--gold) 38%, var(--paper)); box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--gold-d) 35%, transparent); }
.gsp.acc li:has(input:checked) .gsp-pos:hover { background: transparent; }
/* Anzahl 1–10 (18.10.2026): nur bei gewählter Behandlung, unter dem Namen */
.gsp-menge { display: flex; align-items: center; gap: 8px; padding: 0 10px 11px; margin-top: -3px; }
.gsp.acc li:not(:has(input:checked)) .gsp-menge { display: none; }
.gsp-menge-l { font: 700 10.5px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--gold-d); margin-right: 2px; }
.gsp-menge button { width: 32px; height: 32px; border-radius: 50%; border: 1.5px solid var(--deep); background: var(--paper); color: var(--deep); font: 600 19px/1 var(--sans); cursor: pointer;
  display: grid; place-items: center; padding: 0 0 2px; transition: background-color .2s ease, opacity .2s ease; }
.gsp-menge button:hover:not(:disabled) { background: #fff; }
.gsp-menge button:disabled { opacity: .3; cursor: default; }
.gsp-menge button:focus-visible { outline: 3px solid var(--sage); outline-offset: 2px; }
.gsp-zahl-n { min-width: 1.6em; text-align: center; font: 600 21px/1 var(--serif); color: var(--deep); font-variant-numeric: tabular-nums; }
.gsp-pos:has(input:checked) .gsp-x { background: var(--deep); border-color: var(--deep); rotate: 360deg; }
/* Haken: aus dem Plus werden zwei kurze Striche */
.gsp-pos:has(input:checked) .gsp-x::before { width: 6px; margin: 1px 0 0 -6px; rotate: 45deg; background: var(--gold); }
.gsp-pos:has(input:checked) .gsp-x::after { width: 11px; margin: -1px 0 0 -2.5px; rotate: -50deg; background: var(--gold); }

/* „Ihr Paket“: bleibt beim Durchsehen der Liste unten im Bild */
.gsp-paket { position: sticky; bottom: 10px; z-index: 5; display: grid; gap: 8px; padding: 14px 16px; border-radius: 16px; background: var(--cream); border: 1px solid var(--line);
  box-shadow: 0 16px 34px -20px rgba(40,50,30,.5); transition: background-color .3s ease; }
.gsp-paket.is-voll { background: var(--deep); border-color: var(--deep); color: #fff; }
.gsp-kopf { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.gsp-paket.is-voll .gsf-lbl { color: var(--gold); }
.gsp-zahl { font-size: 13px; font-weight: 700; color: color-mix(in srgb, #fff 80%, var(--deep)); }
.gsp-leer { margin: 0; font-size: 14px; color: var(--muted); }
.gsp-liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; max-height: 160px; overflow: auto; overscroll-behavior: contain; }
.gsp-liste li { display: grid; grid-template-columns: minmax(0,1fr) auto 30px; gap: 10px; align-items: center; font-size: 14.5px; padding: 3px 0; }
.gsp-liste li.is-neu { animation: gsp-rein .4s cubic-bezier(.2,.7,.2,1) both; }
@keyframes gsp-rein { from { opacity: 0; translate: 0 8px; } }
.gsp-liste .pr { font-variant-numeric: tabular-nums; font-weight: 600; }
.gsp-weg { width: 30px; height: 30px; border-radius: 50%; border: 0; background: rgba(255,255,255,.12); color: #fff; font: 600 18px/1 var(--sans); cursor: pointer; }
.gsp-weg:hover { background: rgba(255,255,255,.24); }
.gsp-summe { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; border-top: 1px solid rgba(255,255,255,.2); padding-top: 9px; font-size: 14px; color: color-mix(in srgb, #fff 80%, var(--deep)); }
.gsp-summe b { font: 600 26px/1 var(--serif); color: var(--gold); font-variant-numeric: tabular-nums; }

/* Anlass als Knöpfe */
.gsf-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.gsf-pill { position: relative; cursor: pointer; }
.gsf-pill span { display: inline-block; font: 600 14px/1 var(--sans); color: var(--deep); background: #fff; border: 1.5px solid var(--line); border-radius: 999px; padding: 11px 15px;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease; }
.gsf-pill:hover span { border-color: color-mix(in srgb, var(--gold-d) 45%, var(--line)); }
.gsf-pill:has(input:checked) span { background: var(--deep); color: var(--gold); border-color: var(--deep); }

/* Zustellung und Bezahlung: Kacheln mit Symbol im goldenen Kreis wie in der Info-Leiste */
.gsf-wahl { display: grid; grid-template-columns: 1fr; gap: 10px; }
@media (min-width: 640px) { .gsf-wahl { grid-template-columns: 1fr 1fr; } }
.gsf-karte { position: relative; display: grid; grid-template-columns: auto minmax(0,1fr); gap: 12px; align-items: center; padding: 13px 14px; border: 1.5px solid var(--line); border-radius: 14px;
  background: #fff; cursor: pointer; min-width: 0; transition: background-color .25s ease, border-color .25s ease, box-shadow .25s ease; }
.gsf-karte:hover { border-color: color-mix(in srgb, var(--gold-d) 45%, var(--line)); }
.gsf-ic { width: 38px; height: 38px; border-radius: 50%; background: var(--cream); color: var(--deep); display: grid; place-items: center; transition: background-color .25s ease; }
.gsf-ic svg { width: 19px; height: 19px; }
.gsf-karte > span:last-child { display: grid; gap: 2px; min-width: 0; }
.gsf-karte b { font: 700 15px/1.25 var(--sans); color: var(--ink); } .gsf-karte small { font-size: 13px; color: var(--muted); line-height: 1.3; }
.gsf-karte:has(input:checked) { border-color: var(--deep); box-shadow: inset 0 0 0 1px var(--deep); background: color-mix(in srgb, var(--gold) 22%, #fff); }
.gsf-karte:has(input:checked) .gsf-ic { background: var(--gold); }
.gsf-karte:has(input:checked)::after { content: ""; position: absolute; right: 12px; top: 12px; width: 9px; height: 5px; border-left: 2px solid var(--deep); border-bottom: 2px solid var(--deep); rotate: -45deg; }
.gsf-karte.is-aus { opacity: .45; cursor: not-allowed; }

.gsf-err { margin: 0; font-size: 14px; color: #8f3f28; font-weight: 600; } .gsf-err[hidden] { display: none; }
.gsf-err--send { background: #fbe9e2; border: 1px solid #e7b9a9; border-radius: 12px; padding: 12px 14px; }
.gsf-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Vorschau: die Karte, wie sie ankommt, darunter Summe und Senden; am Computer mitlaufend ---------- */
.gss { display: grid; gap: 22px; }
.gss-karte { position: relative; padding: 6px 4px; }
/* Karte im Stil „Gerahmt“ (B3·4, Marians Wahl 18.10.2026, Vorlage public/vorschau/gutschein-karte-foto.html, Variante 4): Foto der Behandlung mit Saison-Nebel,
   Logo und Saison-Schmuck (fertig gebaut: public/img/gutschein/foto-<saison>.jpg, entwuerfe/gutschein/foto-bauen.mjs), feine Linie ums Foto, rechts der Text.
   Alle Maße in cqw wie im PDF (src/worker.js pdfGutschein), Schrift wie die Website (Crimson Pro Regular, Nunito Sans). */
.gkb-w { container-type: inline-size; width: 100%; rotate: -1.5deg; transition: rotate .5s ease; }
.gss-karte:hover .gkb-w { rotate: 0deg; }
.gkb { --gkb-linie: color-mix(in srgb, var(--gold-d) 48%, transparent); --gkb-haar: .14cqw; position: relative; aspect-ratio: 210 / 148; width: 100%; border-radius: 6px; overflow: hidden;
  background: var(--paper); color: var(--ink); box-shadow: 0 30px 50px -30px rgba(30,45,30,.65); }
.gkb-bild { position: absolute; left: 5cqw; top: 5cqw; bottom: 5cqw; width: 55%; }
.gkb-bild::before { content: ""; position: absolute; inset: -1.6cqw; border: var(--gkb-haar) solid var(--gkb-linie); border-radius: 1.3cqw; }
.gkb-foto { position: absolute; inset: 0; border-radius: .5cqw; background: url("/img/gutschein/foto-normal.jpg") center / 100% 100% no-repeat; }
html[data-saison="weihnachten"] .gkb-foto { background-image: url("/img/gutschein/foto-weihnachten.jpg"); }
html[data-saison="herbst"] .gkb-foto { background-image: url("/img/gutschein/foto-herbst.jpg"); }
html[data-saison="fruehling"] .gkb-foto { background-image: url("/img/gutschein/foto-fruehling.jpg"); }
html[data-saison="muttertag"] .gkb-foto { background-image: url("/img/gutschein/foto-muttertag.jpg"); }
html[data-saison="valentinstag"] .gkb-foto { background-image: url("/img/gutschein/foto-valentinstag.jpg"); }
html[data-saison="sommer"] .gkb-foto { background-image: url("/img/gutschein/foto-sommer.jpg"); }
.gkb-karte { position: absolute; right: 0; top: 0; bottom: 0; width: 35%; min-width: 0; padding: 6.4cqw 5cqw 4.8cqw 0; display: grid; grid-template-rows: auto 1fr auto; gap: 1.6cqw; }
.gkb-titel { font: 400 6.4cqw/1 var(--serif); color: var(--deep); }
.gkb-sub { font: 700 1.3cqw/1 var(--sans); letter-spacing: .24em; text-transform: uppercase; color: var(--gold-d); margin-top: 1.5cqw; display: flex; align-items: center; gap: 1.4cqw; }
.gkb-sub::before { content: ""; width: 5cqw; height: var(--gkb-haar); background: var(--gkb-linie); flex: none; }
.gkb-sub[hidden] { display: none; }
.gkb-mitte { display: grid; align-content: center; gap: .9cqw; min-width: 0; }
.gkb-wert { font: 400 7.2cqw/1 var(--serif); font-variant-numeric: lining-nums; color: var(--deep); justify-self: start; max-width: 100%; overflow-wrap: anywhere;
  padding-bottom: 1.3cqw; margin-bottom: .6cqw; border-bottom: var(--gkb-haar) solid var(--gkb-linie); }
.gkb-wert--beh { font-size: 3.7cqw; line-height: 1.15; }
.gkb-wert--viele { font-size: 2.8cqw; line-height: 1.15; }
.gkb-wert--leer { opacity: .55; font-style: italic; }
.gkb-fuer { font: 600 2.5cqw/1.3 var(--sans); } .gkb-von { font: 400 2cqw/1.3 var(--sans); color: var(--muted); }
.gkb-msg { font: italic 400 2.4cqw/1.35 var(--serif); color: var(--muted); margin-top: .3cqw; overflow-wrap: anywhere; }
.gkb-fuss { font: 400 1.25cqw/1.65 var(--sans); color: var(--muted); border-top: var(--gkb-haar) solid var(--gkb-linie); padding-top: 1.2cqw; }
.gk-leer { color: var(--muted); font-weight: 500; }
.gss-box { display: grid; gap: 14px; padding: 20px 18px; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); box-shadow: 0 22px 40px -34px rgba(40,50,30,.45); }
.gsf-summe { display: grid; gap: 6px; font-size: 15px; }
.gsf-summe p { margin: 0; display: flex; justify-content: space-between; gap: 12px; color: var(--muted); }
.gsf-summe p span:last-child { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--ink); white-space: nowrap; }
.gsf-summe .gsf-gesamt { border-top: 1px solid var(--line); padding-top: 9px; margin-top: 3px; align-items: baseline; color: var(--deep); font-weight: 700; }
.gsf-summe .gsf-gesamt b { font: 600 28px/1 var(--serif); color: var(--deep); font-variant-numeric: tabular-nums; }
.gsf-summe-leer { font-size: 14px; }
.gsf-senden { width: 100%; padding: 15px 24px; font-size: 16px; }
.gsf-senden:disabled { opacity: .7; cursor: wait; transform: none; }
.gsf-klein { margin: 0; font-size: 13px; line-height: 1.5; color: var(--muted); scroll-margin-top: 30vh; } .gsf-klein a { color: var(--green); }

@media (min-width: 640px) and (max-width: 1023px) {
  .gss { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); align-items: center; }
}

/* ---------- Danke ---------- */
.gsf-danke { position: relative; max-width: 640px; margin: 0 auto; display: grid; gap: 12px; justify-items: center; text-align: center; padding: 36px 26px 32px;
  border: 1px solid var(--line); border-radius: 22px; background: var(--paper); box-shadow: 0 30px 60px -40px rgba(40,50,30,.55); animation: gsf-auf .6s cubic-bezier(.2,.7,.2,1) both; }
.gsf-danke-feder { width: 96px; aspect-ratio: 382/187; background: var(--gold-d); -webkit-mask: url("/img/feder.png") center / contain no-repeat; mask: url("/img/feder.png") center / contain no-repeat;
  animation: drift 2.9s cubic-bezier(.33,.1,.3,1) both; }
.gsf-danke h2 { margin: 0; color: var(--deep); font-size: 34px; } .gsf-danke p { margin: 0; }
.gsf-nr { background: var(--gold); color: var(--deep); padding: 2px 8px; border-radius: 6px; font-weight: 700; }
.gsf-danke:focus { outline: none; }
.gs-seite .foot { margin-top: 0; }

/* ---------- Tablet und Computer ---------- */
@media (min-width: 760px) {
  .gsh { display: block; height: 560px; padding: 0; overflow: visible; }
  .gsh .wm.gsh-wm { width: 460px; left: -80px; bottom: 30px; }
  .gsh-zurueck { top: 22px; right: 4%; }
  /* Kopf (Marian 18.10.2026, „harmonischer“): Logo-Schild links wie auf der Startseite, Gutscheinkarten mittig, „Freude verschenken“ mittig darunter.
     Höhe wächst mit der Größe der Grafik (--gg-h), damit der Abstand zur Leiste auf jeder Breite gleich bleibt. */
  /* Karte im Licht (20.10.2026): höchstens so breit, dass links das Logo-Schild (samt Saison-Schmuck) und rechts „Startseite“ frei bleiben */
  .gsh { --gg-w: min(var(--gg-wd, min(32vw, 420px)), calc(82vw - 2 * clamp(170px, 18vw, 220px) - 64px)); --gg-h: calc(var(--gg-w) / var(--gg-ar));
    --h1: clamp(44px, 5vw, 64px); height: calc(58px + var(--gg-h) + 46px + var(--h1) * 1.05 + 120px); }
  .gg { position: absolute; left: 50%; top: 58px; width: var(--gg-w); margin: 0; translate: -50% 0; }
  .gsh-claim.claim { left: 0; right: 0; top: calc(58px + var(--gg-h) + 46px); bottom: auto; width: auto; padding: 0 20px; text-align: center; justify-items: center; }
  .gsh-claim h1 { font-size: var(--h1); line-height: 1.05; }
  .gsh .facts .val { font-size: 19px; }
  .gsh .facts .ic { width: 48px; height: 48px; margin-bottom: 4px; } .gsh .facts svg { width: 24px; height: 24px; }
  .gsm { padding: 128px 6% 88px; }
  .gsm-kopf h2 { font-size: 44px; }
  .gsm > .wm { width: 460px; }
}
@media (min-width: 1024px) {
  .gsf-form { grid-template-columns: minmax(0, 1fr) minmax(320px, 380px); gap: 34px; }
  .gss { position: sticky; top: 24px; }
  .gsm-kopf { margin-bottom: 6px; }
}
@media (prefers-reduced-motion: reduce) {
  .gg1-karte { animation: none !important; }
}
/* ---------- Ausstellen (Institut): Gutschein-Karte zum Drucken, als PDF oder per E-Mail ---------- */
.gsa { max-width: 1040px; margin: 0 auto; padding: 32px 20px 72px; display: grid; gap: 22px; }
.gsa-kopf h1 { font-size: clamp(30px, 4vw, 40px); color: var(--deep); margin: 0 0 4px; } .gsa-kopf p { margin: 0; color: var(--muted); }
.gsa-grid { display: grid; grid-template-columns: 1fr; gap: 22px; align-items: start; }
@media (min-width: 900px) { .gsa-grid { grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr); } }
.gsa-seite { display: grid; gap: 12px; }
.gsa-tools { display: grid; gap: 12px; padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: var(--cream); }
.gsa-tools h2 { margin: 0; font-size: 22px; color: var(--deep); }
.gsa-tools .btn { justify-content: center; }
.gsa-tools .btn-line { border-color: var(--deep); color: var(--deep); }
.gsa-tools dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; font-size: 14px; } .gsa-tools dt { color: var(--gold-d); font-weight: 700; } .gsa-tools dd { margin: 0; white-space: pre-line; }
.gsa-status { margin: 0; font-size: 14px; color: var(--green); font-weight: 600; min-height: 1.4em; }
.gsa-hinweis { margin: 0; font-size: 13.5px; color: var(--muted); }
/* Die Karte: A5 quer (210 × 148 mm), skaliert auf die Breite */
.gk { aspect-ratio: 210 / 148; width: 100%; max-width: 760px; box-sizing: border-box; background: var(--paper); border: 3px solid var(--deep); border-radius: 22px; padding: 5% 6%; display: grid; grid-template-rows: auto 1fr auto; text-align: center; position: relative; overflow: hidden; container-type: inline-size; }
.gk::before { content: ""; position: absolute; inset: 10px; border: 1px solid var(--gold); border-radius: 14px; pointer-events: none; }
.gk-kopf { display: grid; justify-items: center; gap: 2cqw; }
.gk-kopf .feather { width: 12cqw; aspect-ratio: 382/187; background: var(--gold-d); -webkit-mask: url("/img/feder.png") center / contain no-repeat; mask: url("/img/feder.png") center / contain no-repeat; animation: none; margin: 0; }
.gk-titel { font: 600 8.5cqw/1 var(--serif); color: var(--deep); }
.gk-sub { font: 700 2.1cqw/1 var(--sans); letter-spacing: .18em; text-transform: uppercase; color: var(--gold-d); }
.gk-mitte { display: grid; align-content: center; justify-items: center; gap: 2.4cqw; padding: 1cqw 0; }
.gk-wert { display: inline-block; background: var(--gold); color: var(--deep); font: 600 7cqw/1 var(--serif); padding: 2.2cqw 4cqw; border-radius: 2cqw; max-width: 90%; }
.gk-wert--beh { font-size: 4.4cqw; line-height: 1.25; } .gk-wert--viele { font-size: 3.1cqw; line-height: 1.25; }   /* Paket: eine Zeile je Behandlung */
.gk-fuer { font: 500 3.2cqw/1.35 var(--sans); color: var(--ink); } .gk-fuer b { font-weight: 700; }
.gk-msg { font: italic 500 2.8cqw/1.4 var(--serif); color: var(--muted); max-width: 70%; }
.gk-fuss { border-top: 1px solid var(--line); padding-top: 1.8cqw; font: 500 2cqw/1.4 var(--sans); color: var(--muted); }
.gk [contenteditable]:hover, .gk [contenteditable]:focus { outline: 2px dashed var(--sage); outline-offset: 3px; border-radius: 4px; }
@media print {
  body.gs-seite { background: #fff; }
  .page-head, .foot, .gsa-kopf, .gsa-tools, .gsa-hinweis { display: none !important; }
  .gsa { padding: 0; max-width: none; display: block; }
  .gsa-grid { display: block; }
  .gk { max-width: none; width: 100%; border-radius: 0; box-shadow: none; page-break-inside: avoid; }
  .gk [contenteditable] { outline: none !important; }
  @page { size: A5 landscape; margin: 8mm; }
}
