@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=DM+Mono:wght@400;500&display=swap";
:root{--bg:#f6f5f2;--panel:#fff;--panel2:#f0eeea;--panel3:#e9e6e1;--line:#e6e3dd;--line-soft:#efedea;--ink:#191512;--dim:#5d5751;--dimmer:#6f6862;--scrim:#1915126b;--volt:#ffc531;--volt-dim:#f0a800;--volt-deep:#8a5e00;--volt-tint:#fff4d4;--volt-tint2:#ffe6a3;--grow:#00b87c;--grow-tint:#e2f7ef;--grow-ink:#067a52;--blue:#2f80ed;--blue-tint:#e4edfd;--blue-ink:#1a5fbf;--ease-c:#ff8a00;--ease-tint:#fff0dc;--ease-ink:#a35400;--red:#ff4d4f;--red-tint:#ffe9e9;--red-ink:#c62a2c;--sh-1:0 1px 2px #1915120f;--sh-2:0 2px 4px #1915120d, 0 8px 24px #19151214;--sh-sun:0 2px 8px #f0a80047;--s0:2px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:40px;--t-2xs:10px;--t-xs:11px;--t-sm:12px;--t-md:14px;--t-lg:17px;--t-xl:21px;--t-2xl:26px;--t-hero:33px;--lh-tight:1.15;--lh-snug:1.3;--lh-body:1.5;--tr-display:-.025em;--tr-title:-.015em;--tr-label:.02em;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-pill:999px;--ease:cubic-bezier(.2,.8,.3,1)}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:var(--t-md);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;margin:0}h1,h2,h3{letter-spacing:var(--tr-display);font-weight:700;line-height:var(--lh-tight);text-wrap:balance}h1{font-size:var(--t-hero)}h2{font-size:var(--t-2xl)}h3{font-size:var(--t-xl);letter-spacing:var(--tr-title)}.page-h{margin:0 0 var(--s5)}.page-h.flush{margin:0}.t-title{font-size:var(--t-xl);letter-spacing:var(--tr-title);font-weight:700;line-height:var(--lh-tight)}.t-head{font-size:var(--t-lg);letter-spacing:var(--tr-title);font-weight:600;line-height:var(--lh-snug)}.t-sec{font-size:var(--t-sm);font-weight:400;line-height:var(--lh-body);color:var(--dim)}.mono,.t-num{font-variant-numeric:tabular-nums}.mono{font-family:DM Mono,monospace}.t-num{letter-spacing:0;font-weight:600}.stat-v{font-variant-numeric:tabular-nums;font-family:DM Mono,monospace;font-size:var(--t-xl);color:var(--volt-deep);line-height:var(--lh-tight)}.stat-d{font-size:var(--t-xs);color:var(--dimmer);font-variant-numeric:tabular-nums;margin-top:var(--s0);font-weight:600}.stat-d.up{color:var(--grow-ink)}.stat-d.down{color:var(--red-ink)}.day-title{margin:0 0 var(--s5);font-weight:700;font-size:var(--t-2xl);letter-spacing:var(--tr-display);line-height:var(--lh-tight);color:var(--ink)}::selection{background:var(--volt);color:#191512}:focus-visible{outline:3px solid var(--volt-dim);outline-offset:2px}.app-hdr{z-index:50;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0}.tab{background:var(--panel2);color:var(--dim);padding:6px var(--s3);border-radius:var(--r-pill);font-family:inherit;font-size:var(--t-sm);letter-spacing:0;cursor:pointer;transition:background .16s var(--ease), color .16s var(--ease);border:0;font-weight:600}.tab:hover{color:var(--ink);background:var(--panel3)}.tab.on,.tab[data-state=active]{background:var(--ink);color:var(--panel);font-weight:600}.tab.xs{padding:var(--s1) var(--s2);font-size:var(--t-xs)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.card.pad{padding:var(--s4)}.card.pad-l{padding:var(--s5)}.empty{padding:var(--s6) var(--s5);text-align:center;color:var(--dim)}.card-plan{transition:box-shadow .2s var(--ease), transform .2s var(--ease), border-color .2s var(--ease);flex-direction:column;display:flex;overflow:hidden}.card-plan:hover{border-color:var(--volt-dim);box-shadow:var(--sh-2);transform:translateY(-2px)}.card-plan .cp-body{padding:var(--s4);flex:1}.card-plan .t-title{overflow-wrap:anywhere}.card-plan .cp-meta{align-items:center;gap:var(--s2);font-size:var(--t-sm);color:var(--dimmer);font-variant-numeric:tabular-nums;margin-top:var(--s3);flex-wrap:wrap;display:flex}.card-plan .cp-meta>*+:before{content:"·";margin-right:var(--s2);color:var(--line)}.card-plan .cp-foot{align-items:center;gap:var(--s2);padding:var(--s3) var(--s4);border-top:1px solid var(--line-soft);background:var(--panel2);display:flex}.btn{background:var(--volt);color:#191512;border-radius:var(--r-pill);font-family:inherit;font-size:var(--t-md);letter-spacing:0;text-transform:none;cursor:pointer;box-shadow:var(--sh-sun);transition:transform .16s var(--ease), box-shadow .16s var(--ease), background .16s var(--ease);border:0;padding:9px 18px;font-weight:600;line-height:1.2}.btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px #f0a80066}.btn:active{box-shadow:var(--sh-1);transform:translateY(0)}.btn:disabled{cursor:not-allowed;background:var(--panel3);color:var(--dimmer);box-shadow:none;transform:none}.btn.ghost{background:var(--panel2);color:var(--ink);box-shadow:none}.btn.ghost:hover{background:var(--panel3);box-shadow:var(--sh-1)}.btn.danger{background:var(--red-tint);color:var(--red-ink);box-shadow:none}.btn.danger:hover{box-shadow:var(--sh-1);background:#ffd4d4}.btn.xs{padding:var(--s1) var(--s3);font-size:var(--t-sm);font-weight:600;line-height:1.6}.btn.lg{padding:var(--s3) var(--s5)}.btn.dashed{border:1px dashed var(--line);border-radius:var(--r-sm);color:var(--dim);box-shadow:none;padding:6px var(--s3);font-size:var(--t-sm);background:0 0}.btn.dashed:hover{box-shadow:none;border-color:var(--dimmer);color:var(--ink);transform:none}.btn.icon{width:32px;height:32px;box-shadow:none;color:var(--dimmer);border-radius:var(--r-sm);font-size:var(--t-sm);background:0 0;border:0;padding:0;line-height:1}.btn.icon:hover{box-shadow:none;background:var(--panel2);color:var(--ink);transform:none}.btn.icon.danger,.btn.icon.danger:hover{color:var(--red-ink)}.btn.icon.danger:hover{background:var(--red-tint)}.inp{background:var(--panel);border:1px solid var(--line);color:var(--ink);padding:var(--s2) 10px;border-radius:var(--r-sm);font-family:inherit;font-size:var(--t-md);width:100%;transition:border-color .16s var(--ease), background .16s var(--ease);font-weight:500;line-height:1.4}.inp::placeholder{color:var(--dimmer);font-weight:400}.inp:hover{border-color:var(--dimmer)}.inp:focus{border-color:var(--volt-dim);box-shadow:0 0 0 3px var(--volt-tint);outline:none}.inp.mono{font-family:DM Mono,monospace}.inp.c{text-align:center;font-weight:600}input[type=checkbox]{accent-color:var(--volt-dim);cursor:pointer;width:18px;height:18px}input[type=number]{font-variant-numeric:tabular-nums}.lbl{font-size:var(--t-xs);letter-spacing:var(--tr-label);color:var(--dimmer);margin-bottom:6px;font-weight:600;display:block}.lbl.flush{margin-bottom:0}th.lbl,td.lbl{margin-bottom:0;display:table-cell}.chip{font-family:inherit;font-size:var(--t-sm);text-transform:none;letter-spacing:0;padding:2px var(--s2);border-radius:var(--r-pill);background:var(--panel2);color:var(--dim);border:0;font-weight:500;display:inline-block}.chip.volt{background:var(--volt-tint);color:var(--volt-deep);font-weight:600}.chip.grow{background:var(--grow-tint);color:var(--grow-ink);font-weight:600}.chip.lg{font-size:var(--t-md);padding:var(--s2) var(--s4)}.exrow{transition:background .15s var(--ease)}.exrow:hover{background:var(--panel2)}.banner-err{font-size:var(--t-sm);color:var(--red-ink);line-height:var(--lh-body);border:1px solid var(--red);background:var(--red-tint);border-radius:var(--r-sm);padding:var(--s3) var(--s4)}.ex-head{align-items:center;gap:var(--s2);text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;padding:var(--s3) var(--s4);border-radius:var(--r-lg) var(--r-lg) 0 0;background:0 0;border:0;display:flex}.ex-head:hover{background:var(--panel2)}.ex-head .ex-name{font-size:var(--t-lg);letter-spacing:var(--tr-title);overflow-wrap:anywhere;min-width:0;font-weight:700}.ex-head .ex-caret{color:var(--dimmer);transition:transform .2s var(--ease);flex-shrink:0;margin-left:auto}.ex-head[aria-expanded=false] .ex-caret{transform:rotate(-90deg)}.ex-body{padding:0 var(--s4) var(--s3)}.ex-count{font-variant-numeric:tabular-nums;font-family:DM Mono,monospace;font-size:var(--t-sm);color:var(--dimmer);padding:2px var(--s2);border-radius:var(--r-pill);background:var(--panel2);flex-shrink:0;font-weight:500}.ex-count.done{background:var(--grow-tint);color:var(--grow-ink);font-weight:600}.set-row{align-items:center;gap:var(--s2);min-height:44px;padding:var(--s1) 0;border-top:1px solid var(--line-soft);display:grid}.set-row .inp{padding:10px var(--s2);font-size:var(--t-md)}.set-head{align-items:center;gap:var(--s2);padding-bottom:var(--s1);border-bottom:1px solid var(--line);display:grid}.set-n{align-items:center;gap:var(--s1);font-size:var(--t-sm);color:var(--dim);font-weight:600;display:flex}.set-n.done{color:var(--grow-ink)}.sugg{align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r-md);margin-bottom:var(--s3);flex-wrap:wrap;display:flex}.sugg-why{cursor:pointer;font:inherit;font-size:var(--t-xs);letter-spacing:var(--tr-label);color:var(--dimmer);text-underline-offset:2px;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.dock{z-index:40;margin-top:var(--s5);padding:var(--s3) var(--s4);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2);align-items:center;gap:var(--s4);flex-wrap:wrap;display:flex;position:sticky;bottom:0}.dock .dock-bar{background:var(--panel3);border-radius:var(--r-pill);flex:1;min-width:140px;height:6px;position:relative;overflow:hidden}.dock .dock-fill{border-radius:var(--r-pill);background:var(--volt-dim);transition:right .3s var(--ease);position:absolute;inset:0}.dock .dock-fill.full{background:var(--grow)}@media (max-width:640px){.dock{gap:var(--s2);padding:var(--s2) var(--s3)}.dock .btn{flex:1}}.cal-grid{gap:var(--s1);grid-template-columns:repeat(7,1fr);display:grid}.cal-wd{font-size:var(--t-xs);letter-spacing:var(--tr-label);color:var(--dimmer);text-align:center;padding-bottom:var(--s1);font-weight:600}.cal-cell{min-height:52px;padding:var(--s1);border-radius:var(--r-sm);background:var(--panel2);color:var(--ink);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;transition:transform .12s var(--ease), border-color .12s var(--ease);border:1px solid #0000;flex-direction:column;justify-content:center;align-items:center;gap:3px;display:flex}.cal-cell:hover{border-color:var(--dimmer);transform:scale(1.04)}.cal-cell .cal-n{font-size:var(--t-sm);font-weight:500;line-height:1}.cal-cell .cal-s{font-size:var(--t-2xs);color:var(--volt-deep);font-weight:600;line-height:1}.cal-cell.h1{background:var(--volt-tint)}.cal-cell.h2{background:var(--volt-tint2)}.cal-cell.h3{background:var(--volt)}.cal-cell.h1 .cal-n,.cal-cell.h2 .cal-n,.cal-cell.h3 .cal-n{font-weight:700}.cal-cell.h3 .cal-s{color:var(--ink)}.cal-cell.today{border-color:var(--volt-dim);box-shadow:0 0 0 2px var(--volt-tint)}.cal-cell.today .cal-n{color:var(--volt-deep);font-weight:700}.cal-cell.sel{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink)}.cal-legend{align-items:center;gap:var(--s1);font-size:var(--t-xs);color:var(--dimmer);margin-top:var(--s3);display:flex}.cal-legend i{background:var(--panel2);border-radius:3px;width:14px;height:14px;display:inline-block}.cal-legend i.h1{background:var(--volt-tint)}.cal-legend i.h2{background:var(--volt-tint2)}.cal-legend i.h3{background:var(--volt)}.ex-rank{align-items:center;gap:var(--s3);text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;padding:var(--s3) var(--s4);border:0;border-bottom:1px solid var(--line-soft);background:0 0;display:flex}.ex-rank:last-child{border-bottom:0}.ex-rank:hover{background:var(--panel2)}.ex-rank .er-name{overflow-wrap:anywhere;flex:1;min-width:0;font-weight:600}.ex-rank .er-meta{font-variant-numeric:tabular-nums;font-family:DM Mono,monospace;font-size:var(--t-sm);color:var(--dimmer);white-space:nowrap}.ex-rank .er-bar{background:var(--panel3);border-radius:var(--r-pill);flex-shrink:0;width:72px;height:5px;overflow:hidden}.ex-rank .er-fill{background:var(--volt-dim);border-radius:var(--r-pill);height:100%}@media (max-width:640px){.ex-rank .er-bar{display:none}}.log-ex{align-items:baseline;gap:var(--s2);padding:var(--s2) 0;border-top:1px solid var(--line-soft);flex-wrap:wrap;display:flex}.log-ex .log-name{min-width:150px;font-weight:600}@media (max-width:640px){.cal-cell{min-height:44px}.cal-cell .cal-s{display:none}}.tbl{border-collapse:collapse;width:100%}.tbl thead tr{border-bottom:1px solid var(--line)}.tbl th{font-family:inherit;font-size:var(--t-xs);letter-spacing:var(--tr-label);color:var(--dimmer);white-space:nowrap;text-align:left;padding:var(--s2) var(--s3);font-weight:600}.tbl td{padding:var(--s3);font-size:var(--t-md)}.tbl tbody tr{border-bottom:1px solid var(--line-soft)}.tbl .num{text-align:center;font-variant-numeric:tabular-nums;font-family:DM Mono,monospace}.tbl .r{text-align:right}.tbl .c{text-align:center}.tbl .muted{color:var(--dim)}.g-letter{border-radius:var(--r-sm);background:var(--volt-tint);width:26px;height:26px;color:var(--volt-deep);font-family:inherit;font-size:var(--t-xs);justify-content:center;align-items:center;font-weight:700;display:inline-flex}.tbl.dense th{padding:var(--s2) var(--s1)}.tbl.dense td{padding:var(--s1);vertical-align:middle}.tbl.dense .inp{padding:6px var(--s2)}.tbl-sect td{padding:var(--s5) var(--s3) var(--s2);border-bottom:0}.tbl-sect .sect-name{font-size:var(--t-lg);color:var(--ink);letter-spacing:var(--tr-title);font-weight:700}.tbl-sect .sect-meta{font-family:DM Mono,monospace;font-size:var(--t-sm);color:var(--dimmer);margin-left:var(--s2)}.fadein{animation:fi .38s var(--ease) both}@keyframes fi{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}[data-radix-dialog-content][data-state=open]{animation:drawer-in .25s var(--ease)}[data-radix-dialog-content][data-state=closed]{animation:drawer-out .25s var(--ease)}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes drawer-out{0%{transform:translate(0)}to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.btn:hover,.btn:active{transform:none}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--panel3);border-radius:var(--r-pill);background-clip:content-box;border:3px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--dimmer);background-clip:content-box;border:3px solid #0000}.main-wrap{max-width:1180px;margin:0 auto;padding:20px 20px 56px}.hdr-in{justify-content:space-between;align-items:center;gap:14px;max-width:1180px;margin:0 auto;padding:14px 28px;display:flex}.page-bar{justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s5);flex-wrap:wrap;display:flex}.g-plans{gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));display:grid}.g-anag{gap:var(--s3);margin-bottom:var(--s3);grid-template-columns:2fr 1.4fr 1fr 1fr;display:grid}.g-prog{gap:var(--s3);grid-template-columns:1fr 1fr 4fr;display:grid}.g-stats{gap:var(--s3);margin-bottom:var(--s4);grid-template-columns:repeat(4,1fr);display:grid}.g-stats3{gap:var(--s3);margin-bottom:var(--s4);grid-template-columns:repeat(3,1fr);display:grid}.g-charts{gap:var(--s4);grid-template-columns:1fr 1fr;display:grid}.g-sets{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.pv-head,.pv-day{padding:var(--s5)}.pv-foot{padding:var(--s4) var(--s5);flex-wrap:wrap;justify-content:space-between;gap:10px;display:flex}.tscroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.nav-desktop{flex-wrap:wrap;gap:6px;display:flex}.nav-burger{display:none}.burger-icon{cursor:pointer;flex-direction:column;gap:5px;display:flex}.burger-icon span{background:var(--ink);width:22px;height:2px;transition:transform .2s var(--ease), opacity .2s var(--ease);transform-origin:50%;border-radius:2px;display:block}.burger-icon.open span:first-child{transform:translateY(7px)rotate(45deg)}.burger-icon.open span:nth-child(2){opacity:0}.burger-icon.open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}@media (max-width:820px){:root{--t-hero:29px;--t-2xl:23px}.main-wrap{padding:22px 16px 56px}.hdr-in{padding:12px 16px}.g-anag,.g-prog,.g-stats{grid-template-columns:1fr 1fr}.g-charts{grid-template-columns:1fr}}@media (max-width:640px){:root{--t-hero:26px;--t-2xl:21px;--t-xl:19px}.nav-desktop{display:none}.nav-burger{cursor:pointer;background:0 0;border:none;align-items:center;padding:8px;display:flex}.main-wrap{padding:18px 12px 48px}.hdr-in{padding:10px 14px}.g-anag,.g-prog{grid-template-columns:1fr}.g-stats{grid-template-columns:1fr 1fr}.g-stats3{grid-template-columns:1fr}.g-sets{grid-template-columns:1fr 1fr}.g-charts{grid-template-columns:1fr}.tab{padding:8px 14px}.btn{padding:12px 18px}.card{border-radius:var(--r-md)}.card.pad-l,.pv-head,.pv-day{padding:var(--s4)}.pv-foot{padding:var(--s3) var(--s4)}}@media (max-width:380px){:root{--t-hero:23px;--t-2xl:19px}.main-wrap{padding:14px 10px 40px}.hdr-in{padding:10px}.g-stats{grid-template-columns:1fr}}[data-radix-select-viewport] [data-highlighted]{background:var(--panel2)}[data-radix-select-viewport] [data-state=checked]{font-weight:600}@media print{.app-hdr,.btn{display:none!important}body{background:#fff}.card{box-shadow:none;break-inside:avoid}}
