:root{--bg: #0f0f11;--bg-elev-1: #17171a;--bg-elev-2: #202024;--bg-elev-3: #2a2a30;--border: #2a2a31;--border-strong: #3a3a44;--stage: #08080a;--text: #f0f0f2;--text-dim: #a2a2a8;--text-faint: #6c6c74;--accent: #7c83ff;--accent-hover: #969cff;--accent-press: #6a70da;--accent-ink: #16172e;--accent-soft: rgba(124,131,255,.14);--accent-line: rgba(124,131,255,.45);--accent-glow: rgba(124,131,255,.32);--good: #5fc98a;--good-soft: rgba(95,201,138,.14);--again: #ef7a6b;--again-soft: rgba(239,122,107,.14);--font-display: "Space Grotesk", system-ui, sans-serif;--font-body: "Hanken Grotesk", system-ui, sans-serif;--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--r-xl: 28px;--dur-1: 90ms;--dur-2: .15s;--dur-3: .23s}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-synthesis:none}::selection{background:var(--accent-soft)}h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;margin:0}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 18px;cursor:pointer;transition:background var(--dur-1),border-color var(--dur-1),transform var(--dur-1)}@media(hover:hover){button:hover{background:var(--bg-elev-3);border-color:var(--border-strong)}button.primary:hover{background:var(--accent-hover)}}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:transparent;color:var(--accent-ink);font-weight:600}input,select,textarea{font:inherit;font-size:16px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:9px 12px;outline:none;min-width:0;transition:border-color var(--dur-1)}input:focus,select:focus,textarea:focus{border-color:var(--accent-line)}.shell{min-height:100%;display:flex;flex-direction:column}.page{padding:28px 20px calc(28px + env(safe-area-inset-bottom));max-width:720px;margin:0 auto;width:100%;flex:1;display:flex;flex-direction:column;gap:16px}@media(max-width:720px){.page{padding-left:14px;padding-right:14px}}.card{background:var(--bg-elev-1);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px}.muted{color:var(--text-dim)}.small{font-size:13px}.spinner{width:28px;height:28px;margin:40vh auto 0;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{justify-content:center;max-width:400px;gap:22px}.login-head{text-align:center;display:flex;flex-direction:column;gap:8px}.login-mark{font-family:var(--font-display);font-size:28px;font-weight:700;color:var(--accent)}.login-form{display:flex;flex-direction:column;gap:14px}.login-form label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--text-dim)}.login-error{background:var(--again-soft);color:var(--again);border-radius:var(--r-sm);padding:10px 12px;font-size:14px}@media(prefers-reduced-motion:reduce){*{animation-duration:1ms!important;transition-duration:1ms!important}}.hub-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.hub-header input[type=date]{max-width:160px}.card h2{font-size:16px;margin-bottom:12px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:14px}.stat-label{margin-bottom:4px}.stat-value{font-family:var(--font-display);font-size:22px;font-weight:600}.exercise-list{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:4px}.connect-form{display:flex;flex-direction:column;gap:10px}.connect-head{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-dim)}.connect-dot{width:8px;height:8px;border-radius:50%;background:var(--again);flex-shrink:0}.connect-row{display:flex;gap:8px;flex-wrap:wrap}.connect-row input{flex:1;min-width:120px}.trend-grid{display:flex;flex-direction:column;gap:14px}.trend-row{display:flex;flex-direction:column;gap:6px}.trend-row svg{width:100%;height:auto;display:block}.footnote{padding-top:4px}
