/* TuttiBoard brand tokens — load AFTER css/app.css
   <link rel="stylesheet" href="/css/tuttiboard-brand.css">
   Only overrides values; no structural CSS is duplicated. */

:root{
  /* brand palette */
  --brand-terracotta:#D85C41;
  --brand-sage:#78845A;
  --brand-ochre:#D6A33B;
  --brand-ink:#25211D;
  --brand-paper:#F7F2E8;

  /* scheme: paper (default) */
  --paper:#F7F2E8;
  --paper-2:#FBF8F1;
  --paper-3:#EFE9DA;
  --paper-border:#E1DAC9;
  --paper-border-soft:#E8E1D1;

  --ink:#25211D;
  --ink-soft:#2B2721;
  --ink-text:#F7F2E8;

  --text-primary:#25211D;
  --text-secondary:#4A4438;
  --text-muted:#6B6353;
  --text-faint:#9A8F76;
  --text-faintest:#C4BCA8;

  --accent:#D85C41;
  --accent-ink:#FFFFFF;
  --success:#78845A;
  --danger:#B34630;
  --danger-bg:#F7E4DC;
}

/* Alternate schemes, retuned to the brand's warm neutrals.
   "mist" (previously blue) is now Clay — update its label in Settings to match. */
html[data-scheme="linen"]{
  --paper:#ECE4D3; --paper-2:#F4EEE0; --paper-3:#E3DAC4; --paper-border:#D9CFB6; --paper-border-soft:#E0D6BD;
}
html[data-scheme="sage"]{
  --paper:#E2E4D7; --paper-2:#ECEEE3; --paper-3:#CFD5C3; --paper-border:#C9CFBA; --paper-border-soft:#D6DBCB;
}
html[data-scheme="mist"]{ /* Clay */
  --paper:#F3E3D9; --paper-2:#F8EDE6; --paper-3:#EBD5C8; --paper-border:#E0C8BC; --paper-border-soft:#EAD6CB;
}
html[data-scheme="charcoal"],
html[data-theme="dark"]{
  --paper:#221F1A; --paper-2:#2A2620; --paper-3:#332E27; --paper-border:#3C372D; --paper-border-soft:#332F27;
  --ink:#16130F; --ink-soft:#1A1714;
  --text-primary:#F2ECE0; --text-secondary:#D0C7B3; --text-muted:#A39A86; --text-faint:#85795F; --text-faintest:#564F3F;
}

/* ---- Sidebar brand lockup ---- */
.sidebar-brand{display:flex;flex-direction:column;gap:9px;}
.sidebar-brand-lockup{display:flex;align-items:center;gap:9px;}
.sidebar-brand-lockup img{height:20px;width:auto;display:block;flex-shrink:0;}
.sidebar-brand-name{
  font-family:var(--font-sans);
  font-size:21px;line-height:1;letter-spacing:-.015em;color:#fff;font-weight:300;
}
.sidebar-brand-name b{font-weight:800;}
.sidebar-brand-sub{
  font-size:10px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--text-muted);
}

/* ---- Ochre (Household) legibility ----
   White on #D6A33B is 2.3:1. Anything filled with the ochre category colour
   takes ink text instead. readableOnColor() already covers the filter chips;
   this catches CSS-driven fills. */
.month-span-bar[style*="D6A33B"],.month-span-bar[style*="d6a33b"],
.month-label[style*="D6A33B"],.month-label[style*="d6a33b"],
.week-chip[style*="D6A33B"],.week-chip[style*="d6a33b"],
.week-event-block[style*="D6A33B"],.week-event-block[style*="d6a33b"],
.day-event-block[style*="D6A33B"],.day-event-block[style*="d6a33b"],
.cat-filter-btn.on[style*="D6A33B"],.cat-filter-btn.on[style*="d6a33b"]{color:#25211D !important;}

/* ---- Sign-in / invitation lockup ---- */
.login-logo.login-lockup{display:flex;align-items:center;justify-content:center;gap:10px;}
.login-logo.login-lockup img{height:30px;width:auto;min-width:0;max-width:none;border-radius:0;margin:0;display:block;flex-shrink:0;}
.login-wordmark{
  font-family:var(--font-sans);font-size:28px;line-height:1;letter-spacing:-.02em;
  color:var(--text-primary);font-weight:300;
}
.login-wordmark b{font-weight:800;}

/* ---- Mobile header lockup — rendered in renderTodayPage(), phone only ---- */
.mobile-brand-lockup{display:none;}
@media (max-width:760px){
  /* Sits above .today-header, which carries the page's 18px gutter — match it so
     the mark lines up with the greeting and date below it. */
  .mobile-brand-lockup{display:flex;align-items:center;gap:7px;padding:16px 18px 0;margin:0 0 -6px;}
}
.mobile-brand-lockup img{height:18px;width:auto;display:block;}
.mobile-brand-lockup span{
  font-family:var(--font-sans);font-size:14px;line-height:1;letter-spacing:-.01em;
  color:var(--text-primary);font-weight:300;
}
.mobile-brand-lockup span b{font-weight:800;}

/* ---- Sign-in / invitation screen, per design frame 13 ---- */
.login-screen{background:var(--paper);padding:32px;}
.login-card{
  width:420px;max-width:100%;text-align:left;
  background:var(--paper-2);border:1px solid var(--paper-border);border-radius:20px;
  padding:34px 34px 30px;box-shadow:none;
}
.login-logo.login-lockup{justify-content:flex-start;margin-bottom:26px;}
.login-logo.login-lockup img{height:26px;width:auto;border-radius:0;margin:0;}
.login-wordmark{font-size:26px;}
.login-title{font-size:24px;line-height:1.2;}
.login-sub{font-size:14px;margin:4px 0 22px;}
.login-form{gap:14px;}
.login-input{
  padding:12px 14px;font-size:15px;background:#fff;
  border:1px solid var(--paper-border);border-radius:10px;color:var(--text-primary);
}
.login-input::placeholder{color:var(--text-faint);}
.login-input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);}
.login-btn.btn-primary{
  height:auto;padding:13px 16px;border-radius:11px;
  background:var(--ink);color:var(--ink-text);border:1px solid var(--ink);
  font-size:15px;font-weight:700;
}
.login-btn.btn-primary:hover{background:var(--ink-soft);}
.login-err{margin-top:-4px;}
.login-divider{margin:18px 0;font-weight:600;letter-spacing:.12em;}
.social-login-btn{
  height:46px;border-radius:11px;font-size:15px;font-weight:600;
  background:#fff;border:1px solid var(--paper-border);color:var(--text-primary);
}
.social-login-btn:hover{background:var(--paper-3);}

