:root{--bg: #f4f5f7;--card: #ffffff;--line: #e5e8ee;--ink: #0f172a;--muted: #64748b;--faint: #94a3b8;--steel: #7d9cc0;--brand: #4a5872;--soft: rgba(125, 156, 192, .14);--grad: linear-gradient(135deg, #9bb6d4 0%, #566273 100%);--g-hi: #0f766e;--g-hi-bg: rgba(20, 184, 166, .14);--g-ok: #5b6b82;--g-ok-bg: rgba(125, 156, 192, .1);--g-mid: #b45309;--g-mid-bg: rgba(245, 158, 11, .14);--g-low: #e11d48;--g-low-bg: rgba(244, 63, 94, .12);--hw: #0f766e;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0a0b0d;--card: #15171c;--line: rgba(255, 255, 255, .07);--ink: #f1f5f9;--muted: #94a3b8;--faint: #64748b;--brand: #9bb6d4;--soft: rgba(125, 156, 192, .15);--g-hi: #5fd6c2;--g-hi-bg: rgba(95, 214, 194, .14);--g-ok: #8ea7c6;--g-ok-bg: rgba(125, 156, 192, .1);--g-mid: #fbbf24;--g-mid-bg: rgba(251, 191, 36, .13);--g-low: #fb7185;--g-low-bg: rgba(251, 113, 133, .13);--hw: #5fd6c2;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink)}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15.5px;line-height:1.4;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--brand);font-weight:600;text-decoration:none}:focus-visible{outline:3px solid rgba(125,156,192,.55);outline-offset:2px}.muted{color:var(--muted);font-weight:400}.app{max-width:620px;margin:0 auto;min-height:100dvh;padding-bottom:calc(68px + env(safe-area-inset-bottom))}.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:10px;padding:calc(8px + env(safe-area-inset-top)) 14px 8px;background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.who{flex:1;min-width:0;display:flex;align-items:center;gap:10px;border:0;background:none;padding:4px 0;text-align:left}.av{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--soft);font-size:20px;flex:none}.who-text{min-width:0;display:flex;flex-direction:column}.who-text b{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.who-text small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chev svg{width:18px;height:18px;color:var(--muted)}.mark{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--grad);flex:none}.mark svg{width:18px;height:18px}.page{padding:4px 14px 16px}.section{margin-top:16px}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 4px 6px}.section-head h2{margin:0;font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;display:flex;align-items:center;gap:6px}.link{border:0;background:none;padding:0;color:var(--brand);font-weight:600;font-size:14px}.group{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.row{display:flex;align-items:flex-start;gap:12px;padding:11px 14px;border-top:1px solid var(--line)}.group>:first-child{border-top:0}.row.column{flex-direction:column;align-items:stretch;gap:8px}.row .main{flex:1;min-width:0;display:flex;flex-direction:column}.row .title{font-weight:600;font-size:15.5px;display:flex;align-items:center;flex-wrap:wrap;gap:6px}.row .sub{color:var(--muted);font-size:13.5px;margin-top:1px}.row .side{display:flex;gap:4px;align-items:center;flex:none}.row .text{margin:0;font-size:14.5px;white-space:pre-wrap;word-break:break-word}.lesson .time{width:42px;flex:none;text-align:center;padding-top:1px}.lesson .time b{display:block;font-size:17px;font-weight:700;color:var(--brand);line-height:1.1}.lesson .time small{font-size:11.5px;color:var(--faint)}.lesson.now{background:var(--soft)}.hw{margin-top:5px;font-size:14px;white-space:pre-wrap;word-break:break-word}.hw b{color:var(--hw);font-weight:700;font-size:12px;margin-right:4px}.hw.plain{margin-top:3px}.tag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;background:var(--soft);color:var(--brand);text-transform:lowercase}.tag.now{background:var(--grad);color:#fff}.tag.bad{background:var(--g-low-bg);color:var(--g-low)}.g{min-width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:16.5px;padding:0 5px}.g.hi{background:var(--g-hi-bg);color:var(--g-hi)}.g.ok{background:var(--g-ok-bg);color:var(--g-ok)}.g.mid{background:var(--g-mid-bg);color:var(--g-mid)}.g.low{background:var(--g-low-bg);color:var(--g-low)}.g.pending{opacity:.5}.empty-line{margin:0;padding:14px;color:var(--muted);font-size:14.5px}.empty{text-align:center;padding:30px 10px}.week-head{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.week-head b{font-size:15px}.icon-btn{width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:var(--card);display:grid;place-items:center}.icon-btn svg{width:19px;height:19px}.subj{display:flex;align-items:center;gap:10px;border:0;background:none;padding:0;text-align:left;width:100%}.subj .main{display:flex;flex-direction:column}.avg{font-size:22px;font-weight:800;color:var(--brand)}.mini{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13.5px;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:600}.chip.on{background:var(--grad);border-color:transparent;color:#fff}.chip.date{padding:5px 10px;font-weight:500}.input{width:100%;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:13px 14px;font-size:16px;outline:none}.input:focus{border-color:var(--steel);box-shadow:0 0 0 3px #7d9cc033}.input.sm{padding:10px 12px;font-size:16px}.code-input{text-align:center;letter-spacing:4px;font-weight:700;font-size:20px;text-transform:uppercase}.code-input::placeholder{letter-spacing:1px;font-weight:500;text-transform:none;font-size:16px}.btn{width:100%;margin-top:10px;border:0;border-radius:12px;padding:13px;font-weight:700;font-size:16px;background:var(--grad);color:#fff}.btn.sm{margin-top:0;padding:10px;font-size:15px}.btn:disabled{opacity:.45}.btn.ghost{background:transparent;color:var(--brand);border:1px solid var(--line)}.btn.danger{color:var(--g-low)}.err{color:var(--g-low);font-size:14px;margin:8px 0 0}.ok-line{color:var(--brand);font-size:14px;margin:0;font-weight:600}.hint{color:var(--muted);font-size:13.5px;text-align:center;margin:12px 0 0}.chip-line{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:var(--soft);font-size:14px}.login{max-width:400px;margin:0 auto;padding:calc(56px + env(safe-area-inset-top)) 20px 32px}.brand{text-align:center;margin-bottom:22px}.brand .logo{width:56px;height:56px;border-radius:17px;background:var(--grad);display:grid;place-items:center;margin:0 auto 12px}.brand .logo svg{width:30px;height:30px}.brand h1{margin:0;font-size:24px;letter-spacing:-.4px}.brand h1 span{color:var(--steel)}.brand p{margin:6px 0 0;color:var(--muted)}.seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:12px}.seg button{border:0;background:none;padding:9px;border-radius:9px;font-weight:600;color:var(--muted)}.seg button.on{background:var(--soft);color:var(--ink)}.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(4,1fr);max-width:620px;margin:0 auto;padding:4px 6px calc(4px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line)}.tab{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;color:var(--faint);font-size:11.5px;font-weight:600}.tab svg{width:23px;height:23px}.tab.on{color:var(--brand)}.tab.on svg{stroke-width:2.4}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:50;display:flex;align-items:flex-end}.sheet{width:100%;max-width:620px;margin:0 auto;background:var(--bg);border-radius:22px 22px 0 0;padding:10px 14px calc(18px + env(safe-area-inset-bottom));max-height:85dvh;overflow:auto}.sheet .grip{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 12px}.row.pick{width:100%;border-left:0;border-right:0;border-bottom:0;background:none;text-align:left;align-items:center}.tick{color:var(--brand);font-weight:800}.quiet{color:var(--muted);font-size:14.5px;margin:0;padding:4px}.quiet.center{text-align:center;padding:40px 10px}.g.sm{min-width:26px;height:26px;font-size:13.5px;border-radius:8px}.block{margin-top:22px}.block-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 2px 10px}.block-head h2{margin:0;font-size:17px;font-weight:700;letter-spacing:-.2px}.focus{margin-top:14px;border-radius:22px;padding:18px 18px 16px;color:#fff;background:var(--grad);position:relative;overflow:hidden}.focus:after{content:"";position:absolute;right:-40px;bottom:-60px;width:180px;height:180px;border-radius:50%;background:#ffffff14}.focus.calm{background:var(--card);color:var(--ink);border:1px solid var(--line)}.focus-label{font-size:13px;font-weight:700;opacity:.9;display:flex;align-items:center;gap:7px;text-transform:uppercase;letter-spacing:.4px}.focus.calm .focus-label{color:var(--muted)}.focus h1{margin:6px 0 2px;font-size:27px;letter-spacing:-.6px;line-height:1.15;position:relative}.focus-meta{margin:0;opacity:.9;font-size:14.5px;position:relative}.focus.calm .focus-meta{color:var(--muted)}.focus-topic{margin:10px 0 0;font-size:15px;position:relative}.focus-next{margin:12px 0 0;padding-top:10px;border-top:1px solid rgba(255,255,255,.25);font-size:14px;opacity:.95;position:relative}.pulse{width:8px;height:8px;border-radius:50%;background:#fff;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.timeline{list-style:none;margin:0;padding:0}.tl{display:grid;grid-template-columns:46px 14px 1fr;gap:0 10px}.tl-time{font-size:13px;font-weight:700;color:var(--muted);padding-top:2px;text-align:right;font-variant-numeric:tabular-nums}.tl-dot{position:relative}.tl-dot:before{content:"";position:absolute;left:3px;top:6px;width:8px;height:8px;border-radius:50%;background:var(--steel)}.tl-dot:after{content:"";position:absolute;left:6px;top:18px;bottom:-6px;width:2px;background:var(--line)}.tl:last-child .tl-dot:after{display:none}.tl-body{padding-bottom:16px;min-width:0}.tl-title{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-weight:600;font-size:16px}.tl-sub{color:var(--muted);font-size:13.5px;margin-top:1px}.tl-hw{margin-top:4px;font-size:14px;color:var(--hw);white-space:pre-wrap;word-break:break-word}.tl.past{opacity:.5}.tl.now .tl-dot:before{left:0;top:3px;width:14px;height:14px;background:var(--grad);box-shadow:0 0 0 4px var(--soft)}.tl.now .tl-title{color:var(--brand)}.strip{display:flex;gap:10px;overflow-x:auto;margin:0 -14px;padding:2px 14px 8px;scroll-padding:0 14px;scroll-snap-type:x proximity;scrollbar-width:none}.strip::-webkit-scrollbar{display:none}.tile{flex:none;width:104px;border-radius:18px;padding:12px;background:var(--card);border:1px solid var(--line);scroll-snap-align:start;display:flex;flex-direction:column}.tile b{font-size:34px;line-height:1;font-weight:800;margin-bottom:8px}.tile span{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile small{font-size:12px;color:var(--muted)}.tile.hi b{color:var(--g-hi)}.tile.ok b{color:var(--g-ok)}.tile.mid b{color:var(--g-mid)}.tile.low b{color:var(--g-low)}.tile.hi{background:linear-gradient(180deg,var(--g-hi-bg),var(--card) 70%)}.tile.pending{opacity:.55}.hw-cards{display:grid;gap:8px}.hw-card{position:relative;display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px;cursor:pointer}.hw-card input{position:absolute;opacity:0;pointer-events:none}.hw-card .box{width:24px;height:24px;flex:none;border-radius:8px;border:2px solid var(--faint);display:grid;place-items:center;font-size:14px;font-weight:800;color:#fff;margin-top:1px}.hw-card.done .box{background:var(--grad);border-color:transparent}.hw-card:has(input:focus-visible){outline:3px solid rgba(125,156,192,.55)}.hw-text{display:flex;flex-direction:column;min-width:0}.hw-text b{font-size:14px;color:var(--muted);font-weight:600}.hw-text span{font-size:15.5px;white-space:pre-wrap;word-break:break-word}.hw-text small{font-size:12px;color:var(--faint);margin-top:2px}.hw-card.done .hw-text span{text-decoration:line-through;color:var(--faint)}.status{margin-top:22px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:14px;background:var(--soft);font-size:14.5px;font-weight:600}.status.warn{background:var(--g-low-bg);color:var(--g-low)}.abs-list{margin:8px 4px 0;padding-left:18px;color:var(--muted);font-size:14px}.report{margin-top:10px;display:grid;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px}.days{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:12px}.day{position:relative;border:1px solid var(--line);background:var(--card);border-radius:14px;padding:7px 0 6px;display:flex;flex-direction:column;align-items:center}.day small{font-size:11px;font-weight:700;color:var(--faint);text-transform:uppercase}.day strong{font-size:18px}.day i{font-style:normal;font-size:10.5px;color:var(--muted)}.day em{position:absolute;top:-5px;right:-4px;min-width:17px;height:17px;border-radius:9px;background:var(--hw);color:#fff;font-size:10.5px;line-height:17px;font-weight:700;font-style:normal;text-align:center;padding:0 4px}.day.today{border-color:var(--steel)}.day.on{background:var(--grad);border-color:transparent;color:#fff}.day.on small,.day.on i{color:#ffffffd9}.overall{margin-top:14px;display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-radius:20px;background:var(--card);border:1px solid var(--line)}.overall span{color:var(--muted);font-size:14px;max-width:60%}.overall b{font-size:36px;font-weight:800}.overall b.hi,.stile-avg.hi{color:var(--g-hi)}.overall b.ok,.stile-avg.ok{color:var(--g-ok)}.overall b.mid,.stile-avg.mid{color:var(--g-mid)}.overall b.low,.stile-avg.low{color:var(--g-low)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.stile{border:1px solid var(--line);background:var(--card);border-radius:18px;padding:12px;text-align:left;display:grid;grid-template-columns:1fr auto;gap:6px 8px}.stile.on{border-color:var(--steel);box-shadow:0 0 0 3px var(--soft)}.stile-name{font-weight:600;font-size:14.5px;line-height:1.25}.stile-avg{font-size:22px;font-weight:800}.bars{grid-column:1 / -1;height:28px;display:flex;align-items:flex-end;gap:3px}.bars i{flex:1;border-radius:3px 3px 1px 1px;min-height:3px}.bars i.hi{background:var(--g-hi)}.bars i.ok{background:var(--steel)}.bars i.mid{background:var(--g-mid)}.bars i.low{background:var(--g-low)}.glist{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:16px}.glist li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--line)}.glist li:first-child{border-top:0}.glist li>span{display:flex;flex-direction:column;min-width:0}.glist small{color:var(--muted);font-size:12.5px}.news{margin-top:12px;padding:14px 16px;border-radius:18px;background:var(--card);border:1px solid var(--line)}.news.lead{margin-top:14px;padding:18px}.news-kind{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}.news h2{margin:6px 0;font-size:21px;letter-spacing:-.3px}.news h3{margin:4px 0;font-size:16px}.news p{margin:0;font-size:15px;white-space:pre-wrap;word-break:break-word}.news.lead small{display:block;margin-top:10px;color:var(--faint);font-size:12.5px}.file{display:inline-block;margin-top:10px;padding:7px 12px;border-radius:10px;background:var(--soft);font-size:14px}.kids{display:grid;gap:8px}.kid{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;border:1px solid var(--line);background:var(--card);text-align:left}.kid.on{border-color:var(--steel)}.kid span:last-child{display:flex;flex-direction:column}.kid small{color:var(--muted);font-size:12.5px}.spinner{width:26px;height:26px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--steel);animation:spin .8s linear infinite;margin:40px auto}.spinner.sm{width:18px;height:18px;border-width:2px;margin:14px auto}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.seg.three{grid-template-columns:repeat(3,1fr)}.link.more{justify-self:start;padding:4px 2px}.focus-btn{margin-top:14px;border:0;border-radius:12px;padding:10px 16px;font-weight:700;font-size:15px;background:#ffffffeb;color:#3f4c60;position:relative}.tlist{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.trow{width:100%;display:flex;align-items:center;gap:12px;padding:12px 14px;border:0;border-top:1px solid var(--line);background:none;text-align:left}.tlist>:first-child{border-top:0}.trow.static{cursor:default}.trow.past{opacity:.6}.trow.now{background:var(--soft)}.trow-time{width:44px;flex:none;font-weight:700;color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}.trow-main{flex:1;min-width:0;display:flex;flex-direction:column}.trow-main b{font-weight:600;font-size:15.5px}.trow-main small{color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trow .chev svg{width:18px;height:18px;color:var(--faint)}.state{font-size:12px;font-weight:700;border-radius:999px;padding:3px 9px}.state.ok{background:var(--soft);color:var(--brand)}.state.todo{background:var(--g-mid-bg);color:var(--g-mid)}.notice{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--g-mid);border-radius:14px;padding:12px 14px;margin-bottom:8px}.notice p{margin:4px 0 10px;font-size:15px}.notice-actions{display:flex;gap:8px;flex-wrap:wrap}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin:0 -14px 12px;padding:8px 14px;position:sticky;top:-10px;z-index:2;background:var(--bg)}.sheet-head h2{margin:0;font-size:19px}.gsel{width:64px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--bg);font-weight:800;font-size:16px;text-align:center}.inline{display:flex;gap:8px}.code{font:700 14px/1 ui-monospace,monospace;letter-spacing:1px;color:var(--brand)}.tabs.two{grid-template-columns:repeat(2,1fr)}.focus-btn.solid{background:var(--grad);color:#fff}.plan{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}.plan-row{display:grid;grid-template-columns:46px 1fr;gap:10px;padding:12px 14px;border-top:1px solid var(--line)}.plan-row:first-child{border-top:0}.plan-time{font-size:13px;font-weight:700;color:var(--muted);padding-top:2px;font-variant-numeric:tabular-nums}.plan-body{min-width:0}.plan-title{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.plan-title b{font-size:16px;font-weight:600}.plan-title small{color:var(--faint);font-size:13px}.plan-row.past{opacity:.45;padding-top:8px;padding-bottom:8px}.plan-row.now{background:var(--soft)}.plan-row.now .plan-time,.plan-row.now .plan-title b{color:var(--brand)}.plan-hw{display:flex;gap:10px;align-items:flex-start;width:100%;margin-top:8px;padding:0;border:0;background:none;color:var(--ink);font:inherit;font-size:15px;text-align:left;cursor:pointer}.plan-hw>span:last-child{white-space:pre-wrap;word-break:break-word;padding-top:1px}.plan-hw .box{width:22px;height:22px;flex:none;border-radius:7px;border:2px solid var(--faint);display:grid;place-items:center;font-size:13px;font-weight:800;color:#fff}.plan-hw.done .box{background:var(--grad);border-color:transparent}.plan-hw.done>span:last-child{text-decoration:line-through;color:var(--faint)}.plan-hw:focus-visible{outline:3px solid rgba(125,156,192,.55);border-radius:8px}.focus-progress{position:relative;height:6px;border-radius:3px;background:#ffffff47;margin-top:14px;overflow:hidden}.focus-progress i{position:absolute;inset:0 auto 0 0;background:#fff;border-radius:3px;transition:width .3s}.focus.calm .focus-progress{background:var(--line)}.focus.calm .focus-progress i{background:var(--grad)}.focus-foot{margin:6px 0 0;font-size:13px;opacity:.85;position:relative}.status+.status{margin-top:8px}.link{padding:10px 6px;margin:-10px -6px;touch-action:manipulation}.chip{min-height:40px}button,label{touch-action:manipulation}.page{overscroll-behavior-y:contain}.offline{position:sticky;top:0;z-index:5;margin:0 auto;max-width:620px;padding:6px 14px;text-align:center;font-size:13px;font-weight:600;background:var(--g-mid-bg);color:var(--g-mid)}.stale{margin:8px 4px 0;font-size:13px;color:var(--muted)}.install{position:relative;display:flex;align-items:center;gap:12px;margin-top:22px;padding:14px 40px 14px 14px;border-radius:16px;background:var(--soft)}.install-text{display:flex;flex-direction:column;gap:2px;min-width:0}.install-text b{font-size:15px}.install-text span{font-size:13.5px;color:var(--muted)}.install-btn{flex:none;width:auto;padding:10px 14px}.install-x{position:absolute;top:4px;right:4px;width:40px;height:40px;border:0;background:none;color:var(--faint);font-size:22px;line-height:1}.cappy{position:relative;display:inline-block;border:0;background:none;padding:0;line-height:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.cappy:focus-visible{outline:3px solid rgba(125,156,192,.55);border-radius:50%}.cappy-in{position:relative;display:inline-block;animation:cappy-in .7s cubic-bezier(.34,1.56,.64,1) both}.cappy-idle{display:inline-block;transform-origin:50% 90%;animation:cappy-look 9s ease-in-out 2s infinite}.cappy-idle.jump{animation:cappy-jump .65s cubic-bezier(.3,1.6,.5,1)}.cappy:active .cappy-idle{transform:scale(.94)}@keyframes cc-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.016)}}.cc-breathe{animation:cc-breathe 3.8s ease-in-out infinite;transform-origin:50% 88%}@keyframes cappy-in{0%{opacity:0;transform:translateY(18px) scale(.7)}to{opacity:1;transform:none}}@keyframes cappy-look{0%,84%,to{transform:none}87%{transform:rotate(-7deg)}91%{transform:rotate(6deg)}95%{transform:rotate(-2deg)}}@keyframes cappy-jump{0%{transform:none}22%{transform:translateY(2px) scale(1.08,.9)}50%{transform:translateY(-16px) scale(.95,1.06) rotate(-4deg)}78%{transform:translateY(1px) scale(1.05,.95)}to{transform:none}}.confetti{position:absolute;left:50%;top:45%;width:0;height:0;pointer-events:none}.confetti i{position:absolute;left:0;top:0;border-radius:2px;opacity:0;animation:confetti 1.15s cubic-bezier(.15,.7,.3,1) forwards}@keyframes confetti{0%{opacity:1;transform:translate(0) rotate(0)}70%{opacity:1}to{opacity:0;transform:translate(var(--x),calc(var(--y) + 40px)) rotate(var(--r))}}@media(prefers-reduced-motion:reduce){.cappy-in,.cappy-idle,.cappy-idle.jump,.cc-breathe,.bubble{animation:none!important}}@keyframes bubble-in{0%{opacity:0;transform:scale(.92) translate(-6px)}to{opacity:1;transform:none}}.tasks{display:grid;gap:8px}.task{position:relative;display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:13px 14px;cursor:pointer;transition:transform .12s}.task:active{transform:scale(.985)}.task input{position:absolute;opacity:0;pointer-events:none}.task-text{flex:1;display:flex;flex-direction:column;min-width:0}.task-text b{font-size:16px;font-weight:700;margin:1px 0}.task-text span{font-size:15px;white-space:pre-wrap;word-break:break-word}.task-box{width:34px;height:34px;flex:none;border-radius:11px;border:2px solid var(--faint);display:grid;place-items:center;font-size:18px;font-weight:800;color:#fff;transition:background .2s,border-color .2s,transform .25s cubic-bezier(.34,1.8,.64,1)}.task.done .task-box{background:var(--grad);border-color:transparent;transform:scale(1.08)}.task.done .task-text span,.task.done .task-text b{color:var(--faint)}.task.done .task-text span{text-decoration:line-through}.task:has(input:focus-visible){outline:3px solid rgba(125,156,192,.55)}.fold{width:100%;display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--card);border-radius:14px;padding:12px 14px;font:inherit;color:var(--ink);font-weight:600;text-align:left}.fold b{margin-left:auto;font-size:13px;padding:2px 8px;border-radius:999px;background:var(--soft);color:var(--brand)}.fold .chev{display:grid;color:var(--muted);transition:transform .2s}.fold .chev svg{width:18px;height:18px}.fold .chev.up{transform:rotate(180deg)}.events{list-style:none;margin:0;padding:0;display:grid;gap:12px}.events li{display:flex;gap:12px;align-items:center;min-width:0}.ev-ic{width:40px;height:40px;flex:none;border-radius:13px;background:var(--soft);color:var(--brand);display:grid;place-items:center;font-weight:800;font-size:17px;position:relative}.ev-ic svg{width:19px;height:19px}.ev-ic.grade.hi{background:var(--g-hi-bg);color:var(--g-hi)}.ev-ic.grade.mid{background:var(--g-mid-bg);color:var(--g-mid)}.ev-ic.grade.low{background:var(--g-low-bg);color:var(--g-low)}.events li.fresh .ev-ic:after{content:"";position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:#5fd6c2;border:2px solid var(--bg)}.ev-text{display:flex;flex-direction:column;min-width:0}.ev-text>span{font-size:15px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.ev-text small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading{display:flex;flex-direction:column;align-items:center;gap:6px;padding:70px 0 30px;color:var(--muted);font-size:14px}.empty-cappy{display:flex;flex-direction:column;align-items:center;text-align:center;padding:40px 20px;color:var(--muted)}.empty-cappy p{margin:8px 0 0;max-width:280px;font-size:15px}.brand-cappy{display:flex;justify-content:center;margin-bottom:4px}.hero{position:relative;display:grid;grid-template-columns:88px minmax(0,1fr);column-gap:12px;row-gap:14px;align-items:center;margin-top:12px;padding:16px 16px 16px 10px;border-radius:24px;background:var(--card);border:1px solid var(--line);background-image:radial-gradient(120% 90% at 0% 0%,var(--soft),transparent 60%)}.hero-text{min-width:0;animation:rise .4s cubic-bezier(.2,.8,.3,1) both}.eyebrow{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.eyebrow .pulse{background:var(--hw)}.hero-title{margin:4px 0 0;font-size:24px;line-height:1.15;font-weight:800;letter-spacing:-.5px;text-wrap:balance}.hero-sub{margin:6px 0 0;font-size:15px;line-height:1.35;color:var(--muted)}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.steps{grid-column:1 / -1;display:flex;align-items:center;gap:12px;padding-left:6px}.steps-bar{flex:1;display:flex;gap:4px;height:8px}.steps-bar i{flex:1;border-radius:4px;background:var(--line);transition:background .3s}.steps-bar i.on{background:var(--hw);animation:fill .45s cubic-bezier(.34,1.6,.64,1)}@keyframes fill{0%{transform:scaleY(.3)}}.steps-n{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.steps-n b{color:var(--ink);font-size:15px}.say{grid-column:1 / -1;position:relative;margin:0;padding:10px 14px;border-radius:16px;background:var(--soft);font-size:15px;animation:say-in .35s cubic-bezier(.34,1.4,.64,1) both}.say:before{content:"";position:absolute;left:34px;top:-6px;width:12px;height:12px;background:inherit;transform:rotate(45deg);border-radius:2px}@keyframes say-in{0%{opacity:0;transform:translateY(-6px) scale(.96)}}.fresh{width:100%;margin-top:8px;display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:12px 14px 14px;border-radius:18px;border:1px solid var(--line);background:var(--card);text-align:left;color:var(--ink)}.fresh-label{position:relative;padding-left:14px;font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.fresh-label:before{content:"";position:absolute;left:0;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--hw)}.fresh-list{display:flex;flex-wrap:wrap;gap:8px}.fresh-item{display:flex;align-items:center;gap:4px;padding:4px 12px 4px 4px;border-radius:12px;background:var(--soft);font-size:14px;font-weight:600}.fresh-item>span:last-child{margin-left:4px}.fresh-more{font-size:14px;font-weight:600;color:var(--muted);align-self:center}.task-n{width:28px;height:28px;flex:none;border-radius:50%;background:var(--soft);color:var(--brand);display:grid;place-items:center;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}.task.done .task-n{opacity:.5}.steps-bar i.on,.task.done .task-box{background:var(--hw)}@media(prefers-reduced-motion:reduce){.hero-text,.say,.steps-bar i.on{animation:none}}.alert{width:100%;margin-top:8px;display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;border:1px solid var(--line);background:var(--g-mid-bg);color:var(--ink);text-align:left}.alert-ic{width:28px;height:28px;flex:none;border-radius:50%;background:var(--g-mid);color:var(--card);display:grid;place-items:center;font-weight:800}.alert-text{display:flex;flex-direction:column;min-width:0}.alert-text b{font-size:15px}.alert-text small{font-size:13px;color:var(--muted)}.plan-hw.given small{display:block;font-size:12px;font-weight:700;color:var(--hw)}.abs-was{display:block;margin-top:2px;font-size:13.5px;color:var(--muted)}.goal{margin:0 0 12px;padding:12px 14px;border-radius:16px;background:var(--soft);font-size:15px;line-height:1.45}.goal b{font-variant-numeric:tabular-nums}.goal small{display:block;margin-top:4px;font-size:12.5px;color:var(--muted)}.srows{list-style:none;margin:12px 0 0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}.srows li+li{border-top:1px solid var(--line)}.srow{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 104px 48px;align-items:center;gap:12px;padding:12px 14px;min-height:56px;border:0;background:none;color:var(--ink);text-align:left}.srow.on{background:var(--soft)}.srow-name{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.srow-avg{justify-self:end;font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)}.srow-avg.hi{color:var(--g-hi)}.srow-avg.mid{color:var(--g-mid)}.srow-avg.low{color:var(--g-low)}.spark{display:block;overflow:visible}.spark-top{stroke:var(--line);stroke-width:1;stroke-dasharray:2 3}.spark-line{fill:none;stroke:var(--faint);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.spark-dot{fill:var(--faint)}.spark-end{stroke:var(--card);stroke-width:2;fill:var(--g-ok)}.srow.on .spark-end{stroke:var(--bg)}.spark-end.hi{fill:var(--g-hi)}.spark-end.mid{fill:var(--g-mid)}.spark-end.low{fill:var(--g-low)}.overall{margin-top:12px;padding:12px 16px;border-radius:18px}.overall span{font-size:15px;font-weight:600;color:var(--ink);max-width:none}.overall b{font-size:24px;font-variant-numeric:tabular-nums}.srow{grid-template-columns:minmax(0,1fr) 104px 44px 18px;gap:10px}.srow .chev{display:grid;color:var(--faint);transition:transform .2s}.srow .chev svg{width:18px;height:18px;color:inherit}.srow .chev.up{transform:rotate(180deg)}.sdetail{padding:4px 14px 14px;background:var(--soft)}.sdetail-who{margin:0 0 10px;font-size:13.5px;color:var(--muted)}.sdetail .goal{background:var(--card)}.sdetail .glist{border-radius:14px}.day em{position:static;display:block;margin-top:3px;min-width:0;height:auto;padding:1px 6px;border-radius:8px;line-height:1.4;font-size:10.5px;font-weight:800;background:var(--g-hi-bg);color:var(--hw)}.day em.none{background:none}.day.on em:not(.none){background:#ffffff38;color:#fff}.due-lbl,.tl-hw small{display:block;font-size:12px;font-weight:700;letter-spacing:.2px}.due-lbl{color:var(--hw)}.tl-hw{color:var(--muted)}.tl-hw small{color:var(--faint)}.skel{display:grid;gap:10px;padding-top:12px}.skel i{display:block;height:64px;border-radius:18px;background:linear-gradient(90deg,var(--card) 0%,var(--soft) 50%,var(--card) 100%);background-size:200% 100%;animation:skel 1.3s ease-in-out infinite;border:1px solid var(--line)}.skel .skel-hero{height:150px;border-radius:24px}@keyframes skel{0%{background-position:100% 0}to{background-position:-100% 0}}@media(prefers-reduced-motion:reduce){.skel i{animation:none}}.news h3{font-size:17px;margin:6px 0 4px}.news-kind{display:flex;align-items:center;gap:8px}.news-who{display:block;margin-top:10px;font-size:13px;color:var(--muted)}.news.new{border-color:color-mix(in srgb,var(--hw) 45%,var(--line))}.new-tag{padding:1px 7px;border-radius:6px;background:var(--g-hi-bg);color:var(--hw);letter-spacing:.3px}.tab-ic{position:relative;display:grid}.tab-badge{position:absolute;top:-4px;left:15px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--g-low);color:#fff;font-size:11px;line-height:18px;font-weight:800;text-align:center;box-shadow:0 0 0 2px var(--card)}.who .chev{display:grid}.srows-head{display:grid;grid-template-columns:minmax(0,1fr) 104px 72px;gap:10px;padding:10px 14px 8px;font-size:11.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--faint)}.srows-head span{white-space:nowrap}.srows-head span:last-child{text-align:right;padding-right:28px}.srows-head+li{border-top:1px solid var(--line)}.ahead+.ahead{margin-top:16px}.ahead-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 2px 8px}.ahead-head span{font-size:15px;font-weight:700}.ahead-head small{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.ahead+.fold{margin-top:12px}.task-new{margin-left:8px;padding:1px 6px;border-radius:6px;vertical-align:2px;background:var(--g-hi-bg);color:var(--hw);font-size:11px;font-weight:800;font-style:normal;letter-spacing:.3px;text-transform:uppercase}.share{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;margin-top:2px;border-radius:14px;border:1px dashed var(--line);background:none;color:var(--brand);font-weight:700;font-size:15px}.share svg{width:18px;height:18px}.ahead-left{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.tabs.three{grid-template-columns:repeat(3,1fr)}.chips-row{display:flex;gap:8px;overflow-x:auto;margin:14px -14px 0;padding:0 14px 2px;scrollbar-width:none}.chips-row::-webkit-scrollbar{display:none}.chips-row .chip{flex:none;min-height:40px;padding:8px 16px}.pavg{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums}.pavg.hi{color:var(--g-hi)}.pavg.mid{color:var(--g-mid)}.pavg.low{color:var(--g-low)}.trow-time{line-height:1.2}.gpad{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:4px 12px 12px;background:var(--soft)}.gpad-b{height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card);font-size:17px;font-weight:800;color:var(--g-ok)}.gpad-b.hi{color:var(--g-hi)}.gpad-b.mid{color:var(--g-mid)}.gpad-b.low{color:var(--g-low)}.gpad-b.on{background:var(--grad);color:#fff;border-color:transparent}.gpad-x{grid-column:1 / -1;height:40px;border:0;background:none;color:var(--muted);font-weight:600}.desk{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100dvh}.desk-side{position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;gap:6px;padding:18px 14px;border-right:1px solid var(--line);background:var(--card)}.desk-brand{display:flex;align-items:center;gap:10px;padding:0 6px 14px}.desk-brand b{display:flex;flex-direction:column;font-size:15px;line-height:1.15}.desk-brand b span{color:var(--steel);font-size:13px}.desk-nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow:auto}.desk-nav button{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:12px;background:none;color:var(--ink);font-size:15px;font-weight:600;text-align:left}.desk-nav button svg{width:19px;height:19px;color:var(--muted)}.desk-nav button:hover{background:var(--soft)}.desk-nav button.on{background:var(--soft);color:var(--brand)}.desk-nav button em{margin-left:auto;min-width:22px;padding:1px 7px;border-radius:9px;background:var(--g-mid-bg);color:var(--g-mid);font-style:normal;font-size:12.5px;font-weight:800;text-align:center}.desk-sec{margin:14px 12px 4px;font-size:11.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--faint)}.desk-cls{min-width:44px;font-weight:800}.desk-nav button small{color:var(--muted);font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.desk-who{display:flex;flex-direction:column;gap:2px;padding:12px;border-top:1px solid var(--line)}.desk-who small{color:var(--muted);font-size:13px}.desk-who .link{align-self:flex-start;margin-top:6px;padding:0}.desk-main{min-width:0;padding:22px 28px 40px}.desk-title{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}.desk-title h1{margin:0;font-size:26px;letter-spacing:-.5px}.desk-title h1 span{color:var(--muted);font-weight:600;font-size:18px;margin-left:6px}.desk-cols{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px;align-items:start;max-width:1100px}.desk-cols .focus,.desk-cols .block.first{margin-top:0}.j-month{display:flex;align-items:center;gap:8px;margin-left:auto}.j-month b{min-width:130px;text-align:center;font-size:16px}.j-codes{width:auto;padding:9px 14px}.j-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.j-scroll{overflow:auto;max-height:calc(100dvh - 120px);border:1px solid var(--line);border-radius:16px;background:var(--card)}.jt{border-collapse:separate;border-spacing:0;font-size:14px}.jt th,.jt td{border-bottom:1px solid var(--line);padding:0;height:38px;text-align:center}.jt thead th{position:sticky;top:0;z-index:2;background:var(--card);height:52px}.jt tfoot th,.jt tfoot td{position:sticky;bottom:0;z-index:2;background:var(--card);border-top:1px solid var(--line);border-bottom:0;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.jt .jt-name{position:sticky;left:0;z-index:1;background:var(--card);text-align:left;padding:0 14px;min-width:190px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;border-right:1px solid var(--line)}.jt thead .jt-name,.jt tfoot .jt-name{z-index:3;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px}.jt tbody tr:hover th,.jt tbody tr:hover td{background:color-mix(in srgb,var(--soft) 55%,var(--card))}.jt-col button{width:42px;height:100%;border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--ink)}.jt-col small{font-size:10.5px;font-weight:700;color:var(--faint);text-transform:uppercase}.jt-col b{font-size:15px}.jt-col.empty button{color:var(--faint)}.jt-col.empty b{text-decoration:underline dashed;text-underline-offset:4px}.jt-col.today small,.jt-col.today b{color:var(--hw)}.jt th.on,.jt td.on{background:var(--soft)!important}.jt-avg{min-width:56px;padding:0 10px!important;font-weight:800;font-variant-numeric:tabular-nums;border-left:1px solid var(--line)}.jt td.jt-avg.hi{color:var(--g-hi)}.jt td.jt-avg.mid{color:var(--g-mid)}.jt td.jt-avg.low{color:var(--g-low)}.jc{width:42px;height:38px;border:0;background:none;text-align:center;font:inherit;font-size:15px;font-weight:800;color:var(--g-ok);outline:none;caret-color:var(--steel);font-variant-numeric:tabular-nums}.jc.hi{color:var(--g-hi)}.jc.mid{color:var(--g-mid)}.jc.low{color:var(--g-low)}.jc:focus{box-shadow:inset 0 0 0 2px var(--steel);border-radius:6px;background:var(--card)}.j-panel{position:sticky;top:22px;display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:16px;background:var(--card);border:1px solid var(--line)}.j-panel.calm{align-items:center;text-align:center;color:var(--muted);font-size:14.5px}.j-panel.calm p{margin:4px 0 0}.j-panel-head{display:flex;flex-direction:column;margin-bottom:6px}.j-panel-head b{font-size:17px}.j-panel-head small{color:var(--muted);font-size:13px}.j-note{margin:0 0 4px;padding:8px 10px;border-radius:10px;background:var(--g-mid-bg);font-size:13.5px}.j-lbl{margin-top:6px;font-size:12.5px;font-weight:700;color:var(--muted)}.j-panel .input{font-size:15px;padding:10px 12px}.j-hint{margin:2px 0 0;font-size:12.5px;color:var(--muted)}.j-keys{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px;font-size:13px;text-align:left}kbd{display:inline-block;min-width:20px;padding:1px 5px;border-radius:5px;border:1px solid var(--line);border-bottom-width:2px;background:var(--bg);font:600 12px/1.4 ui-monospace,monospace;color:var(--ink);text-align:center}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:60;padding:10px 16px;border-radius:12px;background:var(--ink);color:var(--bg);font-size:14px;font-weight:600;box-shadow:0 6px 24px #00000040;animation:say-in .3s both}@media(max-width:1240px){.j-body{grid-template-columns:minmax(0,1fr)}.j-panel{position:static}}.jt-col.future button{color:var(--faint)}.jt-col.future small{opacity:.7}.jt td.jt-fut{background:color-mix(in srgb,var(--soft) 40%,var(--card))}
