:root{--bg:#0a0e1a;--panel:rgba(24,30,48,.72);--panel2:hsla(0,0%,100%,.04);--border:rgba(90,110,160,.18);--fg:#eef2fb;--muted:#9aa6c4;--accent:#00f0ff;--accent2:#00ff81;--future:#ffa900;--ok:#00ff81;--warn:#ffa900;--bad:#ff6800}*{box-sizing:border-box}body,html{margin:0;padding:0}body{color:var(--fg);font:14px/1.4 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 20% -10%,rgba(0,240,255,.06),transparent),radial-gradient(1000px 500px at 90% 10%,rgba(0,255,129,.07),transparent),var(--bg)}a{color:var(--accent)}header{padding:18px 24px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}header h1{margin:0;font-size:20px;font-weight:800;letter-spacing:-.02em;background:linear-gradient(90deg,#00ff81,#00f0ff);-webkit-background-clip:text;background-clip:text;color:transparent}.role{font-size:12px;color:var(--muted)}main{max-width:1200px;margin:0 auto}.panel,main{padding:20px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:16px;margin-bottom:16px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 8px 32px rgba(0,0,0,.35)}.controls-bar{position:-webkit-sticky;position:sticky;top:0;z-index:30;margin:-20px -20px 16px;padding:14px 20px;background:rgba(10,14,26,.82);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border);border-radius:0}.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.controls .group{display:flex;gap:6px}.controls button{background:hsla(0,0%,100%,.04);color:var(--muted);border:1px solid var(--border);padding:7px 14px;cursor:pointer;font-size:13px;border-radius:20px;font-weight:500;transition:.15s}.controls button:hover{color:var(--fg);border-color:rgba(0,240,255,.4)}.controls button.active{background:linear-gradient(90deg,#00f0ff,#00ff81);color:#04141f;font-weight:600;border-color:transparent}.controls label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}#chart-wrap{position:relative;height:340px}table{width:100%;border-collapse:collapse;font-size:13px}td,th{padding:8px 10px;text-align:left;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.5px}tr:hover td{background:#1c2130}.rpe{display:inline-block;min-width:44px;text-align:center;font-weight:600}.rpe.low{color:var(--ok)}.rpe.mid{color:var(--warn)}.rpe.high{color:var(--bad)}.sport{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.sport.Run{background:#1e3a5f;color:#7dd3fc}.sport.Bike{background:#3f2a5f;color:#c4b5fd}.sport.Trail{background:#2f4a2a;color:#86efac}.kpi{display:flex;gap:26px;flex-wrap:wrap;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.kpi div{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}.kpi div b{color:var(--fg);font-size:24px;display:block;font-weight:800;margin-top:6px;letter-spacing:-.02em;text-transform:none}.legend{display:flex;gap:18px;font-size:12px;color:var(--muted);margin-top:14px;justify-content:center}.legend span{display:flex;align-items:center;gap:7px}.legend .sw{width:14px;height:14px;border-radius:4px;background:linear-gradient(180deg,#00ff81,#00f0ff)}.legend .sw.future{background:transparent;border:2px dashed var(--future)}.zlg{display:flex;gap:12px;font-size:11px;color:var(--muted);margin-top:12px;flex-wrap:wrap}.zlg span{display:flex;align-items:center;gap:5px}.zlg i{width:10px;height:10px;border-radius:3px;display:inline-block}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-box{background:var(--panel);padding:32px;border-radius:12px;border:1px solid var(--border);width:100%;max-width:360px}.login-box h2{margin:0 0 4px}.login-box p.sub{color:var(--muted);margin:0 0 20px;font-size:13px}.login-box input{background:var(--bg);border:1px solid var(--border);color:var(--fg);padding:11px 12px;border-radius:6px;font-size:14px;width:100%;margin-bottom:12px}.login-box button{background:var(--accent);color:#000;border:0;padding:11px 20px;border-radius:6px;cursor:pointer;font-weight:600;width:100%;font-size:14px}.login-box button:disabled{opacity:.6;cursor:not-allowed}.login-box .err{color:var(--bad);font-size:13px;margin:0 0 12px;min-height:18px}.logout-btn{background:transparent;border:1px solid var(--border);color:var(--muted);padding:6px 12px;border-radius:6px;cursor:pointer;font-size:12px}.logout-btn:hover{color:var(--fg);border-color:var(--muted)}