:root{color-scheme:light;--bg: #F2F2F7;--card: #FFFFFF;--card-2: #F2F2F7;--fill: #E3E3E8;--ink: #1C1C1E;--ink-2: #6C6C70;--ink-3: #AEAEB2;--line: #E5E5EA;--track: #E9EBF2;--accent: #3557D6;--accent-ink: #FFFFFF;--accent-tint: #EBEFFC;--accent-strong: #2443B0;--missed: #C2410C;--missed-soft: #E8875A;--missed-tint: #FCEDE5;--missed-strong: #A63A0B;--post: #6D4AD8;--post-soft: #A08AE8;--post-tint: #F0ECFC;--post-strong: #5236B8;--good-tint: #E7F4EA;--good-strong: #276B33;--scrim: rgba(0, 0, 0, .32);--bar-bg: rgba(255, 255, 255, .92);--shadow: 0 1px 2px rgba(0, 0, 0, .04);--toast-action: #A9BAFF;--heat-0: #EFEFF4;--heat-1: #D9E0F8;--heat-2: #A9B9EE;--heat-3: #6F88E2;--heat-4: #3557D6;--r-lg: 22px;--r-md: 16px;--r-sm: 12px;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable Text", "Segoe UI", Inter, system-ui, sans-serif;--font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI Variable Display", "Segoe UI", Inter, system-ui, sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--tabbar-h: calc(58px + var(--safe-bottom))}:root[data-mode=dark]{color-scheme:dark;--bg: #000000;--card: #1C1C1E;--card-2: #2C2C2E;--fill: #2C2C2E;--ink: #F5F5F7;--ink-2: #A1A1A6;--ink-3: #636366;--line: #2C2C2E;--track: #2C2C2E;--accent: #7A95FF;--accent-ink: #0B0B0F;--accent-tint: #1E2540;--accent-strong: #A9BAFF;--missed: #FF8A4C;--missed-soft: #E07A45;--missed-tint: #2E1C12;--missed-strong: #FFA574;--post: #A78BFA;--post-soft: #8B70E0;--post-tint: #241C3A;--post-strong: #C4B1FF;--good-tint: #15291A;--good-strong: #7ED492;--scrim: rgba(0, 0, 0, .6);--bar-bg: rgba(22, 22, 24, .92);--toast-action: #2443B0;--heat-0: #1C1C1E;--heat-1: #1E2540;--heat-2: #33427E;--heat-3: #5068C4;--heat-4: #7A95FF}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.4}body{min-height:100dvh;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}a{color:var(--accent);text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.num{font-variant-numeric:tabular-nums}.app{display:flex;min-height:100dvh}.main{flex:1;min-width:0}.page{max-width:720px;margin:0 auto;padding:calc(var(--safe-top) + 16px) 16px calc(var(--tabbar-h) + 96px);display:flex;flex-direction:column;gap:16px}.page.wide{max-width:1080px}.page.modal-page{padding-bottom:calc(var(--safe-bottom) + 120px)}.title-xl{margin:6px 4px 0;font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:-.022em;line-height:1.15}.title-lg{margin:0;font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.2}.h2{margin:0;font-size:20px;font-weight:700;letter-spacing:-.012em}.h3{margin:0;font-size:17px;font-weight:600}.sub{color:var(--ink-2);font-size:14px}.small{font-size:13px;color:var(--ink-2)}.tiny{font-size:11px;color:var(--ink-2)}.section-label{font-size:13px;font-weight:600;color:var(--ink-2);padding:0 4px}.row{display:flex;align-items:center;gap:12px}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.stack{display:flex;flex-direction:column;gap:12px}.stack-sm{display:flex;flex-direction:column;gap:6px}.grow{flex:1;min-width:0}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card{background:var(--card);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow)}.card.flush{padding:0;overflow:hidden}.card.tight{padding:14px 16px}.tile{background:var(--card-2);border-radius:14px;padding:10px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}.tile .v{font-size:20px;font-weight:700;letter-spacing:-.01em}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.btn{height:50px;border-radius:14px;border:none;padding:0 18px;font-size:16px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--fill);color:var(--ink);transition:transform .12s ease,opacity .12s}.btn:active:not(:disabled){transform:scale(.98)}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.tint{background:var(--accent-tint);color:var(--accent)}.btn.post{background:var(--post-tint);color:var(--post-strong)}.btn.miss{background:var(--missed-tint);color:var(--missed-strong)}.btn.sm{height:40px;font-size:14px;padding:0 14px;border-radius:12px}.btn.block{width:100%}.btn.ghost{background:transparent;color:var(--accent)}.btn.danger{background:transparent;color:var(--missed)}.link-btn{background:none;border:none;color:var(--accent);font-weight:500;font-size:15px;padding:10px 4px;min-height:44px}.icon-btn{width:44px;height:44px;border-radius:22px;border:none;background:var(--card);display:inline-flex;align-items:center;justify-content:center;color:var(--ink);flex-shrink:0}.icon-btn.plain{background:transparent;color:var(--accent)}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:3px;background:var(--fill);border-radius:12px;padding:3px}.seg button{height:34px;border:none;border-radius:9px;background:transparent;font-size:14px;font-weight:500}.seg button[aria-pressed=true]{background:var(--card);font-weight:600;box-shadow:0 1px 3px #00000024}.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.chips::-webkit-scrollbar{display:none}.chips.wrap{flex-wrap:wrap;overflow:visible}.chip{flex-shrink:0;height:36px;padding:0 14px;border-radius:18px;border:1px solid var(--line);background:var(--card);font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.chip[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip.cat[aria-pressed=true]{background:var(--accent-tint);color:var(--ink);border-color:var(--accent)}.chip.date[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.dot{width:8px;height:8px;border-radius:4px;flex-shrink:0;display:inline-block}.field{background:var(--card);border-radius:var(--r-md);overflow:hidden}.field-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;padding:0 16px;border-bottom:1px solid var(--line)}.field-row:last-child{border-bottom:none}.field-row label,.field-row .lbl{font-size:15px}.field-row input,.field-row select{border:none;background:transparent;text-align:right;color:var(--accent);font-weight:500;font-size:15px;min-width:0;outline:none}.field-row input[type=date],.field-row input[type=time]{min-height:36px}.field-row select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:2px}.text-in{width:100%;border:none;background:var(--card);padding:16px;font-size:16px;outline:none;color:var(--ink)}.text-in.big{font-size:19px;font-weight:600}textarea.text-in{resize:none;min-height:72px;line-height:1.45}.search{display:flex;align-items:center;gap:8px;background:var(--fill);border-radius:12px;padding:0 12px;height:40px}.search input{flex:1;border:none;background:transparent;font-size:16px;outline:none;min-width:0}.switch{position:relative;width:51px;height:31px;border-radius:16px;border:none;background:var(--fill);flex-shrink:0;transition:background .2s;padding:0}.switch:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:14px;background:#fff;box-shadow:0 2px 4px #0003;transition:transform .2s ease}.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true]:after{transform:translate(20px)}.badge{height:26px;padding:0 10px;border-radius:13px;font-size:12px;font-weight:600;display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.badge.accent{background:var(--accent-tint);color:var(--accent-strong)}.badge.miss{background:var(--missed-tint);color:var(--missed-strong)}.badge.post{background:var(--post-tint);color:var(--post-strong)}.badge.neutral{background:var(--fill);color:var(--ink)}.badge.good{background:var(--good-tint);color:var(--good-strong)}.list{background:var(--card);border-radius:18px;overflow:hidden}.task-wrap{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.task-wrap:last-child{border-bottom:none}.task-actions{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:flex-end}.task-actions.left{justify-content:flex-start;background:var(--accent)}.task-actions button{width:84px;border:none;color:#fff;font-size:12px;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.task{position:relative;display:flex;align-items:center;gap:12px;padding:10px 16px 10px 6px;background:var(--card);touch-action:pan-y;min-height:62px}.task.anim{transition:transform .22s ease}.check{width:44px;height:44px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0}.check span{width:23px;height:23px;border-radius:12px;border:2px solid var(--ink-3);display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s}.check.done span{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.check.missed span{background:var(--missed);border-color:var(--missed);color:#fff}.check.postponed span{background:var(--post);border-color:var(--post);color:#fff}.check.late span{border-color:var(--missed)}.task-title{font-size:15px;font-weight:500}.task-title.struck{text-decoration:line-through;color:var(--ink-2)}.task-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2);margin-top:2px;flex-wrap:wrap}.task-time{font-size:13px;font-weight:600;text-align:right;flex-shrink:0}.task-time.late{color:var(--missed)}.prio{display:inline-flex;gap:1.5px;align-items:flex-end;height:10px}.prio i{width:3px;border-radius:1px;background:var(--ink-3);display:block}.prio i:nth-child(1){height:4px}.prio i:nth-child(2){height:7px}.prio i:nth-child(3){height:10px}.prio i.on{background:var(--ink-2)}.prio.high i.on{background:var(--missed)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;height:var(--tabbar-h);padding:6px 8px var(--safe-bottom);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:var(--bar-bg);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--line)}.tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--ink-2);font-size:10px;font-weight:600;padding-top:2px}.tabbar a.active{color:var(--accent)}.sidebar{display:none}.fab{position:fixed;right:max(20px,calc(50% - 340px));bottom:calc(var(--tabbar-h) + 18px);z-index:25;width:58px;height:58px;border-radius:29px;border:none;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px #3557d659;transition:transform .15s}.fab:active{transform:scale(.94)}.topbar{display:flex;align-items:center;justify-content:space-between;min-height:44px}@media (min-width: 900px){.tabbar{display:none}.sidebar{display:flex;flex-direction:column;gap:4px;width:232px;flex-shrink:0;padding:28px 14px;position:sticky;top:0;height:100dvh;border-right:1px solid var(--line)}.sidebar .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;padding:0 10px 18px}.sidebar a{display:flex;align-items:center;gap:12px;height:42px;padding:0 12px;border-radius:10px;color:var(--ink);font-size:15px;font-weight:500}.sidebar a.active{background:var(--accent-tint);color:var(--accent)}.sidebar .add{margin-top:12px}.page{padding:32px 32px 80px}:root{--tabbar-h: 0px}.fab{bottom:28px;right:32px}.analytics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}}.analytics-grid{display:flex;flex-direction:column;gap:16px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);z-index:50;animation:fade .2s ease}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:51;max-height:calc(100dvh - var(--safe-top) - 24px);background:var(--bg);border-radius:22px 22px 0 0;display:flex;flex-direction:column;animation:up .28s cubic-bezier(.2,.9,.3,1)}.sheet-grip{width:36px;height:5px;border-radius:3px;background:var(--ink-3);margin:8px auto 0;opacity:.6}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:4px 8px}.sheet-head .t{font-weight:600;font-size:16px}.sheet-body{overflow-y:auto;padding:8px 16px calc(var(--safe-bottom) + 24px);display:flex;flex-direction:column;gap:18px;-webkit-overflow-scrolling:touch}@media (min-width: 700px){.sheet{left:50%;right:auto;bottom:auto;top:50%;width:520px;transform:translate(-50%,-50%);border-radius:22px;max-height:86dvh;animation:pop .22s ease}.sheet-grip{display:none}}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(100%)}}@keyframes pop{0%{opacity:0;transform:translate(-50%,-48%) scale(.98)}}.toast{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + 90px);transform:translate(-50%);z-index:60;background:var(--ink);color:var(--bg);padding:12px 16px;border-radius:14px;font-size:14px;font-weight:500;display:flex;align-items:center;gap:14px;max-width:calc(100vw - 32px);box-shadow:0 8px 30px #00000040;animation:toast .25s ease}.toast button{background:none;border:none;color:var(--toast-action);font-weight:700;padding:6px 0}@keyframes toast{0%{opacity:0;transform:translate(-50%,8px)}}.banner{border-radius:18px;padding:14px 16px;display:flex;align-items:center;gap:12px}.banner.warn{background:var(--missed-tint)}.banner.info{background:var(--accent-tint)}.empty{text-align:center;padding:36px 20px;color:var(--ink-2);display:flex;flex-direction:column;align-items:center;gap:10px}.empty .h3{color:var(--ink)}.bar-track{height:8px;border-radius:4px;background:var(--track);overflow:hidden}.bar-fill{height:100%;border-radius:4px;transition:width .5s ease}.progress{height:6px;border-radius:3px;background:var(--fill);overflow:hidden}.progress>div{height:100%;background:var(--accent);border-radius:3px;transition:width .3s ease}.review-card{background:var(--card);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:12px;border:1.5px solid transparent;transition:border-color .2s}.review-card.open{border-color:var(--accent-tint)}.choice{height:44px;border-radius:12px;border:none;font-size:14px;font-weight:600;background:var(--card-2);color:var(--ink);transition:background .15s,color .15s}.choice.done[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.choice.miss[aria-pressed=true]{background:var(--missed);color:#fff}.choice.post[aria-pressed=true]{background:var(--post);color:#fff}.rating{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.rating button{height:48px;border-radius:14px;border:none;background:var(--card-2);font-size:17px;font-weight:600}.rating button[aria-checked=true]{background:var(--accent);color:var(--accent-ink)}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:2px}.cal-day{height:52px;border:none;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:0}.cal-day .n{width:34px;height:34px;border-radius:17px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:500}.cal-day.today .n{color:var(--accent);font-weight:700}.cal-day.sel .n{background:var(--ink);color:var(--bg);font-weight:700}.cal-day.today.sel .n{background:var(--accent);color:var(--accent-ink)}.cal-day.out{visibility:hidden}.cal-dots{display:flex;gap:3px;height:5px}.cal-dots i{width:5px;height:5px;border-radius:3px;display:block}.chart-tip{font-size:13px;color:var(--ink-2);min-height:18px}.legend{display:flex;gap:12px;font-size:11px;color:var(--ink-2);flex-wrap:wrap}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:8px;height:8px;border-radius:2px;display:block}.timeline-item{display:flex;gap:12px}.timeline-rail{display:flex;flex-direction:column;align-items:center;width:14px}.timeline-rail .node{width:12px;height:12px;border-radius:6px;border:2px solid;margin-top:4px}.timeline-rail .line{flex:1;width:2px;background:var(--line);min-height:18px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
