:root{--bg:#ece9e0;--paper:#fbf7ec;--ink:#273e35;--muted:#70776b;--line:#d8d2c1;--green:#254537;--red:#713d43;--gold:#9a804f;--soft:#e8ecdf}
body{background:var(--bg);background-image:linear-gradient(110deg,#d8c8a218,transparent 50%,#c6c6b61a)}
.container{max-width:1430px}.top{background:#233e32;border-bottom:2px solid #978258;color:#ede6d4}.brand,.top nav a,.top .link-button{color:#eee8d8}.brand{letter-spacing:.18em}.brand small{color:#d2c7ae;font-size:10px}.brand-symbol{font-size:32px;color:#c6af7a}.top nav a{font-size:13px}.top nav a:hover{color:#e2c78d}.page-heading h1{font-size:clamp(30px,3.2vw,45px);color:#284234}.page-heading h1 em{color:var(--red)}.page-heading .actions{justify-content:flex-end;max-width:530px}.card{border-radius:3px;border-color:#d7cfbc;box-shadow:0 3px 16px #3a392107;background:#faf8f1}.card h2{font-family:Georgia,serif;font-weight:400;color:#344b3c}.section-bar h2{font-family:Georgia,serif;font-weight:400;font-size:26px}
button,.button{border-radius:3px;transition:background .18s,box-shadow .18s}button:hover,.button:hover{background:#365845;color:#fff;filter:none;box-shadow:0 2px 9px #233d2918}.secondary:hover{background:#e9ecdf!important;color:var(--ink)!important}.mode-notice{display:flex;flex-direction:column;gap:5px;border-radius:2px;border:1px solid #d7cbae;border-left:3px solid #a58b55;background:#f1ebdc;color:#63563b}.mode-notice span{font-size:13px}.mode-notice small{font-size:11px}
.invitation-stats{display:flex;flex-wrap:wrap;gap:10px}.invitation-stats .stat{flex:1 1 202px;min-width:0;padding:17px 20px;gap:13px;border-radius:3px;border-color:#d7d0bf;box-shadow:0 2px 5px #4c432605}.invitation-stats .stat span{font-size:12px;min-height:35px;max-width:200px}.invitation-stats .stat strong{font-size:32px}.stat.yes{background:#2b4939}.stat.excluded{background:#e9e2d9}.stat.sent{border-top:2px solid #87967b}.stat.missing_contact{border-top:2px solid #ac925c}.table-help{padding:15px 22px;margin:0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.7;color:var(--muted)}.people-table{font-size:13px}.people-table th{background:#e8eadf;font-size:11px;white-space:nowrap}.people-table td,.people-table th{padding:15px 16px}.people-table td{vertical-align:top}.people-table tbody tr:hover{background:#f1f0e6}.people-table .person-name{font-weight:600}.selection-form{min-width:235px}.channel-options{display:flex;gap:18px;align-items:flex-start}.channel-options>div{flex:1}.channel-control{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;min-height:29px;cursor:pointer;white-space:nowrap}.channel-control input{width:18px;height:18px;min-height:0;margin:0;display:inline-block;accent-color:var(--green)}.channel-control input:disabled+span{color:#929386}.channel-reason{font-size:10px!important;line-height:1.5;max-width:118px;color:#7d7869!important;margin-top:1px!important}.channel-reason.possible{color:#6b7b61!important}.exclude-control{margin:11px 0 9px;font-size:12px;min-height:26px;align-items:center}.exclude-control input{width:17px;height:17px;margin:0}.selection-save{display:flex;gap:9px;align-items:center}.selection-save small{font-size:10px;max-width:120px;color:#855e36}.save-selection{min-height:31px;padding:5px 11px;font-size:11px}.excluded-person{background:#eee8de}.excluded-person .person-name{color:#7b7060}.contact-missing{color:#874d43!important}.channel-status{font-size:10px!important;line-height:1.6;max-width:165px}.people-table .pill{white-space:normal;max-width:150px;font-size:10px;padding:5px 8px;border-radius:3px;line-height:1.5}.pill.pending{background:#eadfbe;color:#6e572c}.pill.failed{background:#eddcd3;color:#7e4033}.pill.accepted{background:#dce4d4;color:#3e5b3b}.round-list{list-style:none;padding:0;margin:0}.round-list li{padding:15px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:18px;font-size:14px}.round-list li small{display:block;color:var(--muted);margin-top:5px}.round-list li:last-child{border:0}.step-heading{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}
.guest{background:#203b32;background-image:radial-gradient(ellipse at 15% 0,#59705a47,transparent 50%),linear-gradient(135deg,#152c26,#30463c 55%,#1d332d)}.guest .top{max-width:1040px;margin:auto;background:transparent;border:0;padding:27px 28px 15px;min-height:80px}.guest .brand{font-size:18px}.guest .top-note{font:italic 14px Georgia,serif;color:#c7c5ae}.guest-container{max-width:940px;padding:25px 25px 40px}.woodland-letter{background:var(--paper);background-image:linear-gradient(110deg,#b79d6c09,transparent 45%,#9e835808),repeating-linear-gradient(0deg,#654c2e03 0 1px,transparent 1px 4px);border:1px solid #b19b69;padding:12px;box-shadow:0 25px 75px #071a1559;position:relative;border-radius:1px;animation:paper-arrival .65s ease-out both}.event-hero{height:496px;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;position:relative;overflow:hidden;background:#3a4b40;color:#faf3df;animation:none}.woodland-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 59%;pointer-events:none}.event-hero:before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#0c241d20,#10251d27 65%,#10251d10);z-index:1;pointer-events:none}.event-hero:after{content:'';position:absolute;inset:13px;border:1px solid #c9b78180;z-index:2;pointer-events:none}.invitation-heading{position:relative;z-index:3;padding:42px 25px 0;text-align:center;text-shadow:0 2px 14px #0b211dcc}.woodland-seal{color:#e1ce9e;font:27px Georgia,serif;margin-bottom:12px}.event-hero .eyebrow{color:#f0dfb6;font-size:9px;letter-spacing:.29em;margin:0 0 21px}.event-hero h1{font:400 clamp(42px,6.5vw,65px)/1.08 Georgia,'Times New Roman',serif;color:#fff8e6;letter-spacing:-.035em;margin:0 0 17px}.event-hero h1 em{display:block;font:400 88px/1.08 Georgia,serif;letter-spacing:.12em;color:#efdeae;margin:10px 0 0;padding-left:.12em}.woodland-subtitle{font:italic 18px/1.6 Georgia,serif;letter-spacing:.015em;color:#fff5db;margin:0}.gold-divider{display:flex;align-items:center;gap:13px;max-width:150px;color:#dbc79a;font-size:10px;margin:21px auto}.gold-divider:before,.gold-divider:after{content:'';height:1px;flex:1;background:#d5c18d9c}.landscape-caption{position:absolute;z-index:3;bottom:31px;left:20px;right:20px;margin:0;text-align:center;font:italic 13px Georgia,serif;color:#faf3df;text-shadow:0 2px 10px #132a21}.event-ribbon{display:grid;grid-template-columns:1.15fr 1fr;text-align:center;gap:25px;padding:32px 42px 20px;color:#374e3d}.event-ribbon p{font-size:13px;line-height:1.8;margin:0}.event-ribbon p+p{border-left:1px solid #c9bb9c}.event-ribbon span{display:block;text-transform:uppercase;letter-spacing:.17em;font-size:8px;color:#8a7853;margin-bottom:8px}.event-ribbon strong{font:400 19px/1.5 Georgia,serif}.closing-note{text-align:center;color:#7b7866;font-size:11px;line-height:1.7;margin:0 52px;padding:0 0 26px;border-bottom:1px solid #cabd9e}
.guest .woodland-letter .card{background:none;box-shadow:none;border:0;border-radius:0;margin:0;padding:36px 57px 25px}.response-card .eyebrow{font-size:9px;color:#968054;letter-spacing:.22em;margin-bottom:12px}.response-card h2{font:400 43px/1.2 Georgia,serif;color:#713e43;margin:0 0 25px}.response-card>p{font-size:16px;line-height:1.9;margin-bottom:16px}.response-card .letter-signature,.letter-signature{font:italic 19px/1.6 Georgia,serif;color:#6b765c;margin-top:20px}.response-heading{display:flex;align-items:center;gap:15px;border-top:1px solid #d3c8ae;padding-top:26px;margin-top:29px}.response-heading>span{color:#aa8b54;font-size:22px}.response-heading h3{font:400 24px Georgia,serif;color:#334d3a;margin:0}.status-box{border:1px solid #ccd6bf;background:#e8eddd;border-radius:3px;padding:15px 18px;margin:21px 0}.status-box.no{background:#eee2d8;border-color:#dbc5b8}.status-box span{font-size:13px;line-height:1.6}.rsvp-buttons{grid-template-columns:1fr 1.35fr;gap:13px;margin-top:21px}.rsvp-buttons button{font-size:14px;min-height:52px}.rsvp-buttons .secondary{color:#713d43;border-color:#b29b88}.rsvp-buttons button[aria-pressed=true]{box-shadow:0 0 0 2px #ad95614d}.response-card .small{font-size:12px;line-height:1.8}.guest .woodland-letter .meal-card{margin:0 57px;padding:27px 0 31px;border-top:1px solid #d3c8ae}.meal-card .eyebrow{font-size:9px;margin-bottom:11px}.meal-card h2{font:400 29px Georgia,serif;color:#713e43}.meal-card .notice{border-radius:3px;background:#eeeadc;border:1px solid #dacfae;color:#615b46;font-size:14px;margin:0}.meal-card .notice p{line-height:1.8;margin-top:5px}.privacy{font-size:11px;line-height:1.9;color:#c4c9b9;text-align:center;max-width:700px;margin:27px auto 0;padding:0 20px}.guest footer{max-width:900px;border-color:#8b946a3d;color:#aeb8a4}.guest>.narrow{background:var(--paper)}.guest .back{color:#e8ddbd}.guest .card .back,.print-toolbar a{color:var(--ink)}.guest .error-page{background:var(--paper);padding:30px}.guest .intro h1{color:#eee5ce}.guest .intro p,.guest .intro .eyebrow{color:#d2c8ac}
.print-toolbar{margin:0 0 23px;background:#eee9da;padding:15px;border-radius:3px}.print-toolbar a:not(.button){color:#314b38}.print-invitation .woodland-letter{padding:10px}.print-greeting{text-align:center;padding:33px 45px 27px}.print-greeting .eyebrow{font-size:9px;letter-spacing:.22em}.print-greeting h2{font:400 37px Georgia,serif;color:#713e43;margin:14px 0 22px}.print-greeting>p{font-size:16px;line-height:1.9;margin-bottom:12px}.print-response{display:flex;align-items:center;justify-content:center;gap:22px;margin:24px 0}.invitation-qr{width:112px;height:112px;background:#fff;padding:7px;border:1px solid #c6b48e}.print-response p{font-size:12px;line-height:1.8;text-align:left;margin:0}.print-response:has(.print-local-note){flex-direction:column;gap:13px}.print-flourish{font:20px Georgia,serif;color:#a68c55;letter-spacing:.2em}.print-response .print-local-note{color:#8b826e;text-align:center;font-size:10px}.print-signature{font:10px 'Segoe UI',sans-serif!important;color:#8b8067;letter-spacing:.08em;margin-bottom:0!important}
@keyframes paper-arrival{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:1000px){.page-heading .actions{justify-content:flex-start;max-width:none}.people-table td,.people-table th{padding:13px}.selection-form{min-width:215px}.invitation-stats .stat{flex-basis:180px}}
@media(max-width:700px){.invitation-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.invitation-stats .stat{padding:13px;gap:9px}.invitation-stats .stat:last-child{grid-column:span 2}.invitation-stats .stat span{min-height:39px;font-size:11px}.invitation-stats .stat strong{font-size:29px}.people-table thead{display:none}.people-table,.people-table tbody,.people-table tr,.people-table td{display:block;width:100%}.people-table tr{padding:18px;border-bottom:1px solid #c1b69d}.people-table td{padding:8px 0;border:0}.people-table td:before{content:attr(data-label);display:block;font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:#807762;margin-bottom:5px}.people-table td:first-child:before{display:none}.people-table .person-name{font:22px Georgia,serif}.people-table .selection-form{min-width:0}.people-table .channel-options{gap:19px;max-width:330px}.channel-reason{max-width:none}.save-selection{min-height:37px;padding:7px 16px;font-size:12px}.people-table .pill{max-width:none}.channel-status{max-width:none;font-size:11px!important}.table-help{padding:15px 19px}.table-wrap:has(.people-table){overflow:visible}.round-list li{flex-direction:column;gap:5px}
.guest .top{padding:19px 21px 8px;min-height:65px}.guest .top-note{display:none}.guest .brand{font-size:16px}.guest-container{padding:15px 11px 28px}.woodland-letter{padding:6px}.event-hero{height:435px;padding:0;margin:0;border-radius:0;overflow-wrap:normal}.woodland-image{object-position:57% 50%}.event-hero:after{inset:9px}.invitation-heading{padding:38px 12px 0}.woodland-seal{font-size:24px;margin-bottom:14px}.event-hero .eyebrow{font-size:7px;letter-spacing:.21em;margin-bottom:23px}.event-hero h1{font-size:clamp(27px,8.7vw,45px);letter-spacing:-.035em;margin-bottom:15px}.event-hero h1 em{font-size:68px;letter-spacing:.08em;padding-left:.08em;margin-top:15px}.woodland-subtitle{font-size:15px;max-width:260px;margin:auto;line-height:1.8}.gold-divider{margin:19px auto;max-width:110px}.landscape-caption{font-size:11px;bottom:24px}.event-ribbon{grid-template-columns:1fr;padding:26px 16px 17px;gap:21px}.event-ribbon p{font-size:12px;line-height:1.8}.event-ribbon p+p{border-left:0}.event-ribbon span{font-size:7px;margin-bottom:5px}.event-ribbon strong{font-size:18px}.closing-note{margin:0 20px;padding-bottom:23px;font-size:10px;line-height:1.8}.guest .woodland-letter .card{padding:29px 20px 23px}.response-card h2{font-size:34px;margin-bottom:22px}.response-card>p{font-size:15px;line-height:1.85}.response-card .letter-signature{font-size:18px}.response-heading{gap:11px;margin-top:25px;padding-top:23px}.response-heading h3{font-size:23px}.rsvp-buttons{grid-template-columns:1fr;gap:13px}.rsvp-buttons button{font-size:14px;min-height:54px}.status-box{padding:15px}.status-box strong{font-size:14px}.guest .woodland-letter .meal-card{margin:0 20px;padding:25px 0 28px}.meal-card h2{font-size:27px}.meal-card .notice{font-size:13px;padding:17px}.privacy{font-size:10px;padding:0 12px}.mode-notice span{font-size:12px}.mode-notice small{font-size:10px}.print-greeting{padding:25px 20px}.print-greeting h2{font-size:32px}.print-greeting>p{font-size:14px}.print-response{flex-direction:column}.print-response p{text-align:center}.print-line{display:none}.print-invitation .woodland-letter{padding:6px}}
@media(prefers-reduced-motion:reduce){.woodland-letter,.event-hero{animation:none}button,.button{transition:none}}
@page{size:A4;margin:13mm}
@media print{body.guest{background:#fff}.guest-container.print-invitation{padding:0;max-width:none}.print-invitation .print-sheet{padding:3mm;border:1px solid #ab925b;box-shadow:none;min-height:263mm;break-inside:avoid;animation:none;print-color-adjust:exact;-webkit-print-color-adjust:exact}.print-invitation .event-hero{height:88mm;padding:0}.print-invitation .event-hero:after{inset:3mm}.print-invitation .invitation-heading{padding:7mm 3mm 0}.print-invitation .woodland-seal{font-size:20px;margin-bottom:3mm}.print-invitation .event-hero .eyebrow{font-size:7px;margin-bottom:4mm}.print-invitation .event-hero h1{font-size:40px;margin-bottom:3mm}.print-invitation .event-hero h1 em{font-size:65px;line-height:1.05;margin-top:1mm}.print-invitation .woodland-subtitle{font-size:13px}.print-invitation .gold-divider{margin:3mm auto}.print-invitation .landscape-caption{bottom:5mm;font-size:9px}.print-invitation .event-ribbon{grid-template-columns:1.15fr 1fr;padding:7mm 6mm 4mm;gap:6mm}.print-invitation .event-ribbon p{font-size:10px}.print-invitation .event-ribbon p+p{border-left:1px solid #c9bb9c}.print-invitation .event-ribbon span{font-size:7px}.print-invitation .event-ribbon strong{font-size:15px}.print-invitation .closing-note{font-size:8px;margin:0 10mm;padding-bottom:5mm}.print-invitation .print-greeting{padding:6mm 8mm 3mm}.print-invitation .print-greeting .eyebrow{font-size:7px;margin-bottom:2mm}.print-invitation .print-greeting h2{font-size:29px;margin:2mm 0 4mm}.print-invitation .print-greeting>p{font-size:12px;line-height:1.8;margin-bottom:3mm}.print-invitation .print-greeting .letter-signature{font-size:15px}.print-invitation .print-response{flex-direction:row;gap:5mm;margin:5mm 0}.print-invitation .print-response:has(.print-local-note){flex-direction:column;gap:2mm}.print-invitation .invitation-qr{width:28mm;height:28mm}.print-invitation .print-response p{font-size:9px}.print-invitation .print-response .print-local-note{font-size:7px}.print-invitation .print-signature{font-size:8px!important}.print-toolbar{display:none!important}}

/* Quiet, decorative motion for the personal invitation only. */
.guest-container:not(.print-invitation) .woodland-letter{animation:none}
.woodland-atmosphere{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;--snow-travel:510px}
.woodland-atmosphere *{pointer-events:none}
.woodland-lantern-glow{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 59%;opacity:.2;animation:woodland-lantern 8.5s ease-in-out infinite}
.woodland-snow{position:absolute;inset:0}
.snowflake{position:absolute;top:-12px;left:10%;width:2px;height:2px;border-radius:50%;background:#fff8e9;animation:woodland-snowfall 22s linear infinite;animation-delay:-10s}
.snowflake:nth-child(2){left:24%;animation-duration:27s;animation-delay:-18s}
.snowflake:nth-child(3){left:38%;width:3px;height:3px;animation-duration:31s;animation-delay:-5s}
.snowflake:nth-child(4){left:51%;animation-duration:25s;animation-delay:-22s}
.snowflake:nth-child(5){left:65%;animation-duration:34s;animation-delay:-12s}
.snowflake:nth-child(6){left:77%;width:3px;height:3px;animation-duration:29s;animation-delay:-22s}
.snowflake:nth-child(7){left:87%;animation-duration:36s;animation-delay:-17s}
.snowflake:nth-child(8){left:95%;animation-duration:24s;animation-delay:-8s}
.guest-container:not(.print-invitation) .invitation-heading,.guest-container:not(.print-invitation) .response-card{animation:invitation-reveal .5s ease-out both}
.guest-container:not(.print-invitation) .rsvp-buttons button{touch-action:manipulation;transition:transform .12s ease,background .18s ease,box-shadow .18s ease}
.guest-container:not(.print-invitation) .rsvp-buttons button:active{transform:translateY(1px) scale(.995);box-shadow:inset 0 1px 3px #18312526}
.guest-container:not(.print-invitation) .rsvp-buttons button:focus-visible{outline:2px solid #a58b55;outline-offset:3px}
@media(hover:hover) and (pointer:fine){.guest-container:not(.print-invitation) .rsvp-buttons button:hover{transform:translateY(-1px)}}
@keyframes woodland-snowfall{0%{opacity:0;transform:translate3d(0,-8px,0)}10%,85%{opacity:.5}100%{opacity:0;transform:translate3d(14px,var(--snow-travel),0)}}
@keyframes woodland-lantern{0%,100%{opacity:.18}14%{opacity:.24}28%{opacity:.21}44%{opacity:.27}68%{opacity:.2}84%{opacity:.25}}
@keyframes invitation-reveal{from{opacity:.8;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(max-width:700px){.woodland-atmosphere{--snow-travel:450px}.woodland-lantern-glow{object-position:57% 50%}.snowflake:nth-child(even){display:none}}
@media(prefers-reduced-motion:reduce){
 .woodland-atmosphere{display:none}
 .guest-container:not(.print-invitation) .invitation-heading,.guest-container:not(.print-invitation) .response-card{animation:none;opacity:1;transform:none}
 .guest-container:not(.print-invitation) .rsvp-buttons button{transition:none;transform:none!important}
}
@media print{
 .woodland-atmosphere{display:none!important}
 .guest-container .invitation-heading,.guest-container .response-card{animation:none!important;opacity:1!important;transform:none!important}
 .guest-container .rsvp-buttons button{transition:none;transform:none!important}
}
