:root{
  --parchment:#F3EEDF;
  --parchment-dim:#EBE3CD;
  --ink:#211B14;
  --red:#B91F35;
  --red-deep:#8E1626;
  --green:#1F5D3B;
  --green-deep:#164A2E;
  --gold:#C99A34;
  --shadow:0 14px 34px rgba(33,27,20,0.16);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{background:var(--parchment); color:var(--ink); font-family:'Karla',sans-serif;}
h1,h2,h3,.display{font-family:'Oswald',sans-serif; text-transform:none;}
.wrap{width:92%; max-width:1180px; margin:0 auto;}
img{max-width:100%; display:block;}
a{color:inherit;}
@media (prefers-reduced-motion: reduce){*{animation:none !important; transition:none !important;}}

/* top ribbon */
.top-ribbon{background:var(--red); color:#fff; font-size:13px; text-align:center; padding:7px 0; letter-spacing:.5px;}

header{position:sticky; top:0; z-index:50; background:var(--parchment); border-bottom:1px solid rgba(0,0,0,.12);}
.header-inner{display:flex; align-items:center; justify-content:space-between; padding:18px 0;}
.brand{display:flex; align-items:center; gap:14px; text-decoration:none;}
.crest{
  width:50px; height:56px; background:var(--green);
  clip-path:polygon(50% 0%, 100% 18%, 100% 72%, 50% 100%, 0% 72%, 0% 18%);
  display:flex; align-items:center; justify-content:center; color:var(--gold); font-family:'Oswald'; font-weight:700; font-size:16px;
  box-shadow:var(--shadow); flex:none;
}
.brand-text .name{font-family:'Oswald'; font-weight:600; font-size:19px; letter-spacing:.3px;}
.brand-text .sub{font-size:12px; opacity:.65; letter-spacing:.4px;}
nav{position:relative;}
nav ul{display:flex; gap:30px; list-style:none;}
nav a{text-decoration:none; font-weight:600; font-size:14.5px; letter-spacing:.3px; padding-bottom:4px; border-bottom:2px solid transparent; transition:border-color .2s ease;}
nav a:hover{border-color:var(--gold);}
.nav-cta{background:var(--red); color:#fff !important; padding:10px 20px !important; border-radius:3px; border-bottom:none !important;}
.nav-cta:hover{background:var(--red-deep); border-color:transparent !important;}
.hamburger{display:none; font-size:26px; background:none; border:none; color:var(--ink); cursor:pointer;}
@media (max-width:840px){
  nav ul{display:none;}
  .hamburger{display:block;}
  nav.nav-open ul{
    display:flex;
    flex-direction:column;
    position:absolute;
    top:100%;
    right:0;
    min-width:220px;
    background:var(--parchment);
    padding:20px 24px;
    gap:16px;
    border:1px solid rgba(33,27,20,.12);
    border-top:none;
    box-shadow:var(--shadow);
    z-index:60;
  }
}

/* Hero */
.hero{position:relative; overflow:hidden; background:var(--parchment-dim); color:var(--ink);}
.hero-media{position:absolute; inset:0;}
.hero-media img{width:100%; height:100%; object-fit:cover; opacity:.55;}
.hero-media::after{content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(243,238,223,.25), rgba(243,238,223,.96) 82%);}
.hero-inner{position:relative; z-index:2; padding:120px 0 90px; text-align:center;}
.hero-inner .kicker{
  display:inline-block; border:1px solid var(--red); color:var(--red-deep); font-size:13px;
  letter-spacing:2px; text-transform:uppercase; padding:7px 18px; margin-bottom:26px; background:rgba(255,255,255,.5);
}
.hero-inner h1{font-size:clamp(40px,6vw,72px); line-height:1.08; font-weight:600; margin-bottom:22px;}
.hero-inner h1 em{font-style:normal; color:var(--red-deep);}
.hero-inner p{font-size:18px; max-width:560px; margin:0 auto 34px; opacity:.82; line-height:1.6;}
.hero-actions{display:flex; gap:16px; justify-content:center; flex-wrap:wrap;}
.btn{display:inline-flex; align-items:center; gap:8px; padding:15px 30px; font-weight:600; font-size:15px; letter-spacing:.4px; text-decoration:none; border-radius:2px; transition:transform .2s ease, background .2s ease; border:3px solid transparent; cursor:pointer;}
.btn-gold{background:var(--gold); color:var(--ink);}
.btn-gold:hover{background:#dcae44; transform:translateY(-3px);}
.btn-outline{border:1px solid var(--ink); color:var(--ink); background:transparent;}
.btn-outline:hover{background:rgba(33,27,20,.06);}

/* medal seal cta */
.medal{
  position:absolute; z-index:3; width:118px; height:118px; border-radius:50%;
  background:var(--red); border:4px solid var(--gold); display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-align:center; color:#fff; font-family:'Oswald';
  bottom:-40px; right:8%; box-shadow:var(--shadow); line-height:1.15;
}
.medal b{font-size:22px;}
.medal span{font-size:11px; letter-spacing:.5px; opacity:.9;}
@media (max-width:700px){ .medal{display:none;} }

/* Facts sash */
.facts{background:var(--gold); color:var(--ink);}
.facts .wrap{display:grid; grid-template-columns:repeat(4,1fr);}
.fact{padding:26px 18px; text-align:center; border-right:1px solid rgba(33,27,20,.18);}
.fact:last-child{border-right:none;}
.fact .big{font-family:'Oswald'; font-size:23px; display:block;}
.fact .small{font-size:12.5px; opacity:.75; letter-spacing:.3px;}
.fact-countdown{grid-column:span 2; display:flex; align-items:center; justify-content:center; gap:16px; flex-wrap:wrap;}
.fact-countdown .cd-label{font-size:12.5px; opacity:.75; letter-spacing:.3px;}
.cd-nums{display:flex; gap:10px;}
.cd-item{min-width:50px; text-align:center;}
.cd-item .num{font-family:'Oswald'; font-size:23px; display:block; line-height:1;}
.cd-item .unit{font-size:10.5px; opacity:.7; letter-spacing:.4px;}
@media (max-width:720px){ .cd-nums{gap:6px;} .cd-item{min-width:40px;} }
@media (max-width:720px){ .facts .wrap{grid-template-columns:repeat(2,1fr);} .fact{border-right:none; border-bottom:1px solid rgba(33,27,20,.18);} }

.section{padding:92px 0;}
.section-head{max-width:620px; margin:0 auto 46px; text-align:center;}
.section-head .kicker{display:inline-block; color:var(--red); font-weight:700; font-size:13px; letter-spacing:2px; text-transform:uppercase; margin-bottom:12px;}
.section-head h2{font-size:clamp(28px,3.6vw,40px); line-height:1.16;}
.section-head p{margin-top:14px; font-size:16.5px; opacity:.78; line-height:1.6;}
.divider-line{width:60px; height:3px; background:var(--red); margin:18px auto 0;}

/* Zug banner */
.zug{background:var(--parchment); color:var(--ink); position:relative; overflow:hidden; border-top:1px solid rgba(33,27,20,.08); border-bottom:1px solid rgba(33,27,20,.08);}
.zug::before{content:""; position:absolute; right:-8%; top:-30%; width:60%; height:160%; background:rgba(31,93,59,.07); transform:rotate(14deg);}
.zug .wrap{position:relative; z-index:2; display:grid; grid-template-columns:1.15fr .85fr; gap:50px; align-items:center; padding:80px 0;}
.zug h3{font-size:clamp(26px,3.4vw,36px); margin-bottom:16px;}
.zug p{font-size:16.5px; line-height:1.65; opacity:.92; margin-bottom:12px;}
.motto-plate{
  display:inline-block; background:var(--gold); color:var(--ink); font-family:'Oswald'; font-weight:600;
  padding:10px 20px; margin:12px 0 24px; letter-spacing:.3px;
}
.zug-photo{border:6px solid var(--parchment); box-shadow:var(--shadow); background:#fff;}
.zug-photo img{width:100%; height:300px; object-fit:contain; display:block;}
@media (max-width:860px){ .zug .wrap{grid-template-columns:1fr; padding:56px 0;} .zug-photo img{height:240px;} }
@media (max-width:480px){ .zug-photo img{height:190px;} }

/* Steps as seals */
.steps{display:grid; grid-template-columns:repeat(3,1fr); gap:30px;}
.step{text-align:center; padding:0 12px;}
.seal{
  width:74px; height:74px; border-radius:50%; border:3px solid var(--red); color:var(--red);
  display:flex; align-items:center; justify-content:center; font-family:'Oswald'; font-size:24px; font-weight:600;
  margin:0 auto 18px; position:relative;
}
.seal::after{content:""; position:absolute; inset:-8px; border:1px dashed var(--red); border-radius:50%; opacity:.5;}
.step h4{font-family:'Oswald'; font-size:18px; margin-bottom:8px;}
.step p{font-size:14.5px; opacity:.75; line-height:1.55;}
@media (max-width:820px){.steps{grid-template-columns:1fr; gap:36px;}}

/* Gallery */
.gallery-strip{display:grid; grid-template-columns:repeat(auto-fit, minmax(230px, 1fr)); gap:16px;}
.gallery-strip figure{margin:0; overflow:hidden; position:relative; border-radius:4px; aspect-ratio:4/3;}
.gallery-strip figure img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease;}
.gallery-strip figure:hover img{transform:scale(1.06);}
.gallery-strip figure figcaption{
  position:absolute; bottom:0; left:0; right:0; padding:16px; color:#fff; font-size:13px;
  background:linear-gradient(180deg, transparent, rgba(0,0,0,.65));
}
@media (max-width:600px){
  .gallery-strip{grid-template-columns:repeat(2, 1fr);}
}

/* Kontakt + Anmeldung-Karte */
.kontakt-wrap{background:var(--parchment-dim); color:var(--ink); border-radius:6px; overflow:hidden; display:grid; grid-template-columns:.9fr 1.1fr; border:1px solid rgba(33,27,20,.08);}
.kontakt-info{padding:52px 46px;}
.kontakt-info .kicker{color:var(--red-deep); font-weight:700; font-size:13px; letter-spacing:2px; text-transform:uppercase;}
.kontakt-info h2{font-size:clamp(26px,3.2vw,32px); margin:14px 0 16px;}
.kontakt-info p{font-size:15.5px; line-height:1.65; opacity:.82; margin-bottom:22px;}
.contact-list{list-style:none; font-size:14.5px;}
.contact-list li{margin-bottom:12px; padding-left:0;}
.contact-list b{color:var(--red-deep); margin-right:8px;}
.anmeldung-card{background:#fff; color:var(--ink); padding:52px 46px;}
.anmeldung-card .kicker{color:var(--red-deep); font-weight:700; font-size:13px; letter-spacing:2px; text-transform:uppercase;}
.anmeldung-card h3{font-size:22px; margin:12px 0 16px;}
.kontakt-form{background:#fff; color:var(--ink); padding:52px 46px;}
.kontakt-form label{display:block; font-weight:700; font-size:13px; letter-spacing:.3px; margin-top:16px; margin-bottom:6px;}
.kontakt-form label:first-child{margin-top:0;}
.kontakt-form input, .kontakt-form textarea{
  width:100%; padding:13px 14px; border:1px solid rgba(33,27,20,.25); border-radius:2px;
  font-family:'Karla'; font-size:15px; background:#fff; color:var(--ink);
}
.kontakt-form input:focus, .kontakt-form textarea:focus{outline:2px solid var(--gold); border-color:var(--gold);}
.captcha-row{display:flex; align-items:center; gap:10px; margin-top:16px;}
.captcha-row .captcha-q{
  background:var(--parchment-dim); border-radius:2px; padding:12px 14px; font-weight:700; font-size:14.5px;
  white-space:nowrap;
}
.captcha-row input{margin-top:0; width:90px; text-align:center;}
.kontakt-form .form-note{font-size:12.5px; opacity:.65; margin-top:6px;}
.kontakt-form .form-error{font-size:13px; color:var(--red-deep); font-weight:700; margin-top:8px; display:none;}
.kontakt-form button{
  margin-top:22px; width:100%; padding:15px; border:none; border-radius:2px; background:var(--red); color:#fff;
  font-family:'Oswald'; font-weight:600; letter-spacing:.4px; font-size:15px; cursor:pointer; transition:background .2s ease;
}
.kontakt-form button:hover{background:var(--red-deep);}
.mini-steps{list-style:none; font-size:14.5px; margin-bottom:24px;}
.mini-steps li{display:flex; gap:10px; margin-bottom:10px; align-items:flex-start;}
.mini-steps .num{
  flex:none; width:24px; height:24px; border-radius:50%; background:var(--gold); color:var(--ink);
  font-family:'Oswald'; font-weight:700; font-size:12.5px; display:flex; align-items:center; justify-content:center;
}
.anmeldung-card .btn{width:100%; justify-content:center; margin-bottom:10px;}
@media (max-width:860px){ .kontakt-wrap{grid-template-columns:1fr;} .kontakt-info, .anmeldung-card, .kontakt-form{padding:40px 28px;} }

footer{background:var(--parchment-dim); color:rgba(33,27,20,.75); padding:44px 0 26px; border-top:1px solid rgba(33,27,20,.1);}
.foot-grid{display:flex; justify-content:space-between; flex-wrap:wrap; gap:24px; padding-bottom:24px; border-bottom:1px solid rgba(33,27,20,.12);}
.foot-grid .name{font-family:'Oswald'; font-weight:600; font-size:17px; color:var(--ink); margin-bottom:6px;}
.foot-links{display:flex; gap:22px; flex-wrap:wrap;}
.foot-links a{text-decoration:none; font-size:14px; opacity:.85; color:var(--ink);}
.foot-links a:hover{opacity:1; text-decoration:underline;}
.foot-bottom{padding-top:18px; font-size:12.5px; opacity:.65; display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;}

.reveal{animation:riseIn .85s cubic-bezier(.2,.8,.2,1) both;}
.reveal.d1{animation-delay:.08s;} .reveal.d2{animation-delay:.2s;} .reveal.d3{animation-delay:.32s;}
@keyframes riseIn{ from{opacity:0; transform:translateY(20px);} to{opacity:1; transform:translateY(0);} }

/* ============================================================
   Unterseiten: Anmeldung, Impressum, Datenschutz
   ============================================================ */
.page-hero{background:var(--parchment-dim); padding:64px 0 44px; text-align:center; border-bottom:1px solid rgba(33,27,20,.08);}
.page-hero .kicker{display:inline-block; color:var(--red-deep); font-weight:700; font-size:13px; letter-spacing:2px; text-transform:uppercase; margin-bottom:10px;}
.page-hero h1{font-size:clamp(30px,4.4vw,44px);}

.legal-section{padding:64px 0 92px;}
.legal-section .wrap{max-width:760px;}
.legal-section h1{font-size:clamp(28px,3.6vw,36px); margin-bottom:28px;}
.legal-section h3{font-size:17px; margin:28px 0 8px; color:var(--red-deep);}
.legal-section p{font-size:15.5px; line-height:1.7; margin-bottom:10px;}
.legal-section ul{margin:6px 0 14px 20px; font-size:15.5px; line-height:1.7;}
.legal-section a{text-decoration:underline;}

.anmeldung-hero{padding-bottom:10px;}
.anmeldung-steps{display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin:44px 0;}
.anmeldung-download{
  background:var(--parchment-dim); border-radius:10px; padding:36px; text-align:center; margin-bottom:44px;
  border:1px solid rgba(33,27,20,.08);
}
.anmeldung-download p{font-size:15px; opacity:.8; margin-bottom:18px;}
.pdf-frame{width:100%; height:640px; border:6px solid var(--parchment-dim); box-shadow:var(--shadow); background:#fff;}
@media (max-width:820px){ .anmeldung-steps{grid-template-columns:1fr; gap:30px;} .pdf-frame{height:420px;} }