/* Michael & Rachel design system, applied to every page.
   Tokens come straight from the design system (tokens/*.css); components below
   are CSS versions of its React components. Fonts are self-hosted (no Google Fonts). */

@font-face{font-family:"Libre Caslon Display";src:url("/assets/fonts/libre-caslon-display-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url("/assets/fonts/instrument-sans-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url("/assets/fonts/instrument-sans-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url("/assets/fonts/instrument-sans-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"EB Garamond";src:url("/assets/fonts/eb-garamond-latin-wght-normal.woff2") format("woff2");font-weight:400 800;font-style:normal;font-display:swap}
@font-face{font-family:"EB Garamond";src:url("/assets/fonts/eb-garamond-latin-wght-italic.woff2") format("woff2");font-weight:400 800;font-style:italic;font-display:swap}

/* Meadow #D0D193 is the main brand colour (panels, thumbnail). Rust leads interaction (buttons, links, form states) and the ampersand; marigold is the celebratory accent; olive = success. Palette sampled from the two wildflower moodboards. Purple/mauve tones deliberately excluded. */
:root{
/* Base — meadow board */
--meadow-500:#D0D193;
--olive-900:#3F3E1E;
--olive-700:#5E5C2D;
--olive-500:#999A57;
--olive-200:#D6D6B4;
--marigold-500:#FC9C51;
--marigold-700:#D9762B;
--butter-300:#FEC67C;
--butter-100:#FFE9C7;
--linen-300:#EADFC6;
--linen-100:#F6F0E1;
--linen-50:#FBF8F0;
--cornflower-500:#7A8EA1;
--cornflower-200:#C9D2DA;
/* Base — bouquet board */
--ink-900:#1E2A3A;
--ink-700:#3A4656;
--ink-500:#6B7380;
--rust-900:#5E2611;
--rust-700:#86361A;
--rust-600:#A4441E;
--rust-200:#EFCDBB;
--rust-100:#F8E6DC;
--ochre-500:#E3A03A;
--moss-500:#858A4E;
--mist-400:#98A6B0;
--white:#FFFFFF;

/* Semantic — text */
--text-strong:var(--ink-900);
--text-body:var(--ink-700);
--text-muted:var(--ink-500);
--text-on-dark:var(--linen-50);
--text-accent:var(--rust-600);
--text-link:var(--rust-600);
--text-link-hover:var(--rust-900);

/* Semantic — surfaces */
--surface-page:var(--linen-100);
--surface-card:var(--linen-50);
--surface-sunken:var(--linen-300);
--surface-dark:var(--rust-700);
--text-on-dark-muted:var(--rust-200);
--surface-ink:var(--ink-900);
--surface-highlight:var(--butter-100);
--surface-brand:var(--meadow-500);
--text-on-brand:var(--ink-900);

/* Semantic — borders */
--border-hairline:rgba(30,42,58,.14);
--border-strong:rgba(30,42,58,.32);
--border-focus:var(--marigold-500);

/* Semantic — actions */
--action-primary:var(--rust-600);
--action-primary-hover:var(--rust-700);
--action-primary-fg:var(--linen-50);
--action-accent:var(--marigold-500);
--action-accent-hover:var(--marigold-700);
--action-accent-fg:var(--ink-900);

/* Semantic — feedback */
--feedback-success:var(--olive-700);
--feedback-success-bg:#E7E8D2;
--feedback-warning:var(--marigold-700);
--feedback-warning-bg:var(--butter-100);
--feedback-error:var(--rust-600);
--feedback-error-bg:var(--rust-100);
--feedback-info:var(--cornflower-500);
--feedback-info-bg:#E4E9EE;
}
:root{
--font-serif:"EB Garamond",Garamond,"Times New Roman",serif;
--font-h1:"Libre Caslon Display","EB Garamond",Georgia,serif;
--font-ui:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
--font-display:var(--font-serif);
--font-body:var(--font-serif);

--fs-display:clamp(52px,8vw,96px); 
--fs-h1:clamp(38px,5vw,56px); 
--fs-h2:32px;
--fs-h3:24px;
--fs-lead:22px; 
--fs-body:19px; 
--fs-small:16px; 
--fs-label:12px; 

--fw-regular:400; 
--fw-medium:500; 
--fw-semibold:600; 
--fw-bold:700; 

--lh-tight:1.05; 
--lh-heading:1.15; 
--lh-body:1.55; 

--ls-label:.12em; 
--ls-display:-.01em; 
--fs-ui:16px; 
}
:root{
--space-1:4px;
--space-2:8px;
--space-3:12px;
--space-4:16px;
--space-5:24px;
--space-6:32px;
--space-7:48px;
--space-8:64px;
--space-9:96px;

--content-narrow:560px; 
--content-default:720px; 
--content-wide:1040px; 

--radius-sm:4px;
--radius-md:8px;
--radius-lg:16px;
--radius-pill:999px;

--border-width:1px; 

--shadow-none:none;
--shadow-card:0 1px 0 rgba(30,42,58,.06),0 8px 24px -12px rgba(30,42,58,.18);
--shadow-lift:0 2px 0 rgba(30,42,58,.06),0 16px 32px -14px rgba(30,42,58,.28);
--focus-ring:0 0 0 3px rgba(252,156,81,.45);

--ease-out:cubic-bezier(.22,.61,.36,1); 
--dur-fast:120ms; 
--dur-base:220ms; 
}
:root{color-scheme:light}
body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--font-display);color:var(--text-strong);font-weight:var(--fw-regular);line-height:var(--lh-heading);margin:0;text-wrap:balance}
h1{font-family:var(--font-h1)}
p{text-wrap:pretty}
label,button,input,select,textarea{font-family:var(--font-ui)}
a{color:var(--text-link);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--text-link-hover)}
::selection{background:var(--butter-300);color:var(--ink-900)}

