:root{
  --paper:#FBF9F4;
  --ink:#2B1B12;
  --primary:#B79CED;
  --accent:#FFC94A;
  --surface:#FFFFFF;
  --ink-soft:color-mix(in srgb, var(--ink) 68%, var(--paper));
  --hairline:color-mix(in srgb, var(--ink) 14%, var(--paper));
  --success-bg:color-mix(in srgb, #3DBFA0 22%, var(--surface));
  --success-ink:color-mix(in srgb, #0E6B54 60%, var(--ink));
  --taken-bg:color-mix(in srgb, #E2703A 20%, var(--surface));
  --taken-ink:color-mix(in srgb, #A6371A 55%, var(--ink));
  --radius-sm:8px; --radius-md:16px; --radius-lg:28px;
  --shadow-sm:0 2px 8px rgba(0,0,0,.08);
  --shadow-md:0 10px 28px rgba(0,0,0,.14);
  --font-display:"Baloo 2", system-ui, sans-serif;
  --font-body:"Nunito", system-ui, sans-serif;
}
*{box-sizing:border-box;}
@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important;}
}
body{margin:0; background:var(--paper); color:var(--ink); font-family:var(--font-body); font-size:16px; line-height:1.55; overflow-x:hidden;}
img,svg{max-width:100%; display:block;}
h1,h2,h3{font-family:var(--font-display); font-weight:800; line-height:1.15; margin:0 0 .4em;}
p{margin:0 0 1em;}
.wrap{max-width:640px; margin:0 auto; padding:0 20px;}
section{padding:32px 0;}
a{color:var(--primary);}
[hidden]{display:none !important;}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; font-family:var(--font-body); font-weight:800; font-size:1rem; padding:13px 22px; border-radius:999px; border:2px solid transparent; cursor:pointer; text-decoration:none; transition:transform .15s ease-out; min-height:44px;}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--primary); color:var(--ink); box-shadow:var(--shadow-sm);}
.btn-outline{background:transparent; border-color:var(--primary); color:var(--ink);}
.btn-block{width:100%;}
:focus-visible{outline:3px solid var(--primary); outline-offset:2px;}
.hero{text-align:center; padding:48px 0 24px;}
.hero-badge{display:inline-block; font-weight:800; font-size:.82rem; letter-spacing:.03em; text-transform:uppercase; color:var(--ink); background:var(--surface); padding:6px 16px; border-radius:999px; box-shadow:var(--shadow-sm); margin-bottom:14px;}
.hero h1{font-size:2.25rem;}
@media(min-width:480px){.hero h1{font-size:2.75rem;}}
.hero-subtitle{color:var(--ink-soft);}
.age-badge{display:inline-block; font-family:var(--font-display); font-weight:800; font-size:2.5rem; background:var(--accent); color:var(--ink); border-radius:50%; width:3.2em; height:3.2em; line-height:3.2em; margin:12px auto;}
.countdown{display:flex; gap:12px; justify-content:center; margin:20px 0; flex-wrap:wrap;}
.cd-box{background:var(--surface); border-radius:var(--radius-md); box-shadow:var(--shadow-sm); padding:10px 14px; text-align:center; font-family:var(--font-display); font-weight:800; font-size:1.5rem; min-width:66px;}
.cd-box small{display:block; font-family:var(--font-body); font-weight:600; font-size:.7rem; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.03em;}
.event-when{font-weight:700; color:var(--ink-soft); margin-bottom:2px;}
.hero-actions{display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin-top:20px;}
.card{background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); padding:24px; margin-bottom:20px; border:1px solid var(--hairline);}
.section-title{display:flex; align-items:center; gap:10px; margin-bottom:18px;}
.section-title h2{margin:0;}
.section-title .ic{font-size:1.4rem; line-height:1;}
label{display:block; margin-bottom:14px; font-weight:700;}
input,textarea{width:100%; margin-top:6px; padding:11px 14px; border-radius:var(--radius-sm); border:1px solid var(--hairline); background:var(--paper); color:var(--ink); font-family:var(--font-body); font-size:1rem;}
.hp-field{position:absolute; left:-9999px; width:1px; height:1px; opacity:0;}
.attending-choice{border:none; padding:0; margin:0 0 14px;}
.attending-choice legend{font-weight:700; margin-bottom:6px; padding:0;}
.attending-option{display:inline-flex; align-items:center; gap:6px; width:auto; margin:0 18px 0 0; font-weight:400;}
.attending-option input{width:auto; margin:0;}
.form-msg{min-height:1.4em; font-weight:700;}
.preview-banner{background:var(--accent); color:var(--ink); font-weight:800; text-align:center; padding:12px 16px; position:sticky; top:0; z-index:10;}
.preview-note{color:var(--ink-soft); font-style:italic;}

