:root{--ink:#203129;--muted:#69756f;--paper:#f7f4ec;--card:#fffefa;--line:#dfded5;--green:#31644e;--green-dark:#234c3a;--green-soft:#e6efe8;--coral:#bb5a45;--amber:#dc9c35;--shadow:0 12px 35px rgba(36,49,42,.09);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(circle at 85% -8%,#e5eee4 0,transparent 28rem),var(--paper)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;clip:rect(0,0,0,0);white-space:nowrap;border:0}.modal-open,.sr-only{overflow:hidden}.app-shell{width:min(100%,760px);margin:auto;min-height:100dvh;padding-bottom:92px}.app-header{height:76px;justify-content:space-between;padding:12px 18px}.app-header,.brand{display:flex;align-items:center}.brand{gap:10px}.brand>span{display:grid;place-items:center;width:38px;height:38px;border-radius:13px;background:var(--green);color:white}.brand div{display:grid}.brand strong{font-family:Georgia,serif;font-size:18px}.brand small{font-size:11px;color:var(--muted);letter-spacing:.04em}.actor-switcher{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:999px;padding:7px 10px}.actor-switcher select{border:0;background:transparent;font-weight:700;font-size:13px;outline:none}.actor-dot{width:8px;height:8px;border-radius:50%;background:#75a184;box-shadow:0 0 0 3px #e6f0e8}main{padding:0 16px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin:18px 2px 20px}.section-heading h1{font-family:Georgia,serif;font-size:34px;line-height:1.05;letter-spacing:-.025em;margin:3px 0 7px}.section-heading p{margin:0;color:var(--muted);font-size:14px}.eyebrow{text-transform:uppercase!important;letter-spacing:.13em;font-size:10px!important;font-weight:800!important;color:var(--green)!important}.effort-legend{display:flex;justify-content:flex-end;gap:14px;margin:-6px 2px 12px;color:var(--muted);font-size:11px}.effort-legend span{display:flex;align-items:center;gap:5px}.effort-legend i{width:7px;height:7px;border-radius:50%;background:var(--amber)}.effort-legend .effort-normal{background:#7a9b84}.effort-legend .effort-open{background:#8080a8}.meal-list{display:grid;grid-gap:12px;gap:12px}.meal-card{background:var(--card);border:1px solid rgba(60,75,66,.14);border-radius:22px;overflow:hidden;box-shadow:0 4px 14px rgba(41,55,47,.035)}.today-card{border-color:#9db6a5;box-shadow:0 9px 26px rgba(50,83,64,.1)}.meal-card-main{display:grid;grid-template-columns:54px 1fr 20px;width:100%;text-align:left;border:0;background:none;padding:17px 14px 13px 11px;grid-gap:12px;gap:12px}.day-rail{display:flex;flex-direction:column;align-items:center;border-right:1px solid var(--line);padding-right:10px}.day-name{font-weight:800;font-size:13px}.day-date{font-size:10px;color:var(--muted);margin:2px 0 12px}.effort-mark{width:4px;height:23px;border-radius:4px;background:#7a9b84}.effort-mark.effort-busy{background:var(--amber)}.effort-mark.effort-open{background:#8080a8}.meal-copy{min-width:0}.badge-row{display:flex;gap:6px;align-items:center}.effort-badge,.status-badge{display:inline-flex;align-items:center;gap:3px;border-radius:99px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:4px 7px}.status-badge svg{width:11px;height:11px}.status-proposed{background:#eeeafa;color:#5d4d91}.status-accepted{background:var(--green-soft);color:var(--green-dark)}.status-overridden{background:#e7edf6;color:#385b78}.status-rejected{background:#f8e9e4;color:#94513e}.effort-badge{background:#f1efe9;color:#6c706c}.meal-copy h2{font-family:Georgia,serif;font-size:21px;line-height:1.15;margin:9px 0 5px}.meal-copy>p{font-size:13px;line-height:1.45;color:var(--muted);margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.meal-meta{display:flex;gap:12px;margin-top:10px;color:#52665b;font-size:11px;font-weight:700}.meal-meta span{display:flex;align-items:center;gap:4px}.meal-meta svg{width:14px;height:14px}.changed-by{display:block;color:#929991;margin-top:7px;font-size:9px}.card-chevron{align-self:center;color:#a0a69f;width:18px}.meal-actions{display:flex;gap:7px;padding:10px 12px;border-top:1px solid #ecebe5;background:#fdfcf8}.button{border:0;border-radius:11px;padding:9px 13px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:800;min-height:39px}.button svg{width:16px;height:16px}.button-primary{background:var(--green);color:white}.button-primary:hover{background:var(--green-dark)}.button-quiet{background:#eeeee9;color:#43524a}.button-text{margin-left:auto;background:transparent;color:var(--green);padding-inline:8px}.button-danger{background:#f6e7e3;color:#9b4332}.button-large{width:100%;font-size:14px;padding:13px}.later-section{margin-top:25px}.inventory-groups h2,.later-section>h2{font-family:Georgia,serif;font-size:18px;margin:0 2px 10px}.later-list{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}.later-meal{display:grid;grid-template-columns:52px 1fr 9px 17px;align-items:center;grid-gap:10px;gap:10px;width:100%;background:none;border:0;border-bottom:1px solid #ecebe5;text-align:left;padding:13px 12px}.later-meal:last-child{border-bottom:0}.later-date,.later-title{display:grid}.later-date small,.later-title small{color:var(--muted);font-size:10px;margin-top:2px}.later-title strong{font-size:13px}.status-dot{width:8px;height:8px;border-radius:50%}.later-meal>svg{width:16px;color:#999}.bottom-nav{position:fixed;z-index:20;bottom:max(12px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(calc(100% - 28px),500px);height:67px;border:1px solid rgba(40,52,45,.16);border-radius:23px;background:rgba(255,254,250,.94);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 10px 35px rgba(34,47,40,.18);display:grid;grid-template-columns:1fr 1fr;padding:6px}.bottom-nav button{position:relative;border:0;background:none;border-radius:17px;color:#788079;display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:800}.bottom-nav button.active{background:var(--green-soft);color:var(--green-dark)}.bottom-nav i{position:absolute;top:4px;right:20%;background:var(--coral);color:white;border-radius:99px;padding:1px 5px;font-style:normal;font-size:9px}.inventory-filter{display:flex;gap:6px;padding:4px;background:#eae8e1;border-radius:14px;margin-bottom:22px}.inventory-filter button{flex:1 1;border:0;background:transparent;border-radius:11px;padding:9px;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:6px}.inventory-filter button.active{background:var(--card);box-shadow:0 2px 7px rgba(0,0,0,.06)}.inventory-filter span{background:#deddd6;border-radius:99px;padding:1px 6px;font-size:10px}.inventory-filter svg{width:15px}.inventory-groups{display:grid;grid-gap:24px;gap:24px}.inventory-groups h2 span{color:var(--muted);font-family:Inter,sans-serif;font-size:10px;background:#e7e5dd;padding:3px 6px;border-radius:99px}.inventory-list{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}.inventory-item{display:grid;grid-template-columns:35px 1fr 38px;align-items:center;padding:10px;border-bottom:1px solid #ecebe5}.inventory-item:last-child{border:0}.soon-toggle{width:31px;height:31px;border-radius:10px;border:1px solid var(--line);background:#f3f1eb;color:#969b96}.soon-toggle svg{width:16px}.soon-toggle.active{background:#dfede1;color:var(--green);border-color:#b9d0bf}.inventory-copy{display:grid;text-align:left;background:none;border:0;padding:2px 8px}.inventory-copy strong{font-size:13px}.inventory-copy span{font-size:11px;color:var(--muted);margin-top:2px}.inventory-copy small{font-size:8px;color:#9b9f9b;margin-top:3px}.icon-button{display:grid;place-items:center;border:0;background:transparent;border-radius:10px;width:38px;height:38px}.icon-button:hover{background:#eeede7}.empty-state{text-align:center;padding:60px 20px;color:var(--muted)}.empty-state>svg{width:40px;height:40px;color:#8aaa92}.empty-state h2{color:var(--ink);font-family:Georgia,serif}.add-item{white-space:nowrap}.detail-backdrop,.modal-backdrop{position:fixed;inset:0;z-index:50;background:rgba(20,28,24,.45);display:flex;justify-content:center;align-items:flex-end}.detail-sheet{width:min(100%,720px);height:100dvh;background:var(--paper);overflow:auto;position:relative}.detail-header{position:-webkit-sticky;position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;height:64px;padding:10px 12px;background:rgba(247,244,236,.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid rgba(80,90,84,.1);font-size:12px;font-weight:800}.detail-body{padding:12px 20px 110px}.detail-title{text-align:center;padding:14px 0 17px}.detail-title h1{font-family:Georgia,serif;font-size:33px;line-height:1.08;margin:12px 0 8px}.detail-title>p{color:var(--muted);line-height:1.55;margin:0 auto;max-width:560px}.detail-time{display:flex;justify-content:center;gap:8px;margin-top:18px}.detail-time>span{display:grid;grid-template-columns:22px auto;grid-template-rows:auto auto;text-align:left;background:#eceae3;border-radius:12px;padding:8px 13px}.detail-time svg{grid-row:1/3;align-self:center;width:17px}.detail-time small{font-size:8px;text-transform:uppercase;color:var(--muted)}.detail-time strong{font-size:11px}.rationale{background:#e6eee4;border-radius:16px;padding:14px 16px;margin:8px 0 16px}.rationale strong{font-size:12px}.rationale p{font-size:11px;line-height:1.5;color:#597060;margin:4px 0 0}.serving-grid{display:grid;grid-gap:8px;gap:8px}.serving-grid>div{display:grid;grid-template-columns:32px 1fr;grid-column-gap:8px;column-gap:8px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px}.serving-grid>div>span{grid-row:1/3;display:grid;place-items:center;width:28px;height:28px;background:#eeece5;border-radius:9px}.serving-grid strong{font-size:11px}.serving-grid p{font-size:11px;color:var(--muted);line-height:1.45;margin:2px 0}.recipe-section,.similar-section{margin-top:28px}.recipe-section h2,.similar-section h2{font-family:Georgia,serif;font-size:24px}.recipe-section h3{font-size:11px;text-transform:uppercase;letter-spacing:.1em;margin-top:20px}.ingredient-list{list-style:none;margin:0;padding:0;column-count:2;column-gap:24px}.ingredient-list li{page-break-inside:avoid;break-inside:avoid;border-bottom:1px solid var(--line);font-size:12px;padding:8px 2px}.instruction-list{list-style:none;padding:0;display:grid;grid-gap:14px;gap:14px}.instruction-list li{display:grid;grid-template-columns:29px 1fr;grid-gap:10px;gap:10px}.instruction-list span{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--green);color:#fff;font-size:11px;font-weight:800}.instruction-list p{margin:3px 0;font-size:12px;line-height:1.55}.similar-section a{display:flex;justify-content:space-between;color:var(--green);font-size:12px;font-weight:700;padding:12px 3px;border-bottom:1px solid var(--line);text-decoration:none}.detail-updated{text-align:center;color:#939a94;font-size:9px;margin-top:28px}.detail-footer{position:fixed;bottom:0;width:min(100%,720px);background:linear-gradient(transparent,#f7f4ec 22%);padding:30px 18px max(12px,env(safe-area-inset-bottom))}.modal-card{width:min(calc(100% - 20px),500px);max-height:calc(100dvh - 30px);overflow:auto;background:var(--paper);border-radius:24px 24px 18px 18px;box-shadow:var(--shadow);padding:18px;margin-bottom:max(10px,env(safe-area-inset-bottom))}.modal-card>header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:17px}.modal-card h2{font-family:Georgia,serif;font-size:24px;margin:2px 0 3px}.modal-card header p{font-size:11px;color:var(--muted);margin:0}.form-stack{display:grid;grid-gap:15px;gap:15px}.form-stack>label{display:grid;grid-gap:6px;gap:6px}.form-stack label>span,.form-stack legend{font-size:11px;font-weight:800}.form-stack label>span small{font-weight:500;color:var(--muted)}.form-stack input:not([type=checkbox]):not([type=radio]),.form-stack select,.form-stack textarea{width:100%;border:1px solid #cccec8;border-radius:11px;background:#fffefa;padding:11px 12px;outline:none;font-size:14px}.form-stack input:focus,.form-stack select:focus,.form-stack textarea:focus{border-color:#679077;box-shadow:0 0 0 3px rgba(72,121,91,.12)}.form-stack fieldset{border:0;padding:0;margin:0}.segmented{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px;gap:4px;background:#e9e7e0;padding:4px;border-radius:12px;margin-top:6px}.segmented input{position:absolute;opacity:0}.segmented span{display:block;text-align:center;padding:8px;border-radius:9px;font-size:11px}.segmented input:checked+span{background:var(--card);box-shadow:0 2px 5px rgba(0,0,0,.07);color:var(--green)}.check-row{grid-template-columns:23px 1fr!important;align-items:center;background:#e9efe8;padding:12px;border-radius:12px}.check-row input{width:17px;height:17px;accent-color:var(--green)}.check-row span{display:grid}.check-row small{font-weight:400;color:var(--muted);margin-top:2px}.form-hint{font-size:10px;color:var(--muted);margin:0}.form-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:4px}.form-actions .button-danger{margin-right:auto}.toast{position:fixed;z-index:80;left:50%;transform:translateX(-50%);bottom:94px;background:#203129;color:white;padding:11px 16px;border-radius:99px;box-shadow:var(--shadow);display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;white-space:nowrap}.toast svg{width:16px}.spinner{width:14px;height:14px;border:2px solid #ffffff55;border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.notice{background:#f7e9d0;color:#775825;border:1px solid #ead3aa;border-radius:12px;padding:10px;font-size:11px}.notice span{opacity:.75}@keyframes spin{to{transform:rotate(1turn)}}@media(min-width:680px){.app-header{padding-inline:22px}.meal-list{grid-template-columns:1fr 1fr}.section-heading h1{font-size:40px}.detail-sheet{height:calc(100dvh - 24px);margin-top:24px;border-radius:24px 24px 0 0}.modal-backdrop{align-items:center}.modal-card{border-radius:24px}.serving-grid{grid-template-columns:repeat(3,1fr)}.serving-grid>div{display:block}.serving-grid>div>span{margin-bottom:8px}.ingredient-list{column-count:3}}@media(max-width:380px){.section-heading h1{font-size:30px}.meal-card-main{grid-template-columns:48px 1fr 16px;gap:8px}.meal-actions .button{padding-inline:10px}.button-text{font-size:10px}.add-item{padding-inline:10px}.ingredient-list{column-count:1}}@media(prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation-duration:.01ms!important}}.login-shell{min-height:100dvh;display:grid;place-items:center;padding:22px}.login-card{width:min(100%,420px);text-align:center;background:rgba(255,254,250,.86);border:1px solid var(--line);border-radius:28px;padding:32px 24px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.login-mark{margin:0 auto 18px;width:54px;height:54px;display:grid;place-items:center;border-radius:18px;background:var(--green);color:#fff}.login-mark svg{width:27px;height:27px}.login-card h1{font:38px/1.05 Georgia,serif;margin:6px 0 9px}.login-card>p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:1.5;margin:0 auto 25px;max-width:290px}.login-card .form-stack{text-align:left}.login-card>small{display:block;margin-top:18px;color:#929991;font-size:10px}.person-picker{display:grid;grid-template-columns:1fr 1fr;grid-gap:7px;gap:7px;margin-top:7px}.person-picker input{position:absolute;opacity:0}.person-picker span{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:9px;background:#fffefa;font-size:12px;font-weight:800}.person-picker i{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#e9ebe6;color:var(--muted);font-style:normal}.person-picker input:checked+span{border-color:#7ba18a;background:var(--green-soft);color:var(--green)}.person-picker input:checked+span i{background:var(--green);color:#fff}.login-error{background:#f8e6e1;color:#973f2d;border-radius:10px;padding:9px!important;margin:0!important;font-size:11px!important}.login-card .button-large{margin-top:2px}