:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121412;--surface-lowest:#0d0f0d;--surface-low:#1a1c1a;--surface:#1e201e;--surface-high:#292a28;--surface-highest:#333533;--on-surface:#e2e3df;--on-surface-variant:#c2c8c1;--outline:#8c928b;--outline-variant:#424843;--primary:#b2cdb6;--primary-container:#88a38d;--on-primary:#1e3525;--secondary:#d4c5a1;--secondary-container:#50462a;--tertiary:#c5c7c2;--error:#ffb4ab;--error-container:#93000a;--on-error-container:#ffdad6;--s1:#199e70;--s2:#d95926;--s3:#3987e5;--s4:#c98500;--s5:#d55181;--s6:#9085e9;--s7:#e66767;--s8:#008300;--good:#199e70;--warning:#c98500;--info:#3987e5;--critical:#d03b3b;--accent:var(--primary);--r-sm:.25rem;--r:.5rem;--r-md:.75rem;--r-lg:1rem;--r-xl:1.5rem;--r-full:9999px;--gutter:16px;--pad:24px;--stack-sm:8px;--stack-md:16px;--stack-lg:32px;--max-content:680px;--serif:"Libre Caslon Text", Georgia, "Times New Roman", serif;--sans:Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ease-out:cubic-bezier(.22, .61, .36, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}button,a,[role=button]{touch-action:manipulation}html,body,#root{height:100%}html,body{max-width:100%;overflow-x:clip}body{background:var(--bg);color:var(--on-surface);font-family:var(--serif);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0;font-size:16px;line-height:24px}.app{max-width:var(--max-content);padding:calc(var(--stack-md) + env(safe-area-inset-top,0px)) var(--gutter) calc(96px + env(safe-area-inset-bottom,0px));margin:0 auto}html.native .app{padding-top:max(40px, calc(var(--safe-area-inset-top,0px) + 16px), calc(env(safe-area-inset-top,0px) + 16px))}html.native .fab{bottom:max(26px, calc(var(--safe-area-inset-bottom,0px) + 14px))}html.native .toast{bottom:max(96px, calc(var(--safe-area-inset-bottom,0px) + 84px))}html.native .update-bar{top:max(28px, calc(var(--safe-area-inset-top,0px) + 10px))}h1,h2,h3{font-family:var(--serif);margin:0;font-weight:400}h1{letter-spacing:-.02em;font-size:28px;line-height:36px}h2{letter-spacing:-.01em;font-size:22px;line-height:30px}h3{font-size:18px;line-height:26px}@media (width>=640px){h1{font-size:32px;line-height:40px}}.label{font-family:var(--sans);letter-spacing:.05em;color:var(--outline);font-size:14px;font-weight:500;line-height:20px}.muted{color:var(--outline)}.dim{color:var(--on-surface-variant)}.hero-figure{font-family:var(--serif);letter-spacing:-.02em;font-size:48px;font-weight:400;line-height:56px}.tabular{font-variant-numeric:tabular-nums}.card{background:var(--surface-low);border-radius:var(--r-lg);border:1px solid #0000}.pad{padding:var(--pad)}@media (width<=480px){.pad{padding:18px}}.card.interactive{cursor:pointer;transition:background .24s var(--ease-out), border-color .24s var(--ease-out), transform .24s var(--ease-out)}@media (hover:hover){.card.interactive:hover{border-color:var(--secondary);background:var(--surface)}}.card.interactive:active{transition-duration:80ms;transform:scale(.994)}.stack{gap:var(--stack-md);flex-direction:column;display:flex}.stack-lg{gap:var(--stack-lg)}.grid{gap:var(--stack-md);display:grid}.grid.two{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.between{justify-content:space-between;align-items:center;gap:12px;display:flex}.row{gap:12px;display:flex}.row>*{flex:1;min-width:0}.topbar{margin-bottom:var(--stack-md);align-items:center;gap:12px;display:flex}.brand{align-items:center;gap:12px;min-width:0;margin-right:auto;display:flex}.brand-mark{border-radius:var(--r-full);background:var(--surface-high);flex:none;place-items:center;width:40px;height:40px;font-size:17px;display:grid}.brand-sub{font-family:var(--sans);letter-spacing:.03em;color:var(--outline);margin-top:2px;font-size:13px}.btn{font-family:var(--sans);letter-spacing:.03em;color:var(--on-surface);background:var(--surface-high);border-radius:var(--r);cursor:pointer;white-space:nowrap;transition:background .2s var(--ease-out), border-color .2s var(--ease-out), color .2s var(--ease-out), transform .22s var(--ease-spring);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:14px;font-weight:500;line-height:20px;display:inline-flex}@media (hover:hover){.btn:hover{background:var(--surface-highest)}}.btn:active{transition-duration:80ms;transform:scale(.96)}.btn.primary{background:var(--primary-container);color:var(--bg);font-weight:600}@media (hover:hover){.btn.primary:hover{background:var(--primary)}}.btn.secondary{border-color:var(--primary-container);color:var(--primary);background:0 0}.btn.ghost{color:var(--on-surface);background:0 0}@media (hover:hover){.btn.ghost:hover{background:var(--surface-low)}}.btn.danger{border-color:var(--error-container);color:var(--error);background:0 0}.btn.sm{padding:7px 12px;font-size:13px}.btn.icon{border-radius:var(--r-full);padding:10px}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}input,select,textarea{font-family:var(--sans);color:var(--on-surface);background:var(--surface-low);border:0;border-bottom:1px solid var(--outline);border-radius:var(--r) var(--r) 0 0;width:100%;transition:border-color .2s var(--ease-out), background .2s var(--ease-out);outline:none;padding:12px 14px;font-size:16px;line-height:24px}input:focus,select:focus,textarea:focus{border-bottom-color:var(--primary);background:var(--surface)}input::placeholder,textarea::placeholder{color:var(--outline)}textarea{resize:vertical;min-height:76px;font-family:var(--serif)}select option{background:var(--surface-low)}.field{gap:var(--stack-sm);flex-direction:column;display:flex}.seg{background:var(--surface-low);border-radius:var(--r-md);gap:4px;padding:4px;display:flex}.seg button{font-family:var(--sans);letter-spacing:.02em;min-width:0;color:var(--outline);border-radius:var(--r);cursor:pointer;white-space:normal;overflow-wrap:anywhere;text-align:center;transition:background .2s var(--ease-out), color .2s var(--ease-out);background:0 0;border:0;flex:1 1 0;padding:10px 8px;font-size:13px;font-weight:500;line-height:1.3}.seg button[aria-pressed=true]{background:var(--surface-high);color:var(--on-surface)}.seg button .seg-sub{letter-spacing:.02em;opacity:.7;margin-top:2px;font-size:11px;font-weight:400;display:block}.chips{gap:var(--stack-sm);scrollbar-width:none;padding-bottom:4px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000 100%);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000 100%)}.chips::-webkit-scrollbar{display:none}.chips.wrap{flex-wrap:wrap;overflow-x:visible;-webkit-mask-image:none;mask-image:none}.chip{font-family:var(--sans);letter-spacing:.03em;color:var(--outline);background:var(--surface-low);border-radius:var(--r-full);cursor:pointer;white-space:nowrap;transition:background .2s var(--ease-out), color .2s var(--ease-out), transform .22s var(--ease-spring);border:0;align-items:center;gap:7px;padding:8px 14px;font-size:13px;font-weight:500;display:inline-flex}.chip:active{transition-duration:80ms;transform:scale(.96)}.chip[aria-pressed=true],.chip.active{background:var(--primary-container);color:var(--bg);font-weight:600}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{border-radius:var(--r-full);cursor:pointer;width:32px;height:32px;transition:transform .22s var(--ease-spring), border-color .2s var(--ease-out);border:2px solid #0000;padding:0}.swatch[aria-pressed=true]{border-color:var(--on-surface);transform:scale(1.1)}.emoji-grid{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px;display:grid}.emoji-grid button{background:var(--surface-low);border-radius:var(--r);cursor:pointer;transition:background .2s var(--ease-out), border-color .2s var(--ease-out);border:1px solid #0000;padding:9px 0;font-size:20px}.emoji-grid button[aria-pressed=true]{border-color:var(--secondary);background:var(--surface-high)}.tiles{gap:var(--stack-sm);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.tile{border-radius:var(--r-md);background:var(--surface-low);padding:16px}.tile .label{letter-spacing:.05em;font-size:12px}.tile .v{font-family:var(--serif);margin-top:6px;font-size:28px;line-height:34px}.tile .sub{font-family:var(--sans);letter-spacing:.02em;color:var(--outline);margin-top:4px;font-size:12px}.delta.up{color:var(--primary)}.delta.down{color:var(--error)}.today-list{flex-direction:column;display:flex}.today-row{border-bottom:1px solid var(--surface-high);align-items:center;gap:12px;padding:16px 0;display:flex}.today-row:last-child{border-bottom:0;padding-bottom:0}.today-row:first-child{padding-top:8px}.today-main{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:12px;min-width:0;padding:0;display:flex}.today-main:active{opacity:.6}.today-emoji{border-radius:var(--r-full);background:var(--surface-high);flex:none;place-items:center;width:40px;height:40px;font-size:18px;display:grid}.today-text{flex-direction:column;gap:3px;min-width:0;display:flex}.today-title{font-family:var(--serif);text-overflow:ellipsis;white-space:nowrap;font-size:18px;line-height:24px;overflow:hidden}.mark-actions{flex:none;gap:8px;display:flex}.mark{border-radius:var(--r-full);cursor:pointer;background:var(--surface-high);width:44px;height:44px;color:var(--outline);transition:background .22s var(--ease-out), border-color .22s var(--ease-out), color .22s var(--ease-out), transform .26s var(--ease-spring);border:1px solid #0000;place-items:center;display:grid}.mark:active{transition-duration:80ms;transform:scale(.86)}.mark.tick.on{background:var(--primary-container);border-color:var(--primary-container);color:var(--bg)}.mark.cross.on{background:var(--error-container);border-color:var(--error-container);color:var(--on-error-container)}@media (hover:hover){.mark.tick:hover{color:var(--primary);border-color:var(--primary-container)}.mark.cross:hover{color:var(--error);border-color:var(--error-container)}}.mark:disabled{opacity:.35;cursor:not-allowed;transform:none}.mark.sm{width:38px;height:38px}.ch-card{padding:20px}.ch-top{align-items:center;gap:12px;margin-bottom:16px;display:flex}.ch-emoji{border-radius:var(--r-full);background:var(--surface-high);flex:none;place-items:center;width:44px;height:44px;font-size:20px;display:grid}.bar-track{border-radius:var(--r-full);background:var(--surface-high);height:4px;overflow:hidden}.bar-fill{border-radius:var(--r-full);height:100%;transition:width .6s var(--ease-out)}.mini-streak{gap:3px;display:flex}.mini-streak i{background:var(--surface-high);border-radius:2px;width:5px;height:16px}.card-head{margin-bottom:var(--stack-md);justify-content:space-between;align-items:baseline;gap:12px;display:flex}.card-head p{font-family:var(--sans);letter-spacing:.02em;color:var(--outline);margin:4px 0 0;font-size:13px}.legend{font-family:var(--sans);letter-spacing:.02em;color:var(--on-surface-variant);margin-top:var(--stack-md);flex-wrap:wrap;gap:16px;font-size:12.5px;display:flex}.legend span{align-items:center;gap:7px;display:inline-flex}.key{border-radius:2px;flex:none;width:10px;height:10px}.key.line{border-radius:2px;width:14px;height:3px}.tooltip{background:var(--surface-high);border-radius:var(--r);font-family:var(--sans);border:1px solid #ffffff0d;padding:10px 12px;font-size:12.5px}.tooltip .t-date{color:var(--on-surface);margin-bottom:6px;font-weight:600}.tooltip .t-row{color:var(--on-surface-variant);align-items:center;gap:7px;display:flex}.tooltip .t-row b{color:var(--on-surface);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.heat{scrollbar-width:thin;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:4px;padding-bottom:6px;display:grid;overflow-x:auto}.heat-cell{border-radius:var(--r-sm);cursor:pointer;background:var(--surface-high);width:15px;height:15px;transition:transform .18s var(--ease-spring);border:0;padding:0}.heat-cell:hover{transform:scale(1.2)}.heat-cell.today{outline:1.5px solid var(--secondary);outline-offset:1px}.heat-cell.future{background:var(--surface-low);cursor:default}.heat-wrap{gap:var(--stack-sm);display:flex}.heat-dow{font-family:var(--sans);letter-spacing:.04em;color:var(--outline);flex:none;grid-template-rows:repeat(7,1fr);gap:4px;padding-top:1px;font-size:10px;display:grid}.heat-dow span{height:15px;line-height:15px}.ring-wrap{align-items:center;gap:var(--stack-lg);display:flex}@media (width<=420px){.ring-wrap{gap:var(--stack-md)}}.ring{flex:none;transform:rotate(-90deg)}.ring circle{fill:none;stroke-linecap:round}.scrim{z-index:50;animation:fade .2s var(--ease-out);background:#080908b8;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{border-radius:var(--r-xl) var(--r-xl) 0 0;width:100%;max-width:560px;max-height:92vh;padding:var(--pad) var(--pad) calc(var(--pad) + env(safe-area-inset-bottom,0px));background:var(--surface-low);animation:rise .3s var(--ease-out);border:1px solid #ffffff0d;border-bottom:0;overflow-y:auto}html.native .sheet{padding-bottom:max(26px, calc(var(--safe-area-inset-bottom,0px) + 20px))}.sheet-grab{border-radius:var(--r-full);background:var(--outline-variant);width:36px;height:4px;margin:0 auto var(--stack-md)}@keyframes rise{0%{opacity:0;transform:translateY(20px)}}@keyframes fade{0%{opacity:0}}@media (width>=640px){.scrim{padding:var(--pad);align-items:center}.sheet{border-radius:var(--r-xl);border-bottom:1px solid #ffffff0d}}.fab{right:var(--gutter);bottom:calc(var(--gutter) + env(safe-area-inset-bottom,0px));z-index:40;border-radius:var(--r-full);background:var(--primary-container);width:56px;height:56px;color:var(--bg);cursor:pointer;transition:transform .26s var(--ease-spring), box-shadow .22s var(--ease-out);border:0;place-items:center;font-size:26px;display:grid;position:fixed;box-shadow:0 6px 28px #88a38d47}.fab:active{transition-duration:80ms;transform:scale(.9)}.empty{text-align:center;padding:var(--stack-lg) var(--stack-md);color:var(--outline)}.empty .big{margin-bottom:12px;font-size:36px}.empty .empty-title{font-family:var(--serif);color:var(--on-surface);margin-bottom:6px;font-size:20px}.empty .empty-sub{font-family:var(--sans);letter-spacing:.02em;font-size:13.5px;line-height:20px}.spinner{border:2px solid var(--surface-high);border-top-color:var(--primary);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{min-height:100dvh;padding:var(--gutter);place-items:center;display:grid}.toast{left:50%;bottom:calc(88px + env(safe-area-inset-bottom,0px));z-index:60;border-radius:var(--r-full);font-family:var(--sans);letter-spacing:.02em;background:var(--surface-highest);color:var(--on-surface);animation:rise .22s var(--ease-out);text-align:center;max-width:calc(100vw - 32px);padding:12px 20px;font-size:14px;position:fixed;transform:translate(-50%)}.toast.err{background:var(--error-container);color:var(--on-error-container)}.table-wrap{scrollbar-width:thin;-webkit-overflow-scrolling:touch;overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-family:var(--sans);font-variant-numeric:tabular-nums;font-size:13px}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--surface-high);padding:12px 10px}table.data th{color:var(--outline);letter-spacing:.04em;font-weight:500}table.data td.num,table.data th.num{text-align:right;white-space:nowrap}@media (width<=480px){table.data{font-size:12.5px}table.data th,table.data td{padding:10px 6px}}.link-btn{font:inherit;color:var(--on-surface);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:0;align-items:center;gap:7px;padding:0;display:inline-flex}.link-btn:active{opacity:.6}.scroll-y{max-height:280px;overflow-y:auto}.update-bar{left:50%;top:calc(10px + env(safe-area-inset-top,0px));z-index:70;border-radius:var(--r-full);width:min(560px,100vw - 24px);font-family:var(--sans);letter-spacing:.02em;background:var(--surface-highest);animation:rise .24s var(--ease-out) forwards;justify-content:space-between;align-items:center;gap:12px;padding:10px 10px 10px 18px;font-size:13.5px;display:flex;position:fixed;transform:translate(-50%)}.update-bar>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (width<=520px){.update-bar .muted{display:none}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
