:root{--navy:#17324d;--blue:#1e6a78;--mint:#dcefeb;--paper:#fffdf8;--ink:#172b3d;--line:#d5dddc;--danger:#8d2525}*{box-sizing:border-box}body{margin:0;background:#f1f5f3;color:var(--ink);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}header{padding:3rem max(1rem,calc((100vw - 980px)/2));background:var(--navy);color:#fff}header h1{margin:.2rem 0;font-family:Georgia,serif;font-size:clamp(2.2rem,7vw,4.5rem);font-weight:500}.eyebrow{text-transform:uppercase;letter-spacing:.16em;color:#9ed1ca;font-weight:700}header p:last-child{max-width:42rem;line-height:1.6}main{max-width:980px;margin:0 auto;padding:1.2rem}.catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.offer{display:grid;grid-template-rows:auto 1fr;overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 32px rgba(23,50,77,.08)}.offer img{width:100%;aspect-ratio:1;object-fit:cover;background:#e4eae8}.offer-body{display:grid;gap:.55rem;padding:1rem}.offer h2,.offer p{margin:0}.code{color:var(--blue);font-weight:800}.description{line-height:1.5;white-space:pre-line}.reserved{opacity:.7}.badge{justify-self:start;padding:.25rem .55rem;border-radius:999px;background:#eee;font-size:.78rem;font-weight:700}.offer label{display:flex;gap:.55rem;align-items:center;font-weight:700}.offer input{width:1.2rem;height:1.2rem}.reservation{position:fixed;inset:auto 1rem 1rem;max-width:560px;margin:auto;padding:1.2rem;display:grid;gap:.8rem;background:#fff;border:2px solid var(--blue);border-radius:18px;box-shadow:0 24px 80px rgba(23,50,77,.3)}.reservation[hidden]{display:none}.reservation h2,.reservation p{margin:0}.reservation label:not(.consent){display:grid;gap:.35rem;font-weight:700}.reservation input[type=text],.reservation input:not([type]){padding:.8rem;border:1px solid var(--line);border-radius:10px;font:inherit}.consent{display:flex;gap:.55rem;font-size:.82rem;line-height:1.4}.consent input{flex:0 0 auto}button{padding:.85rem 1rem;border:0;border-radius:10px;background:var(--blue);color:#fff;font:inherit;font-weight:750}.secondary{background:var(--mint);color:var(--navy)}.status{margin:0 0 1rem;padding:.8rem;border-left:4px solid var(--blue);background:#eef8f6}.status.error{border-color:var(--danger);background:#fff0f0;color:var(--danger)}footer{text-align:center;padding:2rem 1rem;color:#65757a;font-size:.8rem}@media(max-width:540px){header{padding-top:2rem}.catalog{grid-template-columns:1fr}.reservation{max-height:calc(100dvh - 2rem);overflow:auto}}
