@font-face{font-family:Caprasimo;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/caprasimo-400.woff2) format("woff2")}@font-face{font-family:Figtree;font-style:normal;font-weight:400 700;font-display:swap;src:url(./fonts/figtree-variable.woff2) format("woff2")}:root{color-scheme:light;--color-bg: #f5ead8;--color-surface: #fff8ee;--color-surface-sunk: #ebddc5;--color-text: #201e1d;--color-text-dim: #645c50;--color-text-faint: #a19786;--color-divider: #e1eecc;--sage-100: #f0fae1;--sage-200: #e1eecc;--sage-300: #ccdbb2;--sage-400: #aebf92;--sage-500: #8fa073;--sage-600: #7a8a5e;--sage-700: #56633f;--sage-800: #3d472b;--clay-100: #fff2eb;--clay-300: #ffc6a5;--clay-500: #c67139;--clay-600: #b2622d;--clay-700: #8c491a;--font-heading: "Caprasimo", system-ui, sans-serif;--font-body: "Figtree", system-ui, sans-serif;--radius-sm: 8px;--radius-md: 16px;--radius-lg: 20px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(46, 43, 37, .14);--shadow-md: 0 3px 10px rgba(46, 43, 37, .16);--shadow-lg: 0 12px 32px rgba(46, 43, 37, .22);--text: var(--color-text);--dim: var(--color-text-dim);--accent: var(--sage-600);--accent-tint-bg: var(--sage-100);--accent-tint-border: var(--sage-300);--accent-tint-weak: var(--sage-100);--food: var(--sage-700);--food-tint-bg: var(--sage-100);--food-tint-border: var(--sage-300);--mind: var(--sage-800);--mind-tint-bg: var(--sage-200);--mind-tint-border: var(--sage-400);--macro-protein: var(--sage-700);--macro-carb: var(--sage-500);--macro-fat: var(--sage-300);--carb: var(--macro-carb);--danger: var(--clay-700);--bad: var(--danger);--bg-solid: var(--color-bg);--card-bg: var(--color-surface);--card-bg-solid: var(--color-surface);--card-border: var(--color-divider);--card-shadow: var(--shadow-sm);--tile-bg: var(--color-surface);--tile-border: var(--color-divider);--row-border: var(--color-divider);--well: var(--color-surface-sunk);--btn-bg: var(--color-surface);--btn-border: var(--sage-300);--nav-bg: var(--color-surface);--nav-bg-solid: var(--color-surface);--nav-border: var(--color-divider);--nav-shadow: none;--header-btn-bg: var(--color-surface);--header-btn-bg-solid: var(--color-surface)}*{box-sizing:border-box;margin:0}html,body{height:100%}body{background:var(--color-bg);color:var(--color-text);font:15px/1.45 var(--font-body),-apple-system,system-ui,"Segoe UI",sans-serif;font-variant-numeric:tabular-nums;-webkit-tap-highlight-color:transparent}.app{display:flex;flex-direction:column;min-height:100dvh}main{flex:1;padding:calc(64px + env(safe-area-inset-top)) 20px calc(130px + env(safe-area-inset-bottom));max-width:560px;width:100%;margin:0 auto}::selection{background:color-mix(in srgb,var(--sage-600) 30%,transparent)}:focus-visible{outline:2px solid var(--sage-600);outline-offset:2px}nav{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;justify-content:space-around;background:var(--color-surface);border-top:1px solid var(--color-divider);padding:9px 6px calc(26px + env(safe-area-inset-bottom))}nav button{background:none;border:none;color:var(--color-text-faint);display:flex;flex-direction:column;align-items:center;gap:3px;font-family:var(--font-body);font-size:10.5px;font-weight:400;padding:4px 0;cursor:pointer;flex:1}nav button.on{color:var(--sage-700);font-weight:700}nav .icon{width:21px;height:21px}header{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:calc(16px + env(safe-area-inset-top)) calc(14px + env(safe-area-inset-right)) 12px calc(20px + env(safe-area-inset-left));background:var(--color-bg);pointer-events:none}header>*{pointer-events:auto}header h1{font-family:var(--font-heading);font-size:26px;font-weight:400;letter-spacing:-.01em;margin:0;color:var(--color-text)}.menu-btn{background:var(--color-surface);color:var(--color-text-dim);width:34px;height:34px;border-radius:50%;border:1px solid var(--sage-300);font-size:19px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}.menu-btn.on{color:var(--sage-700);border-color:var(--sage-400)}.menu-btn:hover{background:var(--sage-100)}.menu-btn:active{background:var(--sage-200)}.menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}.menu{position:fixed;top:calc(56px + env(safe-area-inset-top));right:calc(8px + env(safe-area-inset-right));z-index:21;background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md);padding:6px;display:flex;flex-direction:column;min-width:160px;box-shadow:var(--shadow-md)}.menu button{background:none;border:none;color:var(--color-text);text-align:left;display:flex;align-items:center;gap:8px;font-size:15px;padding:10px 12px;border-radius:10px;cursor:pointer}.menu button:hover{background:var(--sage-100)}.menu button.on{color:var(--sage-700);font-weight:700}.menu .icon{width:16px;height:16px}.stack{display:flex;flex-direction:column;gap:16px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.chips{display:flex;gap:7px;flex-wrap:wrap}.card{background:var(--color-surface);border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px}.card.error{color:var(--danger)}.card.tint-fit,.card.tint-food{background:var(--sage-100)}.card.tint-mind{background:var(--sage-200)}.tiles{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.tile{border-radius:var(--radius-md);padding:12px;background:var(--color-surface);box-shadow:var(--shadow-sm)}.tile .num{font-family:var(--font-body);font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--color-text);font-variant-numeric:tabular-nums}.tile .num small{font-size:12px;font-weight:600;opacity:.7;margin-left:1px}.tile .sub{font-size:11.5px;color:var(--color-text-dim);margin-top:2px}.tile.fit{background:var(--sage-100)}.tile.fit .num{color:var(--sage-700)}.tile.food{background:var(--sage-100)}.tile.food .num{color:var(--sage-700)}.stat{display:flex;flex-direction:column;gap:1px}.stat .big{font-size:22px;font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums}.stat .label{margin-bottom:1px}.stat .mini{align-self:flex-start;margin-top:4px}.label{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.08em}.label svg{width:12px;height:12px;flex-shrink:0}.dim,.muted{color:var(--color-text-dim);font-size:13px}button{font:inherit;font-family:var(--font-body)}.card button,.pending button{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--color-surface);color:var(--color-text);border:1px solid var(--sage-300);border-radius:var(--radius-pill);padding:10px 16px;cursor:pointer}.card button svg,.pending button svg{width:15px;height:15px;flex-shrink:0}.card button:hover,.pending button:hover{background:var(--sage-100)}.card button:active,.pending button:active{background:var(--sage-200)}.card button:disabled,.pending button:disabled,button:disabled{opacity:.45;cursor:not-allowed}button.primary{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--sage-600);border:1px solid var(--sage-600);color:var(--color-surface);font-weight:700;border-radius:var(--radius-pill)}button.primary svg{width:16px;height:16px;flex-shrink:0}button.primary:hover{background:var(--sage-700);border-color:var(--sage-700)}button.primary:active{background:var(--sage-800);border-color:var(--sage-800)}button.mini{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;font-size:13px;border-radius:var(--radius-pill);position:relative;background:var(--color-surface);color:var(--color-text);border:1px solid var(--sage-300)}button.mini:after{content:"";position:absolute;top:-4px;right:-3px;bottom:-4px;left:-3px}button.mini svg{width:14px;height:14px;flex-shrink:0}button.mini:hover{background:var(--sage-100)}button.mini.on{background:var(--sage-100);border-color:var(--sage-300);color:var(--sage-700);font-weight:700}button.mini.tick{width:34px;height:34px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--color-surface);border:1.5px solid var(--sage-300);color:var(--sage-600)}button.mini.tick svg{width:16px;height:16px}button.mini.tick:hover{background:var(--sage-100)}button.mini.tick.on,button.mini.tick:active{background:var(--sage-600);border-color:var(--sage-600);color:var(--color-surface)}.chip{display:inline-flex;align-items:center;gap:5px;padding:8px 15px;border-radius:var(--radius-pill);font-size:13px;font-weight:600;background:var(--color-surface);color:var(--sage-700);border:1px solid var(--sage-300);cursor:pointer}.chip svg{width:14px;height:14px;flex-shrink:0}.chip:hover{background:var(--sage-100)}.chip.on{background:var(--sage-600);border-color:var(--sage-600);color:var(--color-surface)}input,textarea,select{background:var(--color-bg);color:var(--color-text);border:1px solid var(--sage-300);border-radius:var(--radius-md);padding:11px 14px;font:inherit;width:100%}input::placeholder,textarea::placeholder{color:var(--color-text-faint)}label{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--color-text-dim)}label input{flex:1}.habit{display:flex;gap:10px;align-items:center;padding:8px 0;font-size:15px;color:var(--color-text)}.habit input[type=checkbox]{width:22px;height:22px;accent-color:var(--sage-600);border-radius:var(--radius-pill)}.habit .dim{margin-left:auto}.habit-toggle{display:contents}.task{padding:4px 0;font-size:15px}@keyframes habit-pop{0%{transform:scale(1)}45%{transform:scale(1.035)}to{transform:scale(1)}}.habit.celebrate{animation:habit-pop .3s ease-out}@media (prefers-reduced-motion: reduce){.habit.celebrate{animation:none}}.focus{font-family:var(--font-body);font-size:17px;font-weight:600;line-height:1.4;color:var(--color-text)}button.linklike{background:none;border:0;padding:0;margin:0;font:inherit;color:var(--sage-700);font-weight:700;cursor:pointer;text-decoration:underline}button.linklike:disabled{opacity:.5;cursor:default}.planrow{display:flex;align-items:center;gap:8px;padding:8px 0;font-size:15px}.planrow+.planrow{border-top:1px solid var(--color-divider)}.planrow .time{font-variant-numeric:tabular-nums;color:var(--color-text-dim);font-size:13px;min-width:44px}.planrow .row-icon{width:15px;height:15px;color:var(--sage-500);flex-shrink:0}.planrow.subtask{padding-left:22px;border-left:2px solid var(--color-divider);margin-left:4px}.planrow .tree-toggle{background:none;border:none;color:var(--color-text-dim);cursor:pointer;padding:0 6px 0 0;font-size:13px}.planrow.priority{background:var(--clay-100);border-radius:var(--radius-md)}.planrow.priority .time{color:var(--clay-600);font-weight:700}.first-step{display:flex;align-items:flex-start;gap:5px;padding:0 0 8px 24px;margin-top:-4px;font-size:13px;color:var(--sage-700);cursor:pointer}.first-step svg{flex-shrink:0;margin-top:2px}.grow{flex:1}.footer-row{display:flex;justify-content:space-between}.result{text-align:left;width:100%}.pending{background:var(--color-surface-sunk);border-radius:var(--radius-md);padding:12px;display:flex;flex-direction:column;gap:8px}.insight{border-top:1px solid var(--color-divider);padding:10px 0;display:flex;flex-direction:column;gap:6px}.insight:first-of-type{border-top:none}.brief{background:var(--color-surface-sunk);border-radius:var(--radius-md);padding:4px 14px 12px;margin-top:6px}.md{font-size:14px;line-height:1.5}.md p{margin:6px 0}.md-h1{font-size:16px;margin:12px 0 4px}.md-h2{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-dim);margin:12px 0 2px}.md-list{margin:4px 0;padding-left:18px}.md-list li{margin:3px 0}.md-sub{list-style:none;margin-left:-6px;color:var(--color-text-dim);font-size:13px}.md-quote{border-left:2px solid var(--sage-600);padding:4px 0 4px 10px;margin:8px 0;color:var(--color-text)}.md-h3{font-size:13px;font-weight:600;margin:10px 0 2px}.md-ic{background:var(--color-surface-sunk);border-radius:4px;padding:1px 5px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;color:var(--color-text)}.md-pre{background:var(--color-surface-sunk);border-radius:8px;padding:10px 12px;margin:8px 0;overflow-x:auto}.md-pre code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;line-height:1.45;white-space:pre;color:var(--color-text)}.guide{background:var(--color-surface-sunk);border-radius:var(--radius-md);padding:4px 14px 12px;margin-top:6px}.spark{width:100%}.meter{height:8px;background:var(--sage-200);border-radius:var(--radius-pill);overflow:hidden}.meter-fill{height:100%;background:var(--sage-600);border-radius:var(--radius-pill);transition:width .3s}.meter-thin{height:4px;margin-top:3px}.meter-food .meter-fill,.meter-fit .meter-fill{background:var(--sage-600)}.meter-protein .meter-fill{background:var(--macro-protein)}.meter-carb .meter-fill{background:var(--macro-carb)}.meter-fat .meter-fill{background:var(--macro-fat)}.ring{width:88px;height:88px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.ring-hole{width:64px;height:64px;border-radius:50%;background:var(--color-surface);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:20px;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.macro-split{display:flex;align-items:center;gap:14px;padding-bottom:10px}.donut{width:84px;height:84px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.donut-hole{width:56px;height:56px;border-radius:50%;background:var(--color-surface);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.15}.donut-hole b{font-size:16px;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.donut-hole span{font-size:10px;color:var(--color-text-dim)}.macro-legend{display:flex;flex-direction:column;gap:4px;flex:1;font-size:13px}.macro-legend div{display:flex;align-items:center;gap:7px}.macro-legend i{width:9px;height:9px;border-radius:3px;flex-shrink:0}.macro-legend .dim{margin-left:auto}.macro-empty{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding-bottom:10px}.macro-empty p{font-size:13px}.chart-cap{font-size:13px;color:var(--color-text-dim);margin-top:2px}.chart-cap strong{color:var(--color-text)}.macrobar{display:flex;height:8px;border-radius:var(--radius-pill);overflow:hidden}.macrobar span{display:block;height:100%}.mb-p{background:var(--macro-protein)}.mb-c{background:var(--macro-carb)}.mb-f{background:var(--macro-fat)}.cat-row{border-top:1px solid var(--color-divider);padding:8px 0}.cat-row:first-of-type{border-top:none}.kitchen-ingredient-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:4px}.chip.mode-together{background:var(--sage-100);border-color:var(--sage-300);color:var(--sage-700)}.chip.mode-nights{background:var(--sage-200);border-color:var(--sage-400);color:var(--sage-800)}.chip.mode-solo{background:var(--color-bg);border-color:var(--sage-300);color:var(--color-text-dim)}.mealplan-row .chip{padding:5px 10px;font-size:14px;flex-shrink:0}.mealplan-slot{padding:6px 8px;border-radius:8px}.mealplan-editor{margin-top:4px}.task-editor{margin:4px 0}.chip.shop-chip{padding:2px 9px;font-size:12px;flex-shrink:0}.chip.shop-2{background:var(--sage-200);border-color:var(--sage-400);color:var(--sage-800)}.staples-toggle{background:none;border:none;color:var(--color-text-dim);font-size:13px;font-weight:600;padding:4px 0;cursor:pointer;text-align:left}.aisle-head{position:sticky;top:0;z-index:1;background:var(--color-surface);color:var(--color-text-dim);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:6px 0 2px}button.mini.aisle-reassign{padding:4px 8px;margin-left:2px;flex-shrink:0}button.mini.in-house-btn{padding:4px 8px;font-size:12px;flex-shrink:0;white-space:nowrap}.aisle-picker{padding:2px 0 8px 32px}.aisle-picker .chip{padding:3px 9px;font-size:12px}.day-section{background:var(--color-surface);border-radius:var(--radius-lg);padding:12px 14px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow-sm)}.day-section.is-today{border-left:4px solid var(--sage-600)}.cat-head{display:flex;justify-content:space-between;font-size:14px;margin-bottom:2px}.up{color:var(--clay-600)}.down{color:var(--sage-600)}@keyframes skeleton-pulse{0%,to{opacity:.5}50%{opacity:1}}.skeleton{background:var(--sage-200);border-radius:6px;animation:skeleton-pulse 1.4s ease-in-out infinite}.skeleton-line{height:12px}.toast{position:fixed;bottom:calc(100px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--sage-100);color:var(--sage-800);padding:10px 20px;border-radius:var(--radius-lg);font-size:14px;font-weight:600;z-index:10;box-shadow:var(--shadow-md);display:flex;align-items:center;gap:8px}.toast svg{width:16px;height:16px;color:var(--sage-700);flex-shrink:0}.toast.error{background:var(--clay-100);color:var(--clay-700);bottom:calc(148px + env(safe-area-inset-bottom))}.toast.error svg{color:var(--clay-700)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#201e1d52;animation:sheet-fade .18s ease-out}.sheet{position:fixed;z-index:31;left:0;right:0;bottom:0;max-height:min(88vh,720px);display:flex;flex-direction:column;background:var(--color-surface);border-radius:20px 20px 0 0;box-shadow:var(--shadow-lg);padding:8px 16px calc(16px + env(safe-area-inset-bottom));animation:sheet-rise .22s cubic-bezier(.32,.72,0,1)}@media (min-width: 640px){.sheet{left:50%;transform:translate(-50%);width:min(560px,calc(100% - 32px));bottom:16px;border-radius:20px}@keyframes sheet-rise{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}}.sheet-grip{width:36px;height:4px;border-radius:var(--radius-pill);background:var(--sage-300);margin:2px auto 8px}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.sheet-title{font-weight:700;font-size:15px}.sheet-body{overflow-y:auto;-webkit-overflow-scrolling:touch}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}@keyframes sheet-rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.sheet,.sheet-backdrop{animation:none}}.tap-row{cursor:pointer}.tap-row:focus-visible{outline:2px solid var(--sage-600);outline-offset:2px;border-radius:8px}.dayplan{display:flex;flex-direction:column}.dayplan-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--color-divider);background:transparent;transition:background .12s ease,transform .12s ease}.dayplan-row:last-child{border-bottom:0}.dayplan-row.priority{background:var(--clay-100);border-radius:var(--radius-md);border-bottom-color:transparent;padding-left:6px;padding-right:6px}.dayplan-row.priority .dayplan-time{color:var(--clay-600);font-weight:700}.dayplan-row.dragging{background:var(--sage-100);border-radius:10px;border-bottom-color:transparent;box-shadow:var(--shadow-sm);transform:scale(1.01)}.dayplan-grip{touch-action:none;cursor:grab;background:none;border:0;padding:4px 6px;color:var(--sage-300);display:flex;align-items:center}.dayplan-grip svg{width:13px;height:13px}.dayplan-grip:active,.dayplan-row.dragging .dayplan-grip{cursor:grabbing}.dayplan-time{min-width:44px;font-variant-numeric:tabular-nums;font-size:13px;color:var(--color-text)}@media (prefers-reduced-motion: reduce){.dayplan-row{transition:none}.dayplan-row.dragging{transform:none}}.dayplan.is-dragging,.dayplan.is-dragging *{user-select:none;-webkit-user-select:none}.dayplan-grip{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.dayplan-row.dragging{position:relative;z-index:2;box-shadow:var(--shadow-md)}@media (prefers-reduced-motion: reduce){.dayplan-row.dragging{box-shadow:var(--shadow-sm)}}.taggroup{border-bottom:1px solid var(--color-divider)}.taggroup:last-child{border-bottom:0}.taggroup-head{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:11px 0;color:var(--color-text);font:inherit;font-weight:600;text-align:left;cursor:pointer}.taggroup-head:focus-visible{outline:2px solid var(--sage-600);outline-offset:2px;border-radius:8px}.taggroup-row{display:flex;align-items:center;gap:8px;padding:8px 0 8px 22px;border-top:1px solid var(--color-divider)}.taggroup-row.priority{background:var(--clay-100);border-radius:var(--radius-md);border-top-color:transparent;padding-left:22px}
