*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#0f172a,#1a1f2e);color:#e2e8f0;min-height:100vh}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,#1e293b,#0f172a);border-bottom:2px solid #334155;padding:2rem;margin-bottom:2rem}.header-content{max-width:1200px;margin:0 auto;width:100%}.app-header h1{font-size:2.5rem;margin-bottom:.5rem;background:linear-gradient(135deg,#06b6d4,#10b981);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.app-header p{color:#94a3b8;font-size:1.125rem}.app-header p.timestamp{font-size:.875rem;color:#64748b;margin-top:.5rem}.header-top{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem}.header-actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}.auth-section{display:flex;gap:.75rem;align-items:center}.athlete-info{background:#06b6d41a;padding:.5rem 1rem;border-radius:6px;border:1px solid #06b6d4;font-size:.875rem;color:#06b6d4}.btn{padding:.5rem 1rem;border-radius:6px;border:none;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-strava{background:#fc4c02;color:#fff}.btn-strava:hover:not(:disabled){background:#ff6b35;transform:translateY(-2px);box-shadow:0 4px 12px #fc4c0266}.btn-refresh{background:#06b6d4;color:#0f172a}.btn-refresh:hover:not(:disabled){background:#0891b2;transform:translateY(-2px)}.btn-disconnect{background:transparent;color:#94a3b8;border:1px solid #475569}.btn-disconnect:hover{background:#94a3b81a;border-color:#cbd5e1;color:#cbd5e1}.error-message{color:#fecaca;font-size:.875rem;margin-top:1rem;padding:.75rem;background:#fca5a51a;border:1px solid #fca5a5;border-radius:6px}.app-empty{display:flex;align-items:center;justify-content:center;min-height:400px;text-align:center}.app-empty p{font-size:1.125rem;color:#94a3b8}.app-main{flex:1;max-width:1200px;margin:0 auto;width:100%;padding:0 2rem 2rem}@media(max-width:768px){.app-header{padding:1.5rem;margin-bottom:1rem}.app-header h1{font-size:1.75rem}.app-header p{font-size:.875rem}.header-top{flex-direction:column;gap:1rem}.header-actions{width:100%;justify-content:flex-start}.auth-section{flex-wrap:wrap;width:100%}.btn{font-size:.75rem;padding:.4rem .8rem}.app-main{padding:0 1rem 1rem}}.goal-progress{background:linear-gradient(135deg,#1e293b,#0f172a);border:1px solid #334155;border-radius:12px;padding:2rem;margin-bottom:2rem}.progress-visual{display:flex;align-items:center;gap:2rem;margin-bottom:2rem}.progress-ring{width:180px;height:180px}.progress-ring-bg{fill:none;stroke:#334155;stroke-width:4}.progress-ring-fill{fill:none;stroke-width:4;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50px 50px;transition:stroke-dashoffset .5s ease}.progress-ring-fill.status-ahead{stroke:#10b981}.progress-ring-fill.status-behind{stroke:#f97316}.progress-text{display:flex;flex-direction:column}.progress-text .miles{font-size:3rem;font-weight:700;color:#e2e8f0}.progress-text .goal-text{font-size:.875rem;color:#94a3b8}.progress-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.status-badge{padding:.75rem 1.5rem;border-radius:6px;font-weight:600;text-align:center}.status-badge.status-ahead{background:#10b9811a;color:#10b981;border:1px solid #10b981}.status-badge.status-behind{background:#f973161a;color:#f97316;border:1px solid #f97316}.detail-row{display:flex;justify-content:space-between;padding:.5rem 0;font-size:.875rem;color:#cbd5e1}.detail-row .value{font-weight:600;color:#f1f5f9}.detail-row .value.positive{color:#10b981}.detail-row .value.negative{color:#f97316}@media(max-width:640px){.progress-visual{flex-direction:column;gap:1rem}.progress-text .miles{font-size:2.25rem}.progress-ring{width:120px;height:120px}}.pace-chart{background:linear-gradient(135deg,#1e293b,#0f172a);border:1px solid #334155;border-radius:12px;padding:2rem;margin-bottom:2rem}.pace-chart h2{margin:0 0 1.5rem;font-size:1.25rem;color:#e2e8f0}.weekly-plan{background:linear-gradient(135deg,#1e293b,#0f172a);border:1px solid #334155;border-radius:12px;padding:2rem;margin-bottom:2rem}.weekly-plan h2{margin:0 0 1.5rem;font-size:1.25rem;color:#e2e8f0}.plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:1rem}.plan-day{display:flex;flex-direction:column;gap:.5rem}.day-label{font-size:.75rem;font-weight:600;text-transform:uppercase;color:#94a3b8}.plan-miles{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:.5rem;color:#e2e8f0;font-size:.875rem;text-align:center}.plan-miles:focus{outline:none;border-color:#06b6d4;background:#1a1f2e}.plan-type{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:.5rem;color:#e2e8f0;font-size:.75rem;text-align:center}.plan-type:focus{outline:none;border-color:#06b6d4}.plan-type.type-road{border-color:#ef4444}.plan-type.type-mtb{border-color:#f59e0b}.plan-type.type-virtual{border-color:#06b6d4}.plan-type.type-rest{border-color:#64748b}.plan-analysis{background:linear-gradient(135deg,#1e293b,#0f172a);border:1px solid #334155;border-radius:12px;padding:2rem;margin-bottom:2rem}.plan-analysis h2{margin:0 0 1.5rem;font-size:1.25rem;color:#e2e8f0}.analysis-card{background:#0f172a;border-radius:8px;border-left:4px solid;padding:1.5rem;margin-bottom:1.5rem}.analysis-card.on-track{border-left-color:#10b981;background:#10b9810d}.analysis-card.needs-adjustment{border-left-color:#f97316;background:#f973160d}.analysis-message{font-weight:600;margin-bottom:1rem;color:#e2e8f0}.analysis-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:1rem}.metric{display:flex;flex-direction:column;gap:.25rem}.metric-label{font-size:.75rem;text-transform:uppercase;color:#94a3b8;font-weight:600}.metric-value{font-size:1.5rem;font-weight:700;color:#f1f5f9}.adjustment{padding:1rem;border-radius:6px;font-size:.875rem;text-align:center;font-weight:600}.adjustment.increase{background:#f9731626;color:#fed7aa;border:1px solid #f97316}.adjustment.buffer{background:#10b98126;color:#86efac;border:1px solid #10b981}.type-breakdown{margin-top:2rem}.type-breakdown h3{margin:0 0 1rem;font-size:1rem;color:#cbd5e1}.breakdown-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}.breakdown-item{background:#0f172a;border:1px solid #334155;border-left:3px solid;border-radius:6px;padding:1rem;text-align:center}.breakdown-item.type-road{border-left-color:#ef4444}.breakdown-item.type-mtb{border-left-color:#f59e0b}.breakdown-item.type-virtual{border-left-color:#06b6d4}.breakdown-type{font-size:.75rem;text-transform:uppercase;color:#94a3b8;margin-bottom:.5rem}.breakdown-miles{font-size:1.25rem;font-weight:700;color:#f1f5f9}@media(max-width:640px){.analysis-grid{grid-template-columns:repeat(2,1fr)}}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
