@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;500;600;700;800&family=Figtree:wght@400;500;600;700&display=swap');
:root{
  --bg:#efece5; --surface:#fcfaf5; --ink:#211e1a; --muted:#74695f; --line:#ddd5ca;
  --green:#76513a; --green-dark:#593c2a; --accent-ink:#fcf8ef; --soft:#f0e6da;
  --sidebar:#684b35; --surface-strong:#e9dfd2; --hover:#f2ede5; --input:#fffdf8;
  --sand:#f1e7d4; --sand-ink:#795f32; --peach:#f0e0d3; --peach-ink:#815439;
  --feature:#eee2d5; --feature-line:#c8b19a; --feature-decoration:#9d7a58;
  --bad:#9c4738; --bad-bg:#f7e8e1; --shadow:#35221612; --veil:#19130eb5;
  --event-bg:#dceceb; --event-ink:#185e63; --event-color:#27777c;
  --body:'Figtree',system-ui,sans-serif; --display:'Bricolage Grotesque',system-ui,sans-serif;
  color-scheme:light; scrollbar-color:#a48a71 var(--bg); scrollbar-width:thin
}

::selection{background:var(--green);color:var(--accent-ink)}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--body)}
[hidden]{display:none!important}
a{color:inherit}
button,input,select,textarea{font:inherit}
button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
button:disabled{cursor:wait;opacity:.6}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--green);outline-offset:3px}
h1,h2,h3,p{margin:0}
h1,h2,h3{font-family:var(--display);line-height:1.15}
h1{font-size:42px;letter-spacing:-1.7px;font-weight:700}
h2{font-size:21px;letter-spacing:-.5px}
h3{font-size:17px}
p+p{margin-top:12px}
.muted{color:var(--muted)}
.small{font-size:13px}
.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.6px;color:var(--muted);margin-bottom:9px}
.shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}
.sidebar{position:sticky;top:0;align-self:start;height:100vh;background:var(--sidebar);border-right:1px solid var(--line);padding:34px 21px 20px;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font:700 24px var(--display);letter-spacing:-1px}
.logo-mark{display:grid;place-items:center;width:43px;height:43px;border-radius:14px;background:var(--green);color:var(--accent-ink);font:700 32px/1 var(--display);padding-bottom:5px;flex:none}
.brand small{font:600 8px var(--body);letter-spacing:1.2px;display:block;margin-top:3px;color:var(--muted)}
.nav-label{font-size:9px;font-weight:700;letter-spacing:1.4px;color:var(--muted);margin:49px 12px 15px}
nav{display:flex;flex-direction:column;gap:5px}
nav a{padding:11px 13px;display:flex;align-items:center;gap:13px;border-radius:9px;text-decoration:none;font-size:14px;font-weight:500;color:var(--muted)}
nav a:hover{background:var(--hover)}
nav a.active{background:var(--green);color:var(--accent-ink);box-shadow:0 4px 9px var(--shadow)}
.nav-icon{font-size:20px;width:20px;text-align:center;line-height:1}
.external{margin-left:auto;opacity:.6}
.nav-divider{height:1px;background:var(--line);margin:12px}
.count{margin-left:auto;font-size:11px;background:var(--surface-strong);border-radius:5px;padding:0 6px}
.sidebar-bottom{margin-top:auto;padding-top:35px}
.connection{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);padding:21px 7px 0}
.dot{height:7px;width:7px;display:inline-block;background:var(--sand-ink);border-radius:50%;flex:none}
.dot.online{background:var(--green)}
main{padding:0 42px 26px;max-width:1600px;width:100%;margin:0 auto;align-self:start}
.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line)}
.topbar>div{display:flex;align-items:center;gap:12px}
.private-badge{font-size:11px}
.page-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:38px 0 30px}
.page-header .muted{margin-top:12px;font-size:14px}
.button{display:inline-flex;justify-content:center;align-items:center;gap:9px;min-height:40px;padding:10px 16px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;transition:background .15s}
.button:hover{background:var(--hover)}
.button.primary{background:var(--green);border-color:var(--green);color:var(--accent-ink);box-shadow:0 4px 8px var(--shadow)}
.button.primary:hover{background:var(--green-dark)}
.button.primary>span{font-size:20px;line-height:1}
.button.light{background:var(--surface-strong);border:1px solid var(--feature-line);color:var(--green)}
.button.subtle{background:var(--bg)}
.button.danger{color:var(--bad)}
.icon-button{border:0;background:transparent;width:32px;height:32px;border-radius:7px;color:var(--muted);font-size:19px}
.icon-button:hover{background:var(--soft);color:var(--green)}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:25px}
.stat-card{position:relative;background:var(--surface);border:1px solid var(--line);padding:22px 23px;border-radius:12px;display:flex;flex-direction:column;min-height:162px}
.stat-caption{font-size:11px;color:var(--muted);margin:2px 45px 9px 0}
.stat-card strong{font:600 42px/1.2 var(--display);letter-spacing:-2px}
.stat-card>span:last-child{font-size:12px;color:var(--muted);margin-top:6px}
.stat-icon{position:absolute;right:21px;top:20px;display:grid;place-items:center;height:36px;width:36px;border-radius:10px;font-size:24px}
.green{background:var(--soft);color:var(--green)}
.sand{background:var(--sand);color:var(--sand-ink)}
.peach{background:var(--peach);color:var(--peach-ink)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:24px;min-width:0}
.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px}
.panel-heading .eyebrow{font-size:9px;margin-bottom:7px}
.text-link,.text-button{color:var(--green);font-size:11px;font-weight:600;text-decoration:none;white-space:nowrap}
.text-link:hover{text-decoration:underline}
.text-button{background:transparent;border:0;padding:5px}
.overview-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:23px}
.agenda-panel{min-height:308px}
.meal-feature{background:var(--feature);border:1px solid var(--feature-line);border-radius:12px;padding:24px 27px;position:relative;overflow:hidden}
.feature-top{display:flex;align-items:center;gap:9px;margin-bottom:19px}
.feature-icon{font-size:23px;line-height:1}
.mini-label{font-size:8px;letter-spacing:1.3px;font-weight:700;color:var(--green)}
.meal-feature h2{font-size:33px;line-height:1.06;letter-spacing:-1px}
.meal-feature p{font-size:12px;color:var(--muted);max-width:29ch;margin:14px 0 19px}
.meal-feature .button{font-size:12px;gap:30px}
.feature-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:24px;color:var(--muted);font-size:7px;letter-spacing:1px;font-weight:600}
.feature-bottom>span:last-child{position:absolute;right:14px;bottom:4px;font-size:72px;line-height:1;color:var(--feature-decoration);transform:rotate(13deg)}
.bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px;margin-top:23px}
.bottom-grid .panel{min-height:185px}
.footer-note{text-align:center;font-size:10px;color:var(--muted);margin:25px 0 5px}
.empty{min-height:135px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px 12px;color:var(--muted)}
.empty-symbol{display:grid;place-items:center;width:43px;height:43px;font-size:22px;background:var(--bg);border-radius:12px;color:var(--green);margin-bottom:11px}
.empty strong{font-size:13px;font-weight:500;color:var(--muted)}
.empty p{font-size:11px;max-width:32ch;margin-top:7px}
.event-row{display:flex;align-items:center;gap:13px;padding:14px 0;border-bottom:1px solid var(--line);text-align:left;width:100%;color:inherit;background:transparent;border-width:0 0 1px;cursor:pointer}
.event-row:last-child{border-bottom:0}
.event-row:hover .event-title{color:var(--green)}
.date-tile{width:43px;min-height:48px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--soft);border-radius:8px;font:600 21px/1 var(--display);color:var(--green)}
.date-tile small{font:600 8px var(--body);text-transform:uppercase;letter-spacing:1px;margin-bottom:5px}
.date-tile.vacation{background:var(--sand);color:var(--sand-ink)}
.event-details{min-width:0;flex:1}
.event-title{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.event-meta{display:block;font-size:11px;color:var(--muted);margin-top:4px}
.event-kind{font-size:9px;background:var(--soft);border-radius:5px;padding:4px 7px;color:var(--green)}
.event-kind.vacation{background:var(--sand);color:var(--sand-ink)}
.shopping-item{font-size:12px;display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.shopping-item:last-child{border-bottom:0}
.check-outline{width:13px;height:13px;border:1px solid var(--line);border-radius:4px}
.shopping-item>span:last-child{margin-left:auto;color:var(--muted);font-size:11px}
.calendar-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(250px,1fr);gap:22px;align-items:start}
.calendar-panel{padding:23px 18px 14px}
.month-controls{display:flex;align-items:center;gap:8px}
.month-controls h2{font-size:19px;min-width:148px;text-align:center}
.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.weekdays{font-size:10px;color:var(--muted);text-align:center;padding:10px 0}
.calendar-day{min-width:0;min-height:84px;display:flex;flex-direction:column;align-items:stretch;gap:4px;border:0;border-top:1px solid var(--line);border-right:1px solid var(--line);padding:7px 4px;background:var(--surface);color:var(--ink);text-align:left}
.calendar-day:nth-child(7n){border-right:0}
.calendar-day:hover,.calendar-day.selected{background:var(--hover)}
.calendar-day.other-month{background:var(--input);color:var(--muted)}
.day-number{font-size:11px;width:23px;height:23px;display:grid;place-items:center;align-self:flex-start}
.calendar-day.is-today .day-number{background:var(--green);color:var(--accent-ink);border-radius:50%}
.calendar-entry{font-size:8px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding:3px 4px;border-radius:3px;background:var(--soft);color:var(--green)}
.calendar-entry.vacation{background:var(--sand);color:var(--sand-ink)}
.calendar-legend{display:flex;gap:13px;flex-wrap:wrap;font-size:9px;color:var(--muted);margin-top:18px}
.calendar-legend>span{display:flex;align-items:center;gap:5px}
.calendar-legend a{margin-left:auto;text-decoration:none}
.legend-dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.legend-dot.green{background:var(--green)}
.legend-dot.sand{background:var(--sand-ink)}
.pill{display:inline-block;padding:5px 9px;background:var(--bg);border-radius:6px;color:var(--muted);font-size:10px}
.vacation-item{display:grid;grid-template-columns:43px minmax(0,1fr) auto;gap:18px;align-items:center;padding:18px 0;border-top:1px solid var(--line)}
.vacation-item h3{font-size:17px;margin-bottom:6px}
.vacation-item p{font-size:12px;color:var(--muted)}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.settings-grid .panel>h2{margin:0 0 20px}
.settings-grid p{font-size:13px}
.settings-grid .button{margin:18px 0 8px}
.settings-grid .text-link{display:inline-block;margin-top:20px}
dl{margin:0 0 22px}
dl>div{display:flex;justify-content:space-between;gap:18px;font-size:12px;padding:10px 0;border-bottom:1px solid var(--line)}
dt{color:var(--muted)}
dd{margin:0;text-align:right}
code{font-size:12px;color:var(--green);background:var(--soft);border-radius:4px;padding:1px 5px}
dialog{background:var(--surface);border:1px solid var(--line);border-radius:17px;width:min(590px,calc(100vw - 28px));padding:0;color:var(--ink);box-shadow:0 18px 90px var(--shadow)}
dialog::backdrop{background:var(--veil);backdrop-filter:blur(3px)}
form{padding:27px;display:flex;flex-direction:column;gap:17px}
.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.dialog-heading h2{font-size:27px}
.dialog-heading .eyebrow{font-size:9px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:500}
input,select,textarea{background:var(--input);border:1px solid var(--line);border-radius:7px;padding:10px 11px;width:100%;color:var(--ink);font-size:13px;min-width:0}
textarea{resize:vertical}
label>.muted{display:contents}
.dialog-footer{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:20px}
.dialog-footer>div{display:flex;gap:8px;margin-left:auto}
.form-error{font-size:12px;color:var(--bad);background:var(--bad-bg);border-radius:6px;padding:10px}
.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--surface-strong);color:var(--ink);border-radius:9px;padding:13px 22px;box-shadow:0 5px 25px var(--shadow);font-size:13px;z-index:99;max-width:calc(100vw - 30px)}
.access{min-height:100vh;display:grid;place-items:center;background:radial-gradient(ellipse at 70% 20%,var(--soft),transparent 50%),var(--bg);padding:30px}
.access-card{width:100%;max-width:460px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:40px}
.access-card .logo-mark{margin-bottom:30px}
.access-card h1{margin-bottom:24px}
.access-card>p{color:var(--muted);font-size:14px}
.access-card .small{font-size:12px;margin-top:28px}
.access-card .eyebrow{font-size:10px}
.refresh-note{font-size:12px;color:var(--peach-ink)}

