/* A shared wedding identity. Values are chosen palettes, never user-entered CSS. */
[data-palette]{--w-paper:#f7f3ec;--w-soft:#e9ddcb;--w-accent:#796044;--w-dark:#29251f;--w-ink:#28241f;--w-muted:#726657;--w-line:#ded1be;--w-light:#fffdf9;--w-art-filter:none}
[data-palette=sage]{--w-paper:#f4f5ef;--w-soft:#dce5d7;--w-accent:#49634c;--w-dark:#243b2d;--w-ink:#24362a;--w-muted:#5e6d5b;--w-line:#cfd9ca;--w-light:#fcfdf9;--w-art-filter:sepia(.4) hue-rotate(38deg) saturate(.55)}
[data-palette=rose]{--w-paper:#fbf4f3;--w-soft:#eedbdc;--w-accent:#85535e;--w-dark:#432b34;--w-ink:#3e2a31;--w-muted:#7d6069;--w-line:#e5cdcf;--w-light:#fffafa;--w-art-filter:sepia(.5) hue-rotate(295deg) saturate(.65)}
[data-palette=midnight]{--w-paper:#f4f6f9;--w-soft:#dce3ed;--w-accent:#435e7d;--w-dark:#202d43;--w-ink:#26354a;--w-muted:#606f83;--w-line:#cdd6e3;--w-light:#fcfdff;--w-art-filter:sepia(.45) hue-rotate(165deg) saturate(.65)}
html[data-palette]{--paper:var(--w-paper);--white:var(--w-light);--ink:var(--w-ink);--dark:var(--w-dark);--muted:var(--w-muted);--line:var(--w-line);--lime:var(--w-soft);--sage:var(--w-soft);--peach:var(--w-soft);--green:var(--w-accent);--mobile-nav-surface:var(--w-dark);background:var(--w-paper)}
html[data-palette] body{color:var(--w-ink);background:radial-gradient(ellipse at 80% 0,var(--w-light),transparent 55%),linear-gradient(145deg,var(--w-paper),var(--w-soft));background-attachment:fixed}
html[data-palette] .sidebar{background:linear-gradient(155deg,color-mix(in srgb,var(--w-dark),var(--w-accent) 15%),var(--w-dark));border-color:var(--w-dark)}
html[data-palette] .nav-button.active{background:linear-gradient(120deg,var(--w-light),var(--w-soft));color:var(--w-dark)}
html[data-palette] .topbar{background:color-mix(in srgb,var(--w-light),transparent 5%);border-color:var(--w-line)}
html[data-palette] .hero{background:radial-gradient(ellipse at 15% 0,color-mix(in srgb,var(--w-accent),transparent 75%),transparent 60%),linear-gradient(120deg,color-mix(in srgb,var(--w-dark),var(--w-accent) 18%),var(--w-dark));border-color:var(--w-dark)}
html[data-palette] .hero h2,html[data-palette] .hero h2 em{color:var(--w-light)}
html[data-palette] .hero p{color:color-mix(in srgb,var(--w-soft),white 25%)}
html[data-palette] .hero .eyebrow{color:var(--w-soft)}
html[data-palette] .countdown{background:radial-gradient(ellipse at 30% 15%,var(--w-light),var(--w-soft));color:var(--w-dark);border-color:var(--w-soft)}
html[data-palette] .countdown-label,html[data-palette] .countdown small,html[data-palette] .clock-part>span{color:var(--w-accent)}
html[data-palette] .button.primary{background:linear-gradient(120deg,color-mix(in srgb,var(--w-dark),var(--w-accent) 15%),var(--w-dark));color:var(--w-light);border-color:var(--w-dark)}
html[data-palette] .hero .button.primary{background:linear-gradient(120deg,var(--w-light),var(--w-soft));color:var(--w-dark);border-color:var(--w-soft)}
html[data-palette] .button:not(.primary):not(.text){border-color:var(--w-line)}
html[data-palette] .panel,html[data-palette] .stat,html[data-palette] .guest-card,html[data-palette] .event-card,html[data-palette] .film-card{background:linear-gradient(140deg,var(--w-light),color-mix(in srgb,var(--w-paper),white 45%));border-color:var(--w-line)}
html[data-palette] .nudge,html[data-palette] .money-summary,html[data-palette] .timeline-callout,html[data-palette] .welcome-banner,html[data-palette] .notice{background:linear-gradient(125deg,var(--w-paper),var(--w-soft));border-color:var(--w-line);color:var(--w-accent)}
html[data-palette] .mini-progress,html[data-palette] .coming-up{background:linear-gradient(140deg,var(--w-light),var(--w-paper));border-color:var(--w-line)}
html[data-palette] .progress-track{background:color-mix(in srgb,var(--w-soft),var(--w-paper) 40%)}
html[data-palette] .progress-track>span,html[data-palette] .event:after{background:var(--w-accent)}
html[data-palette] .check-button.done{background:var(--w-dark);border-color:var(--w-dark);color:var(--w-light)}
html[data-palette] .tabs,html[data-palette] .date-tile,html[data-palette] .supplier-icon,html[data-palette] .guest-avatar,html[data-palette] .seat-number{background:linear-gradient(120deg,var(--w-paper),var(--w-soft));border-color:var(--w-line);color:var(--w-accent)}
html[data-palette] .tabs .active{background:var(--w-light);color:var(--w-ink)}
html[data-palette] .event-time,html[data-palette] .timeline-grip,html[data-palette] .task-meta,html[data-palette] .eyebrow{color:var(--w-muted)}
html[data-palette] .timeline:before{background:var(--w-line)}
html[data-palette] dialog{background:linear-gradient(145deg,var(--w-light),var(--w-paper));border-color:var(--w-line)}
html[data-palette] .modal-head{background:linear-gradient(130deg,var(--w-soft),transparent)}
html[data-palette] .modal-head:before{background:linear-gradient(90deg,var(--w-accent),var(--w-soft))}
html[data-palette] .close{background:var(--w-soft);color:var(--w-accent)}
html[data-palette] .field input,html[data-palette] .field select,html[data-palette] .field textarea,html[data-palette] .search{background:var(--w-light);border-color:var(--w-line);color:var(--w-ink)}
html[data-palette] input[type=checkbox],html[data-palette] input[type=radio]{accent-color:var(--w-accent)}
html[data-palette] button:focus-visible,html[data-palette] a:focus-visible,html[data-palette] input:focus-visible,html[data-palette] select:focus-visible{outline-color:var(--w-accent)}
html[data-palette] #toast{background:linear-gradient(120deg,var(--w-light),var(--w-soft));color:var(--w-dark);border-color:var(--w-line)}
html[data-palette] .personalise-preview{background:var(--w-dark)}
html[data-palette] footer{border-color:var(--w-line);color:var(--w-muted)}
.palette-fieldset,.welcome-options{border:0;padding:0;margin:20px 0 26px;min-width:0}
.palette-fieldset legend,.welcome-options legend{font:600 13px/1.5 Inter,system-ui,sans-serif;color:var(--ink,#28241f);margin-bottom:6px}
.palette-fieldset>p{font-size:12px;color:var(--muted,#726657);margin:0 0 14px}
.palette-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.palette-option{position:relative;display:grid;gap:7px;border:1px solid var(--line,#ded1be);border-radius:14px;padding:14px;cursor:pointer;background:#ffffff80;min-width:0;color:#302b26}
.palette-option:has(input:checked){border-color:var(--w-accent);box-shadow:0 0 0 1px var(--w-accent);background:var(--w-paper)}
.palette-option input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.palette-option:has(input:focus-visible){outline:3px solid var(--w-accent);outline-offset:3px}
.palette-swatches{display:flex;gap:4px;margin:0 0 4px;pointer-events:none}
.palette-swatches i{width:22px;height:22px;border:1px solid #0000000a;border-radius:50%}
.palette-option strong{display:flex;justify-content:space-between;gap:5px;font:600 13px/1.4 Inter,system-ui,sans-serif}
.palette-option small{font-size:10px;line-height:1.5;color:#69635e}
.palette-selected{visibility:hidden;color:var(--w-accent)}
.palette-option:has(input:checked) .palette-selected{visibility:visible}
.wedding-style-preview{position:relative;text-align:center;padding:30px 20px;border-radius:18px;color:var(--w-ink);background:radial-gradient(ellipse at 80% 0,var(--w-light),transparent 70%),linear-gradient(135deg,var(--w-paper),var(--w-soft));border:1px solid var(--w-line);overflow:hidden;margin:22px 0}
.style-monogram{display:inline-grid;place-items:center;min-width:54px;height:54px;border:1px solid var(--w-accent);border-radius:50%;font:400 23px Georgia,serif;letter-spacing:-2px;padding-right:2px;color:var(--w-accent)}
.wedding-style-preview>p{font:500 9px/1.7 Inter,system-ui,sans-serif;letter-spacing:2px;color:var(--w-muted);margin:18px 0 9px}
.wedding-style-preview h3{font:400 34px/1.15 var(--display,Georgia,serif)!important;letter-spacing:-1px;margin:0!important;color:var(--w-ink);overflow-wrap:anywhere}
.wedding-style-preview h3 i{font-weight:400;font-size:25px;margin:0 12px;color:var(--w-accent)}
.style-preview-line{width:35px;height:1px;background:var(--w-accent);margin:18px auto 14px}
.wedding-style-preview>small{font:11px/1.5 Inter,system-ui,sans-serif;color:var(--w-muted)}
.welcome-progress{list-style:none;display:flex;gap:10px;padding:0;margin:0 0 30px;justify-content:space-between}
.welcome-progress li{display:flex;align-items:center;gap:6px;color:var(--muted,#726657);font-size:10px;min-width:0}
.welcome-progress li span{display:grid;place-items:center;border:1px solid var(--line,#ded1be);border-radius:50%;width:23px;height:23px;flex-shrink:0;font-size:9px}
.welcome-progress [aria-current=step]{color:var(--ink,#28241f);font-weight:600}
.welcome-progress [aria-current=step] span{color:white;background:var(--dark,#29251f);border-color:var(--dark,#29251f)}
.welcome-step>h3{font:400 31px/1.15 var(--display,Georgia,serif);margin:8px 0 12px;letter-spacing:-.6px;outline:none}
.welcome-copy{font-size:13px;color:var(--muted,#726657);line-height:1.8;margin:0 0 24px}
.welcome-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.welcome-options legend{margin-bottom:12px}.welcome-options legend small{font-size:10px;font-weight:400;display:block;color:var(--muted,#726657)}
.welcome-options>label{border:1px solid var(--line,#ded1be);border-radius:12px;display:flex;align-items:flex-start;gap:9px;padding:13px 11px;font-size:12px;line-height:1.6;cursor:pointer}
.welcome-options>label:has(input:checked){background:var(--lime,#e9ddcb);border-color:var(--muted,#726657)}
.welcome-options input{flex:none;width:15px;height:15px;margin:3px 0 0;padding:0;accent-color:var(--w-accent,#796044)}
.welcome-options strong{display:block;font-size:12px}.welcome-options small{display:block;font-size:10px;color:var(--muted,#726657);line-height:1.5;margin-top:2px}
.welcome-actions{display:flex;gap:10px;justify-content:space-between;align-items:center;margin:24px 0 10px}.welcome-actions .primary{flex:1}
.welcome-task-preview{list-style:none;padding:0;margin:20px 0 24px}.welcome-task-preview li{padding:11px 0;border-bottom:1px solid var(--line,#ded1be);font-size:12px;line-height:1.6;display:flex;align-items:center;gap:12px}.welcome-task-preview li span{font-size:19px;color:var(--muted,#726657)}
.welcome-intro{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:23px 25px;margin:22px 0}.welcome-intro h2{font-size:23px;margin:0 0 5px}.welcome-intro p{font-size:12px;color:var(--muted);margin:0;line-height:1.8}.welcome-intro .button{flex-shrink:0}
/* Guest stationery shares the couple's selected palette. */
.inv-stationery[data-palette]{background:var(--w-paper);color:var(--w-ink);border-color:var(--w-line)}
.inv-stationery[data-palette] .inv-frame{filter:var(--w-art-filter)}
.inv-stationery[data-palette] .inv-copy{color:var(--w-ink)}
.inv-stationery[data-palette] .inv-date,.inv-stationery[data-palette] .inv-reception,.inv-stationery[data-palette] .inv-names i{color:var(--w-accent)}
.inv-stationery[data-palette] .inv-date-coast strong{background:var(--w-dark);color:var(--w-light)}
html[data-palette] .inv-reply-panel,html[data-palette] .inv-extra-details{background:var(--w-light);border-color:var(--w-line);color:var(--w-ink)}
html[data-palette] .inv-reply-panel h1{color:var(--w-ink)}
html[data-palette] .inv-reply-form input,html[data-palette] .inv-reply-form select,html[data-palette] .inv-reply-form textarea{background:var(--w-paper);border-color:var(--w-line);color:var(--w-ink)}
html[data-palette] .inv-reply-form>button{background:var(--w-dark);color:var(--w-light)}
.envelope-scene{max-width:740px;margin:0 auto;text-align:center;padding:40px 25px 60px;color:var(--w-ink);animation:envelope-arrive .5s ease-out both}
.envelope-kicker{font:500 10px/1.8 Inter,system-ui,sans-serif;letter-spacing:3px;color:var(--w-muted);margin:0 0 14px}
.envelope-scene h1{font:400 clamp(35px,6vw,58px)/1.15 Georgia,serif;letter-spacing:-1.4px;margin:0 0 10px;overflow-wrap:anywhere}.envelope-scene h1 i{color:var(--w-accent);font-size:.8em}
.envelope-for{font-size:12px;color:var(--w-muted);margin:0 0 70px;overflow-wrap:anywhere}
.envelope-open{position:relative;isolation:isolate;display:block;width:min(340px,100%);height:220px;margin:0 auto 25px;padding:0;border:0;background:transparent;cursor:pointer;perspective:1200px;border-radius:6px;filter:drop-shadow(0 20px 25px #00000015);-webkit-tap-highlight-color:transparent}
.envelope-open>span{position:absolute;display:block;pointer-events:none}
.envelope-back{inset:0;background:var(--w-accent);border-radius:6px;z-index:0}
.envelope-letter{z-index:1;left:6%;top:8%;width:88%;height:85%;background:var(--w-light);border:1px solid var(--w-line);border-radius:4px;display:flex!important;flex-direction:column;align-items:center;justify-content:center;transition:transform .5s .25s ease}
.envelope-letter>span{font:400 42px Georgia,serif;color:var(--w-accent);letter-spacing:-4px;padding-right:4px}.envelope-letter small{font:9px/2 Inter,system-ui,sans-serif;letter-spacing:3px;color:var(--w-muted);margin-top:10px}
.envelope-pocket{inset:0;z-index:3;background:linear-gradient(145deg,var(--w-paper),var(--w-soft));clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);border-radius:5px;border:1px solid var(--w-line)}
.envelope-pocket:after{content:'';position:absolute;inset:0;background:linear-gradient(32deg,transparent 49.7%,#ffffff55 50%,transparent 50.3%),linear-gradient(-32deg,transparent 49.7%,#00000009 50%,transparent 50.3%)}
.envelope-flap{z-index:4;inset:0 0 auto;height:57%;background:linear-gradient(175deg,var(--w-paper),var(--w-soft));clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;backface-visibility:hidden;transition:transform .5s ease,opacity .3s ease}
.envelope-seal{z-index:5;left:calc(50% - 28px);top:calc(50% - 21px);width:56px;height:56px;border-radius:50%;display:grid!important;place-items:center;background:radial-gradient(circle at 30% 20%,color-mix(in srgb,var(--w-accent),white 24%),var(--w-accent));border:3px double color-mix(in srgb,var(--w-accent),white 35%);color:var(--w-light);font:400 21px Georgia,serif;letter-spacing:-2px;padding-right:2px;box-shadow:0 3px 7px #00000017;transition:opacity .2s,transform .3s}
.envelope-prompt{font:400 22px/1.4 Georgia,serif;margin:25px 0;color:var(--w-accent)}
.envelope-scene>.button{display:block;width:max-content;max-width:100%;margin:12px auto}.envelope-scene>.primary{min-width:210px;padding:15px 25px;border-radius:12px}
.envelope-scene>.text{border:0;background:transparent;color:var(--w-muted);font-size:11px;padding:8px}
.envelope-scene.is-opening .envelope-flap{transform:rotateX(180deg);opacity:.3}.envelope-scene.is-opening .envelope-letter{transform:translateY(-65px)}.envelope-scene.is-opening .envelope-seal{opacity:0;transform:scale(.85)}
.envelope-open:hover .envelope-seal{box-shadow:0 4px 13px #00000025}
@keyframes envelope-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){html[data-palette]:has(#plannerShell:not([hidden])){background:var(--w-dark)}html[data-palette] .sidebar{background:linear-gradient(180deg,color-mix(in srgb,var(--w-dark),var(--w-accent) 12%),var(--w-dark) 75%)}.welcome-progress{gap:6px}.welcome-progress li{font-size:9px}.welcome-progress li span{width:20px;height:20px}.welcome-step>h3{font-size:28px}.welcome-intro{align-items:flex-start;flex-direction:column;padding:20px}.welcome-intro .button{width:100%}.palette-option{padding:12px}.palette-option small{font-size:9px}.wedding-style-preview{padding:25px 14px}.wedding-style-preview h3{font-size:29px!important}.envelope-scene{padding:28px 12px 45px}.envelope-kicker{font-size:8px;letter-spacing:2px}.envelope-for{margin-bottom:60px}.envelope-open{width:min(310px,100%);height:200px}.envelope-prompt{font-size:21px}.welcome-options>label{padding:11px 9px}.welcome-actions .button{padding-left:14px;padding-right:14px}}
@media(prefers-reduced-motion:reduce){.envelope-scene,.envelope-letter,.envelope-flap,.envelope-seal{animation:none!important;transition:none!important}}
@media print{.envelope-scene{display:none}}

.inv-preview-controls{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.inv-preview-controls .button{max-width:100%;white-space:normal}

@media(max-width:360px){.palette-option{padding:10px}.palette-swatches i{width:18px;height:18px}.palette-option strong{font-size:12px}}