/* Login splash art. Only the matching <picture> source is downloaded, so
   phones never pay the cost of a desktop-sized image. */
.login-screen.login-screen--splash{
  position:relative;isolation:isolate;overflow:hidden;
  justify-content:flex-end;
  background:#25211D;
  padding:clamp(24px,4vw,64px);
}
.login-splash-media{
  position:absolute;inset:0;z-index:-2;display:block;width:100%;height:100%;
  background:#25211D;
}
.login-splash-media img{
  display:block;width:100%;height:100%;object-fit:cover;object-position:center;
  animation:login-splash-reveal .45s ease-out both;
}
.login-splash-overlay{
  position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    linear-gradient(90deg,rgba(20,17,13,.08) 0%,rgba(20,17,13,.12) 44%,rgba(20,17,13,.58) 100%),
    linear-gradient(180deg,rgba(20,17,13,.04),rgba(20,17,13,.18));
}
.login-screen--splash .login-card{
  position:relative;z-index:1;margin:0;
  background:rgba(248,245,237,.94);
  border-color:rgba(255,255,255,.42);
  box-shadow:0 24px 72px rgba(20,17,13,.3);
  -webkit-backdrop-filter:blur(18px) saturate(115%);
  backdrop-filter:blur(18px) saturate(115%);
}
@keyframes login-splash-reveal{
  from{opacity:.55;transform:scale(1.012);}
  to{opacity:1;transform:scale(1);}
}
@media (max-width:1180px){
  .login-screen.login-screen--splash{padding:clamp(22px,4vw,44px);}
  .login-splash-overlay{
    background:
      linear-gradient(90deg,rgba(20,17,13,.08),rgba(20,17,13,.38)),
      linear-gradient(180deg,rgba(20,17,13,.02),rgba(20,17,13,.18));
  }
}
@media (max-width:640px){
  .login-screen.login-screen--splash{
    align-items:flex-end;justify-content:center;
    padding:18px 14px calc(18px + env(safe-area-inset-bottom,0px));
  }
  .login-splash-overlay{
    background:linear-gradient(180deg,rgba(20,17,13,.06) 0%,rgba(20,17,13,.18) 44%,rgba(20,17,13,.72) 100%);
  }
  .login-screen--splash .login-card{
    width:100%;max-width:440px;padding:26px 22px 22px;border-radius:18px;
  }
  .login-logo.login-lockup{margin-bottom:20px;}
  .login-sub{margin-bottom:18px;}
}
@media (prefers-reduced-motion:reduce){
  .login-splash-media img{animation:none;}
}

