:root{
  --bg:#080a0f;--s1:#0e1117;--s2:#141720;--s3:#1c2030;--s4:#242840;
  --acc:#e8ff47;--blu:#3b82f6;--grn:#22d46a;--red:#ff4d4d;--yel:#fbbf24;--pur:#a78bfa;
  --tx:#f0f2f8;--tx2:#8b92a8;--tx3:#4a5168;--br:#1e2235;--br2:#2a2f48;--r:10px;--r2:16px;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{background:var(--bg);color:var(--tx);font-family:'Segoe UI',system-ui,sans-serif;min-height:100vh;font-size:14px;line-height:1.5;}
.app{display:flex;height:100vh;overflow:hidden;}
.sidebar{width:220px;flex-shrink:0;background:var(--s1);border-right:1px solid var(--br);display:flex;flex-direction:column;z-index:20;}
.sidebar-logo{padding:24px 20px 20px;border-bottom:1px solid var(--br);}
.logo-mark{display:flex;align-items:center;gap:10px;}
.logo-icon{width:34px;height:34px;background:var(--acc);border-radius:8px;display:flex;align-items:center;justify-content:center;}
.logo-icon svg{width:20px;height:20px;}
.logo-text{font-size:1rem;font-weight:700;letter-spacing:-.02em;}
.logo-sub{font-size:.58rem;color:var(--tx3);letter-spacing:.08em;text-transform:uppercase;margin-top:1px;}
.sidebar-nav{flex:1;padding:12px 10px;overflow-y:auto;}
.nav-section-label{font-size:.58rem;text-transform:uppercase;letter-spacing:.1em;color:var(--tx3);padding:6px 10px 4px;}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;cursor:pointer;color:var(--tx2);font-size:.82rem;font-weight:500;transition:all .15s;margin-bottom:2px;}
.nav-item:hover{background:var(--s3);color:var(--tx);}
.nav-item.active{background:var(--acc);color:#000;font-weight:700;}
.ni{font-size:.95rem;width:18px;text-align:center;}
.sidebar-bottom{padding:12px 10px;border-top:1px solid var(--br);display:flex;flex-direction:column;gap:6px;}
.sync-btn{width:100%;display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:8px;border:1px solid;font-size:.76rem;font-weight:600;cursor:pointer;transition:all .15s;background:transparent;}
.sync-strava{border-color:rgba(252,76,2,.3);color:#fc4c02;background:rgba(252,76,2,.08);}
.sync-strava:hover{background:rgba(252,76,2,.18);}
.sync-icu{border-color:rgba(59,130,246,.3);color:#3b82f6;background:rgba(59,130,246,.08);}
.sync-icu:hover{background:rgba(59,130,246,.18);}
.sync-icu:disabled{opacity:.5;cursor:not-allowed;}
.dot{width:7px;height:7px;border-radius:50%;animation:pulse 2s infinite;flex-shrink:0;}
.dot-ora{background:#fc4c02;}.dot-icu{background:#3b82f6;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.35;}}
.main{flex:1;overflow:hidden;display:flex;flex-direction:column;}
.topbar{height:52px;background:var(--s1);border-bottom:1px solid var(--br);display:flex;align-items:center;padding:0 24px;gap:12px;flex-shrink:0;}
.topbar-title{font-size:.9rem;font-weight:600;}
.topbar-date{font-size:.72rem;color:var(--tx3);}
.topbar-right{margin-left:auto;display:flex;gap:8px;align-items:center;}
.tb{padding:6px 14px;border-radius:7px;border:none;cursor:pointer;font-size:.74rem;font-weight:600;transition:all .15s;}
.tb-acc{background:var(--acc);color:#000;}.tb-acc:hover{background:#d4eb3f;}
.tb-pur{background:var(--pur);color:#000;}
.tb-out{background:transparent;color:var(--tx2);border:1px solid var(--br2);}.tb-out:hover{border-color:var(--acc);color:var(--acc);}
.content{flex:1;overflow-y:auto;padding:20px 24px;}
.page{display:none;}.page.active{display:block;}
.home-split{display:grid;grid-template-columns:340px 1fr;gap:20px;height:calc(100vh - 52px - 40px);}
.left-panel{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding-right:4px;}
.right-panel{display:flex;flex-direction:column;gap:12px;overflow-y:auto;}
.kpi-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.kpi{background:var(--s2);border:1px solid var(--br);border-radius:var(--r);padding:12px 14px;}
.kl{font-size:.6rem;text-transform:uppercase;letter-spacing:.07em;color:var(--tx3);margin-bottom:4px;}
.kv{font-size:1.5rem;font-weight:700;line-height:1;letter-spacing:-.02em;}
.ks{font-size:.62rem;color:var(--tx3);margin-top:3px;}
.kv-up{color:var(--grn);}.kv-dn{color:var(--red);}.kv-wa{color:var(--yel);}.kv-acc{color:var(--acc);}
.card{background:var(--s2);border:1px solid var(--br);border-radius:var(--r);padding:15px;margin-bottom:14px;}
.ct{font-size:.63rem;text-transform:uppercase;letter-spacing:.08em;color:var(--tx3);margin-bottom:10px;}
.cw{position:relative;}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
.today-card{background:var(--s2);border:1px solid var(--br);border-radius:var(--r2);padding:20px;flex-shrink:0;}
.today-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;color:var(--tx3);margin-bottom:6px;}
.today-name{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;margin:4px 0 10px;}
.today-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:.66rem;font-weight:700;letter-spacing:.04em;margin-right:5px;}
.bz1{background:rgba(74,81,104,.2);color:#94a3b8;}
.bz2{background:rgba(34,212,106,.12);color:var(--grn);}
.bz3{background:rgba(251,191,36,.12);color:var(--yel);}
.bz4{background:rgba(249,115,22,.12);color:#f97316;}
.bz5{background:rgba(255,77,77,.12);color:var(--red);}
.brace{background:rgba(167,139,250,.15);color:var(--pur);}
.boff{background:rgba(74,81,104,.15);color:var(--tx3);}
.bgrn{background:rgba(34,212,106,.12);color:var(--grn);}
.today-meta{display:flex;gap:16px;margin:10px 0;flex-wrap:wrap;}
.tm-item{display:flex;flex-direction:column;gap:2px;}
.tm-val{font-size:.95rem;font-weight:700;}
.tm-lbl{font-size:.58rem;color:var(--tx3);text-transform:uppercase;}
.today-desc{font-size:.78rem;color:var(--tx2);line-height:1.6;padding:10px 14px;background:var(--s3);border-radius:8px;border-left:3px solid var(--acc);margin:10px 0;}
.adapt-note{display:flex;gap:8px;padding:9px 12px;background:rgba(251,191,36,.07);border:1px solid rgba(251,191,36,.2);border-radius:8px;font-size:.72rem;color:var(--yel);margin-top:8px;}
.wc-wrap{margin:12px 0 6px;}
.wc-lbl{font-size:.6rem;text-transform:uppercase;letter-spacing:.07em;color:var(--tx3);margin-bottom:6px;}
.wc-chart{display:flex;align-items:flex-end;gap:2px;height:80px;background:var(--s3);border-radius:8px;padding:8px;}
.wc-block{border-radius:3px 3px 0 0;position:relative;cursor:pointer;transition:opacity .15s;flex-shrink:0;}
.wc-block:hover{opacity:.75;}
.wc-tip{position:absolute;bottom:calc(100%+6px);left:50%;transform:translateX(-50%);background:var(--s4);border:1px solid var(--br2);color:var(--tx);font-size:.58rem;padding:4px 8px;border-radius:5px;white-space:nowrap;z-index:10;pointer-events:none;opacity:0;transition:opacity .15s;}
.wc-block:hover .wc-tip{opacity:1;}
.wc-zones{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px;}
.wc-ztag{font-size:.58rem;font-weight:600;padding:2px 7px;border-radius:10px;}
.week-strip{background:var(--s2);border:1px solid var(--br);border-radius:var(--r2);padding:14px;}
.ws-title{font-size:.63rem;text-transform:uppercase;letter-spacing:.07em;color:var(--tx3);margin-bottom:10px;}
.ws-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;}
.ws-day{background:var(--s3);border:1px solid var(--br);border-radius:7px;padding:7px 4px;text-align:center;cursor:pointer;transition:all .15s;position:relative;}
.ws-day:hover{border-color:var(--br2);}
.ws-today{border-color:var(--acc)!important;background:rgba(232,255,71,.05);}
.ws-done{border-color:var(--grn)!important;}
.ws-off{opacity:.45;}
.ws-dow{font-size:.56rem;text-transform:uppercase;color:var(--tx3);margin-bottom:3px;}
.ws-date{font-size:.72rem;font-weight:700;margin-bottom:4px;}
.ws-dot{width:7px;height:7px;border-radius:50%;margin:0 auto 3px;}
.ws-tss{font-size:.56rem;color:var(--tx3);}
.ws-done-ico{position:absolute;top:3px;right:4px;font-size:.52rem;}
.recent-list{background:var(--s2);border:1px solid var(--br);border-radius:var(--r2);padding:14px;}
.rl-title{font-size:.63rem;text-transform:uppercase;letter-spacing:.07em;color:var(--tx3);margin-bottom:8px;}
.rl-item{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--br);}
.rl-item:last-child{border:none;padding-bottom:0;}
.rl-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.rl-name{font-size:.78rem;font-weight:500;flex:1;}
.rl-meta{font-size:.65rem;color:var(--tx3);display:flex;gap:7px;}
.rl-tss{font-size:.72rem;font-weight:700;color:var(--acc);}
.plan-week-block{margin-bottom:22px;}
.pwb-header{display:flex;align-items:center;gap:10px;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid var(--br);}
.pwb-title{font-size:.72rem;font-weight:700;color:var(--acc);text-transform:uppercase;letter-spacing:.04em;}
.pwb-tss{font-size:.65rem;color:var(--tx3);margin-left:auto;}
.plan-day-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:9px;}
.plan-card{background:var(--s2);border:1px solid var(--br);border-radius:var(--r);padding:13px;border-left:3px solid var(--br);transition:border-color .15s;}
.plan-card:hover{border-color:var(--br2);}
.pc-done{border-left-color:var(--grn)!important;}
.pc-today{border-left-color:var(--acc)!important;}
.pc-z2{border-left-color:var(--grn);}
.pc-z3{border-left-color:var(--yel);}
.pc-z4{border-left-color:#f97316;}
.pc-z5{border-left-color:var(--red);}
.pc-race{border-left-color:var(--pur);}
.pc-off{opacity:.5;}
.pc-header{display:flex;align-items:center;gap:7px;margin-bottom:5px;}
.pc-date{font-size:.63rem;color:var(--tx3);}
.pc-name{font-size:.8rem;font-weight:600;flex:1;}
.pc-tss-lbl{font-size:.63rem;color:var(--tx3);}
.pc-desc{font-size:.7rem;color:var(--tx2);margin:5px 0 7px;line-height:1.5;}
.pc-adapt{font-size:.63rem;color:var(--yel);margin-top:4px;}
.cal-day-cell{background:var(--s2);border:1px solid var(--br);border-radius:7px;min-height:82px;padding:5px;}
.cal-pill{font-size:.58rem;border-radius:3px;padding:2px 5px;margin-bottom:2px;font-weight:600;display:block;}
.cal-sub{font-size:.53rem;color:var(--tx3);padding:0 3px;margin-bottom:1px;display:block;}
.act-table{width:100%;border-collapse:collapse;font-size:.75rem;}
.act-table th{padding:6px 9px;text-align:left;color:var(--tx3);font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--br);font-weight:500;}
.act-table td{padding:7px 9px;border-bottom:1px solid var(--br);}
.act-table tr:hover td{background:var(--s3);}
.bdg{display:inline-block;padding:2px 7px;border-radius:20px;font-size:.6rem;font-weight:600;}
.bdg-r{background:rgba(232,255,71,.1);color:var(--acc);}
.bdg-rc{background:rgba(167,139,250,.15);color:var(--pur);}
.bdg-g{background:rgba(251,191,36,.12);color:var(--yel);}
.power-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:7px;margin-bottom:12px;}
.pk{background:var(--s3);border:1px solid var(--br);border-radius:7px;padding:9px;text-align:center;}
.pkv{font-size:1rem;font-weight:700;color:var(--acc);}
.pkl{font-size:.56rem;color:var(--tx3);margin-top:2px;text-transform:uppercase;}
.pkw{font-size:.56rem;color:var(--tx3);}
.zbar{display:flex;align-items:center;gap:7px;margin-bottom:5px;}
.zbar-lbl{font-size:.66rem;flex:0 0 115px;}
.zbar-track{flex:1;background:var(--s3);border-radius:3px;height:6px;}
.zbar-fill{height:100%;border-radius:3px;}
.zbar-pct{font-size:.6rem;color:var(--tx3);flex:0 0 26px;text-align:right;}
.hm-wrap{overflow-x:auto;padding-bottom:4px;}
.divider{height:1px;background:var(--br);margin:14px 0;}
.act-input{background:var(--s2);border:1px solid var(--br);color:var(--tx);padding:5px 9px;border-radius:6px;font-size:.75rem;}
.act-input:focus{outline:none;border-color:var(--br2);}
.mo{display:none;position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:100;align-items:center;justify-content:center;}
.mo.open{display:flex;}
.mbox{background:var(--s1);border:1px solid var(--br2);border-radius:var(--r2);padding:20px;max-width:440px;width:90%;max-height:90vh;overflow-y:auto;}
.mbox-title{font-size:.9rem;font-weight:700;margin-bottom:12px;}
.mbox-close{float:right;background:none;border:none;color:var(--tx3);font-size:1.1rem;cursor:pointer;}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;}
.fg{display:flex;flex-direction:column;gap:3px;}
.fg label{font-size:.63rem;color:var(--tx3);}
.fg input,.fg select{background:var(--s2);border:1px solid var(--br);border-radius:6px;color:var(--tx);padding:6px 8px;font-size:.78rem;}
.fg input:focus,.fg select:focus{outline:none;border-color:var(--acc);}
.empty{text-align:center;color:var(--tx3);padding:24px;font-size:.76rem;}
::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--br2);border-radius:4px;}
@media(max-width:1100px){.home-split{grid-template-columns:1fr;}}
@media(max-width:768px){.sidebar{display:none;}.g2,.g3{grid-template-columns:1fr;}}
