@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/day-tracker/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/day-tracker/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/day-tracker/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/day-tracker/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff")}:root{--bg:#f7f6f3;--surface:#fff;--surface-sunken:#efedea;--border:#d9d5cf;--text:#1b1d20;--text-dim:#6b6f75;--text-faint:#9ca1a8;--accent:#1f9d79;--danger:#c0453a;--tap-min:44px;--radius:10px;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#101215;--surface:#181b1f;--surface-sunken:#0b0d0f;--border:#2a2f35;--text:#e8e6e3;--text-dim:#9aa0a7;--text-faint:#5a626b;--accent:#4fc3a1;--danger:#e07268}}:root[data-theme=dark]{--bg:#101215;--surface:#181b1f;--surface-sunken:#0b0d0f;--border:#2a2f35;--text:#e8e6e3;--text-dim:#9aa0a7;--text-faint:#5a626b;--accent:#4fc3a1;--danger:#e07268}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}html{background:var(--bg);overscroll-behavior:none;-webkit-text-size-adjust:100%;touch-action:manipulation}body{overscroll-behavior:none;touch-action:manipulation;background:var(--bg);color:var(--text);font-family:var(--font-mono);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.45}input,textarea,select{font-family:inherit;font-size:16px}button{touch-action:manipulation;font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;padding:0}#app{flex-direction:column;height:100%;display:flex}.app-shell{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.topbar{z-index:10;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top));padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right));background:var(--bg);border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar h1{letter-spacing:.02em;margin:0;font-size:15px;font-weight:500}.icon-button{min-width:var(--tap-min);min-height:var(--tap-min);color:var(--text-dim);place-items:center;margin:-10px;display:grid}.icon-button:active{color:var(--text)}.screen{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:none;min-height:0;padding:20px 16px 24px;padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right));flex:1;overflow-y:auto}.screen::-webkit-scrollbar{display:none}.placeholder{text-align:center;color:var(--text-faint);margin-top:18vh}.placeholder-mark{border:1.5px solid var(--text-faint);border-radius:50%;width:40px;height:40px;margin:0 auto 14px}.placeholder p{margin:0;font-size:13px}.tabbar{background:var(--bg);border-top:1px solid var(--border);padding-bottom:max(4px, calc(env(safe-area-inset-bottom) - 12px));padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);flex:none;grid-template-columns:repeat(4,1fr);display:grid}.tab{min-height:var(--tap-min);color:var(--text-faint);letter-spacing:.04em;text-transform:uppercase;flex-direction:column;align-items:center;gap:3px;padding:7px 4px;font-size:10px;display:flex}.tab[aria-current=page]{color:var(--accent)}.tab svg{display:block}.update-banner{color:var(--accent)}.update-banner button{min-height:var(--tap-min);color:var(--accent);padding:0 10px;font-weight:500}.update-banner .dismiss{color:var(--text-faint);font-weight:400}.notice{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-dim);margin:0 0 14px;padding:10px 12px;font-size:12px}.notice.error{color:var(--danger);border-color:var(--danger)}.switcher{grid-template-columns:var(--tap-min) 1fr var(--tap-min);align-items:center;margin-bottom:10px;display:grid}.switcher>button{min-height:var(--tap-min);color:var(--text-dim);font-size:22px}.switcher>button:disabled{opacity:.25}.switcher-label{min-height:var(--tap-min);flex-direction:column;align-items:center;gap:1px;display:flex}.switcher-main{font-size:16px;font-weight:500}.switcher-sub{color:var(--text-faint);font-size:11px}.habit-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.habit-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:center;gap:8px;display:flex}.habit-row.rest{opacity:.45}.habit-main{border-radius:var(--radius);text-align:left;flex:1;align-items:center;gap:12px;min-height:54px;padding:6px 8px;display:flex}.habit-main:active:not(:disabled){background:var(--surface-sunken)}.habit-main:disabled{cursor:default}.habit-name{flex:1;font-size:15px}.habit-value{color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.habit-value.todo{color:var(--text-faint)}.mark{color:var(--text-faint);flex:none;display:block}.add-button{width:100%;min-height:var(--tap-min);border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-dim);margin-top:18px;font-size:13px}.sheet-backdrop{z-index:100;animation:fade var(--med) var(--ease);background:#00000073;align-items:flex-end;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}@keyframes slide-up{0%{transform:translateY(100%)}}.sheet{animation:slide-up var(--med) var(--ease);background:var(--bg);border-top:1px solid var(--border);border-top-left-radius:16px;border-top-right-radius:16px;flex-direction:column;width:100%;max-height:92dvh;display:flex}.sheet-head{border-bottom:1px solid var(--border);grid-template-columns:1fr auto 1fr;align-items:center;padding:6px 8px;display:grid}.sheet-head h2{text-align:center;margin:0;font-size:14px;font-weight:500}.sheet-side{min-height:var(--tap-min);color:var(--text-dim);text-align:left;padding:0 8px;font-size:13px}.sheet-side.strong{color:var(--accent);text-align:right;font-weight:500}.sheet-side:disabled{opacity:.35}.sheet-body{-webkit-overflow-scrolling:touch;padding:16px;padding-bottom:calc(24px + env(safe-area-inset-bottom));flex:1;overflow-y:auto}.field{border:none;margin:0 0 20px;padding:0;display:block}.field>span,.field>legend{color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase;margin-bottom:7px;padding:0;font-size:11px;display:block}.field input,.field select{width:100%;min-height:var(--tap-min);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);padding:0 10px}.row-fields{grid-template-columns:1fr 1fr 1fr;gap:10px;display:grid}.hint.centred{text-align:center;margin-top:14px}.hint{color:var(--text-faint);margin:7px 0 0;font-size:11px;line-height:1.5}.preview{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:center;gap:14px;margin-bottom:22px;padding:14px;display:flex}.swatches{grid-template-columns:repeat(8,1fr);gap:8px;display:grid}.swatch{aspect-ratio:1;border:2px solid #0000;border-radius:50%}.swatch.selected{border-color:var(--text);box-shadow:inset 0 0 0 2px var(--bg)}.shapes{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.shape-option{aspect-ratio:1;border:1px solid #0000;border-radius:8px;place-items:center;display:grid}.shape-option.selected{border-color:var(--text-dim);background:var(--surface-sunken)}.segmented{border:1px solid var(--border);border-radius:var(--radius);display:flex;overflow:hidden}.segmented button{min-height:var(--tap-min);color:var(--text-dim);flex:1;font-size:13px}.segmented button.selected{background:var(--surface-sunken);color:var(--text);font-weight:500}.days{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.day-toggle{aspect-ratio:1;border:1px solid var(--border);min-height:40px;color:var(--text-faint);border-radius:50%;font-size:12px}.day-toggle.selected{border-color:var(--accent);background:var(--surface-sunken);color:var(--accent)}.section-head{color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase;margin:26px 0 8px;font-size:11px;font-weight:500}.manage-list{margin:0;padding:0;list-style:none}.manage-list li{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:7px 0;display:flex}.manage-name{flex:1;font-size:14px}.manage-name.dim{color:var(--text-faint)}.reorder{flex-direction:column;display:flex}.reorder button{width:26px;height:22px;color:var(--text-faint);font-size:9px}.reorder button:disabled{opacity:.25}.link{min-height:var(--tap-min);color:var(--accent);padding:0 4px;font-size:12px}.link.danger{color:var(--danger)}.wide-button{width:100%;min-height:var(--tap-min);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:14px}.wide-button.destructive{border-color:var(--danger);color:var(--danger)}.confirm-body{color:var(--text-dim);margin:0 0 18px;font-size:13px;line-height:1.6}.stats{grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:12px;display:grid}.stats dt{color:var(--text-faint)}.stats dd{color:var(--text-dim);margin:0}:root{--ease:cubic-bezier(.22, .61, .36, 1);--fast:.12s;--med:.22s}.mark path,.mark circle,.pie path{transition:fill var(--fast) var(--ease), opacity var(--fast) var(--ease)}.log-cell,.mini-cell,.heat-cell,.chip,.tab,.swatch,.shape-option,.day-toggle,.wide-button,.habit-main{transition:background-color var(--fast) var(--ease), border-color var(--fast) var(--ease), color var(--fast) var(--ease), transform var(--fast) var(--ease)}.log-cell:active:not(:disabled),.mini-cell:active,.shape-option:active,.swatch:active{transform:scale(.88)}.rank-bar span,.gauge-fill{transition:width var(--med) var(--ease)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.screen-log{flex-direction:column;padding:0;display:flex;overflow:hidden}.log{flex-direction:column;flex:1;min-height:0;display:flex}.log-head,.log-row{grid-template-columns:62px repeat(var(--cols), minmax(44px, 1fr));align-items:center;display:grid}.log-head{z-index:2;border-bottom:1px solid var(--border);background:var(--bg);padding-bottom:8px;position:sticky;top:0}.log-col-head{place-items:center;min-height:40px;display:grid}.log-scroll{-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain;scrollbar-width:none;flex:1;min-height:0;overflow-y:auto}.log-scroll::-webkit-scrollbar{display:none}.log-row{border-bottom:1px solid color-mix(in srgb, var(--border) 45%, transparent)}.log-row.week-start{border-top:1px dashed var(--border)}.log-row.is-today{background:var(--surface)}.log-row.is-future{opacity:.35}.log-date{padding-left:calc(16px + env(safe-area-inset-left));flex-direction:column;line-height:1.15;display:flex}.log-day{color:var(--text);font-size:15px}.log-row.is-future .log-day,.log-row:not(.is-today) .log-day{color:var(--text-dim)}.log-row.is-today .log-day{color:var(--text);font-weight:500}.log-dow{letter-spacing:.1em;color:var(--text-faint);font-size:9px}.log-cell{min-height:54px;color:var(--text-faint);place-items:center;display:grid}.log-cell:disabled{cursor:default}.chips{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:6px;margin-bottom:14px;padding-bottom:12px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--border);min-height:34px;color:var(--text-dim);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 12px;font-size:12px;display:inline-flex}.chip.selected{border-color:var(--text-dim);background:var(--surface-sunken);color:var(--text)}.mini-month.large{margin-bottom:22px}.mini-dow,.mini-grid{grid-template-columns:repeat(7,1fr);display:grid}.mini-dow{color:var(--text-faint);text-align:center;margin-bottom:6px;font-size:10px}.mini-month.small .mini-grid{gap:1px}.mini-month.large .mini-grid{gap:3px}.mini-cell{aspect-ratio:1;color:var(--text-faint);border-radius:6px;place-items:center;display:grid}.mini-month.large .mini-cell{min-height:42px}.mini-cell.today{background:var(--surface-sunken)}.mini-cell.empty{visibility:hidden}.year-grid{grid-template-columns:repeat(3,1fr);gap:16px 10px;display:grid}.year-month h3{color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;margin:0 0 5px;font-size:10px;font-weight:500}@media (width<=340px){.year-grid{grid-template-columns:repeat(2,1fr)}}.champion{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:center;gap:10px;margin:0 0 18px;padding:12px 14px;font-size:13px;line-height:1.5;display:flex}.heatmap{flex-direction:column;gap:5px;display:flex}.heat-row{grid-template-columns:92px 1fr;align-items:center;gap:8px;display:grid}.heat-label{min-height:28px;color:var(--text-dim);align-items:center;gap:6px;font-size:11px;display:flex;overflow:hidden}.heat-label span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.heat-cells{grid-auto-columns:1fr;grid-auto-flow:column;gap:2px;display:grid}.heat-cell{background:var(--surface-sunken);border-radius:2px;height:20px}.heat-cell.missed{background:color-mix(in srgb, var(--text-faint) 22%, transparent)}.heat-cell.na{border:1px solid color-mix(in srgb, var(--border) 50%, transparent);background:0 0}.rank-list,.plain-list{margin:0;padding:0;list-style:none}.rank-list li{grid-template-columns:18px 1fr 70px 36px auto;align-items:center;gap:8px;padding:7px 0;display:grid}.rank-name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.rank-bar{background:var(--surface-sunken);border-radius:3px;height:6px;overflow:hidden}.rank-bar span{border-radius:3px;height:100%;display:block}.rank-value{color:var(--text-dim);text-align:right;font-size:12px}.rank-delta{color:var(--text-faint);text-align:right;font-size:11px}.rank-delta.up{color:var(--accent)}.rank-delta.down{color:var(--danger)}.plain-list li{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:7px 0;font-size:13px;display:flex}.plain-list li span:nth-child(2){flex:1}.dim{color:var(--text-faint);font-size:11px}.stat-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px;display:grid}.stat{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:2px;padding:10px;display:flex}.stat-label{color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;font-size:9px}.stat-value{font-size:19px}.stat-unit{color:var(--text-faint);font-size:10px}.gauge{margin-bottom:16px}.gauge-track{background:var(--surface-sunken);border-radius:4px;height:8px;overflow:hidden}.gauge-fill{border-radius:4px;height:100%}.gauge-labels{color:var(--text-faint);justify-content:space-between;margin-top:5px;font-size:10px;display:flex}.detail-actions,.button-row{grid-template-columns:1fr 1fr;gap:8px;margin-top:18px;display:grid}.detail-actions{grid-template-columns:1fr 1fr 1fr}.preview small{margin-top:2px;display:block}.banner{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);animation:rise var(--med) var(--ease);flex:none;align-items:center;gap:12px;margin:0 12px 8px;padding:11px 14px;font-size:12px;line-height:1.45;display:flex}.banner span{flex:1}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.status{color:var(--accent)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.topbar-actions{align-items:center;gap:2px;margin:-10px -8px -10px 0;display:flex}.topbar-actions .icon-button{margin:0}.placeholder .hint{max-width:260px;margin:8px auto 0}.placeholder p{padding:0 16px}.log-scroll{padding-bottom:16px}.year-canvas{width:100%;color:var(--text-faint);cursor:pointer;display:block}.log-bar{padding:8px 16px 10px;padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right));justify-content:space-between;align-items:center;gap:10px;display:flex}.month-picker{min-height:var(--tap-min);color:var(--text);align-items:center;gap:6px;font-size:17px;display:inline-flex;position:relative}.month-picker svg{color:var(--text-faint)}.month-picker select{opacity:0;appearance:none;background:0 0;border:none;width:100%;height:100%;position:absolute;inset:0}.today-button{border:1px solid var(--border);min-height:34px;color:var(--text-dim);border-radius:999px;padding:0 12px;font-size:12px}.today-button:active{background:var(--surface-sunken);color:var(--text)}.habit-badge{border:1px solid;border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.icons{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.icon-option{aspect-ratio:1;color:var(--text-faint);border:1px solid #0000;border-radius:9px;place-items:center;display:grid}.icon-option.selected{border-color:var(--text-dim);background:var(--surface-sunken)}.log-row.is-today{position:relative}.log-row.is-today:before{content:"";background:var(--accent);width:3px;position:absolute;top:0;bottom:0;left:0}.log-row.is-today .log-dow{color:var(--accent);letter-spacing:.08em}.diag-list{margin:0;padding:0;font-size:11px;list-style:none}.diag-list li{border-bottom:1px solid var(--border);padding:9px 0}.diag-name{color:var(--text);margin-bottom:3px;font-size:13px;display:block}.diag-row{color:var(--text-faint);line-height:1.6;display:block}.diag-row.ok{color:var(--accent)}.diag-row.bad{color:var(--danger)}.screen-loading{flex:1;min-height:120px}@keyframes screen-in{0%{opacity:0;transform:translateY(5px)}}.screen{animation:screen-in .17s var(--ease) both}.tab svg{transition:transform var(--fast) var(--ease)}.tab[aria-current=page] svg{transform:translateY(-1px)scale(1.06)}.tab:active svg{transform:scale(.92)}
