*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #1a2418;--surface: #222e1f;--surface-hover: #2a3827;--border: #3a4a35;--text: #e8e0d0;--text-muted: #9a9080;--accent: #d4c5a0;--accent-dim: #4a4230;--gold: #c9a84c;--flame: #8b2500;--flame-dim: #4a1500;--strava-orange: #FC5200;--wahoo-blue: #5ba4cf;--garmin-green: #4cc9b0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{color:var(--gold);text-decoration:underline}.hidden{display:none!important}.text-muted{color:var(--text-muted)}.container{max-width:900px;margin:0 auto;padding:20px}header{text-align:center;padding:40px 0 20px;border-bottom:1px solid var(--border);margin-bottom:30px}header h1{font-family:Cormorant Garamond,Georgia,serif;font-size:3rem;font-weight:700;color:var(--accent);letter-spacing:4px;display:flex;align-items:center;justify-content:center;gap:12px}.header-icon{width:48px;height:48px}header p{color:var(--text-muted);margin-top:8px;font-size:.85rem}.user-nav{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-bottom:16px;font-size:.85rem}.nav-link{color:var(--text-muted);font-size:.8rem}.nav-link:hover{color:var(--accent)}.login-link{color:var(--accent);font-size:.8rem;letter-spacing:1px;text-transform:uppercase;border:1px solid var(--border);padding:6px 16px;border-radius:4px}.login-link:hover{border-color:var(--accent);text-decoration:none}.controls{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap;align-items:center}.controls select,.controls button{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:8px 14px;font-family:inherit;font-size:.85rem;border-radius:4px;cursor:pointer}.controls select:hover,.controls button:hover{border-color:var(--accent)}.connect-buttons{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}.connect-btn{display:inline-block;background:var(--gold);color:var(--bg);padding:10px 20px;border-radius:4px;font-weight:600;font-family:inherit;font-size:.85rem;border:none;cursor:pointer;transition:opacity .2s;text-decoration:none}.connect-btn:hover{opacity:.85;text-decoration:none}.connect-btn.small{padding:6px 14px;font-size:.75rem}.strava-btn{background:var(--strava-orange)}.wahoo-btn{background:var(--wahoo-blue)}.garmin-btn{background:var(--garmin-green)}.google-btn{background:#4285f4}.platform-badge{padding:2px 8px;border-radius:3px;font-size:.65rem;text-transform:uppercase;letter-spacing:1px;font-weight:700}.badge-strava{background:#fc520026;color:var(--strava-orange)}.badge-wahoo{background:#2d9cdb26;color:var(--wahoo-blue)}.badge-garmin{background:#00b0b926;color:var(--garmin-green)}.badge-upload{background:#a064ff26;color:#a064ff}.upload-section h2{font-size:1.1rem;color:var(--accent);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}.upload-zone{border:2px dashed var(--border);border-radius:8px;padding:60px 20px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}.upload-zone:hover,.upload-zone.drag-over{border-color:var(--gold);background:#c9a84c0d}.upload-icon{font-size:3rem;color:var(--gold);margin-bottom:12px;line-height:1}.upload-zone p{margin-bottom:4px;font-size:.9rem}.upload-fields{margin-top:20px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.upload-file-info{margin:12px 0;font-size:.85rem;display:flex;align-items:center;gap:8px}.upload-status-msg{margin-top:20px;padding:20px;border-radius:8px;background:var(--surface);border:1px solid var(--border)}.progress-steps{display:flex;flex-direction:column;gap:12px}.progress-step{display:flex;align-items:center;gap:12px;font-size:.85rem;transition:opacity .3s}.step-pending{opacity:.3}.step-done{opacity:.6}.step-active{opacity:1}.step-done .step-label{text-decoration:line-through}.step-num{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:50%;font-size:.7rem;color:var(--text-muted);flex-shrink:0}.step-check{width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:var(--gold);font-size:.9rem;flex-shrink:0}.step-spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.activity-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:16px;transition:border-color .2s}.activity-card:hover{border-color:var(--accent-dim)}.card-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.card-header img{width:40px;height:40px;border-radius:50%;border:2px solid var(--border)}.card-header .athlete-name{font-weight:700;color:var(--text)}.card-header .activity-type{background:var(--accent-dim);color:var(--accent);padding:2px 8px;border-radius:3px;font-size:.7rem;text-transform:uppercase;letter-spacing:1px;margin-left:auto}.card-header .activity-date{color:var(--text-muted);font-size:.8rem}.activity-name{color:var(--text-muted);font-size:.85rem;margin-bottom:10px;font-style:italic}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:16px}.stat{background:var(--bg);padding:8px 12px;border-radius:4px}.stat-label{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}.stat-value{font-size:1rem;color:var(--gold);font-weight:600}.activity-map{height:200px;border-radius:6px;margin-bottom:12px;border:1px solid var(--border)}.roast{background:#d4c5a00f;border-left:3px solid var(--gold);padding:14px 16px;border-radius:0 6px 6px 0;font-family:Courier New,Courier,monospace;font-size:.9rem;line-height:1.6;color:var(--text);position:relative;z-index:1}.rule-ref{color:var(--gold);cursor:help;border-bottom:1px dotted var(--gold);position:relative}.rule-ref:hover:after{content:attr(data-rule);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--bg);border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:4px;font-family:Inter,-apple-system,sans-serif;font-style:normal;font-size:.75rem;line-height:1.4;width:280px;white-space:normal;z-index:1000;box-shadow:0 4px 12px #0006;pointer-events:none;margin-bottom:6px}.view-on-strava{display:inline-block;margin-top:12px;color:#fc5200;font-weight:700;font-size:.8rem;text-decoration:underline}.view-on-strava:hover{opacity:.85}.view-on-garmin{display:inline-block;margin-top:12px;color:var(--garmin-green);font-weight:700;font-size:.8rem;text-decoration:underline;margin-left:12px}.view-on-garmin:hover{opacity:.85}.view-on-wahoo{display:inline-block;margin-top:12px;color:var(--wahoo-blue);font-size:.75rem;margin-left:12px}.settings-section{margin-bottom:32px}.settings-section h2{font-size:1.1rem;color:var(--accent);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}.settings-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px}.settings-field{margin-bottom:16px}.settings-field label{display:block;margin-bottom:6px;font-size:.85rem;font-weight:700}.settings-field input[type=text],.settings-field input[type=number]{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:8px 12px;font-family:inherit;font-size:.9rem;border-radius:4px;width:100%;max-width:300px}.checkbox-label{display:flex;align-items:center;gap:12px;cursor:pointer}.checkbox-label input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.platform-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.platform-row:last-child{border-bottom:none}.platform-name{font-weight:700;flex:1}.disconnect-btn{background:var(--surface);border:1px solid var(--flame);color:var(--flame);padding:6px 12px;font-family:inherit;font-size:.75rem;border-radius:4px;cursor:pointer}.disconnect-btn:hover{background:var(--flame-dim)}.feed-item{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:12px}.feed-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.feed-name{font-weight:700;flex:1}.feed-pending{opacity:.7;border-style:dashed}.feed-date{color:var(--text-muted);font-size:.8rem}.admin-login{max-width:400px;margin:80px auto;text-align:center}.admin-login input{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:10px 16px;font-family:inherit;font-size:.9rem;border-radius:4px;width:100%;margin-bottom:12px}.athlete-row{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:6px;margin-bottom:8px}.athlete-row img{width:36px;height:36px;border-radius:50%}.athlete-row .name{flex:1}.athlete-row button{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:6px 12px;font-family:inherit;font-size:.75rem;border-radius:4px;cursor:pointer}.athlete-row button:hover{border-color:var(--accent)}.athlete-row button.danger{border-color:var(--flame);color:var(--flame)}.athlete-row button.danger:hover{background:var(--flame-dim)}.badge-tracked{background:var(--accent-dim);color:var(--accent);padding:2px 8px;border-radius:3px;font-size:.7rem}.badge-untracked{background:var(--flame-dim);color:var(--flame);padding:2px 8px;border-radius:3px;font-size:.7rem}.callback-msg{text-align:center;padding:80px 20px}.callback-msg h2{color:var(--accent);margin-bottom:16px}.callback-msg.error h2{color:var(--flame)}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}footer{text-align:center;padding:30px;color:var(--text-muted);font-size:.7rem;border-top:1px solid var(--border);margin-top:40px}.footer-logos{display:flex;justify-content:center;gap:16px;align-items:center}footer img{height:24px;margin-top:8px;opacity:.6}.footer-link{display:inline-block;margin-top:12px;color:var(--text-muted);font-size:.75rem}.footer-link:hover{color:var(--accent)}.footer-sep{color:var(--border);margin:0 4px}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:24px;width:90%;max-width:480px;box-shadow:0 8px 32px #00000080}.modal-content h3{color:var(--accent);margin-bottom:16px}.modal-content textarea{padding:8px 12px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.9rem;width:100%;resize:vertical}.modal-actions{display:flex;gap:8px;margin-top:16px}.loading{text-align:center;padding:40px;color:var(--text-muted)}@media(max-width:600px){.container{padding:12px}header{padding:24px 0 16px;margin-bottom:20px}header h1{font-size:1.6rem;letter-spacing:2px;gap:8px}.header-icon{width:32px;height:32px}header p{font-size:.75rem}.user-nav{gap:12px;font-size:.8rem;flex-wrap:wrap;justify-content:center}.controls{flex-direction:column;gap:8px}.controls select{width:100%}.connect-buttons{margin-left:0;width:100%;flex-direction:column}.connect-btn{width:100%;text-align:center}.activity-card{padding:14px}.card-header{flex-wrap:wrap;gap:8px}.card-header img{width:32px;height:32px}.card-header .athlete-name{font-size:.85rem}.card-header .activity-date{font-size:.7rem}.card-header .activity-type{font-size:.6rem}.platform-badge{font-size:.55rem}.stats-grid{grid-template-columns:repeat(2,1fr);gap:6px}.stat{padding:6px 8px}.stat-label{font-size:.6rem}.stat-value{font-size:.85rem}.activity-map{height:160px}.roast{padding:10px 12px;font-size:.8rem}.view-on-strava,.view-on-garmin,.view-on-wahoo{font-size:.7rem}.empty-state{padding:40px 16px}.google-btn{font-size:.85rem}.settings-card{padding:14px}.settings-field input[type=text],.settings-field input[type=number]{max-width:100%}.platform-row{flex-wrap:wrap;gap:8px}.upload-zone{padding:40px 16px}.upload-icon{font-size:2rem}.upload-fields{padding:14px}.modal-content{width:95%;padding:18px}footer{padding:20px 12px}.footer-logos{flex-wrap:wrap}.footer-link,.footer-sep{font-size:.65rem}.feed-item{padding:12px}.feed-header{flex-wrap:wrap;gap:6px}}