/* ---------- Base additions ---------- */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
img{max-width:100%;display:block}
button{cursor:pointer}
:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.muted{color:var(--text-muted)}
.italic{font-style:italic}
.ui{font-family:var(--font-ui)}
.amp{color:var(--rust-600);font-style:italic}
.small{font-size:var(--fs-small)}
.mt-0{margin-top:0}

/* ---------- Page shell ---------- */
.page{max-width:calc(var(--content-default) + 48px);margin:0 auto;padding:0 var(--space-5) var(--space-9)}
.page--wide{max-width:calc(var(--content-wide) + 48px)}
.page-main{padding-top:var(--space-7)}
.stack{display:flex;flex-direction:column;gap:28px}
.stack-sm{display:flex;flex-direction:column;gap:var(--space-4)}
.stack-md{display:flex;flex-direction:column;gap:var(--space-5)}
.stack-lg{display:flex;flex-direction:column;gap:var(--space-7)}
.stack>p,.stack-sm>p,.stack-md>p,.stack-lg>p{margin:0}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* SiteHeader */
.site-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--border-hairline)}
.site-header__start,.site-header__end{display:flex;align-items:center;gap:var(--space-1)}
.site-header__start{gap:var(--space-4);min-width:0}
.wordmark{font-family:var(--font-serif);font-size:20px;color:var(--text-strong);text-decoration:none;white-space:nowrap}
.wordmark em{color:var(--rust-600)}
.lang{height:32px;min-width:40px;padding:0 10px;border-radius:var(--radius-pill);border:1px solid transparent;background:transparent;color:var(--text-muted);font-family:var(--font-ui);font-weight:600;font-size:12px;letter-spacing:.1em}
.lang:hover{color:var(--text-strong)}
.lang.is-active{border-color:var(--text-strong);color:var(--text-strong)}
.link-btn{background:none;border:0;padding:0;font-family:var(--font-serif);font-size:17px;color:var(--text-link);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.link-btn:hover{color:var(--text-link-hover)}
.site-header .link-btn{margin-left:14px}
.back-link{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* PageHeading */
.eyebrow{font-family:var(--font-ui);font-weight:var(--fw-semibold);font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-accent);margin:0 0 12px}
.page-heading h1{font-size:var(--fs-h1);line-height:var(--lh-heading)}
.lead{font-size:var(--fs-lead);line-height:1.45;color:var(--text-body);margin:14px 0 0;max-width:34em}
h2.section-title{font-size:var(--fs-h2);margin-bottom:12px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 24px;font-family:var(--font-ui);font-size:16px;font-weight:var(--fw-medium);letter-spacing:.01em;line-height:1;color:var(--action-primary-fg);background:var(--action-primary);border:1px solid transparent;border-radius:var(--radius-pill);text-decoration:none;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast)}
.btn:hover{background:var(--action-primary-hover);color:var(--action-primary-fg)}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn--accent{background:var(--action-accent);color:var(--action-accent-fg)}
.btn--accent:hover{background:var(--action-accent-hover);color:var(--action-accent-fg)}
.btn--secondary{background:transparent;color:var(--text-strong);border-color:var(--border-strong)}
.btn--secondary:hover{background:var(--surface-sunken);color:var(--text-strong)}
.btn--ghost{background:transparent;color:var(--text-strong)}
.btn--ghost:hover{background:var(--surface-sunken);color:var(--text-strong)}
.btn--sm{height:36px;padding:0 16px;font-size:14px}
.btn--lg{height:56px;padding:0 32px;font-size:17px}
.btn--block{display:flex;width:100%}
.btn:disabled:hover{background:var(--action-primary)}
.btn--secondary:disabled:hover,.btn--ghost:disabled:hover{background:transparent}

