/* Bowling 2000 — Einladungskarten-Designer (/einladungskarten, invite.js).

   Die Karte ist A5 quer (210 × 148 mm). Alle Maße im Karteninneren sind in
   cqw angegeben (Prozent der Kartenbreite): Dieselbe Karte skaliert so in der
   Vorschau mit und steht im Druck exakt in Millimetern (1 cqw = 2,1 mm).
   Drei Designs über Variablen: Candy, Nacht, Hell (tintensparend).
   Dazu: Teilen-Leiste unter jeder Karte und die Online-Einladung (/einladung). */

/* ---------- Seite ---------- */
.inv-banner{margin:0 0 clamp(18px,2.2vw,28px);padding:14px 18px;background:var(--white);
  box-shadow:inset 4px 0 0 var(--candy);font-size:15px;line-height:1.5}
.inv-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(20px,3vw,48px);align-items:start}
@media (max-width:1000px){.inv-grid{grid-template-columns:1fr}}
.inv-form{display:grid;gap:clamp(22px,2.4vw,32px)}
.inv-fs{border:0;margin:0;padding:0;min-width:0;display:grid;gap:16px}
.inv-fs legend{display:flex;align-items:baseline;gap:.55em;padding:0;margin-bottom:4px;
  font-family:var(--font-tech);font-weight:600;font-size:12px;letter-spacing:.22em;text-transform:uppercase}
.inv-fs legend b{font-family:var(--font-head);font-weight:400;font-size:26px;letter-spacing:0;line-height:1}
.inv-opt{text-transform:none;letter-spacing:0;font-family:var(--font-body);font-size:12px;opacity:.75}
.inv-chips{display:flex;flex-wrap:wrap;gap:8px}
.inv-anzahl{max-width:200px}
.inv-pkg-hint{margin:-4px 0 0}
.inv-design-hint{margin:0}
.inv-error{margin:0}
.inv-actions{display:grid;gap:10px;justify-items:start}
.inv-actions .f-hint{margin:0}
.inv-preview{position:sticky;top:calc(68px + 16px);display:grid;gap:14px;min-width:0}
@media (max-width:1000px){.inv-preview{position:static}}
.inv-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.inv-preview-head .eyebrow{margin:0}
.inv-sum{font-family:var(--font-tech);font-weight:600;font-size:12px;letter-spacing:.18em;text-transform:uppercase;opacity:.7}
/* Vorschau: alle Karten untereinander, am Desktop scrollbar im Sticky-Bereich */
.inv-cards{display:grid;gap:18px;max-height:calc(100vh - 68px - 90px);overflow:auto;padding:4px 4px 12px;
  scrollbar-width:thin}
@media (max-width:1000px){.inv-cards{max-height:none;overflow:visible}}
.inv-item{display:grid;gap:10px;min-width:0}

/* ---------- Teilen (je Karte) ---------- */
.inv-share-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}
.inv-share-for{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-family:var(--font-tech);font-weight:600;font-size:11px;letter-spacing:.18em;text-transform:uppercase;opacity:.6}
.inv-share-for b{font-weight:600;opacity:1;color:var(--black)}
.inv-share-toggle{display:inline-flex;align-items:center;gap:9px;flex:0 0 auto;padding:11px 18px;border:0;cursor:pointer;
  background:var(--black);color:var(--white);font-family:var(--font-tech);font-weight:600;font-size:11px;
  letter-spacing:.2em;text-transform:uppercase;transition:background .2s,color .2s}
.inv-share-toggle svg{width:15px;height:15px}
.inv-share-toggle:hover,.inv-share-toggle[aria-expanded="true"]{background:var(--candy);color:var(--black)}
.inv-share-toggle:focus-visible,.inv-share-opt:focus-visible{outline:2px solid var(--black);outline-offset:2px}
.inv-share-panel{background:var(--white);padding:14px;box-shadow:inset 4px 0 0 var(--candy)}
.inv-share-opts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
@media (max-width:520px){.inv-share-opts{grid-template-columns:repeat(2,minmax(0,1fr))}}
.inv-share-opt{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;padding:13px 8px;border:0;
  cursor:pointer;background:var(--moon);color:var(--black);font-family:var(--font-tech);font-weight:600;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;transition:background .2s,color .2s,opacity .2s}