/* Kde (mapa) */
.info-row{display:flex; gap:14px; padding:12px 0; border-bottom:1px solid var(--hairline);}
.info-row:last-child{border-bottom:none;}
.info-row .ic{font-size:1.3rem; flex-shrink:0; width:32px; text-align:center;}
.info-row .t{font-weight:800;}
.info-row .s{color:var(--ink-soft); font-size:.92rem;}
.map-embed-wrap{margin-top:16px;}
.map-embed{
  width:100%; height:260px; border:0; border-radius:var(--radius-md); display:block;
  box-shadow:var(--shadow-sm);
}
.map-attribution{margin:6px 0 0; color:var(--ink-soft); font-size:.78rem; text-align:right;}
.map-links{display:flex; gap:10px; flex-wrap:wrap; margin-top:12px;}
.map-links .btn{flex:1 1 auto;}

/* Program */
.timeline{list-style:none; margin:0; padding:0;}
.timeline li{display:flex; gap:14px; padding:10px 0; border-bottom:1px solid var(--hairline);}
.timeline li:last-child{border-bottom:none;}
.timeline time{font-weight:800; color:var(--primary); min-width:56px; flex-shrink:0;}

/* Soubor (upload fotky) */
.file-field{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:6px;}
.file-field input[type="file"]{position:absolute; left:-9999px; width:1px; height:1px; opacity:0;}
.file-field-btn{width:auto; margin-top:0;}
.file-field-name{color:var(--ink-soft); font-size:.9rem; font-weight:600;}

/* Wishlist */
#wishlist-list{list-style:none; padding:0; margin:0; display:grid; gap:14px; grid-template-columns:1fr;}
@media(min-width:480px){#wishlist-list{grid-template-columns:1fr 1fr;}}
#wishlist-list li{border:2px solid var(--hairline); border-radius:var(--radius-md); padding:16px; display:flex; flex-direction:column; gap:8px;}
.wish-name{font-weight:800;}
.wish-desc{margin:0; color:var(--ink-soft); font-size:.9rem;}
.wish-link{align-self:flex-start; font-weight:700; font-size:.85rem;}
.wish-status{font-size:.78rem; font-weight:800; padding:3px 10px; border-radius:999px; align-self:flex-start;}
.wish-status.free{background:var(--success-bg); color:var(--success-ink);}
.wish-status.taken{background:var(--taken-bg); color:var(--taken-ink);}
#wishlist-list li button{font-size:.85rem; padding:9px 14px; align-self:flex-start;}
/* Rezervace / zrušení přímo v kartě dárku (site.js – místo prompt()/confirm()). */
.wish-inline{display:flex; flex-wrap:wrap; gap:8px; align-items:center;}
.wish-inline input{margin-top:0; flex:1 1 100%;}
.wish-inline p{margin:0; flex:1 1 100%; font-weight:700;}

/* Kniha přání */
#guestbook-list{list-style:none; padding:0; margin:0;}
#guestbook-list li{padding:12px 0; border-bottom:1px solid var(--hairline);}

#photo-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:16px;}
#photo-grid a{display:block; border-radius:var(--radius-sm); overflow:hidden;}
#photo-grid img{border-radius:var(--radius-sm); aspect-ratio:1; object-fit:cover;}
.site-footer{text-align:center; padding:32px 0; color:var(--ink-soft); font-size:.875rem;}

/* Poděkování po RSVP (`site.js`) - stejné vizuální jádro jako `.card`, jen o úroveň níž. */
.rsvp-thankyou{margin-top:16px;}
.rsvp-thankyou p{font-weight:700;}
.rsvp-field-headcount[hidden],.rsvp-field-diet[hidden]{display:none;}