/* Text buttons (dashboards) */
.text-btn{background:none;border:0;padding:0;font-family:var(--font-ui);font-size:14px;color:var(--text-link);text-decoration:underline;text-underline-offset:3px}
.text-btn:hover{color:var(--text-link-hover)}
.text-btn--muted{color:var(--text-muted)}
.text-btn--muted:hover{color:var(--feedback-error)}

/* ---------- Badge ---------- */
.badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--text-body);font-family:var(--font-ui);font-size:11px;letter-spacing:var(--ls-label);text-transform:uppercase;font-weight:var(--fw-semibold);white-space:nowrap}
.badge--olive{background:var(--feedback-success-bg);color:var(--olive-700)}
.badge--marigold{background:var(--butter-100);color:var(--marigold-700)}
.badge--rust{background:var(--feedback-error-bg);color:var(--rust-600)}
.badge--cornflower{background:var(--feedback-info-bg);color:var(--ink-700)}

/* ---------- Notice ---------- */
.notice{background:var(--feedback-info-bg);color:var(--ink-700);border-radius:var(--radius-md);padding:12px 18px;font-family:var(--font-body);font-size:17px;line-height:1.45;margin:0}
.notice:empty{display:none}
.notice--success{background:var(--feedback-success-bg);color:var(--feedback-success)}
.notice--warning{background:var(--feedback-warning-bg);color:var(--feedback-warning)}
.notice--error{background:var(--feedback-error-bg);color:var(--feedback-error)}

/* ---------- Form fields ---------- */
.field{display:block;min-width:0}
.field-label{display:block;font-family:var(--font-ui);font-weight:var(--fw-semibold);font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-muted);margin-bottom:6px;line-height:1.4}
.input{display:block;width:100%;font-family:var(--font-ui);font-size:var(--fs-ui);color:var(--text-strong);background:var(--surface-card);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:11px 14px;outline:none;transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}
.input:focus,.input:focus-visible{border-color:var(--border-focus);box-shadow:var(--focus-ring);border-radius:var(--radius-md)}
.input:disabled{opacity:.6;cursor:not-allowed}
.input.is-invalid{border-color:var(--feedback-error)}
textarea.input{resize:vertical;line-height:1.45}
.select{position:relative}
.select .input{appearance:none;-webkit-appearance:none;padding-right:40px;cursor:pointer}
.select::after{content:"";position:absolute;right:16px;top:50%;transform:translateY(-60%) rotate(45deg);width:7px;height:7px;border-right:1.5px solid var(--text-body);border-bottom:1.5px solid var(--text-body);pointer-events:none}
.field-hint{font-family:var(--font-body);font-size:15px;margin-top:6px;color:var(--text-muted)}
.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.form-grid .span-all{grid-column:1/-1}
.form-grid--auto{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}
.form-grid--auto .span-2{grid-column:span 2}

