:root {
    --ink: #2f3f38;
    --ink-soft: #617068;
    --paper: #fffdf9;
    --cream: #f7f0e6;
    --cream-deep: #eee1d2;
    --sage: #7d9588;
    --sage-dark: #486357;
    --sage-pale: #dce7df;
    --terracotta: #a96f5b;
    --terracotta-dark: #81503f;
    --rose: #edd6cb;
    --gold: #b99a62;
    --white: #fff;
    --danger: #a54343;
    --success: #34664d;
    --shadow: 0 20px 60px rgba(53, 65, 58, .10);
    --shadow-small: 0 8px 28px rgba(53, 65, 58, .09);
    --radius: 24px;
    --radius-small: 14px;
    --serif: Georgia, "Times New Roman", serif;
    --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 88px; }
body {
    margin: 0;
    color: var(--ink);
    background: var(--paper);
    font-family: var(--sans);
    font-size: 16px;
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
}
body.nav-open { overflow: hidden; }
img { display: block; max-width: 100%; }
a { color: var(--sage-dark); text-decoration-thickness: 1px; text-underline-offset: 4px; }
button, input, select, textarea { font: inherit; }
button, .button { touch-action: manipulation; }
:focus-visible { outline: 3px solid #df9d78; outline-offset: 3px; }
::selection { background: var(--rose); color: var(--ink); }
.sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link {
    position: fixed; z-index: 9999; top: 8px; left: 8px; padding: .7rem 1rem;
    border-radius: 8px; color: var(--white); background: var(--ink);
    transform: translateY(-150%); transition: transform .2s;
}
.skip-link:focus { transform: translateY(0); }
.container { width: min(1160px, calc(100% - 2rem)); margin-inline: auto; }
.container-narrow { width: min(760px, calc(100% - 2rem)); margin-inline: auto; }
.section { position: relative; padding: 5rem 0; overflow: hidden; }
.section-soft { background: var(--cream); }
.section-sage { color: var(--white); background: var(--sage-dark); }
.eyebrow {
    margin: 0 0 .8rem; color: var(--terracotta); font-size: .76rem; font-weight: 800;
    letter-spacing: .18em; text-transform: uppercase;
}
.section-sage .eyebrow { color: #f3c9b6; }
.display-title, .section-title {
    margin: 0; font-family: var(--serif); font-weight: 400; line-height: 1.08;
    text-wrap: balance;
}
.display-title { font-size: clamp(3.4rem, 15vw, 8.8rem); letter-spacing: -.055em; }
.section-title { font-size: clamp(2.2rem, 7vw, 4.4rem); letter-spacing: -.035em; }
.lead { max-width: 700px; color: var(--ink-soft); font-size: clamp(1.05rem, 2.4vw, 1.25rem); }
.section-sage .lead { color: #e8f0eb; }
.provisional-label {
    display: inline-flex; align-items: center; gap: .4rem; padding: .35rem .65rem;
    border: 1px solid rgba(169, 111, 91, .35); border-radius: 999px;
    color: var(--terracotta-dark); background: #fff8f3; font-size: .72rem; font-weight: 750;
    letter-spacing: .04em; text-transform: uppercase;
}
.button {
    display: inline-flex; min-height: 48px; align-items: center; justify-content: center;
    gap: .5rem; padding: .78rem 1.25rem; border: 1px solid transparent; border-radius: 999px;
    font-weight: 750; line-height: 1.2; text-align: center; text-decoration: none; cursor: pointer;
    transition: transform .2s, box-shadow .2s, background .2s, border-color .2s;
}
.button:hover { transform: translateY(-2px); }
.button-primary { color: var(--white); background: var(--sage-dark); box-shadow: 0 8px 20px rgba(72, 99, 87, .22); }
.button-primary:hover { background: #375246; }
.button-secondary { color: var(--terracotta-dark); background: var(--cream); border-color: var(--cream-deep); }
.button-secondary:hover { background: #f1e5d6; }
.button-outline { color: var(--ink); background: transparent; border-color: rgba(47, 63, 56, .28); }
.button-outline:hover { border-color: var(--ink); }
.button-light { color: var(--sage-dark); background: var(--white); }
.button-danger { color: var(--white); background: var(--danger); }
.button-small { min-height: 38px; padding: .52rem .85rem; font-size: .86rem; }
.button-row { display: flex; flex-wrap: wrap; gap: .75rem; }
.text-link { font-weight: 750; }

/* Header */
.site-header {
    position: sticky; z-index: 1000; top: 0; height: 76px;
    border-bottom: 1px solid rgba(72, 99, 87, .11);
    background: rgba(255, 253, 249, .92); backdrop-filter: blur(16px);
}
.nav-shell { display: flex; width: min(1220px, calc(100% - 1.5rem)); height: 100%; align-items: center; justify-content: space-between; margin: auto; }
.brand { display: flex; align-items: center; gap: .8rem; color: var(--ink); text-decoration: none; }
.brand-mark { font-family: var(--serif); font-size: 1.7rem; line-height: 1; letter-spacing: -.08em; }
.brand-mark span { color: var(--terracotta); font-size: .7em; font-style: italic; }
.brand-date { padding-left: .8rem; border-left: 1px solid var(--cream-deep); color: var(--ink-soft); font-size: .65rem; font-weight: 750; letter-spacing: .12em; }
.nav-toggle {
    display: grid; width: 46px; height: 46px; place-content: center; gap: 5px;
    border: 0; border-radius: 50%; background: var(--cream); cursor: pointer;
}
.nav-toggle > span:not(.sr-only) { display: block; width: 21px; height: 2px; background: var(--ink); transition: transform .2s, opacity .2s; }
.nav-toggle[aria-expanded="true"] > span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] > span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] > span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.site-nav {
    position: fixed; inset: 76px 0 0; display: flex; flex-direction: column; gap: .25rem;
    padding: 1.25rem; background: var(--paper); visibility: hidden; opacity: 0;
    transform: translateY(-8px); transition: .2s;
}
.site-nav.open { visibility: visible; opacity: 1; transform: translateY(0); }
.site-nav a { padding: .85rem .5rem; color: var(--ink); font-weight: 680; text-decoration: none; }
.site-nav .nav-cta { margin-top: .6rem; padding: .82rem 1rem; border-radius: 999px; color: var(--white); background: var(--sage-dark); text-align: center; }

/* Feedback and forms */
.flash {
    position: relative; z-index: 30; width: min(900px, calc(100% - 2rem)); margin: 1rem auto;
    padding: 1rem 1.15rem; border: 1px solid; border-radius: var(--radius-small);
    box-shadow: var(--shadow-small);
}
.flash ul { margin: .45rem 0 0; padding-left: 1.25rem; }
.flash-success { color: #244d39; border-color: #afd1bb; background: #eaf7ee; }
.flash-error { color: #762d2d; border-color: #dfb4b4; background: #fff0f0; }
.form-grid { display: grid; gap: 1rem; }
.form-grid.two { grid-template-columns: 1fr; }
.field { display: grid; gap: .4rem; }
.field label, .field-label { color: var(--ink); font-size: .88rem; font-weight: 750; }
.field small, .help { color: var(--ink-soft); font-size: .8rem; }
.field input, .field select, .field textarea,
input.input, select.input, textarea.input {
    width: 100%; min-height: 48px; padding: .72rem .85rem;
    border: 1px solid #cbd2ce; border-radius: 11px; color: var(--ink);
    background: var(--white); transition: border-color .2s, box-shadow .2s;
}
.field textarea, textarea.input { min-height: 120px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus,
input.input:focus, select.input:focus, textarea.input:focus {
    border-color: var(--sage-dark); outline: 0; box-shadow: 0 0 0 4px rgba(125, 149, 136, .17);
}
.checkbox { display: flex; align-items: flex-start; gap: .65rem; cursor: pointer; }
.checkbox input { width: 19px; height: 19px; margin-top: .15rem; accent-color: var(--sage-dark); }
.required { color: var(--danger); }
.form-card { padding: clamp(1.2rem, 4vw, 2rem); border: 1px solid var(--cream-deep); border-radius: var(--radius); background: var(--white); box-shadow: var(--shadow-small); }

/* Home */
.hero {
    position: relative; min-height: calc(100svh - 76px); display: grid; align-items: center;
    overflow: hidden; background:
        radial-gradient(circle at 15% 18%, rgba(255,255,255,.95) 0 9%, transparent 24%),
        radial-gradient(circle at 90% 72%, rgba(219,230,223,.9) 0 10%, transparent 30%),
        linear-gradient(135deg, #f7eee2 0%, #fffaf3 55%, #e8efe9 100%);
}
.hero::before, .hero::after {
    content: ""; position: absolute; width: 360px; height: 540px; border: 1px solid rgba(72, 99, 87, .24);
    border-radius: 52% 48% 42% 58%; transform: rotate(28deg); pointer-events: none;
}
.hero::before { top: -190px; left: -230px; }
.hero::after { right: -230px; bottom: -280px; transform: rotate(-35deg); }
.hero-inner { position: relative; z-index: 2; width: min(1120px, calc(100% - 2rem)); margin: auto; padding: 4.5rem 0; }
.hero-kicker { display: flex; align-items: center; gap: .8rem; margin-bottom: 1rem; color: var(--sage-dark); font-size: .72rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
.hero-kicker::before { content: ""; width: 42px; height: 1px; background: var(--sage); }
.hero .display-title span { display: block; margin: -.06em 0 -.02em .55em; color: var(--terracotta); font-size: .64em; font-style: italic; }
.hero-meta { display: grid; gap: .3rem; margin: 1.8rem 0; }
.hero-meta strong { font-family: var(--serif); font-size: clamp(1.25rem, 4vw, 1.65rem); font-weight: 400; }
.hero-meta span { color: var(--ink-soft); font-size: .92rem; }
.hero-actions { display: flex; flex-direction: column; gap: .7rem; }
.countdown { display: grid; grid-template-columns: repeat(4, minmax(60px, 1fr)); gap: .45rem; max-width: 500px; margin: 2rem 0; }
.countdown-item { padding: .7rem .25rem; border: 1px solid rgba(72, 99, 87, .18); border-radius: 14px; background: rgba(255,255,255,.62); text-align: center; backdrop-filter: blur(4px); }
.countdown-item strong { display: block; font-family: var(--serif); font-size: clamp(1.35rem, 6vw, 2rem); font-weight: 400; line-height: 1.1; }
.countdown-item span { color: var(--ink-soft); font-size: .63rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.scroll-cue { display: none; }
.story-grid, .event-grid, .dream-grid, .transmission-grid { display: grid; gap: 2rem; align-items: center; }
.art-frame {
    position: relative; min-height: 390px; overflow: hidden; border-radius: 48% 48% 20px 20px;
    background: linear-gradient(155deg, #d8e3dc, #f6e4d9 60%, #be8c77);
    box-shadow: var(--shadow);
}
.art-frame::before {
    content: ""; position: absolute; inset: 13%; border: 1px solid rgba(255,255,255,.8); border-radius: 50%;
}
.art-frame::after {
    content: "FOTOGRAFIA DO CASAL"; position: absolute; bottom: 1.5rem; left: 50%; transform: translateX(-50%);
    width: max-content; padding: .45rem .7rem; border-radius: 999px; color: var(--sage-dark);
    background: rgba(255,255,255,.78); font-size: .67rem; font-weight: 800; letter-spacing: .11em;
}
.faith-card { position: relative; max-width: 850px; margin: auto; padding: clamp(2rem, 7vw, 5rem); text-align: center; }
.faith-card::before { content: "“"; display: block; height: 3rem; color: #f1c5b1; font-family: var(--serif); font-size: 6rem; line-height: .8; }
.verse-ref { margin-top: 1.5rem; color: #d7e4dc; font-size: .78rem; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.event-card-grid { display: grid; gap: 1rem; margin-top: 2rem; }
.event-card { padding: 1.25rem; border: 1px solid var(--cream-deep); border-radius: 18px; background: var(--white); }
.event-card .icon { display: grid; width: 42px; height: 42px; place-items: center; margin-bottom: 1rem; border-radius: 50%; color: var(--terracotta-dark); background: var(--rose); font-size: 1.2rem; }
.event-card h3 { margin: 0 0 .3rem; font-family: var(--serif); font-size: 1.35rem; font-weight: 400; }
.event-card p { margin: 0; color: var(--ink-soft); }
.orientation-list { display: grid; gap: .85rem; margin: 1.5rem 0 0; padding: 0; list-style: none; counter-reset: guide; }
.orientation-list li { display: grid; grid-template-columns: 44px 1fr; gap: .8rem; align-items: start; padding: 1rem; border-radius: 16px; background: rgba(255,255,255,.68); }
.orientation-list li::before { counter-increment: guide; content: counter(guide, decimal-leading-zero); color: var(--terracotta); font-family: var(--serif); font-size: 1.25rem; }
.gallery-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; margin-top: 2rem; }
.gallery-item { position: relative; min-height: 180px; overflow: hidden; border-radius: 16px; background: linear-gradient(145deg, #dae5df, #efd9cd); }
.gallery-item:nth-child(2), .gallery-item:nth-child(5) { background: linear-gradient(145deg, #f0dfd2, #c9d8cf); }
.gallery-item:nth-child(3) { grid-column: span 2; min-height: 220px; }
.gallery-item::before { content: ""; position: absolute; width: 80px; height: 140px; left: 50%; bottom: -35px; border: 2px solid rgba(255,255,255,.48); border-radius: 50%; transform: rotate(32deg); }
.gallery-item span { position: absolute; right: .7rem; bottom: .7rem; padding: .35rem .55rem; border-radius: 999px; color: var(--ink-soft); background: rgba(255,255,255,.78); font-size: .63rem; font-weight: 750; letter-spacing: .06em; }
.dream-visual { display: grid; min-height: 360px; place-items: center; border-radius: var(--radius); background: linear-gradient(145deg, #f4ded3, #dbe5de); }
.house-line { position: relative; width: 185px; height: 150px; border: 4px solid rgba(72, 99, 87, .62); border-top: 0; }
.house-line::before { content: ""; position: absolute; width: 128px; height: 128px; top: -66px; left: 25px; border-top: 4px solid rgba(72, 99, 87, .62); border-left: 4px solid rgba(72, 99, 87, .62); transform: rotate(45deg); }
.house-line::after { content: "K & D"; position: absolute; inset: 35px; display: grid; place-items: center; font-family: var(--serif); font-size: 2rem; }
.gift-preview-grid, .message-grid { display: grid; gap: 1rem; margin-top: 2rem; }
.gift-mini, .message-card { overflow: hidden; border: 1px solid var(--cream-deep); border-radius: 18px; background: var(--white); box-shadow: var(--shadow-small); }
.gift-mini img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.gift-mini-content { padding: 1rem; }
.gift-mini h3 { margin: 0 0 .3rem; font-family: var(--serif); font-size: 1.25rem; font-weight: 400; }
.gift-mini p { margin: 0; color: var(--ink-soft); font-size: .88rem; }
.message-card { padding: 1.25rem; }
.message-card::before { content: "✦"; color: var(--terracotta); }
.message-card blockquote { margin: .7rem 0; font-family: var(--serif); font-size: 1.08rem; }
.message-card cite { color: var(--ink-soft); font-size: .82rem; font-style: normal; font-weight: 700; }
.cta-band { position: relative; padding: 4.5rem 0; overflow: hidden; color: var(--white); background: var(--terracotta-dark); }
.cta-band::after { content: ""; position: absolute; width: 420px; height: 420px; right: -250px; top: -210px; border: 1px solid rgba(255,255,255,.28); border-radius: 50%; box-shadow: 0 0 0 45px rgba(255,255,255,.03), 0 0 0 90px rgba(255,255,255,.03); }
.cta-band-inner { position: relative; z-index: 2; display: grid; gap: 1.5rem; }
.cta-band h2 { margin: 0; font-family: var(--serif); font-size: clamp(2rem, 8vw, 4rem); font-weight: 400; line-height: 1.05; }
.cta-band p { max-width: 650px; margin: 0; color: #f7eae4; }
.faq-list { display: grid; gap: .65rem; margin-top: 2rem; }
.faq-list details { border: 1px solid var(--cream-deep); border-radius: 15px; background: var(--white); }
.faq-list summary { padding: 1rem 3rem 1rem 1rem; font-weight: 750; cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list details { position: relative; }
.faq-list details::after { content: "+"; position: absolute; top: .7rem; right: 1rem; color: var(--terracotta); font-family: var(--serif); font-size: 1.5rem; pointer-events: none; }
.faq-list details[open]::after { content: "–"; }
.faq-list details p { margin: 0; padding: 0 1rem 1rem; color: var(--ink-soft); }

/* Interior pages */
.page-hero { padding: 4.5rem 0 3rem; background: linear-gradient(145deg, var(--cream), #eef3ef); }
.page-hero .lead { margin-bottom: 0; }
.page-content { padding: 3rem 0 5rem; }
.breadcrumb { display: inline-flex; margin-bottom: 1.3rem; gap: .4rem; color: var(--ink-soft); font-size: .82rem; text-decoration: none; }
.breadcrumb:hover { color: var(--ink); }
.info-box { padding: 1rem 1.1rem; border-left: 4px solid var(--sage); border-radius: 6px 14px 14px 6px; background: var(--sage-pale); }
.warning-box { border-left-color: var(--terracotta); background: #fff2ea; }
.empty-state { padding: 3rem 1rem; border: 1px dashed #bbc6c0; border-radius: var(--radius); text-align: center; }
.empty-state h2 { font-family: var(--serif); font-weight: 400; }

/* RSVP */
.access-guide { display: grid; gap: 1rem; margin: 2rem 0; }
.access-guide article { display: grid; grid-template-columns: 42px 1fr; gap: .8rem; }
.access-guide strong { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 50%; color: var(--white); background: var(--sage-dark); }
.access-guide h3, .access-guide p { margin: 0; }
.access-guide h3 { font-size: 1rem; }
.access-guide p { color: var(--ink-soft); font-size: .88rem; }
.member-response { padding: 1rem; border: 1px solid var(--cream-deep); border-radius: 16px; background: var(--white); }
.member-response + .member-response { margin-top: .8rem; }
.member-response h3 { margin: 0 0 .2rem; font-family: var(--serif); font-size: 1.25rem; font-weight: 400; }
.member-response > p { margin: 0 0 .8rem; color: var(--ink-soft); font-size: .82rem; }
.choice-row { display: grid; gap: .6rem; }
.choice-card { position: relative; display: flex; min-height: 52px; align-items: center; gap: .65rem; padding: .75rem; border: 1px solid #cdd5d0; border-radius: 12px; cursor: pointer; }
.choice-card:has(input:checked) { border-color: var(--sage-dark); background: #edf5f0; box-shadow: 0 0 0 2px rgba(72, 99, 87, .12); }
.choice-card.decline:has(input:checked) { border-color: var(--terracotta); background: #fff3ed; }
.choice-card input { width: 18px; height: 18px; accent-color: var(--sage-dark); }
.rsvp-summary { margin: 1.2rem 0; padding: 1rem; border-radius: 14px; background: var(--cream); }
.rsvp-summary h3 { margin: 0 0 .5rem; font-size: .95rem; }
.rsvp-summary ul { margin: 0; padding-left: 1.2rem; color: var(--ink-soft); font-size: .87rem; }

/* Gifts */
.filter-bar { display: flex; gap: .5rem; margin: 1.5rem 0 2rem; padding-bottom: .3rem; overflow-x: auto; scrollbar-width: thin; }
.filter-button { flex: 0 0 auto; padding: .6rem .9rem; border: 1px solid var(--cream-deep); border-radius: 999px; color: var(--ink); background: var(--white); font-weight: 700; cursor: pointer; }
.filter-button.active { color: var(--white); border-color: var(--sage-dark); background: var(--sage-dark); }
.gift-grid { display: grid; gap: 1.1rem; }
.gift-card { overflow: hidden; border: 1px solid var(--cream-deep); border-radius: 20px; background: var(--white); box-shadow: var(--shadow-small); transition: transform .2s, box-shadow .2s; }
.gift-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.gift-image { position: relative; }
.gift-image img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.gift-badge { position: absolute; top: .7rem; left: .7rem; padding: .35rem .55rem; border-radius: 999px; color: var(--terracotta-dark); background: rgba(255,255,255,.9); font-size: .68rem; font-weight: 800; }
.gift-card-content { padding: 1rem; }
.gift-category { color: var(--terracotta); font-size: .69rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.gift-card h2 { margin: .3rem 0; font-family: var(--serif); font-size: 1.35rem; font-weight: 400; line-height: 1.2; }
.gift-description { min-height: 3.2em; margin: 0; color: var(--ink-soft); font-size: .87rem; }
.gift-meta { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin: 1rem 0; }
.gift-price { font-family: var(--serif); font-size: 1.35rem; }
.gift-stock { color: var(--ink-soft); font-size: .75rem; text-align: right; }
.purchase-details { border-top: 1px solid var(--cream-deep); }
.purchase-details summary { padding: .85rem 1rem; color: var(--sage-dark); font-weight: 800; text-align: center; cursor: pointer; list-style: none; }
.purchase-details summary::-webkit-details-marker { display: none; }
.purchase-details[open] summary { border-bottom: 1px solid var(--cream-deep); }
.purchase-form { padding: 1rem; background: #fffdfa; }
.pilot-payment-note { display: flex; gap: .55rem; margin: 0 0 1rem; padding: .7rem; border-radius: 10px; color: var(--ink-soft); background: var(--cream); font-size: .78rem; }
.gift-card.sold-out { opacity: .7; }

/* Checkout and thanks */
.checkout-layout { display: grid; gap: 1.5rem; }
.order-summary { padding: 1.25rem; border-radius: var(--radius); background: var(--cream); }
.order-summary dl { display: grid; grid-template-columns: 1fr auto; gap: .6rem; margin: 1rem 0 0; }
.order-summary dt { color: var(--ink-soft); }
.order-summary dd { margin: 0; font-weight: 750; text-align: right; }
.simulation-panel { padding: clamp(1.25rem, 4vw, 2rem); border: 2px dashed #b8c7bf; border-radius: var(--radius); }
.simulation-panel h2 { margin-top: 0; font-family: var(--serif); font-weight: 400; }
.simulation-actions { display: grid; gap: .7rem; }
.status-seal { display: grid; width: 74px; height: 74px; place-items: center; margin: 0 auto 1.2rem; border-radius: 50%; color: var(--white); background: var(--sage-dark); font-size: 2rem; }
.thanks-card { padding: clamp(2rem, 7vw, 4rem); border: 1px solid var(--cream-deep); border-radius: var(--radius); background: var(--white); box-shadow: var(--shadow); text-align: center; }
.thanks-card .section-title { margin-bottom: 1rem; }

/* Messages / transmission / privacy */
.message-form-layout { display: grid; gap: 2rem; align-items: start; }
.char-count { color: var(--ink-soft); font-size: .76rem; text-align: right; }
.video-frame { position: relative; display: grid; width: 100%; aspect-ratio: 16 / 9; place-items: center; overflow: hidden; border-radius: var(--radius); background: #26332e; box-shadow: var(--shadow); }
.video-frame iframe { width: 100%; height: 100%; border: 0; }
.video-placeholder { padding: 2rem; color: var(--white); text-align: center; }
.video-placeholder .play { display: grid; width: 70px; height: 70px; place-items: center; margin: 0 auto 1rem; border: 1px solid rgba(255,255,255,.5); border-radius: 50%; font-size: 1.5rem; }
.legal-copy h2 { margin: 2rem 0 .5rem; font-family: var(--serif); font-size: 1.65rem; font-weight: 400; }
.legal-copy ul { padding-left: 1.2rem; }

/* Footer */
.site-footer { padding: 3.5rem 1rem 2rem; color: #dce6df; background: #293a33; text-align: center; }
.footer-flower { color: #e2ae94; }
.footer-names { margin: .7rem 0 .2rem; color: var(--white); font-family: var(--serif); font-size: 1.8rem; }
.footer-names span { color: #e2ae94; font-style: italic; }
.site-footer > p:not(.footer-names) { margin: .2rem 0 1rem; font-size: .84rem; }
.site-footer nav { display: flex; justify-content: center; gap: 1.2rem; margin: 1rem 0; }
.site-footer a { color: #dce6df; font-size: .82rem; }
.site-footer small { color: #9fb0a7; }

.pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .35rem; margin: 2rem 0 0; }
.pagination a, .pagination span { display: grid; min-width: 40px; min-height: 40px; place-items: center; padding: .4rem .65rem; border: 1px solid var(--cream-deep); border-radius: 9px; text-decoration: none; }
.pagination .current { color: var(--white); border-color: var(--sage-dark); background: var(--sage-dark); }
.pagination .disabled { color: #9ea7a2; }

@media (min-width: 560px) {
    .hero-actions, .simulation-actions { display: flex; flex-direction: row; }
    .choice-row { grid-template-columns: 1fr 1fr; }
    .form-grid.two { grid-template-columns: 1fr 1fr; }
    .event-card-grid { grid-template-columns: 1fr 1fr; }
    .gift-preview-grid, .message-grid { grid-template-columns: repeat(2, 1fr); }
    .gift-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gallery-grid { grid-template-columns: repeat(3, 1fr); }
    .gallery-item:nth-child(3) { grid-column: auto; min-height: 180px; }
    .gallery-item:nth-child(1), .gallery-item:nth-child(5) { grid-row: span 2; }
}

@media (min-width: 900px) {
    .section { padding: 7rem 0; }
    .nav-toggle { display: none; }
    .site-nav {
        position: static; flex-direction: row; align-items: center; gap: .2rem; padding: 0;
        background: transparent; visibility: visible; opacity: 1; transform: none;
    }
    .site-nav a { padding: .65rem .62rem; font-size: .78rem; }
    .site-nav .nav-cta { margin: 0 0 0 .35rem; padding: .68rem .95rem; }
    .hero-inner { display: grid; grid-template-columns: 1.08fr .92fr; align-items: end; }
    .hero-copy { grid-column: 1; }
    .hero-side { grid-column: 2; align-self: center; padding-left: 3rem; }
    .hero-side .countdown { margin-left: auto; }
    .hero-side .hero-actions { justify-content: flex-end; }
    .scroll-cue { position: absolute; bottom: 2rem; left: 50%; display: flex; align-items: center; gap: .6rem; color: var(--ink-soft); font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; transform: translateX(-50%); }
    .scroll-cue::before { content: ""; width: 1px; height: 32px; background: var(--sage); }
    .story-grid, .event-grid, .dream-grid, .transmission-grid { grid-template-columns: 1fr 1fr; gap: clamp(3rem, 7vw, 7rem); }
    .story-grid .art-frame { order: 2; min-height: 600px; }
    .event-card-grid { grid-template-columns: repeat(3, 1fr); }
    .orientation-list { grid-template-columns: 1fr 1fr; }
    .gallery-grid { grid-template-columns: 1.25fr .85fr .85fr; grid-template-rows: 220px 220px; gap: 1rem; }
    .gallery-item { min-height: auto; }
    .gallery-item:nth-child(1) { grid-row: span 2; }
    .gallery-item:nth-child(3) { grid-column: auto; }
    .gallery-item:nth-child(5) { grid-row: auto; }
    .gift-preview-grid { grid-template-columns: repeat(3, 1fr); }
    .message-grid { grid-template-columns: repeat(3, 1fr); }
    .cta-band-inner { grid-template-columns: 1fr auto; align-items: center; }
    .cta-band .button-row { grid-column: 2; grid-row: 1 / span 2; }
    .gift-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .checkout-layout { grid-template-columns: .85fr 1.15fr; }
    .message-form-layout { grid-template-columns: .85fr 1.15fr; gap: 4rem; }
    .access-guide { grid-template-columns: repeat(3, 1fr); }
}

@media (min-width: 1180px) {
    .site-nav a { font-size: .83rem; padding-inline: .78rem; }
    .gift-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* v0.9.0 — navegação progressiva, mídia e tokens controlados */
:root { --header-offset: 92px; }
html { scroll-behavior: smooth; scroll-padding-top: var(--header-offset); }
.anchor-section, section[id] { scroll-margin-top: var(--header-offset); }

.content-font-display { font-family: var(--serif); font-style: italic; }
.content-font-serif { font-family: var(--serif); }
.content-font-sans { font-family: var(--sans); }
.content-size-xs { font-size: .78rem !important; }
.content-size-sm { font-size: .9rem !important; }
.content-size-base { font-size: 1rem !important; }
.content-size-lg { font-size: clamp(1.08rem,2vw,1.3rem) !important; }
.content-size-xl { font-size: clamp(1.3rem,3vw,1.8rem) !important; }
.content-size-2xl { font-size: clamp(1.8rem,5vw,3rem) !important; }
.content-size-display { font-size: clamp(2.5rem,8vw,5.5rem) !important; }
.content-size-hero { font-size: clamp(3.4rem,15vw,8.8rem) !important; }
.content-color-ink { color: var(--ink) !important; }
.content-color-forest { color: #214c3b !important; }
.content-color-terracotta { color: #8b493b !important; }
.content-color-gold-dark { color: #6f561c !important; }

.story-media, .dream-media { width: 100%; }
.story-media picture, .dream-media picture, .video-thumbnail-link picture { display:block; width:100%; height:100%; }
.story-photo { width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:50%; box-shadow:var(--shadow); }
.dream-media img { width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius); box-shadow:var(--shadow); }
.gallery-item--media { padding:0; background:var(--cream-deep); }
.gallery-item--media picture, .gallery-item--media img { width:100%; height:100%; }
.gallery-item--media img { object-fit:cover; }
.gallery-empty { grid-column:1/-1; display:grid; min-height:240px; place-items:center; border:1px dashed var(--sage); border-radius:var(--radius); color:var(--ink-soft); background:rgba(255,255,255,.65); }
.event-intro { max-width:780px; margin-bottom:2rem; }
.event-card-grid--three { grid-template-columns:1fr; }
.final-info { text-align:center; }
.final-info .button-row { justify-content:center; }
.video-thumbnail-link { color:#fff; text-decoration:none; }
.video-thumbnail-link img { width:100%; height:100%; object-fit:cover; }
.video-overlay { position:absolute; inset:0; display:grid; place-content:center; justify-items:center; gap:.7rem; color:#fff; background:linear-gradient(180deg,rgba(20,36,29,.08),rgba(20,36,29,.62)); text-align:center; }
.video-overlay .play { display:grid; width:68px; height:68px; place-items:center; border:2px solid currentColor; border-radius:50%; background:rgba(20,36,29,.42); }
.gift-image picture, .gift-mini picture { display:block; width:100%; }
.gift-image img { width:100%; aspect-ratio:4/3; object-fit:cover; }
.gift-mini img { width:100%; aspect-ratio:4/3; object-fit:cover; }

@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .34s; animation-timing-function: cubic-bezier(.2,.75,.25,1); }
html[data-transition-direction="forward"]::view-transition-old(root) { animation-name: page-slide-out-left; }
html[data-transition-direction="forward"]::view-transition-new(root) { animation-name: page-slide-in-right; }
html[data-transition-direction="back"]::view-transition-old(root) { animation-name: page-slide-out-right; }
html[data-transition-direction="back"]::view-transition-new(root) { animation-name: page-slide-in-left; }
@keyframes page-slide-out-left { to { opacity:0; transform:translateX(-4vw); } }
@keyframes page-slide-in-right { from { opacity:0; transform:translateX(4vw); } }
@keyframes page-slide-out-right { to { opacity:0; transform:translateX(4vw); } }
@keyframes page-slide-in-left { from { opacity:0; transform:translateX(-4vw); } }

@media (min-width: 900px) { .event-card-grid--three { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior:auto; }
    @view-transition { navigation:none; }
    ::view-transition-old(root), ::view-transition-new(root) { animation:none !important; }
}

/* Revisão v1.7.1 — refinamento visual e movimento progressivo */
.display-title--segmented { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:flex-start; gap:.12em .22em; }
.hero-name-segment, .hero-name-connector { display:inline-block; }
.hero-name-connector { font-size:.55em; font-style:italic; opacity:.88; }
.event-card-grid--three .event-card { height:100%; text-align:center; }
.event-card-grid--three .event-card .event-icon { width:58px; height:58px; margin-inline:auto; color:var(--terracotta-dark); }
.event-icon img { width:31px; height:31px; display:block; }
.event-map-actions { margin-top:2.75rem; justify-content:center; }
.privacy-button { color:#17372c; background:#fff8ed; border:2px solid #fff8ed; box-shadow:0 8px 22px rgba(0,0,0,.18); }
.privacy-button:hover { color:#fff; background:#17372c; border-color:#fff; transform:translateY(-1px); }
.privacy-button:focus-visible { outline:3px solid #f3c9b6; outline-offset:4px; }
.gallery-grid--symmetric { display:flex; flex-wrap:wrap; justify-content:center; gap:1rem; margin-top:2rem; }
.gallery-grid--symmetric .gallery-item { flex:0 1 100%; margin:0; aspect-ratio:4/3; overflow:hidden; border-radius:18px; background:var(--cream-deep); box-shadow:var(--shadow); }
.gallery-grid--symmetric .gallery-item picture, .gallery-grid--symmetric .gallery-item img { display:block; width:100%; height:100%; }
.gallery-grid--symmetric .gallery-item img { object-fit:cover; }
.gallery-grid--symmetric .gallery-empty { width:100%; }
.reveal-supported .reveal-pending { opacity:0; transform:translateY(22px); }
.reveal-supported .reveal-visible { opacity:1; transform:translateY(0); transition:opacity .56s cubic-bezier(.2,.75,.25,1), transform .56s cubic-bezier(.2,.75,.25,1); }
@media (min-width:650px) { .gallery-grid--symmetric .gallery-item { flex-basis:calc(50% - .5rem); } }
@media (min-width:1100px) { .gallery-grid--symmetric .gallery-item { flex-basis:calc(25% - .75rem); } }
@media (max-width:640px) { .display-title--segmented { justify-content:center; } .event-map-actions { margin-top:2rem; } }
@media (prefers-reduced-motion: reduce) {
    .reveal-supported .reveal-pending, .reveal-supported .reveal-visible { opacity:1 !important; transform:none !important; transition:none !important; }
    .privacy-button:hover { transform:none; }
}

/* Revisão v1.7.2 — composição canônica de cinco quadros */
.gallery-grid--canonical{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    grid-template-rows:repeat(2,minmax(180px,1fr));
    gap:1rem;
    margin-top:2rem;
}
.gallery-grid--canonical .gallery-item--canonical{
    min-height:0;
    margin:0;
    aspect-ratio:auto;
    border-radius:18px;
    overflow:hidden;
    background:var(--cream-deep);
    box-shadow:var(--shadow);
}
.gallery-grid--canonical .gallery-item--canonical::before{display:none}
.gallery-grid--canonical .gallery-item--slot-1{grid-column:1/3;grid-row:1/3}
.gallery-grid--canonical .gallery-item--slot-2{grid-column:3;grid-row:1}
.gallery-grid--canonical .gallery-item--slot-3{grid-column:4;grid-row:1}
.gallery-grid--canonical .gallery-item--slot-4{grid-column:3;grid-row:2}
.gallery-grid--canonical .gallery-item--slot-5{grid-column:4;grid-row:2}
.gallery-grid--canonical picture,.gallery-grid--canonical img{display:block;width:100%;height:100%}
.gallery-grid--canonical img{object-fit:cover}
.gallery-slot-empty{display:grid;place-items:center;width:100%;height:100%;min-height:180px;border:1px dashed rgba(73,103,91,.5);color:var(--ink-soft);background:linear-gradient(145deg,#e4ece7,#f1e4da)}
.gallery-slot-empty span{position:static;padding:.45rem .7rem;border-radius:999px;background:rgba(255,255,255,.78);font-size:.72rem;font-weight:750;letter-spacing:.04em}
@media(max-width:980px){
    .gallery-grid--canonical{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto}
    .gallery-grid--canonical .gallery-item--slot-1{grid-column:1/-1;grid-row:auto;aspect-ratio:16/9}
    .gallery-grid--canonical .gallery-item--slot-2,.gallery-grid--canonical .gallery-item--slot-3,.gallery-grid--canonical .gallery-item--slot-4,.gallery-grid--canonical .gallery-item--slot-5{grid-column:auto;grid-row:auto;aspect-ratio:4/3}
}
@media(max-width:620px){
    .gallery-grid--canonical{grid-template-columns:1fr;gap:.8rem}
    .gallery-grid--canonical .gallery-item--canonical{grid-column:auto;grid-row:auto;aspect-ratio:4/3}
    .gallery-grid--canonical .gallery-item--slot-1{aspect-ratio:4/3}
}

/* Revisão v1.7.3 — enquadramento, cartões fixos e assinatura tipográfica */
.focal-media{object-fit:cover;object-position:50% 50%;}
.media-picture{display:block;width:100%;height:100%;}
.media-picture>img{display:block;}

.gift-image,.gift-mini>a:first-child,.gift-mini .gift-image{
    display:block;
    width:100%;
    aspect-ratio:4/3;
    overflow:hidden;
    background:var(--cream-deep);
}
.gift-image picture,.gift-image img,.gift-mini picture,.gift-mini>a:first-child>img{
    display:block;
    width:100%;
    height:100%;
    aspect-ratio:auto;
    object-fit:cover;
}

.story-media{max-width:min(100%,520px);margin-inline:auto;}
.story-photo{max-height:min(54vh,520px);}
.dream-media{max-width:min(100%,680px);margin-inline:auto;}
.dream-media img{max-height:min(58vh,540px);}

.content-font-display{font-family:var(--serif)!important;font-style:normal!important;}
.content-font-serif,.content-font-sans,.content-font-default{font-style:normal!important;}
.couple-signature{
    display:flex;
    flex-wrap:wrap;
    align-items:baseline;
    gap:.12em .22em;
    font-style:normal;
}
.couple-signature__segment{display:inline-block;margin:0!important;font-style:normal;line-height:1.03;}
.couple-signature--stacked{flex-direction:column;align-items:center;justify-content:center;gap:.06em;}
.couple-signature--inline{flex-direction:row;}
.couple-signature--hero{justify-content:flex-start;}
.hero .couple-signature__segment{display:inline-block;margin:0;color:inherit;font-size:inherit;font-style:normal;}
.hero .couple-signature__segment--connector{opacity:.9;}
.couple-signature--header{align-items:center;justify-content:center;gap:.04em;letter-spacing:0;}
.brand-mark.couple-signature{font-size:1.7rem;line-height:1;}
.brand-mark .couple-signature__segment{color:inherit;font-size:inherit;font-style:normal;}
.brand-mark .couple-signature__segment--connector{font-size:.72em;}
.footer-names.couple-signature{justify-content:center;margin:.7rem 0 .2rem;}
.footer-names .couple-signature__segment{color:inherit;font-style:normal;}
.footer-names .couple-signature__segment--connector{color:#e2ae94;}

@media(min-width:900px){
    .story-grid{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);}
    .dream-grid{grid-template-columns:minmax(0,1fr) minmax(360px,.9fr);}
}
@media(max-width:640px){
    .couple-signature--hero{justify-content:center;}
    .story-media,.dream-media{max-width:100%;}
    .story-photo,.dream-media img{max-height:none;}
}
.gift-mini>picture{display:block;width:100%;aspect-ratio:4/3;overflow:hidden;background:var(--cream-deep);}
.gift-mini>picture>img{width:100%;height:100%;aspect-ratio:auto;object-fit:cover;}

/* Reset de especificidade da capa: os tokens salvos prevalecem sobre o estilo histórico. */
.hero .display-title.couple-signature .couple-signature__segment{
    display:inline-block;
    margin:0!important;
    color:inherit;
    font-size:inherit;
    font-style:normal!important;
}
.hero .display-title.couple-signature .couple-signature__segment--connector{font-size:.55em;}
