/* Guest-facing pages: wedding website language (cream, dark green, sage; Dancing Script / Cinzel / Poppins). Mobile first. */
:root { --cream:#fffaef; --ink:#0d4700; --sea:#388142; --paper:#fffffe; --muted:#4b5b45; --line:rgba(13,71,0,.22); --bad:#8a2d2d; }
* { box-sizing: border-box; }
body { margin: 0; background: var(--cream); color: var(--ink); font: 300 1rem/1.7 Poppins, sans-serif; overflow-x: hidden; }
.script { font-family: 'Dancing Script', cursive; font-weight: 600; }
.cap { font-family: Cinzel, serif; text-transform: uppercase; letter-spacing: .2em; font-size: .8rem; }
.sr { position: absolute; left: -9999px; }
.center { max-width: 30rem; margin: 0 auto; padding: 14vh 1.25rem 3rem; text-align: center; }
h1.script { font-size: clamp(3rem, 14vw, 4.5rem); line-height: 1.05; margin: 0 0 .25rem; }
h2 { font-family: Cinzel, serif; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; font-size: 1rem; margin: 0 0 .5rem; }
input, select, textarea { font: inherit; padding: .75em .9em; min-height: 48px; border: 1px solid var(--line); background: var(--paper); color: var(--ink); width: 100%; border-radius: 0; }
textarea { min-height: 72px; }
input:focus-visible, select:focus-visible, textarea:focus-visible, .btn:focus-visible, .opt:focus-within { outline: 2px solid var(--sea); outline-offset: 2px; }
.btn { display: inline-block; min-height: 48px; border: 1px solid var(--ink); padding: .6em 1.6em; font-family: Cinzel, serif; letter-spacing: .2em; text-transform: uppercase; font-size: .8rem; color: var(--ink); background: transparent; cursor: pointer; }
.btn:hover { background: var(--ink); color: var(--cream); }
.btn.solid { background: var(--ink); color: var(--cream); } .btn.solid:hover { background: var(--sea); border-color: var(--sea); }
.gate form { display: grid; gap: .75rem; margin: 1.5rem 0 .5rem; }
.hint { color: var(--muted); font-size: .9rem; margin: .5rem 0; }
.msg { color: var(--bad); min-height: 1.7em; font-size: .95rem; }
.wrap { max-width: 36rem; margin: 0 auto; padding: 2.5rem 1.25rem 4rem; }
.wrap header { text-align: center; margin-bottom: 1.5rem; }
.wrap header h1 { font-size: clamp(2.6rem, 11vw, 3.6rem); margin: 0; }
.lede { color: var(--muted); }
.row2 { display: grid; gap: .75rem; grid-template-columns: 1fr; }
label.f { display: block; text-align: left; font-family: Cinzel, serif; letter-spacing: .1em; text-transform: uppercase; font-size: .75rem; margin-bottom: .25rem; }
.match { display: block; width: 100%; text-align: left; margin: .6rem 0; padding: 1rem 1.1rem; background: var(--paper); border: 1px solid var(--line); cursor: pointer; font: inherit; color: var(--ink); min-height: 48px; }
.match:hover { border-color: var(--sea); }
.match b { display: block; font-weight: 500; } .match span { color: var(--muted); font-size: .9rem; }
.card { background: var(--paper); border: 1px solid var(--line); padding: 1.25rem; margin: 1rem 0; }
.card h3 { font-family: 'Dancing Script', cursive; font-weight: 700; font-size: 2rem; line-height: 1.1; margin: 0 0 .25rem; }
.ev { border-top: 1px solid var(--line); padding-top: .9rem; margin-top: .9rem; }
.ev h4 { font-family: Cinzel, serif; letter-spacing: .1em; text-transform: uppercase; font-size: .9rem; font-weight: 500; margin: 0; }
.ev .when { color: var(--muted); font-size: .88rem; margin-bottom: .6rem; }
.opts { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin-bottom: .6rem; }
.opt { position: relative; }
.opt input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; min-height: 0; cursor: pointer; }
.opt span { display: block; text-align: center; padding: .7em .5em; min-height: 48px; border: 1px solid var(--line); background: var(--paper); font-family: Cinzel, serif; letter-spacing: .12em; text-transform: uppercase; font-size: .8rem; line-height: 1.8; }
.opt input:checked + span { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.extra { margin-top: .5rem; }
.ok { color: var(--ink); background: #e6f0e7; border: 1px solid var(--line); padding: .9rem 1rem; margin: 1rem 0; }
.error { color: var(--bad); }
.back { background: none; border: 0; color: var(--sea); font: inherit; cursor: pointer; text-decoration: underline; padding: .5rem 0; min-height: 44px; }
@media (min-width: 600px) { .row2 { grid-template-columns: 1fr 1fr; } }