.inv-share-opt svg{width:17px;height:17px;flex:0 0 auto}
.inv-share-opt:hover{background:var(--black);color:var(--white)}
/* Solange das Kartenbild entsteht, warten die Bild-Kanäle */
.inv-share.is-busy [data-share-via="instagram"],
.has-fileshare .inv-share.is-busy [data-share-via="whatsapp"]{opacity:.45;cursor:progress}
.inv-share-status{margin:12px 0 0;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.inv-share-status:empty{display:none}
/* Unsichtbare Bühne: Karte in fester Breite für das Kartenbild */
.inv-stage{position:fixed;left:-10000px;top:0;width:1200px;pointer-events:none}
.inv-stage .inv-card{box-shadow:none}

/* ---------- Online-Einladung (/einladung) ---------- */
.inv-view-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:clamp(20px,3vw,48px);align-items:start}
@media (max-width:1000px){.inv-view-grid{grid-template-columns:1fr}}
.inv-view-card{min-width:0}
.inv-view-info{background:var(--white);padding:clamp(22px,2.4vw,34px);box-shadow:inset 4px 0 0 var(--candy)}
.inv-facts{margin:0;display:grid;gap:20px}
.inv-facts dt{margin-bottom:6px;font-family:var(--font-tech);font-weight:600;font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;opacity:.55}
.inv-facts dd{margin:0;line-height:1.5;overflow-wrap:anywhere}
.inv-facts ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.inv-facts li{position:relative;padding-left:1.5em}
.inv-facts li::before{content:"";position:absolute;left:0;top:.32em;width:.85em;height:.85em;background:var(--black);
  -webkit-mask:var(--b-mark) center/contain no-repeat;mask:var(--b-mark) center/contain no-repeat}
.inv-view-actions{display:grid;gap:10px;margin-top:clamp(24px,2.6vw,32px)}
.inv-view-actions .btn{justify-content:center}
.inv-view-more{margin:18px 0 0;font-size:14px}
.inv-view-more a{text-decoration:underline;text-decoration-color:var(--candy);text-decoration-thickness:2px;text-underline-offset:3px}
.inv-view-empty{display:grid;gap:22px;justify-items:start;max-width:60ch}

/* ---------- Karte ---------- */
.inv-card{container-type:inline-size;position:relative;width:100%;aspect-ratio:210/148;
  box-shadow:0 26px 60px -34px rgba(0,0,0,.6);-webkit-print-color-adjust:exact;print-color-adjust:exact}
/* Eine Zeile mit fester Höhe: beide Spalten bleiben innerhalb der Karte,
   invite.js verkleinert die Schrift, falls der Inhalt nicht passt */
.inv-in{position:absolute;inset:0;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);
  grid-template-rows:minmax(0,1fr);
  gap:4cqw;padding:5cqw 5cqw 4.6cqw;color:var(--inv-ink);
  background:var(--inv-bg) var(--inv-pat) 0 0 repeat;background-size:9cqw auto;
  font-family:var(--font-body);font-size:1.74cqw;line-height:1.42}
.inv-in p{margin:0}

/* Linke Spalte: Einladungstext */
.inv-l{display:flex;flex-direction:column;align-items:flex-start;min-width:0;min-height:0;overflow:hidden}
.inv-logo{width:21cqw;height:6.5cqw;margin-bottom:3.2cqw}
.inv-logo svg{display:block;width:100%;height:100%}
.inv-kicker{font-family:var(--font-tech);font-weight:600;font-size:1.3cqw;letter-spacing:.24em;text-transform:uppercase;
  margin-bottom:1.6cqw!important;color:var(--inv-kick)}
.inv-title{margin:0;font-family:var(--font-head);font-weight:400;text-transform:uppercase;line-height:.86;
  letter-spacing:-.01em;font-size:var(--ts,8cqw);color:var(--inv-title);max-width:100%;overflow-wrap:anywhere}
.inv-title span{display:block}
.inv-t2{color:var(--inv-title2)}
.is-ph{opacity:.35}
.inv-script{font-family:var(--font-script);color:var(--inv-script);font-size:5cqw;line-height:1;
  transform:rotate(-4deg);transform-origin:left;margin:.4cqw 0 2.2cqw .6cqw!important}
.inv-hello{font-weight:700;font-size:2.5cqw;margin-bottom:1.1cqw!important}
.inv-line{display:inline-block;width:22cqw;height:2.1cqw;border-bottom:.25cqw solid currentColor;vertical-align:bottom;
  margin-left:.5cqw}
.inv-text{max-width:40cqw}
.inv-sign{margin-top:auto!important;font-family:var(--font-script);font-size:3.6cqw;line-height:1.1;color:var(--inv-script2)}

/* Rechte Spalte: Details auf einem Panel */
.inv-r{display:flex;flex-direction:column;gap:1.7cqw;min-width:0;min-height:0;overflow:hidden;padding:3cqw 3.2cqw 2.6cqw;
  font-size:var(--rfs,1.62cqw);background:var(--inv-panel);
  color:var(--inv-pink);box-shadow:var(--inv-panel-edge)}
