/* Notion-like look shared with Veckans ord: white page, warm-black text, hairline rules, light weights.
   Loaded last; only visuals here, interaction and family data are unchanged. */
:root{
 --bg:#ffffff;--text:#37352f;--muted:rgba(55,53,47,.6);--faint:rgba(55,53,47,.38);
 --hover:rgba(55,53,47,.06);--press:rgba(55,53,47,.12);--soft:#f7f7f5;
 --blue:#2383e2;--red:#e03e3e;--green:#448361;--redbg:rgba(224,62,62,.07);
 --font:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif;
 /* Older variable names still used by styles.css/improvements.css */
 --ink:var(--text);--cream:var(--bg);--paper:var(--bg);--line:rgba(55,53,47,.09);
 --coral:var(--blue);--peach:var(--soft);--sage:var(--hover);--ui-font:var(--font);--shadow:none;
 color-scheme:light;
}
body{font-family:var(--font);font-size:16px;line-height:1.5;font-weight:400;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
button,input,textarea,select{font-family:var(--font);letter-spacing:normal;color:inherit}
h1,h2,h3,.recipe-card h3,.recipe-detail h3{font-family:var(--font);letter-spacing:-.01em;color:var(--text)}
h1{font-size:2.1rem;line-height:1.2;font-weight:600}
h2,.section-heading h2{font-size:1.6rem;line-height:1.2;font-weight:600}
h3{font-weight:600}
a{color:var(--text);text-decoration-color:var(--faint);text-underline-offset:3px}

/* Header */
.app-shell{max-width:640px;padding-inline:20px;padding-bottom:calc(96px + env(safe-area-inset-bottom))}
.topbar{margin-bottom:18px}
.eyebrow,#todayLabel{font-size:.78rem;letter-spacing:0;text-transform:none;font-weight:500;color:var(--faint)}
#todayLabel::first-letter{text-transform:uppercase}
.cloud-panel{gap:2px}
.sync-status{color:var(--muted);font-size:.85rem;font-weight:400;padding:6px 8px;border-radius:6px}
.account-open,.header-icon{background:none;border:0;color:var(--text);font-size:.92rem;font-weight:500;padding:6px 10px;border-radius:6px;min-height:36px;font-family:var(--font)}
.sync-status:hover,.account-open:hover,.header-icon:hover{background:var(--hover)}

/* Buttons */
.text-button{font-size:.92rem;font-weight:400;color:var(--muted);background:none;border-radius:6px;padding:6px 10px}
.text-button:hover{background:var(--hover);color:var(--text)}
.text-button:disabled{color:var(--faint);background:none}
.soft-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:9px 16px;background:var(--blue);color:#fff;border:1px solid var(--blue);border-radius:6px;font-size:.95rem;font-weight:500;text-decoration:none}
.soft-button:hover{background:#0f73d4}
.danger-button,.text-button.danger-button{background:none;color:var(--red);border-radius:6px;padding:6px 10px}
.danger-button:hover{background:var(--redbg)}
.round-add,.add-form button{width:36px;min-width:36px;height:36px;min-height:36px;border-radius:50%;background:var(--text);color:#fff;font-size:1.35rem;font-weight:300;line-height:1;border:0;margin-top:auto;margin-bottom:auto}
.actions{gap:4px 6px;margin:14px 0 20px}
.dialog-back{color:var(--muted);padding-left:0}

/* Week */
.week-navigation{gap:8px;margin-top:0}
.week-navigation h2{font-size:1.6rem;font-weight:600;letter-spacing:-.01em}
.week-navigation p{color:var(--muted);font-size:.88rem}
.week-navigation>button{background:none;border:0;color:var(--muted);font-size:1.6rem;font-weight:300;border-radius:6px}
.week-navigation>button:hover{background:var(--hover);color:var(--text)}
.week-toolbar{margin:0 0 8px}
.week-toolbar button{font-size:.88rem}
.plan-list{gap:0;border-top:1px solid var(--line)}
.plan-item,.plan-list .plan-item.is-today{min-height:54px;padding:12px 6px;gap:12px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;box-shadow:none;color:var(--text)}
.plan-item:hover{background:var(--hover)}
.plan-item .day{min-width:40px;color:var(--muted);font-size:.88rem;font-weight:400}
.plan-item strong{font-size:1.05rem;font-weight:400;letter-spacing:0;line-height:1.3}
.plan-item span:last-child{font-size:.85rem;color:var(--faint)}
.plan-list .plan-item.is-today .day{color:var(--blue);font-weight:600}
.plan-list .plan-item.is-today strong{font-weight:500}

/* Shopping */
.section-heading{margin-bottom:12px}
.count{background:none;color:var(--muted);font-size:.88rem;font-weight:400;padding:0;font-variant-numeric:tabular-nums}
.add-form{gap:8px;margin:14px 0 18px}
.add-form input{border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font-size:1.05rem;padding:8px 0}
.add-form input:focus{outline:none;border-bottom-color:var(--text)}
.grocery-list{gap:0;border-top:1px solid var(--line)}
.swipe-row{border-radius:0;background:var(--bg);border-bottom:1px solid var(--line)}
.swipe-row .swipe-front{background:var(--bg);border:0;padding:8px 4px;min-height:52px;gap:12px}
.grocery-item .grocery-name{font-size:1.05rem;font-weight:400;color:var(--text);padding:4px 0;background:none}
.grocery-item .grocery-name:hover{background:none;text-decoration:underline;text-decoration-color:var(--faint)}
.grocery-detail{font-size:.82rem;color:var(--faint)}
.check{appearance:none;-webkit-appearance:none;width:20px;height:20px;border:1.5px solid var(--faint);border-radius:4px;background:#fff;display:grid;place-items:center}
.check:checked{background:var(--blue);border-color:var(--blue)}
.swipe-delete{background:var(--red);color:#fff;font-weight:500}
.history-toggle{font-size:.92rem;color:var(--muted);padding-top:22px;background:none}
.history-row{color:var(--muted);font-size:.88rem;border-bottom:1px solid var(--line);padding:8px 4px}
[data-view="shopping"] #refreshShopping{color:var(--faint)}
.ios-spinner span{background:var(--muted)}

/* Recipes */
.recipe-filters{gap:6px;padding-bottom:4px}
.recipe-filter{min-height:32px;padding:4px 12px;border:0;border-radius:999px;background:var(--hover);color:var(--text);font-size:.92rem;font-weight:400}
.recipe-filter.active{background:var(--text);color:#fff}
#friendsRecipes,#archiveToggle{margin:6px 0 0;padding-left:0}
#archiveToggle{margin-left:12px}
.recipe-sort{margin:10px 0;gap:8px;color:var(--muted);font-size:.88rem}
.recipe-sort select,.meal-filters select{min-height:36px;background:#fff;color:var(--text);border:1px solid var(--line);border-radius:6px;font-size:.95rem;padding:6px 8px}
.recipe-grid{gap:12px;margin-top:12px}
.recipe-card{border:1px solid var(--line);border-radius:8px;background:#fff;padding:16px;box-shadow:none;overflow:hidden}
.recipe-card:hover{background:var(--soft)}
.recipe-card h3{font-size:1.1rem;font-weight:600;line-height:1.3;margin-bottom:4px}
.recipe-card p{font-size:.88rem;font-weight:400;color:var(--muted)}
.recipe-card .recipe-owner,.recipe-owner{background:var(--hover);color:var(--muted);font-size:.8rem;font-weight:400;border-radius:999px;padding:2px 10px;min-height:0;border:0}
.recipe-card .recipe-list-button{background:none;border:1px solid var(--line);border-radius:6px;color:var(--text);font-size:.9rem;font-weight:500;min-height:36px;margin-top:12px}
.recipe-card .recipe-list-button:hover{background:var(--hover)}
.recipe-card.has-image{padding:0}
.recipe-card-body{padding:14px 16px 16px}
.recipe-image{height:150px;background:var(--soft)}
.recipe-stats{font-size:.82rem;gap:2px;color:var(--muted);margin:10px 0}
.recipe-stats span:first-child{color:var(--text);font-weight:500}
.app-shell .history-note,.recipe-dialog .history-note,.rating-hint{color:var(--muted);font-size:.88rem}

/* Tab bar */
.tabbar{left:0;right:0;bottom:0;transform:none;width:100%;max-width:none;border:0;border-top:1px solid var(--line);border-radius:0;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:4px max(8px,calc(50% - 320px)) calc(4px + env(safe-area-inset-bottom));gap:0;box-shadow:none;z-index:10}
.tabbar button{flex:1;min-width:0;border-radius:6px;padding:6px;min-height:52px;font-size:.78rem;font-weight:400;color:var(--faint);background:none;gap:2px}
.tabbar .active{background:none;color:var(--text);font-weight:500}
.tabbar svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

/* Dialogs & forms */
.recipe-dialog{border:0;border-radius:10px;background:#fff;padding:24px 22px;box-shadow:0 0 0 1px rgba(15,15,15,.05),0 5px 10px rgba(15,15,15,.1),0 15px 40px rgba(15,15,15,.2);color:var(--text)}
.recipe-dialog::backdrop{background:rgba(15,15,15,.4)}
.recipe-dialog h2{font-size:1.6rem;font-weight:600;line-height:1.2}
.recipe-dialog h3{font-size:1.1rem;font-weight:600;margin-top:22px}
.recipe-dialog label{font-size:.88rem;color:var(--muted)}
.recipe-dialog input:not([type=checkbox]),textarea{background:#fff;border:1px solid var(--line);border-radius:6px;color:var(--text);font-size:1rem;padding:10px 12px}
.recipe-dialog input:not([type=checkbox]):focus,textarea:focus,.add-form input:focus{outline:none;border-color:rgba(35,131,226,.6);box-shadow:0 0 0 3px rgba(35,131,226,.15)}
.add-form input:focus{box-shadow:none;border-color:var(--text)}
.dialog-close{background:none;border-radius:6px;font-size:1.5rem;font-weight:300;color:var(--muted)}
.dialog-close:hover{background:var(--hover)}
.dialog-intro,.image-note,.sharing-status{color:var(--muted)}
.sharing-status{font-size:.82rem}
.recipe-detail ul,.recipe-detail ol{padding-left:22px}
.recipe-detail li{padding:3px 0}
.choice-list{gap:0;border-top:1px solid var(--line)}
.choice-row{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;color:var(--text);min-height:52px}
.choice-row:hover{background:var(--hover)}
.choice-row strong{font-size:1rem;font-weight:400}
.choice-row small{font-size:.82rem;color:var(--muted)}
.meal-option{border-bottom:1px solid var(--line)}
.meal-option .choice-row{border-bottom:0}
.rating-controls{background:var(--soft);border-radius:6px}
.rating-star{color:var(--faint)}
.rating-star.selected{color:#cb912f}
.ingredient-choice input,.ingredient-review input[type=checkbox]{accent-color:var(--blue)}
.form-error,#refreshMessage:not(.sr-only){color:var(--red)}
details{border-bottom:1px solid var(--line)}
summary{font-weight:500}
.toast{bottom:calc(76px + env(safe-area-inset-bottom));background:var(--text);color:#fff;border-radius:6px;font-size:.9rem;box-shadow:0 4px 14px rgba(15,15,15,.2)}
#bootPanel h2{font-size:1.6rem;font-weight:600}
#bootPanel p{color:var(--muted)}

.soft-button:focus-visible,button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid rgba(35,131,226,.5);outline-offset:2px;border-radius:4px}
button:disabled{cursor:default}
@media(max-width:380px){h1{font-size:1.75rem}.app-shell{padding-inline:16px}.recipe-dialog{padding:22px 16px}}
@media(max-height:740px){.app-shell{padding-top:calc(12px + env(safe-area-inset-top))}.topbar{margin-bottom:12px}.plan-item{min-height:46px;padding-block:9px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

/* Header: date + "•••" menu holding sync status and account (2026-10-08) */
.topbar{margin-bottom:6px}
.brand-row{display:flex;align-items:center;justify-content:space-between;min-height:44px}
.brand-row #todayLabel{margin:0}
.more-menu{position:relative;border:0;padding:0}
.more-menu summary{list-style:none;cursor:pointer;color:var(--muted);font-size:.8rem;letter-spacing:.12em;padding:8px 10px;border-radius:6px;min-height:0;font-weight:400}
.more-menu summary::-webkit-details-marker{display:none}
.more-menu summary:hover,.more-menu[open] summary{background:var(--hover);color:var(--text)}
.more-items{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:200px;background:#fff;border-radius:8px;padding:4px;display:flex;flex-direction:column;box-shadow:0 0 0 1px rgba(15,15,15,.05),0 3px 6px rgba(15,15,15,.1),0 9px 24px rgba(15,15,15,.2)}
.more-items button{display:block;width:100%;text-align:left;padding:8px 10px;min-height:36px;border-radius:4px;font-size:.92rem;font-weight:400;color:var(--text)}
.more-items button:hover{background:var(--hover)}
.more-items .sync-status{color:var(--muted)}
.section-heading h2,.week-navigation h2{margin-top:0}
.swipe-row:not(.swipe-open):not(.is-swiping) .swipe-delete{visibility:hidden}
.shopping-heading .eyebrow{display:none}
