:root{color:#2f332c;--paper:#f8f5ef;--ink:#2f332c;--muted:#72796d;--line:#e5e6dc;--accent:#b94f36;--sage:#54705b;--sage-pale:#e8eee3;--white:#fffefa;background:#eaece3;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:0 0;border:0;min-height:42px}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline-offset:3px;outline:3px solid #ad874c}a{color:var(--accent)}input,select,textarea{background:var(--white);border:1px solid #d9ddd1;border-radius:11px;width:100%;min-width:0;max-width:100%;padding:12px}textarea{resize:vertical}label{margin:12px 0;font-size:12px;font-weight:600;display:block}label>input,label>select,label>textarea{margin-top:7px}input[type=number]{font-variant-numeric:tabular-nums}input[type=checkbox]{width:20px;min-width:20px;height:20px;accent-color:var(--sage);margin:0}h1,h2,h3,p{overflow-wrap:anywhere}h1{letter-spacing:-1px;margin:10px 0 15px;font-family:Georgia,Songti SC,serif;font-size:38px;font-weight:500;line-height:1.1}h2{margin:15px 0 10px;font-size:19px;font-weight:650}h3{font-size:15px}p{line-height:1.65}small{font-size:11px}.app-shell{background:var(--paper);max-width:850px;min-height:100dvh;margin:auto;position:relative;box-shadow:0 10px 60px #34423012}.app-shell.wide{max-width:1280px}.app-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:22px 28px;display:flex}.wordmark{letter-spacing:-.7px;white-space:nowrap;align-items:center;gap:9px;font-size:20px;font-weight:650;display:flex}.brand-mark{background:var(--accent);width:34px;height:34px;color:var(--white);border-radius:10px;place-items:center;font-size:22px;font-weight:400;display:grid}.header-actions{align-items:center;gap:9px;display:flex}.role{text-transform:uppercase;color:var(--sage);letter-spacing:1px;font-size:10px}.avatar{background:var(--sage-pale);border-radius:50%;width:37px;height:37px;min-height:37px;font-weight:700}main{padding:23px 28px 120px}.page-heading{margin:0 0 20px}.page-heading p{color:var(--muted);margin:0;font-size:13px}.eyebrow{letter-spacing:1.5px;text-transform:uppercase;color:var(--sage);margin:5px 0;font-size:10px;font-weight:700;display:block}.muted,.hint{color:var(--muted)}.hint{font-size:11px;line-height:1.6}.row{justify-content:space-between;align-items:center;gap:12px;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.actions.end{justify-content:flex-end}.primary,.secondary,.file-button{border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:12px 17px;font-size:12px;font-weight:650;text-decoration:none;display:inline-flex}.primary{background:var(--accent);color:var(--white)}.secondary,.file-button{background:var(--sage-pale);color:var(--sage)}.primary:hover{background:#a84630}.secondary:hover{background:#dce6d4}.full{width:100%}.text-button{color:var(--sage);padding:8px 3px;font-size:12px;font-weight:650}.danger{color:#ab4834}.icon{border:1px solid var(--line);width:36px;height:36px;min-height:36px;color:var(--sage);border-radius:50%;flex-shrink:0;font-family:Georgia,serif;font-size:17px}.small{min-height:35px;padding:8px 11px}.date-meal{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin:20px 0;display:grid}.date-meal label{min-width:0;margin:0}.field-label{color:var(--muted);font-size:10px;font-weight:650;display:block}.date-select,.date-meal select{text-align:left;background:var(--white);border:1px solid #d9ddd1;border-radius:11px;width:100%;min-height:44px;margin-top:6px;padding:12px;font-size:13px}.calendar-anchor{min-width:0;position:relative}.calendar{z-index:8;background:var(--white);border:1px solid var(--line);border-radius:14px;width:300px;max-width:calc(100vw - 44px);padding:10px;position:absolute;top:70px;left:0;box-shadow:0 10px 35px #0002}.calendar-grid{text-align:center;grid-template-columns:repeat(7,1fr);display:grid}.calendar-grid button{border-radius:9px;min-height:38px;padding:4px}.calendar-grid small{color:var(--muted);padding:8px 0}.calendar-grid .past{color:#bfc1b7;opacity:.65;background:#f0f0e9;text-decoration:line-through}.calendar-grid .outside{opacity:.5}.calendar-grid .selected{background:var(--sage);color:#fff}.chips{scrollbar-width:none;gap:7px;margin:18px 0;display:flex;overflow:auto}.chips button{white-space:nowrap;border:1px solid var(--line);color:var(--muted);border-radius:30px;min-height:38px;padding:8px 16px;font-size:12px}.chips .active{background:var(--ink);color:var(--white);border-color:var(--ink)}.search input{font-size:14px;font-weight:400}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:14px 0;display:grid}.dish-card{background:var(--white);border:1px solid #e5e3d7;border-radius:20px;overflow:hidden}.dish-art{background:#edeadd;place-items:center;height:154px;display:grid;overflow:hidden}.dish-art.beef{background:#e6e9dd}.dish-art.spinach{background:#e5ecdf}.dish-art svg{filter:drop-shadow(0 5px 5px #43402214);width:100%;height:145px}.dish-photo{object-fit:cover;width:100%;height:154px;display:block}.dish-info{padding:16px}.dish-info h2{letter-spacing:.7px;margin:0;font-size:21px}.dish-info .english{color:var(--muted);margin:5px 0;font-size:11px}.dish-info .core{margin:12px 0 4px;font-size:12px}.monthly{color:var(--muted);margin:4px 0 15px;font-size:11px}.recipe-time{color:var(--ink);font-size:11px}.people{align-items:center;gap:7px;margin:7px 0;font-size:11px;display:flex}.people input{width:62px;margin:0;padding:10px 6px}.bottom-nav{width:min(850px,100%);padding:8px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#f8f5eff5;justify-content:space-around;gap:4px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.wide .bottom-nav{width:min(1280px,100%)}.bottom-nav button{color:#8b9383;flex-direction:column;align-items:center;gap:2px;min-width:64px;padding:5px 10px;font-size:10px;display:flex;position:relative}.bottom-nav button.active{color:var(--accent)}.nav-symbol{font-size:25px;line-height:1.1}.nav-badge{border:2px solid var(--paper);background:var(--accent);color:#fff;border-radius:12px;place-items:center;min-width:17px;height:17px;font-size:9px;display:grid;position:absolute;top:0;right:10px}.card,.empty{border:1px solid var(--line);background:var(--white);border-radius:17px;margin:13px 0;padding:19px}.card h2{margin-top:3px}.empty{text-align:center;color:var(--muted);padding:35px 20px;line-height:1.7}.check{align-items:center;gap:9px;margin:13px 0;font-size:12px;font-weight:400;line-height:1.5;display:flex}.check span{flex:1}.status,.accepted{color:var(--sage);font-size:12px}.estimate{background:var(--sage-pale);color:var(--sage);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:16px;font-size:12px;display:flex}.estimate strong{font-size:22px}.estimate small{width:100%}.agenda{margin:30px 0}.agenda>h2{font-family:Georgia,serif;font-size:25px}.overlay{z-index:30;background:#28302566;justify-content:center;align-items:center;padding:22px;display:flex;position:fixed;inset:0}.dialog{background:var(--paper);overscroll-behavior:contain;border-radius:24px;width:100%;max-width:660px;max-height:92dvh;padding:22px;overflow:auto;box-shadow:0 15px 60px #0003}.dialog>header{z-index:3;background:var(--paper);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:10px 0 14px;display:flex;position:sticky;top:-22px}.dialog>header>b{font-size:16px}.method{padding-left:23px;line-height:1.8}.method li{padding:8px 0}.toast{z-index:60;background:var(--ink);color:#fff;border-radius:13px;align-items:center;gap:15px;max-width:min(90vw,530px);padding:12px 17px;line-height:1.5;display:flex;position:fixed;bottom:105px;left:50%;transform:translate(-50%);box-shadow:0 5px 25px #0002}.toast button{color:#edc58b;white-space:nowrap;min-height:30px;font-weight:700}.saving{z-index:70;background:var(--sage);color:#fff;border-radius:20px;padding:6px 14px;font-size:11px;position:fixed;top:8px;left:50%;transform:translate(-50%)}.warning{color:#8f4635;background:#f8e6db;border-radius:11px;padding:12px 15px;font-size:12px;line-height:1.6}.auth-shell{background:var(--paper);border-radius:23px;max-width:430px;margin:8dvh auto;padding:30px;box-shadow:0 12px 50px #34423018}.auth-shell .wordmark{margin-bottom:35px}.auth-shell h1{font-size:34px}.auth-shell form>.primary{margin-top:15px}.accept-all{min-height:54px;margin:13px 0 20px;font-size:17px;box-shadow:0 4px 14px #b94f3620}.portion-row{grid-template-columns:1.5fr .8fr .8fr 1fr;align-items:center;gap:10px;font-size:12px;display:grid}.portion-row b{font-weight:600}.portion-row small{color:var(--muted);margin-top:4px;display:block}.portion-entry{border-bottom:1px solid var(--line);padding:13px 0}.portion-row input{padding:10px 7px}.table-head{color:var(--muted);font-size:10px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid label{min-width:0}.editor-row,.paste-panel{background:var(--white);border:1px solid #d8dece;border-radius:14px;margin:13px 0;padding:16px}.paste-panel{background:#eeeee4;margin-bottom:24px}.paste-panel p{color:var(--muted);font-size:12px}.paste-panel h2{margin-top:0}.file-button{cursor:pointer;margin:5px 0;position:relative;overflow:hidden}.file-button input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.editor-save{background:var(--paper);border-top:1px solid var(--line);z-index:2;margin-top:20px;padding:17px 0;position:sticky;bottom:-22px}.drag-handle{color:var(--sage);cursor:grab;touch-action:none;min-width:40px;padding:0 7px;font-size:28px}fieldset{border:1px solid var(--line);border-radius:10px;margin-top:15px;padding:10px}legend{color:var(--muted);font-size:11px}.fridge-hero{padding:19px;font-size:17px;display:block}.fridge-hero span{margin-top:7px;font-size:11px;font-weight:400;display:block}.staple-link{color:var(--sage);text-align:center;text-underline-offset:3px;width:100%;padding:12px 0;font-size:11px;text-decoration:underline;display:block}.included-meals{flex-wrap:wrap;gap:6px;margin:12px 0;display:flex}.included-meals span{background:#edeedf;border-radius:20px;padding:6px 9px;font-size:10px}.shop-section{margin:22px 0 30px}.shop-section>.row{border-bottom:1px solid #ced6c6}.aisle{text-transform:uppercase;letter-spacing:1px;color:var(--sage);margin:20px 0 5px;font-size:11px}.shopping-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:14px 2px;display:flex;position:relative}.shopping-check{color:#8e9d80;border:1px solid #bfc9b5;border-radius:50%;flex-shrink:0;width:28px;height:28px;min-height:28px;font-size:15px}.shopping-name{flex:1;min-width:0}.shopping-name b{font-size:14px;font-weight:600}.shopping-name small{color:var(--muted);margin-top:5px;display:block}.row-menu{position:relative}.row-menu>summary{cursor:pointer;padding:8px 4px;font-size:20px;list-style:none}.row-menu>div{z-index:7;background:var(--white);border:1px solid var(--line);border-radius:12px;width:200px;padding:5px;position:absolute;top:35px;right:0;box-shadow:0 5px 20px #0001}.row-menu button{text-align:left;width:100%;padding:10px;font-size:12px;display:block}.row-menu button:hover{background:var(--sage-pale)}.fridge-row,.pantry-row{border-bottom:1px solid var(--line);padding:14px 0}.fridge-row h3{margin:0 0 12px}.selected.secondary{background:var(--sage);color:#fff}.fridge-finish{margin-top:20px;font-size:16px;position:sticky;bottom:-22px}.pantry-row{justify-content:space-between;align-items:center;gap:9px;display:flex}.pantry-row .check{flex:1;margin:0}.pantry-row .text-button{max-width:130px;font-size:11px}.choice-card{text-align:left;background:var(--white);border:1px solid #cfd9c6;border-radius:13px;width:100%;margin:13px 0;padding:17px;display:block}.choice-card small{color:var(--muted);margin-top:8px;line-height:1.6;display:block}.on-table{background:var(--white);border:1px solid var(--line);border-radius:17px;padding:16px 18px}.table-dish{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:13px 0;display:flex}.table-dish>div{flex:1}.table-dish b{font-size:17px}.table-dish small{color:var(--muted);margin-top:7px;display:block}.appliances{flex-wrap:wrap;gap:7px;padding-top:16px;font-size:10px;display:flex}.appliances span{color:var(--muted);padding:6px 0}.appliances b{background:var(--sage-pale);border-radius:20px;padding:6px 10px;font-weight:500}.cooking-summary{background:#eeeede;border-radius:15px;justify-content:space-between;align-items:center;gap:12px;margin:20px 0;padding:18px;display:flex}.cooking-summary span{color:var(--sage);font-size:11px;display:block}.cooking-summary strong{margin-top:7px;font-size:28px;font-weight:600;display:block}.cooking-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:24px;display:grid}.timeline-pane{position:sticky;top:20px}.timeline-scroll{background:var(--white);border:1px solid var(--line);border-radius:14px;max-height:600px;padding:12px 5px 25px;overflow:auto}.timeline-chart{position:relative}.time-axis{height:34px;position:relative}.time-axis small{color:var(--muted);white-space:nowrap;font-size:9px;position:absolute;top:0}.timeline-lane{align-items:start;height:62px;display:flex;position:relative}.timeline-lane>b{background:var(--white);z-index:2;flex-shrink:0;width:115px;padding:4px 6px;font-size:11px;position:sticky;left:0}.timeline-track{height:30px;position:absolute;top:7px;left:120px;right:0}.time-block{color:#fff;border:1px solid #ffffffa0;border-radius:6px;place-items:center;height:26px;min-height:26px;padding:0 3px;scroll-margin:15px;font-size:12px;font-weight:700;display:grid;position:absolute}.time-block.todo{background:#b9503d}.time-block.cleanup{background:#698b9c}.time-block.done{color:#78836d;background:#d7dbd0}.ready-line{align-items:center;height:35px;font-size:9px;display:flex}.ready-line b{background:var(--white);z-index:2;flex-shrink:0;width:120px;padding:5px;position:sticky;left:0}.ready-line span{color:var(--sage);white-space:nowrap}.legend{color:var(--muted);gap:13px;font-size:10px;display:flex}.legend span:before{content:"";border-radius:50%;width:7px;height:7px;margin-right:4px;display:inline-block}.legend .red:before{background:#b9503d}.legend .blue:before{background:#698b9c}.legend .grey:before{background:#c5cbbd}.step-card{background:var(--white);border:1px solid var(--line);border-radius:16px;margin:13px 0;padding:17px;scroll-margin:20px}.step-heading{align-items:flex-start;gap:10px;display:flex}.step-heading>div{flex:1}.step-heading h3{margin:0 0 5px;font-size:19px;font-weight:750;line-height:1.4}.step-heading small,.step-heading>span:last-child{color:var(--muted);font-size:10px;line-height:1.5}.step-number{background:var(--ink);color:#fff;border-radius:9px;place-items:center;min-width:30px;height:30px;padding:0 5px;font-size:14px;font-weight:750;display:grid}.step-card>p{font-size:13px;line-height:1.8}.step-card.current{border-color:#b6473d;box-shadow:0 0 0 1px #b6473d33}.step-card.done{color:#848a7c;background:#eceee8;border-color:#d7dcd0}.step-card.done .step-number{color:#737b6d;background:#d3d8cc}.step-action{border-radius:11px;min-height:42px;padding:10px 17px;font-size:12px;font-weight:750}.step-action.available{color:#fff;background:#b6473d}.step-action.blocked,.step-action.blocked:disabled{opacity:1;color:#858982;background:#e6e8e0}.step-action.finished,.step-action.finished:disabled{opacity:1;color:#fff;background:#3e7852}.mobile-plan-tabs{display:none}.member-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:15px 0;display:flex}.member-row small{color:var(--muted);margin-top:5px;display:block}.member-row select{width:auto;padding:7px;font-size:11px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}details summary{cursor:pointer;min-height:35px;padding:8px 0}@media (max-width:720px){.app-header{padding:17px 20px}.wordmark{font-size:18px}.header-actions{gap:7px}.header-actions>.text-button{font-size:10px}.role{font-size:8px}main{padding:20px 20px 110px}h1{font-size:33px}.recipe-grid{grid-template-columns:1fr;gap:14px}.dish-art,.dish-photo{height:150px}.dish-info{padding:17px}.dish-info h2{font-size:22px}.overlay{align-items:flex-end;padding:0}.dialog{max-height:94dvh;padding:20px 20px calc(25px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0}.dialog>header{top:-20px}.auth-shell{margin:5dvh 16px;padding:24px}.cooking-columns{display:block}.timeline-pane{position:static}.show-timeline .steps-pane,.show-steps .timeline-pane{display:none}.mobile-plan-tabs{display:flex}.cooking-summary{padding:16px}.cooking-summary strong{font-size:25px}.step-heading h3{font-size:19px}.portion-row{grid-template-columns:1.4fr .8fr .8fr 1fr;gap:7px}.portion-row span,.portion-row b{font-size:11px}.form-grid.three{gap:8px}.member-row{flex-direction:column;align-items:start}.menu-tools{align-items:center}.toast{width:max-content;max-width:calc(100vw - 32px);font-size:12px;bottom:98px}.table-dish b{font-size:16px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}.step-ingredients{flex-wrap:wrap;gap:6px;margin:12px 0;display:flex}.step-ingredients span{color:#58634e;background:#eeeede;border-radius:7px;padding:5px 8px;font-size:10px}.step-card.done .step-ingredients span{color:#89917f;background:#e2e6dc}.step-heading h3{color:var(--muted);font-size:13px;font-weight:600}.step-card>p.step-instruction{margin:14px 0;font-size:19px;font-weight:600;line-height:1.65}.step-card{scroll-margin-top:12px}.step-card.done>p.step-instruction{font-weight:400}.removed-reason{color:var(--muted);margin-top:4px;display:block}.timeline-tools{gap:8px;font-size:11px}.timeline-tools .actions{align-items:center;gap:9px}.timeline-tools .secondary{min-width:40px;padding:4px 12px;font-size:21px}.timeline-lane{height:86px}.ready-marker{border-left:2px dotted var(--sage);pointer-events:none;z-index:1;height:60px;position:absolute;top:-7px}.ready-marker>span{white-space:nowrap;color:var(--sage);background:var(--white);padding:2px 4px;font-size:10px;font-weight:650;position:absolute;top:42px;left:5px}.timeline-expanded{z-index:25;background:var(--paper);border-radius:18px;padding:16px 20px;position:fixed;inset:16px;overflow:auto;box-shadow:0 0 0 100vmax #26332388;display:block!important}.timeline-expanded .timeline-scroll{height:calc(100dvh - 225px);max-height:calc(100dvh - 225px)}@media (max-width:720px){.step-heading h3{font-size:13px}.step-card>p.step-instruction{font-size:18px}.timeline-expanded{padding:14px;inset:8px}.timeline-tools{flex-wrap:wrap}.bottom-nav button{font-size:10px}}.recipe-groups{flex-wrap:wrap;margin-bottom:16px}.menu-tools{flex-wrap:wrap}.dish-info label{margin-bottom:0}.catalogue-search{border:1px solid var(--line);background:var(--white);border-radius:15px;margin:16px 0;padding:16px}.grow{flex:1;min-width:0}.catalogue-result{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px 0;display:flex}.catalogue-result p{margin:4px 0;font-size:12px}.catalogue-result h3{margin:0}.catalogue-result small{color:var(--muted)}.catalogue-preview{max-height:55dvh;padding:8px 0;overflow:auto}.catalogue-preview>.primary{position:sticky;bottom:0}.install-card{border:1px solid var(--line);background:var(--white);border-radius:15px;margin:0 0 22px;overflow:hidden}.install-card>summary{align-items:center;gap:12px;min-height:64px;padding:12px 15px;list-style:none;display:flex}.install-card>summary::-webkit-details-marker{display:none}.install-card>summary:after{content:"›";color:var(--sage);margin-left:auto;font-size:24px;transform:rotate(90deg)}.install-card[open]>summary:after{transform:rotate(-90deg)}.install-card>summary img{border-radius:10px;flex-shrink:0}.install-card>summary strong{font-size:13px;display:block}.install-card>summary small{color:var(--muted);margin-top:4px;font-size:11px;line-height:1.5;display:block}.install-instructions{overflow-wrap:anywhere;padding:0 17px 15px;font-size:13px;line-height:1.7}.install-instructions ol{padding-left:22px}.install-instructions li{padding:4px 0}.auth-shell>.install-card{margin:24px 0 0}@media (display-mode:standalone){.install-card{display:none}}.app-header{padding-top:calc(22px + env(safe-area-inset-top));flex-wrap:wrap}.header-actions{margin-left:auto}main{padding-bottom:calc(120px + env(safe-area-inset-bottom))}@media (max-width:720px){.app-header{padding-top:calc(17px + env(safe-area-inset-top))}main{padding-bottom:calc(110px + env(safe-area-inset-bottom))}input,select,textarea,.date-meal select,.member-row select,.search input{font-size:16px}.icon,.avatar{width:44px;min-width:44px;height:44px;min-height:44px}.bottom-nav button{min-height:48px}.auth-shell{margin-top:calc(5dvh + env(safe-area-inset-top));margin-bottom:calc(5dvh + env(safe-area-inset-bottom))}.install-instructions{font-size:14px}}@media (max-width:380px){.form-grid.three{grid-template-columns:1fr}.header-actions{flex-wrap:wrap}.app-header{row-gap:12px}}
