:root {
  --bg:#f4f2ee;--surface:#fff;--surface2:#f9f8f5;
  --border:rgba(0,0,0,.08);--border-med:rgba(0,0,0,.14);
  --text:#1a1814;--text2:#6b6560;--text3:#a8a39d;
  --accent:#1a1814;--accent-fg:#fff;
  --inverse-bg:#1a1814;--inverse-fg:#fff;
  --green:#15803d;--green-bg:#f0fdf6;--green-border:#bbf7d0;
  --amber:#b45309;--amber-bg:#fffbeb;--amber-border:#fde68a;
  --red:#dc2626;--red-bg:#fef2f2;--red-border:#fecaca;
  --blue:#1d4ed8;
  --c-blue-bg:#dbeafe;--c-blue-fg:#1d4ed8;
  --c-green-bg:#dcfce7;--c-green-fg:#15803d;
  --c-amber-bg:#fef3c7;--c-amber-fg:#b45309;
  --c-coral-bg:#ffe4e6;--c-coral-fg:#be123c;
  --c-teal-bg:#ccfbf1;--c-teal-fg:#0f766e;
  --c-pink-bg:#fce7f3;--c-pink-fg:#be185d;
  --c-purple-bg:#f3e8ff;--c-purple-fg:#7e22ce;
  --radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;
  --shadow:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
  --shadow-md:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.04);
}
@media(prefers-color-scheme:dark){:root{
  --bg:#111010;--surface:#1c1b19;--surface2:#242320;
  --border:rgba(255,255,255,.08);--border-med:rgba(255,255,255,.14);
  --text:#ede9e3;--text2:#8c877f;--text3:#5c5852;
  --accent:#ede9e3;--accent-fg:#111010;
  --inverse-bg:#ede9e3;--inverse-fg:#111010;
  --green:#4ade80;--green-bg:#052e16;--green-border:#14532d;
  --amber:#fbbf24;--amber-bg:#1c1200;--amber-border:#3d2800;
  --red:#f87171;--red-bg:#1c0000;--red-border:#3d0000;
  --blue:#60a5fa;
  --c-blue-bg:#1e3a5f;--c-blue-fg:#93c5fd;
  --c-green-bg:#14532d;--c-green-fg:#86efac;
  --c-amber-bg:#3d2800;--c-amber-fg:#fcd34d;
  --c-coral-bg:#4c0519;--c-coral-fg:#fda4af;
  --c-teal-bg:#134e4a;--c-teal-fg:#5eead4;
  --c-pink-bg:#500724;--c-pink-fg:#f9a8d4;
  --c-purple-bg:#3b0764;--c-purple-fg:#d8b4fe;
  --shadow:0 1px 3px rgba(0,0,0,.4),0 1px 2px rgba(0,0,0,.3);
  --shadow-md:0 4px 12px rgba(0,0,0,.5),0 2px 4px rgba(0,0,0,.4);
}}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{font-family:'DM Sans',-apple-system,sans-serif;color:var(--text);background:var(--bg);padding-bottom:88px;min-height:100vh}
.toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--inverse-bg);color:var(--inverse-fg);font-size:13px;font-weight:500;padding:10px 18px;border-radius:20px;z-index:999;opacity:0;transition:all .25s ease;pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-md)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center;z-index:400;backdrop-filter:blur(2px)}
.overlay.center{align-items:center;padding:1.5rem}
.overlay.hidden{display:none!important}
.sheet{background:var(--surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:1.5rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));width:100%;max-width:500px;max-height:90vh;overflow-y:auto}
.sheet.card{border-radius:var(--radius-lg);padding:1.5rem 1.25rem 2rem}
.handle{width:36px;height:4px;background:var(--border-med);border-radius:2px;margin:0 auto 1.5rem}
.sheet-title{font-family:'DM Serif Display',serif;font-size:22px;font-weight:400;margin-bottom:6px}
.sheet-sub{font-size:13px;color:var(--text2);margin-bottom:1.5rem;line-height:1.6}
/* Onboarding */
.ob-step{display:none}.ob-step.active{display:block}
.ob-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}
.ob-input{width:100%;padding:13px 16px;border:1.5px solid var(--border-med);border-radius:var(--radius-sm);font-size:16px;font-family:inherit;outline:none;margin-bottom:12px;background:var(--surface2);color:var(--text);transition:border-color .15s}
.ob-input:focus{border-color:var(--accent);background:var(--surface)}
.party-list{display:flex;flex-direction:column;gap:6px;margin-bottom:1.25rem;max-height:50vh;overflow-y:auto}
.party-option{padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-md);cursor:pointer;background:var(--surface);transition:all .15s}
.party-option.selected{border-color:var(--accent);background:var(--surface2)}
.po-name{font-size:14px;font-weight:500;margin-bottom:3px}
.po-members{font-size:12px;color:var(--text2)}
/* Buttons */
.btn{width:100%;padding:13px;background:var(--accent);color:var(--accent-fg);border:none;border-radius:var(--radius-sm);font-size:15px;font-family:inherit;cursor:pointer;font-weight:500;margin-top:6px;transition:opacity .15s;letter-spacing:-.01em}
.btn.sec{background:var(--surface);color:var(--text);border:1.5px solid var(--border-med);margin-top:8px}
.btn:focus-visible,.nav-btn:focus-visible,.dinner-tab:focus-visible,.rsvp-btn:focus-visible,.claim-btn:focus-visible,.pri-toggle:focus-visible,.bring-chip:focus-visible,.bring-submit:focus-visible,.bl-post-btn:focus-visible,.bl-join-btn:focus-visible,.leftover-lvl-btn:focus-visible,.chore-action:focus-visible,.chore-submit:focus-visible,.leftovers-new-submit:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* Pages */
.page{display:none;padding:1.5rem 1rem 1rem;max-width:680px;margin:0 auto}
.page.active{display:block}
.page-eyebrow{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}
.page-title{font-family:'DM Serif Display',serif;font-size:28px;font-weight:400;margin-bottom:4px;line-height:1.1}
.page-sub{font-size:13px;color:var(--text2);margin-bottom:1.25rem}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:var(--surface);backdrop-filter:blur(12px);border-top:1px solid var(--border);display:flex;z-index:50;padding-bottom:env(safe-area-inset-bottom)}
.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 0 12px;cursor:pointer;gap:3px;border:none;background:none;color:var(--text3);font-family:inherit;transition:color .15s}
.nav-btn.active{color:var(--text)}
.nav-icon{font-size:20px;line-height:1}
.nav-label{font-size:10px;font-weight:600;letter-spacing:.02em}
.user-chip{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border-med);border-radius:24px;padding:5px 12px 5px 5px;font-size:12px;color:var(--text2);cursor:pointer;margin-bottom:1.25rem;box-shadow:var(--shadow)}
.user-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.u-av{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--accent-fg);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;flex-shrink:0}
.sec-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}
/* Cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow)}
/* Tonight */
.tonight-special{border-radius:var(--radius-lg);padding:2rem 1.5rem;margin-bottom:1.25rem;text-align:center}
.tonight-special.wedding{background:var(--c-purple-bg);border:1px solid var(--c-purple-fg)}
.tonight-special.rehearsal{background:var(--green-bg);border:1px solid var(--green-border)}
.tonight-special.kevin{background:var(--amber-bg);border:1px solid var(--amber-border)}
.tonight-special-emoji{font-size:36px;margin-bottom:12px}
.tonight-special-title{font-family:'DM Serif Display',serif;font-size:22px;margin-bottom:8px}
.tonight-special-sub{font-size:13px;color:var(--text2);line-height:1.6}
.tonight-neutral{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2rem 1.5rem;margin-bottom:1.25rem;text-align:center;box-shadow:var(--shadow)}
/* Clusters */
.clusters-wrap{padding:14px 16px}
.clusters-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px}
.clusters{display:flex;flex-wrap:wrap;gap:12px;min-height:40px}
.cluster{display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer}
.cluster-circles{display:flex}
.circle{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;border:2.5px solid var(--bg);flex-shrink:0}
.circle:not(:first-child){margin-left:-10px}
.c-me{background:var(--inverse-bg);color:var(--inverse-fg)}
.c-blue{background:var(--c-blue-bg);color:var(--c-blue-fg)}
.c-green{background:var(--c-green-bg);color:var(--c-green-fg)}
.c-amber{background:var(--c-amber-bg);color:var(--c-amber-fg)}
.c-coral{background:var(--c-coral-bg);color:var(--c-coral-fg)}
.c-teal{background:var(--c-teal-bg);color:var(--c-teal-fg)}
.c-pink{background:var(--c-pink-bg);color:var(--c-pink-fg)}
.c-purple{background:var(--c-purple-bg);color:var(--c-purple-fg)}
.cluster-name{font-size:10px;font-weight:500;color:var(--text3);text-align:center;max-width:60px}
.cd-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.cd-item:last-child{border-bottom:none}
.cd-circle{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}
.cd-name{font-size:14px;font-weight:500}
/* Calendar */
.day-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:12px;overflow:hidden;box-shadow:var(--shadow)}
.day-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--surface2);border-bottom:1px solid var(--border)}
.day-name{font-size:14px;font-weight:600}
.day-date{font-size:12px;color:var(--text2);margin-top:1px}
.day-badge{font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px}
.b-anchor{background:var(--inverse-bg);color:var(--inverse-fg)}
.b-rehearsal{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}
.b-wedding{background:var(--c-purple-bg);color:var(--c-purple-fg);border:1px solid var(--c-purple-fg)}
.b-kevin{background:var(--amber-bg);color:var(--amber);border:1px solid var(--amber-border)}
.meal-row{display:flex;padding:10px 16px;border-bottom:1px solid var(--border);gap:12px;align-items:baseline}
.meal-row:last-child{border-bottom:none}
.meal-type{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;min-width:58px;flex-shrink:0;padding-top:2px}
.meal-name{font-size:13px;font-weight:500;margin-bottom:2px}
.meal-note{font-size:12px;color:var(--text2)}
/* RSVP */
.night-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:14px;overflow:hidden;box-shadow:var(--shadow)}
.night-head{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;background:var(--surface2)}
.night-title{font-size:16px;font-weight:600}
.night-meta{font-size:12px;color:var(--text2);margin-top:3px}
.night-count{font-size:12px;font-weight:500;color:var(--text2);background:var(--bg);padding:3px 9px;border-radius:20px;white-space:nowrap;margin-top:2px}
.rsvp-toggle{display:flex;border-bottom:1px solid var(--border)}
.rsvp-btn{flex:1;padding:12px;border:none;background:none;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;color:var(--text2)}
.rsvp-btn:first-child{border-right:1px solid var(--border)}
.rsvp-btn.in{background:var(--green-bg);color:var(--green)}
.rsvp-btn.out{background:var(--red-bg);color:var(--red)}
.pri-list{display:flex;flex-direction:column;gap:8px;margin-bottom:1.25rem}
.pri-item{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm)}
.pri-name{font-size:14px;font-weight:500}
.pri-note{font-size:11px;color:var(--text3);margin-top:2px}
.pri-toggle{width:46px;height:28px;border-radius:14px;border:none;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0}
.pri-toggle.on{background:var(--accent)}.pri-toggle.off{background:var(--border-med)}
.pri-toggle::after{content:'';position:absolute;width:22px;height:22px;border-radius:50%;background:var(--surface);top:3px;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.pri-toggle.on::after{left:21px}.pri-toggle.off::after{left:3px}
.collins-item{background:var(--amber-bg);border-color:var(--amber-border)}
/* Jobs */
.job-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:10px;overflow:hidden;box-shadow:var(--shadow)}
.job-night-lbl{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface2)}
.job-row{display:flex;justify-content:space-between;align-items:flex-start;padding:13px 16px;border-bottom:1px solid var(--border);gap:12px}
.job-row:last-child{border-bottom:none}
.job-title{font-size:14px;font-weight:600;margin-bottom:3px}
.job-desc{font-size:12px;color:var(--text2);line-height:1.5}
.job-claimers{display:flex;margin-top:8px;align-items:center;gap:4px}
.jc-circle{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;border:2px solid var(--surface)}
.jc-circle:not(:first-child){margin-left:-6px}
.jc-more{font-size:10px;color:var(--text3);margin-left:4px;font-weight:500}
.job-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.job-counter{font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;border:1px solid var(--border);background:var(--surface2);color:var(--text2);white-space:nowrap}
.job-counter.full{background:var(--red-bg);color:var(--red);border-color:var(--red-border)}
.job-counter.open{background:var(--green-bg);color:var(--green);border-color:var(--green-border)}
.claim-btn{padding:7px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border-med);background:var(--surface);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;color:var(--text2)}
.claim-btn.mine{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.claim-btn.full{background:var(--surface2);color:var(--text3);border-color:var(--border);cursor:default}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
.shake{animation:shake .4s ease}
/* Progress */
.rsvp-progress-wrap{padding:12px 16px;border-bottom:1px solid var(--border)}
.rsvp-progress-labels{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.rsvp-progress-confirmed{font-size:13px;font-weight:600}
.rsvp-progress-planned{font-size:12px;color:var(--text3)}
.rsvp-bar-track{height:8px;background:var(--surface2);border-radius:6px;position:relative;border:1px solid var(--border)}
.rsvp-bar-confirmed{height:100%;background:var(--accent);border-radius:6px;transition:width .4s ease}
.night-jobs-progress{display:flex;align-items:center;gap:8px;padding:8px 16px;border-top:1px solid var(--border);background:var(--surface2)}
.njp-label{font-size:11px;color:var(--text3);font-weight:500;flex:1}
.njp-bar{flex:2;height:5px;background:var(--border);border-radius:3px;overflow:hidden}
.njp-fill{height:100%;border-radius:3px;transition:width .3s ease}
.njp-fill.complete{background:var(--green)}.njp-fill.partial{background:var(--amber)}.njp-fill.empty{background:var(--border)}
.njp-count{font-size:11px;font-weight:600;color:var(--text2);white-space:nowrap}
/* Bring */
.bring-section{padding:0 16px 14px;border-top:1px solid var(--border)}
.bring-title{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;padding:12px 0 10px}
.bring-items{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.bring-chip{font-size:12px;font-weight:500;padding:5px 12px;border-radius:20px;border:1.5px solid var(--border-med);background:var(--surface);cursor:pointer;color:var(--text2);white-space:nowrap}
.bring-chip.selected{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.bring-chip.claimed-other{background:var(--surface2);color:var(--text3);cursor:default}
.bring-custom-row{display:flex;gap:8px}
.bring-input{flex:1;padding:8px 12px;border:1.5px solid var(--border-med);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;outline:none;background:var(--surface2);color:var(--text)}
.bring-input:focus{border-color:var(--accent)}
.bring-submit{padding:8px 14px;background:var(--accent);color:var(--accent-fg);border:none;border-radius:var(--radius-sm);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer}
.bring-submitted{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.bring-tag{display:flex;align-items:center;gap:6px;font-size:12px;padding:4px 10px;border-radius:20px;background:var(--surface2);border:1px solid var(--border);color:var(--text2)}
.bring-tag.mine{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.bring-tag-remove{cursor:pointer;opacity:.5;font-size:14px;line-height:1}
/* Emergency */
.emergency-fab{position:fixed;bottom:96px;right:16px;width:44px;height:44px;background:var(--red);border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;z-index:200;box-shadow:0 2px 8px rgba(220,38,38,.4)}
.emergency-row{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.emergency-row:last-child{border-bottom:none}
.emergency-icon{font-size:20px;flex-shrink:0;padding-top:1px}
.emergency-label{font-size:11px;color:var(--text3);margin-bottom:2px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.emergency-value{font-size:14px;font-weight:600}
/* Clock */
.clock-card{background:var(--inverse-bg);color:var(--inverse-fg);border-radius:var(--radius-lg);padding:1.25rem 1.5rem;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow-md)}
.clock-time{font-family:'DM Serif Display',serif;font-size:42px;font-weight:400;line-height:1;letter-spacing:-1px}
.clock-right{text-align:right}
.clock-zone{font-size:10px;font-weight:600;opacity:.4;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px}
.clock-date-label{font-size:13px;opacity:.6}
.clock-countdown{font-size:12px;font-weight:500;opacity:.5;margin-top:6px}
.clock-countdown.soon{opacity:.9;color:#fbbf24}
/* Offline */
.offline-banner{background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:var(--radius-sm);padding:8px 14px;font-size:12px;color:var(--amber);margin-bottom:1rem}
.offline-banner.hidden{display:none}
/* Bulletin Board */
.bl-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.bl-header{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.bl-title{font-size:13px;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.06em}
.bl-add-btn{font-size:12px;font-weight:600;color:var(--accent);background:none;border:1.5px solid var(--accent);border-radius:var(--radius-sm);padding:4px 11px;cursor:pointer;font-family:inherit}
.bl-post{padding:12px 16px;border-bottom:1px solid var(--border)}
.bl-post:last-child{border-bottom:none}
.bl-post-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.bl-post-meta{font-size:11px;color:var(--text3);margin-top:4px}
.bl-post-announce{background:var(--inverse-bg);color:var(--inverse-fg)}
.bl-post-announce .bl-post-meta{color:inherit;opacity:.45}
.bl-post-eyebrow{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;opacity:.6;flex:1}
.bl-announce-text{font-family:'DM Serif Display',serif;font-size:17px;font-weight:400;line-height:1.35;margin-bottom:2px}
.bl-ride-dest{font-size:14px;font-weight:600;flex:1}
.bl-ride-time{font-size:12px;color:var(--text3);font-weight:500}
.bl-join-btn{padding:5px 12px;border-radius:20px;border:1.5px solid var(--border-med);background:var(--surface2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text2);flex-shrink:0}
.bl-join-btn.joined{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.bl-note-dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0;box-shadow:0 0 0 3px var(--green-border)}
.bl-note-text{font-size:14px;font-weight:500;flex:1}
.bl-delete-btn{background:none;border:none;font-size:16px;cursor:pointer;color:var(--text3);padding:0 2px;line-height:1;margin-left:auto;flex-shrink:0}
.bl-seats-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);flex-shrink:0}
.bl-seats-badge.full{background:var(--surface2);color:var(--text3);border-color:var(--border)}
.bl-join-row{display:flex;gap:6px;padding:8px 16px 12px;flex-wrap:wrap}
.bl-seat-btn{padding:6px 14px;border-radius:20px;border:1.5px solid var(--border-med);background:var(--surface2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text2)}
.bl-seat-btn.joined{background:var(--green-bg);color:var(--green);border-color:var(--green-border);width:100%;text-align:center}
.bl-seat-row{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.bl-seat-label{font-size:12px;color:var(--text3);font-weight:500;margin-right:2px}
.bl-seat-opt{padding:5px 11px;border-radius:20px;border:1.5px solid var(--border-med);background:var(--surface);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text2)}
.bl-seat-opt.active{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.bl-composer{padding:12px 16px;border-top:1px solid var(--border);background:var(--surface2)}
.bl-type-pills{display:flex;gap:6px;margin-bottom:10px}
.bl-type-pill{padding:5px 12px;border-radius:20px;border:1.5px solid var(--border-med);background:var(--surface);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text2)}
.bl-type-pill.active{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.bl-composer-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.bl-preset-btn{font-size:13px;padding:6px 12px;border-radius:20px;border:1.5px solid var(--border-med);background:var(--surface);cursor:pointer;font-family:inherit;font-weight:500;color:var(--text2)}
.bl-composer-fields{display:flex;gap:8px;margin-bottom:8px}
.bl-composer-input{flex:1;padding:8px 12px;border:1.5px solid var(--border-med);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;outline:none;background:var(--surface);color:var(--text)}
.bl-composer-input:focus{border-color:var(--accent)}
.bl-composer-actions{display:flex;gap:8px;justify-content:flex-end}
.bl-cancel-btn{padding:7px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border-med);background:none;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;color:var(--text2)}
.bl-post-btn{padding:7px 16px;border-radius:var(--radius-sm);border:none;background:var(--accent);color:var(--accent-fg);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}
/* Schedule */
.schedule-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.schedule-header{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.schedule-item{display:flex;align-items:flex-start;padding:11px 16px;border-bottom:1px solid var(--border);gap:14px}
.schedule-item:last-child{border-bottom:none}
.schedule-item.now{background:var(--green-bg)}
.schedule-item.past{opacity:.4}
.schedule-time{font-size:12px;font-weight:600;color:var(--text3);min-width:52px;padding-top:2px;flex-shrink:0}
.schedule-item.now .schedule-time{color:var(--green)}
.schedule-dot{width:8px;height:8px;border-radius:50%;background:var(--border-med);flex-shrink:0;margin-top:4px}
.schedule-item.now .schedule-dot{background:var(--green);box-shadow:0 0 0 3px var(--green-border)}
.schedule-title{font-size:14px;font-weight:500;margin-bottom:2px}
.schedule-note{font-size:12px;color:var(--text2)}
/* Arrivals */
.arrivals-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.arrivals-header{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.arrival-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border);gap:12px}
.arrival-row:last-child{border-bottom:none}
.arrival-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}
.arrival-name{font-size:13px;font-weight:500;flex:1}
.arrival-when{font-size:12px;color:var(--text3)}
.arrival-status{font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px}
.arrival-status.here{background:var(--green-bg);color:var(--green)}
.arrival-status.today{background:var(--amber-bg);color:var(--amber)}
.arrival-status.soon{background:var(--surface2);color:var(--text3)}
/* Weather */
.weather-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.weather-header{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.weather-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.weather-refresh{font-size:11px;color:var(--text3);background:none;border:none;cursor:pointer;font-family:inherit}
.weather-main{padding:14px 16px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--border)}
.weather-icon{font-size:32px;line-height:1}
.weather-temp{font-family:'DM Serif Display',serif;font-size:32px;font-weight:400;line-height:1}
.weather-desc{font-size:13px;color:var(--text2);margin-top:2px}
.weather-detail{font-size:11px;color:var(--text3);margin-top:4px}
.weather-forecast{display:grid;grid-template-columns:repeat(3,1fr)}
.weather-day{padding:10px 8px;text-align:center;border-right:1px solid var(--border)}
.weather-day:last-child{border-right:none}
.weather-day-name{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.weather-day-icon{font-size:18px;margin-bottom:3px}
.weather-day-temp{font-size:12px;font-weight:600}
.weather-day-lo{font-size:11px;color:var(--text3)}
/* Fire */
.fire-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.fire-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface2)}
.fire-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.fire-update-btn{font-size:12px;font-weight:500;color:var(--text2);background:none;border:1px solid var(--border-med);border-radius:var(--radius-sm);padding:4px 10px;cursor:pointer;font-family:inherit}
.fire-status{padding:14px 16px;display:flex;align-items:center;gap:12px}
.fire-emoji{font-size:28px;line-height:1}
.fire-state{font-size:15px;font-weight:600;margin-bottom:2px}
.fire-meta{font-size:12px;color:var(--text2)}
.fire-picker{display:flex;border-top:1px solid var(--border)}
.fire-pick-btn{flex:1;padding:12px 8px;border:none;background:none;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;color:var(--text2);display:flex;flex-direction:column;align-items:center;gap:3px}
.fire-pick-btn:not(:last-child){border-right:1px solid var(--border)}
.fire-pick-btn.active{background:var(--surface2);color:var(--text)}
.fire-pick-emoji{font-size:20px}.fire-pick-label{font-size:11px}
/* Laundry */
.laundry-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.laundry-header{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.laundry-machines{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--border)}
.laundry-machines:last-child{border-bottom:none}
.laundry-machine{padding:14px 16px}
.laundry-machine:first-child{border-right:1px solid var(--border)}
.laundry-machine-name{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.laundry-status{font-size:15px;font-weight:600;margin-bottom:3px}
.laundry-status.free{color:var(--green)}.laundry-status.inuse{color:var(--amber)}.laundry-status.done{color:var(--blue)}
.laundry-meta{font-size:11px;color:var(--text3);margin-bottom:10px;min-height:16px}
.laundry-btn{width:100%;padding:7px;border-radius:var(--radius-sm);border:1.5px solid var(--border-med);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;color:var(--text2)}
.laundry-btn.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.laundry-section-label{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;padding:6px 16px 4px;background:var(--surface2);border-bottom:1px solid var(--border)}
/* Leftovers */
.leftovers-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.leftovers-header{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.leftovers-title{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.leftovers-add-btn{font-size:12px;font-weight:500;color:var(--text2);background:none;border:1px solid var(--border-med);border-radius:var(--radius-sm);padding:3px 9px;cursor:pointer;font-family:inherit}
.leftover-row{display:flex;align-items:center;padding:11px 16px;border-bottom:1px solid var(--border);gap:12px}
.leftover-row:last-child{border-bottom:none}
.leftover-name{flex:1;font-size:14px;font-weight:500}
.leftover-level{display:flex;gap:4px}
.leftover-lvl-btn{padding:4px 8px;border-radius:20px;border:1.5px solid var(--border);background:var(--surface2);font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;color:var(--text3)}
.leftover-lvl-btn.active-plenty{border-color:var(--green-border);background:var(--green-bg);color:var(--green)}
.leftover-lvl-btn.active-some{border-color:var(--amber-border);background:var(--amber-bg);color:var(--amber)}
.leftover-lvl-btn.active-gone{border-color:var(--red-border);background:var(--red-bg);color:var(--red)}
.leftovers-empty{padding:1rem 16px;font-size:13px;color:var(--text3);text-align:center}
.leftovers-add-row{display:flex;gap:8px;padding:10px 16px;border-top:1px solid var(--border)}
.leftovers-new-input{flex:1;padding:8px 12px;border:1.5px solid var(--border-med);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;outline:none;background:var(--surface2);color:var(--text)}
.leftovers-new-submit{padding:8px 14px;background:var(--accent);color:var(--accent-fg);border:none;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}
/* Tasks */
.chore-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem;box-shadow:var(--shadow)}
.chore-header{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;cursor:pointer}
.chore-header-left{display:flex;align-items:center;gap:8px}
.chore-title{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.chore-badge{font-size:11px;font-weight:700;background:var(--accent);color:var(--accent-fg);border-radius:20px;padding:1px 7px}
.chore-chevron{font-size:11px;color:var(--text3);transition:transform .2s}
.chore-chevron.open{transform:rotate(180deg)}
.chore-body{display:none}.chore-body.open{display:block}
.chore-row{display:flex;align-items:flex-start;padding:11px 16px;border-bottom:1px solid var(--border);gap:12px}
.chore-row:last-child{border-bottom:none}
.chore-row.supply{background:var(--amber-bg)}
.chore-text{flex:1;font-size:14px;font-weight:500}
.chore-claimer{font-size:11px;color:var(--text3);margin-top:2px}
.chore-action{padding:5px 11px;border-radius:var(--radius-sm);border:1.5px solid var(--border-med);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;color:var(--text2);white-space:nowrap}
.chore-action.claim-btn-chore{border-color:var(--accent);color:var(--text);background:var(--surface)}
.chore-action.done-btn{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.chore-add-row{display:flex;gap:8px;padding:10px 16px;border-top:1px solid var(--border)}
.chore-input{flex:1;padding:8px 12px;border:1.5px solid var(--border-med);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;outline:none;background:var(--surface2);color:var(--text)}
.chore-submit{padding:8px 14px;background:var(--accent);color:var(--accent-fg);border:none;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}
/* Dinner */
.dinner-tabs{display:flex;gap:4px;margin-bottom:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:4px;box-shadow:var(--shadow)}
.dinner-tab{flex:1;padding:8px 6px;border-radius:var(--radius-sm);border:none;background:none;font-size:12px;font-weight:500;cursor:pointer;color:var(--text2);font-family:inherit;transition:all .15s;text-align:center}
.dinner-tab.active{background:var(--accent);color:var(--accent-fg);font-weight:600}
.plan-title{font-family:'DM Serif Display',serif;font-size:24px;font-weight:400;margin-bottom:4px}
.plan-meta{font-size:13px;color:var(--text2);margin-bottom:12px}
.timing-bar{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.timing-pill{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:5px 11px;box-shadow:var(--shadow)}
.t-dot{width:5px;height:5px;border-radius:50%;background:var(--text);flex-shrink:0}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin-bottom:12px}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px;box-shadow:var(--shadow)}
.stat-label{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.stat-val{font-size:14px;font-weight:600}
.menu-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 16px;margin-bottom:12px;box-shadow:var(--shadow)}
.menu-item{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border);gap:12px}
.menu-item:last-child{border-bottom:none}
.mi-name{font-size:13px;font-weight:600;margin-bottom:2px}
.mi-note{font-size:11px;color:var(--text2)}
.mi-badges{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px}
.mi-badge{font-size:10px;font-weight:700;padding:2px 6px;border-radius:10px}
.mi-badge.gf{background:var(--green-bg);color:var(--green)}
.mi-badge.df{background:var(--c-blue-bg);color:var(--c-blue-fg)}
.mi-badge.v{background:var(--c-teal-bg);color:var(--c-teal-fg)}
.mi-badge.vegan{background:var(--c-purple-bg);color:var(--c-purple-fg)}
.mi-badge.nuts{background:var(--amber-bg);color:var(--amber)}
.mi-badge.sf{background:var(--c-coral-bg);color:var(--c-coral-fg)}
.mi-qty{font-size:12px;font-weight:500;color:var(--text2);text-align:right;min-width:90px;flex-shrink:0;padding-top:1px}
.shop-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 16px;margin-bottom:12px;box-shadow:var(--shadow)}
.shop-item{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px}
.shop-item:last-child{border-bottom:none}
.shop-qty{font-weight:600}
.note-box{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 16px;font-size:12px;color:var(--text2);margin-bottom:12px;line-height:1.7}
.reminder-box{background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:var(--radius-md);padding:12px 16px;font-size:12px;color:var(--amber);margin-bottom:12px;line-height:1.7}
.reminder-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--amber);margin-bottom:5px}
.roles-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 16px;margin-bottom:12px;box-shadow:var(--shadow)}
.role-row{display:flex;justify-content:space-between;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--border);gap:12px}
.role-row:last-child{border-bottom:none}
.role-name{font-size:13px;font-weight:600;margin-bottom:2px}
.role-task{font-size:12px;color:var(--text2);line-height:1.5}
.role-cnt{font-size:11px;font-weight:500;color:var(--text2);background:var(--surface2);border:1px solid var(--border);border-radius:20px;padding:2px 8px;white-space:nowrap;flex-shrink:0}
/* Dietary */
.diet-member-block{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border)}
.diet-member-block:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
.diet-member-name{font-size:14px;font-weight:600;margin-bottom:8px}
.diet-tag-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.diet-tag{font-size:12px;font-weight:500;padding:5px 11px;border-radius:20px;border:1.5px solid var(--border-med);background:var(--surface2);cursor:pointer;color:var(--text2);transition:all .15s}
.diet-tag.on{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.diet-custom{width:100%;padding:7px 10px;border:1.5px solid var(--border-med);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;outline:none;background:var(--surface2);color:var(--text)}
.leftovers-new-input:focus,.chore-input:focus,.diet-custom:focus{border-color:var(--accent)}
.diet-scroll{max-height:55vh;overflow-y:auto}
.diet-summary{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:1.25rem;box-shadow:var(--shadow)}
.diet-summary-hdr{padding:10px 16px;background:var(--surface2);border-bottom:1px solid var(--border);font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em}
.diet-summary-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border);gap:10px}
.diet-summary-row:last-child{border-bottom:none}
.diet-summary-name{font-size:13px;font-weight:500;min-width:70px}
.diet-summary-tags{display:flex;flex-wrap:wrap;gap:4px}
.diet-pill{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--surface2);color:var(--text2)}
/* Arrival onboarding */
.arrival-date-row,.arrival-time-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}
.arrival-chip{padding:8px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border-med);background:var(--surface2);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;color:var(--text2);transition:all .15s}
.arrival-chip.on{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
/* Phone/notif */
.notif-pref-list{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.notif-pref-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:var(--text)}
.notif-pref-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0;cursor:pointer}
@media(min-width:768px){
  body{padding-bottom:0;padding-left:220px}
  .bottom-nav{bottom:auto;top:0;left:0;right:auto;width:220px;height:100vh;flex-direction:column;border-top:none;border-right:1px solid var(--border);align-items:stretch;padding-bottom:0;justify-content:flex-start;padding-top:1.5rem;gap:4px}
  .nav-btn{flex:none;flex-direction:row;justify-content:flex-start;padding:10px 20px;gap:12px;border-radius:8px;margin:0 8px;width:auto}
  .nav-icon{font-size:18px}
  .nav-label{font-size:13px;letter-spacing:0}
  .emergency-fab{bottom:24px;right:24px}
}
