:root{--ink: #1c2a24;--muted: #4d5e56;--paper: #f3efe6;--paper-2: #e7f0ea;--leaf: #2f6b4f;--leaf-deep: #1f4a37;--warn: #8a5a2b;--danger: #8a3b3b;--line: rgba(28, 42, 36, .12);--shadow: 0 18px 40px rgba(28, 42, 36, .08);--tab-bar-h: 4.25rem;font-family:"Source Sans 3",Segoe UI,sans-serif;color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,#d9ebe0 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#efe6d4 0%,transparent 50%),var(--paper)}*{box-sizing:border-box}body{margin:0;min-height:100vh}h1,h2,h3,.brand,.date-picker-month{font-family:Fraunces,Georgia,serif;font-weight:700;letter-spacing:-.02em}a{color:var(--leaf-deep)}button,input{font:inherit}button{cursor:pointer;border:0;border-radius:999px;background:var(--leaf);color:#fff;padding:.75rem 1.25rem;min-height:44px;min-width:44px}:focus-visible{outline:3px solid var(--leaf-deep);outline-offset:2px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--leaf-deep);outline-offset:2px}.skip-link{position:absolute;left:.75rem;top:.75rem;z-index:20;transform:translateY(-160%);padding:.65rem 1rem;border-radius:999px;background:var(--leaf-deep);color:#fff;text-decoration:none;font-weight:600}.skip-link:focus,.skip-link:focus-visible{transform:translateY(0)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}button.secondary{background:transparent;color:var(--leaf-deep);border:1px solid var(--line)}button:disabled{opacity:.55;cursor:not-allowed}input{width:100%;border:1px solid var(--line);border-radius:.75rem;padding:.8rem .95rem;background:#ffffffb8}label{display:grid;gap:.35rem;font-weight:600;color:var(--muted)}.shell{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.shell>main{width:min(440px,100%);justify-self:center;align-self:center}.shell:has(.home-shell){place-items:start center;padding:0}.shell:has(.home-shell)>main{width:min(640px,100%);align-self:start}.panel{width:min(440px,100%);display:grid;gap:1rem;padding:1.5rem;border-radius:1.5rem;background:#ffffffa8;box-shadow:var(--shadow);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.progress{display:grid;gap:.4rem}.progress-meta{display:flex;justify-content:space-between;align-items:baseline;font-size:.9rem;font-weight:600;color:var(--muted)}.progress-track{height:.4rem;border-radius:999px;background:#1c2a241f;overflow:hidden}.progress-fill{height:100%;width:0;border-radius:inherit;background:var(--leaf)}.field-hint{margin:0;color:var(--danger);font-size:.95rem;line-height:1.35}.brand{font-size:1.65rem;margin:0;color:var(--leaf-deep)}.lede{margin:0;color:var(--muted);line-height:1.45}.stack{display:grid;gap:.85rem}.banner{border-radius:.9rem;padding:.85rem 1rem;background:var(--paper-2);color:var(--muted)}.banner.error{background:#f7e8e8;color:var(--danger)}.banner.warn{background:#f7ecdf;color:var(--warn)}.muted{color:var(--muted);font-size:.95rem}.dev{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;word-break:break-all}.home-shell{width:min(640px,100%);display:grid;gap:1.15rem;padding:1.15rem 1.15rem calc(var(--tab-bar-h) + 5.5rem);margin:0 auto}.app-header{display:grid;gap:.55rem}.app-header-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.app-header-title h1{margin:0;font-size:1.75rem;line-height:1.15}.app-header-title .muted{margin:.35rem 0 0}.header-chip{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.45rem .95rem;border-radius:999px;border:1px solid var(--line);background:#ffffff8c;color:var(--leaf-deep);text-decoration:none;font-weight:600;font-size:.9rem}.day-switcher{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;padding:.3rem;border-radius:1rem;background:#ffffff8c;border:1px solid var(--line)}.day-chip{border-radius:.75rem;background:transparent;color:var(--leaf-deep);border:0;padding:.65rem .5rem;font-weight:600;min-width:0}.day-chip.active{background:var(--leaf-deep);color:#fff}.looking-at{margin:0}.leave-link{margin:.25rem 0 0}.day-nav{display:flex;flex-wrap:wrap;gap:.5rem}.day-nav button.active,button.active{background:var(--leaf-deep);color:#fff}.timeline-list{list-style:none;margin:0;padding:0;display:grid;gap:.65rem}.timeline-list li{display:grid;grid-template-columns:auto 1fr auto auto;gap:.65rem;align-items:baseline;padding:.85rem 0;border-bottom:1px solid var(--line)}.timeline-list .kind,.space-row .kind,.meal-type{text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;color:var(--leaf-deep);font-weight:700}.timeline-list .attention{color:var(--warn);font-size:.85rem}.quick-add{display:grid;gap:.75rem;position:sticky;bottom:calc(var(--tab-bar-h) + .75rem);z-index:5}.quick-add-fab{justify-self:end;box-shadow:var(--shadow)}.quick-add-sheet{padding:1rem;border-radius:1.25rem;background:#fffffff0;border:1px solid var(--line);box-shadow:var(--shadow)}.kind-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem}.kind-tab{border-radius:.75rem;background:transparent;color:var(--leaf-deep);border:1px solid var(--line);padding:.55rem .35rem;font-weight:600;font-size:.9rem;min-width:0}.kind-tab.active{background:var(--leaf-deep);color:#fff;border-color:var(--leaf-deep)}.row-actions{display:flex;flex-wrap:wrap;gap:.6rem}select{width:100%;border:1px solid var(--line);border-radius:.75rem;padding:.8rem .95rem;background:#ffffffb8;font:inherit}.spaces-grid{gap:1.75rem}.space-section h2{margin:0;font-size:1.3rem}.space-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.35rem}.section-lede{margin:0 0 .75rem}.text-action{background:transparent;color:var(--leaf-deep);border:0;padding:.35rem .15rem;min-height:44px;font-weight:700;text-decoration:underline;text-underline-offset:.18em}.empty-state{display:grid;gap:.75rem;padding:1rem .15rem .25rem}.empty-state p{margin:0;color:var(--muted)}.space-list,.meal-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.space-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 0;border-bottom:1px solid var(--line)}.space-row-main{display:grid;gap:.2rem;min-width:0}.space-row-title{font-weight:600;line-height:1.3}.meal-row{display:grid;grid-template-columns:1fr auto;gap:.35rem .85rem;align-items:start;padding:1rem 0;border-bottom:1px solid var(--line)}.meal-row-when{display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline;grid-column:1 / -1}.meal-title{margin:0;font-size:1.15rem;font-family:Fraunces,Georgia,serif;font-weight:600;line-height:1.25;grid-column:1}.meal-row>button{grid-column:2;grid-row:2;align-self:center}.meal-form{margin-top:.85rem;padding:1rem;border-radius:1.1rem;background:#ffffff8c;border:1px solid var(--line)}.action-strip{display:grid;gap:.75rem}.action-cta{display:grid;gap:.65rem;padding:1rem;border-radius:1.1rem;background:var(--paper-2);border:1px solid var(--line)}.action-cta.warn{background:#f7ecdf}.action-cta p{margin:0}.lifecycle h3{margin:0 0 .35rem;font-size:1.05rem}.lifecycle-block{display:grid;gap:.55rem;padding:1rem 0;border-top:1px solid var(--line)}.lifecycle-block:first-of-type{border-top:0;padding-top:.35rem}.conflict-dialog{display:grid;gap:.85rem;padding:1rem 1.1rem;border-radius:1.1rem;background:#f7ecdf;border:1px solid rgba(138,90,43,.25);color:var(--ink)}.conflict-dialog h2{margin:0;font-size:1.2rem}.conflict-dialog h3{margin:0 0 .25rem;font-size:.95rem;color:var(--muted)}.conflict-compare{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.primary-nav{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:min(640px,100%);display:grid;grid-template-columns:repeat(3,1fr);gap:.25rem;padding:.55rem .65rem calc(.55rem + env(safe-area-inset-bottom,0px));background:#f3efe6f0;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10}.primary-nav-item{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.55rem .35rem;border-radius:.85rem;text-decoration:none;color:var(--muted);font-weight:650;font-size:.95rem;text-align:center}.primary-nav-item.active{color:var(--leaf-deep);background:#2f6b4f1f}.date-picker{display:grid;gap:.4rem;position:relative}.date-picker-label{font-weight:600;color:var(--muted)}.date-picker-controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.date-picker-trigger{flex:1;min-width:10rem;justify-content:flex-start;border-radius:.75rem;background:#ffffffb8;color:var(--ink);border:1px solid var(--line);text-align:left;font-weight:600}.date-picker-clear{flex:0 0 auto}.date-picker-popover{position:absolute;z-index:12;top:calc(100% + .35rem);left:0;right:0;display:grid;gap:.75rem;padding:.9rem;border-radius:1.1rem;background:#fffaf2;border:1px solid var(--line);box-shadow:var(--shadow)}.date-picker-shortcuts{display:flex;flex-wrap:wrap;gap:.5rem}.date-picker-month-nav{display:grid;grid-template-columns:auto 1fr auto;gap:.5rem;align-items:center}.date-picker-month{margin:0;text-align:center;font-size:1.05rem;color:var(--leaf-deep)}.date-picker-month-nav button{padding:.45rem .75rem;min-width:44px}.date-picker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.date-picker-weekday{text-align:center;font-size:.75rem;font-weight:700;color:var(--muted);padding:.25rem 0}.date-picker-day{aspect-ratio:1;min-height:44px;min-width:0;padding:0;border-radius:.65rem;background:transparent;color:var(--ink);font-weight:600}.date-picker-day.empty{visibility:hidden;pointer-events:none}.date-picker-day.today{box-shadow:inset 0 0 0 1.5px var(--leaf)}.date-picker-day.selected{background:var(--leaf);color:#fff}@media(max-width:520px){.shell{place-items:center}.shell:has(.home-shell){place-items:start center}.shell>main{width:min(440px,100%);justify-self:center}.shell:has(.home-shell)>main{width:100%}.timeline-list li,.conflict-compare{grid-template-columns:1fr}.day-switcher{gap:.25rem}.day-chip,.row-actions button,.kind-tab{min-height:44px}.home-shell{padding-inline:.9rem}.kind-tabs{grid-template-columns:repeat(2,1fr)}.meal-row{grid-template-columns:1fr}.meal-row>button{grid-column:1;grid-row:auto;justify-self:start}}html{font-size:100%}body{line-height:1.5}
