:root {--ink:#263e36;--sub:#78867e;--green:#385b47;--deep:#254334;--mint:#e7eee6;--line:#e5e8e0;--bg:#f6f4ee;--white:#fff;--shadow:0 14px 42px rgba(50,65,51,.075)}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #a9caad;outline-offset:2px}.app-shell{max-width:1190px;margin:auto;min-height:100vh;padding:0 32px 104px}.topbar{height:96px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e8e9e2}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:46px;height:46px;display:grid;place-items:center;border-radius:15px;background:#dfead7;color:#577953;font-size:31px;transform:rotate(-12deg)}.brand-name{font-family:Georgia,serif;font-size:30px;font-weight:700;letter-spacing:-1.4px;line-height:1}.brand-name span{color:#d99b5b}.brand-tag{font-size:10px;color:#8c9990;letter-spacing:.06em;margin-top:6px}.sync-pill{display:flex;align-items:center;gap:9px;border:1px solid #e4e7db;border-radius:999px;background:#fff;padding:11px 15px;color:#556f5e;font-size:12px;font-weight:650;white-space:nowrap}.sync-dot{width:8px;height:8px;background:#dca557;border-radius:50%}.sync-pill.online .sync-dot{background:#4ba66c}.chevron{color:#8a9d90;font-size:18px;line-height:10px}.view{display:none;animation:appear .16s ease}.view.active{display:block}@keyframes appear{from{opacity:.35;transform:translateY(5px)}to{opacity:1;transform:none}}.page-intro{display:flex;justify-content:space-between;align-items:center;padding:43px 0 34px}.eyebrow{font-size:10px;color:#bc996f;letter-spacing:.155em;font-weight:800;margin-bottom:13px}h1{font-family:Georgia,serif;font-size:clamp(31px,3.5vw,49px);font-weight:500;letter-spacing:-1.6px;line-height:1.14;margin:0 0 12px}h1 em{font-style:italic;color:#789477}p{line-height:1.65}.page-intro p,.section-head p{color:#7e8980;font-size:14px;margin:0}.intro-sticker{width:104px;height:104px;background:#fff0d7;border:1px solid #ffebc1;border-radius:35px;transform:rotate(12deg);display:grid;place-items:center;font-size:58px;box-shadow:5px 8px 0 #eae8d9}.week-toolbar{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:10px 0 19px}.toolbar-title{display:flex;flex-direction:column;gap:4px}.mini-label{font-size:10px;letter-spacing:.12em;color:#8a9b8d;font-weight:800}.toolbar-title strong{font-family:Georgia,serif;font-size:23px;font-weight:600}.week-controls{display:flex;gap:8px;align-items:center}.icon-btn,.small-btn{border:1px solid #e6e8e0;background:#fff;height:37px;border-radius:11px;color:#536d58}.icon-btn{width:37px;font-size:25px;line-height:1}.small-btn{padding:0 15px;font-size:12px;font-weight:700}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}.day-card{min-width:0;border:1px solid #e6e8df;border-radius:17px;background:#fff;overflow:hidden;box-shadow:0 6px 21px rgba(32,52,30,.033);display:flex;flex-direction:column}.day-card.today{border-color:#91ad90;box-shadow:0 0 0 2px #dfeadd}.day-heading{display:flex;align-items:center;justify-content:space-between;padding:14px 13px 11px;gap:5px}.day-heading strong{font-size:13px}.day-heading span{font-size:11px;color:#a7aca1;white-space:nowrap}.day-image{height:126px;background:#edf2e9;position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center}.day-image img{width:100%;height:100%;object-fit:cover}.day-image .placeholder-art{font-size:38px}.day-body{padding:13px;display:flex;flex-direction:column;gap:7px;min-height:119px;flex:1}.day-body strong{font-size:12px;line-height:1.4;overflow-wrap:anywhere}.day-body small{font-size:10px;color:#9aa69e}.day-action{background:none;border:0;padding:0;margin-top:auto;font-weight:800;color:#638468;font-size:11px;text-align:left}.day-empty .day-image{background:#f4f5f0}.day-empty .day-body strong{color:#a3ada3;font-weight:600}.remove-day{background:#fff9;border:0;border-radius:9px;position:absolute;top:7px;right:7px;width:26px;height:26px;font-size:17px;color:#4b5d4e}.bottom-tip{margin-top:24px;border:1px dashed #dce3d5;border-radius:12px;padding:17px 19px;background:#eef2e9;color:#6b856e;font-size:12px}.bottom-tip span{font-size:18px;margin-right:7px}.tabbar{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);height:76px;padding:8px 15px calc(8px + env(safe-area-inset-bottom));width:min(100%,1190px);display:flex;align-items:center;justify-content:center;gap:5px;background:rgba(255,255,255,.95);backdrop-filter:blur(16px);border:1px solid #e8eae2;border-bottom:0;border-radius:19px 19px 0 0;box-shadow:0 -8px 45px #34452a0a}.tab{border:0;background:none;display:flex;flex-direction:row;align-items:center;gap:8px;color:#849188;padding:12px 24px;border-radius:12px;font-size:12px;font-weight:650}.tab-icon{font-size:22px;line-height:1}.tab.active{color:#365b46;background:#e8f0e6}.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;padding:48px 0 27px}.section-head h1{margin-bottom:9px}.primary-btn,.secondary-btn{border:0;border-radius:12px;padding:14px 20px;font-size:13px;font-weight:800;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary-btn{background:#355a43;color:#fff}.primary-btn:hover{background:#264634}.primary-btn span{font-size:20px;line-height:12px}.secondary-btn{background:#e6eee5;color:#44634b}.filterbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:25px}.search-wrap{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);padding:0 16px;border-radius:13px;flex:1}.search-wrap span{font-size:24px;color:#849d89}.search-wrap input{border:0;background:none;outline:none;min-width:0;flex:1;height:45px;font-size:13px}.filterbar select{background:#fff;border:1px solid var(--line);border-radius:13px;padding:0 14px;color:#566658;font-size:12px;max-width:200px}.recipe-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding-bottom:20px}.recipe-tile{border:1px solid var(--line);border-radius:19px;overflow:hidden;background:#fff;box-shadow:0 9px 24px #283c3007;cursor:pointer;transition:transform .15s}.recipe-tile:hover{transform:translateY(-3px)}.recipe-photo{height:169px;background:#e8ede3;display:grid;place-items:center;position:relative;overflow:hidden}.recipe-photo img{width:100%;height:100%;object-fit:cover}.recipe-photo .placeholder-art{font-size:57px}.recipe-info{padding:16px}.recipe-cat{font-size:10px;text-transform:uppercase;font-weight:800;letter-spacing:.08em;color:#91a38d}.recipe-info h3{margin:7px 0 12px;font-size:16px;font-family:Georgia,serif;font-weight:650;min-height:36px}.recipe-meta{display:flex;gap:13px;color:#87958b;font-size:11px}.empty-state{padding:42px;text-align:center;background:#fff;border:1px dashed #d8e0d3;border-radius:16px;color:#819082;grid-column:1/-1}.empty-state .empty-emoji{font-size:48px;display:block;margin-bottom:10px}.empty-state h3{color:#415749;margin:3px 0 5px}.empty-state p{font-size:13px;margin:3px 0 17px}.shopping-progress{background:#fff;border:1px solid var(--line);padding:17px 20px;border-radius:15px;margin:0 0 19px}.progress-header{display:flex;justify-content:space-between;font-size:12px;color:#5c7563;margin-bottom:12px}.progress-header span{font-weight:700;color:#95a495}.progress-track{height:8px;background:#edf1eb;border-radius:8px;overflow:hidden}.progress-fill{height:100%;width:0%;background:#76a37b;transition:width .2s;border-radius:8px}.shopping-columns{display:grid;grid-template-columns:1fr 1fr;gap:19px;align-items:start}.shopping-panel{min-height:280px;border:1px solid var(--line);background:#fff;border-radius:18px;padding:23px 23px 16px}.list-title{display:flex;align-items:center;gap:12px;padding-bottom:20px;border-bottom:1px solid #ecede8;margin-bottom:9px}.circle-icon{height:45px;width:45px;border-radius:15px;display:grid;place-items:center;background:#e5f0e7;font-size:23px}.circle-icon.pink{background:#f7e9df}.list-title h2{font-size:15px;margin:0 0 3px;font-weight:800}.list-title p{margin:0;color:#a2ada2;font-size:11px}.check-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid #f0f1ec;min-height:45px}.check-row:last-child{border-bottom:none}.check-row input[type=checkbox]{appearance:none;width:20px;height:20px;min-width:20px;border:2px solid #d5ded2;border-radius:6px;margin:0;display:grid;place-items:center;cursor:pointer}.check-row input:checked{background:#709e77;border-color:#709e77}.check-row input:checked:after{content:'✓';font-weight:800;color:#fff;font-size:13px}.check-row .item-name{flex:1;font-size:13px;color:#4b5a50;line-height:1.4;overflow-wrap:anywhere}.check-row.done .item-name{text-decoration:line-through;color:#aab5a8}.item-amount{font-weight:750;margin-right:7px}.delete-extra{border:0;background:none;color:#b6bcb4;font-size:20px;padding:3px 5px}.delete-extra:hover{color:#ba6363}.add-extra-form{display:flex;gap:7px;padding-top:10px;padding-bottom:7px}.add-extra-form input{flex:1;min-width:0;border:1px solid #e3e8df;border-radius:10px;padding:11px 12px;font-size:13px;background:#fbfcfa}.add-square{background:#3c624a;color:#fff;border:0;border-radius:10px;width:41px;font-size:23px}.list-empty{padding:27px 8px;text-align:center;font-size:12px;color:#a1aea1;line-height:1.7}.shopping-footer{font-size:12px;color:#8c9a8c;margin-top:20px;text-align:center}.shopping-footer span{color:#6d9c6c;font-size:15px}.settings-lead{font-size:14px;color:#879486;max-width:650px;margin-bottom:25px}.view#view-settings{padding-top:47px;max-width:840px}.settings-panel{background:#fff;padding:25px;border:1px solid var(--line);border-radius:16px;margin-bottom:16px}.settings-panel h2{margin:0 0 10px;font-size:18px}.settings-panel p{color:#8b998c;margin:0 0 18px;font-size:13px}.settings-panel .notice{background:#f4f6f1;border-radius:10px;padding:13px;font-size:12px;margin:10px 0;color:#617866}.setting-buttons{display:flex;gap:10px;flex-wrap:wrap}.settings-panel input:not([type=file]){width:100%;border:1px solid var(--line);border-radius:11px;padding:12px 13px;margin:4px 0 12px}.settings-panel label{font-size:12px;font-weight:750;color:#69806c}.settings-panel .input-group{margin:12px 0}.code-display{background:#f1f5ef;border:1px dashed #a9baa8;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:19px;letter-spacing:.13em;text-align:center;padding:16px;border-radius:12px;margin:10px 0 16px;overflow-wrap:anywhere}.mini-link{border:0;background:none;color:#4c7c55;font-weight:750;font-size:12px;padding:10px 0;text-decoration:underline}.note-panel{background:#e8efe6}.danger-btn{background:#fff1ed;color:#a75e56;border:0;padding:10px 14px;border-radius:10px;font-size:12px;font-weight:750}.overlay{position:fixed;inset:0;z-index:40;background:#1c2b24a8;display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(3px)}.overlay[hidden]{display:none}.modal{max-height:min(92dvh,850px);overflow:auto;width:min(100%,690px);background:#fff;border-radius:22px;box-shadow:0 25px 90px #15281e44;position:relative;padding:29px}.modal h2{margin:0 35px 8px 0;font-family:Georgia,serif;font-weight:550;font-size:27px}.modal-sub{font-size:13px;color:#93a094;margin:0 0 22px}.modal-close{position:absolute;top:17px;right:19px;width:36px;height:36px;display:grid;place-items:center;border-radius:11px;background:#f2f5ef;border:0;font-size:24px;color:#5d765f}.modal h3{font-size:14px}.modal input[type=text],.modal input[type=number],.modal input[type=search],.modal textarea,.modal select{width:100%;border:1px solid #dfe6db;border-radius:11px;padding:12px 13px;background:#fbfcfa;color:#3a4c3c;font-size:14px;outline:none}.modal textarea{min-height:100px;resize:vertical}.modal label{display:block;font-size:12px;font-weight:750;margin-bottom:7px;color:#536c59}.field{margin-bottom:16px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-hint{font-size:11px;color:#a0aa9f;margin-top:6px;line-height:1.6}.image-drop{width:100%;height:155px;border:2px dashed #d9e4d7;border-radius:13px;background:#f5f8f2;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:#6c8f71;cursor:pointer;overflow:hidden}.image-drop img{height:100%;width:100%;object-fit:cover}.modal-actions{display:flex;justify-content:space-between;gap:10px;align-items:center;padding-top:10px}.modal-actions .right-actions{display:flex;gap:10px}.choose-scroll{display:flex;overflow-x:auto;gap:14px;scroll-snap-type:x mandatory;padding:4px 3px 20px}.choose-card{flex:0 0 min(240px,78vw);border-radius:16px;border:1px solid #dfe8dd;scroll-snap-align:start;overflow:hidden;background:#fff;display:flex;flex-direction:column}.choose-card .recipe-photo{height:158px}.choose-card .choose-info{padding:13px;display:flex;flex-direction:column;gap:9px;flex:1}.choose-info h3{font-family:Georgia,serif;font-size:18px;margin:0}.choose-info small{color:#879686}.choose-info button{margin-top:auto;width:100%;padding:12px;background:#375e46;color:white;border:0;border-radius:10px;font-weight:750;font-size:12px}.choose-search{margin-bottom:12px}.recipe-detail-photo{height:236px;background:#e8eee6;border-radius:14px;display:grid;place-items:center;overflow:hidden;margin-bottom:20px}.recipe-detail-photo img{height:100%;width:100%;object-fit:cover}.recipe-detail-photo .placeholder-art{font-size:76px}.detail-badges{display:flex;gap:9px;flex-wrap:wrap;margin:5px 0 16px}.detail-badges span{background:#edf4e9;border-radius:999px;color:#68806a;font-size:12px;padding:8px 11px}.detail-ingredients{padding-left:20px;line-height:1.9;font-size:13px;color:#637666}.detail-instructions{white-space:pre-wrap;font-size:13px;color:#637666;line-height:1.7}.toast{position:fixed;z-index:60;bottom:90px;left:50%;transform:translate(-50%,20px);padding:12px 18px;background:#2d4d38;color:#fff;font-size:13px;border-radius:11px;opacity:0;pointer-events:none;transition:all .2s;box-shadow:var(--shadow);text-align:center;max-width:90vw}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1000px){.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.recipe-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:700px){.app-shell{padding:0 16px 105px}.topbar{height:76px}.brand-name{font-size:25px}.brand-mark{width:39px;height:39px;font-size:25px}.brand-tag{font-size:9px}.sync-pill{padding:9px 11px;font-size:10px}.page-intro{padding:32px 0 28px}.intro-sticker{height:68px;width:68px;border-radius:24px;font-size:41px;box-shadow:3px 5px 0 #eae8d9}.page-intro>div:first-child{max-width:calc(100% - 76px)}h1{font-size:32px}.page-intro p,.section-head p{font-size:12px}.eyebrow{font-size:9px}.week-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.day-image{height:135px}.day-body{min-height:98px}.day-heading{padding:11px}.week-toolbar{align-items:center}.toolbar-title strong{font-size:18px}.mini-label{font-size:9px}.week-controls{gap:5px}.icon-btn,.small-btn{height:34px}.icon-btn{width:31px}.small-btn{padding:0 9px}.tabbar{height:77px;padding:7px 5px calc(7px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;justify-content:space-around;gap:0}.tab{flex:1;flex-direction:column;gap:1px;padding:7px 2px;font-size:10px}.tab-icon{font-size:21px}.section-head{padding-top:31px;align-items:start;flex-direction:column;gap:16px}.section-head h1{font-size:32px}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.recipe-photo{height:125px}.recipe-info{padding:12px}.recipe-info h3{font-size:14px;min-height:37px}.filterbar{gap:7px}.filterbar select{max-width:139px;padding:0 6px;font-size:11px}.shopping-columns{grid-template-columns:1fr}.shopping-panel{padding:18px;min-height:180px}.settings-panel{padding:19px}.view#view-settings{padding-top:33px}.modal{padding:23px 17px;border-radius:18px;max-height:94dvh}.field-row{gap:8px}.modal h2{font-size:24px}.modal-actions .right-actions{flex-wrap:wrap;justify-content:flex-end}.secondary-btn,.primary-btn{padding:12px 14px}.bottom-tip{line-height:1.5}}
@media(max-width:350px){.brand-tag{display:none}.sync-pill{font-size:9px}.week-grid{grid-template-columns:1fr 1fr}}

.day-done{font-size:10px;color:#7d9983;display:flex;align-items:center;gap:5px;white-space:nowrap}.day-done input{accent-color:#5d9067;width:14px;height:14px;margin:0;cursor:pointer}.dish-done{text-decoration:line-through;color:#a7b2a8!important}.day-card:has(.day-done) .day-body{min-height:134px}
