:root{--ink:#213a33;--muted:#738179;--green:#214f40;--deep:#193f35;--cream:#f7f7f0;--paper:#fff;--line:#e2e7dd;--sage:#eaf0df;--warm:#f9eadc;--red:#a93d32;--shadow:0 12px 40px #223e3212;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--cream);font-size:14px;line-height:1.55}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:9px;padding:9px 14px;background:white;color:var(--ink);font-weight:600;transition:background .15s}button:hover{background:#eff3e9}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--green);border-color:var(--green);color:#fff}button.primary:hover{background:var(--deep)}button.danger{color:var(--red);border-color:#efd0cb}button.quiet{background:transparent;border:0;padding:6px 0;text-align:left;color:inherit;font-weight:400}button.small{font-size:12px;padding:6px 9px}a{color:var(--green)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #c48d48;outline-offset:3px}h1,h2,h3,p{margin:0 0 12px}h1{font:normal 42px/1.12 Georgia,serif;letter-spacing:-1px}h2{font:normal 28px/1.2 Georgia,serif}h3{font-size:17px;line-height:1.3}small,.fine{font-size:11px;line-height:1.6}.muted{color:var(--muted)}.eyebrow{font-size:11px;font-weight:700;letter-spacing:1.8px;color:var(--muted)}.brand-mark{display:inline-grid;place-items:center;width:62px;height:62px;border:1px solid currentColor;border-radius:50%;font:28px Georgia,serif;margin-bottom:24px}.brand-mark.small{width:40px;height:40px;font-size:18px;flex-shrink:0;margin:0}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-card{max-width:550px;width:100%;margin:auto;padding:60px}.auth-card h1{font-size:54px;margin:20px 0}.auth-card>p{max-width:330px}.auth-card button{margin:14px 0 8px}.auth-card .fine{margin-top:38px}.auth-art{background:var(--deep);color:#fff;padding:13vh 10%;position:relative;overflow:hidden}.auth-art>span{font-size:11px;letter-spacing:3px;color:#d5dfbe}.auth-art h2{font-size:66px;margin:25px 0}.auth-art p{color:#d4decf;font-size:17px}.decor-plate{position:absolute;bottom:-170px;right:-140px;width:620px;height:620px;border:2px solid #b6c4a743;border-radius:50%;padding:66px}.decor-plate>div{border:45px solid #b6c4a715;height:100%;border-radius:50%}#shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}#shell[hidden],#auth[hidden]{display:none}.sidebar{background:var(--deep);color:#dde6d4;position:sticky;top:0;height:100vh;padding:34px 24px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:#fff;font:20px Georgia,serif}.brand small{display:block;font:8px "Segoe UI",sans-serif;letter-spacing:1.3px;margin-top:6px;color:#b8c8b4}.sidebar nav{margin-top:45px;display:grid;gap:6px}.sidebar nav a{color:#d6e1d2;text-decoration:none;padding:11px 13px;border-radius:7px;font-size:13px}.sidebar nav a.active{background:#ffffff13;color:#fff;border-left:3px solid #cedcb7;padding-left:10px}.sidebar nav a:hover{background:#ffffff0b}.sidebar-bottom{margin-top:auto;padding-top:35px;font-size:12px;color:#b4c5af;display:grid;gap:3px}.sidebar-bottom p{margin-bottom:4px}.workspace{min-width:0}.topbar{padding:23px 40px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:11px;letter-spacing:1.2px;color:var(--muted)}#user-label{letter-spacing:0;font-size:12px}main{padding:35px 38px;max-width:1780px;margin:auto}footer{padding:0 38px 28px;color:var(--muted);font-size:11px;line-height:1.8}footer a{color:inherit}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;margin:2px 0 24px}.page-heading p{color:var(--muted);margin:8px 0 0}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:20px 0}.toolbar label{margin:0}.toolbar input,.toolbar select{width:auto;padding:8px 10px}.week-nav{display:flex;align-items:center;gap:8px;white-space:nowrap}.week-nav input{width:145px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:24px 0}.stat{border:1px solid var(--line);background:#fff;border-radius:12px;padding:18px 22px;display:flex;align-items:center;gap:18px}.stat-value{font:31px Georgia,serif;color:var(--green);white-space:nowrap}.stat p{margin:0;font-size:12px}.stat small{color:var(--muted);display:block}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin:22px 0}.day-card{background:#fff;border:1px solid var(--line);border-radius:11px;min-height:355px;display:flex;flex-direction:column;overflow:hidden}.day-card.is-today{border-color:#8fa37d;box-shadow:0 0 0 1px #8fa37d}.day-head{background:#f0f3e9;padding:13px 13px 10px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:6px;align-items:flex-start}.day-head strong{display:block;font-size:12px}.day-head span{font-size:11px;color:var(--muted)}.day-weather{font-size:12px;white-space:nowrap}.day-body{padding:15px 13px;flex:1;display:flex;flex-direction:column;align-items:flex-start}.day-body h3{font:20px/1.18 Georgia,serif;overflow-wrap:anywhere;margin:10px 0 12px}.day-body .empty-title{color:#7e8877}.day-body .metadata{font-size:11px;color:var(--muted);line-height:1.65;margin:12px 0}.day-body .metadata strong{color:var(--ink);font-weight:500}.day-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto;padding-top:18px}.day-actions button{font-size:10px;padding:5px 7px}.pill{display:inline-block;font-size:10px;padding:3px 7px;border-radius:5px;background:var(--sage);color:#49613c;line-height:1.5}.pill.warm{background:var(--warm);color:#87603f}.pill.gray{background:#edf0ed;color:#738179}.pill.error{background:#f8e5e1;color:var(--red)}.pills{display:flex;gap:5px;flex-wrap:wrap}.status{font-size:11px;text-transform:uppercase;letter-spacing:.9px;margin-bottom:8px}.notice{border:1px solid #e5dfbf;background:#fcf9eb;border-radius:9px;padding:14px 18px;font-size:12px;margin:14px 0}.notice.error{border-color:#edc8c0;background:#fff1ed;color:#863d33}.notice.info{background:#eef3e8;border-color:#dbe5d1;color:#3d5a39}.notice p:last-child{margin:0}.notice ul{margin:8px 0;padding-left:18px}.grid{display:grid;gap:20px;grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.panel{padding:24px;background:white;border:1px solid var(--line);border-radius:12px;min-width:0}.panel h2{font-size:25px}.panel h3{margin-top:2px}.meal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:16px;margin:24px 0}.meal-card{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;display:flex;flex-direction:column}.meal-card-top{padding:15px 20px;background:#eef2e6;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.meal-card-body{padding:21px;flex:1}.meal-card h3{font:26px/1.1 Georgia,serif;margin:8px 0 15px}.meal-card p{font-size:12px;color:var(--muted)}.meal-card-actions{padding:0 20px 18px;display:flex;gap:7px;flex-wrap:wrap}.empty{padding:55px 35px;text-align:center;background:#fff;border:1px dashed #c7d3bc;border-radius:14px;margin:24px 0}.empty h2{font-size:32px}.empty p{color:var(--muted);max-width:500px;margin:14px auto}.form-grid{display:grid;gap:15px;grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.full{grid-column:1/-1}label{display:block;font-size:12px;font-weight:600;color:#485a4c;margin-bottom:14px}label small{display:block;font-weight:400;color:var(--muted);margin-top:5px}input:not([type=checkbox]),select,textarea{display:block;width:100%;border:1px solid #d7dfd0;border-radius:7px;padding:9px 11px;background:#fff;color:var(--ink);margin-top:5px;font-weight:400}textarea{resize:vertical;min-height:85px}input[type=checkbox]{accent-color:var(--green);width:16px;height:16px;vertical-align:middle;margin:0 8px 0 0}.check{display:flex;gap:3px;align-items:center;font-weight:400;margin:6px 0}.check small{display:inline}.form-grid label{margin:0}.form-section{border-top:1px solid var(--line);margin-top:24px;padding-top:21px}.form-section h3{font:23px Georgia,serif;margin-bottom:15px}.section-actions{margin-top:22px;display:flex;gap:9px;justify-content:flex-end}.inline{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.inline>*{margin:0}.inline label{flex:1;min-width:140px}.inline button{margin-top:5px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:12px}.table th{text-align:left;padding:10px;border-bottom:1px solid var(--line);color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.6px}.table td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}.table tr:last-child td{border-bottom:0}.table .quantity{white-space:nowrap;font-variant-numeric:tabular-nums}.ingredient-row{display:grid;grid-template-columns:2fr .65fr .7fr 1fr 1.5fr 30px;gap:7px;margin:8px 0;align-items:center}.ingredient-row input,.ingredient-row select{font-size:12px;margin:0;padding:8px}.ingredient-row button{padding:6px}.ingredient-head{font-size:10px;text-transform:uppercase;color:var(--muted)}.person-row{padding:15px 0;border-bottom:1px solid var(--line)}.person-row:last-child{border:0}.person-prefs{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}.person-prefs label{margin:0}.recipe-text{white-space:pre-wrap;line-height:1.7;font-size:14px}.recipe-ingredients{margin:14px 0;padding-left:22px}.recipe-ingredients li{margin:7px 0}.recipe-facts{display:flex;gap:16px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:22px;color:var(--muted);font-size:12px}.data-list{list-style:none;padding:0;margin:0}.data-list li{padding:14px 0;border-bottom:1px solid var(--line)}.data-list li:last-child{border:0}.data-list p{margin:0}.data-list small{color:var(--muted)}.event-row{display:grid;grid-template-columns:115px 1fr auto;gap:15px;padding:16px 0;border-bottom:1px solid var(--line);align-items:center}.event-row p{margin:0}.event-row small{color:var(--muted)}details{width:100%;font-size:11px;color:var(--muted);margin-top:8px}details summary{cursor:pointer}details p{margin:8px 0}.right{text-align:right}.nowrap{white-space:nowrap}.grow{flex:1}.checked-row{opacity:.55}.checked-row .item-name{text-decoration:line-through}.toolbar .spacer{flex:1}.codebox{background:#f1f4ed;padding:14px;border-radius:7px;overflow-wrap:anywhere;white-space:pre-wrap;font:12px/1.6 ui-monospace,monospace;max-height:220px;overflow:auto}.danger-zone{border-color:#edd5cc}.subheading{font-size:12px;color:var(--muted);margin:22px 0 12px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(120px);opacity:0;pointer-events:none;background:var(--deep);color:#fff;padding:13px 22px;border-radius:10px;box-shadow:var(--shadow);z-index:100;max-width:min(680px,90vw);transition:.2s}#toast.show{transform:translateX(-50%);opacity:1}#toast.error{background:#7c372e}dialog{border:1px solid var(--line);border-radius:14px;padding:0;max-height:90vh;width:min(960px,94vw);box-shadow:var(--shadow);color:var(--ink)}dialog::backdrop{background:#172f28a8;backdrop-filter:blur(3px)}#modal-body{padding:30px}.modal-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:22px}.modal-head h2{font-size:32px}.modal-head button{padding:3px 11px;font-size:22px}.kitchen{padding:4vw;min-height:100vh;background:var(--deep);color:#fff}.kitchen header{max-width:1600px;margin:auto}.kitchen h1{font-size:clamp(36px,5vw,80px)}.kitchen .eyebrow,.kitchen footer,.kitchen #screen-status{color:#ccd8bd}.kitchen main{padding:28px 0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:18px;max-width:1600px}.screen-day{padding:25px 18px;border:1px solid #ffffff25;border-radius:12px;min-height:200px}.screen-day p{color:#c4d3b6;font-size:13px}.screen-day h2{font-size:clamp(20px,2.1vw,36px)}.screen-day.today{background:#e9efd9;color:var(--deep)}.screen-day.today p{color:#4e6b3e}.kitchen footer{max-width:1600px;margin:auto;padding:15px 0}.skeleton{padding:60px 0;color:var(--muted)}body.busy{cursor:progress}.hidden{display:none!important}
@media(min-width:1800px){.day-card{min-height:390px}.day-body h3{font-size:24px}.day-head{padding:16px}.day-body{padding:18px}.day-actions button{font-size:12px}.day-body .metadata{font-size:12px}}
@media(max-width:1200px){.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.day-card{min-height:290px}.page-heading{align-items:flex-start;flex-direction:column}.stats{gap:10px}.stat{padding:16px;gap:12px}.stat-value{font-size:26px}.kitchen main{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:850px){#shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:18px 20px;display:block}.brand{font-size:21px}.sidebar nav{display:flex;overflow:auto;gap:3px;margin:18px -5px 0;padding-bottom:3px}.sidebar nav a{white-space:nowrap;padding:8px 11px;font-size:12px}.sidebar-bottom{display:none}.topbar{padding:14px 23px}main{padding:26px 23px}.week-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.grid{grid-template-columns:1fr}.grid.three{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.stats .stat:last-child{grid-column:1/-1}.stat-value{font-size:30px}footer{padding:10px 23px}.auth-art{display:none}.auth-shell{grid-template-columns:1fr}.auth-card{padding:40px}.auth-card h1{font-size:46px}.ingredient-row{grid-template-columns:2fr 1fr 1fr 30px}.ingredient-row [data-ing=category],.ingredient-row [data-ing=note]{grid-column:span 2}.ingredient-head{display:none}.form-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:550px){h1{font-size:36px}.week-grid{grid-template-columns:1fr}.day-card{min-height:0}.day-body h3{font-size:28px}.day-head{padding:12px 17px}.day-body{padding:17px}.day-actions{padding-top:10px}.day-actions button{font-size:12px;padding:8px}.day-body .metadata{font-size:12px}.day-weather{font-size:15px}.form-grid,.form-grid.three{grid-template-columns:1fr}.stats{gap:8px}.stat{padding:14px;display:block}.stat p{margin-top:5px}.stats .stat:last-child{display:flex}.event-row{grid-template-columns:80px 1fr}.event-row>button{grid-column:2}.week-nav{flex-wrap:wrap}.kitchen main{grid-template-columns:repeat(2,minmax(0,1fr))}.screen-day{min-height:150px;padding:20px 14px}#modal-body{padding:20px}.panel{padding:20px}.toolbar{gap:7px}.toolbar button{font-size:12px}.toolbar select{max-width:160px}}
/* Let the mobile navigation scroll within its grid cell instead of widening it. */
@media(max-width:850px){#shell{grid-template-columns:minmax(0,1fr)}.sidebar{min-width:0}}
@media print{body{background:white;font-size:10px}#shell{display:block}.sidebar,.topbar,.toolbar,.day-actions,button,#toast,dialog,footer,.no-print{display:none!important}main{padding:0;max-width:none}.week-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.day-card{break-inside:avoid;min-height:230px}.day-body h3{font-size:20px}.stats{margin:12px 0}.stat{padding:10px}.page-heading{margin:0 0 15px}h1{font-size:29px}.table tr{break-inside:avoid}.notice{padding:9px 12px}.checked-row{display:none}.panel{padding:12px}}
