/* Fonts — self-hosted for DSGVO */
@font-face{font-family:'Bodoni Moda';font-style:normal;font-weight:900;font-display:swap;src:url(../fonts/bodoni_moda_normal_900.woff2) format('woff2')}
@font-face{font-family:'Bodoni Moda';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/bodoni_moda_normal_700.woff2) format('woff2')}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:900;font-display:swap;src:url(../fonts/playfair_display_italic_900.woff2) format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/poppins_normal_400.woff2) format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/poppins_normal_500.woff2) format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/poppins_normal_600.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/inter_normal_400.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/inter_normal_500.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/inter_normal_600.woff2) format('woff2')}

:root{
  --blush:#FFF5FB; --blush-deep:#F7E6F0; --forest:#003417; --forest-soft:#2A5238;
  --rose:#BC648F; --rose-tint:#EBD3E0; --paper:#FFFFFF; --error:#8C2F3D;
  --display:"Bodoni Moda",Georgia,serif;
  --script:"Playfair Display",Georgia,serif;
  --sans:"Poppins",system-ui,sans-serif;
  --body:"Inter",system-ui,sans-serif;
  --maxw:1080px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--blush);color:var(--forest);font-family:var(--body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--rose);text-underline-offset:3px}
h1,h2,h3{margin:0 0 .4em;line-height:1.1}
h2{font-family:var(--display);font-weight:900;font-size:clamp(1.9rem,4.2vw,3rem);letter-spacing:-.03em;text-transform:uppercase}
h3{font-family:var(--sans);font-weight:600;font-size:1.15rem;letter-spacing:.01em}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.narrow{max-width:70ch}
.eyebrow{font-family:var(--sans);font-weight:600;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--rose);margin-bottom:.9rem}

/* ---------- header ---------- */
header{position:sticky;top:0;z-index:60;background:rgba(255,245,251,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--rose-tint)}
.hdr{display:flex;align-items:center;gap:20px;height:66px;max-width:var(--maxw);margin:0 auto;padding:0 24px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--sans);font-weight:600;letter-spacing:.06em;font-size:.9rem;text-decoration:none;color:var(--forest);white-space:nowrap}
.brand img{width:30px}
nav{margin-left:auto;display:flex;gap:26px}
nav a{font-family:var(--sans);font-size:.83rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--forest);text-decoration:none;position:relative;padding:4px 0}
nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1.5px;background:var(--rose);transition:right .25s}
nav a:hover::after{right:0}
.lang{display:flex;align-items:center;gap:2px;font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.08em;border:1.5px solid var(--forest);border-radius:999px;padding:3px;flex:none}
.lang button{border:0;background:none;font:inherit;color:var(--forest);padding:3px 11px;border-radius:999px;cursor:pointer;transition:.2s}
.lang button[aria-pressed="true"]{background:var(--rose);color:#fff}
.burger{display:none;margin-left:auto;border:0;background:none;cursor:pointer;padding:8px}
.burger span{display:block;width:22px;height:1.6px;background:var(--forest);margin:5px 0}

/* ---------- hero ---------- */
.hero{position:relative;text-align:center;padding:44px 0 16px;overflow:hidden}
.lockup{display:inline-block;text-align:center;margin-bottom:2px}
.l-top{font-family:var(--display);font-weight:900;text-transform:uppercase;letter-spacing:-.035em;font-size:clamp(1.9rem,7vw,4.1rem);line-height:.86}
.l-script{font-family:var(--script);font-style:italic;font-weight:900;font-size:clamp(2.4rem,9vw,5.4rem);line-height:.9;margin-top:-.24em;position:relative;z-index:2}
.hero .couple{max-width:min(215px,44vw);margin:14px auto 4px}
.hero .rings{width:60px;margin:0 auto 10px}
.hero .date{font-family:var(--sans);font-weight:500;letter-spacing:.18em;font-size:.95rem}
.hero .place{color:var(--forest-soft);font-size:.95rem;margin-top:4px}
.cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:28px}
.btn{font-family:var(--sans);font-weight:600;font-size:.9rem;letter-spacing:.06em;padding:15px 32px;border-radius:999px;border:1.5px solid var(--forest);background:var(--forest);color:var(--blush);cursor:pointer;text-decoration:none;display:inline-block;transition:.22s}
.btn:hover{background:var(--rose);border-color:var(--rose);transform:translateY(-1px)}
.btn.ghost{background:none;color:var(--forest)}
.btn.ghost:hover{background:var(--forest);color:var(--blush);border-color:var(--forest)}
.btn.rose{background:var(--rose);border-color:var(--rose);color:#fff}
.btn.rose:hover{background:var(--forest);border-color:var(--forest)}
.btn[disabled]{opacity:.35;pointer-events:none}
.editlink{display:block;margin:14px auto 0;border:0;background:none;font-family:var(--sans);font-size:.85rem;color:var(--forest-soft);text-decoration:underline;cursor:pointer}

.divider{display:block;margin:52px auto;width:min(300px,60%);opacity:.75}

.countdown{display:flex;justify-content:center;gap:clamp(18px,6vw,54px);margin-top:34px;flex-wrap:wrap}
.cd-item{text-align:center;min-width:64px}
.cd-num{font-family:var(--display);font-weight:900;font-size:clamp(1.9rem,5vw,2.7rem);line-height:1}
.cd-lbl{font-family:var(--sans);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--forest-soft);margin-top:6px}

