:root{--bg:#fbf9f6;--surface:#fff;--surface-sunken:#f5f1ea;--border:#ebe4da;--border-strong:#ded5c9;--ink:#1f1b16;--ink-muted:#6b6259;--ink-faint:#9a9089;--accent:#2f6f5e;--accent-hover:#255a4c;--accent-wash:#eaf2ef;--danger:#a23b2c;--danger-wash:#faeeec;--radius:.75rem;--radius-lg:1rem;--radius-pill:999px;--font-serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--sidebar-width:15rem;--content-max:52rem}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;line-height:1.6}h1,h2,h3{font-family:var(--font-serif);letter-spacing:-.018em;margin:0;line-height:1.15}h1{font-size:clamp(1.75rem,4vw,2.25rem)}h2{font-size:1.25rem}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:.25rem}.skip-link{background:var(--accent);color:#fff;border-radius:0 0 var(--radius) 0;z-index:100;padding:.625rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.shell{grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:1.25rem;height:100vh;padding:1.25rem .875rem;display:flex;position:sticky;top:0;overflow-y:auto}.brand{color:var(--ink);align-items:center;gap:.5rem;padding:0 .5rem;text-decoration:none;display:flex}.brand-mark{background:var(--accent);border-radius:50%;flex:none;width:1.5rem;height:1.5rem}.brand-name{font-family:var(--font-serif);font-size:1.0625rem;font-weight:600}.nav-group+.nav-group{margin-top:1rem}.nav-heading{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);padding:0 .5rem .375rem;font-size:.6875rem;font-weight:600}.nav-list{flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--ink-muted);border-radius:.5rem;padding:.4375rem .5rem;font-size:.9375rem;text-decoration:none;display:block}.nav-link:hover{background:var(--surface-sunken);color:var(--ink)}.nav-link[aria-current=page]{background:var(--accent-wash);color:var(--accent);font-weight:600}.sidebar-footer{border-top:1px solid var(--border);color:var(--ink-muted);margin-top:auto;padding-top:.875rem;font-size:.875rem}.content{max-width:calc(var(--content-max) + 4rem);width:100%;padding:2.5rem 2rem 4rem}.page-header{margin-bottom:1.75rem}.page-header p{color:var(--ink-muted);max-width:44rem;margin:.375rem 0 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem 1.375rem}.card+.card{margin-top:1rem}.card-grid{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));align-items:start;gap:1rem;display:grid}.card-grid .card+.card{margin-top:0}.nav-toggle{display:none}.nav-panel{display:block}.empty{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);text-align:center;color:var(--ink-muted);background:var(--surface);padding:2rem 1.5rem}.empty strong{color:var(--ink);font-family:var(--font-serif);margin-bottom:.375rem;font-size:1.0625rem;display:block}.empty p{margin:0;max-width:34rem;margin-inline:auto}.empty .phase{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--border-strong);border-radius:var(--radius-pill);margin-top:.875rem;padding:.1875rem .625rem;font-size:.75rem;display:inline-block}.capture{gap:.5rem;margin-bottom:1.75rem;display:flex}.capture input{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);flex:1;padding:.75rem .9375rem}.capture input::placeholder{color:var(--ink-faint)}.capture{align-items:flex-end}.ask-input{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);resize:none;flex:1;max-height:10rem;padding:.75rem .9375rem;line-height:1.45;overflow-y:auto}.ask-input::placeholder{color:var(--ink-faint)}.thread{flex-direction:column;gap:.625rem;min-height:12rem;margin-bottom:1.25rem;display:flex}.bubble{border-radius:var(--radius-lg);white-space:pre-wrap;max-width:42rem;padding:.6875rem .9375rem}.bubble-user{background:var(--accent-wash);border:1px solid var(--accent-wash);align-self:flex-end}.bubble-assistant{background:var(--surface);border:1px solid var(--border);align-self:flex-start}.bubble-system{background:var(--surface-sunken);color:var(--ink-muted);align-self:center;font-size:.875rem}.thread-earlier{align-self:center}.thread-day{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);align-self:center;margin:.5rem 0 .25rem;font-size:.75rem}.bubble-channel{color:var(--ink-faint);margin-top:.375rem;font-size:.75rem;display:block}.content:has(.ask-screen){padding-bottom:0}.ask-screen{flex-direction:column;min-height:calc(100vh - 14rem);display:flex}.ask-screen .thread{flex:1;justify-content:flex-end}.ask-screen .capture{padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom,0px));background:var(--bg);box-shadow:0 -.75rem .75rem -.75rem var(--bg);z-index:2;margin-bottom:0;position:sticky;bottom:0}.ask-screen .capture .btn{flex:none}.ask-screen .form-error{background:var(--bg);position:sticky;bottom:0}.bubble-pending{align-items:center;gap:.25rem;min-height:1.25rem;display:flex}.bubble-pending span{background:var(--ink-faint);border-radius:50%;width:.4375rem;height:.4375rem;animation:1.2s ease-in-out infinite bubble-pulse}.bubble-pending span:nth-child(2){animation-delay:.15s}.bubble-pending span:nth-child(3){animation-delay:.3s}@keyframes bubble-pulse{0%,60%,to{opacity:.25}30%{opacity:1}}@media (prefers-reduced-motion:reduce){.bubble-pending span{opacity:.55;animation:none}}.filters{flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;display:flex}.chip{font:inherit;border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:var(--surface);color:var(--ink-muted);cursor:pointer;padding:.3125rem .75rem;font-size:.875rem}.chip-on{background:var(--accent-wash);border-color:var(--accent);color:var(--accent);font-weight:600}.chip-search{font:inherit;border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:var(--surface);flex:1;min-width:12rem;padding:.3125rem .75rem;font-size:.875rem}.memory-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.memory-list .card+.card{margin-top:0}.memory-meta{flex-wrap:wrap;gap:.375rem;margin-top:.625rem;display:flex}.tag{border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--ink-muted);padding:.125rem .5rem;font-size:.75rem}.tag-warn{color:#8a5a1e;background:#fdf3e7}.memory-actions{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.memory-actions .btn{padding:.375rem .75rem;font-size:.8125rem}.edit-input{width:100%;font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);padding:.5rem .625rem}.provenance{border-top:1px solid var(--border);margin-top:.75rem;padding-top:.75rem}.provenance .row{padding:.3125rem 0}.excerpt{border-left:2px solid var(--border-strong);color:var(--ink-muted);margin:.375rem 0;padding-left:.75rem;font-size:.9375rem}.day-group+.day-group{margin-top:1.5rem}.day-heading{text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);font-size:.8125rem;font-family:var(--font-sans);margin-bottom:.625rem;font-weight:600}.event-list{border-left:2px solid var(--border);margin:0;padding:0;list-style:none}.event{grid-template-columns:4.5rem 1fr;gap:.75rem;padding:.625rem 0 .625rem 1rem;display:grid;position:relative}.event:before{content:"";background:var(--accent);border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:1.125rem;left:-.3125rem}.event-time{color:var(--ink-faint);padding-top:.125rem;font-size:.8125rem}.event-title{margin:0}.event-detail{color:var(--ink-muted);margin:.25rem 0 0;font-size:.9375rem}@media (max-width:40rem){.event{grid-template-columns:1fr;gap:.25rem}}.bell-wrap{margin-bottom:.75rem}.bell{font:inherit;text-align:left;border:1px solid var(--border-strong);background:var(--surface);width:100%;color:var(--ink-muted);cursor:pointer;border-radius:.5rem;justify-content:space-between;align-items:center;gap:.5rem;padding:.375rem .5rem;font-size:.875rem;display:flex}.bell-count{background:var(--accent);color:#fff;border-radius:var(--radius-pill);padding:.0625rem .4375rem;font-size:.75rem;font-weight:600}.bell-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);max-height:20rem;margin-top:.5rem;padding:.625rem;overflow-y:auto}.bell-list{flex-direction:column;gap:.5rem;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.bell-item{border-left:2px solid var(--border);padding-left:.5rem;font-size:.875rem}.bell-unread{border-left-color:var(--accent)}.capture-wrap{margin-bottom:1.75rem}.capture-input{width:100%;font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);resize:vertical;min-height:4.5rem;padding:.75rem .9375rem}.capture-input::placeholder{color:var(--ink-faint)}.capture-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.5rem;display:flex}.capture-meta{align-items:center;gap:.75rem;display:flex}.capture-meta .btn{padding:.375rem .75rem;font-size:.8125rem}.btn{font:inherit;border-radius:var(--radius);background:var(--accent);color:#fff;cursor:pointer;border:1px solid #0000;padding:.6875rem 1.125rem;font-weight:600}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-quiet{color:var(--ink-muted);border-color:var(--border-strong);background:0 0}.btn-quiet:hover{background:var(--surface-sunken);color:var(--ink)}.row{justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 0;display:flex}.row+.row{border-top:1px solid var(--border)}.label{color:var(--ink-muted);font-size:.9375rem}.pill{border-radius:var(--radius-pill);border:1px solid;padding:.1875rem .625rem;font-size:.8125rem;font-weight:600}.ok{color:var(--accent)}.bad{color:var(--danger)}.good{color:var(--accent)}.auth-wrap{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:24rem;padding:2rem 1.75rem}.field{margin-bottom:1rem;display:block}.field span{color:var(--ink-muted);margin-bottom:.3125rem;font-size:.875rem;display:block}.field input{width:100%;font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);color:var(--ink);padding:.625rem .75rem}.form-error{background:var(--danger-wash);color:var(--danger);border-radius:var(--radius);border:1px solid;margin-bottom:1rem;padding:.625rem .75rem;font-size:.875rem}.landing{max-width:44rem;margin:0 auto;padding:5rem 1.5rem}.landing .lede{color:var(--ink-muted);margin:.75rem 0 2rem;font-size:1.0625rem}@media (max-width:52rem){.shell{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border);flex-direction:column;height:auto;position:static}.nav-list{flex-flow:wrap}.nav-toggle{cursor:pointer;font:inherit;text-align:left;color:var(--ink-muted);background:0 0;border:none;border-radius:.5rem;width:100%;padding:.5rem;font-weight:600;display:block}.nav-toggle:after{content:" ▾"}.nav-toggle[aria-expanded=true]:after{content:" ▴"}.nav-panel{display:none}.nav-panel.is-open{display:block}.nav-group+.nav-group{margin-top:.75rem}.content{padding:1.75rem 1.125rem 3rem}.sidebar-footer{margin-top:.875rem;display:none}.sidebar:has(.nav-panel.is-open) .sidebar-footer{display:block}.sidebar{gap:.75rem;padding:.875rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.capture-thumbs{flex-wrap:wrap;gap:.5rem;margin-top:.625rem;display:flex}.capture-thumb{border:1px solid var(--line,#d9d9de);border-radius:8px;width:72px;height:72px;margin:0;position:relative;overflow:hidden}.capture-thumb img{object-fit:cover;width:100%;height:100%;display:block}.capture-thumb-remove{color:#fff;cursor:pointer;background:#0000009e;border:0;border-radius:50%;width:20px;height:20px;font-size:.9rem;line-height:1;position:absolute;top:2px;right:2px}.capture-thumb-remove:hover{background:#000c}.capture-warning{margin:.5rem 0 0;font-size:.8125rem}.payroll-table{border-collapse:collapse;width:100%}.payroll-table td{border-bottom:1px solid var(--line,#ececed);padding:.3rem 0;font-size:.9375rem}.payroll-table tr:last-child td{border-bottom:0}.payroll-account{font-variant-numeric:tabular-nums;color:var(--muted,#6b6b70);white-space:nowrap}.payroll-amount{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.capture-status{background:var(--surface-2,#f4f4f6);color:var(--muted,#55555c);border-radius:8px;align-items:center;gap:.5rem;margin:0 0 .5rem;padding:.5rem .75rem;font-size:.875rem;animation:2.4s ease-in-out infinite capture-breathe;display:flex}.capture-elapsed{font-variant-numeric:tabular-nums;opacity:.7;margin-left:auto;font-size:.8125rem}.capture-spinner{opacity:.65;border:2px solid;border-right-color:#0000;border-radius:50%;flex:none;width:14px;height:14px;animation:.7s linear infinite capture-spin}.capture-spinner-sm{vertical-align:-1px;width:12px;height:12px;margin-right:.4rem;display:inline-block}@keyframes capture-spin{to{transform:rotate(360deg)}}@keyframes capture-breathe{0%,to{opacity:1}50%{opacity:.72}}@media (prefers-reduced-motion:reduce){.capture-spinner,.capture-status{animation:none}}.capture-result{border:1px solid var(--line,#d9d9de);border-left:3px solid var(--accent,#2f6f4f);background:var(--surface-2,#f7f7f9);border-radius:8px;margin:0 0 .75rem;padding:.75rem .875rem}.capture-reply{white-space:pre-wrap;margin:0;font-size:.9375rem}.capture-done{flex-wrap:wrap;gap:.375rem;margin:.625rem 0 0;display:flex}.capture-done-quiet{color:var(--muted,#6b6b70);font-size:.8125rem}.capture-chip{background:var(--chip,#e6efe9);color:var(--chip-text,#24543c);border-radius:999px;padding:.125rem .5rem;font-size:.75rem}.capture-result-links{flex-wrap:wrap;align-items:center;gap:.875rem;margin-top:.625rem;font-size:.8125rem;display:flex}.capture-result-links a{color:var(--accent,#2f6f4f)}.capture-dismiss{font:inherit;color:var(--muted,#6b6b70);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0;font-size:.8125rem;text-decoration:underline}.capture-thumb-pdf{letter-spacing:.04em;width:100%;height:100%;color:var(--muted,#55555c);background:var(--surface-2,#f1f1f4);justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex}.doc-actions{text-align:right;white-space:nowrap;width:1%;padding-left:1.5rem}.doc-confirm{white-space:nowrap;align-items:center;gap:.375rem;display:inline-flex}.money-figures{grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:1rem;margin:.75rem 0 1rem;display:grid}.money-big{font-variant-numeric:tabular-nums;font-size:1.5rem;line-height:1.2;display:block}.money-voided td{opacity:.55;text-decoration:line-through}.money-unconfirmed td{opacity:.7}.money-unconfirmed td:first-child{border-left:2px solid var(--ink-faint);padding-left:.5rem}.filter-bar{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));align-items:end;gap:.75rem;margin-bottom:1rem;display:grid}.filter-bar label{flex-direction:column;gap:.25rem;display:flex}.filter-bar select,.filter-bar input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--ink);font:inherit;border-radius:.375rem;padding:.5rem;font-size:1rem}.filter-bar-actions{align-items:center;gap:.5rem;display:flex}.money-budget{margin:.75rem 0}.money-budget-head{flex-wrap:wrap;justify-content:space-between;gap:.5rem;display:flex}.money-bar{background:var(--border);border-radius:999px;height:.5rem;margin:.25rem 0;overflow:hidden}.money-bar-fill,.money-bar-over{border-radius:999px;height:100%;display:block}.money-bar-fill{background:var(--ink-faint)}.money-bar-over{background:var(--danger)}.money-trend{align-items:flex-end;gap:.375rem;padding:.5rem 0;display:flex;overflow-x:auto}.money-trend-col{text-align:center;flex:1 0 2.75rem}.money-trend-bars{justify-content:center;align-items:flex-end;gap:2px;height:5rem;display:flex}.money-trend-bars span{border-radius:2px 2px 0 0;width:.5rem;min-height:1px;display:block}.money-trend-spent{background:var(--ink)}.money-trend-income{background:var(--ink-faint)}.money-trend-label,.money-trend-value{color:var(--ink-faint);white-space:nowrap;font-size:.6875rem}.account-line+.account-line{border-top:1px solid var(--border)}.number-edit{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius);margin:0 0 .75rem;padding:.75rem 1rem}.number-edit .field{margin-bottom:.25rem}@media (max-width:640px){.number-edit{padding:.625rem .75rem}}.money-actions-cell{text-align:right;white-space:nowrap;vertical-align:top}.money-row-actions{flex-wrap:wrap;justify-content:flex-end;gap:.375rem;display:inline-flex}.money-row-actions .btn{padding:.25rem .625rem;font-size:.8125rem}.money-edit{flex-wrap:wrap;align-items:flex-end;gap:.5rem;padding:.625rem 0;display:flex}.money-edit label{flex-direction:column;gap:.1875rem;display:flex}.money-edit .edit-input,.money-edit select{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);min-width:7rem;padding:.3125rem .5rem;font-size:.875rem}.money-edit-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.money-pager{justify-content:space-between;gap:.5rem;margin-top:.75rem;display:flex}:root{--warn:#8a5a12;--warn-wash:#fbf2e2}.money-cal-nav{flex-wrap:wrap;gap:.75rem 1.25rem;margin-bottom:1rem;display:flex}.money-cal-legend{flex-wrap:wrap;gap:.5rem 1rem;margin:0 0 1rem;padding:0;font-size:.875rem;list-style:none;display:flex}.money-cal{table-layout:fixed;border-collapse:separate;border-spacing:.25rem;width:100%}.money-cal caption{text-align:left;margin-bottom:.5rem;font-weight:600}.money-cal th{color:var(--ink-muted);text-align:left;padding:0 .25rem;font-size:.75rem;font-weight:500}.money-cal td{vertical-align:top;border:1px solid var(--border);background:var(--surface);border-radius:.5rem;height:4.75rem;padding:0}.money-cal td.money-cal-blank{background:0 0;border:none}.money-cal td a{height:100%;color:var(--ink);flex-direction:column;gap:.125rem;padding:.35rem .4rem;font-size:.8125rem;text-decoration:none;display:flex;overflow:hidden}.money-cal td a[aria-current=date] .money-cal-n{background:var(--accent);color:#fff;border-radius:var(--radius-pill);align-self:flex-start;padding:0 .4rem}.money-cal-n{font-weight:600}.money-cal-amount{font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.money-cal td.money-cal-within{background:var(--accent-wash)}.money-cal-within .money-cal-status,li.money-cal-within{color:var(--accent)}.money-cal td.money-cal-over{background:var(--danger-wash);border-color:var(--danger)}.money-cal-over .money-cal-status,li.money-cal-over{color:var(--danger)}.money-cal-none .money-cal-status,li.money-cal-none,.money-cal-spent .money-cal-status{color:var(--ink-muted)}.money-cal td.money-cal-future{background:var(--surface-sunken)}.money-cal-planned,li.money-cal-planned{color:var(--warn)}.money-cal td .money-cal-planned{background:var(--warn-wash);border-radius:.25rem;align-self:flex-start;padding:0 .25rem;font-size:.75rem}.money-cal td.money-cal-selected{outline:2px solid var(--accent);outline-offset:1px}.money-cal-figures{grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:0 0 1rem;display:grid}.money-cal-figures dt{color:var(--ink-muted)}.money-cal-figures dd{font-variant-numeric:tabular-nums;margin:0}.money-cal-entries{margin:0 0 1rem;padding-left:1.1rem}@media (max-width:560px){.money-cal{border-spacing:.125rem}.money-cal td{height:3.75rem}.money-cal td a{padding:.25rem;font-size:.6875rem}.money-cal-status-word{display:none}}.money-categories{gap:.375rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.money-cal td.money-cal-onlimit{background:var(--warn-wash)}.money-cal-onlimit .money-cal-status,li.money-cal-onlimit{color:var(--warn)}.household-rows{margin:.5rem 0 1rem;padding:0;list-style:none}.household-rows>li{border-top:1px solid var(--line,#00000014);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.625rem 0;display:flex}.household-rows>li:first-child{border-top:none}.household-filters{flex-wrap:wrap;gap:.375rem;margin:.5rem 0 .75rem;display:flex}.household-check{cursor:pointer;align-items:center;gap:.5rem;min-height:44px;display:inline-flex}.household-check input{width:1.25rem;height:1.25rem}.household-checked{color:var(--ink-faint);text-decoration:line-through}