@media(min-width:1500px){main{padding-left:60px;padding-right:60px}
}
@media(max-width:1150px){.shell{grid-template-columns:205px minmax(0,1fr)}
.sidebar{padding-left:15px;padding-right:15px}
main{padding-left:25px;padding-right:25px}
.overview-grid{grid-template-columns:1.4fr 1fr}
.calendar-layout{grid-template-columns:1fr}
.calendar-layout>section:last-child{min-height:140px}
.stat-card{padding:19px 16px}
.stat-icon{right:15px}
.stat-caption{font-size:10px}
.brand{font-size:22px}
}
@media(max-width:850px){.shell{grid-template-columns:1fr}
.sidebar{height:auto;position:relative;border-right:0;padding:17px 23px 12px;gap:12px;border-bottom:1px solid var(--line)}
.brand .logo-mark{width:34px;height:34px;border-radius:10px;font-size:26px}
.brand{font-size:21px}
.brand small,.nav-label,.nav-divider,.sidebar-bottom{display:none}
nav{flex-direction:row;gap:5px;overflow:auto}
nav a{padding:8px 11px;gap:7px;white-space:nowrap;font-size:12px}
.nav-icon{font-size:16px}
.external{display:none}
main{padding:0 24px 24px}
.topbar{height:51px}
.page-header{margin:27px 0}
.page-header h1{font-size:35px}
.overview-grid{grid-template-columns:1.45fr 1fr}
.stats{gap:12px}
.stat-icon{height:28px;width:28px;font-size:19px}
.panel{padding:20px}
.stat-caption{margin-right:28px}
.private-badge{font-size:10px}
.settings-grid{gap:15px}
.bottom-grid{gap:15px}
}
@media(max-width:580px){main{padding:0 16px 20px}
.sidebar{padding:15px 16px 10px}
.page-header{align-items:flex-start;gap:12px}
.page-header h1{font-size:31px}
.page-header .muted{font-size:12px;max-width:27ch}
.page-header .eyebrow{font-size:8px}
.page-header>.button{font-size:11px;padding:9px 11px;min-height:37px}
.page-header>.button>span{font-size:17px}
.topbar{font-size:10px}
.stats{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:17px}
.stat-card{min-height:130px;padding:15px 11px}
.stat-icon{position:static;height:25px;width:25px;font-size:17px;margin-bottom:10px;border-radius:7px}
.stat-caption{display:none}
.stat-card strong{font-size:30px}
.stat-card>span:last-child{font-size:10px;line-height:1.3}
.overview-grid,.bottom-grid,.settings-grid{grid-template-columns:1fr;gap:16px}
.overview-grid .meal-feature{padding:22px}
.meal-feature h2{font-size:29px}
.meal-feature h2 br{display:none}
.meal-feature p{max-width:36ch}
.feature-bottom{margin-top:14px}
.feature-bottom>span:last-child{font-size:90px;right:27px;bottom:10px}
.feature-top{margin-bottom:12px}
.bottom-grid{margin-top:16px}
.panel h2{font-size:19px}
.panel{padding:19px 16px}
.panel-heading{gap:8px;margin-bottom:16px}
.text-link{font-size:10px}
.event-kind{display:none}
.calendar-panel{padding:15px 7px}
.month-controls h2{font-size:16px;min-width:130px}
.calendar-day{min-height:70px;gap:3px;padding:5px 2px}
.calendar-entry{font-size:7px;padding:2px}
.day-number{font-size:10px}
.calendar-legend{font-size:8px;gap:8px}
.vacation-item{gap:11px;grid-template-columns:35px 1fr}
.vacation-item>.button{grid-column:2;justify-self:start}
.vacation-item .date-tile{width:35px}
.form-row{grid-template-columns:1fr}
form{padding:23px 19px;gap:13px}
.dialog-heading h2{font-size:24px}
.private-badge{display:none}
.access-card{padding:30px}
.access-card h1{font-size:38px}
.toast{width:max-content;max-width:calc(100vw - 30px)}
.event-meta{font-size:10px}
}

