:root{--bg:#fbf6f2;--surface:#fff;--text:#2b2523;--muted:#8c817c;--line:#ece3dd;--accent:#e0607e;--accent-soft:#fbe2e8;--good:#2f9463;--good-soft:#dff1e7;--warn:#c07a12;--warn-soft:#f9edd6;--tabbar-height:52px;--ease-out:cubic-bezier(.23, 1, .32, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#1c1918;--surface:#272321;--text:#f3ece8;--muted:#9d928c;--line:#37312e;--accent:#f07d97;--accent-soft:#46252d;--good:#5cc28d;--good-soft:#1f3a2b;--warn:#e0a33f;--warn-soft:#3e3020}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;margin:0;font-family:ui-rounded,SF Pro Rounded,-apple-system,BlinkMacSystemFont,system-ui,sans-serif}button{font:inherit;color:inherit;touch-action:manipulation;-webkit-user-select:none;user-select:none}.login{max-width:320px;padding:calc(env(safe-area-inset-top) + 18vh) 24px 24px;flex-direction:column;gap:10px;margin:0 auto;display:flex}.login h1{margin:0 0 16px;font-size:28px}.login label{color:var(--muted);font-size:14px}.login input{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:12px;padding:12px 14px;font-size:17px}.login button{background:var(--accent);color:#fff;border:0;border-radius:12px;margin-top:6px;padding:13px;font-weight:600}.login [role=alert]{color:var(--accent);margin:4px 0 0}.app{min-height:100dvh;padding-bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom))}.banner{padding:calc(env(safe-area-inset-top) + 10px) 20px 10px;background:var(--warn-soft);color:var(--warn);text-align:center;font-size:14px;text-decoration:none;display:block}.tabbar{padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.6);backdrop-filter:blur(20px)saturate(1.6);border-top:.5px solid var(--line);justify-content:center;display:flex;position:fixed;inset:auto 0 0}.tab{max-width:140px;height:var(--tabbar-height);color:var(--muted);background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:500;display:flex}.tab[aria-current=page]{color:var(--accent)}.foot-icon{fill:currentColor}.tab svg{width:26px;height:26px}.kicks{max-width:520px;padding:calc(env(safe-area-inset-top) + 28px) 20px 32px;margin:0 auto}.banner+.kicks{padding-top:20px}.headline{text-align:center;min-height:88px}.headline h1{letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin:0;font-size:26px;font-weight:700}.headline p{max-width:300px;color:var(--muted);font-variant-numeric:tabular-nums;margin:6px auto 0;font-size:15px;line-height:1.4}.headline[data-status=reached] h1{color:var(--good)}.headline[data-status=missed] h1{color:var(--warn)}.kick-area{flex-direction:column;align-items:center;gap:12px;margin:20px 0 28px;display:flex}.kick-button{aspect-ratio:1;cursor:pointer;-webkit-touch-callout:none;background:0 0;border:0;border-radius:50%;width:min(68vw,260px);padding:0;position:relative}.ring{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.segment{fill:none;stroke:var(--line);stroke-width:9px;stroke-linecap:round;transition:stroke .3s var(--ease-out)}.ring[data-status=counting] .segment.on{stroke:var(--accent)}.ring[data-status=reached] .segment.on{stroke:var(--good)}.ring[data-status=missed] .segment.on{stroke:var(--warn)}.kick-face{background:var(--accent);color:#fff;box-shadow:0 10px 30px -10px color-mix(in srgb, var(--accent) 70%, transparent);transition:transform .16s var(--ease-out), background-color .3s var(--ease-out);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex;position:absolute;inset:13%}.kick-button[data-status=reached] .kick-face{background:var(--good);box-shadow:0 10px 30px -10px color-mix(in srgb, var(--good) 70%, transparent)}.kick-button:active .kick-face{transform:scale(.95)}.kick-face svg{width:44px;height:44px}.kick-count{font-variant-numeric:tabular-nums;animation:pop .26s var(--ease-out);font-size:64px;font-weight:700;line-height:1}.kick-of,.kick-label{opacity:.92;font-size:17px;font-weight:600}@keyframes pop{0%{opacity:.4;transform:scale(.8)}}.undo{color:var(--muted);background:0 0;border:0;border-radius:999px;padding:8px 14px;font-size:15px}.undo:active{background:var(--line)}.timeline h2{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:24px 4px 8px;font-size:13px;font-weight:600}.timeline ol{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.session{background:var(--surface);border-radius:16px;padding:14px 16px}.session-head{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.session-time{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:600;overflow:hidden}.session-result{color:var(--muted);white-space:nowrap;flex-shrink:0;align-items:center;gap:4px;font-size:15px;display:inline-flex}.session[data-status=reached] .session-result{color:var(--good)}.session[data-status=missed] .session-result{color:var(--warn)}.session[data-status=counting] .session-result{color:var(--accent)}.session-note{color:var(--muted);margin:10px 0 0;font-size:13px;line-height:1.4}.track{background:var(--bg);border-radius:7px;height:14px;margin-top:12px;position:relative;overflow:hidden}.track-fill{background:var(--accent-soft);border-radius:7px;position:absolute;inset:0 auto 0 0}.session[data-status=reached] .track-fill{background:var(--good-soft)}.session[data-status=missed] .track-fill{background:var(--warn-soft)}.track-hour{background:var(--line);width:1px;position:absolute;top:3px;bottom:3px;left:50%}.track-kick{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 1.5px var(--surface);border-radius:50%;margin-left:-4px;position:absolute;top:3px}.session[data-status=reached] .track-kick{background:var(--good)}.session[data-status=missed] .track-kick{background:var(--warn)}.track-now{background:var(--accent);opacity:.5;border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}@media (prefers-reduced-motion:reduce){.kick-count{animation:none}.kick-face,.segment{transition:none}}.screen{max-width:520px;padding:calc(env(safe-area-inset-top) + 20px) 20px 32px;margin:0 auto}.banner+.screen{padding-top:16px}.screen-header{justify-content:space-between;align-items:center;margin:8px 0 12px;display:flex}.screen-header h1{margin:0;font-size:30px;font-weight:700}.card{background:var(--surface);border-radius:16px;margin:0;padding:14px 16px}.empty{color:var(--muted);font-size:15px;line-height:1.4}.progress{flex-direction:column;gap:16px;display:flex}.progress-ring{aspect-ratio:1;cursor:pointer;background:0 0;border:0;border-radius:50%;align-self:center;width:min(66vw,250px);margin:12px 0 4px;padding:0;position:relative}.progress-ring svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.progress-track,.progress-arc{fill:none;stroke-width:14px}.progress-track{stroke:var(--line)}.progress-arc{stroke:var(--accent);stroke-linecap:round;transition:stroke-dasharray .6s var(--ease-out)}.progress-tick{stroke:var(--bg);stroke-width:3px}.progress-center{flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:0}.progress-age{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:56px;font-weight:700;line-height:1}.progress-empty{color:var(--accent);font-size:22px;font-weight:700}.progress-unit{color:var(--muted);font-size:15px}.stats{grid-template-columns:repeat(3,1fr);gap:8px;margin:0;display:grid}.stats>div{background:var(--surface);text-align:center;border-radius:14px;padding:10px 8px}.stats dt{color:var(--muted);font-size:13px}.stats dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:24px;font-weight:700}.dates{flex-direction:column;gap:12px;display:flex}.date-row{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.date-row dt{color:var(--muted);font-size:15px}.date-row dd{text-align:right;flex-direction:column;align-items:flex-end;margin:0;font-weight:600;display:flex}.date-detail{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px;font-weight:400}.size{align-items:center;gap:14px;display:flex}.size-emoji{font-size:48px;line-height:1}.size h2{margin:0;font-size:17px}.size p{font-variant-numeric:tabular-nums;margin:4px 0 0}.size-note{color:var(--muted);font-size:13px}.add{background:var(--accent);color:#fff;border:0;border-radius:999px;padding:7px 16px;font-weight:600}.visits-section h2{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:20px 4px 8px;font-size:13px;font-weight:600}.visits-section ol{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.visit{background:var(--surface);text-align:left;border:0;border-radius:16px;align-items:center;gap:14px;width:100%;padding:12px 14px;display:flex}.visit:active{background:var(--line)}.visit-date{width:40px;color:var(--muted);text-transform:uppercase;flex-direction:column;flex-shrink:0;align-items:center;font-size:11px;line-height:1.2;display:flex}.visit-date strong{color:var(--text);font-size:22px;line-height:1.1}.visit-main{flex-direction:column;flex:1;min-width:0;display:flex}.visit-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.visit-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.visit-age{background:var(--accent-soft);color:var(--accent);font-variant-numeric:tabular-nums;border-radius:999px;flex-shrink:0;padding:4px 9px;font-size:14px;font-weight:600}.visit-picked{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:8px;margin:0;display:flex}.visit-picked span{color:var(--accent);font-size:14px;font-weight:600}.calendar-header{justify-content:space-between;align-items:center;display:flex}.calendar-header h3{margin:0;font-size:17px}.calendar-header button{width:40px;height:40px;color:var(--accent);background:0 0;border:0;border-radius:50%;font-size:26px;line-height:1}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:2px;margin-top:4px;display:grid}.calendar-weekday{color:var(--muted);text-align:center;padding:4px 0;font-size:12px;font-weight:600}.calendar-day{font-variant-numeric:tabular-nums;background:0 0;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:1px;height:46px;padding:0;display:flex}.calendar-number{font-size:16px;font-weight:500}.calendar-age{color:var(--muted);font-size:10px}.calendar-day[data-outside]{opacity:.35}.calendar-day[data-today] .calendar-number{color:var(--accent);font-weight:700}.calendar-day[aria-pressed=true]{background:var(--accent);color:#fff;opacity:1}.calendar-day[aria-pressed=true] .calendar-number,.calendar-day[aria-pressed=true] .calendar-age{color:#fff}.sheet{width:100%;max-width:520px;max-height:calc(100dvh - env(safe-area-inset-top) - 24px);background:var(--bg);color:var(--text);overscroll-behavior:contain;border:0;border-radius:20px 20px 0 0;margin:auto auto 0;padding:0}.sheet[open]{animation:sheet-in .32s var(--ease-out)}.sheet::backdrop{background:#00000059}@keyframes sheet-in{0%{transform:translateY(100%)}}.sheet-body{padding:8px 20px calc(env(safe-area-inset-bottom) + 20px)}.sheet-header{z-index:1;background:var(--bg);justify-content:space-between;align-items:center;margin:0 -20px 4px;padding:10px 20px;display:flex;position:sticky;top:0}.sheet-header h2{margin:0;font-size:18px}.sheet-cancel{color:var(--accent);background:0 0;border:0;padding:6px 0;font-size:17px}.form{flex-direction:column;gap:14px;display:flex}.form-hint{color:var(--muted);margin:0;font-size:14px;line-height:1.4}.field{flex-direction:column;flex:1;gap:6px;display:flex}.field>span{color:var(--muted);font-size:13px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--surface);width:100%;min-height:46px;color:var(--text);font:inherit;appearance:none;border-radius:12px;padding:11px 14px;font-size:17px}.field textarea{resize:vertical}.field select{background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%23998d87' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 14px center / 12px 8px;padding-right:36px}.field-row{gap:12px;display:flex}.primary,.danger{border:0;border-radius:14px;padding:14px;font-size:17px;font-weight:600}.primary{background:var(--accent);color:#fff}.primary:disabled{opacity:.5}.danger{color:var(--accent);background:0 0}@media (prefers-reduced-motion:reduce){.sheet[open]{animation:none}.progress-arc{transition:none}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.back{padding:calc(env(safe-area-inset-top) + 12px) 20px 0;color:var(--accent);background:0 0;border:0;font-size:17px;display:block}.back+main{padding-top:4px}.section-title{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:24px 4px 8px;font-size:13px;font-weight:600}.day-age{background:var(--accent-soft);color:var(--accent);font-variant-numeric:tabular-nums;border-radius:999px;flex-shrink:0;padding:2px 8px;font-size:13px;font-weight:600}.chips,.segmented{gap:6px;display:flex}.chips button,.segmented button{background:var(--surface);color:var(--text);border:0;border-radius:999px;flex:1;padding:9px 10px;font-size:15px;font-weight:500}.chips button[aria-pressed=true],.segmented button[aria-pressed=true]{background:var(--accent);color:#fff}.day-field{flex-direction:column;gap:12px;display:flex}.big-input{font-variant-numeric:tabular-nums}.day-group h2{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;align-items:center;margin:20px 4px 8px;font-size:13px;font-weight:600;display:flex}.day-group ol,.history ol{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.entry{background:var(--surface);text-align:left;border:0;border-radius:16px;align-items:center;gap:12px;width:100%;padding:12px 14px;display:flex}.entry:active{background:var(--line)}.entry-icon{background:var(--bg);border-radius:12px;flex-shrink:0;place-items:center;width:40px;height:40px;font-size:22px;display:grid}.entry-main{flex-direction:column;flex:1;min-width:0;display:flex}.entry-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.entry-notes{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;line-height:1.35;display:-webkit-box;overflow:hidden}.suggestions{flex-wrap:wrap;gap:6px;margin-top:-6px;display:flex}.suggestions button{border:1px solid var(--line);background:var(--surface);border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:15px;display:inline-flex}.icon-picker{grid-template-columns:repeat(8,1fr);gap:4px;display:grid}.icon-picker button{aspect-ratio:1;background:0 0;border:0;border-radius:10px;padding:0;font-size:22px}.icon-picker button[aria-pressed=true]{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.fitness{flex-direction:column;gap:12px;display:flex}.fitness .screen-header{margin-bottom:0}.day-nav{justify-content:space-between;align-items:center;margin:-4px -6px 10px;display:flex}.day-nav>button{background:0 0;border:0}.day-nav>button:not(.day-nav-label){width:40px;height:40px;color:var(--accent);border-radius:50%;font-size:26px;line-height:1}.day-nav>button:disabled{opacity:.25}.day-nav-label{align-items:center;gap:8px;font-size:17px;display:flex}.tiles{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.tile{background:var(--bg);text-align:left;font-variant-numeric:tabular-nums;min-height:96px;transition:background-color .2s var(--ease-out);border:0;border-radius:14px;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;display:flex}.tile:active{background:var(--line)}.tile strong{font-size:19px}.tile-label,.tile-note{color:var(--muted);font-size:13px}.meter{background:var(--line);border-radius:3px;width:100%;height:6px;margin-top:auto;overflow:hidden}.meter span{background:var(--accent);border-radius:3px;height:100%;display:block}.meter span[data-done]{background:var(--good)}.check{border:2px solid var(--line);color:#fff;width:30px;height:30px;transition:background-color .2s var(--ease-out), border-color .2s var(--ease-out);border-radius:50%;place-items:center;font-size:17px;font-weight:700;display:grid}.tile[aria-pressed=true]{background:var(--good-soft)}.tile[aria-pressed=true] .check{border-color:var(--good);background:var(--good)}.tile[aria-pressed=true] .tile-note{color:var(--good)}.streaks{grid-template-columns:1fr 1fr;gap:8px;margin:0;display:grid}.streaks>div{background:var(--surface);border-radius:16px;padding:12px 14px}.streaks dt{color:var(--muted);font-size:13px}.streaks dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:22px;font-weight:700}.streaks .streak-note{color:var(--muted);font-size:13px;font-weight:400}.chart-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.chart-head h2{margin:0;font-size:17px}.chart-head .segmented button{background:var(--bg);flex:none;padding:6px 12px;font-size:14px}.chart-head .segmented button[aria-pressed=true]{background:var(--accent)}.chart-delta{color:var(--muted);font-variant-numeric:tabular-nums;margin:6px 0 0;font-size:14px}.chart{margin:10px 0 0}.chart-readout{font-variant-numeric:tabular-nums;align-items:baseline;gap:8px;min-height:24px;display:flex}.chart-readout strong{font-size:18px}.chart-readout span{color:var(--muted);font-size:14px}.chart svg{touch-action:pan-y;width:100%;height:auto;margin-top:6px;display:block;overflow:visible}.chart-grid{stroke:var(--line);stroke-width:1px}.chart-axis{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:10px}.chart-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-area{fill:var(--accent);opacity:.1}.chart-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2px}.chart-crosshair{stroke:var(--muted);stroke-width:1px}.chart-hit{fill:#0000;cursor:crosshair}.history-row{font-variant-numeric:tabular-nums;gap:10px}.history-row[aria-current=true]{box-shadow:inset 0 0 0 2px var(--accent)}.history-cell{min-width:64px;color:var(--muted);text-align:right;flex-shrink:0;font-size:15px}.history-cell[data-done]{color:var(--good);font-weight:600}.history-check{border:2px solid var(--line);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:24px;height:24px;font-size:13px;font-weight:700;display:grid}.history-check[data-done]{border-color:var(--good);background:var(--good)}.menu-list .pill-button{background:var(--bg)}.menu-list{background:var(--surface);border-radius:16px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}.menu-list>li+li{border-top:.5px solid var(--line)}.menu-row{text-align:left;background:0 0;border:0;align-items:center;gap:12px;width:100%;min-height:52px;padding:6px 12px 6px 16px;display:flex}button.menu-row:active{background:var(--line)}.menu-row[data-muted] .menu-icon,.menu-row[data-muted] .menu-label{opacity:.55}.menu-icon{color:var(--accent);display:grid}.menu-label{flex:1;font-size:17px}.menu-chevron{color:var(--muted);font-size:22px}.icon-button{background:var(--bg);width:36px;height:36px;color:var(--text);border:0;border-radius:50%;font-size:16px}.icon-button:disabled,.pill-button:disabled{opacity:.3}.pill-button{background:var(--surface);color:var(--muted);border:0;border-radius:999px;padding:7px 12px;font-size:14px;font-weight:600}.pill-button[data-add]{background:var(--accent-soft);color:var(--accent)}.more .form-hint{margin:0 4px 10px}@media (prefers-reduced-motion:reduce){.tile,.check{transition:none}}.form-message{color:var(--good);text-align:center;margin:0;font-size:15px}.feedback-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.feedback-item p{white-space:pre-wrap;margin:8px 0 0;line-height:1.4}.feedback-meta{color:var(--muted);justify-content:space-between;font-size:14px;display:flex}.feedback-status{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 8px;font-size:13px;font-weight:600}.feedback-status[data-status=done]{background:var(--good-soft);color:var(--good)}