/* Invitation acceptance: the same card on ink, as drawn in frame 13 */
.login-screen.invite-screen{background:var(--paper);}
.login-card.invite-card{
  background:var(--ink);border-color:var(--ink);color:#F2ECE0;
}
.invite-card .login-title{color:#fff;}
.invite-card .login-sub{color:#BCB09A;}
.invite-card .login-wordmark{color:#fff;}
.invite-card .login-input{background:transparent;border-color:rgba(255,255,255,.16);color:#E9E3D6;}
.invite-card .login-input::placeholder{color:#8d816a;}
.invite-card .login-btn.btn-primary{background:var(--brand-ochre);border-color:var(--brand-ochre);color:var(--ink);}
.invite-card .login-eyebrow{
  font-size:10px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--accent);margin-bottom:14px;
}

/* app.css sizes .login-logo img as a 56px square crest; the mark is 100:86,
   so it must never be forced square. */
.login-logo.login-lockup img{width:auto !important;height:26px !important;border-radius:0 !important;margin:0 !important;}
.mobile-brand-lockup img,.sidebar-brand-lockup img{width:auto !important;border-radius:0 !important;}


/* =========================================================================
   Page-level brand pass — Settings, Import, Menu, dish editor, search.
   Keyed to the app's existing class names; no markup changes required.
   ========================================================================= */

.page-subtitle{max-width:70ch;text-wrap:pretty;}
.section-label{letter-spacing:.14em;}

/* ---- Settings & Import (Import reuses .settings-page/.settings-section) ----
   NOTE: .settings-page must keep height:100% + overflow-y:auto — it is the page's
   own scroll container. Below 1100px it falls back to a single column. */
.settings-page{
  height:100%;overflow-y:auto;padding:34px 40px;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-content:start;
}
/* full-width rows: the page header, the Appearance card and the Display/Status pair */
.settings-page>div:first-child,
.settings-page>.appearance-card,
.settings-page>.secondary-settings-grid{grid-column:1/-1;}
@media (max-width:1100px){
  .settings-page{display:flex;flex-direction:column;}
}
.settings-title{font-family:var(--font-serif);font-size:34px;font-weight:600;}
.settings-subtitle{font-size:14px;color:var(--text-muted);margin-top:4px;}
.settings-section{
  background:var(--paper-2);border:1px solid var(--paper-border);border-radius:16px;
  padding:22px 26px;
}
.settings-section-title{
  font-family:var(--font-serif);font-size:19px;font-weight:600;color:var(--text-primary);
  letter-spacing:0;text-transform:none;margin-bottom:14px;
}
.settings-section-title.upper{
  font-family:var(--font-sans);font-size:11px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-faint);
}
.settings-section-toolbar{gap:12px;}
.settings-row{
  display:flex;align-items:center;gap:12px;
  padding:12px 0;border-top:1px solid var(--paper-border-soft);
}
.settings-row:first-of-type{border-top:none;}
.settings-row-label{font-size:15px;font-weight:600;color:var(--text-primary);}

/* Status rows */
.health-table-wrap{border-radius:12px;overflow:hidden;}
.health-table{width:100%;border-collapse:collapse;font-size:14px;}
.health-table td{padding:11px 0;border-top:1px solid var(--paper-border-soft);vertical-align:middle;}
.health-table tr:first-child td{border-top:none;}
.health-service{font-weight:600;color:var(--text-primary);}
.health-status strong{font-weight:600;font-size:13px;color:var(--text-secondary);}
.health-time,.health-detail{font-size:12px;color:var(--text-muted);}
.health-dot{font-size:11px;margin-right:8px;line-height:1;}
.health-dot.ok{color:var(--brand-sage);}
.health-dot.bad{color:var(--accent);}
.health-dot.pending{color:var(--brand-ochre);}

/* Import candidate rows (Google Calendar + email) */
.gcal-row{
  display:flex;align-items:center;gap:16px;
  padding:14px 0;border-top:1px solid var(--paper-border-soft);border-bottom:0;
}
.import-row-main{flex:1;min-width:0;cursor:pointer;}
.import-row-main b{font-size:16px;font-weight:700;color:var(--text-primary);}
.import-row-main small{display:block;font-size:13px;color:var(--text-muted);margin-top:3px;}
.import-row-actions{display:flex;gap:8px;align-items:center;flex-shrink:0;}
.import-row-actions .btn{font-size:13px;padding:7px 14px;border-radius:9px;}
.gcal-notice{
  font-size:11px;font-weight:700;letter-spacing:.06em;
  color:#96701F;background:color-mix(in srgb,var(--brand-ochre) 22%,var(--paper-2));
  padding:2px 7px;border-radius:5px;
}

/* ---- Menu page ---- */
.menu-panel{border-radius:16px;padding:18px;}
.menu-week-nav strong{font-size:15px;font-weight:700;color:var(--text-primary);}
.menu-week-grid{grid-template-columns:repeat(7,minmax(0,1fr));}
.menu-day-column{padding:0 8px;}
.menu-day-column+.menu-day-column{border-left:1px solid var(--paper-border-soft);}
.menu-day-column.today .menu-day-head b{color:var(--accent);}
.menu-day-head{display:flex;flex-direction:column;gap:1px;padding-bottom:10px;}
.menu-day-head b{font-size:12px;font-weight:700;color:var(--text-secondary);}
.menu-day-head span{font-size:10px;color:var(--text-faint);}
.menu-meal-slot{border-top:1px solid var(--paper-border-soft);padding:9px 0;}
.menu-meal-label{
  font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-faint);margin-bottom:5px;
}
.menu-meal-slot.drag-over{background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:8px;}
.menu-assigned-dish{
  display:flex;align-items:center;gap:6px;
  font-size:11px;font-weight:600;color:var(--text-primary);
  background:var(--paper-3);border-radius:6px;padding:5px 7px;line-height:1.25;
}
.menu-assigned-dish button{border:0;background:none;color:var(--text-faint);cursor:pointer;font-size:13px;line-height:1;padding:0;}
.menu-drop-hint{font-size:10px;color:var(--text-faintest);}
.menu-dish-card{
  background:var(--paper);border:1px solid var(--paper-border-soft);border-radius:12px;
  padding:12px 14px;cursor:grab;
}
.menu-dish-card:hover{border-color:var(--paper-border);background:var(--paper-2);}
.menu-dish-card.dragging{opacity:.5;}
.menu-dish-copy b{font-size:14px;font-weight:700;color:var(--text-primary);}
.menu-dish-copy small{display:block;font-size:11px;color:var(--text-muted);margin-top:2px;}
.menu-dish-type-select{
  font-size:13px;font-weight:700;color:var(--text-primary);
  background:var(--paper);border:1px solid var(--paper-border);border-radius:9px;padding:7px 12px;
}
.menu-empty{font-size:13px;color:var(--text-muted);line-height:1.5;}

/* ---- Dish / recipe editor ---- */
.recipe-editor-shell{max-width:512px;}
.recipe-mode-picker{display:flex;gap:10px;margin-bottom:18px;}
.recipe-mode-option{
  flex:1;text-align:left;cursor:pointer;
  background:var(--paper);border:1.5px solid var(--paper-border);border-radius:12px;padding:12px 14px;
  font-family:var(--font-sans);
}
.recipe-mode-option b{display:block;font-size:14px;font-weight:700;color:var(--text-primary);}
.recipe-mode-option small{display:block;font-size:11px;color:var(--text-muted);margin-top:3px;line-height:1.4;}
.recipe-mode-option.active{border-color:var(--ink);background:var(--paper-3);}
.recipe-field{display:block;margin-bottom:13px;}
.recipe-field>span{
  display:block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--text-faint);margin-bottom:6px;
}
.recipe-field input,.recipe-field textarea,.recipe-field select,.recipe-import-row input{
  width:100%;font:inherit;font-size:14px;line-height:1.5;color:var(--text-primary);
  background:var(--paper);border:1px solid var(--paper-border);border-radius:10px;padding:11px 13px;
}
.recipe-field input:focus,.recipe-field textarea:focus,.recipe-import-row input:focus{
  outline:none;border-color:var(--ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent);
}
.recipe-import-row{display:flex;gap:8px;margin-bottom:8px;}
.recipe-import-status{font-size:12px;font-weight:600;color:var(--text-muted);margin-bottom:14px;}
.recipe-import-status.loading{color:var(--brand-ochre);}
.recipe-import-status.ok{color:var(--brand-sage);}
.recipe-import-status.err{color:var(--danger);}

/* ---- Unified search ---- */
.search-modal-backdrop{background:color-mix(in srgb,var(--ink) 82%,transparent);}
.search-modal-card{
  width:660px;max-width:92vw;background:var(--paper);border-radius:18px;
  box-shadow:0 30px 60px rgba(0,0,0,.4);overflow:hidden;
}
.search-input-row{
  display:flex;align-items:center;gap:12px;padding:20px 24px;
  border-bottom:1px solid var(--paper-border);
}
.search-input-row input{
  flex:1;border:0;background:none;font:inherit;font-size:19px;color:var(--text-primary);outline:none;
}
.search-input-icon{color:var(--text-muted);}
.search-close-btn{
  font-size:11px;font-weight:600;color:var(--text-muted);
  border:1px solid var(--paper-border);border-radius:6px;background:none;padding:3px 7px;cursor:pointer;
}
.search-results{padding:16px 14px 20px;max-height:60vh;overflow:auto;}
.search-result-row{
  display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;cursor:pointer;
}
.search-result-row:hover,.search-result-row.active{background:var(--paper-3);}
.search-result-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.search-result-main b{font-size:15px;font-weight:600;color:var(--text-primary);}
.search-result-main small{display:block;font-size:12px;color:var(--text-muted);margin-top:2px;}
.search-result-kind{
  margin-left:auto;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-faint);
}
.search-empty{font-size:14px;color:var(--text-muted);padding:18px 12px;}

