@import url('/fonts.css');

:root{
  --bg:#f7f5f9;--surface:#ffffff;--surface-2:#f0ecf5;--surface-3:#e7e0ef;
  --primary:#8d76b8;--primary-strong:#6f579c;--primary-deep:#554276;--primary-soft:#ebe5f3;
  --text:#292530;--muted:#746d7d;--line:#ded8e5;--success:#44745c;--warn:#a56b30;--danger:#a44f5b;
  --shadow:0 8px 28px rgba(50,39,63,.08);--radius:18px;--tap:48px;
  --sidebar:238px;--bottom:72px;--max:1280px;
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--bg);font-size:16px;line-height:1.5}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(141,118,184,.28);outline-offset:2px}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}

.app-shell{min-height:100vh}
.sidebar{display:none}
.app-main{min-height:100vh;padding-bottom:calc(var(--bottom) + env(safe-area-inset-bottom))}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 18px 12px;background:rgba(247,245,249,.96);border-bottom:1px solid transparent;backdrop-filter:blur(14px)}
.topbar h1{margin:0;font-size:1.55rem;letter-spacing:-.035em;line-height:1.15}
.eyebrow{margin:0 0 2px;color:var(--muted);font-size:.78rem;font-weight:700;letter-spacing:.035em;text-transform:uppercase}
.top-actions{display:flex;gap:8px;align-items:center}
.icon-btn,.avatar-btn{width:44px;height:44px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);display:grid;place-items:center;font-weight:800}
.avatar-btn{border-radius:50%;background:var(--primary);border-color:var(--primary);color:#fff}
.view{width:min(100%,var(--max));margin:0 auto;padding:14px 16px 32px}
.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--bottom) + env(safe-area-inset-bottom));padding:8px 10px env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(5,1fr);gap:4px;background:rgba(255,255,255,.97);border-top:1px solid var(--line);backdrop-filter:blur(16px)}
.bottom-nav button{min-width:0;border:0;background:transparent;color:var(--muted);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.68rem;font-weight:700}
.bottom-nav button .nav-ico{font-size:1.2rem;line-height:1}
.bottom-nav button.active{background:var(--primary-soft);color:var(--primary-deep)}

.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}
.auth-card{width:min(100%,440px);background:var(--surface);border:1px solid var(--line);border-radius:26px;padding:28px;box-shadow:var(--shadow)}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.auth-brand .brand-mark,.brand-mark{width:46px;height:46px;border-radius:15px;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:900;font-size:1.3rem}
.auth-card h1{font-size:1.8rem;margin:0;letter-spacing:-.04em}
.auth-card p{color:var(--muted)}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--surface-2);border-radius:14px;padding:4px;margin:20px 0}
.auth-tabs button{height:42px;border:0;background:transparent;border-radius:11px;color:var(--muted);font-weight:700}
.auth-tabs button.active{background:var(--surface);color:var(--text);box-shadow:0 2px 9px rgba(50,39,63,.06)}

.section{margin:12px 0 28px}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:12px}
.section-head h2{margin:0;font-size:1.16rem;letter-spacing:-.02em}
.section-head p{margin:2px 0 0;color:var(--muted);font-size:.9rem}
.text-btn{border:0;background:none;color:var(--primary-strong);font-weight:800;padding:7px 0}

.hero-welcome{padding:18px 0 8px}
.hero-welcome h2{font-size:1.85rem;line-height:1.15;letter-spacing:-.045em;margin:0 0 8px}
.hero-welcome p{margin:0;color:var(--muted)}
.ai-command{margin:18px 0 6px;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:10px;box-shadow:var(--shadow)}
.ai-command-row{display:flex;gap:8px}
.ai-command input{flex:1;border:0;background:transparent;min-height:48px;padding:0 8px;color:var(--text);min-width:0}
.ai-command input:focus{outline:none}
.ai-command .primary{white-space:nowrap}
.quick-chips{display:flex;gap:8px;overflow-x:auto;padding:8px 2px 2px;scrollbar-width:none}
.quick-chips::-webkit-scrollbar{display:none}
.chip{height:36px;padding:0 13px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--text);white-space:nowrap;font-size:.87rem;font-weight:700}
.chip.active,.chip:hover{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-deep)}

