:root{--ink: #18221d;--ink-soft: #44524a;--ink-muted: #6c756f;--green: #24533d;--green-deep: #163c2a;--green-tint: #eef3ee;--green-tint-strong: #e2ece4;--line: #e0e2d9;--line-strong: #cdd3c9;--surface: #fffdf8;--canvas: #f4f1e8;--danger: #a1231c;--danger-line: #ecd2cf;--danger-tint: #fbeeec;--radius-sm: .5rem;--radius: .75rem;--radius-lg: 1.15rem;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(36, 56, 45, .06);--shadow: 0 .4rem 1.2rem rgba(36, 56, 45, .07);--shadow-lg: 0 1rem 3rem rgba(36, 56, 45, .08);--ease: .14s cubic-bezier(.2, .8, .3, 1);color:var(--ink);background:var(--canvas);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}a{color:inherit}button,a{outline-offset:.25rem}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:.15rem solid var(--green);outline-offset:.15rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem .9rem;border:1px solid transparent;border-radius:var(--radius-pill);color:var(--green-deep);background:#fff;font:inherit;font-size:.92rem;font-weight:650;line-height:1.25;text-decoration:none;cursor:pointer}.btn__icon{flex:none;opacity:.85}.btn--secondary{border-color:var(--line-strong);box-shadow:var(--shadow-sm)}.btn--secondary:not(:disabled):hover{border-color:#bccbbf;background:var(--green-tint)}.btn--primary{color:#fff;background:var(--green);box-shadow:var(--shadow-sm)}.btn--primary:not(:disabled):hover{background:var(--green-deep)}.btn--primary .btn__icon{opacity:1}.btn--ghost{color:var(--green-deep);background:transparent}.btn--ghost:not(:disabled):hover{background:var(--green-tint)}.btn--danger{border-color:var(--danger-line);color:var(--danger)}.btn--danger:not(:disabled):hover{border-color:#e0b6b2;background:var(--danger-tint)}.btn--sm{gap:.3rem;padding:.32rem .7rem;font-size:.84rem}.btn--icon{width:2.3rem;height:2.3rem;padding:0}.btn--icon.btn--sm{width:1.9rem;height:1.9rem}.btn[aria-pressed=true]:not(:disabled),.btn[aria-pressed=true]:not(:disabled):hover{border-color:var(--green);color:var(--green-deep);background:var(--green-tint-strong)}.btn--primary[aria-pressed=true]:not(:disabled),.btn--primary[aria-pressed=true]:not(:disabled):hover{color:#fff;background:var(--green-deep)}.btn:not(:disabled):active{transform:translateY(1px)}.btn:disabled{box-shadow:none;opacity:.5;cursor:not-allowed}.btn:disabled[aria-busy=true]{cursor:progress}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.journal-score{padding:0;border:0}.journal-score legend{color:#163c2a;font-weight:750}.journal-score__value{margin:.35rem 0 .65rem;color:#44524a;font-variant-numeric:tabular-nums}.journal-score__options{display:flex;flex-wrap:wrap;gap:.25rem}.journal-score__option{display:grid;width:2.5rem;height:2.5rem;padding:0;place-items:center;border:1px solid var(--line-strong);border-radius:var(--radius-sm);color:#a8b0a9;background:#fff;font:inherit;cursor:pointer}.journal-score__option:not(:disabled):hover{border-color:#d8b98a}.journal-score__option--filled{border-color:#e6cfa4;color:#c08a2e;background:#fdf4e2}.journal-score__option[aria-pressed=true]{border-color:#b8862a;box-shadow:inset 0 0 0 1px #b8862a}.journal-score__option:focus-visible{outline:.15rem solid var(--green);outline-offset:.15rem}.goal-quarter-navigator{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;max-width:32rem;margin:1.25rem 0;padding:.3rem;border-radius:var(--radius-pill);background:var(--green-tint)}.goal-quarter-navigator__value{min-width:7rem;margin:0;color:var(--green-deep);font-size:1.05rem;font-weight:800;font-variant-numeric:tabular-nums;text-align:center}.skip-link{position:fixed;z-index:10;top:.75rem;left:.75rem;padding:.65rem .85rem;transform:translateY(-180%);border-radius:.35rem;background:#fff}.skip-link:focus{transform:translateY(0)}.site-header{display:flex;align-items:center;gap:1.25rem;padding:.85rem clamp(1rem,4vw,4rem);border-bottom:1px solid var(--line);background:#ffffffc7}.brand{display:inline-flex;align-items:center;gap:.45rem;color:var(--green-deep);font-size:1.3rem;font-weight:800;text-decoration:none}.brand__mark{flex:none;color:var(--green)}nav{display:flex;flex:1;align-items:center;flex-wrap:wrap;gap:.35rem}nav a{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .8rem;border-radius:var(--radius-pill);color:var(--ink-soft);font-weight:600;text-decoration:none}nav a:hover{color:var(--green-deep);background:var(--green-tint)}nav a[aria-current=page]{color:var(--green-deep);background:var(--green-tint-strong);font-weight:700}nav a svg{flex:none;opacity:.8}.session-label{margin:0;color:#44524a;font-size:.9rem}.app-main,.status-page{display:grid;min-height:calc(100vh - 4.5rem);padding:clamp(1rem,6vw,5rem);place-items:center}.status-page{min-height:100vh}.panel{width:min(100%,46rem);padding:clamp(1.5rem,4vw,2.75rem);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-lg)}.eyebrow{margin:0 0 .75rem;color:#52665a;font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}h1{max-width:20ch;margin:0;color:var(--green-deep);font-size:clamp(1.9rem,3.2vw,2.6rem);line-height:1.05;letter-spacing:-.01em;text-wrap:balance}.status-page h1{font-size:clamp(2rem,7vw,4.5rem);line-height:1}.panel>h1{margin-bottom:1.25rem}.panel h2,.panel h3{color:var(--green-deep)}.panel h3{margin-bottom:.5rem;font-size:1.05rem}.panel>p:not(.eyebrow){max-width:55ch;margin:1.25rem 0 0;color:#44524a;line-height:1.65}.notice{padding:.85rem 1rem;border-radius:var(--radius);border-left:.25rem solid #9db69f;background:var(--green-tint)}.btn--hero{margin-top:1.5rem;padding:.7rem 1.25rem;font-size:1rem}.text-link{display:inline-block;margin-top:1.5rem;color:var(--green);font-weight:750}@media (max-width: 48rem){.site-header{align-items:center;flex-wrap:wrap;gap:.5rem .5rem}.brand{margin-right:auto}.site-header nav{order:3;flex-basis:100%}.session-label{order:4;flex-basis:100%}.app-main{min-height:auto}}@media (prefers-reduced-motion: no-preference){.skip-link{transition:transform .12s ease,background-color .12s ease}.btn,.calendar__day,.journal-score__option,.record-card,.record-card__quick,.chart-legend__entry,nav a,input,select,textarea{transition:transform var(--ease),border-color var(--ease),background-color var(--ease),box-shadow var(--ease),color var(--ease)}}.page-columns{display:grid;align-items:start;width:100%;max-width:80rem;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr))}.page-columns .panel{width:100%}.landing-login{display:inline-flex;text-decoration:none}.calendar{margin-top:1.5rem}.calendar__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;padding:.25rem;border-radius:var(--radius-pill);background:var(--green-tint)}.calendar__month{margin:0;color:var(--green-deep);font-size:1.02rem;font-weight:750}.calendar__weekdays,.calendar__grid{display:grid;margin:.75rem 0 0;padding:0;gap:.3rem;grid-template-columns:repeat(7,1fr);list-style:none}.calendar__weekdays{margin-bottom:.15rem;color:var(--ink-muted);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-align:center;text-transform:uppercase}.calendar__day{width:100%;min-height:2.4rem;border:1px solid transparent;border-radius:var(--radius-sm);background:#fff;box-shadow:var(--shadow-sm);font:inherit;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer}.calendar__day:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.calendar__day--unscored{color:var(--ink-muted);background:#f0efe9;box-shadow:none}.calendar__day--incomplete{color:var(--danger);font-weight:800}.calendar__day--incomplete:hover,.calendar__day--incomplete:focus-visible{background:var(--danger-tint)}.calendar__day[aria-pressed=true]{border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}.calendar__day--score-1,.calendar__day--score-2,.calendar__day--score-3{background:#f5d3c5}.calendar__day--score-4,.calendar__day--score-5,.calendar__day--score-6{background:#f5e5c5}.calendar__day--score-7,.calendar__day--score-8{background:#dcedd2}.calendar__day--score-9,.calendar__day--score-10{background:#bfe3c0}.journal-editor{display:grid;margin-top:1.5rem;gap:.75rem}.journal-editor textarea{width:100%;padding:.7rem .8rem;border:1px solid var(--line-strong);border-radius:var(--radius);background:#fff;font:inherit;line-height:1.55;resize:vertical}.journal-editor textarea:focus{border-color:var(--green)}.journal-editor>.btn,.record-editor>.btn{justify-self:start}.journal-editor__revised{display:inline-flex;align-items:center;gap:.35rem;margin:0;color:#52665a;font-weight:700}.journal-editor__letters{margin:-.4rem 0 0;color:#6c756f;font-size:.85rem;text-align:right}.incomplete-summary{margin-top:.75rem;font-size:.9rem}.incomplete-summary--clear{margin-bottom:0;color:#6c756f}.incomplete-summary>summary{display:inline-flex;align-items:center;gap:.4rem;width:fit-content;padding:.35rem .75rem;border-radius:var(--radius-pill);color:var(--danger);background:var(--danger-tint);font-weight:700;cursor:pointer}.incomplete-summary>summary::marker,.incomplete-summary>summary::-webkit-details-marker{content:""}.incomplete-summary__dates{display:grid;margin:.5rem 0 0;padding:0;gap:.25rem;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));list-style:none}.incomplete-summary__dates .btn{width:100%;justify-content:space-between;border-radius:var(--radius-sm)}.incomplete-summary__count{color:var(--danger);font-weight:700;font-variant-numeric:tabular-nums}.search,.lookback{display:grid;margin-top:1rem;gap:.5rem}.search__controls{display:flex;gap:.5rem;flex-wrap:wrap}.search__controls input{flex:1;min-width:10rem;padding:.5rem .75rem;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:#fff;font:inherit}.search__controls input:focus{border-color:var(--green)}.search__results{display:flex;margin:0;padding:0;gap:.4rem;flex-wrap:wrap;list-style:none}.lookback{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.record-list{display:grid;margin:.75rem 0;padding:0;gap:.75rem;list-style:none}.record-list__inactive{opacity:.55}.record-card{display:grid;padding:.9rem;gap:.45rem;justify-items:start;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm)}.record-card:hover{box-shadow:var(--shadow)}.record-card--incomplete{border-color:var(--danger-line);background:linear-gradient(snow,#fff)}.record-card__line{display:flex;width:100%;margin:0;gap:.75rem;justify-content:space-between;flex-wrap:wrap}.record-card__flag{display:inline-flex;align-items:center;gap:.35rem;margin:0;padding:.2rem .6rem;border-radius:var(--radius-pill);color:var(--danger);background:var(--danger-tint);font-size:.86rem;font-weight:700}.record-card__line--tags{align-items:center;gap:.35rem;justify-content:flex-start}.record-card__tag{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .55rem;border:1px solid #c6d8ca;border-radius:var(--radius-pill);color:var(--green-deep);background:var(--green-tint);font-size:.85rem;font-weight:600}.record-card__saving{color:var(--ink-muted);font-size:.9rem}.record-card--armed{padding:0}.record-card--armed:not(.record-card--incomplete){border-color:#bcd3c2}.record-card--armed>.btn:not(.record-card__quick){margin:0 .9rem .9rem}.record-card__quick{display:grid;width:100%;padding:.9rem;gap:.45rem;justify-items:start;border:0;border-radius:var(--radius) var(--radius) 0 0;background:none;font:inherit;text-align:left;cursor:pointer}.record-card__quick:hover:not(:disabled){background:var(--green-tint)}.record-card__quick[aria-pressed=true]{background:var(--green-tint-strong)}.record-card__quick:disabled{cursor:progress}.quick-tag{display:grid;margin-bottom:.75rem;padding:.7rem .85rem;gap:.45rem;justify-items:start;border:1px solid var(--line);border-radius:var(--radius);background:var(--canvas)}.quick-tag__label{display:inline-flex;align-items:center;gap:.35rem;color:var(--green-deep);font-weight:700}.quick-tag__list{display:flex;margin:0;padding:0;gap:.35rem;flex-wrap:wrap;list-style:none}.quick-tag__tag[aria-pressed=true]:not(:disabled),.quick-tag__tag[aria-pressed=true]:not(:disabled):hover{border-color:var(--green-deep);color:#fff;background:var(--green)}.quick-tag__hint{margin:0;color:var(--ink-soft);font-size:.88rem}.record-editor{display:grid;padding:1rem;gap:.45rem;border:1px solid var(--line-strong);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}.record-editor label{color:var(--ink-soft);font-size:.85rem;font-weight:650}.record-editor input,.record-editor select{padding:.55rem .7rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;font:inherit}.record-editor input:focus,.record-editor select:focus{border-color:var(--green)}.record-editor input:hover,.record-editor select:hover{border-color:#bccbbf}.numeric-input{position:relative;display:grid}.numeric-input__prefix{position:absolute;top:0;bottom:0;left:.6rem;display:flex;align-items:center;color:#4c5a51;pointer-events:none}.numeric-input .numeric-input__field{padding-left:1.5rem}.record-editor__actions,.record-card__actions{display:flex;margin-top:.35rem;gap:.5rem;flex-wrap:wrap}.tag-picker{display:grid;margin-top:.35rem;gap:.4rem}.tag-picker__label{display:inline-flex;align-items:center;gap:.35rem;color:var(--ink-soft);font-size:.85rem;font-weight:650}.tag-picker__list{display:flex;margin:0;padding:0;gap:.35rem;flex-wrap:wrap;list-style:none}.tag-picker__tag{border-style:dashed;border-color:var(--line-strong);color:var(--ink-soft);box-shadow:none;font-weight:600}.tag-picker__tag[aria-pressed=true]:not(:disabled),.tag-picker__tag[aria-pressed=true]:not(:disabled):hover{border-style:solid;border-color:var(--green);color:var(--green-deep);background:var(--green-tint);font-weight:700}.tag-picker__empty{color:var(--ink-muted);font-size:.9rem}.data-table{width:100%;margin-top:1rem;border-collapse:collapse}.data-table caption{padding-bottom:.4rem;color:var(--green-deep);font-weight:800;text-align:left}.data-table th,.data-table td{padding:.5rem .6rem;border-bottom:1px solid var(--line);text-align:left;font-variant-numeric:tabular-nums}.data-table th{color:var(--ink-soft);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.data-table tbody tr:hover{background:var(--green-tint)}.range-controls,.history-controls{display:grid;margin-top:1rem;gap:.5rem;justify-items:start}.range-controls input,.history-controls input,.history-controls select{padding:.5rem .7rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;font:inherit}.range-controls input:focus,.history-controls input:focus,.history-controls select:focus{border-color:var(--green)}.range-controls>label,.history-controls>label{color:var(--ink-soft);font-size:.85rem;font-weight:650}.history-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .75rem}.history-controls input{width:4.5rem}.history-controls input,.history-controls select{padding:.35rem .5rem}.range-controls__presets{display:flex;gap:.5rem;flex-wrap:wrap}.spending-total{font-size:1.1rem}.history-tags{margin-top:1rem;padding:.85rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--canvas)}.history-tags legend{padding:0 .4rem;color:var(--ink-soft);font-size:.85rem;font-weight:700}.history-tags__actions{display:flex;gap:.5rem;margin-bottom:.6rem}.history-tags__tag{display:inline-flex;align-items:center;gap:.35rem;margin-right:.75rem;font-size:.92rem}.history-tags__tag input{accent-color:var(--green)}.goal-status{display:inline-flex;align-items:center;gap:.35rem;margin:0;padding:.3rem .75rem;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:#fff;font-size:.88rem;font-weight:700}.goal-status--failed{border-color:var(--danger-line);color:var(--danger);background:var(--danger-tint)}.goal-status--in-progress{border-color:#e3d3a5;color:#8a6d1a;background:#fbf5e4}.goal-status--passed{border-color:#bcd3c2;color:var(--green);background:var(--green-tint)}.app-main>*,.page-columns>.panel,.journal-editor>*,.record-editor input,.record-editor select,.range-controls input,.history-controls input,.history-controls select{min-width:0;max-width:100%}.search__controls input{flex:1 1 10rem;min-width:0}.table-scroll{width:100%;max-width:100%;overflow-x:auto}.table-scroll .data-table{min-width:max-content}.record-card__line,.spending-total,.panel h1,.panel h2,.panel label{overflow-wrap:anywhere}.pie-chart{display:flex;align-items:center;flex-wrap:wrap;margin:1.25rem 0 0;gap:1.25rem}.pie-chart__svg{width:min(100%,15rem);height:auto;flex:0 1 15rem}.pie-chart__slice{cursor:pointer;transition:opacity .12s ease}.pie-chart__slice--active{opacity:.85}.pie-chart__center-label,.pie-chart__center-value{text-anchor:middle;fill:#44524a;font-size:.8rem}.pie-chart__center-value{fill:#18221d;font-size:1.05rem;font-weight:750}.chart-legend{display:grid;min-width:0;margin:0;padding:0;flex:1 1 14rem;gap:.35rem;list-style:none}.chart-legend__entry{display:grid;align-items:center;width:100%;padding:.35rem .5rem;border:1px solid transparent;border-radius:.35rem;background:none;gap:.5rem;grid-template-columns:auto 1fr auto auto;font:inherit;text-align:left;cursor:pointer}.chart-legend__entry:hover,.chart-legend__entry--hovered{border-color:var(--line);border-radius:var(--radius-sm);background:var(--canvas)}.chart-legend__entry[aria-pressed=true]{border-color:var(--green);border-radius:var(--radius-sm);background:var(--green-tint)}.chart-legend__swatch{width:.85rem;height:.85rem;border-radius:.2rem}.chart-legend__name{overflow-wrap:anywhere;font-weight:600}.chart-legend__value,.chart-legend__percent{color:#44524a;font-variant-numeric:tabular-nums}.history-chart{margin-top:1rem}.history-chart__svg{display:block;width:100%;max-width:100%;height:auto}.history-chart__gridline{stroke:#e7e4da;stroke-width:1}.history-chart__axis{stroke:#c9c7bd;stroke-width:1}.history-chart__tick{fill:#44524a;font-size:11px}.history-chart__cap-label{fill:#18221d;font-size:12px;font-weight:600}.history-chart__bar{cursor:default;outline-offset:0}.history-chart__bar--active path{opacity:.85}.history-chart__bar:focus-visible{outline:.15rem solid #24533d}.chart-readout{min-height:1.5rem;margin:.35rem 0 0;color:#44524a;font-variant-numeric:tabular-nums}.pie-chart__center-label,.pie-chart__center-value{pointer-events:none}.other-breakout{width:100%;margin-top:.25rem}.other-breakout__caption{display:flex;align-items:center;margin:0 0 .35rem;gap:.4rem;color:#44524a;font-size:.9rem}.other-breakout__bar{display:flex;width:100%;height:1.4rem;gap:2px}.other-breakout__segment:first-child{border-radius:.25rem 0 0 .25rem}.other-breakout__segment:last-child{border-radius:0 .25rem .25rem 0}.other-breakout__segment{min-width:.5rem;padding:0;border:0;flex-basis:0;cursor:pointer}.other-breakout__segment--hovered,.other-breakout__segment:hover{opacity:.85}.other-breakout__segment[aria-pressed=true]{outline:.15rem solid #24533d;outline-offset:.1rem}.other-breakout__labels{display:flex;margin:.4rem 0 0;padding:0;flex-wrap:wrap;gap:.35rem 1rem;list-style:none}.other-breakout__label{display:inline-flex;align-items:center;gap:.35rem;color:#44524a;font-size:.85rem;font-variant-numeric:tabular-nums}.chart-legend__swatch--in-other{box-shadow:0 0 0 2px #898781}.panel--wide{width:min(100%,80rem)}.page-columns--single{grid-template-columns:1fr}.spending-columns{display:grid;align-items:start;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr))}.spending-columns__col{min-width:0;max-width:100%}.dialog-overlay{position:fixed;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:3rem 1rem;background:#18221d73;top:0;right:0;bottom:0;left:0;overflow-y:auto}.dialog{width:min(100%,32rem);padding:1.5rem;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:0 1rem 3rem #24382d40}.dialog__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--line)}.dialog__header h2{display:inline-flex;align-items:center;gap:.5rem;margin:0;color:var(--green-deep)}.dialog h3{display:inline-flex;align-items:center;gap:.4rem;color:var(--green-deep)}