/* ---- Settings: appearance card, household, status ---- */
.appearance-card,.settings-section{
  background:var(--paper-2);border:1px solid var(--paper-border);border-radius:16px;padding:22px 26px;
}
.appearance-card-title{
  font-family:var(--font-serif);font-size:20px;font-weight:600;color:var(--text-primary);
  letter-spacing:0;text-transform:none;margin-bottom:6px;
}
.appearance-note,.settings-section-note{
  font-size:12px;color:var(--text-muted);line-height:1.5;margin-bottom:10px;max-width:64ch;text-wrap:pretty;
}
.appearance-sub-label{
  font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--text-faint);margin:14px 0 10px;
}
.secondary-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}

/* segmented tabs (Color/Photo, Light/Dark/Auto) */
.seg-tabs{display:inline-flex;gap:6px;background:var(--paper-3);border-radius:10px;padding:4px;}
.seg-tab{
  font:inherit;font-size:13px;font-weight:500;color:var(--text-muted);
  background:none;border:0;border-radius:7px;padding:6px 16px;cursor:pointer;
}
.seg-tab.active{background:var(--paper-2);color:var(--text-primary);font-weight:700;box-shadow:0 1px 2px rgba(0,0,0,.08);}

/* scheme swatches + accent dots */
.scheme-swatches{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px;}
.scheme-swatch{background:none;border:0;padding:0;cursor:pointer;text-align:center;}
.scheme-swatch-chip{
  width:62px;height:46px;border-radius:10px;border:1px solid var(--paper-border);
}
.scheme-swatch.active .scheme-swatch-chip{border:3px solid var(--accent);}
.scheme-swatch-label{font-size:11px;color:var(--text-muted);margin-top:5px;}
.scheme-swatch.active .scheme-swatch-label{color:var(--text-secondary);font-weight:600;}
.accent-dots{display:flex;gap:12px;align-items:center;}
.accent-dot{width:34px;height:34px;border-radius:50%;border:0;cursor:pointer;padding:0;}
.accent-dot.active{border:3px solid var(--ink);box-shadow:0 0 0 2px var(--paper-2) inset;}

/* household */
.household-member-row{gap:12px;}
.household-avatar{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--paper-3);color:var(--text-muted);font-size:14px;font-weight:700;
}
.household-avatar.pending{background:transparent;border:1.5px dashed var(--paper-border);}
.household-member-email{font-size:12px;color:var(--text-muted);margin-top:2px;}
.role-badge{
  font-size:11px;font-weight:700;letter-spacing:.06em;
  color:var(--text-muted);background:var(--paper-3);padding:3px 8px;border-radius:5px;flex-shrink:0;
}
.role-badge.primary{color:var(--ink);background:color-mix(in srgb,var(--brand-ochre) 45%,var(--paper-2));}
.role-badge.invited{color:#96701F;background:color-mix(in srgb,var(--brand-ochre) 20%,var(--paper-2));}
.household-invite-form{display:flex;gap:8px;margin-top:14px;}
.household-invite-form input{
  flex:1;min-width:0;font:inherit;font-size:14px;color:var(--text-primary);
  background:var(--paper);border:1px solid var(--paper-border);border-radius:10px;padding:10px 13px;
}
.household-invite-form input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent);}
.household-invite-status{font-size:12px;color:var(--text-muted);margin-top:8px;}
.household-invite-link{
  display:flex;align-items:center;gap:10px;margin-top:12px;
  background:var(--paper-3);border-radius:10px;padding:9px 11px;
}
.household-invite-link input{
  flex:1;min-width:0;border:0;background:none;font:inherit;font-size:12px;color:var(--text-muted);outline:none;
}
.household-pending-title{margin-top:18px;}
.home-badge{
  font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink);background:color-mix(in srgb,var(--brand-ochre) 45%,var(--paper-2));
  padding:2px 7px;border-radius:5px;margin-left:8px;
}

/* toggles */
.switch-slider{background:var(--paper-border);}
.switch input:checked + .switch-slider{background:var(--brand-sage);}

/* ---- Settings tabs: only the active section's cards are shown ---- */
.settings-page[data-tab] > [data-settings-tab]{display:none;}
.settings-page[data-tab="appearance"] > [data-settings-tab="appearance"],
.settings-page[data-tab="household"] > [data-settings-tab="household"],
.settings-page[data-tab="email"] > [data-settings-tab="email"],
.settings-page[data-tab="weather"] > [data-settings-tab="weather"],
.settings-page[data-tab="news"] > [data-settings-tab="news"]{display:block;}
.settings-page[data-tab="display"] > [data-settings-tab="display"]{display:grid;}