section{padding:14px 0;scroll-margin-top:84px}
.sec-head{text-align:center;margin-bottom:38px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px}
.card{background:var(--paper);border-radius:18px;padding:26px;border:1px solid var(--rose-tint)}
.card .day{font-family:var(--script);font-style:italic;font-weight:700;color:var(--rose);font-size:1.5rem;margin-bottom:2px}
.card ul{list-style:none;padding:0;margin:14px 0 0}
.card li{display:flex;gap:14px;padding:7px 0;border-top:1px dashed var(--rose-tint);font-size:.95rem}
.card li:first-child{border-top:0}
.card li b{font-family:var(--sans);font-weight:600;color:var(--rose);min-width:56px;font-variant-numeric:tabular-nums}

.addr{text-align:center;margin-bottom:26px}
.addr .big{font-family:var(--display);font-weight:900;font-size:clamp(1.3rem,3vw,1.8rem);text-transform:uppercase;letter-spacing:-.02em}
.addr .sub{color:var(--forest-soft);font-size:.95rem}

.hotel .meta{font-size:.88rem;color:var(--forest-soft)}
.pill{display:inline-block;font-family:var(--sans);font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;background:var(--rose-tint);color:var(--forest);padding:5px 12px;border-radius:999px;margin-bottom:12px}
.hotel .links{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.linkbtn{font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.04em;padding:9px 16px;border-radius:999px;border:1.5px solid var(--forest);color:var(--forest);text-decoration:none;transition:.2s;background:none;cursor:pointer}
.linkbtn:hover{background:var(--forest);color:var(--blush)}
.linkbtn.solid{background:var(--rose);border-color:var(--rose);color:#fff}
.linkbtn.solid:hover{background:var(--forest);border-color:var(--forest)}

.mapbox{margin-top:6px;border-radius:18px;overflow:hidden;border:1px solid var(--rose-tint);background:var(--paper)}
.mapnote{font-size:.8rem;color:var(--forest-soft);padding:12px 18px;border-top:1px solid var(--rose-tint);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* ---------- RSVP ---------- */
.overlay{position:fixed;inset:0;background:rgba(0,52,23,.32);backdrop-filter:blur(3px);z-index:100;display:none;align-items:flex-start;justify-content:center;padding:24px;overflow-y:auto}
.overlay.open{display:flex}
.sheet{background:var(--blush);border-radius:24px;max-width:600px;width:100%;margin:auto;position:relative;box-shadow:0 30px 80px rgba(0,52,23,.25);overflow:hidden}
.prog{height:3px;background:var(--rose-tint)}
.prog i{display:block;height:100%;background:var(--rose);width:11%;transition:width .35s}
.sheet-in{padding:34px 34px 30px}
.close{position:absolute;top:14px;right:16px;border:0;background:none;font-size:1.5rem;line-height:1;color:var(--forest-soft);cursor:pointer;z-index:2}
.step{display:none}
.step.active{display:block;animation:fade .3s}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.step h3{font-family:var(--display);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;font-size:1.6rem;margin-bottom:6px}
.step p.lead{color:var(--forest-soft);font-size:.95rem;margin:0 0 22px}
label.fl{display:block;font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--forest-soft);margin:16px 0 6px}
input[type=text],input[type=email],input[type=tel],textarea{width:100%;font:inherit;font-size:1rem;padding:13px 16px;border:1.5px solid var(--rose-tint);border-radius:12px;background:var(--paper);color:var(--forest)}
input:focus,textarea:focus{outline:0;border-color:var(--rose);box-shadow:0 0 0 3px rgba(188,100,143,.15)}
textarea{resize:vertical;min-height:82px}
.code{letter-spacing:.28em;text-transform:uppercase;font-family:var(--sans);font-weight:600;text-align:center;font-size:1.05rem!important}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.opt{display:flex;align-items:center;gap:14px;padding:15px 18px;border:1.5px solid var(--rose-tint);border-radius:14px;background:var(--paper);cursor:pointer;margin-bottom:10px;transition:.18s;font-size:.98rem}
.opt:hover{border-color:var(--rose)}
.opt.sel{border-color:var(--rose);background:var(--rose-tint)}
.opt .dot{width:19px;height:19px;border-radius:50%;border:1.5px solid var(--forest-soft);flex:none;position:relative}
.opt.sel .dot{border-color:var(--rose)}
.opt.sel .dot::after{content:"";position:absolute;inset:3.5px;border-radius:50%;background:var(--rose)}
.opt small{display:block;color:var(--forest-soft);font-size:.8rem}
.cap{font-size:.74rem;color:var(--rose);font-family:var(--sans);font-weight:600;letter-spacing:.06em;margin-left:auto;flex:none}
.chk{display:flex;align-items:center;gap:12px;font-size:.92rem;cursor:pointer;margin:14px 0;color:var(--forest-soft)}
.chk input{width:18px;height:18px;accent-color:var(--rose);flex:none}
.person{border:1.5px solid var(--rose-tint);border-radius:16px;padding:16px 18px;margin-bottom:12px;background:var(--paper)}
.person .ph{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.person .ph b{font-family:var(--sans);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--rose)}
.person .rm{border:0;background:none;color:var(--forest-soft);cursor:pointer;font-size:.8rem;text-decoration:underline}
.addbtn{width:100%;padding:14px;border:1.5px dashed var(--rose);border-radius:14px;background:none;color:var(--rose);font-family:var(--sans);font-weight:600;font-size:.9rem;cursor:pointer}
.quota{font-size:.82rem;color:var(--forest-soft);margin-top:10px;text-align:center}
.navrow{display:flex;gap:12px;margin-top:26px;align-items:center}
.navrow .btn{flex:1;text-align:center;padding:14px 18px}
.back{border:0;background:none;color:var(--forest-soft);font-family:var(--sans);font-size:.85rem;cursor:pointer;text-decoration:underline;padding:8px 4px}
.info{background:var(--blush-deep);border-radius:14px;padding:16px 18px;font-size:.9rem;margin-top:14px}
.info b{font-family:var(--sans);font-weight:600}
.sum{border:1.5px solid var(--rose-tint);border-radius:16px;background:var(--paper);padding:6px 18px;margin-bottom:8px}
.sum div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-top:1px dashed var(--rose-tint);font-size:.93rem}
.sum div:first-child{border-top:0}
.sum span:first-child{color:var(--forest-soft)}
.sum span:last-child{text-align:right;font-weight:500}
.done{text-align:center}
.done img{max-width:190px;margin:0 auto 8px}
.mailcard{display:flex;gap:14px;align-items:flex-start;text-align:left;background:var(--paper);border:1.5px solid var(--rose-tint);border-radius:16px;padding:16px 18px;margin-top:16px}
.mailcard .ic{font-size:1.4rem;line-height:1}

footer{margin-top:70px;padding:44px 0 60px;border-top:1px solid var(--rose-tint);text-align:center;font-size:.85rem;color:var(--forest-soft)}
footer img{width:52px;margin:0 auto 16px;opacity:.8}
footer a{color:var(--forest-soft)}

/* ---------- Admin ---------- */
.adminwrap{position:fixed;inset:0;z-index:200;background:var(--blush);overflow-y:auto;display:none}
.adminwrap.open{display:block}
.atop{position:sticky;top:0;background:rgba(255,245,251,.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--rose-tint);display:flex;align-items:center;gap:14px;padding:0 24px;height:62px;z-index:5}
.atop img{width:26px}
.atop .ttl{font-family:var(--sans);font-weight:600;font-size:.88rem;letter-spacing:.05em}
.atop .sp{margin-left:auto;display:flex;gap:10px}
.apad{max-width:1080px;margin:0 auto;padding:28px 24px 80px}
.ahead{font-family:var(--display);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;font-size:1.5rem;margin:34px 0 14px}
.ahead:first-of-type{margin-top:0}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:16px}
.kpi{background:var(--paper);border:1px solid var(--rose-tint);border-radius:16px;padding:20px 22px}
.kpi .n{font-family:var(--display);font-weight:900;font-size:2.3rem;line-height:1}
.kpi .l{font-family:var(--sans);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--forest-soft);margin-top:9px}
.kpi .s{font-size:.82rem;color:var(--forest-soft);margin-top:3px}
.acards{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px}
.acard{background:var(--paper);border:1px solid var(--rose-tint);border-radius:16px;padding:20px 22px}
.acard h4{font-family:var(--sans);font-weight:600;font-size:.95rem;margin:0 0 14px}
.acard .unit{font-size:.72rem;color:var(--forest-soft);font-weight:400;letter-spacing:.04em}
.barrow{display:grid;grid-template-columns:minmax(84px,auto) 1fr 40px;align-items:center;gap:12px;margin-bottom:10px;font-size:.88rem}
.barrow:last-child{margin-bottom:0}
.track{height:12px;background:var(--rose-tint);border-radius:0 4px 4px 0}
.fill{height:100%;background:var(--rose);border-radius:0 4px 4px 0}
.barrow .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;font-family:var(--sans);font-size:.85rem}
.meter .mcap{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:6px;color:var(--forest)}
.meter .mcap b{font-family:var(--sans);font-weight:600;font-variant-numeric:tabular-nums}
.meter{margin-bottom:16px}
.sw{display:flex;align-items:center;gap:10px;font-size:.86rem;color:var(--forest-soft);margin-top:10px;cursor:pointer}
.sw input{width:17px;height:17px;accent-color:var(--rose);flex:none}
.tblwrap{background:var(--paper);border:1px solid var(--rose-tint);border-radius:16px;overflow:hidden}
.atable{width:100%;border-collapse:collapse;font-size:.88rem}
.atable th{font-family:var(--sans);font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;color:var(--forest-soft);text-align:left;padding:13px 14px;border-bottom:1.5px solid var(--rose-tint);white-space:nowrap}
.atable td{padding:12px 14px;border-bottom:1px dashed var(--rose-tint);vertical-align:top}
.atable tbody tr:hover{background:var(--blush)}
.atable .nm{font-weight:600}
.atable .num{font-variant-numeric:tabular-nums}
.flag{display:inline-block;font-family:var(--sans);font-size:.64rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--error);border:1px solid var(--error);border-radius:999px;padding:2px 8px;margin-left:8px}
.no{color:var(--forest-soft)}
.detail{background:var(--blush-deep)!important}
.detail dl{margin:0;display:grid;grid-template-columns:130px 1fr;gap:6px 16px;font-size:.86rem}
.detail dt{color:var(--forest-soft)}
.detail dd{margin:0}
.arow{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.loginbox{max-width:400px;margin:12vh auto;background:var(--paper);border:1px solid var(--rose-tint);border-radius:22px;padding:34px 32px;text-align:center}
.loginbox img{width:64px;margin:0 auto 14px}
.loginbox h3{font-family:var(--display);font-weight:900;text-transform:uppercase;font-size:1.5rem;letter-spacing:-.02em}
.loginbox .fl{text-align:left}
.admnote{font-size:.78rem;color:var(--forest-soft);margin-top:18px;line-height:1.5}
.err{color:var(--error);font-size:.85rem;margin-top:10px;display:none}
.err.show{display:block}
@media(max-width:700px){.atable .hide{display:none}.apad{padding:20px 14px 60px}}

@media(max-width:760px){
  nav{display:none}
  .burger{display:block}
  .hdr{gap:10px}
  .grid2{grid-template-columns:1fr}
  .sheet-in{padding:26px 20px 24px}
  body{font-size:16px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}