/* Checkbox */
.check{position:relative;display:flex;gap:12px;align-items:flex-start;font-family:var(--font-body);font-size:18px;color:var(--text-body);cursor:pointer;line-height:1.4}
.check input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.check__box{flex:none;width:22px;height:22px;margin-top:2px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-card);display:grid;place-items:center;transition:background var(--dur-fast)}
.check__box::after{content:"";width:6px;height:11px;border-right:2px solid var(--linen-50);border-bottom:2px solid var(--linen-50);transform:translateY(-1px) rotate(45deg);opacity:0}
.check input:checked+.check__box{background:var(--action-primary);border-color:var(--action-primary)}
.check input:checked+.check__box::after{opacity:1}
.check input:focus-visible+.check__box{box-shadow:var(--focus-ring)}
.check input:disabled+.check__box{opacity:.5}
.check--ui{font-family:var(--font-ui);font-size:15px;align-items:center}
.check--ui .check__box{margin-top:0}

/* ChoiceGroup: radio pills */
.choices{display:flex;gap:8px;flex-wrap:wrap;border:0;margin:0;padding:0}
.choice{position:relative}
.choice input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.choice span{display:inline-flex;align-items:center;height:44px;padding:0 20px;border-radius:var(--radius-pill);font-family:var(--font-ui);font-size:var(--fs-ui);font-weight:var(--fw-medium);border:1px solid var(--border-strong);background:var(--surface-card);color:var(--text-strong);cursor:pointer;transition:background var(--dur-fast)}
.choice span:hover{background:var(--surface-sunken)}
.choice input:checked+span{background:var(--action-primary);border-color:var(--action-primary);color:var(--linen-50)}
.choice--no input:checked+span{background:var(--ink-700);border-color:var(--ink-700)}
.choice input:focus-visible+span{box-shadow:var(--focus-ring)}
.choice input:disabled+span{opacity:.5;cursor:not-allowed}

/* Toggle switch */
.toggle{position:relative;display:inline-flex;align-items:center;gap:12px;font-family:var(--font-ui);font-size:15px;color:var(--text-strong);cursor:pointer}
.toggle input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.toggle__track{position:relative;flex:none;width:40px;height:24px;border-radius:999px;background:var(--border-strong);transition:background var(--dur-fast)}
.toggle__track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--linen-50);transition:left var(--dur-fast) var(--ease-out)}
.toggle input:checked+.toggle__track{background:var(--action-primary)}
.toggle input:checked+.toggle__track::after{left:19px}
.toggle input:focus-visible+.toggle__track{box-shadow:var(--focus-ring)}

/* ---------- Card ---------- */
.card{background:var(--surface-card);color:var(--text-body);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);padding:28px;transition:box-shadow var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out);min-width:0}
.card--linen{background:var(--surface-sunken);border-color:transparent}
.card--meadow{background:var(--surface-brand);border-color:transparent}
.card--butter{background:var(--surface-highlight);border-color:transparent}
.card--rust{background:var(--surface-dark);border-color:transparent;color:var(--text-on-dark)}
.card--olive{background:var(--olive-700);border-color:transparent;color:var(--text-on-dark)}
.card--interactive:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}
.card--pad-sm{padding:20px}
.card--pad-md{padding:22px}
.card-title{font-family:var(--font-display);font-size:26px;color:var(--text-strong);line-height:1.15;margin:0}
.card-subtitle{font-size:var(--fs-h3);font-style:italic;margin:0}

/* ---------- Login ---------- */
.login{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--surface-page)}
.login__image{background:var(--meadow-500) url("/assets/img/meadow-left.jpg") center/cover;min-height:320px}
.login__panel{display:flex;align-items:center;justify-content:center;padding:var(--space-8) var(--space-6)}
.login__form{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--space-5);text-align:center}
.login__title{font-size:clamp(48px,6vw,76px);line-height:1;letter-spacing:var(--ls-display)}
.login__title em{color:var(--rust-600)}
.login__venue{font-style:italic;font-size:20px;color:var(--text-muted);margin:-8px 0 0}
.login__field{text-align:left;margin-top:var(--space-4)}
.login__code{text-transform:uppercase;letter-spacing:.08em}