.recipe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.recipe-card{overflow:hidden;border:1px solid var(--line);border-radius:18px;background:var(--surface);min-width:0}
.recipe-card button.card-hit{display:block;width:100%;padding:0;border:0;background:transparent;text-align:left;color:inherit}
.recipe-photo{aspect-ratio:1.35/1;background:var(--surface-2);display:grid;place-items:center;overflow:hidden;color:var(--primary-strong);font-size:2rem}
.recipe-photo img{width:100%;height:100%;object-fit:cover}
.recipe-card-body{padding:12px}
.recipe-card h3{font-size:.98rem;margin:0 0 6px;line-height:1.25}
.recipe-meta{display:flex;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:.78rem}
.fav-star{color:#9b7a38}

.card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.card+.card,.panel+.panel{margin-top:10px}
.soft-card{background:var(--primary-soft);border-color:#d9cfe7}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stat{padding:13px 10px;border-radius:16px;background:var(--surface);border:1px solid var(--line);text-align:center}
.stat strong{display:block;font-size:1.1rem}.stat span{color:var(--muted);font-size:.76rem}
.empty{padding:28px 18px;text-align:center;border:1px dashed #cec6d7;border-radius:18px;color:var(--muted)}
.empty strong{display:block;color:var(--text);margin-bottom:4px}

.btn,.primary,.secondary,.danger-btn{min-height:var(--tap);border-radius:14px;padding:0 16px;font-weight:800;border:1px solid transparent}
.primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.primary:hover{background:var(--primary-strong)}
.secondary{background:var(--surface);color:var(--text);border-color:var(--line)}
.danger-btn{background:#fff4f5;color:var(--danger);border-color:#ead0d4}
.btn-row{display:flex;gap:10px;flex-wrap:wrap}
.btn-row>*{flex:1 1 auto}
.fab{position:fixed;right:18px;bottom:calc(var(--bottom) + 18px + env(safe-area-inset-bottom));z-index:18;width:58px;height:58px;border:0;border-radius:20px;background:var(--primary);color:#fff;font-size:1.5rem;box-shadow:0 12px 30px rgba(85,66,118,.3)}

.field{display:flex;flex-direction:column;gap:6px;margin:0 0 14px}
.field label,.label{font-size:.82rem;color:var(--muted);font-weight:800}
.input,textarea,select{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:13px;color:var(--text);padding:12px 13px;min-height:46px}
textarea{resize:vertical;min-height:96px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-grid .wide{grid-column:1/-1}
.inline-fields{display:grid;grid-template-columns:1.3fr .55fr .7fr 42px;gap:7px;align-items:end;margin-bottom:8px}
.inline-fields .field{margin:0}
.remove-row{width:42px;height:46px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--danger)}
.step-row{display:grid;grid-template-columns:36px 1fr 72px 42px;gap:8px;align-items:start;margin-bottom:8px}
.step-num{width:36px;height:36px;border-radius:12px;background:var(--primary-soft);color:var(--primary-deep);display:grid;place-items:center;font-weight:900}
.muted{color:var(--muted)}
.small{font-size:.84rem}
.note{padding:12px 14px;background:var(--surface-2);border-radius:13px;color:var(--muted);font-size:.87rem}
.error{padding:12px 14px;border-radius:13px;background:#fff1f2;color:var(--danger);font-weight:700}
.success{padding:12px 14px;border-radius:13px;background:#edf7f1;color:var(--success);font-weight:700}

.searchbar{display:flex;gap:8px;margin-bottom:12px}
.searchbar input{flex:1}
.filter-row{display:flex;gap:8px;overflow:auto;margin-bottom:14px;scrollbar-width:none}
.filter-row::-webkit-scrollbar{display:none}

.detail-hero{margin:-14px -16px 0;position:relative}
.detail-hero .recipe-photo{aspect-ratio:1.5/1;border-radius:0}
.detail-hero-actions{position:absolute;top:12px;left:12px;right:12px;display:flex;justify-content:space-between}
.overlay-btn{width:44px;height:44px;border-radius:14px;border:0;background:rgba(255,255,255,.92);display:grid;place-items:center;font-weight:900}
.detail-title{padding:18px 0 8px}
.detail-title h2{font-size:2rem;letter-spacing:-.045em;line-height:1.1;margin:0 0 8px}
.pill-row{display:flex;gap:8px;flex-wrap:wrap}
.pill{padding:7px 10px;border-radius:999px;background:var(--surface-2);font-size:.8rem;color:var(--muted);font-weight:700}
.sticky-cook{position:sticky;bottom:calc(var(--bottom) + 10px);z-index:14;margin:14px 0}
.sticky-cook .primary{width:100%;box-shadow:0 10px 30px rgba(85,66,118,.24)}

.ingredients{list-style:none;margin:0;padding:0}
.ingredients li{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);align-items:flex-start}
.ingredients li:last-child{border:0}
.check{width:24px;height:24px;border:1.5px solid #bcb3c7;border-radius:8px;flex:0 0 24px;background:#fff}
.ingredients .qty{font-weight:800}
.steps{display:flex;flex-direction:column;gap:14px}
.step{display:grid;grid-template-columns:38px 1fr;gap:12px;align-items:start}
.step .step-num{margin-top:1px}

.cook-shell{position:fixed;inset:0;z-index:100;background:#fcfbfd;display:flex;flex-direction:column}
.cook-top{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--line)}
.cook-progress{height:4px;background:var(--surface-3)}
.cook-progress span{display:block;height:100%;background:var(--primary)}
.cook-body{flex:1;overflow:auto;padding:28px 22px;display:flex;flex-direction:column;justify-content:center;max-width:760px;width:100%;margin:auto}
.cook-body .kicker{color:var(--primary-strong);font-weight:900;font-size:.86rem;text-transform:uppercase;letter-spacing:.04em}
.cook-body h2{font-size:clamp(1.65rem,7vw,2.6rem);line-height:1.2;letter-spacing:-.04em;margin:8px 0 22px}
.cook-needed{padding:15px;border-radius:16px;background:var(--primary-soft);margin-bottom:18px}
.cook-controls{display:grid;grid-template-columns:1fr 1.7fr;gap:10px;padding:14px 16px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fff}
.timer-bar{position:fixed;top:74px;right:14px;z-index:110;padding:9px 12px;border-radius:13px;background:var(--primary-deep);color:#fff;font-weight:800;box-shadow:var(--shadow)}

.plan-list{display:flex;flex-direction:column;gap:10px}
.plan-day{display:grid;grid-template-columns:76px 1fr;gap:10px;align-items:center}
.plan-date{font-weight:900;color:var(--primary-deep)}
.plan-meal{min-height:64px;padding:12px;border-radius:15px;background:var(--surface);border:1px solid var(--line)}
.shopping-item{display:grid;grid-template-columns:32px 1fr 42px;gap:8px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}
.shopping-item.checked .item-name{text-decoration:line-through;color:var(--muted)}
.pantry-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.expiry-soon{color:var(--warn);font-weight:800}

.ai-screen .prompt-box{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:12px}
.ai-screen textarea{border:0;min-height:120px;padding:8px;background:transparent}
.ai-screen textarea:focus{outline:none}
.suggestion{padding:16px;border:1px solid var(--line);border-radius:18px;background:var(--surface);margin-bottom:10px}
.suggestion h3{margin:0 0 6px}
.proposal{border:1px solid #d5c9e4;background:#fcfaff;border-radius:20px;padding:16px}
.diff-list{margin:10px 0;padding-left:20px;color:var(--primary-deep)}

.modal-host{position:fixed;inset:0;z-index:200;background:rgba(29,25,34,.45);padding:16px;display:grid;place-items:end center}
.modal-sheet{width:min(100%,620px);max-height:88vh;overflow:auto;background:var(--surface);border-radius:24px 24px 18px 18px;padding:18px;box-shadow:0 20px 60px rgba(20,15,25,.22)}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.modal-head h2{margin:0;font-size:1.25rem}
.close-btn{width:42px;height:42px;border:0;background:var(--surface-2);border-radius:13px}

.toast{position:fixed;z-index:500;left:50%;top:16px;transform:translate(-50%,-20px);opacity:0;pointer-events:none;max-width:min(92vw,520px);padding:12px 16px;border-radius:14px;background:var(--primary-deep);color:#fff;font-weight:800;box-shadow:var(--shadow);transition:.18s ease}
.toast.show{opacity:1;transform:translate(-50%,0)}
.skeleton{background:#ece8f0;border-radius:10px;min-height:18px;animation:pulse 1.4s ease infinite}
@keyframes pulse{50%{opacity:.55}}

@media(min-width:760px){
  .recipe-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .view{padding:18px 24px 48px}
  .detail-hero{margin:0;border-radius:24px;overflow:hidden}
  .detail-hero .recipe-photo{border-radius:24px}
  .fab{right:28px}
  .modal-host{place-items:center}
  .modal-sheet{border-radius:24px}
}
@media(min-width:1024px){
  .app-shell{display:grid;grid-template-columns:var(--sidebar) 1fr}
  .sidebar{display:flex;position:sticky;top:0;height:100vh;flex-direction:column;padding:22px 14px;border-right:1px solid var(--line);background:#fbfafc}
  .brand{display:flex;align-items:center;gap:11px;font-size:1.18rem;font-weight:900;padding:0 8px 20px}
  .brand-mark{width:40px;height:40px;border-radius:13px}
  .side-nav{display:flex;flex-direction:column;gap:4px;flex:1}
  .nav-link{width:100%;min-height:46px;padding:0 12px;border:0;border-radius:13px;background:transparent;color:var(--muted);display:flex;align-items:center;gap:11px;text-align:left;font-weight:750}
  .nav-link.active{background:var(--primary-soft);color:var(--primary-deep)}
  .side-foot{border-top:1px solid var(--line);padding-top:10px}
  .bottom-nav{display:none}
  .app-main{padding-bottom:0}
  .topbar{padding:22px 32px 14px}
  .view{padding:18px 32px 60px}
  .recipe-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .fab{bottom:28px;right:32px}
  .sticky-cook{bottom:18px}
  .cook-controls{grid-template-columns:180px 240px;justify-content:center}
}
@media(prefers-color-scheme:dark){
  :root{--bg:#19171d;--surface:#232027;--surface-2:#2c2831;--surface-3:#393340;--text:#f4f0f7;--muted:#b5acbf;--line:#3c3742;--primary-soft:#352f43;--shadow:0 8px 28px rgba(0,0,0,.24)}
  .topbar{background:rgba(25,23,29,.95)}.bottom-nav{background:rgba(35,32,39,.97)}
  .icon-btn,.auth-tabs button.active,.secondary,.remove-row,.overlay-btn{background:var(--surface)}
  .cook-shell,.cook-controls{background:var(--bg)}.check{background:var(--surface)}
}

@media print{
  .sidebar,.bottom-nav,.topbar,.detail-hero-actions,.btn-row,.sticky-cook,.fab{display:none!important}
  body,.app-main,.view{background:#fff!important;color:#111!important;padding:0!important;margin:0!important}
  .detail-hero{max-height:280px;overflow:hidden}.detail-hero .recipe-photo{max-height:280px}
  .section{break-inside:avoid}.card{border:1px solid #ccc;box-shadow:none}
}

@media (prefers-color-scheme: dark){
  :root{--bg:#19161d;--surface:#242029;--surface-2:#2d2733;--surface-3:#38303f;--text:#f5f0f8;--muted:#bbb0c4;--line:#453b4d;--primary:#aa91d2;--primary-strong:#bea8df;--primary-deep:#d3c1ec;--primary-soft:#392f46;--shadow:0 8px 28px rgba(0,0,0,.28)}
  html,body{background:var(--bg);color:var(--text)}
  input,select,textarea,.input{background:#211d25;color:var(--text);border-color:var(--line)}
  .topbar,.bottom-nav,.sidebar,.card,.recipe-card,.auth-card,.modal-sheet,.cook-shell,.cook-top,.cook-controls{background:var(--surface);color:var(--text)}
  .recipe-photo,.hero-welcome,.prompt-box,.soft-card{background:var(--surface-2)}
}

.ingredient-section{list-style:none;padding:14px 0 6px!important;border-bottom:0!important;color:var(--primary);font-size:.82rem;text-transform:uppercase;letter-spacing:.08em}
.plan-tray{padding-bottom:8px}
.plan-drag{cursor:grab}
.drop-slot{transition:.15s ease;border:1px solid transparent;border-radius:12px;padding:8px}
.drop-slot.drag-over{border-color:var(--primary);background:var(--primary-soft)}
@media print{
  .side,.topbar,.bottom-nav,.btn-row,.sticky-cook,.fab,.overlay-btn,.text-btn,.secondary,.primary{display:none!important}
  .main{margin:0!important;padding:0!important}.view{max-width:none!important}.detail-hero{max-height:280px;overflow:hidden}
}


/* Manna refinement pass — 2026-09-23 */
.full-btn{width:100%;margin-top:12px}
.compact-select{width:auto;min-width:88px}
.home-loading,.plan-loading,.recipe-loading{height:260px}
.error-state{padding:28px;border:1px solid var(--line);border-radius:20px;background:var(--surface);text-align:center}
.error-state strong{font-size:1.15rem}.error-state p{color:var(--muted)}

.daily-verse{display:flex;gap:12px;align-items:flex-start;margin:12px 0 16px;padding:13px 15px;border:1px solid #ded4ee;border-radius:16px;background:#f3eefb}
.daily-verse .verse-mark{width:28px;height:28px;flex:0 0 28px;display:grid;place-items:center;border-radius:50%;background:var(--primary);color:white;font-size:.78rem}
.daily-verse p{margin:0 0 2px;color:var(--text);font-size:.96rem;line-height:1.45}
.daily-verse span:last-child{color:var(--primary-deep);font-size:.78rem;font-weight:800}
.home-question{margin-top:16px!important}

.active-cook-card,.active-cook-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid #d9cdec;border-radius:18px;background:#f5f0fb}
.active-cook-card p,.active-cook-banner p{margin:3px 0 0;color:var(--muted);font-size:.88rem}
.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--primary);margin-right:8px;box-shadow:0 0 0 4px rgba(141,118,184,.14)}
.today-meal{display:grid;grid-template-columns:90px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.today-meal:last-child{border-bottom:0}.today-meal span{text-transform:capitalize;color:var(--muted);font-size:.85rem}

.recipe-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px}
.recipe-searchbar{flex:1;min-width:0}
.category-list{margin-top:16px;border-top:1px solid var(--line)}
.category-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line)}

.plan-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.meal-plan-grid{display:grid;grid-template-columns:1fr;gap:12px}
.plan-day-card{border:1px solid var(--line);border-radius:18px;background:var(--surface);overflow:hidden}
.plan-day-heading{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.plan-day-heading span{color:var(--muted);font-weight:700}.plan-day-heading strong{font-size:.98rem}
.plan-day-slots{padding:10px}
.plan-slot{min-height:94px;border:1px dashed var(--line);border-radius:14px;padding:10px;margin-bottom:8px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;transition:.15s ease}
.plan-slot:last-child{margin-bottom:0}.plan-slot.filled{border-style:solid;background:var(--primary-soft)}
.plan-slot.drag-over{border-color:var(--primary);background:#eee6fb;transform:translateY(-1px)}
.plan-slot-label{text-transform:capitalize;font-size:.72rem;font-weight:900;color:var(--primary-deep);letter-spacing:.03em}
.plan-add{border:0;background:none;color:var(--muted);font-weight:750;padding:8px 0}
.plan-slot-actions{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:4px}.plan-source-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.plan-source.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-deep);box-shadow:inset 0 0 0 1px var(--primary)}
.plan-recipes{margin-bottom:16px}

.shopping-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}
.shopping-list-switch{flex:1;max-width:420px}.shopping-list-switch>div{display:flex;flex-direction:column}
.shopping-current{max-width:820px}.shopping-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.shopping-title-row h2{margin:2px 0 0;font-size:1.5rem}
.shopping-card{padding:4px 14px}.shopping-item{border-radius:12px;padding:12px 8px;margin:3px 0;border:1px solid transparent;transition:.14s ease}
.shopping-item.checked{background:#eef7f1;border-color:#c9e4d4;opacity:.82}
.shopping-item.checked .item-name strong{text-decoration:line-through;color:#65756a}
.shopping-item.checked .check{background:var(--success);border-color:var(--success);color:#fff}
.shopping-item .item-name{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.shopping-qty{font-size:.78rem;color:var(--muted)}
.done-label{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:#dbeee2;color:#356248;font-size:.7rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.shopping-add-wrap{display:grid;gap:10px;margin:0 0 14px}.shopping-add-copy{display:flex;flex-direction:column;gap:2px}.shopping-entry-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch}.shopping-entry-row .shopping-add{margin:0}.shopping-picker-search{margin-bottom:10px}.shopping-option-list{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:14px;margin-bottom:12px}.shopping-option{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px 13px;border-bottom:1px solid var(--line);cursor:pointer}.shopping-option:last-child{border-bottom:0}.shopping-option:hover{background:var(--surface-2)}.shopping-option.on-list{cursor:default;opacity:.62}.shopping-option input{width:18px;height:18px;accent-color:var(--primary)}.shopping-option-copy{display:flex;flex-direction:column;min-width:0}.shopping-option-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shopping-option-copy small{color:var(--muted);font-size:.72rem}.shopping-option-state{font-size:.7rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.shopping-actions{margin-top:12px}.shopping-empty{max-width:620px}.recipe-picker{max-height:48vh;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:4px 12px}

.auth-shell{padding:0;background:#f4f0f8}
.auth-layout{width:100%;min-height:100vh;display:grid;grid-template-columns:1fr}
.auth-story{display:none}
.auth-panel{display:grid;place-items:center;padding:24px}
.auth-card{width:min(100%,440px);border-radius:28px;padding:28px;background:rgba(255,255,255,.96);box-shadow:0 22px 70px rgba(75,54,98,.15)}
.auth-mobile-brand{display:flex;align-items:center;gap:11px;margin-bottom:28px}.auth-mobile-brand>div{display:flex;flex-direction:column}.auth-mobile-brand strong{font-size:1.15rem}.auth-mobile-brand span:last-child{font-size:.78rem;color:var(--muted)}
.auth-copy h2{margin:0 0 5px;font-size:1.75rem;letter-spacing:-.04em}.auth-copy p{margin:0}
.auth-form{display:flex;flex-direction:column;gap:4px}.auth-primary{width:100%;margin-top:6px}.auth-passkey{width:100%;margin-top:6px}
.auth-foot{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:.75rem;text-align:center}

.cook-shell{position:fixed;inset:0;z-index:100;background:#faf8fc;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}
.cook-top{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;padding:12px 14px;background:var(--surface);border-bottom:1px solid var(--line)}
.cook-icon-btn{width:42px;height:42px;border:1px solid var(--line);border-radius:13px;background:var(--surface);color:var(--text);font-weight:850}
.cook-title{min-width:0;display:flex;flex-direction:column}.cook-title span{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:900}.cook-title strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cook-top-actions{display:flex;gap:8px;align-items:center}.cook-end-btn{display:none;border:1px solid #e2c8cc;background:#fff4f5;color:#88434d;border-radius:12px;height:42px;padding:0 14px;font-weight:800}
.cook-progress-wrap{padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line)}
.cook-progress-label{display:flex;justify-content:space-between;font-size:.74rem;color:var(--muted);font-weight:800;margin-bottom:6px}
.cook-progress{display:block;width:100%;height:6px;border:0;border-radius:999px;overflow:hidden;background:var(--surface-3);accent-color:var(--primary)}
.cook-progress::-webkit-progress-bar{background:var(--surface-3);border-radius:999px}.cook-progress::-webkit-progress-value{background:var(--primary);border-radius:999px}
.cook-layout{min-height:0;overflow:auto;padding:18px 16px 24px;display:grid;grid-template-columns:1fr;gap:14px}
.cook-step-panel,.cook-side{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:18px}
.cook-step-panel{display:flex;flex-direction:column;gap:18px}
.cook-step-number{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:var(--primary);color:#fff;font-size:1.15rem;font-weight:900}
.cook-step-copy .kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--primary-deep);font-weight:900}
.cook-step-copy h2{font-size:clamp(1.35rem,5.5vw,2rem);line-height:1.28;letter-spacing:-.025em;margin:6px 0 0}
.cook-timer-actions{display:flex;gap:8px;flex-wrap:wrap}
.cook-help-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px;border-radius:14px;background:var(--primary-soft)}
.cook-help-card>div{display:flex;flex-direction:column}.cook-help-card span{font-size:.78rem;color:var(--muted);margin-top:2px}
.cook-side-head{display:flex;flex-direction:column;margin-bottom:10px}.cook-side-head span{font-size:.72rem;color:var(--muted);text-transform:uppercase;font-weight:800}.cook-side-head strong{font-size:1.1rem}
.cook-ingredients{display:flex;flex-direction:column}.cook-ingredient{display:grid;grid-template-columns:24px 1fr;gap:9px;padding:10px 0;border-bottom:1px solid var(--line);align-items:start}.cook-ingredient:last-child{border-bottom:0}.cook-ingredient input{width:20px;height:20px;margin:2px 0;accent-color:var(--primary)}.cook-ingredient span{display:flex;flex-direction:column}.cook-ingredient small{color:var(--muted);margin-top:2px}
.cook-controls{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line)}
.cook-controls button{min-height:48px}.timer-bar{position:fixed;z-index:180;top:82px;left:50%;transform:translateX(-50%);padding:8px 13px;border-radius:999px;background:var(--primary-deep);color:#fff;font-size:.78rem;font-weight:900;box-shadow:var(--shadow)}
.active-cook-banner{margin:14px 0}
.recipe-actions{margin-top:14px}

@media(min-width:760px){
  .meal-plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cook-layout{padding:24px;max-width:1100px;width:100%;margin:0 auto}
  .cook-step-panel,.cook-side{padding:24px}
}
@media(min-width:1024px){
  .auth-layout{grid-template-columns:minmax(420px,1.08fr) minmax(420px,.92fr)}
  .auth-story{display:block;position:relative;overflow:hidden;background:linear-gradient(145deg,#6f579b 0%,#8d76b8 46%,#b69bd8 100%);color:#fff;padding:52px}
  .auth-story:before,.auth-story:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.10)}
  .auth-story:before{width:360px;height:360px;right:-110px;top:-90px}.auth-story:after{width:260px;height:260px;left:-90px;bottom:-80px}
  .auth-story-inner{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:space-between;max-width:620px}
  .auth-logo{display:flex;align-items:center;gap:12px;font-size:1.25rem;font-weight:900}.auth-logo .brand-mark{background:#fff;color:#725aa0}
  .auth-kicker{font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.13em;opacity:.78}
  .auth-story h1{font-size:clamp(2.5rem,4vw,4rem);line-height:1.02;letter-spacing:-.055em;margin:12px 0 18px}.auth-story p{font-size:1.05rem;max-width:540px;opacity:.86}
  .auth-highlights{display:flex;gap:10px;flex-wrap:wrap}.auth-highlights span{padding:8px 11px;border:1px solid rgba(255,255,255,.25);border-radius:999px;font-size:.75rem;font-weight:800;background:rgba(255,255,255,.08)}
  .auth-mobile-brand{display:none}.auth-panel{padding:50px}.auth-card{box-shadow:none;border:1px solid var(--line)}
  .meal-plan-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .cook-layout{grid-template-columns:minmax(0,1.45fr) minmax(300px,.75fr);align-items:start;padding:32px}
  .cook-step-panel{min-height:100%;justify-content:flex-start}.cook-step-copy h2{font-size:2rem;max-width:760px}
  .cook-end-btn{display:block}.cook-mobile-end{display:none!important}.cook-controls{grid-template-columns:180px 240px;justify-content:center}
}
@media(min-width:1380px){
  .meal-plan-grid{grid-template-columns:repeat(7,minmax(0,1fr))}
}
@media(max-width:640px){
  .recipe-toolbar,.shopping-head,.shopping-title-row,.active-cook-card,.active-cook-banner{flex-direction:column;align-items:stretch}
  .recipe-toolbar .btn-row,.shopping-title-row .btn-row,.active-cook-card .btn-row,.active-cook-banner .btn-row{width:100%}
  .recipe-toolbar .btn-row>*{flex:1}.shopping-head .primary{width:100%}
  .shopping-entry-row{grid-template-columns:1fr}.shopping-entry-row>.secondary{width:100%}.shopping-option{grid-template-columns:auto minmax(0,1fr)}.shopping-option-state{grid-column:2}
  .cook-help-card{align-items:stretch;flex-direction:column}.cook-help-card button{width:100%}
}
@media(prefers-color-scheme:dark){
  .daily-verse,.active-cook-card,.active-cook-banner{background:var(--surface-2);border-color:var(--line)}
  .shopping-item.checked{background:#203229;border-color:#365b46}.shopping-item.checked .item-name strong{color:#a9c8b4}.done-label{background:#2d4a39;color:#c4e2ce}
  .auth-shell{background:var(--bg)}.auth-card{background:var(--surface)}
  .cook-shell,.cook-top,.cook-progress-wrap,.cook-controls{background:var(--bg)}.cook-step-panel,.cook-side{background:var(--surface)}
}


/* Password recovery */
.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.field-label-row label{margin:0}
.forgot-link{border:0;background:none;color:var(--primary-deep);font:inherit;font-size:.78rem;font-weight:800;padding:2px 0;cursor:pointer}
.forgot-link:hover{text-decoration:underline}
.forgot-help{margin:14px 0 0;text-align:center}
.reset-request-success{display:grid;grid-template-columns:32px 1fr;gap:12px;align-items:start;padding:14px;border-radius:16px;background:var(--primary-soft)}
.reset-request-success p{margin:4px 0 0}
.reset-requests{padding:4px 14px}
.reset-request-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 2px;border-bottom:1px solid var(--line)}
.reset-request-row:last-child{border-bottom:0}
.reset-link-box{display:flex;flex-direction:column;gap:10px}
.reset-link-box label{font-size:.78rem;font-weight:900;color:var(--muted)}
.reset-link-box code{display:block;overflow-wrap:anywhere;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);font-size:.76rem;line-height:1.45}
.admin-invite{margin-top:12px}
@media(max-width:640px){
  .reset-request-row{align-items:stretch;flex-direction:column}
  .reset-request-row .btn-row{width:100%}
  .reset-request-row .btn-row>*{flex:1}
}


/* Recipe category discovery */
.compact-head{margin-bottom:10px}
.recipe-category-browse,.category-suggestion-panel{margin-bottom:18px}
.category-chip-row{display:flex;gap:8px;flex-wrap:wrap}
.category-filter-chip{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:999px;padding:8px 12px;font:inherit;font-size:.82rem;font-weight:800;cursor:pointer}
.category-filter-chip span{color:var(--muted);font-size:.72rem;margin-left:3px}
.category-filter-chip.active{background:var(--primary);border-color:var(--primary);color:#fff}
.category-filter-chip.active span{color:rgba(255,255,255,.82)}
.category-suggestion-panel{padding:16px;border:1px solid #ddd1ed;border-radius:18px;background:#f7f3fb}
.category-idea-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.category-idea{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}
.category-idea span{font-weight:850}.category-idea strong{font-size:.73rem;color:var(--primary-deep)}
.suggestion-review{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:4px 12px}
.suggestion-recipe{display:grid;grid-template-columns:24px 1fr;gap:10px;align-items:start;padding:11px 0;border-bottom:1px solid var(--line)}
.suggestion-recipe:last-child{border-bottom:0}.suggestion-recipe input{width:19px;height:19px;accent-color:var(--primary);margin-top:2px}
.suggestion-recipe span{display:flex;flex-direction:column}.suggestion-recipe small{color:var(--muted);margin-top:2px}
@media(min-width:760px){.category-idea-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(prefers-color-scheme:dark){.category-suggestion-panel{background:var(--surface-2);border-color:var(--line)}}

/* Kunze Family shell — 2026-09-28 */
.family-hero{
  display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:18px;
  padding:22px;border:1px solid var(--line);border-radius:26px;background:
  linear-gradient(135deg,var(--surface) 0%,var(--primary-soft) 100%);box-shadow:var(--shadow);
}
.family-hero h2{margin:2px 0 7px;font-size:clamp(1.7rem,4vw,2.35rem);letter-spacing:-.045em;line-height:1.06}
.family-hero>div>p{margin:0;color:var(--muted)}
.family-verse{align-self:stretch;margin:0;background:rgba(255,255,255,.72);border:1px solid rgba(141,118,184,.2);border-radius:20px;padding:16px}
.family-verse p{margin:0 0 5px;color:var(--text);font-weight:750;line-height:1.38}
.family-verse span:last-child{color:var(--primary-deep);font-size:.8rem;font-weight:800}
.family-quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin:14px 0 24px}
.family-quick{min-height:112px;border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:15px;text-align:left;color:var(--text);box-shadow:0 5px 18px rgba(50,39,63,.045)}
.family-quick>span{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-deep);font-size:1.1rem;margin-bottom:12px}
.family-quick strong,.family-quick small{display:block}.family-quick small{margin-top:2px;color:var(--muted)}
.family-quick:hover{border-color:#c9bbdc;transform:translateY(-1px)}
.family-two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.family-two-col .section{margin-top:0}
.family-list-row{display:grid;grid-template-columns:105px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);align-items:center}
.family-list-row:last-child{border-bottom:0}.family-list-row span{color:var(--muted);font-size:.82rem}
.timeline-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden}
.timeline-row{display:grid;grid-template-columns:42px 1fr;gap:11px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}
.timeline-row:last-child{border-bottom:0}
.timeline-icon{width:34px;height:34px;border-radius:11px;background:var(--primary-soft);color:var(--primary-deep);display:grid;place-items:center;font-weight:900}
.page-actions{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}
.planner-event{display:grid;grid-template-columns:56px 1fr auto;gap:13px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}
.planner-event:last-child{border-bottom:0}
.planner-date{width:50px;height:54px;border-radius:15px;background:var(--primary-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--primary-deep)}
.planner-date strong{font-size:1.18rem;line-height:1}.planner-date span{text-transform:uppercase;font-size:.68rem;font-weight:850;margin-top:4px}
.planner-copy strong,.planner-copy span,.planner-copy small{display:block}
.planner-copy span,.planner-copy small{color:var(--muted);font-size:.82rem;margin-top:2px}
.training-row{display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:14px 15px;border-bottom:1px solid var(--line)}
.training-row:last-child{border-bottom:0}
.activity-badge{width:44px;height:44px;border-radius:15px;background:var(--primary-soft);display:grid;place-items:center;font-size:1.1rem}
.training-copy strong,.training-copy span,.training-copy small{display:block}
.training-copy span{color:var(--muted);font-size:.84rem;margin-top:2px}.training-copy small{color:var(--primary-deep);font-weight:700;margin-top:3px}
.member-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.member-card{display:grid;grid-template-columns:48px 1fr 12px;gap:11px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:13px}
.member-avatar{width:46px;height:46px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:900}
.member-card strong,.member-card span{display:block}.member-card span{color:var(--muted);font-size:.8rem}
.presence-dot{width:10px!important;height:10px;border-radius:50%;background:var(--success)}
.family-map-shell{margin-bottom:20px}
.family-map-placeholder{height:260px;border:1px solid #d7cde2;border-radius:26px;background:
  radial-gradient(circle at 25% 30%,rgba(141,118,184,.18),transparent 22%),
  radial-gradient(circle at 72% 65%,rgba(141,118,184,.13),transparent 26%),var(--primary-soft);
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative;overflow:hidden}
.family-map-placeholder>span{width:58px;height:58px;border-radius:20px;background:var(--surface);display:grid;place-items:center;color:var(--primary-deep);font-size:1.5rem;box-shadow:var(--shadow);z-index:1}
.family-map-placeholder strong{font-size:1.25rem;margin-top:12px;z-index:1}.family-map-placeholder small{max-width:380px;color:var(--muted);margin-top:4px;padding:0 18px;z-index:1}
.map-rings{position:absolute;width:420px;height:420px;border:1px solid rgba(111,87,156,.12);border-radius:50%;box-shadow:0 0 0 70px rgba(111,87,156,.04),0 0 0 140px rgba(111,87,156,.025)}
.task-row{display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}
.task-row:last-child{border-bottom:0}.task-row.done strong{text-decoration:line-through;color:var(--muted)}
.manna-hub-hero{display:flex;gap:14px;align-items:flex-start;padding:20px;border-radius:24px;background:var(--primary-soft);border:1px solid #d8cde6;margin-bottom:16px}
.manna-hub-hero h2{margin:0 0 4px;font-size:1.5rem}.manna-hub-hero p{margin:0;color:var(--muted)}
.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.module-card{min-height:126px;border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:16px;text-align:left;color:var(--text)}
.module-card>span{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--primary-soft);color:var(--primary-deep);font-size:1.15rem;margin-bottom:12px}
.module-card strong,.module-card small{display:block}.module-card small{color:var(--muted);margin-top:3px}
.full-btn{width:100%}
@media(max-width:760px){
  .family-hero{grid-template-columns:1fr;padding:17px;border-radius:22px}.family-verse{background:rgba(255,255,255,.66)}
  .family-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.family-quick{min-height:105px}
  .family-two-col{grid-template-columns:1fr}.member-grid{grid-template-columns:1fr}.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .planner-event{grid-template-columns:52px 1fr}.planner-event>.text-btn{grid-column:2;justify-self:start;padding:0}
  .training-row{grid-template-columns:45px 1fr}.training-row>.text-btn{grid-column:2;justify-self:start;padding:0}
  .family-map-placeholder{height:220px}
}
.map-people{display:flex;gap:7px;margin-top:14px;z-index:1}
.map-person{width:34px!important;height:34px;border-radius:50%;background:var(--primary)!important;color:#fff!important;display:grid!important;place-items:center;font-weight:900;box-shadow:0 4px 14px rgba(85,66,118,.25)}
.presence-dot.offline{background:#c9c2cf}
.location-controls .btn-row{margin-top:4px}
.location-controls .field:last-of-type{margin-bottom:10px}

.native-location-card p{margin-top:0}
.native-download{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
@media(max-width:760px){.native-location-card .btn-row{flex-direction:column}.native-location-card .btn-row>*{width:100%}}


/* Kunze Family calendar + budget */
.calendar-view-wide{max-width:none!important;padding-left:18px!important;padding-right:18px!important}
.calendar-shell{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:22px;overflow:hidden;min-height:720px;position:relative}
.calendar-main{min-width:0;background:var(--surface)}
.calendar-sidebar{border-left:1px solid var(--line);background:var(--surface);padding:18px 18px 110px;min-width:0}
.calendar-toolbar{min-height:76px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:12px 16px;border-bottom:1px solid var(--line)}
.calendar-nav{display:flex;align-items:center;gap:8px}
.cal-icon{width:46px;height:46px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:1.35rem;color:var(--text)}
.cal-today{min-height:46px}
.calendar-title{display:flex;align-items:center;gap:12px;min-width:0}
.calendar-title h2{font-size:2rem;line-height:1;margin:0;letter-spacing:-.04em}
.calendar-title-icon{width:38px;height:38px;border-radius:11px;background:var(--primary-soft);display:grid;place-items:center;color:var(--primary-deep);font-size:1.25rem}
.calendar-view-pill{border:1px solid var(--line);border-radius:999px;padding:8px 13px;font-weight:800;font-size:.82rem;color:var(--muted)}
.calendar-toolbar-people{display:flex;align-items:center}
.cal-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;border:2px solid var(--surface);font-size:.75rem;font-weight:900;margin-left:-6px}
.cal-avatar:first-child{margin-left:0}
.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line);background:var(--surface)}
.calendar-weekdays span{text-align:center;padding:9px 4px;font-size:.78rem;font-weight:900;color:var(--muted)}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(6,minmax(118px,1fr));min-height:690px}
.calendar-day{min-width:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 4px 7px;background:var(--surface);overflow:hidden}
.calendar-day:nth-child(7n){border-right:0}
.calendar-day.outside{background:rgba(116,109,125,.035)}
.calendar-day-number{display:flex;justify-content:flex-end;align-items:center;min-height:26px;padding:0 4px;color:var(--text);font-size:.78rem;font-weight:800}
.calendar-day.outside .calendar-day-number{color:#aaa2b0}
.calendar-day-number span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#4c83ea;color:#fff}
.calendar-day-events{display:flex;flex-direction:column;gap:2px}
.cal-event{display:block;width:100%;height:22px;line-height:22px;border:0;border-radius:3px;padding:0 4px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.72rem;font-weight:800}
.cal-event:hover{filter:brightness(.96)}
.cal-more{border:0;background:none;color:var(--primary-strong);font-size:.7rem;font-weight:800;text-align:left;padding:2px 4px}
.cal-side-head{display:flex;justify-content:space-between;align-items:center}.cal-side-head h2{margin:0 0 14px;font-size:1.55rem}
.mini-calendar{padding-bottom:16px;border-bottom:1px solid var(--line)}
.mini-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.mini-title span{color:var(--muted);font-weight:900}
.mini-week,.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.mini-week span{text-align:center;font-size:.72rem;color:var(--muted);font-weight:800;padding:3px}
.mini-day{aspect-ratio:1;border:0;background:transparent;border-radius:8px;color:var(--text);font-size:.78rem}
.mini-day.today{background:#4c83ea;color:#fff;font-weight:900}
.calendar-list-head{font-size:.78rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:18px 0 8px}
.calendar-member-list{display:flex;flex-direction:column;gap:7px}
.calendar-member-toggle{display:grid;grid-template-columns:18px 14px 1fr;align-items:center;gap:9px;padding:9px 8px;border-radius:12px}
.calendar-member-toggle:hover{background:var(--surface-2)}
.calendar-member-toggle input{accent-color:var(--primary)}
.member-dot{width:11px;height:11px;border-radius:50%}
.calendar-member-toggle strong,.calendar-member-toggle small{display:block}.calendar-member-toggle small{color:var(--muted);font-size:.72rem}
.calendar-layer{display:grid;grid-template-columns:27px 1fr;gap:9px;align-items:center;padding:9px 8px;border:1px solid var(--line);border-radius:13px;margin-bottom:7px}
.calendar-layer strong,.calendar-layer small{display:block}.calendar-layer small{font-size:.72rem;color:var(--muted)}
.layer-check{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:900}.layer-check.familywall{background:#4c83ea}.layer-check.tasks{background:#8E24AA}.layer-check.meals{background:#7986CB}
.calendar-create-wrap{position:absolute;right:326px;bottom:18px;z-index:12}
.calendar-create-btn{height:54px;border:0;border-radius:28px;background:#4c83ea;color:#fff;padding:0 20px;font-weight:900;font-size:1rem;box-shadow:0 10px 28px rgba(43,95,190,.25)}
.calendar-create-btn span{font-size:1.35rem;margin-right:6px}.calendar-create-btn b{margin-left:7px}
.calendar-create-menu{position:absolute;right:0;bottom:62px;width:230px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:7px;box-shadow:0 18px 50px rgba(33,27,39,.2)}
.calendar-create-menu button{width:100%;display:grid;grid-template-columns:30px 1fr auto;align-items:center;text-align:left;gap:8px;border:0;background:transparent;color:var(--text);border-radius:11px;padding:10px}
.calendar-create-menu button:hover{background:var(--surface-2)}.calendar-create-menu button span{font-size:1.15rem}.calendar-create-menu em,.beta-pill{font-style:normal;background:#a55de3;color:#fff;border-radius:6px;padding:1px 5px;font-size:.65rem;font-weight:900}
.calendar-modal-head{display:grid;grid-template-columns:44px 1fr 44px;text-align:center}.calendar-modal-head h2{font-size:1.45rem}
.calendar-event-form{padding:4px 0 6px}.calendar-title-input{display:grid;grid-template-columns:1fr 52px;gap:10px;align-items:center;margin-bottom:18px}
.calendar-title-input .input{font-size:1.1rem;border-color:#4c83ea}.attachment-btn{width:52px;height:52px;border:1px solid var(--line);border-radius:50%;background:var(--surface);font-size:1.2rem}
.calendar-from-to{display:grid;grid-template-columns:1fr 1fr;gap:12px}.calendar-from-to label{color:var(--text);font-size:.92rem}
.all-day-row{display:flex;gap:10px;align-items:center;margin:2px 0 18px;font-weight:700}.all-day-row input{width:22px;height:22px}
.calendar-color-block>strong,.calendar-attendees>strong{display:block;margin-bottom:8px}
.calendar-colours{display:grid;grid-template-columns:repeat(9,30px);gap:8px;margin-bottom:18px}
.cal-colour{width:28px;height:28px;border-radius:50%;background:transparent;border:4px solid var(--swatch);position:relative}
.cal-colour.selected:after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--swatch)}
.attendee-chips{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 18px}.attendee-chip input{position:absolute;opacity:0;pointer-events:none}
.attendee-chip span{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--member);color:#fff;font-weight:900;border:3px solid #dfe8ff;opacity:.38}
.attendee-chip input:checked+span{opacity:1;box-shadow:0 0 0 2px #4c83ea}
.more-options-btn{width:100%;height:48px;border:0;border-radius:24px;background:var(--surface-2);font-weight:900;margin-bottom:12px}.calendar-save{background:#4c83ea;border-color:#4c83ea}
.event-source-dot{width:16px;height:16px;border-radius:50%;display:inline-block;margin-right:8px}.modal-head>div{display:flex;align-items:center;gap:6px}
.event-detail-time{font-weight:800;margin:4px 0 14px}.event-detail-people{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.event-person-pill{display:flex;align-items:center;gap:6px;padding:5px 9px 5px 5px;background:var(--surface-2);border-radius:999px;font-size:.8rem;font-weight:800}.event-person-pill i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--member);color:#fff;font-style:normal}.event-person-pill small{color:var(--muted)}
.event-detail-row{padding:12px 0;border-top:1px solid var(--line)}.event-detail-row strong,.event-detail-row span{display:block}.event-detail-row span{color:var(--muted);margin-top:3px}
.event-detail-actions{margin-top:14px}.import-success-card{display:grid;grid-template-columns:42px 1fr;gap:12px;padding:15px;background:#edf7f1;border-radius:16px}.import-success-card>span{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--success);color:#fff;font-weight:900}.import-success-card p{margin:3px 0 0;color:var(--muted)}

/* Budget */
.budget-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;padding:22px;border-radius:24px;background:linear-gradient(135deg,var(--surface),var(--primary-soft));border:1px solid var(--line);margin-bottom:14px}.budget-hero h2{margin:2px 0 6px;font-size:1.7rem;letter-spacing:-.04em}.budget-hero p{margin:0;color:var(--muted);max-width:760px}
.budget-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0 24px}.budget-summary-grid article{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:15px}.budget-summary-grid span,.budget-summary-grid small{display:block;color:var(--muted);font-size:.76rem}.budget-summary-grid strong{display:block;font-size:1.35rem;margin:3px 0}
.budget-goal-years{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.budget-year-card{border:1px solid var(--line);background:var(--surface);border-radius:18px;padding:14px}.budget-year-card h3{margin:0 0 9px}.budget-goal{display:grid;grid-template-columns:22px 1fr;gap:7px;padding:6px 0;font-size:.88rem}.budget-goal input{accent-color:var(--primary)}.budget-goal.done span{text-decoration:line-through;color:var(--muted)}
.budget-section-nav{display:flex;gap:7px;overflow-x:auto;padding:4px 0 14px;position:sticky;top:76px;z-index:8;background:var(--bg)}.budget-section-nav button{white-space:nowrap;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 11px;font-weight:800;font-size:.76rem}.budget-section-nav span{color:var(--muted)}
.budget-section{scroll-margin-top:130px}.budget-section-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.budget-section-summary>span{background:var(--primary-soft);border-radius:12px;padding:8px 10px}.budget-section-summary small,.budget-section-summary strong{display:block}.budget-section-summary small{font-size:.68rem;color:var(--muted)}
.budget-table-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden}.budget-entry{display:grid;grid-template-columns:1fr minmax(100px,auto);gap:14px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);cursor:pointer}.budget-entry:last-child{border-bottom:0}.budget-entry:hover{background:var(--surface-2)}
.budget-entry-main>strong{display:block}.budget-entry-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}.budget-entry-meta span{font-size:.76rem;color:var(--muted)}.budget-entry-meta small{display:block;font-size:.63rem;text-transform:uppercase;letter-spacing:.04em}.budget-entry-amount{text-align:right}.budget-entry-amount strong,.budget-entry-amount small{display:block}.budget-entry-amount small{color:var(--muted);font-size:.7rem}
.budget-empty{padding:24px;color:var(--muted);text-align:center}.budget-source-note{background:var(--primary-soft);padding:10px 12px;border-radius:12px;margin-bottom:10px;font-size:.8rem}.budget-source-pre,.source-detail pre{white-space:pre-wrap;word-break:break-word;background:#18151d;color:#f5f0f8;border-radius:14px;padding:14px;max-height:54vh;overflow:auto;font-size:.72rem;line-height:1.45}.budget-detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.budget-detail-grid>div{padding:10px;border-radius:12px;background:var(--surface-2)}.budget-detail-grid small,.budget-detail-grid strong{display:block}.budget-detail-grid small{color:var(--muted);font-size:.7rem}
.source-detail{margin-top:12px}.source-detail summary{cursor:pointer;font-weight:800;color:var(--primary-strong)}

@media(max-width:1100px){
  .calendar-shell{grid-template-columns:1fr}.calendar-sidebar{display:none}.calendar-create-wrap{right:18px}
  .calendar-grid{min-height:620px}.calendar-day{min-height:100px}
  .budget-summary-grid{grid-template-columns:repeat(2,1fr)}.budget-goal-years{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:760px){
  .calendar-view-wide{padding:8px!important}.calendar-shell{border-radius:16px;min-height:0}.calendar-toolbar{grid-template-columns:1fr auto;gap:8px;padding:9px}.calendar-title{grid-column:1/-1;grid-row:1;justify-content:center}.calendar-title h2{font-size:1.45rem}.calendar-title-icon,.calendar-view-pill{display:none}.calendar-nav{grid-row:2}.calendar-toolbar-people{grid-row:2}
  .calendar-weekdays span{font-size:.66rem}.calendar-grid{grid-template-rows:repeat(6,minmax(92px,1fr));min-height:560px}.calendar-day{padding:3px 2px}.calendar-day-number{font-size:.7rem;min-height:22px}.cal-event{height:19px;line-height:19px;font-size:.61rem;padding:0 3px}.calendar-create-wrap{position:fixed;right:16px;bottom:calc(var(--bottom) + 14px + env(safe-area-inset-bottom))}.calendar-create-btn{height:50px}.calendar-create-menu{width:220px}
  .calendar-from-to{grid-template-columns:1fr}.calendar-colours{grid-template-columns:repeat(7,30px)}
  .budget-hero{align-items:flex-start;flex-direction:column}.budget-summary-grid{grid-template-columns:1fr 1fr}.budget-goal-years{grid-template-columns:1fr}.budget-section-nav{top:68px}.budget-entry{grid-template-columns:1fr}.budget-entry-amount{text-align:left}.budget-detail-grid{grid-template-columns:1fr}
}

/* CSP-safe FamilyWall/member colours */
.kf-616161{background:#616161!important;color:#fff!important}.member-kf-616161{border-left-color:#616161!important}
.kf-4285f4{background:#4285F4!important;color:#fff!important}.member-kf-4285f4{border-left-color:#4285F4!important}
.kf-d50000{background:#D50000!important;color:#fff!important}.member-kf-d50000{border-left-color:#D50000!important}
.kf-f6bf26{background:#F6BF26!important;color:#182027!important}.member-kf-f6bf26{border-left-color:#F6BF26!important}
.kf-8e24aa{background:#8E24AA!important;color:#fff!important}.member-kf-8e24aa{border-left-color:#8E24AA!important}
.kf-e67c73{background:#E67C73!important;color:#182027!important}.member-kf-e67c73{border-left-color:#E67C73!important}
.kf-33b679{background:#33B679!important;color:#fff!important}.member-kf-33b679{border-left-color:#33B679!important}
.kf-f4511e{background:#F4511E!important;color:#fff!important}.member-kf-f4511e{border-left-color:#F4511E!important}
.kf-039be5{background:#039BE5!important;color:#fff!important}.member-kf-039be5{border-left-color:#039BE5!important}
.kf-ad7c4c{background:#AD7C4C!important;color:#fff!important}.member-kf-ad7c4c{border-left-color:#AD7C4C!important}
.kf-d25c80{background:#D25C80!important;color:#fff!important}.member-kf-d25c80{border-left-color:#D25C80!important}
.kf-66c0c6{background:#66C0C6!important;color:#182027!important}.member-kf-66c0c6{border-left-color:#66C0C6!important}
.kf-675e94{background:#675E94!important;color:#fff!important}.member-kf-675e94{border-left-color:#675E94!important}
.kf-7986cb{background:#7986CB!important;color:#fff!important}.member-kf-7986cb{border-left-color:#7986CB!important}
.kf-0b8043{background:#0B8043!important;color:#fff!important}.member-kf-0b8043{border-left-color:#0B8043!important}
.kf-ffb07c{background:#FFB07C!important;color:#182027!important}.member-kf-ffb07c{border-left-color:#FFB07C!important}
.kf-1a2421{background:#1A2421!important;color:#fff!important}.member-kf-1a2421{border-left-color:#1A2421!important}
.kf-e85d5d{background:#E85D5D!important;color:#fff!important}.member-kf-e85d5d{border-left-color:#E85D5D!important}
.kf-ff8a80{background:#FF8A80!important;color:#182027!important}.member-kf-ff8a80{border-left-color:#FF8A80!important}
.kf-8d76b8{background:#8D76B8!important;color:#fff!important}.member-kf-8d76b8{border-left-color:#8D76B8!important}


/* Planner v2 interaction fixes */
.calendar-view-select{position:relative}
.calendar-view-btn{border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:8px 13px;font-weight:850;color:var(--text)}
.calendar-view-menu{position:absolute;top:42px;right:0;min-width:140px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 14px 36px rgba(33,27,39,.18);z-index:40}
.calendar-view-menu button{width:100%;border:0;background:transparent;text-align:left;padding:9px 10px;border-radius:8px;font-weight:800;color:var(--text)}
.calendar-view-menu button:hover{background:var(--surface-2)}
.calendar-grid.week-view{grid-template-rows:minmax(590px,1fr)}
.calendar-grid.week-view .calendar-day{min-height:590px}
.calendar-agenda{padding:16px 18px 100px}
.agenda-day{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}
.agenda-date strong,.agenda-date span{display:block}.agenda-date span{color:var(--muted);font-size:.82rem;margin-top:2px}
.agenda-items{display:flex;flex-direction:column;gap:7px}
.agenda-event{display:grid;grid-template-columns:78px minmax(0,1fr);gap:12px;border:0;border-radius:12px;text-align:left;padding:10px 12px}
.agenda-event strong,.agenda-event small{display:block}.agenda-event small{opacity:.9;margin-top:2px}
.agenda-time{font-weight:900}.calendar-agenda-empty{padding:48px;text-align:center;color:var(--muted)}
.calendar-layer.toggleable{grid-template-columns:18px 27px 1fr;cursor:pointer}.calendar-layer.toggleable input{accent-color:var(--primary)}
.mini-nav{display:flex!important;gap:4px}.mini-nav button{border:0;background:transparent;color:var(--muted);font-size:1.1rem;font-weight:900}
.cal-event{border-left-width:4px!important;border-left-style:solid!important}
.cal-avatar,.member-dot,.event-source-dot,.event-person-pill i,.attendee-chip span,.cal-colour{background-clip:padding-box}
.cal-colour{background:transparent;border:4px solid currentColor;color:#8d76b8}.cal-colour.default-colour{display:grid;place-items:center;color:var(--primary);font-size:1rem;font-weight:900}
.cal-colour.kf-4285f4{border-color:#4285F4}.cal-colour.kf-d50000{border-color:#D50000}.cal-colour.kf-f6bf26{border-color:#F6BF26}.cal-colour.kf-8e24aa{border-color:#8E24AA}
.cal-colour.kf-e67c73{border-color:#E67C73}.cal-colour.kf-33b679{border-color:#33B679}.cal-colour.kf-f4511e{border-color:#F4511E}.cal-colour.kf-039be5{border-color:#039BE5}
.cal-colour.kf-ad7c4c{border-color:#AD7C4C}.cal-colour.kf-d25c80{border-color:#D25C80}.cal-colour.kf-616161{border-color:#616161}.cal-colour.kf-66c0c6{border-color:#66C0C6}
.cal-colour.kf-675e94{border-color:#675E94}.cal-colour.kf-7986cb{border-color:#7986CB}.cal-colour.kf-0b8043{border-color:#0B8043}.cal-colour.kf-ffb07c{border-color:#FFB07C}.cal-colour.kf-1a2421{border-color:#1A2421}
.cal-colour.selected{box-shadow:0 0 0 3px rgba(76,131,234,.22)}
.event-location-panel{border:1px solid var(--line);background:var(--surface-2);border-radius:16px;padding:14px;margin:0 0 14px}
.event-location-panel .text-btn{padding-left:0}.import-edit-note{padding:10px 12px;border-radius:12px;background:#fff7e8;color:#72552a;font-size:.8rem;margin-bottom:12px}

/* Budget v2 full-width workspace */
.budget-view-wide{max-width:none!important;padding-left:18px!important;padding-right:18px!important}
.budget-workspace{display:grid;grid-template-columns:260px minmax(0,1fr);gap:0;border:1px solid var(--line);border-radius:22px;overflow:hidden;background:var(--surface);min-height:760px}
.budget-rail{background:#f4f1f7;border-right:1px solid var(--line);padding:18px 12px}
.budget-rail-heading{padding:4px 8px 16px}.budget-rail-heading strong,.budget-rail-heading span{display:block}.budget-rail-heading strong{font-size:1.35rem}.budget-rail-heading span{font-size:.78rem;color:var(--muted);margin-top:2px}
.budget-rail-nav{display:flex;flex-direction:column;gap:3px}.budget-rail-label{padding:15px 9px 5px;text-transform:uppercase;letter-spacing:.06em;font-size:.67rem;font-weight:900;color:var(--muted)}
.budget-nav-btn{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:7px;width:100%;border:0;background:transparent;border-radius:11px;padding:9px 10px;color:var(--text);text-align:left}
.budget-nav-btn>span{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:rgba(141,118,184,.11);color:var(--primary-deep);font-weight:900}
.budget-nav-btn strong{font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.budget-nav-btn em{font-style:normal;color:var(--muted);font-size:.72rem}
.budget-nav-btn:hover{background:rgba(255,255,255,.75)}.budget-nav-btn.active{background:var(--surface);box-shadow:0 3px 12px rgba(40,31,51,.06);color:var(--primary-deep)}
.budget-work-main{min-width:0;padding:22px 24px 36px;background:var(--bg)}
.budget-work-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:18px}.budget-work-top h2{margin:2px 0 4px;font-size:2rem;letter-spacing:-.04em}.budget-work-top p{margin:0;color:var(--muted)}
.budget-top-actions{display:flex;gap:8px;flex-wrap:wrap}
.budget-dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:16px}
.budget-metric{display:grid;grid-template-columns:42px 1fr;gap:11px;align-items:center;border:1px solid var(--line);border-radius:17px;background:var(--surface);padding:14px}
.budget-metric>span{width:40px;height:40px;border-radius:13px;background:var(--primary-soft);color:var(--primary-deep);display:grid;place-items:center;font-weight:900;font-size:1.1rem}
.budget-metric small,.budget-metric strong,.budget-metric em{display:block}.budget-metric small{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.budget-metric strong{font-size:1.18rem;margin:2px 0}.budget-metric em{font-style:normal;font-size:.72rem;color:var(--muted)}
.budget-overview-panel{border:1px solid var(--line);background:var(--surface);border-radius:18px;padding:15px;margin-bottom:14px}.budget-overview-panel h3{margin:0}.budget-overview-panel .section-head{margin-bottom:10px}
.budget-area-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.budget-section-card{display:grid;grid-template-columns:38px 1fr 18px;gap:10px;align-items:center;border:1px solid var(--line);background:var(--surface-2);border-radius:14px;padding:12px;text-align:left;color:var(--text)}
.budget-section-card>span{width:36px;height:36px;border-radius:11px;background:var(--primary-soft);color:var(--primary-deep);display:grid;place-items:center;font-weight:900}.budget-section-card strong,.budget-section-card small{display:block}.budget-section-card small{color:var(--muted);margin-top:2px}.budget-section-card b{color:var(--muted);font-size:1.2rem}
.budget-goals-workspace{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.budget-goal-year{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:14px}.budget-goal-year-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.budget-goal-year-head h3{margin:0}.budget-goal-year-head span{font-size:.72rem;color:var(--muted)}
.budget-goal-list{display:flex;flex-direction:column}.budget-goal-row{display:grid;grid-template-columns:1fr 34px;gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}.budget-goal-row:last-child{border-bottom:0}.budget-goal-row label{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:flex-start}.budget-goal-row input{accent-color:var(--primary);margin-top:2px}.budget-goal-row.done span{text-decoration:line-through;color:var(--muted)}.budget-goal-edit{border:0;background:transparent;color:var(--muted);font-weight:900}
.budget-section-workspace{min-width:0}.budget-inline-metrics{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.budget-inline-metrics article{min-width:150px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:10px 12px}.budget-inline-metrics small,.budget-inline-metrics strong{display:block}.budget-inline-metrics small{color:var(--muted);font-size:.68rem}.budget-inline-metrics strong{margin-top:2px}
.budget-table-wrap{overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:16px;max-width:100%}.budget-data-table{width:100%;border-collapse:collapse;min-width:780px}.budget-data-table th{position:sticky;top:0;background:#f3f0f6;text-align:left;padding:10px 12px;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap}.budget-data-table td{padding:11px 12px;border-bottom:1px solid var(--line);font-size:.82rem;vertical-align:top;max-width:300px}.budget-data-table tr:last-child td{border-bottom:0}.budget-data-row:hover td{background:var(--surface-2)}.budget-actions-col,.budget-row-actions{width:80px;text-align:right}.budget-row-edit{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:6px 9px;font-weight:800;color:var(--primary-deep)}.budget-table-empty{text-align:center!important;color:var(--muted);padding:38px!important}
.budget-source-workspace{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:12px}.budget-source-card,.budget-archive-note{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:16px}.budget-source-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px}.budget-source-card>span{width:42px;height:42px;border-radius:13px;background:var(--primary-soft);display:grid;place-items:center;color:var(--primary-deep);font-weight:900}.budget-source-card p,.budget-archive-note p{color:var(--muted);margin:3px 0}.budget-source-card small{color:var(--muted)}
.budget-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.budget-imported-fields{border-top:1px solid var(--line);margin-top:10px;padding-top:12px}.budget-imported-fields h3{margin:0 0 9px;font-size:1rem}.budget-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
@media(max-width:1180px){.budget-dashboard-grid{grid-template-columns:repeat(2,1fr)}.budget-area-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.budget-workspace{grid-template-columns:1fr}.budget-rail{border-right:0;border-bottom:1px solid var(--line);padding:10px}.budget-rail-heading{display:none}.budget-rail-nav{flex-direction:row;overflow-x:auto}.budget-rail-label{display:none}.budget-nav-btn{min-width:160px}.budget-work-main{padding:16px}.budget-work-top{align-items:flex-start;flex-direction:column}.budget-goals-workspace{grid-template-columns:1fr}.budget-source-workspace{grid-template-columns:1fr}}
@media(max-width:760px){.agenda-day{grid-template-columns:1fr}.agenda-date{display:flex;gap:7px}.budget-view-wide{padding:8px!important}.budget-dashboard-grid{grid-template-columns:1fr 1fr}.budget-area-grid{grid-template-columns:1fr}.budget-edit-grid{grid-template-columns:1fr}.budget-source-card{grid-template-columns:40px 1fr}.budget-source-card .primary{grid-column:1/-1}.budget-work-main{padding:12px}}
.kf-3f51b5{background:#3F51B5!important;color:#fff!important}.member-kf-3f51b5{border-left-color:#3F51B5!important}
.cal-colour.kf-3f51b5{border-color:#3F51B5}
.place-save-btn{margin-top:8px}

.layer-check.family{background:#8D76B8}


/* Meal Plan v2 */
.meal-board{min-width:0}
.meal-board-toolbar{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px 16px;margin-bottom:14px}
.meal-nav,.meal-actions{display:flex;gap:8px;align-items:center}.meal-board-title{text-align:center}.meal-board-title h2{margin:2px 0 0;font-size:1.55rem}
.meal-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:start}
.meal-day{border:1px solid var(--line);background:var(--surface);border-radius:16px;overflow:hidden;min-width:0}.meal-day.today{box-shadow:0 0 0 2px rgba(76,131,234,.28)}
.meal-day-head{display:flex;justify-content:space-between;align-items:center;padding:10px 11px;border-bottom:1px solid var(--line);background:var(--surface-2)}.meal-day-head span{font-size:.75rem;color:var(--muted);font-weight:800}.meal-day-head strong{font-size:.8rem}
.meal-slot{min-height:120px;padding:10px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:6px}.meal-slot:last-child{border-bottom:0}.meal-slot.filled{background:rgba(141,118,184,.055)}.meal-slot-name{text-transform:uppercase;font-size:.64rem;letter-spacing:.06em;font-weight:900;color:var(--muted)}.meal-slot strong{font-size:.86rem}.meal-slot small{font-size:.72rem;color:var(--muted)}
.meal-add{margin:auto 0;border:1px dashed var(--line);border-radius:10px;background:transparent;color:var(--primary-deep);padding:8px;font-weight:800}.meal-slot-actions{display:flex;gap:7px;margin-top:auto}.meal-slot-actions button{border:0;background:transparent;color:var(--primary-strong);font-weight:800;font-size:.72rem;padding:0}.meal-slot-actions .meal-remove{color:#a44}
.meal-recipe-section{margin-top:18px}.meal-recipe-tray{max-height:150px;overflow:auto}.plan-source-tabs{display:flex;gap:8px;margin-bottom:14px}.plan-source.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-deep)}

/* Training calendar */
.training-calendar-shell{display:grid;grid-template-columns:minmax(0,1fr) 300px;background:var(--surface);border:1px solid var(--line);border-radius:22px;overflow:hidden;min-height:720px;position:relative}
.training-calendar-main{min-width:0}.training-sidebar{display:block}
.training-person-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:.72rem;font-weight:900;border:2px solid var(--surface);margin-left:-5px}.training-person-avatar:first-child{margin-left:0}.training-person-ben{background:#E85D5D!important}.training-person-eliza{background:#66C0C6!important;color:#182027!important}
.training-event{width:100%;min-height:24px;border:0;border-left:4px solid transparent;border-radius:5px;padding:3px 5px;text-align:left;font-size:.69rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#1d2630;background:#f2f3f5}.training-event span{margin-right:3px}.training-event b{font-weight:900;margin-right:3px}
.training-running{background:#e8f2ff!important;border-color:#4285F4!important;color:#1d4f88!important}.training-gym{background:#f1e9fb!important;border-color:#8E24AA!important;color:#60227c!important}.training-karate{background:#fff0e8!important;border-color:#F4511E!important;color:#8e3e19!important}
.training-event.status-completed{opacity:.62;text-decoration:line-through}.training-event.status-skipped{opacity:.48}
.training-filter-row{display:grid;grid-template-columns:18px 30px 1fr;gap:8px;align-items:center;padding:8px 6px;border-radius:10px}.training-filter-row:hover{background:var(--surface-2)}.training-filter-row input{accent-color:var(--primary)}.training-filter-row>span{width:25px;height:25px;border-radius:8px;display:grid;place-items:center}
.activity-filter-icon{font-size:.9rem;border-left:3px solid transparent}.training-legend{margin-top:16px;font-size:.68rem;color:var(--muted);display:flex;gap:5px;align-items:center;flex-wrap:wrap}.training-legend .status-dot{position:static;width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.planned{background:#4c83ea}.status-dot.completed{background:#48a36a}.status-dot.skipped{background:#999}
.training-fab{position:absolute;right:316px;bottom:18px;border:0;border-radius:28px;height:54px;padding:0 20px;background:#4c83ea;color:#fff;font-weight:900;box-shadow:0 10px 28px rgba(43,95,190,.25)}
.training-agenda{padding:16px 18px 90px}.training-agenda-event{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line)!important;border-radius:13px!important;padding:10px 12px!important;text-align:left!important}.training-agenda-event strong,.training-agenda-event small{display:block}.training-agenda-event small{font-size:.75rem;opacity:.82;margin-top:2px}.training-agenda-event em{font-style:normal;font-size:.68rem;font-weight:900;background:rgba(255,255,255,.72);border-radius:999px;padding:4px 7px}
.training-agenda-icon{font-size:1.25rem}.training-status{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:.72rem;font-weight:900}.training-status.status-planned{background:#e8f2ff;color:#1d4f88}.training-status.status-completed{background:#e7f5ec;color:#277a44}.training-status.status-modified{background:#fff5df;color:#7a5a16}.training-status.status-skipped{background:#eee;color:#666}.training-detail-status{margin-bottom:10px}.training-detail-metrics{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.training-detail-metrics span{background:var(--surface-2);border-radius:12px;padding:9px 11px;min-width:95px}.training-detail-metrics small,.training-detail-metrics strong{display:block}.training-detail-metrics small{font-size:.68rem;color:var(--muted)}

/* Budget v3 */
.budget-status{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:.68rem;font-weight:900;white-space:nowrap}.budget-status.complete{background:#e6f5eb;color:#257242}.budget-status.pending{background:#f1eff3;color:#685f70}.budget-status.attention{background:#fff0e6;color:#98471d}.budget-status.neutral{background:#edf2f8;color:#49627d}.budget-status-detail{display:block;margin-top:3px;color:var(--muted);font-size:.66rem}
.budget-table-toolbar{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.budget-search-wrap{position:relative;flex:1;max-width:480px}.budget-search-wrap>span{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted)}.budget-search-wrap input{padding-left:32px}.budget-table-toolbar select{min-width:170px}
.budget-create-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;max-height:62vh;overflow:auto}.budget-create-choice{display:grid;grid-template-columns:40px minmax(0,1fr) 20px;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:12px;color:var(--text)}.budget-create-choice:hover{background:var(--surface-2);border-color:var(--primary)}.budget-create-choice>span{width:38px;height:38px;border-radius:11px;background:var(--primary-soft);color:var(--primary-deep);display:grid;place-items:center;font-weight:900}.budget-create-choice strong,.budget-create-choice small{display:block}.budget-create-choice small{font-size:.72rem;color:var(--muted);margin-top:2px;line-height:1.3}.budget-create-choice b{color:var(--muted);font-size:1.2rem}
.budget-form-intro{display:grid;grid-template-columns:42px 1fr;gap:10px;align-items:center;background:var(--primary-soft);border-radius:14px;padding:11px;margin-bottom:14px}.budget-form-intro>span{width:38px;height:38px;border-radius:11px;background:var(--surface);display:grid;place-items:center;color:var(--primary-deep);font-weight:900}.budget-form-intro strong,.budget-form-intro small{display:block}.budget-form-intro small{color:var(--muted);font-size:.74rem;margin-top:2px}

/* notification bell */
.notification-btn{position:relative}.notification-badge{position:absolute;right:-2px;top:-3px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#D50000;color:#fff;font-size:.62rem;font-weight:900;display:grid;place-items:center;border:2px solid var(--bg)}.notification-badge[hidden]{display:none}
.notification-list{display:flex;flex-direction:column;gap:7px;max-height:62vh;overflow:auto}.notification-item{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:start;border:1px solid var(--line);border-radius:13px;background:var(--surface);padding:10px;text-align:left;color:var(--text)}.notification-item.unread{background:var(--primary-soft);border-color:rgba(141,118,184,.28)}.notification-icon{width:36px;height:36px;border-radius:11px;background:var(--surface-2);display:grid;place-items:center}.notification-item strong,.notification-item small,.notification-item span{display:block}.notification-item small{color:var(--muted);margin-top:2px}.notification-time{font-size:.65rem!important;white-space:nowrap}.notification-empty{padding:32px;text-align:center;color:var(--muted)}

@media(max-width:1150px){
  .meal-week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.training-calendar-shell{grid-template-columns:1fr}.training-sidebar{display:none}.training-fab{right:18px}
}
@media(max-width:760px){
  .meal-board-toolbar{grid-template-columns:1fr;gap:10px}.meal-board-title{text-align:left;grid-row:1}.meal-nav{grid-row:2}.meal-actions{grid-row:3;flex-wrap:wrap}.meal-week-grid{grid-template-columns:1fr}.meal-slot{min-height:96px}
  .training-fab{position:fixed;right:16px;bottom:calc(var(--bottom) + 14px + env(safe-area-inset-bottom));height:50px}.training-grid .calendar-day{min-height:96px}.training-agenda{padding:10px 8px 90px}
  .budget-table-toolbar{align-items:stretch;flex-direction:column}.budget-search-wrap{max-width:none}.budget-table-toolbar select{width:100%}.budget-create-grid{grid-template-columns:1fr}
}

.notification-toolbar{display:flex;justify-content:space-between;gap:8px;margin-bottom:10px}
.notification-pref-list{display:flex;flex-direction:column;margin-bottom:14px}
.notification-pref-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}
.notification-pref-row:last-child{border-bottom:0}.notification-pref-row strong,.notification-pref-row small{display:block}.notification-pref-row small{font-size:.72rem;color:var(--muted);margin-top:2px}.notification-pref-row input{width:20px;height:20px;accent-color:var(--primary)}
.family-safety-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;background:#fff2f2;border:1px solid #efcaca;border-radius:18px;padding:14px 16px}.family-safety-bar strong,.family-safety-bar span{display:block}.family-safety-bar span{font-size:.76rem;color:#7e5555;margin-top:2px}.sos-btn{width:58px;height:58px;border:0;border-radius:50%;background:#c93838;color:#fff;font-weight:900;letter-spacing:.04em;box-shadow:0 6px 18px rgba(174,41,41,.22)}

.family-map-shell{background:var(--surface);border:1px solid var(--line);border-radius:22px;overflow:hidden}
.family-map-head{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line)}.family-map-head h2{margin:2px 0 2px}.family-map-head p{margin:0;color:var(--muted);font-size:.78rem}
.family-map{height:430px;width:100%;background:#e9edf1}.map-fallback{height:100%;display:grid;place-items:center;color:var(--muted)}
.member-location-actions{display:flex;align-items:center;gap:8px}.member-location-actions .presence-dot{position:static}
.history-map{height:430px;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:10px 0}.location-history-toolbar{display:flex;justify-content:flex-end}.location-history-toolbar select{margin-left:6px}
.leaflet-container{font-family:inherit}.leaflet-popup-content{font-family:inherit}
@media(max-width:760px){.family-map{height:330px}.history-map{height:340px}.family-map-head{align-items:flex-start;flex-direction:column}}