@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}
}

main,.stat-card,.page-header>div{min-width:0}

@media(max-width:850px){.shell{grid-template-columns:minmax(0,1fr)}
}

@media(max-width:580px){.page-header{flex-wrap:wrap}
.page-header>div{flex-basis:100%}
.stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.overview-grid,.bottom-grid,.settings-grid{grid-template-columns:minmax(0,1fr)}
.event-row{min-width:0}
.event-details{overflow:hidden}
.calendar-layout{grid-template-columns:minmax(0,1fr)}
}

.auth-form{padding:0;margin-top:25px;gap:9px}
.auth-form>label:not(.remember-login){margin-top:7px;font-size:13px}
.auth-form input{min-height:43px}
.password-input{position:relative}
.password-input input{padding-right:85px}
.password-input button{position:absolute;right:7px;top:7px;border:0;border-radius:5px;padding:6px 8px;background:transparent;color:var(--muted);font-size:11px}
.password-input button:hover{background:var(--soft);color:var(--green)}
.auth-confirm{display:flex;flex-direction:column;gap:9px;margin-top:9px}
.auth-form .remember-login{flex-direction:row;align-items:center;gap:9px;margin:9px 0;color:var(--muted);font-size:12px;cursor:pointer}
.remember-login input{width:15px;min-height:15px;height:15px;margin:0;accent-color:var(--green)}
.auth-form .button{width:100%;justify-content:space-between;min-height:45px;margin-top:3px;font-size:14px}
.auth-form .small{margin-top:0;font-size:11px}
.auth-link{display:inline-block;margin-top:18px;color:var(--green);font-size:12px;text-decoration:none}
.auth-link:hover{text-decoration:underline}
.auth-recovery{font-size:12px;color:var(--muted);margin-top:17px}
.auth-recovery summary{cursor:pointer}
.auth-recovery p{font-size:11px;margin-top:10px;line-height:1.6}
.access-card .auth-footer{margin-top:26px;padding-top:20px;border-top:1px solid var(--line);font-size:11px}
.account-form{padding:0;margin-top:20px;gap:13px}
.account-form .button{align-self:flex-start;margin:2px 0 0}
.account-name{font-weight:600;color:var(--green);font-size:15px!important}
.module-panel{padding:22px;overflow:visible}
#mealprep-view>.module-panel,#shopping-view>.module-panel{padding:0;border:0;background:transparent;box-shadow:none}
.module-loading{min-height:240px;display:grid;place-items:center;font-size:13px;color:var(--muted)}
.module-error{padding:36px 18px;text-align:center;font-size:13px;color:var(--muted)}
.module-error .button{margin-top:16px}
.module-frame{display:block;width:100%;height:480px;min-width:0;border:0;color-scheme:light;background:transparent}
.module-frame.module-modal{position:fixed;inset:0;width:100vw;height:100dvh!important;z-index:100;background:transparent}
body.module-dialog-open{overflow:hidden}
@media(max-width:580px){.module-panel{padding:16px 12px}}
.account-list{margin:20px 0}
.account-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.account-row>div{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}
.account-row strong{font-size:13px;font-weight:600}
.account-row span{font-size:11px;color:var(--muted);margin-top:3px}
.account-row .button{font-size:10px;padding:7px 10px;min-height:32px;margin:0}
.invite-result{margin-top:20px;padding:16px;background:var(--soft);border:1px solid var(--feature-line);border-radius:8px}
.invite-copy{display:flex;gap:8px;margin:9px 0}
.invite-copy input{font-size:11px}
.invite-copy .button{margin:0!important}
.auth-success{font-size:12px;padding:11px;color:var(--green);background:var(--soft);border-radius:7px}
@media(max-width:580px){.auth-form{padding:0}.access{padding:22px 16px}.access-card h1{font-size:34px}.account-form{padding:0}.invite-copy{flex-wrap:wrap}.invite-copy .button{width:100%}}

