:root{--strava-orange: #FC5200;--accent: #FF6B2B;--bg-dark: #1A1A2E;--bg-card: #16213E;--bg-panel: #0F1529;--text-primary: #E8E8F0;--text-muted: #8888A8;--text-dim: #555577;--green: #2ECC71;--blue: #3B82F6;--yellow: #F59E0B;--red: #EF4444;--border: rgba(255, 255, 255, .06)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:DM Sans,sans-serif;background:var(--bg-dark);color:var(--text-primary);height:100vh;overflow:hidden}#root{height:100vh}.auth-screen{display:flex;align-items:center;justify-content:center;height:100vh;background:var(--bg-dark);background-image:radial-gradient(ellipse at 20% 50%,rgba(252,82,0,.08) 0%,transparent 60%),radial-gradient(ellipse at 80% 20%,rgba(59,130,246,.06) 0%,transparent 50%)}.auth-box{width:420px;max-width:92vw;text-align:center}.auth-logo{font-size:42px;font-weight:700;letter-spacing:-1.5px;margin-bottom:6px;background:linear-gradient(135deg,var(--strava-orange),#FF8A50);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.auth-sub{color:var(--text-muted);font-size:15px;margin-bottom:36px}.auth-error{background:#ef444426;border:1px solid var(--red);color:var(--red);border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:20px}.auth-btn.strava-btn{width:100%;padding:14px 24px;background:linear-gradient(135deg,var(--strava-orange),var(--accent));border:none;border-radius:10px;color:#fff;font-family:DM Sans,sans-serif;font-size:15px;font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .2s;display:inline-flex;align-items:center;justify-content:center}.auth-btn.strava-btn:hover{transform:translateY(-1px);box-shadow:0 6px 24px #fc52004d}.auth-btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.auth-hint{margin-top:16px;font-size:12px;color:var(--text-dim);line-height:1.6}.auth-hint code{background:#ffffff0f;padding:1px 5px;border-radius:3px;font-family:DM Mono,monospace;font-size:11px}.strava-connect-btn{background:none;border:none;cursor:pointer;padding:0;transition:transform .15s,opacity .2s}.strava-connect-btn:hover{transform:translateY(-1px);opacity:.9}.auth-loading{color:var(--text-muted);font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 0}.app-screen{display:flex;flex-direction:column;height:100vh}.main-content{flex:1;position:relative;min-height:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:52px;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-shrink:0;z-index:1000}.topbar-title{font-weight:700;font-size:18px;letter-spacing:-.5px;color:var(--accent)}.topbar-right{display:flex;align-items:center;gap:12px}.topbar-badge{font-size:12px;font-weight:600;padding:4px 10px;border-radius:20px;background:#fc52001f;color:var(--accent)}.topbar-type-toggle{display:flex;gap:2px;background:var(--bg-card);border-radius:8px;padding:3px}.topbar-type-btn{padding:5px 14px;border:none;border-radius:6px;background:transparent;color:var(--text-muted);font-family:DM Sans,sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.topbar-type-btn.active{background:var(--strava-orange);color:#fff}.topbar-settings-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .15s;padding:0}.topbar-settings-btn:hover{border-color:#ffffff26;color:var(--text-primary)}.disconnect-btn{padding:5px 12px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-muted);font-family:DM Sans,sans-serif;font-size:12px;cursor:pointer;transition:all .15s}.disconnect-btn:hover{border-color:var(--red);color:var(--red)}#map{width:100%;height:100%;z-index:1}.status-bar{flex-shrink:0;padding:7px 20px;font-size:13px;font-weight:500;text-align:center;z-index:1000}.status-bar-error{background:#ef44441f;color:var(--red);border-bottom:1px solid rgba(239,68,68,.2)}.status-bar-info{background:#f59e0b1a;color:var(--yellow);border-bottom:1px solid rgba(245,158,11,.18)}.leaflet-control-zoom{border:none!important;box-shadow:0 2px 12px #0000004d!important}.leaflet-control-zoom a{background:var(--bg-card)!important;color:var(--text-primary)!important;border:1px solid var(--border)!important}.leaflet-control-zoom a:hover{background:var(--bg-panel)!important}.segment-tooltip{background:var(--bg-card)!important;color:var(--text-primary)!important;border:1px solid var(--border)!important;border-radius:6px!important;padding:4px 10px!important;font-family:DM Sans,sans-serif!important;font-size:12px!important;font-weight:500!important;box-shadow:0 4px 16px #0006!important}.segment-tooltip:before{border-top-color:var(--bg-card)!important}.search-here-btn{position:absolute;top:16px;left:50%;transform:translate(-50%);z-index:600;padding:8px 18px;background:var(--bg-card);border:1px solid rgba(255,255,255,.12);border-radius:20px;color:var(--text-primary);font-family:DM Sans,sans-serif;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 2px 12px #0006;transition:background .15s,border-color .15s;white-space:nowrap;display:flex;align-items:center;gap:7px}.search-here-btn:hover{background:var(--bg-panel);border-color:#fff3}.search-here-loading{color:var(--text-muted);cursor:default;pointer-events:none}.panel{position:absolute;bottom:20px;left:0;right:0;display:flex;align-items:center;gap:8px;padding:0 12px;z-index:500;pointer-events:none}.panel>*{pointer-events:all}.panel-scroll{flex:1;overflow-x:scroll;overflow-y:hidden;padding:8px 0;display:flex;gap:12px;align-items:stretch;scrollbar-width:none}.panel-scroll::-webkit-scrollbar{display:none}.panel-arrow{flex-shrink:0;width:28px;height:28px;background:transparent;border:none;color:var(--text-muted);font-size:18px;font-family:DM Mono,monospace;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s;padding:0;line-height:1}.panel-arrow:hover{color:var(--text-primary)}.panel-arrow-hidden{opacity:0;pointer-events:none}.seg-card{flex-shrink:0;width:240px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:14px 16px;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;gap:10px}.seg-card:hover{border-color:#fc52004d;transform:translateY(-2px);box-shadow:0 4px 20px #0000004d}.seg-card.active{border-color:var(--strava-orange);box-shadow:0 0 0 1px var(--strava-orange),0 4px 20px #fc520026}.seg-name{font-size:14px;font-weight:600;line-height:1.3;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seg-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.seg-stat{display:flex;flex-direction:column;gap:1px}.seg-stat-label{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);font-weight:500}.seg-stat-value{font-family:DM Mono,monospace;font-size:14px;font-weight:500;color:var(--text-primary)}.seg-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.seg-card-header .seg-name{min-width:0}.seg-star{display:flex;align-items:center;gap:4px;flex-shrink:0;cursor:pointer}.seg-star-icon{fill:none;stroke:var(--text-dim);stroke-width:1.5;transition:fill .15s,stroke .15s}.seg-star-icon.starred{fill:var(--yellow);stroke:var(--yellow)}.seg-star:hover .seg-star-icon:not(.starred){stroke:var(--yellow)}.seg-star-count{font-family:DM Mono,monospace;font-size:11px;color:var(--text-dim)}.seg-grade-profile{width:100%;height:100%;overflow:hidden;border-radius:4px;background:#fff0}.seg-grade-profile img{width:100%;height:100%;object-fit:cover}.seg-extracted{display:flex;align-items:center;justify-content:space-between;padding:4px 10px 2px;gap:6px}.seg-extracted-date{font-size:10px;color:var(--text-muted)}.seg-refresh-btn{display:flex;align-items:center;background:none;border:none;padding:2px;cursor:pointer;color:var(--text-muted);line-height:1;border-radius:3px}.seg-refresh-btn:hover:not(:disabled){color:var(--accent)}.seg-refresh-btn:disabled{cursor:default;opacity:.5}.seg-strava-link{border:none;background:none;cursor:pointer;font-family:DM Sans,sans-serif;width:100%}.seg-strava-link:hover{color:var(--accent)}.seg-difficulty-bar{width:100%;padding:5px 10px;border-radius:6px;font-family:DM Mono,monospace;font-size:14px;font-weight:500;color:var(--text-primary);text-align:center}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:2000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-box{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:28px 32px;width:340px;max-width:92vw;display:flex;flex-direction:column;gap:20px}.modal-title{font-size:16px;font-weight:700;color:var(--text-primary);letter-spacing:-.3px}.modal-field{display:flex;flex-direction:column;gap:6px}.modal-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim)}.modal-input{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-family:DM Mono,monospace;font-size:20px;font-weight:500;padding:10px 14px;outline:none;transition:border-color .15s;width:100%}.modal-input:focus{border-color:var(--strava-orange)}.modal-hint{font-size:12px;color:var(--text-dim)}.modal-hint-btn{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;padding:0;font-family:DM Sans,sans-serif}.modal-hint-btn:hover{text-decoration:underline}.modal-privacy{font-size:11px;color:var(--text-dim);line-height:1.5;margin-top:8px}.modal-divider{height:1px;background:var(--border);margin:0 -4px}.modal-info{background:#ffffff08;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.modal-info-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim)}.modal-info-text{font-size:12px;color:var(--text-dim);line-height:1.55}.modal-info-text em{color:var(--text-muted);font-style:normal}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.modal-btn{padding:8px 18px;border-radius:8px;font-family:DM Sans,sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;border:none}.modal-btn-secondary{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.modal-btn-secondary:hover{border-color:#ffffff26;color:var(--text-primary)}.modal-btn-primary{background:var(--strava-orange);color:#fff}.modal-btn-primary:hover{background:var(--accent)}.status-msg{display:flex;align-items:center;justify-content:center;width:100%;color:var(--text-dim);font-size:14px;padding:20px;text-align:center}.loading-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--text-dim);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}