/* ---------- Welkom ---------- */
.banner{height:220px;border-radius:var(--radius-lg);background:var(--meadow-500) url("/assets/img/meadow-right.jpg") center 40%/cover}
.rsvp-card{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.rsvp-card__title{font-size:28px;color:var(--text-on-brand);line-height:1.2}
.rsvp-card__deadline{font-size:17px;color:var(--ink-700)}
.quick-links{display:flex;gap:10px;flex-wrap:wrap}

/* Schedule */
.schedule{list-style:none;margin:0;padding:0;font-family:var(--font-body)}
.schedule li{display:grid;grid-template-columns:88px 20px minmax(0,1fr);align-items:baseline;gap:12px;padding:14px 0}
.schedule li+li{border-top:1px solid var(--border-hairline)}
.schedule__time{font-size:24px;color:var(--text-accent);font-variant-numeric:lining-nums tabular-nums}
.schedule__dot{width:9px;height:9px;border-radius:50%;background:var(--marigold-500);align-self:center}
.schedule li:last-child .schedule__dot{background:var(--olive-500)}
.schedule__title{display:block;font-size:22px;color:var(--text-strong);line-height:1.3}
.schedule__place{display:block;font-size:16px;font-style:italic;color:var(--text-muted)}

/* InfoBlock */
.info-block{padding:20px 0;border-top:1px solid var(--border-hairline)}
.info-block h3{font-size:var(--fs-h3);font-style:italic;margin:0 0 6px}
.info-block p{margin:0;font-size:18px;line-height:1.55}
.info-block ul{list-style:none;padding:0;margin:10px 0 0;display:flex;gap:18px;flex-wrap:wrap}
.info-block a{font-size:17px}

/* ---------- RSVP ---------- */
.guest-card{display:flex;flex-direction:column;gap:var(--space-4)}
.guest-card legend{float:left;width:100%;padding:0;margin:0 0 var(--space-4);font-family:var(--font-display);font-size:26px;color:var(--text-strong);line-height:1.2}
.guest-card legend+*{clear:both}
fieldset.card{margin:0}
.room-status{margin:0;font-size:17px;color:var(--text-muted);padding-left:34px}
.room-status:empty{display:none}

/* ---------- Gifts ---------- */
.gift-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:var(--space-4);align-items:start}
.gift{display:flex;flex-direction:column;gap:8px;height:100%}
.gift-card{display:flex;flex-direction:column;gap:14px;flex:1}
.gift-card.is-full{opacity:.72}
.gift-card__head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.gift-card__desc{margin:0;font-size:17px;line-height:1.5}
.gift-card__link{font-size:16px;align-self:flex-start}
.gift-card__money{font-size:16px;color:var(--text-muted);display:flex;flex-direction:column;gap:8px}
.gift-card__money b{color:var(--text-strong);font-weight:500}
.gift-card__money .accent{color:var(--text-accent)}
.gift-card__money-row{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.gift-card__people{font-size:16px;font-style:italic;margin:0}
.gift-card__yours{display:flex;align-items:center;gap:10px;font-size:16px;background:var(--surface-highlight);padding:8px 12px;border-radius:var(--radius-md)}
.gift-card__yours span{flex:1}
.gift-card__yours b{font-weight:500}
.gift-card__actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}
.gift-form{display:flex;flex-direction:column;gap:12px}

/* ProgressBar */
.progress{height:6px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}
.progress span{display:block;height:100%;background:var(--marigold-500);border-radius:inherit;transition:width var(--dur-base) var(--ease-out)}
.progress--olive span{background:var(--olive-500)}

/* ---------- Contact ---------- */
.cm-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.cm-card__name{font-size:24px;color:var(--text-strong);line-height:1.2}
.cm-card a{font-size:18px}

/* ---------- Acts ---------- */
.act-card{display:flex;align-items:center;gap:12px;padding:18px}
.act-card span.act-card__text{flex:1;min-width:0}