/* Four equal, independently scrollable spaces for everyday planning. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.sidebar{--ink:#fbf5eb;--muted:#ecddca;--line:#987b5e;--green:#f5ede1;--accent-ink:#3f2c20;--soft:#59402e;--hover:#75553d;--surface-strong:#896a50;color:var(--ink);background-color:var(--sidebar);background-image:linear-gradient(95deg,#38281d30,transparent 70%),repeating-linear-gradient(2deg,#cba67c0c 0 1px,transparent 1px 5px),linear-gradient(170deg,#7a593d40,#3d2a1c40);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#b39270 transparent}
.sidebar .nav-label{margin-top:34px}
.sidebar .count{color:var(--ink)}
.button.primary{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.button.primary:hover{background:#3b2d22;border-color:#3b2d22}
body[data-page="overview"] .topbar{height:68px}
body[data-page="overview"] .page-header{margin:26px 0 24px}
body[data-page="overview"] .page-header h1{font-size:38px}
body[data-page="overview"] .page-header .eyebrow{margin-bottom:7px;color:var(--green)}
body[data-page="overview"] .page-header .muted{margin-top:8px}
.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:20px;height:calc(100dvh - 244px);min-height:484px;max-height:1100px}
.dashboard-card{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-top:3px solid #8c6849;border-radius:12px;box-shadow:0 5px 18px #4e35200a}
.dashboard-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;padding:17px 22px 16px;border-bottom:1px solid var(--line);background:#f6f2eb}
.dashboard-title{display:flex;align-items:center;gap:12px;min-width:0}
.dashboard-title h2{font-size:21px;font-weight:600;letter-spacing:-.4px}
.dashboard-title p{font-size:11px;color:var(--muted);margin-top:5px;line-height:1.4}
.dashboard-icon{width:36px;height:36px;display:grid;place-items:center;background:var(--soft);color:var(--green);border:1px solid #dac6b2;border-radius:10px;flex:none}
.dashboard-icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.dashboard-open{width:32px;height:32px;display:grid;place-items:center;color:var(--muted);text-decoration:none;border:1px solid var(--line);border-radius:8px;font-size:19px;flex:none}
.dashboard-open:hover{background:var(--soft);color:var(--ink);border-color:var(--green)}
.dashboard-counter{min-width:28px;height:28px;padding:0 7px;display:grid;place-items:center;background:var(--soft);color:var(--green);border:1px solid var(--line);border-radius:8px;font-size:12px}
.dashboard-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:#74583f transparent;padding:0 22px;outline-offset:-4px}
.dashboard-scroll:focus-visible{outline:2px solid var(--green)}
.dashboard-scroll::-webkit-scrollbar{width:7px}
.dashboard-scroll::-webkit-scrollbar-thumb{background:#74583f;border-radius:8px}
.dashboard-scroll::-webkit-scrollbar-track{background:transparent}
.dashboard-scroll .event-row{padding:13px 0;gap:11px}
.dashboard-scroll .event-row:focus-visible{outline-offset:-3px;border-radius:5px}
.dashboard-scroll .event-meta{overflow-wrap:anywhere}
.dashboard-scroll .date-tile{width:39px;min-height:44px;font-size:20px}
.dashboard-footer{flex:none;min-height:49px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 22px;border-top:1px solid var(--line);color:var(--muted);font-size:10px}
.dashboard-footer .text-button{padding:3px 0}
.dashboard-quick-add{flex:none;display:flex;flex-direction:row;align-items:center;gap:9px;padding:10px 16px 10px 22px;border-top:1px solid var(--line);background:#f7f3ec}
.dashboard-quick-add input{background:transparent;border:0;border-radius:5px;padding:7px 3px;line-height:20px;font-size:12px;flex:1;width:0}
.dashboard-quick-add input::placeholder{color:var(--muted);opacity:1}
.dashboard-quick-add .quick-quantity{flex:0 0 65px;width:65px;border-left:1px solid var(--line);border-radius:0;padding-left:10px;font-size:11px}
.dashboard-quick-add button{flex:none;width:32px;height:32px;border:1px solid #cfb89f;border-radius:8px;background:var(--surface-strong);color:var(--ink);font-size:21px;line-height:1}
.dashboard-quick-add button:hover{background:var(--green);color:var(--accent-ink)}
.dashboard-empty{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;min-height:0;padding:8px 10px;text-align:center}
.dashboard-empty>span{font-size:20px;line-height:1;color:var(--green);margin-bottom:6px}
.dashboard-empty strong{font-size:12px;line-height:1.4;font-weight:500;color:var(--ink)}
.dashboard-empty p{max-width:38ch;margin-top:4px;font-size:10px;line-height:1.4;color:var(--muted)}
.dashboard-check-row{display:flex;flex-direction:row;align-items:center;gap:12px;padding:14px 0;min-height:52px;border-bottom:1px solid var(--line);cursor:pointer;font-weight:400}
.dashboard-check-row:last-child{border-bottom:0}
.dashboard-check-row input{appearance:none;flex:none;min-width:18px;width:18px;height:18px;margin:0;padding:0;border:1px solid #8d7561;border-radius:5px;background:var(--input);cursor:pointer;display:grid;place-items:center}
.dashboard-check-row input:checked{background:var(--green);border-color:var(--green)}
.dashboard-check-row input:checked::after{content:'✓';font-size:13px;font-weight:700;line-height:1;color:var(--accent-ink)}
.dashboard-check-row input:disabled{opacity:.5;cursor:wait}
.dashboard-item-text{display:block;flex:1;min-width:0}
.dashboard-item-text strong{display:block;font-size:13px;line-height:1.45;font-weight:500;overflow-wrap:anywhere}
.dashboard-item-text small{display:block;margin-top:3px;font-size:10px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere}
.dashboard-check-row:hover .dashboard-item-text strong{color:var(--green)}
.dashboard-check-row.is-done .dashboard-item-text strong{color:var(--muted);text-decoration:line-through;text-decoration-color:#7f6b59}
.dashboard-quantity{flex:none;max-width:30%;font-size:11px;color:var(--muted);overflow-wrap:anywhere;text-align:right}
.dashboard-meal{border-bottom:1px solid var(--line)}
.dashboard-meal:last-child{border-bottom:0}
.dashboard-meal summary{display:flex;align-items:center;gap:11px;padding:14px 0;cursor:pointer;list-style:none;min-height:67px}
.dashboard-meal summary::-webkit-details-marker{display:none}
.dashboard-meal summary:focus-visible{outline-offset:-2px;border-radius:5px}
.dashboard-meal summary:hover strong{color:var(--green)}
.meal-dot{font-size:21px;color:var(--green);flex:none}
.portion-pill{background:var(--soft);color:var(--green);border:1px solid #dac6b2;border-radius:6px;padding:4px 7px;font-size:10px;white-space:nowrap}
.is-finished .portion-pill{background:var(--input);border-color:var(--line);color:var(--muted)}
.meal-chevron{font-size:15px;color:var(--muted)}
.dashboard-meal[open] .meal-chevron{transform:rotate(180deg)}
.meal-detail{padding:0 0 14px 32px;font-size:12px;color:var(--muted);overflow-wrap:anywhere;white-space:pre-wrap}
.meal-detail p+p{margin-top:6px}
@media(min-width:851px) and (max-width:1150px){main{padding-left:26px;padding-right:26px}.shell{grid-template-columns:214px minmax(0,1fr)}.sidebar{padding-left:15px;padding-right:15px}.brand{font-size:21px}.dashboard-heading{padding:16px}.dashboard-scroll{padding:0 16px}.dashboard-footer{padding:10px 16px}.dashboard-quick-add{padding-left:16px}.dashboard-title h2{font-size:19px}.dashboard-footer>span{max-width:47%}}
@media(max-width:850px){.dashboard-grid{height:auto;min-height:0;grid-template-rows:repeat(2,330px)}body[data-page="overview"] .topbar{height:54px}body[data-page="overview"] .page-header{margin:24px 0}.dashboard-heading{padding:16px}.dashboard-scroll{padding:0 16px}.dashboard-footer{padding:10px 16px}.dashboard-quick-add{padding-left:16px}}
@media(max-width:599px){.dashboard-grid{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-rows:340px;gap:16px;max-height:none}body[data-page="overview"] .page-header h1{font-size:34px}.dashboard-footer{font-size:10px}.dashboard-title h2{font-size:21px}}

/* A clearer appointment color while keeping the existing vacation palette. */
.date-tile:not(.vacation),.event-kind:not(.vacation){background:var(--event-bg);color:var(--event-ink)}
.calendar-entry:not(.vacation){background:var(--event-bg);color:var(--event-ink);border-left:3px solid var(--event-color);padding-left:5px}
.calendar-legend .legend-dot.green{background:var(--event-color)}
.event-row:hover .date-tile:not(.vacation){background:#c9e1e0}

/* Portrait and landscape tablets retain the sidebar and the four-panel overview. */
@media(min-width:700px) and (max-width:1150px){
  .shell{grid-template-columns:180px minmax(0,1fr)}
  .sidebar{position:sticky;top:0;align-self:start;height:100dvh;border-right:1px solid var(--line);border-bottom:0;padding:25px 12px 18px;gap:0;flex-direction:column}
  .brand{font-size:19px;gap:8px;letter-spacing:-.7px}
  .brand .logo-mark{width:34px;height:34px;border-radius:10px;font-size:26px}
  .brand small{display:block;font-size:6px;letter-spacing:.9px}
  .nav-label{display:block;font-size:8px;letter-spacing:1px}
  .sidebar .nav-label{margin:34px 8px 13px}
  .sidebar nav{flex-direction:column;gap:4px;overflow:visible}
  .sidebar nav a{font-size:12px;white-space:nowrap;padding:10px 9px;gap:9px}
  .sidebar .nav-icon{font-size:18px;width:18px}
  .nav-divider{display:block;margin:11px 7px}
  .sidebar-bottom{display:block;padding-top:22px}
  .connection{font-size:10px;padding:18px 4px 0}
  main{padding:0 20px 24px}
  .topbar{font-size:11px}
  .page-header{gap:15px}
  .page-header h1,body[data-page="overview"] .page-header h1{font-size:34px}
  .page-header .muted{font-size:12px}
  .page-header>.button{font-size:11px;padding:10px 12px}
  body[data-page="overview"] .topbar{height:64px}
  body[data-page="overview"] .page-header{margin:24px 0 22px}
  .dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));height:calc(100dvh - 236px);min-height:460px;max-height:none;gap:16px}
  .dashboard-heading{padding:14px}
  .dashboard-title{gap:9px}
  .dashboard-title h2{font-size:19px}
  .dashboard-title p{font-size:10px}
  .dashboard-icon{width:32px;height:32px;border-radius:9px}
  .dashboard-icon svg{width:19px;height:19px}
  .dashboard-open{width:28px;height:28px}
  .dashboard-scroll{padding:0 14px}
  .dashboard-footer{min-height:47px;padding:8px 14px;font-size:9px;gap:8px}
  .dashboard-footer .text-link,.dashboard-footer .text-button{font-size:10px}
  .dashboard-quick-add{padding-left:14px}
  .dashboard-quick-add .quick-quantity{flex-basis:52px;width:52px;padding-left:7px}
}
@media(min-width:600px) and (max-width:699px){
  .dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));height:calc(100dvh - 316px);min-height:500px;max-height:none;gap:16px}
  .dashboard-title h2{font-size:19px}
  .dashboard-heading{padding:14px}
  .dashboard-title{gap:9px}
  .dashboard-icon{width:32px;height:32px}
}

