@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap";#root{min-height:100vh}:root{--bg-primary: #121212;--bg-surface: rgba(255, 255, 255, .05);--bg-surface-hover: rgba(255, 255, 255, .08);--bg-elevated: #1E1E1E;--border-subtle: rgba(255, 255, 255, .08);--border-medium: rgba(255, 255, 255, .14);--accent-primary: #1E90FF;--accent-primary-dim: rgba(30, 144, 255, .15);--accent-primary-glow: rgba(30, 144, 255, .4);--accent-orange: #FF5722;--accent-orange-dim: rgba(255, 87, 34, .15);--accent-orange-glow: rgba(255, 87, 34, .4);--accent-red: #FF2D55;--accent-red-dim: rgba(255, 45, 85, .15);--accent-red-glow: rgba(255, 45, 85, .4);--accent-green: #00FF85;--accent-green-dim: rgba(0, 255, 133, .15);--accent-green-glow: rgba(0, 255, 133, .4);--accent-purple: #9B59FF;--accent-purple-dim: rgba(155, 89, 255, .15);--color-road: #1E90FF;--color-mtb: #00FF85;--color-virtual: #9B59FF;--color-rest: rgba(255, 255, 255, .15);--color-road-text: #FAFAFA;--color-mtb-text: #121212;--color-virtual-text: #FAFAFA;--text-primary: #FAFAFA;--text-secondary: #E0E0E0;--text-muted: rgba(224, 224, 224, .5);--bg-header: rgba(18, 18, 18, .92);--bg-overlay: rgba(0, 0, 0, .55);--bg-dropdown: #1E1E1E;--text-on-accent: #121212;--scrollbar-thumb: rgba(255, 255, 255, .12);--modal-handle-bg: rgba(255, 255, 255, .2);--tooltip-bg: rgba(18, 18, 18, .95);--target-line: #FAFAFA;--font-ui: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--glass-bg: linear-gradient(135deg, rgba(255,255,255,.07), rgba(255,255,255,.03));--glass-bg-solid: rgba(255, 255, 255, .04);--glass-border: 1px solid rgba(255, 255, 255, .1);--glass-border-glow: 1px solid rgba(30, 144, 255, .12);--glass-blur: blur(24px);--glass-shadow: 0 4px 30px rgba(0, 0, 0, .25);--glass-inner-light: inset 0 1px 0 rgba(255, 255, 255, .07);--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease;--transition-drawer: .4s cubic-bezier(.32, .72, 0, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-ui);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;min-height:100vh;overflow-x:hidden}.glass-panel{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow),var(--glass-inner-light)}.data-text{font-family:var(--font-mono);font-variant-numeric:tabular-nums}select,select option{background:var(--bg-dropdown);color:var(--text-secondary)}.prob-high{color:var(--accent-green)}.prob-mid{color:var(--accent-orange)}.prob-low{color:var(--accent-red)}.prob-glow-high{text-shadow:0 0 20px var(--accent-green-glow)}.prob-glow-mid{text-shadow:0 0 20px var(--accent-orange-glow)}.prob-glow-low{text-shadow:0 0 20px var(--accent-red-glow)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes hexPulse{0%,to{filter:drop-shadow(0 0 8px var(--glow-color, var(--accent-green-glow)))}50%{filter:drop-shadow(0 0 24px var(--glow-color, var(--accent-green-glow)))}}@keyframes hexFlicker{0%,to{filter:drop-shadow(0 0 12px var(--glow-color));opacity:1}25%{filter:drop-shadow(0 0 4px var(--glow-color));opacity:.7}50%{filter:drop-shadow(0 0 28px var(--glow-color));opacity:1}75%{filter:drop-shadow(0 0 6px var(--glow-color));opacity:.85}}.animate-in{animation:fadeIn var(--transition-slow) ease forwards}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-full)}@media(min-width:768px){:root{--space-lg: 32px;--space-xl: 48px;--space-2xl: 64px}}.shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.shell-main{flex:1;padding:var(--space-md);padding-bottom:calc(72px + env(safe-area-inset-bottom,0px) + var(--space-md));max-width:640px;margin:0 auto;width:100%}.shell-loading{display:flex;align-items:center;justify-content:center;min-height:60vh;font-family:var(--font-mono);font-size:.875rem;color:var(--text-muted);letter-spacing:.1em;animation:pulse 2s ease infinite}.shell-unauthenticated{display:flex;align-items:center;justify-content:center;min-height:70vh}.shell-hero{text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-lg)}.shell-hero-hex{font-size:6rem;color:var(--accent-primary);text-shadow:0 0 40px var(--accent-primary-glow);line-height:1}.shell-hero-text{font-size:1.1rem;color:var(--text-secondary);line-height:1.6}.shell-hero-goal{font-size:.8rem;color:var(--text-muted);letter-spacing:.15em}.accent-primary{color:var(--accent-primary)}.section-title{font-family:var(--font-mono);font-size:.7rem;font-weight:500;letter-spacing:.2em;color:var(--text-muted);text-transform:uppercase}.text-muted{color:var(--text-muted)}.header{padding:var(--space-md);display:flex;align-items:center;justify-content:space-between;border-bottom:var(--glass-border-glow);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);position:sticky;top:0;z-index:100;background:var(--bg-header)}.header-brand{display:flex;align-items:baseline;gap:var(--space-sm)}.header-title{font-family:var(--font-mono);font-size:.9rem;font-weight:700;letter-spacing:.15em;color:var(--accent-primary)}.header-subtitle{font-family:var(--font-mono);font-size:.55rem;letter-spacing:.2em;color:var(--text-muted);display:none}.header-actions{display:flex;align-items:center;gap:var(--space-sm)}.header-athlete{font-family:var(--font-mono);font-size:.7rem;color:var(--text-secondary);letter-spacing:.05em}.header-btn{font-family:var(--font-mono);font-size:.65rem;letter-spacing:.1em;padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--border-medium);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.header-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.header-btn-connect{border-color:var(--accent-primary);color:var(--accent-primary)}.header-btn-connect:hover{background:var(--accent-primary-dim)}.header-btn-sync{border-color:var(--accent-primary);color:var(--accent-primary)}.header-btn-sync:hover{background:var(--accent-primary-dim)}.header-btn-sync:disabled{opacity:.5;cursor:not-allowed}.header-btn-disconnect{border-color:var(--accent-red);color:var(--accent-red);opacity:.6}.header-btn-disconnect:hover{opacity:1;background:var(--accent-red-dim)}.header-error{position:absolute;bottom:-28px;left:0;right:0;font-size:.7rem;color:var(--accent-red);text-align:center;font-family:var(--font-mono);padding:4px}.header-menu-wrapper{position:relative;display:flex;align-items:center;gap:var(--space-sm)}.header-menu-toggle{background:none;border:1px solid var(--border-medium);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:1.2rem;padding:4px 8px;cursor:pointer;line-height:1;transition:all var(--transition-fast)}.header-menu-toggle:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.header-dropdown{position:absolute;top:calc(100% + var(--space-sm));right:0;min-width:180px;padding:var(--space-xs);z-index:110;display:flex;flex-direction:column;animation:fadeIn .15s ease}.header-dropdown-item{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;padding:var(--space-sm) var(--space-md);border:none;background:none;color:var(--text-secondary);text-align:left;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.header-dropdown-item:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.header-dropdown-item:disabled{opacity:.5;cursor:not-allowed}.header-dropdown-item-danger{color:var(--accent-red)}.header-dropdown-item-danger:hover{background:var(--accent-red-dim);color:var(--accent-red)}.hex-compact{width:180px;height:180px}.hex-svg{width:100%;height:100%}.hex-halo-high{animation:hexPulse 3s ease infinite}.hex-halo-mid{--glow-color: var(--accent-orange-glow);animation:hexPulse 2s ease infinite}.hex-halo-low{--glow-color: var(--accent-red-glow);animation:hexFlicker 2s ease-in-out infinite}.hex-outline{animation:pulse 3s ease infinite}.hex-prob-text{font-family:var(--font-mono);font-size:48px;font-weight:700}.hex-prob-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em}.drawer-area{position:relative;min-height:40vh}.drawer{position:absolute;inset:0;transform:translateY(16px);opacity:0;pointer-events:none;transition:transform var(--transition-drawer),opacity .3s ease;overflow-y:auto}.drawer-active{position:relative;transform:translateY(0);opacity:1;pointer-events:auto}.drawer-section{padding:var(--space-md)}.drawer-section-header{margin-bottom:var(--space-md)}.drawer-section-gap{margin-top:var(--space-md)}.stats-ring-wrapper{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.stats-ring{position:relative;width:400px;height:400px;max-width:calc(100vw - 32px)}.stats-ring-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1}.stats-ring-item{position:absolute;top:50%;left:50%;width:88px;margin-left:-44px;margin-top:-28px;padding:var(--space-sm) var(--space-xs);text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;transition:transform var(--transition-base),border-color .15s ease,box-shadow .15s ease}.stats-ring-item-active{border-color:var(--stat-color, var(--accent-primary));box-shadow:0 0 8px color-mix(in srgb,var(--stat-color, var(--accent-primary)) 40%,transparent)}.stats-ring-center-active .hex-svg{filter:drop-shadow(0 0 10px var(--glow-color))}.stats-ring-value{font-size:.95rem;font-weight:700;line-height:1.2}.stats-ring-label{font-family:var(--font-mono);font-size:.5rem;letter-spacing:.08em;color:var(--text-muted);white-space:nowrap}.stats-ring-goal{text-align:center;font-size:.8rem;color:var(--text-muted)}.stats-ring-goal-remaining{font-weight:700;color:var(--text-primary)}.stats-ring-goal-total{font-weight:700;color:var(--text-secondary)}.stats-ring-tip{max-width:min(280px,calc(100vw - 48px));padding:var(--space-sm) var(--space-md);font-size:.75rem;line-height:1.5;color:var(--text-primary);background:var(--bg-elevated);border:1px solid var(--border-medium);border-radius:var(--radius-md);box-shadow:0 8px 32px #00000080;text-align:center;animation:fadeIn .15s ease}.stats-ring-tip-stat{display:block;margin-top:var(--space-xs);font-weight:700;color:var(--accent-primary)}.mantra{position:relative;margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid rgba(0,255,170,.12);text-align:center;cursor:default}.mantra-text{display:flex;flex-direction:column;gap:4px}.mantra-line1{font-family:Bebas Neue,sans-serif;font-size:18px;letter-spacing:.25em;color:var(--text-muted);transition:color .3s ease}.mantra-line2{font-family:Orbitron,sans-serif;font-weight:900;font-size:22px;letter-spacing:.08em;color:#0fa;text-shadow:0 0 12px rgba(0,255,170,.3);transition:text-shadow .3s ease,color .3s ease}.mantra:hover .mantra-line1{color:var(--text-primary)}.mantra:hover .mantra-line2{text-shadow:0 0 8px rgba(0,255,170,.6),0 0 24px rgba(0,255,170,.4),0 0 48px rgba(0,255,170,.2)}.mantra-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(8px);font-family:Bebas Neue,sans-serif;font-size:13px;letter-spacing:.12em;color:#0fa;background:var(--bg-elevated);border:1px solid rgba(0,255,170,.2);border-radius:var(--radius-sm);padding:6px 14px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease}.mantra:hover .mantra-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.tab-bar{position:fixed;bottom:0;left:0;right:0;z-index:100;display:flex;justify-content:space-around;align-items:center;height:64px;padding-bottom:env(safe-area-inset-bottom,0px);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-top:var(--glass-border);box-shadow:0 -4px 30px #0006}.tab-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-sm) var(--space-md);background:none;border:none;cursor:pointer;color:var(--text-muted);transition:color var(--transition-fast)}.tab-item:hover{color:var(--text-secondary)}.tab-active{color:var(--accent-primary)}.tab-icon{font-size:1.2rem;line-height:1}.tab-label{font-family:var(--font-mono);font-size:.55rem;letter-spacing:.12em;font-weight:500}.tab-indicator{position:absolute;top:2px;width:4px;height:4px;border-radius:50%;background:var(--accent-primary);box-shadow:0 0 8px var(--accent-primary-glow)}.modal-overlay{position:fixed;inset:0;z-index:200;background:var(--bg-overlay);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .2s ease}.modal-sheet{width:100%;max-width:480px;max-height:80vh;overflow-y:auto;border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-md) var(--space-lg) var(--space-2xl);animation:slideUp .35s cubic-bezier(.32,.72,0,1)}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-handle{width:36px;height:4px;border-radius:var(--radius-full);background:var(--modal-handle-bg);margin:0 auto var(--space-md)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.modal-title{font-size:1.1rem;font-weight:600;color:var(--text-primary)}.modal-close{background:none;border:none;color:var(--text-muted);font-size:1.5rem;cursor:pointer;padding:4px 8px;line-height:1;transition:color var(--transition-fast)}.modal-close:hover{color:var(--text-primary)}.modal-body{display:flex;flex-direction:column;gap:var(--space-md)}.modal-stat-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) 0;border-bottom:1px solid var(--border-subtle)}.modal-stat-row:last-child{border-bottom:none}.modal-stat-label{font-family:var(--font-mono);font-size:.65rem;letter-spacing:.15em;color:var(--text-muted)}.modal-stat-value{font-size:.9rem;font-weight:600;color:var(--text-primary)}.modal-badges{display:flex;gap:var(--space-sm);margin-bottom:var(--space-md)}.modal-type-badge{display:inline-block;font-family:var(--font-mono);font-size:.6rem;letter-spacing:.1em;padding:3px 10px;border-radius:var(--radius-full);color:var(--text-on-accent);font-weight:700}.modal-source-badge{display:inline-block;font-family:var(--font-mono);font-size:.6rem;letter-spacing:.1em;padding:3px 10px;border-radius:var(--radius-full);border:1px solid var(--border-medium);color:var(--text-muted)}.drift-container{padding:var(--space-md)}.drift-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.drift-indicator{font-size:.8rem;font-weight:600}.drift-chart{margin:0 calc(var(--space-md) * -1)}.drift-legend{display:flex;justify-content:center;gap:var(--space-md);margin-top:var(--space-sm);flex-wrap:wrap}.drift-legend-item{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.6rem;letter-spacing:.1em;color:var(--text-muted)}.drift-legend-line{display:inline-block;width:16px;height:2px;border-radius:1px}.drift-legend-dotted{background:none!important;border-top:2px dotted;height:0}.drift-legend-dashed{background:none!important;border-top:2px dashed;height:0}.plan-container{display:flex;flex-direction:column;gap:var(--space-sm)}.plan-header{display:flex;justify-content:flex-end}.plan-total{font-size:.85rem;font-weight:600;color:var(--accent-primary)}.plan-days{display:flex;flex-direction:column;gap:var(--space-xs)}.plan-day{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.plan-day:hover{background:var(--bg-surface-hover)}.plan-day-header{display:flex;align-items:center;gap:var(--space-sm);min-width:100px}.plan-day-label{font-family:var(--font-mono);font-size:.75rem;font-weight:600;letter-spacing:.1em;color:var(--text-primary)}.plan-day-type{font-family:var(--font-mono);font-size:.6rem;letter-spacing:.05em}.plan-day-controls{display:flex;align-items:center;gap:var(--space-sm)}.plan-day-miles{width:60px;font-size:.9rem;font-weight:600;text-align:right;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:transparent;color:var(--text-primary);outline:none}.plan-day-miles:focus{border-color:var(--accent-primary)}.plan-day-type-select{font-family:var(--font-mono);font-size:.65rem;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-dropdown);color:var(--text-secondary);outline:none}.plan-day-type-select option{background:var(--bg-dropdown);color:var(--text-secondary)}.feed-container{display:flex;flex-direction:column;gap:var(--space-md)}.feed-empty{text-align:center;padding:var(--space-2xl);font-size:.85rem}.feed-week{display:flex;flex-direction:column;gap:2px}.feed-week-header{display:flex;justify-content:flex-end;padding:var(--space-xs) 0;border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-xs)}.feed-week-total{font-size:.7rem;font-weight:600;color:var(--accent-primary)}.feed-activity{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--bg-surface);cursor:pointer;transition:all var(--transition-fast);border:1px solid transparent}.feed-activity:hover{background:var(--bg-surface-hover);border-color:var(--border-subtle)}.feed-activity:active{background:var(--bg-elevated)}.feed-activity-type{width:3px;height:24px;border-radius:2px;flex-shrink:0}.feed-activity-info{flex:1;min-width:0;display:flex;flex-direction:column}.feed-activity-name{font-size:.8rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.feed-activity-date{font-size:.65rem;color:var(--text-muted)}.feed-activity-miles{font-size:.85rem;font-weight:600;color:var(--text-primary);white-space:nowrap}.feed-show-all{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;padding:var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--border-medium);background:transparent;color:var(--text-muted);cursor:pointer;text-align:center}.feed-show-all:hover{color:var(--accent-primary);border-color:var(--accent-primary)}.monthly-container{padding:var(--space-md)}.monthly-header{margin-bottom:var(--space-md)}.monthly-chart{margin:0 calc(var(--space-md) * -1)}.monthly-legend{display:flex;justify-content:center;gap:var(--space-md);margin-top:var(--space-sm)}.week-actual-container{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.week-actual-header{display:flex;align-items:center;justify-content:space-between}.week-actual-summary{font-size:.85rem;font-weight:600;color:var(--text-secondary)}.week-actual-progress{height:4px;background:var(--border-subtle);border-radius:var(--radius-full);overflow:hidden}.week-actual-progress-fill{height:100%;border-radius:var(--radius-full);transition:width var(--transition-base)}.week-actual-days{display:flex;flex-direction:column;gap:var(--space-xs)}.week-actual-day{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm)}.week-actual-day-today{border:1px solid var(--accent-primary-dim);background:#1e90ff0d}.week-actual-day-future{opacity:.4}.week-actual-day-label{font-family:var(--font-mono);font-size:.75rem;font-weight:600;letter-spacing:.1em;color:var(--text-primary);width:36px}.week-actual-day-planned{font-size:.8rem;color:var(--text-muted);width:40px;text-align:right}.week-actual-day-divider{color:var(--text-muted);font-size:.7rem}.week-actual-day-actual{font-size:.9rem;font-weight:600;width:50px}.week-actual-day-check{color:var(--accent-green);font-size:.85rem;margin-left:auto}@media(min-width:768px){.shell-main{max-width:800px}.header-subtitle{display:inline}.hex-compact{width:220px;height:220px}.hex-prob-text{font-size:56px}.stats-ring{width:450px;height:450px}.stats-ring-item{width:96px;margin-left:-48px}}@media(min-width:1024px){.shell-main{max-width:900px}}