.inv-b{min-width:0}
.inv-lab{display:block;margin-bottom:.6cqw;font-family:var(--font-tech);font-weight:600;font-size:1.15cqw;letter-spacing:.2em;
  text-transform:uppercase;color:var(--inv-lab)}
.inv-b b{font-weight:700}
.inv-b ul{list-style:none;margin:0;padding:0;display:grid;gap:.35cqw}
.inv-b li{position:relative;padding-left:1.45em}
.inv-b li::before{content:"";position:absolute;left:0;top:.3em;width:.82em;height:.82em;background:var(--inv-bullet);
  -webkit-mask:var(--b-mark) center/contain no-repeat;mask:var(--b-mark) center/contain no-repeat}
.inv-note p{font-size:.95em;overflow-wrap:anywhere}
.inv-qrs{display:flex;gap:2.4cqw;margin-top:auto;padding-top:.6cqw}
.inv-qrs figure{margin:0;display:flex;align-items:center;gap:1.2cqw;min-width:0}
.inv-qr{display:block;width:9.4cqw;height:9.4cqw;flex:0 0 auto;padding:.5cqw;background:#fff;box-shadow:0 0 0 .2cqw var(--inv-qr-edge)}
.inv-qr svg{display:block;width:100%;height:100%}
.inv-qrs figcaption{font-family:var(--font-tech);font-weight:600;font-size:1.05cqw;letter-spacing:.12em;text-transform:uppercase;
  line-height:1.5;color:var(--inv-lab)}

/* ---------- Designs ---------- */
.t-candy{--inv-bg:var(--candy);--inv-pat:url("../img/pattern-candy.svg");--inv-ink:#000;--inv-kick:#000;
  --inv-title:#000;--inv-title2:#fff;--inv-script:#000;--inv-script2:#000;
  --inv-panel:#fff;--inv-pink:#000;--inv-panel-edge:0 0 0 .3cqw #000;--inv-lab:rgba(0,0,0,.55);--inv-bullet:#000;
  --inv-qr-edge:rgba(0,0,0,.15);--inv-mark:#000;--inv-word:#000}
.t-candy .inv-t2{-webkit-text-stroke:.14cqw #000;paint-order:stroke fill}
.t-nacht{--inv-bg:#000;--inv-pat:url("../img/pattern-dark.svg");--inv-ink:#fff;--inv-kick:var(--candy);
  --inv-title:#fff;--inv-title2:var(--candy);--inv-script:var(--mint);--inv-script2:var(--candy);
  --inv-panel:#111113;--inv-pink:#fff;--inv-panel-edge:inset 0 0 0 .3cqw var(--candy);--inv-lab:var(--candy);--inv-bullet:var(--mint);
  --inv-qr-edge:var(--candy);--inv-mark:var(--candy);--inv-word:#fff}
.t-hell{--inv-bg:#fff;--inv-pat:url("../img/pattern-moon.svg");--inv-ink:#000;--inv-kick:#000;
  --inv-title:#000;--inv-title2:#000;--inv-script:#e05fd0;--inv-script2:#000;
  --inv-panel:#fff;--inv-pink:#000;--inv-panel-edge:inset 0 0 0 .3cqw #000;--inv-lab:rgba(0,0,0,.55);--inv-bullet:#e05fd0;
  --inv-qr-edge:rgba(0,0,0,.2);--inv-mark:#000;--inv-word:#000}
/* Hell: Candy-Band am linken Rand als Markenakzent */
.t-hell .inv-in{box-shadow:inset 1.6cqw 0 0 var(--candy);padding-left:6.4cqw}
.t-hell .inv-t2{color:#e05fd0}

/* Foto: dunkel wie „Nacht“. Links Text mit Wann und Wo, rechts ein großes
   Hauptbild über die volle Höhe bis an den Kartenrand, zur Textseite hin
   schräg angeschnitten mit Candy-Streifen als Trenner. Darauf gedrehte
   Fotoabzüge mit weißem Rand und die QR-Codes (Anfahrt + Online-Einladung)
   mit einem dritten Abzug daneben. Darüber der Candy-Rahmen wie im Hero der
   Startseite; Inhalte liegen innerhalb. */
.t-foto{--inv-bg:#000;--inv-pat:url("../img/pattern-dark.svg");--inv-ink:#fff;--inv-kick:var(--candy);
  --inv-title:#fff;--inv-title2:var(--candy);--inv-script:var(--mint);--inv-script2:var(--candy);
  --inv-lab:var(--candy);--inv-mark:var(--candy);--inv-word:#fff}
.t-foto .inv-in{padding:0;gap:0;grid-template-columns:minmax(0,1fr) minmax(0,.92fr)}
.t-foto .inv-l{padding:5.4cqw 3.4cqw 5cqw 5.8cqw}
.t-foto .inv-logo{width:16cqw;height:5cqw;margin-bottom:2.2cqw}
.t-foto .inv-kicker{margin-bottom:1.3cqw!important}
.t-foto .inv-script{font-size:4.4cqw;margin:.2cqw 0 1.4cqw .6cqw!important}
.t-foto .inv-hello{font-size:2.3cqw;margin-bottom:.8cqw!important}
/* Mindestabstand zum Hinweis darüber – zählt beim Einpassen mit (padding statt margin) */
.t-foto .inv-sign{font-size:3.3cqw;padding-top:1.3cqw}
.inv-when{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:2.4cqw;margin-top:1.9cqw;
  font-size:1.55cqw;line-height:1.4}
.inv-when .inv-lab{margin-bottom:.5cqw}
.inv-more{margin-top:1.6cqw!important;font-size:1.4cqw;line-height:1.4;opacity:.85}
.t-foto .inv-r{position:relative;justify-content:flex-start;gap:0;padding:31cqw 5.4cqw 5.2cqw 3.4cqw;
  background:none;color:#fff;box-shadow:none;overflow:visible}
/* Schräge Kante: die Hülle ist candy und schräg beschnitten, das Bild darin
   um die Streifenbreite weiter – übrig bleibt der Candy-Streifen */
.inv-photo{position:absolute;top:0;bottom:0;right:0;left:-3cqw;margin:0;background:var(--candy);
  clip-path:polygon(5cqw 0,100% 0,100% 100%,0 100%)}
.inv-photo img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:38% 50%;
  clip-path:polygon(5.75cqw 0,100% 0,100% 100%,.75cqw 100%)}
/* Fotoabzüge: weißer Rand, Schatten, leicht gedreht */
.inv-pic{display:block;padding:.55cqw;background:#fff;box-shadow:0 .8cqw 1.8cqw rgba(0,0,0,.6)}
.inv-pic img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}
.inv-pics{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:2.6cqw;padding:0 .6cqw}
.inv-pics .inv-pic:first-child{transform:rotate(-3.5deg)}
.inv-pics .inv-pic:last-child{transform:translateY(1.2cqw) rotate(2.8deg)}
.t-foto .inv-qrs{position:relative;margin-top:auto;padding-top:0;gap:2.8cqw;align-items:flex-end}
.t-foto .inv-qrs figure{flex-direction:column;align-items:flex-start;gap:1cqw}
.t-foto .inv-qr{width:8.8cqw;height:8.8cqw;padding:.4cqw;box-shadow:none}
/* Beschriftung liegt auf dem Foto: kleines schwarzes Schild */
.t-foto .inv-qrs figcaption{line-height:1.45;padding:.3cqw .7cqw;background:#000}
.inv-pic-kid{flex:0 0 auto;width:11.5cqw;margin-left:auto;transform:rotate(4deg)}
.inv-pic-kid img{aspect-ratio:4/5;object-position:50% 30%}
.inv-frame{position:absolute;inset:2.4cqw;z-index:2;border:.35cqw solid var(--candy);pointer-events:none}

/* ---------- Druck: A5 quer, zwei Karten pro A4-Seite ---------- */
@media print{
  @page{size:A4 portrait;margin:0}
  html,body{background:#fff!important}
  .nav,.menu,.footer,.stickybar,[data-stickybar]{display:none!important}
  main>*:not(.inv-sec):not(.inv-view){display:none!important}
  .inv-sec,.inv-view{padding:0!important;background:none!important}
  .inv-sec .wrap,.inv-view .wrap{max-width:none;padding:0}
  .inv-banner,.inv-form,.inv-preview-head,.inv-share,.inv-view-info{display:none!important}
  /* weiche Schatten landen im PDF als Rasterbild mit dunklem Kasten */
  .inv-pic{box-shadow:none}
  .inv-view-grid,.inv-item{display:block}
  .inv-grid{display:block}
  .inv-preview{position:static;display:block}
  .inv-cards{display:block;max-height:none;overflow:visible;padding:0;margin:0}
  .inv-card{width:210mm;height:148.5mm;aspect-ratio:auto;box-shadow:none;break-inside:avoid;page-break-inside:avoid}
  .inv-item:nth-child(2n){break-after:page;page-break-after:always}
  .inv-item:last-child{break-after:auto;page-break-after:auto}
  /* Schnittlinie zwischen den beiden Karten einer Seite */
  .inv-item:nth-child(2n+1) .inv-card::after{content:"";position:absolute;left:0;right:0;bottom:0;z-index:2;
    border-bottom:.3mm dashed rgba(0,0,0,.45)}
}