/* ---------- Dashboards ---------- */
.dash{max-width:calc(1160px + 64px);margin:0 auto;padding:0 var(--space-6) var(--space-9)}
.dash-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:18px 0;border-bottom:1px solid var(--border-hairline)}
.dash-header__brand{display:flex;align-items:baseline;gap:14px}
.dash-header .wordmark{font-size:22px}
.role{font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}
.dash-header__end{display:flex;gap:20px;align-items:center}
.dash-header__end a{font-family:var(--font-ui);font-size:15px}
.dash-title{font-size:var(--fs-h1);margin:44px 0 24px;line-height:1.1}
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border-hairline);margin-bottom:40px}
.tab{font-family:var(--font-ui);background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 14px;font-size:15px;font-weight:500;color:var(--text-muted);display:flex;gap:8px;align-items:center}
.tab:hover{color:var(--text-strong)}
.tab[aria-selected="true"]{border-bottom-color:var(--rust-600);font-weight:600;color:var(--text-strong)}
.tab-count{font-size:12px;font-weight:600;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;background:var(--surface-sunken);color:var(--text-body)}
.tab[aria-selected="true"] .tab-count{background:var(--rust-600);color:var(--linen-50)}
.panel{display:flex;flex-direction:column;gap:var(--space-7)}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;margin-bottom:20px}
.section-head h2{font-size:var(--fs-h2);margin:0}
.section-head p{margin:6px 0 0;font-size:17px;color:var(--text-muted);max-width:38em}
.section-head__actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}
.stat{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);padding:20px 22px;display:flex;flex-direction:column;gap:6px;min-width:0}
.stat__label{font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-accent)}
.stat__value{font-size:44px;line-height:1;color:var(--text-strong);font-variant-numeric:lining-nums}
.stat__sub{font-family:var(--font-ui);font-size:14px;color:var(--text-muted)}

.table-wrap{overflow-x:auto}
.table{width:100%;border-collapse:collapse}
.table th{font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);text-align:left;padding:0 14px 10px;border-bottom:1px solid var(--border-strong);white-space:nowrap}
.table td{font-family:var(--font-ui);font-size:15px;line-height:1.45;color:var(--text-body);padding:14px;border-bottom:1px solid var(--border-hairline);vertical-align:top}
.table .num{text-align:right;font-variant-numeric:tabular-nums}
.table .strong{color:var(--text-strong)}
.table .nowrap{white-space:nowrap}
.table .actions{text-align:right;white-space:nowrap}
.table .actions .text-btn+.text-btn{margin-left:14px}
.table .middle{vertical-align:middle}
.table .serif-name{font-family:var(--font-body);font-size:19px;color:var(--text-strong)}
.table .serif-note{font-family:var(--font-body);font-style:italic;font-size:16px;color:var(--text-muted);margin-top:2px}
.table .lang-tag{font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--text-muted);margin-left:8px}
.table .warn{color:var(--feedback-error)}
.table .code{font-variant-numeric:tabular-nums;letter-spacing:.04em}
.guest-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.guest-list li{display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}
.guest-list .name{color:var(--text-strong)}
.guest-list .diet{font-size:13px;color:var(--text-muted)}
.answer{display:inline-flex;align-items:center;gap:6px;color:var(--text-muted);font-size:13px}
.answer::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--marigold-500)}
.answer--yes::before{background:var(--olive-500)}
.answer--no::before{background:transparent;border:1.5px solid var(--ink-500)}
.typebar{display:flex;height:8px;border-radius:999px;overflow:hidden;background:var(--surface-sunken)}
.typebar span:first-child{background:var(--olive-500)}
.typebar span:last-child{background:var(--ink-500)}

.chips{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.chip{font-family:var(--font-ui);height:32px;padding:0 14px;border-radius:999px;font-size:14px;font-weight:500;border:1px solid var(--border-hairline);background:transparent;color:var(--text-body)}
.chip:hover{border-color:var(--border-strong)}
.chip[aria-checked="true"]{border-color:var(--ink-900);background:var(--ink-900);color:var(--linen-50)}

.diet-list{list-style:none;margin:0;padding:0}
.diet-list li{font-family:var(--font-ui);display:grid;grid-template-columns:minmax(0,1fr) 90px minmax(0,1.4fr);gap:var(--space-4);align-items:baseline;padding:12px 0;border-bottom:1px solid var(--border-hairline);font-size:15px}
.diet-list .name{color:var(--text-strong)}
.diet-list .diet{font-family:var(--font-body);font-style:italic;font-size:18px}

.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:var(--space-4)}
.card-grid--2{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:var(--space-5);align-items:start}
.card-grid--tikkies{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr))}
.person-card{display:flex;flex-direction:column;gap:8px}
.person-card__name{font-size:24px;color:var(--text-strong);line-height:1.15}
.person-card__sub{font-style:italic;font-size:16px;color:var(--text-muted)}
.person-card__contact{font-family:var(--font-ui);font-size:15px;display:flex;flex-direction:column;gap:2px;margin-top:4px}
.form-card{display:flex;flex-direction:column;gap:18px}
.form-card .form-actions{display:flex;gap:10px;flex-wrap:wrap}

