:root{--color-bg:#fbf7f0;--color-surface:#fff;--color-surface-muted:#f3ede2;--color-border:#ede4d6;--color-border-strong:#e0d5c3;--color-text:#211c15;--color-text-secondary:#6f6353;--color-text-muted:#8a7c68;--color-text-faint:#a1937e;--color-text-disabled:#d6cbb8;--color-accent:#c2552d;--color-accent-on:#fff;--color-accent-on-muted:#f3cdbc;--color-accent-track:#f1eae0;--color-danger:#b3261e;--color-danger-bg:#fdecea;--color-danger-border:#e8b4ae;--color-danger-text:#8f4a43;--color-scrim:#2b1f0f8c;--font-family-display:"Source Serif 4", Georgia, serif;--font-family-ui:Inter, system-ui, -apple-system, sans-serif;--font-family-mono:"PT Mono", ui-monospace, monospace;--font-weight-regular:400;--font-weight-semibold:600;--font-weight-bold:700;--font-size-display-xl:40px;--font-size-display-lg:36px;--font-size-display-md:32px;--font-size-display-sm:28px;--font-size-display-xs:26px;--font-size-number-lg:22px;--font-size-body-lg:17px;--font-size-body-md:16px;--font-size-body:15px;--font-size-body-sm:14px;--font-size-caption:13px;--font-size-caption-sm:12px;--font-size-label:11px;--font-size-overline:10px;--font-size-overline-sm:9px;--font-line-height-tight:110%;--font-line-height-heading:115%;--font-line-height-body:150%;--font-line-height-auto:auto;--font-letter-spacing-normal:0em;--font-letter-spacing-tight:-.02em;--font-letter-spacing-overline:.1em;--font-letter-spacing-overline-wide:.12em;--space-1:2px;--space-2:4px;--space-3:6px;--space-4:8px;--space-5:10px;--space-6:12px;--space-7:14px;--space-8:16px;--space-9:18px;--space-10:20px;--space-11:22px;--space-screen-padding-x:20px;--space-screen-padding-top:58px;--space-screen-padding-bottom:20px;--space-card-padding:16px;--space-sheet-padding-x:20px;--space-list-gap:12px;--space-section-gap:22px;--radius-sm:10px;--radius-md:12px;--radius-lg:14px;--radius-xl:16px;--radius-2xl:18px;--radius-dialog:22px;--radius-sheet:28px;--radius-pill:999px;--radius-full:50%;--size-check-circle:46px;--size-check-icon:20px;--size-week-dot:9px;--size-week-dot-gap:5px;--size-calendar-cell:42px;--size-calendar-gap:9px;--size-progress-bar:6px;--size-stat-bar:10px;--size-tab-icon:18px;--size-tab-bar-height:76px;--size-ghost-circle:88px;--size-min-tap-target:44px;--stroke-hairline:1px;--stroke-default:1.5px;--stroke-strong:2px;--stroke-icon:2.4px;--stroke-check:2.6px;--shadow-card:0 2px 8px #2b1f0f12;--shadow-sheet:0 -6px 24px #2b1f0f26;--shadow-dialog:0 10px 30px #2b1f0f33;--dash-default:6 5;--dash-cell:3 3;--dash-ghost:7 6}*,:before,:after{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family-ui);font-size:var(--font-size-body-md);line-height:var(--font-line-height-body);-webkit-font-smoothing:antialiased;margin:0}:focus-visible{outline:var(--stroke-strong) solid var(--color-accent);outline-offset:var(--space-1)}.screen{max-width:28rem;padding:var(--space-screen-padding-top) var(--space-screen-padding-x) var(--space-screen-padding-bottom);margin:0 auto}.display{margin:0 0 var(--space-section-gap);font-family:var(--font-family-display);font-size:var(--font-size-display-xl);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-tight);letter-spacing:var(--font-letter-spacing-tight)}.overline{margin:0 0 var(--space-4);color:var(--color-text-muted);font-size:var(--font-size-label);font-weight:var(--font-weight-semibold);letter-spacing:var(--font-letter-spacing-overline);text-transform:uppercase}.hint{margin:var(--space-section-gap) 0 0;color:var(--color-text-secondary);font-size:var(--font-size-body)}.back{margin-bottom:var(--space-6);color:var(--color-text-secondary);font:inherit;font-size:var(--font-size-body-lg);cursor:pointer;background:0 0;border:0;padding:0;display:block}.button{min-height:var(--size-min-tap-target);padding:var(--space-6) var(--space-8);border:var(--stroke-hairline) solid var(--color-border-strong);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--font-size-body-lg);font-weight:var(--font-weight-semibold);cursor:pointer}.button.is-primary{background:var(--color-accent);color:var(--color-accent-on);border-color:#0000}.button.is-danger{color:var(--color-danger);background:0 0;border-color:#0000}.new-habit{width:100%;min-height:var(--size-min-tap-target);margin-top:var(--space-list-gap);padding:var(--space-9);border:var(--stroke-default) dashed var(--color-border-strong);border-radius:var(--radius-xl);color:var(--color-text-secondary);font:inherit;font-size:var(--font-size-body-lg);cursor:pointer;background:0 0}.progress{margin-bottom:var(--space-section-gap)}.progress-text{margin:0 0 var(--space-5);color:var(--color-text-secondary);font-size:var(--font-size-body-lg)}.progress-track{height:var(--size-progress-bar);border-radius:var(--radius-pill);background:var(--color-accent-track);overflow:hidden}.progress-fill{border-radius:var(--radius-pill);background:var(--color-accent);height:100%}.habits{gap:var(--space-list-gap);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.habit-card{align-items:center;gap:var(--space-7);padding:var(--space-card-padding);border-radius:var(--radius-xl);background:var(--color-surface);box-shadow:var(--shadow-card);display:flex;position:relative}.habit-open{gap:var(--space-3);min-width:0;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;padding:0;display:flex}.habit-name{padding-right:var(--size-min-tap-target);color:var(--color-text);font-size:var(--font-size-body-lg);font-weight:var(--font-weight-bold)}.habit-edit{top:var(--space-1);right:var(--space-1);width:var(--size-min-tap-target);height:var(--size-min-tap-target);color:var(--color-text-faint);font-size:var(--font-size-body-lg);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute}.check{width:var(--size-check-circle);height:var(--size-check-circle);border:var(--stroke-default) solid var(--color-border-strong);border-radius:var(--radius-full);cursor:pointer;background:0 0;flex:none;place-items:center;padding:0;display:grid}.check[aria-pressed=true]{background:var(--color-accent);border-color:#0000}.check-mark{width:var(--size-check-icon);height:var(--size-check-icon);fill:none;stroke:var(--color-accent-on);stroke-width:var(--stroke-check);stroke-linecap:round;stroke-linejoin:round;visibility:hidden}.check[aria-pressed=true] .check-mark{visibility:visible}.streak-line{justify-content:space-between;align-items:center;gap:var(--space-8);display:flex}.streak-words{color:var(--color-accent);font-size:var(--font-size-body)}.week-dots{gap:var(--size-week-dot-gap);flex:none;display:flex}.dot{width:var(--size-week-dot);height:var(--size-week-dot);border-radius:var(--radius-full);background:var(--color-accent-track)}.dot.is-on{background:var(--color-accent)}.empty{align-items:center;gap:var(--space-8);padding-top:var(--space-section-gap);text-align:center;flex-direction:column;display:flex}.empty-ring{width:var(--size-ghost-circle);height:var(--size-ghost-circle);border:var(--stroke-default) dashed var(--color-border-strong);border-radius:var(--radius-full)}.empty-title{font-family:var(--font-family-display);font-size:var(--font-size-display-sm);font-weight:var(--font-weight-regular);margin:0}.empty-text{max-width:20rem;color:var(--color-text-secondary);font-size:var(--font-size-body-lg);margin:0}.empty .button{width:100%}.display.is-tight{margin-bottom:var(--space-2)}.subtitle{margin:0 0 var(--space-section-gap);color:var(--color-text-muted);font-size:var(--font-size-body-lg)}.streak-cards{gap:var(--space-list-gap);margin-bottom:var(--space-section-gap);grid-template-columns:1fr 1fr;display:grid}.streak-card{padding:var(--space-card-padding);border-radius:var(--radius-xl);background:var(--color-surface);box-shadow:var(--shadow-card)}.streak-card.is-current{background:var(--color-accent);box-shadow:none}.streak-card.is-current .overline{color:var(--color-accent-on-muted)}.streak-number{font-size:var(--font-size-number-lg);font-weight:var(--font-weight-bold);margin:0}.streak-card.is-current .streak-number{color:var(--color-accent-on)}.month{margin-bottom:var(--space-6);font-size:var(--font-size-body-lg);font-weight:var(--font-weight-semibold);justify-content:space-between;align-items:center;display:flex}.month button{min-width:var(--size-min-tap-target);min-height:var(--size-min-tap-target);color:var(--color-text-secondary);font:inherit;font-size:var(--font-size-display-xs);cursor:pointer;background:0 0;border:0}.month button:disabled{color:var(--color-text-disabled);cursor:default}.calendar{gap:var(--size-calendar-gap);grid-template-columns:repeat(7,1fr);justify-items:center;display:grid}.weekday{color:var(--color-text-faint);font-size:var(--font-size-caption)}.day{width:var(--size-calendar-cell);height:var(--size-calendar-cell);border:var(--stroke-hairline) solid transparent;border-radius:var(--radius-full);color:var(--color-text-secondary);font:inherit;font-size:var(--font-size-body);cursor:pointer;background:0 0;place-items:center;padding:0;display:grid}.day[aria-pressed=true]{background:var(--color-accent);color:var(--color-accent-on);font-weight:var(--font-weight-semibold)}.day.is-today{border-color:var(--color-text);border-width:var(--stroke-strong)}.day:disabled{color:var(--color-text-disabled);cursor:default}.scrim{background:var(--color-scrim);border:0;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:28rem;padding:var(--space-section-gap) var(--space-sheet-padding-x);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;background:var(--color-surface);box-shadow:var(--shadow-sheet)}.sheet h2{margin:0 0 var(--space-8);font-family:var(--font-family-display);font-size:var(--font-size-display-sm);font-weight:var(--font-weight-regular)}.sheet-actions{gap:var(--space-list-gap);margin-top:var(--space-list-gap);display:flex}.sheet-actions>*{flex:1}.field{width:100%;min-height:var(--size-min-tap-target);padding:var(--space-7) var(--space-8);border:var(--stroke-default) solid var(--color-accent);border-radius:var(--radius-lg);background:var(--color-bg);color:var(--color-text);font:inherit;font-size:var(--font-size-body-lg)}.field-hint{margin:var(--space-5) 0 0;color:var(--color-text-secondary);font-size:var(--font-size-body)}.sheet-delete{margin-top:var(--space-section-gap);text-align:center}.sheet-delete .field-hint{margin-top:var(--space-3)}