/* ---- Settings section tab links (replaces the static subtitle) ---- */
.settings-jump{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.settings-jump button{
  font:inherit;font-size:14px;font-weight:500;color:var(--text-muted);
  background:none;border:0;border-radius:8px;padding:5px 10px;cursor:pointer;
  transition:background .12s,color .12s;
}
.settings-jump button:hover{background:var(--paper-3);color:var(--text-primary);}
.settings-jump button.active{color:var(--text-primary);font-weight:700;background:var(--paper-3);}
.settings-jump button+button{position:relative;}
.settings-jump button+button::before{
  content:'·';position:absolute;left:-6px;color:var(--text-faintest);
}
.settings-jump button.active{box-shadow:inset 0 -2px 0 var(--accent);}

/* ═══════════════════════════════════════════════════════════════════════
   TuttiBoard v2 — streamlined flows (Today hero, review strip, day-row
   Menu, batch Import, sidebar status, first run, ambient photo mode)
   ═══════════════════════════════════════════════════════════════════════ */

:root{
  --tb-card:#FFFDF8;
  --tb-page:#F2ECE0;
  --tb-thumb-empty:#E3DBC9;
  --tb-shadow:0 1px 2px rgba(37,33,29,.05),0 12px 28px rgba(37,33,29,.06);
  --tb-shadow-lift:0 20px 44px rgba(37,33,29,.24);
  --tb-tap:48px;
}
html[data-scheme="charcoal"],html[data-theme="dark"]{
  --tb-card:#2A2620; --tb-page:#221F1A; --tb-thumb-empty:#3C372D;
  --tb-shadow:0 1px 2px rgba(0,0,0,.3),0 12px 28px rgba(0,0,0,.28);
}

a{color:var(--accent);}
a:hover{color:var(--text-primary);}

/* ---- Type ramp: 42 / 21 / 17 / 14 / 11 ---- */
.page-title{font-size:42px;line-height:1.05;}
.page-subtitle{font-size:16px;margin-top:6px;}
.section-label{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:var(--text-faint);}

/* ---- Cards lose their borders; one soft shadow instead ---- */
.settings-section,.menu-panel{border:none!important;background:var(--tb-card);box-shadow:var(--tb-shadow);border-radius:18px;}

/* ---- Touch targets ---- */
.btn{min-height:44px;}
.btn.btn-sm{min-height:38px;}
.btn-accent{background:var(--accent);color:#fff;border:none;font-weight:700;}
.btn-ghost{background:transparent;border:none;color:var(--text-muted);font-weight:600;}

/* ---- Category chip: colour AND label ---- */
.cat-chip{
  display:inline-flex;align-items:center;gap:7px;
  font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  padding:4px 9px;border-radius:6px;white-space:nowrap;
  color:var(--cc,var(--text-muted));
  background:color-mix(in srgb,var(--cc,#999) 16%,transparent);
}

/* ═══ Sidebar ═══════════════════════════════════════════════════════════ */
.sidebar-nav{display:flex;flex-direction:column;gap:3px;margin-top:26px;}
.sidebar-nav .nav-item{
  display:flex;align-items:center;gap:14px;
  min-height:var(--tb-tap);padding:0 15px;border-radius:12px;
  font-size:16px;font-weight:500;color:#C8C0AF;text-decoration:none;
}
.sidebar-nav .nav-item .nav-icon{flex-shrink:0;opacity:.9;}
.sidebar-nav .nav-item:hover{background:rgba(247,242,232,.08);color:#EFE8DA;}
.sidebar-nav .nav-item.active{background:var(--paper);color:var(--ink);font-weight:700;}
.nav-dot{display:none;}

.sidebar-util{display:flex;flex-direction:column;gap:2px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1);}
.nav-util{
  display:flex;align-items:center;gap:13px;width:100%;
  min-height:46px;padding:0 15px;border-radius:11px;
  background:none;border:none;cursor:pointer;text-align:left;text-decoration:none;
  font-family:inherit;font-size:15px;font-weight:500;color:#9D9484;
}
.nav-util:hover{background:rgba(247,242,232,.08);color:#EFE8DA;}
.nav-util.active{background:rgba(247,242,232,.14);color:#fff;font-weight:700;}
.nav-util .nav-label{flex:1;}
.nav-badge{
  min-width:22px;height:22px;padding:0 6px;border-radius:11px;
  background:var(--accent);color:#fff;font-size:12px;font-weight:800;
  display:flex;align-items:center;justify-content:center;
}
.nav-badge[hidden]{display:none;}

.sidebar-status{
  display:flex;align-items:center;gap:10px;width:100%;
  margin-top:10px;padding:10px 15px;border:none;background:none;cursor:pointer;
  font-family:inherit;font-size:12.5px;text-align:left;color:#8D8474;
}
.sidebar-status-dot{width:9px;height:9px;border-radius:50%;background:#6B6353;flex-shrink:0;}
.sidebar-status[data-tone="ok"] .sidebar-status-dot{background:var(--brand-sage);}
.sidebar-status[data-tone="warn"] .sidebar-status-dot{background:var(--brand-ochre);}
.sidebar-status[data-tone="warn"]{color:#E0B45E;}
.sidebar-status:hover{color:#EFE8DA;}
.sidebar-status-panel{
  position:absolute;left:calc(100% + 12px);bottom:18px;z-index:60;width:320px;
  background:var(--tb-card);color:var(--text-primary);
  border-radius:18px;padding:20px 22px;box-shadow:0 26px 60px rgba(37,33,29,.3);
}
.sidebar-status-panel[hidden]{display:none;}
.status-panel-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-serif,Spectral),serif;font-size:19px;font-weight:600;}
.status-panel-close{background:none;border:none;font-size:20px;color:var(--text-faint);cursor:pointer;line-height:1;}
.status-panel-note{font-size:12.5px;color:var(--text-muted);margin:2px 0 10px;}
.status-panel-row{display:flex;align-items:center;gap:12px;min-height:42px;font-size:14.5px;}
.status-panel-dot{width:9px;height:9px;border-radius:50%;background:var(--text-faintest);flex-shrink:0;}
.status-panel-row[data-tone="ok"] .status-panel-dot{background:var(--brand-sage);}
.status-panel-row[data-tone="warn"] .status-panel-dot{background:var(--brand-ochre);}
.status-panel-label{flex:1;font-weight:600;}
.status-panel-time{font-size:12.5px;color:var(--text-muted);}
.app-sidebar{position:relative;}
.sidebar-search-wrap{display:none;}

/* ═══ Today ═════════════════════════════════════════════════════════════ */
.review-strip{
  display:flex;align-items:center;gap:16px;
  background:color-mix(in srgb,var(--accent) 14%,var(--paper-2));
  border-radius:14px;padding:14px 18px;margin-bottom:16px;
}
.review-strip-icon{
  width:34px;height:34px;border-radius:10px;flex-shrink:0;
  background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;
}
.review-strip-copy{flex:1;display:flex;flex-direction:column;gap:2px;}
.review-strip-copy b{font-size:16px;color:var(--text-primary);}
.review-strip-copy span{font-size:13.5px;color:var(--text-muted);}
.review-strip-x{background:none;border:none;font-size:22px;line-height:1;color:var(--text-faint);cursor:pointer;padding:0 4px;}

.add-menu-wrap{position:relative;}
.btn-add .btn-caret{opacity:.6;font-weight:500;margin-left:2px;}
.add-menu{
  position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:236px;
  background:var(--tb-card);border-radius:14px;padding:8px;box-shadow:var(--tb-shadow-lift);
}
.add-menu[hidden]{display:none;}
.add-menu button{
  display:flex;align-items:center;gap:13px;width:100%;
  min-height:var(--tb-tap);padding:0 12px;border:none;border-radius:10px;
  background:none;cursor:pointer;text-align:left;
  font-family:inherit;font-size:16px;font-weight:600;color:var(--text-primary);
}
.add-menu button:hover{background:var(--paper-3);}

.next-up{
  background:var(--ink);color:var(--ink-text);
  border-radius:18px;padding:24px 26px;margin-bottom:16px;cursor:pointer;
  box-shadow:0 14px 32px rgba(37,33,29,.22);
}
.next-up.is-empty{background:var(--tb-card);color:var(--text-primary);box-shadow:var(--tb-shadow);cursor:default;}
.next-up-top{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.next-up-kicker{font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);}
.next-up.is-empty .next-up-kicker{color:var(--text-faint);}
.next-up .cat-chip{background:rgba(255,255,255,.14);color:#fff;}
.next-up-main{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin-top:12px;}
.next-up-time{font-size:34px;font-weight:300;font-variant-numeric:tabular-nums;color:#fff;}
.next-up-time small{font-size:18px;margin-left:4px;}
.next-up.is-empty .next-up-time{color:var(--text-primary);}
.next-up-title{font-family:var(--font-serif,Spectral),serif;font-size:38px;font-weight:600;line-height:1.05;color:#fff;}
.next-up.is-empty .next-up-title{font-size:26px;line-height:1.25;margin-top:12px;color:var(--text-primary);}
.next-up.is-empty{padding:26px;}
.next-up-meta{display:flex;align-items:center;gap:14px;margin-top:14px;font-size:15px;color:#BCB09A;}
.next-up-meta:empty{display:none;}
.next-up-meta a{color:#E6DFD0;}
.next-up-prep{color:#E8CD9E;}

/* ═══ First run ═════════════════════════════════════════════════════════ */
.setup-panel{background:var(--tb-card);border-radius:20px;padding:28px 30px;box-shadow:var(--tb-shadow);margin-bottom:18px;}
.setup-title{font-family:var(--font-serif,Spectral),serif;font-size:34px;font-weight:600;line-height:1.08;color:var(--text-primary);}
.setup-sub{font-size:16px;color:var(--text-secondary);margin-top:8px;}
.setup-progress{display:flex;align-items:center;gap:14px;margin:22px 0 16px;}
.setup-bar{flex:1;height:8px;border-radius:4px;background:var(--paper-3);overflow:hidden;}
.setup-bar span{display:block;height:100%;background:var(--accent);}
.setup-progress b{font-size:13.5px;color:var(--text-muted);}
.setup-steps{display:flex;flex-direction:column;gap:12px;}
.setup-step{display:flex;align-items:center;gap:18px;background:var(--paper-2);border-radius:16px;padding:18px 20px;}
.setup-num{
  width:38px;height:38px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:800;background:var(--paper-3);color:var(--text-muted);
}
.setup-step.is-done .setup-num{background:var(--brand-sage);color:#fff;}
.setup-step-copy{flex:1;display:flex;flex-direction:column;gap:4px;}
.setup-step-copy b{font-family:var(--font-serif,Spectral),serif;font-size:20px;font-weight:600;}
.setup-step-copy span{font-size:14.5px;color:var(--text-muted);line-height:1.5;}
.setup-done{font-size:15px;font-weight:600;color:var(--brand-sage);}
.setup-skip{background:none;border:none;margin-top:20px;padding:0;cursor:pointer;font-family:inherit;font-size:15px;font-weight:600;color:var(--text-muted);}

/* ═══ Menu ══════════════════════════════════════════════════════════════ */
.page-menu{display:flex;flex-direction:column;gap:18px;height:100%;position:relative;overflow:hidden;}
.menu-tabbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.menu-tabs{display:inline-flex;background:var(--paper-3);border-radius:13px;padding:4px;gap:2px;}
.menu-tab{
  display:inline-flex;align-items:center;gap:8px;
  min-height:42px;padding:0 20px;border:none;border-radius:10px;
  background:none;cursor:pointer;font-family:inherit;font-size:15px;font-weight:600;color:var(--text-muted);
}
.menu-tab.active{background:var(--tb-card);color:var(--text-primary);font-weight:700;box-shadow:0 2px 6px rgba(37,33,29,.1);}
.menu-tab-badge{font-size:12px;font-weight:800;background:var(--accent);color:#fff;border-radius:10px;padding:2px 8px;}
.menu-tabbar-actions{display:flex;align-items:center;gap:10px;}
.menu-body{flex:1;display:flex;flex-direction:column;gap:14px;min-height:0;}

.menu-week-rows{flex:1;display:flex;flex-direction:column;gap:9px;min-height:0;}
.menu-day-row{
  flex:1;min-height:76px;display:flex;align-items:center;gap:20px;
  background:var(--tb-card);border-radius:15px;padding:0 22px 0 18px;box-shadow:var(--tb-shadow);
}
.menu-day-row.today{box-shadow:inset 0 0 0 2px var(--accent),var(--tb-shadow);}
.menu-day-when{width:74px;flex-shrink:0;display:flex;flex-direction:column;gap:2px;}
.menu-day-when b{font-size:16px;font-weight:800;color:var(--text-secondary);}
.menu-day-row.today .menu-day-when b{color:var(--text-primary);}
.menu-day-when span{font-size:12.5px;color:var(--text-faint);}
.menu-day-thumb{
  width:56px;height:56px;border-radius:13px;flex-shrink:0;
  background-size:cover;background-position:center;
  display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:18px;
}
.menu-day-row .menu-meal-slot{border:none;padding:0;background:none;min-height:0;}
.menu-slot-lead{flex:1;min-width:0;}
.menu-slot-sm{width:150px;flex-shrink:0;}
.menu-day-row .menu-meal-label{font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);margin-bottom:3px;}
.menu-slot-sm .menu-meal-label{font-size:9px;letter-spacing:.15em;color:var(--text-faintest);}
.menu-day-row .menu-meal-content{display:flex;flex-wrap:wrap;gap:6px;}
.menu-slot-lead .menu-assigned-dish{font-size:21px;font-weight:700;background:none;padding:0;color:var(--text-primary);}
.menu-slot-sm .menu-assigned-dish{font-size:14px;font-weight:600;background:none;padding:0;color:var(--text-secondary);}
.menu-day-row .menu-assigned-dish button{opacity:0;transition:opacity .12s;}
.menu-day-row:hover .menu-assigned-dish button{opacity:.55;}
.menu-day-row .menu-drop-hint{font-size:14px;color:var(--text-faintest);}
.menu-slot-lead .menu-drop-hint{font-size:19px;}
.menu-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.menu-row-btn{
  min-height:38px;padding:0 14px;border-radius:10px;
  border:1.5px solid var(--paper-border);background:var(--tb-card);cursor:pointer;
  font-family:inherit;font-size:13.5px;font-weight:600;color:var(--text-primary);
}
.menu-row-btn:hover{background:var(--paper-3);}
.menu-day-row .menu-meal-slot.drag-over{outline:2px dashed var(--accent);outline-offset:4px;border-radius:8px;}

.menu-week-footer{
  display:flex;align-items:center;gap:16px;flex-shrink:0;
  background:var(--tb-card);border-radius:16px;padding:16px 22px;box-shadow:var(--tb-shadow);
}
.menu-week-footer div{flex:1;display:flex;flex-direction:column;gap:2px;}
.menu-week-footer b{font-size:16px;}
.menu-week-footer span{font-size:13.5px;color:var(--text-muted);}

.menu-dish-grid{
  flex:1;min-height:0;overflow-y:auto;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-content:start;
}
.menu-grocery-full{flex:1;min-height:0;overflow-y:auto;background:var(--tb-card);border-radius:18px;padding:22px 24px;box-shadow:var(--tb-shadow);}

.menu-library{
  position:absolute;right:0;top:0;bottom:0;z-index:30;width:320px;
  background:var(--tb-card);box-shadow:-16px 0 44px rgba(37,33,29,.16);
  padding:26px 22px;display:flex;flex-direction:column;gap:14px;
}
.menu-library[hidden]{display:none;}
.menu-library-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-serif,Spectral),serif;font-size:21px;font-weight:600;}
.menu-library-head button{background:none;border:none;font-size:22px;color:var(--text-faint);cursor:pointer;line-height:1;}
.menu-library-note{font-size:13px;color:var(--text-muted);line-height:1.5;margin:0;}
.menu-library-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:9px;}
.menu-library-foot{flex-shrink:0;}
.menu-library-foot .btn{width:100%;}

/* ═══ Import ════════════════════════════════════════════════════════════ */
.import-batchbar{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  background:var(--ink);color:var(--ink-text);border-radius:14px;padding:12px 20px;
}
.import-batchbar.is-busy{opacity:.6;pointer-events:none;}
.import-batchbar b{font-size:16px;}
.import-batch-hint{font-size:14.5px;color:#BCB09A;margin-left:auto;}
.import-batchbar .btn-accent{min-height:44px;}
.import-batchbar .btn-ghost{color:#BCB09A;}
.import-batchbar:not(.has-selection) .btn-accent,
.import-batchbar:not(.has-selection) .btn-ghost{opacity:.4;pointer-events:none;}

.import-check{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;}
.import-check input{position:absolute;opacity:0;width:0;height:0;}
.import-check span{
  width:28px;height:28px;border-radius:9px;display:block;
  box-shadow:inset 0 0 0 2px var(--paper-border);background:transparent;
}
.import-batchbar .import-check span{box-shadow:inset 0 0 0 2px rgba(255,255,255,.35);}
.import-check input:checked + span{
  background:var(--brand-sage);box-shadow:inset 0 0 0 2px var(--brand-sage);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");
  background-size:18px;background-position:center;background-repeat:no-repeat;
}
.import-check input:indeterminate + span{background:var(--brand-ochre);box-shadow:inset 0 0 0 2px var(--brand-ochre);}

.import-cat-select{
  min-height:42px;padding:0 12px;border-radius:10px;
  border:1.5px solid var(--paper-border);background:var(--tb-card);color:var(--text-primary);
  font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;
}
.import-batchbar .import-cat-select{background:rgba(255,255,255,.12);border-color:transparent;color:#fff;}

.import-list{max-height:none;display:flex;flex-direction:column;}
.gcal-row{display:flex;align-items:center;gap:16px;min-height:74px;padding:12px 4px;}
.import-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;cursor:pointer;}
.import-row-main b{font-size:17px;font-weight:700;color:var(--text-primary);}
.import-row-main small{font-size:13.5px;color:var(--text-muted);}
.import-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.import-dup{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;
  font-size:12.5px;font-weight:600;color:#7A5A12;
  background:#F6E9CB;border-radius:8px;padding:8px 12px;
}
html[data-theme="dark"] .import-dup{background:rgba(214,163,59,.16);color:var(--brand-ochre);}

/* ═══ Ambient photo mode ════════════════════════════════════════════════ */
.ambient-picker{display:flex;flex-direction:column;gap:8px;}
.ambient-option{
  display:flex;align-items:flex-start;gap:12px;width:100%;
  padding:13px 14px;border-radius:12px;cursor:pointer;text-align:left;
  border:1.5px solid var(--paper-border);background:var(--tb-card);font-family:inherit;
}
.ambient-option.active{border-color:var(--text-primary);background:var(--paper-3);}
.ambient-radio{
  width:20px;height:20px;border-radius:50%;flex-shrink:0;margin-top:2px;
  box-shadow:inset 0 0 0 2px var(--paper-border);
}
.ambient-option.active .ambient-radio{background:var(--text-primary);box-shadow:inset 0 0 0 4px var(--tb-card);}
.ambient-option b{display:block;font-size:15px;color:var(--text-primary);}
.ambient-option small{display:block;font-size:12.5px;color:var(--text-muted);margin-top:2px;line-height:1.4;}

#ambient-screen{
  position:fixed;inset:0;z-index:9000;
  background:#3B352D center/cover no-repeat;
  opacity:0;transition:opacity .32s ease;
}
#ambient-screen.visible{opacity:1;}
#ambient-screen[hidden]{display:none;}
#ambient-screen.no-photo{background:linear-gradient(155deg,#E2C9A0 0%,#C9B184 34%,#8B8E64 66%,#4E5540 100%);}
.ambient-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,16,10,.42) 0%,rgba(20,16,10,.06) 40%,rgba(20,16,10,.62) 100%);}
.ambient-inner{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:54px 60px;color:#fff;}
.ambient-top{display:flex;justify-content:space-between;align-items:flex-start;}
.ambient-brand{display:flex;align-items:center;gap:10px;opacity:.9;font-size:20px;}
.ambient-brand img{height:20px;width:auto;display:block;}
.ambient-brand b{font-weight:800;}
.ambient-wx{text-align:right;}
.ambient-temp{font-size:52px;font-weight:200;line-height:1;}
.ambient-wx-sub{font-size:15px;opacity:.85;margin-top:6px;}
.ambient-clock{font-size:176px;font-weight:200;line-height:.86;letter-spacing:-.03em;font-variant-numeric:tabular-nums;}
.ambient-date{font-family:var(--font-serif,Spectral),serif;font-style:italic;font-size:28px;margin-top:14px;opacity:.92;}
.ambient-bot{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;}
.ambient-next{display:flex;flex-direction:column;gap:8px;}
.ambient-kicker{font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;opacity:.7;}
.ambient-next b{font-size:24px;font-weight:600;}
.ambient-hint{font-size:14px;opacity:.75;}
body.ambient-off.has-bg{background-image:none!important;}
body.ambient-off.has-bg::before{display:none!important;}

@media (max-width:1180px){
  .menu-slot-sm{width:120px;}
  .next-up-title{font-size:30px;}
}
@media (max-width:760px){
  .sidebar-status-panel{left:12px;right:12px;bottom:80px;width:auto;}

  /* Installed to the home screen, the app paints under the status bar. */
  .app-main{padding-top:env(safe-area-inset-top,0px);}

  /* Add menu: the button sits at the LEFT of the phone header, so a right-aligned
     popover hangs off the screen edge. Open it leftward-anchored instead, and keep
     the trigger's filled contrast while it's open. */
  .add-menu{left:0;right:auto;width:min(272px,calc(100vw - 36px));}
  .btn-add{-webkit-tap-highlight-color:transparent;}
  .btn-add,
  #add-menu-btn[aria-expanded="true"],
  #add-menu-btn:focus,
  #add-menu-btn:active{
    background:var(--ink);border-color:var(--ink);color:var(--ink-text);opacity:1;
  }
  #add-menu-btn[aria-expanded="true"] .btn-caret{transform:rotate(180deg);}
  .add-menu button{font-size:15px;}

  /* Menu day rows: stack date → dish → other meals → actions so nothing has to
     share a 40px column with a 21px dish name. */
  /* The desktop plan divides one fixed-height column seven ways; on a phone the page
     has to scroll and every row has to size to its own content instead. */
  .page-menu{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;}
  .menu-body,.menu-week-panel{flex:none;min-height:0;overflow:visible;}
  .menu-week-rows{flex:none;gap:10px;overflow:visible;}
  .menu-day-row{flex:0 0 auto;height:auto;flex-wrap:wrap;align-items:flex-start;min-height:0;padding:14px 16px;gap:10px 12px;}
  .menu-day-when{order:1;width:100%;flex-direction:row;align-items:baseline;gap:8px;}
  .menu-day-when b{font-size:15px;}
  .menu-day-thumb{order:2;width:46px;height:46px;border-radius:11px;}
  .menu-slot-lead{order:3;flex:1 1 140px;min-width:0;}
  .menu-slot-lead .menu-assigned-dish{font-size:17px;line-height:1.25;}
  .menu-slot-lead .menu-drop-hint{font-size:15px;}
  .menu-slot-sm{order:4;width:calc(50% - 6px);}
  .menu-day-row .menu-meal-content{flex-direction:column;align-items:flex-start;gap:4px;}
  .menu-row-actions{order:5;width:100%;gap:8px;}
  .menu-row-actions .menu-row-btn{flex:1;min-height:44px;}
  /* No hover on touch — the remove affordance has to be visible outright. */
  .menu-day-row .menu-assigned-dish button{opacity:.55;}
  .menu-week-footer{flex-direction:column;align-items:stretch;gap:12px;padding:16px;}
  .menu-week-footer .btn{width:100%;min-height:46px;}
  .menu-library{width:min(340px,90vw);}

  /* More menu is text-only now — no icon column to align to. */
  .mobile-more-menu{min-width:176px;}
  .mobile-more-menu button{min-height:46px;padding:0 18px;font-size:15px;font-weight:600;}

  .ambient-inner{padding:32px 26px;}
  .ambient-clock{font-size:96px;}
  #ambient-screen{display:none;}
}