.gift-rows{list-style:none;margin:0;padding:0}
.gift-rows li{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;gap:var(--space-5);align-items:center;padding:18px 0;border-bottom:1px solid var(--border-hairline)}
.gift-rows .title{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.gift-rows .title span:first-child{font-size:22px;color:var(--text-strong)}
.gift-rows .pledged{font-family:var(--font-ui);display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--text-muted)}
.gift-rows .pledged b{font-weight:600;color:var(--text-strong)}
.gift-rows .who{font-family:var(--font-ui);font-size:14px;color:var(--text-muted);margin-top:4px}
.gift-rows .actions{display:flex;gap:14px}

.message-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 24px}
.message-card.is-handled{opacity:.7}
.message-card__from{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}
.message-card__from span:first-child{font-size:22px;color:var(--text-strong)}
.message-card__from span:last-child{font-family:var(--font-ui);font-size:13px;color:var(--text-muted)}
.message-card p{margin:0;grid-column:1/-1;max-width:40em;white-space:pre-line}

.tikkie-card{display:flex;flex-direction:column;gap:14px}
.tikkie-card__head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.tikkie-card__head span:first-child{font-size:24px;color:var(--text-strong)}
.tikkie-card__head span:last-child{font-family:var(--font-ui);font-size:14px;color:var(--text-muted);white-space:nowrap}
.pledge-list{list-style:none;margin:0;padding:0}
.pledge-list li{font-family:var(--font-ui);display:grid;grid-template-columns:minmax(0,1fr) 84px auto auto;gap:var(--space-4);align-items:center;padding:12px 0;border-top:1px solid var(--border-hairline);font-size:15px}
.pledge-list li.is-whole{grid-template-columns:minmax(0,1fr) auto}
.pledge-list .who{color:var(--text-strong);display:block}
.pledge-list .amount{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-strong);font-weight:500}
.pledge-list .whole{font-family:var(--font-body);font-size:18px}
.pledge-list .whole i{color:var(--text-muted)}
.summary-line{font-family:var(--font-ui);margin:16px 0 0;font-size:15px;color:var(--text-muted)}
.summary-line b{color:var(--text-strong);font-weight:600}

.dash-login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;background:var(--surface-page);padding:var(--space-5)}
.dash-login form{width:100%;max-width:380px;display:flex;flex-direction:column;gap:20px}
.dash-login .wordmark{font-size:22px}
.dash-login h1{font-size:48px}

/* ---------- Small screens ---------- */
@media (max-width:720px){
  .login{grid-template-columns:1fr;grid-template-rows:200px auto}
  .login__image{min-height:200px}
  .login__panel{padding:var(--space-6) var(--space-5) var(--space-8)}
  .page{padding:0 var(--space-4) var(--space-8)}
  .page-main{padding-top:var(--space-6)}
  .banner{height:160px}
  .form-grid,.cm-grid{grid-template-columns:minmax(0,1fr)}
  .form-grid--auto .span-2{grid-column:auto}
  .schedule li{grid-template-columns:64px 12px minmax(0,1fr);gap:10px}
  .schedule__time{font-size:20px}
  .schedule__title{font-size:20px}
  .dash{padding:0 var(--space-4) var(--space-8)}
  .dash-title{margin:28px 0 16px}
  .tabs{flex-wrap:nowrap;overflow-x:auto;margin-bottom:28px}
  .tab{white-space:nowrap;padding:10px}
  .diet-list li{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px}
  .diet-list .diet{grid-column:1/-1}
  .gift-rows li{grid-template-columns:minmax(0,1fr);gap:10px}
  .pledge-list li{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px}
  .pledge-list li .check{grid-column:1}
  .stat__value{font-size:36px}
  .site-header .link-btn{margin-left:8px}
}

/* ---------- Small fixes ---------- */
.table .tabnum{font-variant-numeric:tabular-nums}
.stack-sm:empty{display:none}
.dash-header__end a{white-space:nowrap}
@media (max-width:420px){.dash-header .role{display:none}}
.act-card{flex-wrap:wrap}
@media (max-width:720px){
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .stat{padding:16px}
}