.dashboard-list-options{flex:none;display:flex;justify-content:flex-end;padding:4px 14px;border-top:1px solid var(--line);background:var(--surface)}
.completed-toggle{border:0;background:transparent;color:var(--green);font-size:11px;font-weight:500;padding:4px 2px;cursor:pointer;border-radius:4px;line-height:1.4;white-space:nowrap}
.completed-toggle:hover{text-decoration:underline}
.completed-toggle:disabled{color:var(--muted);cursor:default;opacity:.65;text-decoration:none}
.dashboard-quick-add select{flex:0 0 64px;width:64px;min-width:0;padding:6px 3px;background:var(--surface);font-size:11px;border-color:var(--line)}
.meal-detail{white-space:normal}
.meal-detail>p{white-space:pre-wrap}
.meal-people{display:grid;gap:9px;padding:2px 0 5px}
.meal-person{display:flex;align-items:center;gap:9px;min-width:0}
.person-initial{display:grid;place-items:center;flex:none;width:27px;height:27px;background:var(--soft);color:var(--green);border:1px solid var(--line);border-radius:50%;font-size:11px;font-weight:600}
.meal-person strong{display:block;font-size:12px;font-weight:600;color:var(--ink)}
.meal-person div>span{display:block;font-size:11px;color:var(--muted);line-height:1.5}
.shared-portions{font-size:10px;margin-top:5px;color:var(--muted)}
.todos-toolbar{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:18px}
.todos-toolbar h2{margin-bottom:6px}
.todos-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.todos-filters select{width:auto;max-width:180px;font-size:12px}
.todos-add-form{display:flex;flex-direction:row;align-items:center;gap:10px;padding:16px;background:#f6f2eb;border:1px solid var(--line);border-radius:10px;margin-bottom:12px}
.todos-add-form input{flex:1}
.todos-add-form select{flex:0 0 130px;width:130px}
.todo-manager-row{display:flex;gap:14px;align-items:center;border-bottom:1px solid var(--line)}
.todo-manager-row:last-child{border-bottom:0}
.todo-manager-row .dashboard-check-row{flex:1;border-bottom:0;min-width:0;padding:16px 0}
.todo-manager-row.is-done .dashboard-item-text strong{color:var(--muted);text-decoration:line-through}
.todo-assignee{flex:0 0 130px;width:130px;font-size:12px;padding:8px}
#todos-list{outline-offset:5px}
#todos-list:focus-visible{outline:2px solid var(--green)}
#todos-list>.dashboard-empty{min-height:180px}
@media(max-width:850px){.todos-add-form{flex-wrap:wrap}.todos-add-form input{flex-basis:100%}.todos-add-form select{flex:1;width:auto}.todos-add-form .button{flex:1}.todos-filters{gap:10px}}
@media(max-width:580px){.todos-toolbar{gap:13px}.todos-filters{justify-content:space-between;width:100%}.todo-manager-row{gap:9px}.todo-assignee{flex-basis:105px;width:105px;font-size:11px}.todos-panel{padding:18px 14px}.todos-add-form{padding:12px}}

/* The overview gives its space to the four lists; their options stay in the headings. */
body[data-page="overview"] .page-header{display:none}
body[data-page="overview"] .topbar{height:54px}
#overview-view{padding-top:22px}
.dashboard-grid{height:calc(100dvh - 102px)}
.dashboard-menu{position:relative;flex:none}
.dashboard-menu-button{padding:0;display:grid;place-items:center;background:transparent}
.dashboard-menu-button svg{display:block;width:18px;height:18px;fill:currentColor}
.dashboard-menu-button[aria-expanded="true"]{background:var(--soft);border-color:#b99a7d;color:var(--green)}
.dashboard-menu-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:20;width:210px;padding:5px;background:var(--surface);border:1px solid var(--line);border-radius:9px;box-shadow:0 8px 24px #35221624}
.dashboard-menu-pop :is(a,button){display:block;width:100%;padding:10px 11px;border:0;border-radius:5px;background:transparent;text-align:left;text-decoration:none;color:var(--ink);font-size:12px;line-height:1.4;cursor:pointer}
.dashboard-menu-pop :is(a,button):hover{background:var(--hover);color:var(--green)}
.dashboard-menu-pop [aria-checked="true"]{color:var(--green);background:var(--soft)}
.dashboard-menu-section{border-top:1px solid var(--line);margin-top:3px;padding-top:3px}
.sidebar-utility{margin-top:18px;padding-top:10px;border-top:1px solid #a383604d}
.sidebar-logout{display:flex;align-items:center;gap:13px;padding:11px 13px;border:0;border-radius:9px;background:transparent;color:var(--muted);text-align:left;font-size:14px;font-weight:500}
.sidebar-logout:hover{background:var(--hover)}
.sidebar-utility :is(a,button):focus-visible{outline-color:var(--ink)}
.todo-delete{flex:none;width:32px;height:32px;padding:6px;border-radius:7px;color:var(--bad)}
.todo-delete svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.todo-delete:hover{color:var(--bad);background:var(--bad-bg)}
@media(min-width:700px) and (max-width:1150px){
  #overview-view{padding-top:18px}
  .dashboard-grid{height:calc(100dvh - 96px)}
  .sidebar-logout{font-size:12px;padding:10px 9px;gap:9px}
  .sidebar-utility{margin-top:12px}
}
@media(min-width:700px) and (max-height:800px){.sidebar-bottom{padding-top:18px}.sidebar-utility{margin-top:0}.connection{padding-top:14px}}
@media(max-width:699px){
  .sidebar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}
  .sidebar>.brand{grid-column:1;grid-row:1}
  .sidebar>.nav-label{display:none}
  .sidebar>nav{grid-column:1/-1;grid-row:2;min-width:0}
  .sidebar-bottom{display:block;grid-column:2;grid-row:1;margin:0;padding:0}
  .sidebar-bottom .connection{display:none}
  .sidebar-utility{flex-direction:row;gap:5px;border:0;padding:0;margin:0}
  .sidebar-utility :is(a,button){display:grid;place-items:center;width:32px;height:32px;padding:0}
  .sidebar-utility .utility-label{display:none}
  #overview-view{padding-top:18px}
}
@media(min-width:600px) and (max-width:699px){.dashboard-grid{height:calc(100dvh - 206px)}}
@media(max-width:599px){.dashboard-grid{height:auto}.todo-assignee{flex-basis:95px;width:95px}.todo-manager-row{gap:7px}}

/* Work directly inside each view, with creation actions in its panel. */
body:not([data-page="settings"]) .page-header{display:none}
body:not([data-page="settings"]) .topbar{height:54px}
.view:not(#overview-view):not(#settings-view){padding-top:22px}
.panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-left:auto}
.calendar-panel>.panel-heading,#vacation-view .panel-heading{flex-wrap:wrap;gap:14px}
.panel-actions .button{min-height:36px;font-size:12px;padding:8px 12px}
#vacation-view .panel-heading .small{font-size:11px;margin-top:6px}
@media(max-width:580px){.view:not(#overview-view):not(#settings-view){padding-top:18px}.calendar-panel .month-controls{justify-content:space-between;width:100%}.calendar-panel .panel-actions{width:100%}}

