@font-face{font-family:Urbanist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/urbanist-latin-ext-wght-normal-Bdxck5Au.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Urbanist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/urbanist-latin-wght-normal-D69JTELx.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--c:#ff6b4a;--bg:#f4f4f6;--surface:#fff;--surface-2:#ededf0;--ink:#17171c;--ink-2:#4a4a55;--muted:#8d8d98;--line:#e7e7ec;--dark:#17171c;--on-dark:#fff;--accent:#ff6b4a;--accent-2:#ff9f2e;--indigo:#5a5ce6;--ok:#2fbf71;--ok-bg:#e3f7ec;--warn:#d98200;--warn-bg:#fff1d6;--alert:#f2455c;--alert-bg:#ffe4e8;--cell:#ececf0;--shadow:0 1px 2px #1717280a, 0 12px 32px #1717280f;--shadow-lift:0 2px 4px #1717280f, 0 22px 48px #1717281f;--radius:26px;--font:"Urbanist Variable", "Urbanist", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111114;--surface:#1c1c21;--surface-2:#26262c;--ink:#f4f4f6;--ink-2:#c9c9d2;--muted:#8c8c98;--line:#2e2e35;--dark:#f4f4f6;--on-dark:#111114;--accent:#ff7a5c;--ok:#3fd184;--ok-bg:#173022;--warn:#f2b345;--warn-bg:#33290f;--alert:#ff6b7f;--alert-bg:#3a1b21;--cell:#2a2a30;--shadow:0 1px 2px #0006;--shadow-lift:0 16px 40px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#111114;--surface:#1c1c21;--surface-2:#26262c;--ink:#f4f4f6;--ink-2:#c9c9d2;--muted:#8c8c98;--line:#2e2e35;--dark:#f4f4f6;--on-dark:#111114;--accent:#ff7a5c;--ok:#3fd184;--ok-bg:#173022;--warn:#f2b345;--warn-bg:#33290f;--alert:#ff6b7f;--alert-bg:#3a1b21;--cell:#2a2a30;--shadow:0 1px 2px #0006;--shadow-lift:0 16px 40px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font:500 16px/1.45 var(--font);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3{font-family:var(--font);letter-spacing:-.01em;text-wrap:balance;margin:0;font-weight:650;line-height:1.15}h1{font-size:clamp(1.9rem,5vw,2.6rem)}h2{font-size:1.3rem}h3{font-size:1.05rem}p{margin:0}a{color:inherit}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}input,select{background:var(--surface);width:100%;box-shadow:var(--shadow);border:1px solid #0000;border-radius:18px;padding:.85rem 1.1rem}input:focus,select:focus{border-color:var(--accent);outline:none}.muted{color:var(--muted)}.eyebrow{color:var(--muted);margin-bottom:.3rem;font-size:.85rem;font-weight:600}.lead{color:var(--muted);max-width:36em;font-size:1.05rem}.stack{flex-direction:column;gap:1rem;display:flex}.row{align-items:center;gap:.5rem;display:flex}.row.tight{gap:.15rem}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.scroll-x{padding-bottom:.25rem;overflow-x:auto}.error,.ok-msg,.hint{border-radius:16px;padding:.75rem 1rem}.error{color:var(--alert);background:var(--alert-bg)}.ok-msg{color:var(--ok);background:var(--ok-bg)}.hint{background:var(--warn-bg)}.btn{border:1px solid var(--line);background:var(--surface);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;min-height:46px;padding:.6rem 1.25rem;font-weight:650;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn.primary,.btn.dark{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}.btn.primary:hover:not(:disabled),.btn.dark:hover:not(:disabled){background:var(--dark);opacity:.88}.btn.pill{min-height:38px;padding:.4rem 1rem;font-size:.9rem}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-2)}.btn.danger{color:var(--alert)}.btn.danger:not(.ghost){background:var(--alert);border-color:var(--alert);color:#fff}.btn.big{min-height:58px;padding:.9rem 1.8rem;font-size:1.05rem}.circle-btn{border:1px solid var(--line);width:52px;height:52px;color:var(--ink);background:0 0;border-radius:50%;flex:none;place-items:center;text-decoration:none;display:inline-grid}.circle-btn:hover{background:var(--surface)}.icon-btn{width:34px;height:34px;color:var(--muted);background:0 0;border:0;border-radius:50%;place-items:center;display:inline-grid}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}.fab{background:var(--dark);width:64px;height:64px;color:var(--on-dark);box-shadow:var(--shadow-lift);border:0;border-radius:50%;place-items:center;display:inline-grid}.fab.big{width:84px;height:84px}.fab:active{transform:scale(.95)}.square-btn{border:1px solid var(--line);background:var(--surface);width:64px;height:92px;color:var(--ink);border-radius:22px;place-items:center;display:grid}.square-btn.dark{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}.link-btn{color:var(--accent);background:0 0;border:0;padding:0;font-size:.85rem;font-weight:650}.chips{flex-wrap:wrap;gap:.45rem;display:flex}.chip{border:1px solid var(--line);color:var(--ink-2);background:0 0;border-radius:999px;padding:.5rem 1rem;font-size:.92rem;font-weight:600}.chip:hover:not(:disabled){background:var(--surface)}.chip.is-on{background:var(--dark);color:var(--on-dark);border-color:var(--dark)}.segmented{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px;display:inline-flex}.segmented button{color:var(--muted);background:0 0;border:0;border-radius:999px;align-items:center;gap:.4rem;padding:.45rem 1.2rem;font-size:.92rem;font-weight:600;display:inline-flex}.segmented button.is-on{background:var(--dark);color:var(--on-dark)}.badge{background:var(--alert);color:#fff;border-radius:999px;place-items:center;min-width:20px;height:20px;font-size:.72rem;display:inline-grid}.pill{white-space:nowrap;border-radius:999px;padding:.12rem .6rem;font-size:.75rem;font-weight:700;display:inline-block}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.alert{background:var(--alert-bg);color:var(--alert)}.avatar{color:#3b2a00;width:52px;height:52px;box-shadow:var(--shadow);background:linear-gradient(160deg,#ffd15c,#f5b82e);border-radius:50%;flex:none;place-items:center;font-size:1.25rem;font-weight:800;text-decoration:none;display:grid;position:relative}.avatar.active{box-shadow:0 0 0 3px var(--bg), 0 0 0 5px var(--dark)}.splash,.shell{min-height:100vh}.topbar{max-width:1240px;padding:calc(1rem + env(safe-area-inset-top)) clamp(1rem, 4vw, 2.5rem) .5rem;align-items:center;gap:1rem;margin:0 auto;display:flex}.brand{align-items:center;gap:.6rem;font-size:1.2rem;font-weight:750;text-decoration:none;display:flex}.brand img{border-radius:10px}.nav{background:var(--surface);border:1px solid var(--line);border-radius:999px;gap:.15rem;margin:0 auto;padding:4px;display:flex}.nav-link{color:var(--muted);border-radius:999px;padding:.5rem 1.1rem;font-weight:650;text-decoration:none}.nav-link:hover{color:var(--ink)}.nav-link.active{background:var(--dark);color:var(--on-dark)}.topbar-end{align-items:center;gap:.75rem;display:flex}.main{max-width:1240px;margin:0 auto;padding:clamp(1rem,3vw,2rem) clamp(1rem,4vw,2.5rem) 6rem}.tabbar{display:none}.only-phone{display:none!important}.toast{z-index:40;background:var(--dark);max-width:calc(100vw - 2rem);color:var(--on-dark);box-shadow:var(--shadow-lift);border-radius:999px;align-items:center;gap:.5rem;padding:.5rem .5rem .5rem 1.1rem;display:flex;position:fixed;bottom:7.5rem;left:50%;transform:translate(-50%)}.toast .icon-btn{color:inherit}@media (width<=760px){.only-phone{display:inline-grid!important}.only-desktop,.topbar .nav{display:none!important}.topbar{justify-content:space-between}.brand span{display:none}.main{padding-bottom:8rem}.tabbar{z-index:30;padding:.6rem .75rem calc(.75rem + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{width:48px;height:48px;color:var(--muted);border-radius:50%;place-items:center;display:grid}.tab.active{color:var(--ink);background:var(--surface)}.tabbar .fab{margin-top:-1.75rem}}.page-head{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.5rem;display:flex}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin:2rem 0 1rem;display:flex}.section-title{margin:2.25rem 0 1rem}.panel{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1rem;padding:1.4rem}.panel h2{margin-bottom:.9rem}.panel-sub{margin:-.5rem 0 1rem;font-size:.92rem}.today-hero{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"greet ring""week ring";align-items:center;gap:1.5rem 3rem;display:grid}.today-greeting{grid-area:greet}.today-greeting .lead{margin-top:.6rem}.hero-ring{flex-direction:column;grid-area:ring;align-items:center;gap:.6rem;display:flex;position:relative}.hero-count{color:var(--muted)}.hero-count strong{color:var(--ink);font-size:1.15rem}@media (width<=860px){.today-hero{grid-template-columns:1fr;grid-template-areas:"greet""ring""week"}.hero-ring .day-ring{width:min(240px,66vw)!important;height:min(240px,66vw)!important}.hero-ring .day-ring svg{width:100%;height:100%}}.day-ring{flex:none;display:inline-block;position:relative}.day-ring svg{display:block;overflow:visible}.dr-track{fill:none;stroke:var(--cell)}.dr-fill{fill:none;stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset .6s cubic-bezier(.2,.8,.2,1)}.dr-empty{fill:none;stroke:var(--line)}.dr-face-bg{fill:var(--surface);filter:drop-shadow(0 6px 14px #17172814)}.dr-face{place-items:center;line-height:1;display:grid;position:absolute;inset:0}.day-ring.is-future .dr-face{opacity:.55}.week-strip{grid-area:week;grid-template-columns:repeat(7,minmax(0,1fr));gap:.4rem;max-width:560px;display:grid}.week-day{background:0 0;border:1px solid #0000;border-radius:999px;flex-direction:column;align-items:center;gap:.35rem;padding:.6rem 0 .55rem;display:flex}.week-day:hover{background:var(--surface)}.week-day.is-on{background:var(--surface);box-shadow:var(--shadow)}.week-name{color:var(--muted);font-size:.85rem;font-weight:700}.week-day.is-today .week-name{color:var(--accent)}.week-date{color:var(--muted);font-size:.78rem}@media (width<=420px){.week-strip{gap:.15rem}.week-day .day-ring{width:38px!important;height:38px!important}.week-day .day-ring svg{width:38px;height:38px}}.banner{border-radius:22px;flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1.5rem;padding:.9rem 1rem .9rem 1.2rem;display:flex}.banner p{flex:14rem}.banner svg{flex:none}.banner.info{background:var(--surface);box-shadow:var(--shadow)}.banner.alert{background:var(--alert-bg);color:var(--alert)}.banner.alert p{color:var(--ink)}.confetti{pointer-events:none;z-index:1;position:absolute;inset:-20px}.confetti i{opacity:0;border-radius:2px;width:8px;height:14px;animation:1.8s ease-out forwards fall;position:absolute;top:0}.confetti i:nth-child(5n+1){background:#ff6b4a}.confetti i:nth-child(5n+2){background:#f5b82e}.confetti i:nth-child(5n+3){background:#5a5ce6}.confetti i:nth-child(5n+4){background:#3b8cff}.confetti i:nth-child(5n+5){background:#b9a6ff}.confetti i:first-child{animation-delay:0s;left:4%}.confetti i:nth-child(2){animation-delay:.15s;left:12%}.confetti i:nth-child(3){animation-delay:50ms;left:20%}.confetti i:nth-child(4){animation-delay:.3s;left:28%}.confetti i:nth-child(5){animation-delay:.1s;left:36%}.confetti i:nth-child(6){animation-delay:.25s;left:44%}.confetti i:nth-child(7){animation-delay:0s;left:52%}.confetti i:nth-child(8){animation-delay:.2s;left:60%}.confetti i:nth-child(9){animation-delay:.35s;left:68%}.confetti i:nth-child(10){animation-delay:.1s;left:76%}.confetti i:nth-child(11){animation-delay:.3s;left:84%}.confetti i:nth-child(12){animation-delay:50ms;left:92%}.confetti i:nth-child(13){animation-delay:.45s;left:16%}.confetti i:nth-child(14){animation-delay:.5s;left:64%}.confetti i:nth-child(15){animation-delay:.6s;left:8%}.confetti i:nth-child(16){animation-delay:.7s;left:24%}.confetti i:nth-child(17){animation-delay:.55s;left:40%}.confetti i:nth-child(18){animation-delay:.65s;left:56%}.confetti i:nth-child(19){animation-delay:.75s;left:72%}.confetti i:nth-child(20){animation-delay:.6s;left:88%}.confetti i:nth-child(21){animation-delay:.85s;left:32%}.confetti i:nth-child(22){animation-delay:.9s;left:48%}.confetti i:nth-child(23){animation-delay:.8s;left:80%}.confetti i:nth-child(24){animation-delay:.95s;left:96%}.confetti.big i{animation-duration:2.6s}@keyframes fall{10%{opacity:1}to{opacity:0;transform:translateY(220px)rotate(260deg)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}}.day-list{flex-direction:column;gap:1.4rem;max-width:760px;display:flex}.part-head{color:var(--ink-2);align-items:center;gap:.45rem;margin:0 0 .6rem .4rem;font-size:.95rem;font-weight:700;display:flex}.count{color:var(--muted);background:var(--surface);border-radius:999px;margin-left:auto;padding:.1rem .6rem;font-size:.8rem;font-weight:700}.activities{flex-direction:column;gap:.7rem;margin:0;padding:0;list-style:none;display:flex}.activity{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:1rem;padding:.85rem 1.1rem .85rem .9rem;transition:transform .15s;display:flex}.activity-text{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.activity-name{overflow-wrap:anywhere;font-size:1.05rem;font-weight:650}.activity.is-done .activity-name{color:var(--muted)}.activity-sub{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.45rem;font-size:.85rem;display:flex}.activity-end{align-items:center;gap:.35rem;display:flex}.activity-time{color:var(--muted);white-space:nowrap;font-size:.88rem;font-weight:600}.icon-ring{background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;transition:transform .15s;display:grid;position:relative}.icon-ring:hover{transform:scale(1.05)}.icon-ring:active{transform:scale(.92)}.icon-ring>svg{position:absolute;inset:0}.ir-icon{place-items:center;display:grid}.ir-track{fill:var(--surface);stroke:var(--cell)}.ir-fill{fill:none;stroke:var(--c);stroke-linecap:round;transition:stroke-dashoffset .5s}.ir-icon{color:var(--c);font-size:1.35rem;line-height:1;position:relative}.icon-ring.is-done .ir-icon{animation:.35s pop}.icon-ring.is-rest .ir-icon{color:var(--muted)}@keyframes pop{50%{transform:scale(1.3)}}@media (prefers-reduced-motion:reduce){.icon-ring.is-done .ir-icon{animation:none}}.free{max-width:760px;margin-top:1.75rem}.free-toggle{color:var(--muted);background:0 0;border:0;align-items:center;gap:.35rem;padding:.25rem 0;font-weight:650;display:inline-flex}.free-toggle svg{transition:transform .15s;transform:rotate(-90deg)}.free-toggle svg.rot{transform:none}.free .activities,.free-list{margin-top:.75rem}.free-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;display:grid}.empty-page{text-align:center;flex-direction:column;align-items:center;gap:1rem;padding:4rem 0;display:flex}.empty-face{font-size:4rem}.board{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:1rem;display:grid}@media (width<=1100px){.board{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.board{grid-template-columns:1fr}.column.is-empty.column-slipping,.column.is-empty.column-missed-once{display:none}}.column{--tone:var(--muted);background:var(--surface-2);border-radius:calc(var(--radius) + 4px);min-height:8rem;padding:.75rem}.column-slipping{--tone:var(--alert)}.column-missed-once{--tone:var(--warn)}.column-todo{--tone:var(--indigo)}.column-done{--tone:var(--ok)}.column-slipping:not(.is-empty){background:var(--alert-bg)}.column-missed-once:not(.is-empty){background:var(--warn-bg)}.column-head{padding:.35rem .5rem .8rem}.column-head h3{align-items:center;gap:.45rem;font-size:1rem;display:flex}.column-head p{margin-top:.2rem;font-size:.82rem}.dot{background:var(--tone);border-radius:50%;width:9px;height:9px}.column-body{flex-direction:column;gap:.65rem;display:flex}.column-empty{color:var(--muted);text-align:center;padding:1rem .35rem;font-size:.9rem}.card{background:var(--surface);box-shadow:var(--shadow);border-radius:22px;flex-direction:column;gap:.75rem;padding:.9rem;display:flex}.card-top{align-items:center;gap:.7rem;display:flex}.card-title{flex:1;min-width:0}.card-title h3{overflow-wrap:anywhere;font-size:1rem}.card-nudge{color:var(--muted);font-size:.82rem}.card-missed-once .card-nudge{color:var(--warn)}.card-slipping .card-nudge{color:var(--alert);font-weight:650}.card-cue{color:var(--muted);white-space:nowrap;align-self:flex-start;align-items:center;gap:.2rem;font-size:.78rem;font-weight:600;display:inline-flex}.card-foot{justify-content:space-between;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.card-actions{align-items:center;gap:.1rem;display:flex}.streak{color:var(--c);white-space:nowrap;align-items:center;gap:.25rem;font-weight:700;display:inline-flex}.streak .muted{font-weight:500}.heatmap{--hm:var(--accent);--s:9px;--g:3px;flex-direction:column;gap:4px;max-width:100%;display:inline-flex}.heatmap-md{--s:12px}.heatmap-months{gap:var(--g);color:var(--muted);height:1em;font-size:.7rem;line-height:1;display:flex}.heatmap-months span{width:var(--s);white-space:nowrap;flex:none}.heatmap-grid{gap:var(--g);display:flex}.heatmap-col{gap:var(--g);flex-direction:column;display:flex}.hm{width:var(--s);height:var(--s);background:var(--cell);border-radius:3px;display:block}.hm-1{background:color-mix(in srgb, var(--hm) 30%, var(--cell))}.hm-2{background:color-mix(in srgb, var(--hm) 55%, var(--cell))}.hm-3{background:color-mix(in srgb, var(--hm) 78%, var(--cell))}.hm-4{background:var(--hm)}.hm-off{box-shadow:inset 0 0 0 1px var(--cell);background:0 0}.hm-rest{background:repeating-linear-gradient(135deg, var(--cell) 0 2px, transparent 2px 4px)}.hm-today{box-shadow:inset 0 0 0 1.5px var(--hm)}.hm-future{background:0 0}.hm.demo{--hm:var(--accent);vertical-align:middle;width:11px;height:11px;margin:0 1px;display:inline-block}.heatmap.fluid{width:100%;min-width:calc(var(--weeks) * 7px);display:flex}.fluid .heatmap-grid,.fluid .heatmap-months{width:100%}.fluid .heatmap-col,.fluid .heatmap-months span{flex:1;width:auto;min-width:0}.fluid .hm{aspect-ratio:1;width:100%;height:auto}.legend{flex-wrap:wrap;align-items:center;gap:.3rem;margin-top:.75rem;font-size:.8rem;display:flex}.month-pills{gap:.5rem;margin-bottom:1rem;padding:.25rem .1rem .5rem;display:flex;overflow-x:auto}.month-pill{border:1px solid var(--line);color:var(--muted);border-radius:999px;flex:none;padding:.6rem 1.3rem;font-weight:650;text-decoration:none}.month-pill.is-on{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}.month-layout{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:1.5rem 2.5rem;display:grid}@media (width<=860px){.month-layout{grid-template-columns:1fr}}.calendar{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem .25rem;padding:1rem .75rem;display:grid}.cal-head{text-align:center;color:var(--muted);padding-bottom:.3rem;font-size:.85rem;font-weight:700}.is-sun{color:var(--accent)!important}.cal-day{background:0 0;border:0;border-radius:999px;flex-direction:column;align-items:center;gap:.2rem;padding:.3rem 0;display:flex}.cal-day:hover{background:var(--bg)}.cal-day.is-on{background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--dark)}.cal-num{color:var(--ink-2);font-size:.82rem;font-weight:650}.cal-day.is-today .cal-num{color:var(--accent);font-weight:800}@media (width<=420px){.cal-day .day-ring{width:34px!important;height:34px!important}.cal-day .day-ring svg{width:34px;height:34px}}.month-plan h2{margin-bottom:1rem}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-bottom:1.5rem;display:grid}.stats.four{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=640px){.stats.four{grid-template-columns:repeat(2,minmax(0,1fr))}}.stat{background:var(--surface);box-shadow:var(--shadow);border-radius:22px;flex-direction:column;padding:1rem 1.15rem;display:flex}.stat-value{font-variant-numeric:tabular-nums;font-size:1.9rem;font-weight:750;line-height:1.1}.stat-label{color:var(--muted);font-size:.85rem;font-weight:600}.stat-note{color:var(--muted);margin-top:.2rem;font-size:.8rem}.stat-note.up{color:var(--ok);font-weight:700}.stat-note.down{color:var(--warn);font-weight:700}.sheet-wrap{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.sheet{border-collapse:separate;border-spacing:0;min-width:100%;font-size:.8rem}.sheet th,.sheet td{text-align:center;padding:3px 2px;font-weight:600}.sheet thead th{color:var(--muted);padding-top:.8rem;line-height:1.15}.sheet-day span{font-size:.65rem;display:block}.sheet th.is-today{color:var(--accent);font-weight:800}.sheet td.is-today{background:color-mix(in srgb, var(--accent) 8%, transparent)}.sheet-name{z-index:1;background:var(--surface);white-space:nowrap;text-overflow:ellipsis;max-width:11rem;font-size:.9rem;position:sticky;left:0;overflow:hidden;text-align:left!important;padding:0 .9rem!important}.sheet tbody th{font-weight:700}.sheet-total{color:var(--muted);font-variant-numeric:tabular-nums;padding:0 .8rem!important}.cell{border:1.5px solid color-mix(in srgb, var(--c) 45%, var(--line));background:0 0;border-radius:50%;width:22px;height:22px;margin:0 auto;padding:0;display:block}.cell:hover:not(:disabled){background:color-mix(in srgb, var(--c) 18%, transparent)}.cell.is-done{background:var(--c);border-color:var(--c)}.cell.is-rest{background:repeating-linear-gradient(135deg, color-mix(in srgb, var(--c) 35%, transparent) 0 2px, transparent 2px 5px)}.cell.is-off{border-style:dotted;border-color:var(--line)}.cell.is-off.is-done{border-style:solid}.cell.is-missed{background:color-mix(in srgb, var(--alert) 10%, transparent);border-color:color-mix(in srgb, var(--alert) 40%, var(--line))}.cell:disabled{opacity:.35}.cell.demo{vertical-align:middle;width:14px;height:14px;margin:0 .15rem 0 .5rem;display:inline-block}.sheet tfoot td,.sheet tfoot th{padding-top:.5rem;padding-bottom:.8rem}.sheet-bar{vertical-align:bottom;height:34px}.sheet-bar span{background:var(--accent);opacity:.8;border-radius:999px;width:10px;margin:0 auto;display:block}.insight-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1rem;display:grid}.insight-grid .panel{margin-bottom:0}@media (width<=860px){.insight-grid{grid-template-columns:1fr}}.award-shelf{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:1rem .75rem;margin:0;padding:0;list-style:none;display:grid}.award-shelf li{text-align:center;flex-direction:column;align-items:center;gap:.25rem;display:flex}.award-empty{border:2px dashed var(--line);filter:grayscale();opacity:.6;border-radius:24px 24px 50% 50%;place-items:center;width:84px;height:94px;font-size:2rem;display:grid}.award-name{font-size:.9rem;font-weight:700}.award-next{font-size:.78rem}.award-badge{color:#fff;filter:drop-shadow(0 10px 18px #ff6b4a38);flex:none;display:inline-block;position:relative}.award-badge svg{display:block}.ab-number{text-align:center;text-shadow:0 1px 2px #0000001f;font-weight:800;line-height:1;position:absolute;top:14%;left:0;right:0}.ab-number small{margin-left:.04em;font-size:.55em}.ab-label{text-align:center;letter-spacing:.06em;text-transform:uppercase;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:800;line-height:1.1;display:-webkit-box;position:absolute;top:64%;left:18%;right:18%;overflow:hidden}.award-screen{z-index:50;padding:2rem 1.5rem calc(2rem + env(safe-area-inset-bottom));background:var(--bg);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1.25rem;animation:.35s rise;display:flex;position:fixed;inset:0;overflow:hidden}.award-screen h1{font-size:clamp(2.2rem,8vw,3rem)}.award-screen p{max-width:24em;color:var(--muted);font-size:1.05rem}.award-screen .fab{margin-top:1.5rem}@keyframes rise{0%{opacity:0;transform:scale(.96)}}.progress-list{flex-direction:column;gap:.8rem;margin:0;padding:0;list-style:none;display:flex}.progress-list li{grid-template-columns:minmax(0,9rem) 1fr auto;align-items:center;gap:.75rem;display:grid}.progress-name{white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:650;overflow:hidden}.progress-bar{background:var(--cell);border-radius:999px;height:8px;overflow:hidden}.progress-bar span{background:var(--c);border-radius:999px;height:100%;transition:width .4s;display:block}.progress-count{font-variant-numeric:tabular-nums;text-align:right;min-width:2.4rem;font-size:.92rem;font-weight:700}.trend-line{margin:-.25rem 0 1rem;font-size:.92rem}.trend-line strong{color:var(--ink)}.trend{grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;height:180px;display:grid}.trend-col{flex-direction:column;align-items:center;gap:.35rem;min-height:0;display:flex}.trend-value{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:600}.trend-bar{background:var(--bg);border-radius:16px;flex:1;align-items:flex-end;width:100%;max-width:46px;display:flex;overflow:hidden}.trend-bar span{background:var(--cell);border-radius:16px;width:100%;display:block}.trend-col.is-best .trend-bar span{background:linear-gradient(180deg, var(--accent-2), var(--accent));box-shadow:none}.trend-col.is-best .trend-value{color:var(--accent);font-weight:800}.trend-day{color:var(--muted);font-size:.82rem;font-weight:600}.trend-col.is-today .trend-day{color:var(--ink);font-weight:800}.habit-year .heatmap{--hm:var(--c)}.habit-year h2{margin:0}.habit-year header{margin-bottom:.5rem}.why{color:var(--muted);margin-bottom:.7rem;font-style:italic}.habit-stats{color:var(--ink-2);flex-wrap:wrap;gap:.35rem 1.1rem;margin-top:.7rem;font-size:.9rem;display:flex}.habit-stats span:first-child{color:var(--c);align-items:center;gap:.25rem;font-weight:700;display:inline-flex}.focus-page{flex-direction:column;max-width:560px;margin:0 auto;display:flex}.focus-lead{margin-bottom:1.25rem}.focus-controls{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;margin-bottom:1.25rem;display:flex}.focus-controls .field{flex:14rem}.focus-card{background:var(--surface);box-shadow:var(--shadow);border-radius:30px;justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem;display:flex}.focus-dial{aspect-ratio:1;width:min(220px,52vw);max-width:100%;position:relative}.focus-dial svg{width:100%;height:100%}.focus-dial circle{fill:none;stroke-width:12px}.focus-track{stroke:var(--cell)}.focus-fill{stroke:var(--c);stroke-linecap:round;transition:stroke-dashoffset .3s linear}.focus-time{font-variant-numeric:tabular-nums;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;font-size:clamp(2.2rem,10vw,3.2rem);font-weight:750;line-height:1;display:flex;position:absolute;inset:0}.focus-time small{color:var(--muted);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:80%;font-size:.85rem;font-weight:600;overflow:hidden}.focus-dial.is-finished .focus-time{color:var(--c)}.focus-buttons{gap:.6rem;display:flex}.focus-done{text-align:center;margin-top:1.5rem}.habit-list{flex-direction:column;gap:.7rem;margin:0;padding:0;list-style:none;display:flex}.habit-list li{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:.9rem;padding:.8rem .9rem;display:flex}.habit-list.archived li{opacity:.7}.habit-swatch{border:3px solid var(--c);border-radius:50%;flex:none;place-items:center;width:52px;height:52px;font-size:1.4rem;display:grid}.habit-info{flex-direction:column;flex:1;min-width:0;display:flex}.habit-info strong{font-weight:700}.habit-info .muted{text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.dialog{background:var(--bg);width:min(560px,100vw - 1.5rem);max-height:calc(100vh - 1.5rem);color:var(--ink);box-shadow:var(--shadow-lift);border:0;border-radius:32px;padding:1.75rem}.dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#11111466}.dialog h2{font-size:1.8rem}@media (width<=640px){.dialog{width:100vw;max-width:100vw;max-height:92vh;padding-bottom:calc(1.75rem + env(safe-area-inset-bottom));border-radius:32px 32px 0 0;margin:auto 0 0}}.field{border:0;flex-direction:column;gap:.45rem;min-width:0;margin:0;padding:0;display:flex}.field>span,.field legend{margin-bottom:.45rem;padding:0;font-size:.95rem;font-weight:700}.field small{font-size:.82rem}.chips.quick{margin-top:-.25rem}.chips.quick .chip{padding:.35rem .8rem;font-size:.86rem}.emoji-row{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:.55rem;display:grid}.emoji-btn{aspect-ratio:1;background:var(--surface);max-width:64px;box-shadow:var(--shadow);border:0;border-radius:50%;font-size:1.45rem}.emoji-btn.is-on{box-shadow:0 0 0 2.5px var(--accent), var(--shadow)}.swatches{flex-wrap:wrap;gap:.6rem;display:flex}.swatch{border:3px solid var(--bg);width:36px;height:36px;box-shadow:0 0 0 1px var(--line);border-radius:50%}.swatch.is-on{box-shadow:0 0 0 2.5px var(--dark)}.day-toggles{justify-content:space-between;gap:.3rem;margin-top:.5rem;display:flex}.day-toggle{border:1px solid var(--line);background:var(--surface);border-radius:50%;flex:none;width:44px;height:44px;font-weight:700}.day-toggle.is-on{background:var(--dark);border-color:var(--dark);color:var(--on-dark)}.cue-row{margin-top:.5rem}.cue-row input[type=time]{flex:none;width:9rem}.auth{grid-template-columns:1.1fr 1fr;align-items:center;gap:clamp(2rem,6vw,5rem);max-width:1080px;min-height:100vh;margin:0 auto;padding:clamp(1.5rem,5vw,4rem);display:grid}@media (width<=800px){.auth{grid-template-columns:1fr;align-items:start}}.auth-intro img{border-radius:14px}.auth-intro h1{margin:1rem 0 .5rem;font-size:clamp(2.6rem,7vw,4rem)}.auth-points{color:var(--ink-2);flex-direction:column;gap:1rem;margin:2rem 0 0;padding:0;list-style:none;display:flex}.auth-points li{padding-left:1.6rem;position:relative}.auth-points li:before{content:"";border:3px solid var(--accent);border-radius:50%;width:14px;height:14px;position:absolute;top:.25em;left:0}.auth-points li:nth-child(2):before{border-color:var(--indigo)}.auth-points li:nth-child(3):before{border-color:var(--ok)}.auth-points strong{color:var(--ink)}.auth-form{background:var(--surface);box-shadow:var(--shadow-lift);border-radius:32px;padding:clamp(1.4rem,4vw,2.2rem)}.auth-form input{background:var(--bg);box-shadow:none}.onboarding{max-width:760px;margin:0 auto;padding:clamp(1.5rem,6vw,4rem) clamp(1rem,4vw,2rem)}.onboarding-step{text-align:center;align-items:center}.onboarding-step h1{font-size:clamp(2rem,6vw,3rem)}.onboarding-step .lead{margin:0 auto}.progress-dots{justify-content:center;gap:.4rem;margin-bottom:2rem;display:flex}.progress-dots span{background:var(--line);border-radius:999px;width:8px;height:8px}.progress-dots .is-on{background:var(--dark);width:24px}.rule-demo{text-align:left;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:.5rem 0;display:grid}@media (width<=640px){.rule-demo{grid-template-columns:1fr}}.rule-col{background:var(--surface);color:var(--ink-2);box-shadow:var(--shadow);border-radius:24px;flex-direction:column;align-items:flex-start;gap:.6rem;padding:1.1rem;font-size:.95rem;display:flex}.preset-grid{text-align:left;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;width:100%;display:grid}.preset{background:var(--surface);box-shadow:var(--shadow);text-align:left;border:0;border-radius:24px;flex-direction:column;align-items:flex-start;gap:.2rem;padding:1rem;display:flex;position:relative}.preset.is-on{box-shadow:0 0 0 2.5px var(--c), var(--shadow)}.preset-emoji{background:color-mix(in srgb, var(--c) 14%, var(--surface));border-radius:50%;place-items:center;width:48px;height:48px;margin-bottom:.35rem;font-size:1.5rem;display:grid}.preset-name{font-weight:700}.preset-days{color:var(--muted);font-size:.8rem}.preset-check{color:var(--c);position:absolute;top:.8rem;right:.8rem}.preset-add{color:var(--muted);box-shadow:inset 0 0 0 2px var(--line);background:0 0;justify-content:center}.onboarding-step .row.between{width:100%}.account-page{max-width:640px}.danger-zone{box-shadow:0 0 0 1.5px color-mix(in srgb, var(--alert) 45%, transparent), var(--shadow)}
