:root{--color-paper: oklch(97% .012 95);--color-paper-2: oklch(94% .016 95);--color-paper-3: oklch(91% .02 95);--color-surface: oklch(99% .006 95);--color-border: oklch(88% .014 95);--color-ink: oklch(22% .012 250);--color-ink-soft: oklch(45% .014 250);--color-accent: oklch(86% .18 95);--color-accent-deep: oklch(72% .17 95);--color-accent-2: oklch(66% .18 235);--color-accent-2-deep: oklch(52% .16 235);--color-accent-3: oklch(64% .23 22);--color-mint: oklch(72% .15 150);--color-lavender: oklch(74% .16 305);--medal-bronze: oklch(62% .09 55);--medal-silver: oklch(72% .02 250);--medal-gold: oklch(80% .13 90);--medal-empty: var(--color-border);--color-danger: oklch(55% .2 25);--color-success: oklch(58% .14 150);--color-focus: oklch(52% .2 250);--tint-build: oklch(86% .18 95 / .1);--tint-build-hover: oklch(86% .18 95 / .18);--tint-break: oklch(66% .18 235 / .09);--tint-break-hover: oklch(66% .18 235 / .16);--font-display: "Plus Jakarta Sans", "Geist", system-ui, sans-serif;--font-body: "Plus Jakarta Sans", "Geist", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-xs: .8125rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--text-display: clamp(2.25rem, 6vw, 3rem);--tracking-display: -.025em;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-card: 20px;--radius-input: 12px;--radius-pill: 999px;--color-border-hover: oklch(80% .02 95);--color-danger-deep: oklch(45% .2 25);--color-accent-3-deep: oklch(50% .2 22);--color-accent-3-ink: oklch(99% .01 22);--color-add-border: oklch(80% .05 95);--focus-ring: 0 0 0 3px oklch(52% .2 250 / .25);--btn-cast: oklch(72% .17 95 / .42);--btn-cast-3: oklch(64% .23 22 / .4);--ink-cast: oklch(22% .012 250 / .16);--shadow-card: 0 12px 32px -16px oklch(22% .012 250 / .18);--shadow-card-hover: 0 18px 40px -16px oklch(22% .012 250 / .24);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-snap: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.2, .7, .3, 1);--dur-fast: .14s;--dur-base: .22s;--dur-slow: .42s;--page-max: 44rem;--page-gutter: 1.25rem}*,*:before,*:after{box-sizing:border-box}html,body{overflow-x:clip}body{margin:0;min-height:100vh;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);font-weight:600;font-style:normal;letter-spacing:var(--tracking-display);line-height:1.15;margin:0;overflow-wrap:anywhere}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0}a{color:var(--color-accent-2-deep);text-underline-offset:2px}.muted{color:var(--color-ink-soft);font-size:var(--text-sm)}.error{color:var(--color-danger);font-size:var(--text-sm);margin:0}.centered{text-align:center;margin-top:var(--space-3xl)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px;border-radius:4px}.spark{display:inline-block;width:1em;height:1em;flex:none;background:var(--spark-color, var(--color-accent));clip-path:polygon(50% 0%,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0% 50%,39% 39%);animation:spark-pulse 4s var(--ease-snap) infinite}@keyframes spark-pulse{0%,to{transform:scale(1) rotate(0)}50%{transform:scale(1.12) rotate(12deg)}}button,a[role=button]{--btn-face: var(--color-accent);--btn-edge: var(--color-accent-deep);--btn-ink: var(--color-ink);display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:44px;padding:.7rem 1.25rem;border:0;border-radius:var(--radius-pill);background:var(--btn-face);color:var(--btn-ink);font:inherit;font-weight:600;text-decoration:none;cursor:pointer;transform:translateY(0);box-shadow:0 4px 0 0 var(--btn-edge),0 6px 14px -4px var(--btn-cast);transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),background-color .16s}button:hover,a[role=button]:hover{transform:translateY(-2px);box-shadow:0 6px 0 0 var(--btn-edge),0 12px 22px -6px var(--btn-cast)}button:active,a[role=button]:active{transform:translateY(3px);box-shadow:0 1px 0 0 var(--btn-edge),0 2px 6px -2px var(--btn-cast);transition-duration:70ms}button:focus-visible,a[role=button]:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:0 4px 0 0 var(--btn-edge)}button.secondary,a.secondary[role=button]{--btn-face: var(--color-surface);--btn-edge: var(--color-border);--btn-ink: var(--color-ink);box-shadow:0 2px 0 0 var(--btn-edge),0 4px 12px -6px var(--ink-cast)}button.secondary:hover,a.secondary[role=button]:hover{--btn-face: var(--color-paper-2);box-shadow:0 4px 0 0 var(--btn-edge),0 10px 20px -8px var(--ink-cast)}button.secondary:active,a.secondary[role=button]:active{box-shadow:0 1px 0 0 var(--btn-edge)}button.danger{--btn-face: var(--color-accent-3);--btn-edge: var(--color-accent-3-deep);--btn-ink: var(--color-accent-3-ink);box-shadow:0 4px 0 0 var(--btn-edge),0 6px 14px -4px var(--btn-cast-3)}button.link-danger{min-height:0;padding:.15rem 0;background:none;color:var(--color-danger);box-shadow:none;border-radius:4px;text-decoration:underline;font-weight:500}button.link-danger:hover{transform:none;box-shadow:none;color:var(--color-danger-deep)}button.link-danger:active{transform:none;box-shadow:none}form{display:flex;flex-direction:column;gap:var(--space-md)}label{display:flex;flex-direction:column;gap:.35rem;font-size:var(--text-sm);font-weight:600}input,textarea,select{width:100%;padding:.6rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);color:var(--color-ink);font:inherit;transition:border-color .14s var(--ease-out),box-shadow .14s var(--ease-out)}input:hover,textarea:hover,select:hover{border-color:var(--color-border-hover)}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;border-color:var(--color-focus);box-shadow:var(--focus-ring)}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--color-danger)}textarea{resize:vertical;min-height:3.5rem}fieldset{border:1.5px solid var(--color-border);border-radius:var(--radius-input);padding:var(--space-sm) var(--space-md);margin:0}legend{font-size:var(--text-sm);font-weight:600;padding:0 .35rem}label.radio{flex-direction:row;align-items:center;gap:.5rem;font-weight:400;padding:.25rem 0}label.radio input{width:auto;accent-color:var(--color-accent-deep)}.auth-card{max-width:24rem;margin:clamp(2rem,8vh,5rem) auto;padding:var(--space-xl);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.lockup{display:flex;align-items:center;gap:.55rem;margin-bottom:var(--space-lg);font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:var(--tracking-display)}.auth-card h1{font-size:var(--text-xl);margin-bottom:var(--space-md)}.auth-switch{margin-top:var(--space-lg);font-size:var(--text-sm);color:var(--color-ink-soft)}.app-shell{min-height:100vh}.dashboard{max-width:var(--page-max);margin:0 auto;padding:var(--space-lg) var(--page-gutter) var(--space-3xl)}.app-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap;padding-bottom:var(--space-md);margin-bottom:var(--space-lg);border-bottom:1px solid var(--color-border)}.app-bar .lockup{margin:0}.lockup-link{color:inherit;text-decoration:none}.lockup-link:hover{opacity:.75}.dashboard-user{display:flex;align-items:center;gap:var(--space-sm)}.dashboard-user .muted{max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.new-habit-tile{width:100%;min-height:3.25rem;border:2px dashed var(--color-add-border);border-radius:var(--radius-card);background:transparent;color:var(--color-ink-soft);font-weight:600;box-shadow:none}.new-habit-tile:hover{transform:translateY(-1px);border-color:var(--color-accent-deep);color:var(--color-ink);background:var(--tint-build);box-shadow:none}.new-habit-tile:active{transform:none;box-shadow:none}.dashboard-actions{margin-bottom:var(--space-xl)}.load-error{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}.section-empty{padding:var(--space-lg);border:1.5px dashed var(--color-border);border-radius:var(--radius-card);color:var(--color-ink-soft);font-size:var(--text-sm)}.goal-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-lg)}.goal-card{--spark-color: var(--color-accent);border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);box-shadow:var(--shadow-card)}.goal-card--link{display:block;text-decoration:none;color:inherit;transition:transform var(--dur-base) var(--ease-spring),box-shadow var(--dur-base) var(--ease-spring)}@media(hover:hover){.goal-card--link:hover{transform:translateY(-3px);box-shadow:var(--shadow-card-hover)}}.goal-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.goal-card-head h3{font-size:var(--text-lg)}.goal-card-progress{flex:none;font-size:var(--text-sm);text-align:right}.goal-card-fraction{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);font-variant-numeric:tabular-nums}.back-to-dashboard{margin-bottom:var(--space-lg)}.goal-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-lg)}.goal-detail-head h1{font-size:var(--text-2xl)}.goal-progress-line{margin-top:var(--space-xs);font-weight:600}.goal-ended-note{margin-bottom:var(--space-lg);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--tint-build);display:flex;flex-direction:column;gap:var(--space-sm)}.goal-ended-note p{font-size:var(--text-sm);color:var(--color-ink-soft)}.goal-ended-note .date-shortcuts{margin-top:0}.goal-card-ended{margin-top:.15rem;font-size:var(--text-xs);color:var(--color-ink-soft);font-weight:600}.milestone-badges{display:flex;align-items:center;gap:.4rem}.medal{width:.95rem;height:.95rem;border-radius:var(--radius-pill);border:1.5px solid var(--medal-empty);background:transparent;flex:none}.medal--earned{border-color:transparent}.medal--bronze.medal--earned{background:var(--medal-bronze)}.medal--silver.medal--earned{background:var(--medal-silver)}.medal--gold.medal--earned{background:var(--medal-gold)}.habit-target{font-size:var(--text-sm);color:var(--color-ink-soft)}.create-buttons{display:flex;gap:var(--space-xs);flex-wrap:wrap}.date-row{display:flex;gap:var(--space-sm);flex-wrap:wrap}.date-row label{flex:1 1 8rem}.date-shortcuts{display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap;margin-top:calc(-1 * var(--space-xs));font-size:var(--text-sm)}.date-shortcuts button{min-height:0;padding:.35rem .7rem;font-size:var(--text-sm)}.goal-picker{cursor:pointer}.new-goal-fields{display:flex;flex-direction:column;gap:var(--space-sm);background:var(--color-paper)}.target-days input{max-width:7rem}.target-days .muted{font-weight:400}.goal-dates{margin-top:.15rem;font-size:var(--text-sm);color:var(--color-ink-soft);font-variant-numeric:tabular-nums}.month-calendar{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:var(--space-lg);margin-bottom:var(--space-xl);box-shadow:var(--shadow-card)}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap;margin-bottom:var(--space-md)}.month-nav .secondary{min-height:0;padding:.4rem .7rem;font-size:var(--text-sm)}.month-title{font-size:var(--text-lg);text-align:center;flex:1 1 8rem}.month-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.month-cal-head{font-size:var(--text-xs);text-align:center;color:var(--color-ink-soft);padding-bottom:.15rem}.month-cal-cell{position:relative;aspect-ratio:1;border-radius:6px;background:var(--color-paper);padding:2px;overflow:hidden}button.month-cal-cell{display:block;width:100%;min-height:0;border:0;font:inherit;color:inherit;text-align:left;box-shadow:none;transform:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}button.month-cal-cell:hover{background:var(--color-paper-3);transform:none;box-shadow:none}button.month-cal-cell:active{transform:none;box-shadow:none}button.month-cal-cell.is-complete:hover{background:color-mix(in oklch,var(--color-mint) 38%,var(--color-paper))}.month-cal-cell.is-out{opacity:.4}.month-cal-cell.is-future{opacity:.55}.month-cal-cell.is-today{outline:2px solid var(--color-ink);outline-offset:-2px}.month-cal-cell.is-complete{background:color-mix(in oklch,var(--color-mint) 26%,var(--color-paper))}.cal-ring{position:absolute;top:2px;right:2px;width:.8rem;height:.8rem;border-radius:var(--radius-pill);background:conic-gradient(var(--color-mint) calc(var(--ratio, 0) * 1turn),var(--color-paper-3) 0);-webkit-mask:radial-gradient(circle at center,transparent 42%,#000 44%);mask:radial-gradient(circle at center,transparent 42%,#000 44%)}.cal-check{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:color-mix(in oklch,var(--color-mint) 70%,var(--color-ink))}.cal-check svg{width:58%;height:58%}.month-cal-day{font-size:.7rem;color:var(--color-ink-soft);font-variant-numeric:tabular-nums}.cal-dots{display:flex;flex-wrap:wrap;gap:2px;margin-top:1px}.cal-dot{width:.5rem;height:.5rem;flex:none;border-radius:var(--radius-pill);background:var(--dot, var(--color-ink-soft))}.cal-dot--relapse{box-shadow:0 0 0 2px var(--color-danger)}.cal-more{font-size:.6rem;color:var(--color-ink-soft);line-height:.5rem}.month-legend{list-style:none;margin:var(--space-md) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);font-size:var(--text-sm)}.month-legend li{display:flex;align-items:center;gap:.4rem}.goal-list-heading{font-size:var(--text-lg);margin-bottom:var(--space-md)}.app-modal{border:0;border-radius:var(--radius-card);padding:0;max-width:min(32rem,calc(100vw - 2 * var(--space-md)));width:100%;background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-card-hover)}.app-modal::backdrop{background:#161b206b}.app-modal-body{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);max-height:min(80vh,44rem);overflow-y:auto}.app-modal-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm)}.app-modal-head h2{font-size:var(--text-lg)}.app-modal-close{min-height:0;padding:.3rem .7rem;font-size:var(--text-sm)}.day-modal-groups{display:flex;flex-direction:column;gap:var(--space-md)}.day-modal-group h3{font-size:var(--text-sm);color:var(--color-ink-soft);margin-bottom:var(--space-xs)}.day-habit-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.day-habit-toggle{--card-accent: var(--color-border);display:flex;align-items:center;gap:var(--space-xs);width:100%;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-paper);color:var(--color-ink);font:inherit;text-align:left;min-height:0;box-shadow:none;transform:none}button.day-habit-toggle{cursor:pointer}button.day-habit-toggle:hover{background:var(--color-paper-3);transform:none;box-shadow:none}button.day-habit-toggle:disabled{cursor:not-allowed;opacity:.55}.day-habit-toggle.is-done{background:color-mix(in oklch,var(--color-mint) 20%,var(--color-paper));border-color:color-mix(in oklch,var(--color-mint) 45%,var(--color-border))}.day-habit-toggle.is-relapse{background:color-mix(in oklch,var(--color-danger) 12%,var(--color-paper))}.day-habit-title{flex:1 1 auto;font-weight:600}.day-habit-status{font-size:var(--text-sm);color:var(--color-ink-soft)}.day-habit-mark{flex:none;width:1.1rem;text-align:center;color:color-mix(in oklch,var(--color-mint) 70%,var(--color-ink));font-weight:700}.day-modal-create{display:flex;gap:var(--space-xs);flex-wrap:wrap;border-top:1px solid var(--color-border);padding-top:var(--space-md)}.onboarding-help{min-height:0;width:2rem;height:2rem;padding:0;border-radius:var(--radius-pill);font-weight:700}.onboarding-visual{display:flex;flex-direction:column;gap:var(--space-xs);align-items:center;padding:var(--space-md);background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-input)}.onboarding-visual .muted{text-align:center}.onboarding-mock-goal{width:100%;display:flex;flex-direction:column;gap:var(--space-xs)}.onboarding-mock-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-sm);font-family:var(--font-display)}.onboarding-mock-habits{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2xs)}.onboarding-mock-habits li{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);font-weight:600}.onboarding-mock-name{flex:1 1 auto}.onboarding-mock-dot{width:.6rem;height:.6rem;flex:none;border-radius:var(--radius-pill);background:var(--color-accent)}.onboarding-mock-dot--2{background:var(--color-accent-2)}.onboarding-mock-habits li.is-done{background:color-mix(in oklch,var(--color-mint) 20%,var(--color-surface));border-color:color-mix(in oklch,var(--color-mint) 45%,var(--color-border))}.onboarding-mock-check{flex:none;font-weight:700;color:color-mix(in oklch,var(--color-mint) 70%,var(--color-ink))}.onboarding-dots{list-style:none;margin:var(--space-xs) 0 0;padding:0;display:flex;gap:var(--space-2xs)}.onboarding-dots li{width:.4rem;height:.4rem;border-radius:var(--radius-pill);background:var(--color-border)}.onboarding-dots li.is-current{background:var(--color-accent-deep)}.onboarding-progress{margin-top:0}.onboarding-nav{display:flex;flex-wrap:wrap;gap:var(--space-xs);align-items:center;margin-top:var(--space-xs)}.onboarding-nav>button:last-child{margin-left:auto}.habit-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.habit-row{--card-tint: var(--tint-build);--card-accent: var(--color-accent);--spark-color: var(--card-accent);border:1px solid var(--color-border);border-radius:var(--radius-input);background:linear-gradient(var(--card-tint),var(--card-tint)),var(--color-surface);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.habit-row--build{--card-tint: var(--tint-build);--card-accent: var(--color-accent)}.habit-row--break{--card-tint: var(--tint-break);--card-accent: var(--color-accent-2)}.habit-row-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.habit-row-head h4{margin:.1rem 0 0;font-family:var(--font-display);font-size:var(--text-base);font-weight:600}.habit-focus{margin-top:.15rem;font-size:var(--text-sm);color:var(--color-ink-soft)}.habit-focus:before{content:"↳ ";opacity:.6}.type-pill{align-self:flex-start;padding:.15rem .6rem;border-radius:var(--radius-pill);background:color-mix(in oklch,var(--card-accent) 22%,var(--color-surface));color:var(--color-ink);font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.card-actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);align-items:center;margin-top:.15rem}.card-actions button{position:relative}.confirm-row{display:flex;flex-wrap:wrap;gap:var(--space-xs);align-items:center;width:100%}.confirm-row input{flex:1 1 10rem;min-width:0}.streak-badge{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.streak-badge .spark{align-self:center;font-size:1.1rem}.streak-badge-num{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);font-variant-numeric:tabular-nums;line-height:1}.streak-badge-main{font-weight:600}.streak-badge-sub{width:100%;font-size:var(--text-sm);color:var(--color-ink-soft)}.stats-pending{font-size:var(--text-sm);color:var(--color-ink-soft)}.stats-error{display:flex;flex-wrap:wrap;gap:var(--space-xs);align-items:center;font-size:var(--text-sm)}.goal-form{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:var(--space-lg);box-shadow:var(--shadow-card)}.goal-form-delete{margin-top:var(--space-sm);border-top:1px solid var(--color-border);padding-top:var(--space-sm)}.habit-calendar{margin-top:var(--space-xs)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;max-width:16rem}.cal-head{font-size:.7rem;text-align:center;color:var(--color-ink-soft)}.cal-cell{aspect-ratio:1;border-radius:4px;background:var(--color-paper-3)}.cal-cell--done{background:var(--color-accent)}.cal-cell--miss{background:var(--color-paper-3)}.cal-cell--clean{background:var(--color-mint)}.cal-cell--relapse{background:var(--color-danger)}.cal-cell--future{background:transparent;border:1px dashed var(--color-border)}.cal-cell--today{outline:2px solid var(--color-ink);outline-offset:1px}.cal-legend{display:flex;align-items:center;gap:.4rem;margin-top:var(--space-xs);font-size:var(--text-xs);color:var(--color-ink-soft)}.cal-legend .cal-cell{width:.8rem;height:.8rem;aspect-ratio:auto}.star-burst{position:absolute;left:50%;top:50%;width:22px;height:22px;margin:-11px 0 0 -11px;background:var(--color-accent-3);clip-path:polygon(50% 0%,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0% 50%,39% 39%);animation:star-burst var(--dur-slow) var(--ease-out) forwards;pointer-events:none}@keyframes star-burst{0%{transform:scale(0) rotate(0);opacity:1}60%{transform:scale(1.3) rotate(35deg);opacity:.9}to{transform:scale(1.7) rotate(45deg);opacity:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.spark{animation:none}.star-burst{display:none}button:hover,button:active{transform:none}}.goal-section-heading{font-size:var(--text-lg);margin:var(--space-xl) 0 var(--space-sm)}.goal-section-heading:first-of-type{margin-top:var(--space-md)}.habit-list+.new-habit-tile,.section-empty+.new-habit-tile{margin-top:var(--space-sm)}.plan-row{--plan-color: var(--color-accent-3);--card-accent: var(--plan-color);border:1px solid var(--color-border);border-left:4px solid var(--plan-color);border-radius:var(--radius-input);background:var(--color-surface);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.plan-row.is-done{background:color-mix(in oklch,var(--color-mint) 12%,var(--color-surface))}.plan-row.is-done h4{text-decoration:line-through;text-decoration-color:color-mix(in oklch,var(--color-ink) 35%,transparent)}.plan-timing{margin-top:.15rem;font-size:var(--text-sm);color:var(--color-ink-soft)}.plan-timing--overdue{color:var(--color-danger);font-weight:600}.plan-timing--due-soon{color:var(--color-ink);font-weight:600}.plan-timing--done{color:color-mix(in oklch,var(--color-mint) 55%,var(--color-ink))}.plan-progress,.tracker-bar{height:.5rem;border-radius:var(--radius-pill);background:var(--color-paper-3);overflow:hidden}.plan-progress>span,.tracker-bar>span{display:block;height:100%;border-radius:inherit;background:var(--plan-color, var(--color-accent));transition:width var(--dur-base) var(--ease-out)}.plan-progress-label{font-size:var(--text-xs);color:var(--color-ink-soft);font-family:var(--font-mono)}.plan-steps,.plan-step-inputs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2xs, .25rem)}.plan-steps li,.plan-step-inputs li{display:flex;align-items:center;gap:var(--space-xs)}.plan-step-check{flex:1 1 auto;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;font-weight:400;gap:var(--space-xs);cursor:pointer;font-size:var(--text-sm)}.plan-step-check input{margin:0;width:1.1rem;height:1.1rem;accent-color:var(--plan-color);flex:none}.plan-step-inputs input{flex:1 1 auto}button.icon-button{min-height:2rem;min-width:2rem;padding:0 .55rem;font-size:var(--text-base);line-height:1}.plan-add-step{display:flex;flex-direction:row;align-items:center;gap:var(--space-xs)}.plan-add-step button{flex:none}.plan-add-step input{flex:1 1 auto;min-width:0}.plan-steps-fields{display:flex;flex-direction:column;gap:var(--space-xs);align-items:flex-start}.plan-steps-fields .plan-step-inputs{width:100%}.goal-card-progress-line{display:block}.cal-plans{position:absolute;left:3px;bottom:3px;display:flex;gap:2px;align-items:center}.cal-plan-flag{display:inline-block;flex:none;width:.55rem;height:.55rem;background:var(--dot, var(--color-accent-3));transform:rotate(45deg);border-radius:1px}.cal-plan-flag.is-done{box-shadow:0 0 0 2px var(--color-mint)}.time-tracker{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:var(--space-lg);margin-bottom:var(--space-xl);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--space-md)}.time-tracker-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-xs)}.tracker-stats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:var(--space-sm)}.tracker-stats li{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-input);background:var(--color-paper);display:flex;flex-direction:column;gap:.1rem}.tracker-stat-num{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);line-height:1.1;font-variant-numeric:tabular-nums}.tracker-stat-label{font-size:var(--text-sm)}.tracker-goals,.tracker-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.tracker-goals{gap:var(--space-md)}.tracker-goal{display:flex;flex-direction:column;gap:var(--space-xs)}.tracker-goal-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-2xs, .25rem) var(--space-sm)}.tracker-goal-title{font-family:var(--font-display);font-weight:600;color:var(--color-ink);text-decoration:none;overflow-wrap:anywhere}.tracker-goal-title:hover{text-decoration:underline}.tracker-goal-label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-soft)}.tracker-goal--ended .tracker-bar>span{background:var(--color-ink-soft)}.tracker-goal--upcoming .tracker-goal-label{color:var(--color-accent-2-deep)}.tracker-items{gap:.2rem;padding-left:var(--space-sm);border-left:2px solid var(--color-paper-3);margin-left:.2rem}.tracker-items li{display:flex;align-items:center;flex-wrap:wrap;gap:.15rem var(--space-xs);font-size:var(--text-sm)}.tracker-items li.is-done .tracker-item-title{text-decoration:line-through;color:var(--color-ink-soft)}.tracker-kind{font-family:var(--font-mono);font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-ink-soft);min-width:2.6rem}.tracker-item-title{flex:1 1 8rem;min-width:0;overflow-wrap:anywhere}.tracker-item-age{font-size:var(--text-xs);color:var(--color-ink-soft);font-variant-numeric:tabular-nums}.tracker-item-age.plan-timing--overdue{color:var(--color-danger);font-weight:600}.tracker-item-age.plan-timing--due-soon{color:var(--color-ink);font-weight:600}.plan-step-text{display:flex;flex-direction:column;min-width:0}.plan-step-meta{font-size:var(--text-xs);color:var(--color-ink-soft);overflow-wrap:anywhere}.plan-step--done .plan-step-title{text-decoration:line-through;color:var(--color-ink-soft)}.plan-step--doing .plan-step-title{font-weight:600}button.step-doing-toggle{min-height:1.75rem;padding:0 .6rem;font-size:var(--text-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;--btn-face: var(--color-paper);--btn-edge: var(--color-border);box-shadow:none}button.step-doing-toggle.is-on{--btn-face: color-mix(in oklch, var(--plan-color) 28%, var(--color-surface));--btn-edge: var(--plan-color);background:var(--btn-face);outline:1.5px solid var(--plan-color);outline-offset:-1.5px}.source-pill{display:inline-block;margin-left:var(--space-xs);padding:.05rem .5rem;border-radius:var(--radius-pill);border:1px solid var(--color-accent-2-deep);color:var(--color-accent-2-deep);font-family:var(--font-mono);font-size:.65rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle}.source-note{margin-top:var(--space-2xs);font-size:var(--text-sm);color:var(--color-ink-soft)}.source-note .source-pill{margin-left:0;margin-right:.25rem}.settings-lead{margin:var(--space-xs) 0 var(--space-lg);max-width:40rem}.settings-card{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:var(--space-lg);margin-bottom:var(--space-lg);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--space-md)}.api-key-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.api-key-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-xs) var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-input);background:var(--color-paper)}.api-key-list li>div:first-child{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem var(--space-sm)}.api-key-name{font-weight:600}.api-key-prefix,.fresh-key-value,.api-snippet{font-family:var(--font-mono);font-size:var(--text-xs)}.api-key-confirm{width:auto}.api-key-create{flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:var(--space-sm)}.api-key-create label{flex:1 1 14rem}.fresh-key{padding:var(--space-md);border-radius:var(--radius-input);background:color-mix(in oklch,var(--color-mint) 18%,var(--color-surface));border:1px solid color-mix(in oklch,var(--color-mint) 50%,var(--color-border));display:flex;flex-direction:column;gap:var(--space-xs)}.fresh-key-row{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.fresh-key-value{flex:1 1 16rem;min-width:0;padding:.5rem .65rem;border-radius:6px;background:var(--color-surface);border:1px solid var(--color-border);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.api-snippet{margin:0;padding:var(--space-md);border-radius:var(--radius-input);background:var(--color-paper);border:1px solid var(--color-border);white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:30rem){.app-bar{align-items:flex-start}.dashboard-user .muted{max-width:100%}.card-actions,.card-actions button{width:100%}.confirm-row button{flex:1 1 auto}}
