:root{--bg:#fafafa;--surface:#fff;--border:#eaeaea;--accent:#000;--accent2:#e00000;--text:#000;--muted:#666;--watt-color:#000;--speed-color:#0070f3;--cadence-color:#16a34a;--green:#16a34a;--error:#e00000;--warning:#f59e0b;--hr-color:#e53935;--premium-gold:#d4af37;--premium-plus:#9333ea;--strava:#fc4c02;--route-color:#c4603a;--route-start:#3a8c5a}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:Geist,sans-serif;overflow-x:hidden}.container{max-width:960px;padding:32px 24px;padding-top:max(32px, env(safe-area-inset-top));margin:0 auto;position:relative}header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:32px;display:flex}.brand-label{letter-spacing:.15em;color:var(--muted);text-transform:uppercase;margin-bottom:4px;font-family:Geist Mono,monospace;font-size:11px}.brand-title{letter-spacing:-.01em;color:var(--text);font-family:Geist,sans-serif;font-size:36px;font-weight:400;line-height:1.1}.brand-title span{color:var(--accent)}.brand-tagline{letter-spacing:.15em;color:var(--muted);text-transform:uppercase;margin-top:4px;font-family:Geist Mono,monospace;font-size:10px}.header-right{flex-direction:row;align-items:center;gap:10px;display:flex}.btn-new-session-header{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:8px 16px;font-family:Geist Mono,monospace;font-size:12px;font-weight:500;transition:background .2s}.btn-new-session-header:hover{background:#000}.header-dropdown{position:relative}.header-dropdown-toggle{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;align-items:center;gap:5px;padding:7px 12px;transition:border-color .2s;display:flex}.header-dropdown-toggle:hover{border-color:var(--accent)}.header-dropdown-menu{background:var(--surface);border:1px solid var(--border);z-index:10000;border-radius:10px;min-width:140px;display:none;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 4px 16px #0000001f}.header-dropdown-menu.open{display:block}.header-dropdown-item{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;padding:11px 16px;font-family:Geist,sans-serif;font-size:14px;display:block}.header-dropdown-item:hover{background:var(--bg)}.status-pill{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:100px;align-items:center;gap:8px;padding:8px 16px;font-family:Geist Mono,monospace;font-size:12px;transition:all .3s;display:flex;box-shadow:0 1px 3px #0000000f}.status-dot{background:var(--muted);border-radius:50%;width:8px;height:8px;transition:all .3s}.status-pill.connected{color:var(--accent);border-color:#0000004d}.status-pill.connected .status-dot{background:var(--accent);animation:2s infinite pulse;box-shadow:0 0 8px #0006}.status-pill.connecting{color:var(--cadence-color);border-color:#5a8c424d}.status-pill.connecting .status-dot{background:var(--cadence-color);animation:.8s infinite blink}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.browser-warning{color:#c44848e6;background:#d048480f;border:1px solid #d0484833;border-radius:8px;margin-bottom:24px;padding:16px 20px;font-size:13px;display:none}.browser-warning.visible{display:block}.app-shell.locked{pointer-events:none;-webkit-user-select:none;user-select:none;filter:blur(3px)}.btn-sm{background:var(--accent);color:#fff;letter-spacing:.02em;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;flex-shrink:0;padding:10px 18px;font-family:Geist,sans-serif;font-size:13px;font-weight:600;transition:all .2s}.btn-sm:hover{background:#000;box-shadow:0 3px 12px #00000040}.btn-sm:disabled{background:var(--border);color:var(--muted);cursor:not-allowed;box-shadow:none}.btn-sm.secondary{border:1px solid var(--border);color:var(--muted);background:0 0}.btn-sm.secondary:hover{border-color:var(--accent);color:var(--accent);box-shadow:none;background:#0000000d}.btn-sm.danger{color:#c0392b;background:0 0;border:1px solid #c0392b}.btn-sm.danger:hover{box-shadow:none;background:#c0392b14}.btn-connect{background:var(--accent);color:#fff;letter-spacing:.02em;cursor:pointer;border:none;border-radius:8px;padding:12px 32px;font-family:Geist,sans-serif;font-size:14px;font-weight:600;transition:all .2s}.btn-connect:hover{background:#000;box-shadow:0 4px 16px #00000040}.btn-connect:active{transform:translateY(1px)}.btn-connect:disabled{background:var(--border);color:var(--muted);cursor:not-allowed;box-shadow:none;transform:none}.btn-connect.secondary{color:var(--accent);background:0 0;border:1.5px solid #0006}.btn-connect.secondary:hover{border-color:var(--accent);box-shadow:none;background:#0000000f}.btn-strava-sync{border:1.5px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:all .2s;display:flex}.btn-strava-sync:hover{border-color:var(--strava);color:var(--strava);background:#fc4c020f}.btn-strava-sync:active{transform:scale(.92)}.btn-strava-sync:disabled{opacity:.5;cursor:not-allowed}.btn-strava-sync.syncing .sync-icon{animation:.8s linear infinite spin}.btn-strava-sync.done{border-color:var(--green);color:var(--green)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.input-field{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;flex:1;padding:10px 14px;font-family:Geist Mono,monospace;font-size:12px;transition:border-color .2s}.input-field:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0000001a}.input-field::placeholder{color:var(--muted)}.hint{color:var(--muted);margin-top:6px;font-family:Geist Mono,monospace;font-size:11px;line-height:1.5}.hint a{color:var(--accent);text-decoration:none}.hint a:hover{text-decoration:underline}.training-back-nav{margin-bottom:20px}.btn-back{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;padding:7px 14px;font-family:Geist Mono,monospace;font-size:12px;transition:all .2s}.btn-back:hover{border-color:var(--accent);color:var(--accent)}.login-overlay{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fafafae0;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:420px;padding:32px;box-shadow:0 8px 40px #0000001a}.login-kicker{letter-spacing:.2em;color:var(--accent);text-transform:uppercase;margin-bottom:10px;font-family:Geist Mono,monospace;font-size:10px}.login-tagline{letter-spacing:.12em;color:var(--muted);text-transform:uppercase;margin-bottom:20px;font-family:Geist Mono,monospace;font-size:11px}.login-title{letter-spacing:-.01em;color:var(--text);margin-bottom:10px;font-family:Geist,sans-serif;font-size:30px;font-weight:400}.login-sub{color:var(--muted);margin-bottom:20px;font-size:13px;line-height:1.5}.login-fields{flex-direction:column;gap:10px;display:flex}.login-error{min-height:18px;color:var(--accent2);margin-top:10px;font-family:Geist Mono,monospace;font-size:11px}.login-switch{color:var(--muted);text-align:center;margin-top:16px;font-size:13px}.login-switch a{color:var(--accent);text-decoration:none}.login-switch a:hover{text-decoration:underline}.profile-physical-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:4px;display:grid}.profile-physical-field{flex-direction:column;gap:4px;display:flex}.profile-physical-label{letter-spacing:.12em;color:var(--text-secondary,#7a7068);text-transform:uppercase;font-family:Geist Mono,monospace;font-size:10px}.profile-physical-input-wrap{align-items:center;gap:6px;display:flex}.profile-physical-unit{color:var(--muted,#9d9490);font-family:Geist Mono,monospace;font-size:11px}.bv-banner{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;padding:20px 24px;display:flex;box-shadow:0 1px 4px #0000000d}.bv-quote{color:var(--muted);flex:2;min-width:200px;font-size:13px;font-style:italic;line-height:1.6}.bv-quote strong{color:var(--accent);letter-spacing:.04em;font-family:Geist,sans-serif;font-size:13px;font-style:normal;font-weight:700}.bv-countdown{flex-shrink:0;gap:12px;display:flex}.countdown-unit{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;align-items:center;min-width:56px;padding:10px 14px;display:flex}.countdown-num{color:var(--accent);font-family:Geist,sans-serif;font-size:28px;font-weight:400;line-height:1}.countdown-lbl{letter-spacing:.15em;color:var(--muted);text-transform:uppercase;margin-top:4px;font-family:Geist Mono,monospace;font-size:9px}.feed-event-empty{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;padding:16px 20px;font-size:13px;display:flex}.riders-bar{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.rider-pill{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:100px;align-items:center;gap:8px;padding:6px 14px 6px 10px;font-family:Geist Mono,monospace;font-size:12px;display:flex;box-shadow:0 1px 3px #0000000d}.rider-pill .rider-avatar{background:var(--border);width:24px;height:24px;color:var(--muted);border-radius:50%;justify-content:center;align-items:center;font-family:Geist,sans-serif;font-size:11px;font-weight:700;display:flex}.rider-pill.active-rider{color:var(--text);border-color:#00000059}.rider-pill.active-rider .rider-avatar{background:var(--accent);color:#fff}.feed-cta-bar{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:14px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding:20px 24px;display:flex;box-shadow:0 1px 4px #0000000d}.feed-cta-title{color:var(--text);margin-bottom:2px;font-family:Geist,sans-serif;font-size:20px;font-weight:400}.feed-cta-sub{color:var(--muted);font-family:Geist,sans-serif;font-size:13px}.btn-new-session{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;flex-shrink:0;padding:12px 24px;font-family:Geist,sans-serif;font-size:14px;font-weight:600;transition:all .2s}.btn-new-session:hover{background:#000;box-shadow:0 4px 16px #00000040}.feed-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:20px;padding:24px 28px;box-shadow:0 1px 4px #0000000d}#feedWeeklySection{align-items:stretch;gap:16px;display:flex}.feed-section-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.feed-section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-family:Geist,sans-serif;font-size:13px;font-weight:600}.feed-filter-bar{gap:8px;margin-bottom:16px;display:flex}.filter-btn{letter-spacing:.04em;border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);cursor:pointer;border-radius:20px;align-items:center;gap:5px;padding:5px 12px;font-family:Geist Mono,monospace;font-size:11px;transition:all .15s;display:flex}.filter-btn:hover{border-color:var(--text-secondary)}.filter-btn.active{background:var(--text);color:var(--bg);border-color:var(--text)}.feed-loading{color:var(--muted);padding:12px 0;font-family:Geist Mono,monospace;font-size:11px}.feed-empty{color:var(--muted);padding:16px 0;font-family:Geist Mono,monospace;font-size:12px}.session-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;margin-bottom:8px;padding:14px 16px}.session-card:last-child{margin-bottom:0}.session-card-date{color:var(--muted);text-transform:capitalize;margin-bottom:10px;font-family:Geist Mono,monospace;font-size:11px}.session-card-stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.sc-stat{text-align:center}.sc-val{color:var(--text);font-family:Geist,sans-serif;font-size:22px;font-weight:400;line-height:1}.sc-val-sm{font-size:16px}.sc-lbl{letter-spacing:.1em;color:var(--muted);text-transform:uppercase;margin-top:3px;font-family:Geist Mono,monospace;font-size:9px}.follow-user-block{border-bottom:1px solid var(--border);margin-bottom:20px;padding-bottom:20px}.follow-user-block:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.follow-user-row{align-items:center;gap:10px;margin-bottom:12px;display:flex}.follow-avatar{width:32px;height:32px;color:var(--accent);background:#0000001f;border:1.5px solid #0000004d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:Geist,sans-serif;font-size:12px;font-weight:700;display:flex}.follow-name{color:var(--text);flex:1;font-family:Geist,sans-serif;font-size:14px;font-weight:500}.btn-unfollow{border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;padding:4px 10px;font-family:Geist Mono,monospace;font-size:10px;transition:all .2s}.btn-unfollow:hover{border-color:var(--accent2);color:var(--accent2)}.follow-pending-badge{letter-spacing:.08em;color:var(--text-secondary,#7a7068);background:var(--surface);border:1px solid var(--border);vertical-align:middle;border-radius:4px;padding:1px 5px;font-family:Geist Mono,monospace;font-size:10px}.follow-input-block{border-top:1px solid var(--border);margin-top:20px;padding-top:20px}.follow-input-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-family:Geist Mono,monospace;font-size:11px}.follow-input-row{gap:8px;display:flex}.follow-msg{min-height:16px;margin-top:8px;font-family:Geist Mono,monospace;font-size:11px}.follow-msg.error{color:var(--accent2)}.follow-msg.success{color:var(--cadence-color)}.weekly-strip{flex-shrink:0;gap:6px;padding-top:8px;padding-bottom:4px;display:flex;overflow-x:auto}.week-day-bubble{cursor:default;flex-direction:column;flex-shrink:0;align-items:center;gap:6px;min-width:52px;display:flex}.week-day-bubble.has-session{cursor:pointer}.week-day-circle{background:var(--bg);border:1.5px solid var(--border);width:52px;height:52px;color:var(--muted);text-align:center;border-radius:50%;justify-content:center;align-items:center;font-family:Geist,sans-serif;font-size:13px;line-height:1.2;transition:all .2s;display:flex}.week-day-bubble.has-session .week-day-circle{border-color:var(--accent);color:var(--accent);background:#0000001a}.week-day-bubble.has-session:hover .week-day-circle{background:#0000002e;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.week-day-bubble.today .week-day-circle{border-width:2.5px}.week-day-bubble.future{opacity:.4;pointer-events:none}.week-day-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-family:Geist Mono,monospace;font-size:9px}.week-day-bubble.today .week-day-label{color:var(--accent);font-weight:600}.weekly-left{flex-direction:column;flex:1;min-width:0;display:flex}.weekly-summary{flex-shrink:0;align-self:stretch}.weekly-summary-col{background:var(--bg);border:1px solid var(--border);text-align:right;box-sizing:border-box;border-radius:10px;flex-direction:column;justify-content:space-evenly;gap:10px;height:100%;padding:10px 14px;display:flex}.weekly-summary-stat{flex-direction:column;gap:2px;display:flex}.weekly-summary-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-family:Geist Mono,monospace;font-size:9px}.weekly-summary-value-row{justify-content:flex-end;align-items:center;gap:6px;display:flex}.weekly-summary-value{color:var(--text);font-family:Geist,sans-serif;font-size:15px;font-weight:600}.weekly-summary-trend{border-radius:4px;padding:2px 6px;font-family:Geist Mono,monospace;font-size:10px;font-weight:500}.weekly-summary-trend.up{color:#10b981;background:#10b9811f}.weekly-summary-trend.down{color:#ef4444;background:#ef44441f}.activity-card{background:var(--bg);border:1px solid var(--border);cursor:default;box-sizing:border-box;border-radius:10px;flex-direction:column;margin-bottom:8px;padding:0;transition:border-color .2s,box-shadow .2s;display:flex;overflow:hidden}.activity-card-top{cursor:pointer;flex-direction:row;align-items:stretch;min-height:148px;display:flex}.activity-card-content{flex-direction:column;flex:1;min-width:0;padding:16px 18px;display:flex}.activity-card-content .session-card-stats{border-top:1px solid var(--border);margin-top:auto;padding-top:10px}.activity-card-map{border-left:1px solid var(--border);flex-shrink:0;align-self:stretch;width:clamp(130px,22%,220px);overflow:hidden}.activity-card-placeholder{border-left:1px solid var(--border);background:var(--bg);flex-shrink:0;justify-content:center;align-self:stretch;align-items:center;width:clamp(130px,22%,220px);display:flex}.activity-card-placeholder svg{width:44px;height:44px;color:var(--border)}.activity-card:hover{border-color:var(--accent);box-shadow:0 2px 10px #0000001a}.activity-card:last-child{margin-bottom:0}.activity-card-owner{align-items:center;gap:8px;margin-bottom:8px;display:flex}.activity-card-date{color:var(--muted);text-transform:capitalize;margin-bottom:6px;font-family:Geist Mono,monospace;font-size:11px}@media (width<=640px){.activity-card-top{flex-direction:column}.activity-card-map{border-left:none;border-top:1px solid var(--border);width:100%;height:110px}.activity-card-placeholder{border-left:none;border-top:1px solid var(--border);width:100%;height:60px}}@media (width<=480px){.activity-card-map,.activity-card-placeholder{display:none}}.activity-card-title{color:var(--text);align-items:center;gap:6px;margin-bottom:10px;font-size:.95rem;font-weight:600;display:flex}.strava-import-badge{background:#fc4c021f;border-radius:4px;flex-shrink:0;align-items:center;padding:1px 4px;display:inline-flex}.strava-import-toast{background:var(--card-bg,#1e1e1e);color:var(--text,#fff);opacity:0;z-index:9999;pointer-events:none;border:1px solid #fc4c024d;border-radius:8px;padding:10px 18px;font-size:.85rem;transition:opacity .3s,transform .3s;position:fixed;bottom:80px;left:50%;transform:translate(-50%)translateY(20px)}.strava-import-toast.visible{opacity:1;transform:translate(-50%)translateY(0)}.profile-header-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;align-items:center;gap:20px;margin-bottom:20px;padding:24px 28px;display:flex}.profile-avatar-lg{width:56px;height:56px;color:var(--accent);background:#0000001f;border:2px solid #00000059;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:Geist,sans-serif;font-size:20px;font-weight:700;display:flex}.profile-identity{flex-direction:column;gap:4px;display:flex}.profile-display-name{color:var(--text);font-family:Geist,sans-serif;font-size:22px;line-height:1.1}.profile-email{color:var(--muted);font-family:Geist Mono,monospace;font-size:12px}.profile-edit-row{gap:8px;margin-bottom:8px;display:flex}.profile-save-msg{min-height:16px;font-family:Geist Mono,monospace;font-size:11px}.profile-save-msg.error{color:var(--accent2)}.profile-save-msg.success{color:var(--cadence-color)}.profile-privacy-row{background:var(--surface,#f6f4f1);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:4px;padding:12px 14px;display:flex}.profile-privacy-info{flex:1}.profile-privacy-label{color:var(--text);margin-bottom:3px;font-size:13px;font-weight:600}.profile-privacy-toggle{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.profile-privacy-toggle input{opacity:0;width:0;height:0}.profile-privacy-slider{cursor:pointer;background:var(--border);border-radius:24px;transition:background .2s;position:absolute;inset:0}.profile-privacy-slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:3px;left:3px}.profile-privacy-toggle input:checked+.profile-privacy-slider{background:var(--accent)}.profile-privacy-toggle input:checked+.profile-privacy-slider:before{transform:translate(20px)}.profile-tabs{background:var(--surface);border:1px solid var(--border);border-radius:12px;gap:4px;margin-bottom:16px;padding:4px;display:flex}.profile-tab{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;padding:8px 12px;font-family:Geist Mono,monospace;font-size:11px;font-weight:600;transition:background .15s,color .15s}.profile-tab:hover{color:var(--text);background:#0000000a}.profile-tab.active{background:var(--accent);color:#fff}.activity-card{cursor:default}.activity-card-top{cursor:pointer;flex-direction:row;flex:1;align-items:stretch;min-height:148px;display:flex}.activity-card-top:hover .activity-card-content{background:#ffffff05}.activity-card-social{border-top:1px solid var(--border);align-items:center;gap:4px;padding:8px 16px;display:flex}.social-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;align-items:center;gap:5px;padding:5px 10px;font-family:Geist Mono,monospace;font-size:12px;transition:color .15s,background .15s;display:flex}.social-btn:hover{background:var(--surface);color:var(--text)}.like-btn.liked{color:var(--error)}.like-btn.liked svg{animation:.25s heartPop}@keyframes heartPop{0%{transform:scale(1)}50%{transform:scale(1.4)}to{transform:scale(1)}}.social-count{min-width:12px}.activity-card-comments{border-top:1px solid var(--border);background:var(--bg);border-radius:0 0 10px 10px;padding:12px 16px 14px}.comments-loading,.comments-empty{color:var(--muted);text-align:center;padding:8px 0;font-size:12px}.comment-item{gap:10px;margin-bottom:10px;display:flex}.comment-item:last-of-type{margin-bottom:12px}.comment-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-family:Geist Mono,monospace;font-size:10px;font-weight:600;display:flex}.comment-body{flex:1;min-width:0}.comment-meta{align-items:center;gap:6px;margin-bottom:2px;display:flex}.comment-author{color:var(--text);font-size:11px;font-weight:600}.comment-time{color:var(--muted);font-family:Geist Mono,monospace;font-size:10px}.comment-delete-btn{color:var(--muted);cursor:pointer;opacity:.5;background:0 0;border:none;margin-left:auto;padding:0 2px;font-size:10px;transition:opacity .15s}.comment-delete-btn:hover{opacity:1;color:var(--error)}.comment-text{color:var(--text);word-break:break-word;font-size:13px}.comment-input-row{gap:8px;margin-top:4px;display:flex}.comment-input{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:6px;outline:none;flex:1;padding:7px 10px;font-family:Geist,sans-serif;font-size:13px;transition:border-color .2s}.comment-input:focus{border-color:var(--accent)}.comment-input::placeholder{color:var(--muted)}.comment-submit-btn{background:var(--accent);color:#fff;cursor:pointer;letter-spacing:.05em;border:none;border-radius:6px;padding:7px 14px;font-family:Geist Mono,monospace;font-size:12px;font-weight:600;transition:opacity .15s}.comment-submit-btn:hover{opacity:.85}@media (width<=600px){#feedWeeklySection{flex-direction:column}.weekly-summary{align-self:auto}.weekly-summary-col{text-align:left;flex-flow:wrap;justify-content:flex-start;gap:8px;height:auto}.feed-section,.bv-banner{padding:16px}.feed-filter-bar{flex-wrap:wrap;gap:6px}}.connect-section{border:1px solid var(--border);background:var(--surface);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;margin-bottom:32px;padding:70px 40px;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 12px #0000000f}.connect-section:before{content:"";pointer-events:none;background:radial-gradient(circle,#0000000f 0%,#0000 70%);width:200px;height:200px;position:absolute;top:-60px;left:50%;transform:translate(-50%)}.connect-icon{opacity:.35;width:56px;height:56px;margin-bottom:20px}.connect-title{letter-spacing:-.01em;margin-bottom:8px;font-family:Geist,sans-serif;font-size:24px;font-weight:400}.connect-sub{color:var(--muted);text-align:center;max-width:300px;margin-bottom:28px;font-size:14px;line-height:1.6}.connect-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.connect-help{color:var(--muted);text-align:center;margin-top:14px;font-size:12px}.dashboard{display:none}.dashboard.visible{display:block}.training-layout{grid-template-columns:148px 1fr;align-items:start;gap:16px;display:grid}.metrics-sidebar{position:sticky;top:16px}.training-main{min-width:0}.main-layout{grid-template-columns:1fr;gap:20px;display:grid}.main-layout.in-call{grid-template-columns:1fr}.left-col{min-width:0}.right-col{z-index:200;width:260px;display:none;position:fixed;top:72px;right:16px}.metrics-grid{grid-template-columns:1fr;gap:10px;margin-bottom:12px;display:grid}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;position:relative;overflow:hidden;box-shadow:0 1px 4px #0000000d}.metric-card:after{content:"";background:var(--card-color,var(--accent));opacity:.7;height:3px;position:absolute;bottom:0;left:0;right:0}.metric-card.watts{--card-color:var(--watt-color)}.metric-card.speed{--card-color:var(--speed-color)}.metric-card.cadence{--card-color:var(--cadence-color)}.metric-card.heartrate{--card-color:var(--hr-color)}.hr-zone-badge{letter-spacing:.08em;color:#fff;border-radius:20px;margin-bottom:8px;padding:5px 14px;font-family:Geist Mono,monospace;font-size:11px;font-weight:600;transition:background .4s;display:inline-block}.metric-label{letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin-bottom:4px;font-family:Geist Mono,monospace;font-size:10px}.metric-value{letter-spacing:-.02em;color:var(--card-color,var(--text));font-family:Geist,sans-serif;font-size:40px;font-weight:400;line-height:1}.control-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:18px;padding:24px 28px;box-shadow:0 1px 4px #0000000d}.section-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-family:Geist,sans-serif;font-size:13px;font-weight:600}.mode-toggle{background:var(--bg);border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.mode-btn{letter-spacing:.08em;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:6px 14px;font-family:Geist Mono,monospace;font-size:11px;transition:all .2s}.mode-btn.active{background:var(--accent);color:#fff;border-radius:6px}.slider-container{align-items:center;gap:16px;display:flex}.slider-label{color:var(--muted);text-align:right;flex-shrink:0;width:52px;font-family:Geist Mono,monospace;font-size:11px}.slider-wrap{flex:1}input[type=range]{-webkit-appearance:none;background:var(--border);border-radius:2px;outline:none;width:100%;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);cursor:pointer;border-radius:50%;width:20px;height:20px;box-shadow:0 2px 8px #0000004d}.slider-value{color:var(--accent);text-align:center;flex-shrink:0;width:80px;font-family:Geist,sans-serif;font-size:26px;font-weight:400}.slider-value .unit{color:var(--muted);font-family:Geist Mono,monospace;font-size:13px}.quick-buttons{flex-wrap:wrap;align-items:center;gap:6px;margin-top:16px;display:flex}.btn-quick{background:var(--bg);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:6px;padding:5px 12px;font-family:Geist Mono,monospace;font-size:11px;transition:all .2s}.btn-quick:hover{border-color:var(--accent);color:var(--accent);background:#0000000d}.session-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:18px;padding:24px 28px;box-shadow:0 1px 4px #0000000d}.api-setup{margin-bottom:20px}.api-row{gap:8px;margin-top:10px;display:flex}.room-controls{display:none}.room-controls.visible{display:block}.room-url-row{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:6px;margin-bottom:8px;padding:8px 10px;display:flex}.room-url-label{letter-spacing:.15em;color:var(--muted);white-space:nowrap;font-family:Geist Mono,monospace;font-size:10px}.room-url-value{color:var(--accent);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:Geist Mono,monospace;font-size:12px;overflow:hidden}.btn-copy{border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:5px;flex-shrink:0;padding:4px 10px;font-family:Geist Mono,monospace;font-size:10px;transition:all .2s}.btn-copy:hover{border-color:var(--accent);color:var(--accent)}.call-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.btn-leave{color:#000;border:1px solid var(--border);letter-spacing:.1em;cursor:pointer;background:#fff;border-radius:6px;margin-left:auto;padding:4px 12px;font-family:Geist Mono,monospace;font-size:10px;transition:all .2s}.btn-leave:hover{border-color:#000}.video-panel{flex-direction:column;gap:0;display:none}.video-panel.visible{display:flex}.video-panel-header{background:var(--surface);border:1px solid var(--border);border-bottom:none;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.video-panel-title{letter-spacing:.05em;color:var(--muted);text-transform:uppercase;font-family:Geist,sans-serif;font-size:12px;font-weight:600}.participant-count{color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.participant-tile{aspect-ratio:16/9;background:#0d0d10;position:relative;overflow:hidden}.participant-tile video{object-fit:cover;width:100%;height:100%}.participant-tile .tile-overlay{background:linear-gradient(#0000,#000000b3);justify-content:space-between;align-items:flex-end;padding:8px 10px;display:flex;position:absolute;bottom:0;left:0;right:0}.tile-name{color:#fff;font-family:Geist Mono,monospace;font-size:11px}.tile-stats{gap:6px;display:flex}.tile-stat{background:#0009;border-radius:3px;padding:2px 6px;font-family:Geist Mono,monospace;font-size:12px;font-weight:600}.tile-stat.w{color:#d4763b}.tile-stat.c{color:#8cb87f}.no-video-avatar{background:#0d0d10;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.avatar-circle{color:#4a4540;background:#1e1a18;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;font-family:Geist,sans-serif;font-size:20px;font-weight:600;display:flex}.chat-panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;height:280px;margin-top:18px;display:flex;box-shadow:0 1px 4px #0000000d}.chat-header{border-bottom:1px solid var(--border);letter-spacing:.2em;color:var(--muted);text-transform:uppercase;padding:12px 16px;font-family:Geist Mono,monospace;font-size:10px}.chat-messages{flex-direction:column;flex:1;gap:8px;padding:12px 16px;display:flex;overflow-y:auto}.chat-msg{flex-direction:column;max-width:75%;display:flex}.chat-msg--mine{align-self:flex-end;align-items:flex-end}.chat-msg--theirs{align-self:flex-start;align-items:flex-start}.chat-msg-bubble{white-space:pre-wrap;word-break:break-word;border-radius:14px;padding:8px 14px;font-family:Geist,sans-serif;font-size:13px;line-height:1.5}.chat-msg--mine .chat-msg-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.chat-msg--theirs .chat-msg-bubble{background:var(--surface);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px}.chat-msg-name{color:var(--accent);margin-bottom:2px;font-family:Geist Mono,monospace;font-size:10px;font-weight:500}.chat-msg-time{color:var(--muted);margin-top:2px;font-family:Geist Mono,monospace;font-size:10px}.chat-system{color:var(--muted);text-align:center;padding:4px 0;font-family:Geist Mono,monospace;font-size:11px}.chat-input-row{border-top:1px solid var(--border);gap:8px;padding:10px 12px;display:flex}.chat-input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;flex:1;padding:8px 12px;font-family:Geist,sans-serif;font-size:13px;transition:border-color .2s}.chat-input:focus{border-color:#0006;box-shadow:0 0 0 3px #00000014}.chat-input::placeholder{color:var(--muted)}.btn-send{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;flex-shrink:0;padding:8px 14px;font-family:Geist,sans-serif;font-size:13px;font-weight:600;transition:all .2s}.btn-send:hover{background:#000}.media-controls{gap:8px;display:flex}.ctrl-btn{border:1px solid var(--border);background:var(--bg);width:36px;height:36px;color:var(--muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:all .2s;display:flex}.ctrl-btn:hover{border-color:var(--accent);color:var(--accent)}.ctrl-btn.muted{color:var(--accent2);background:#d048480f;border-color:#d0484866}.log-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-top:18px;padding:20px;box-shadow:0 1px 4px #0000000d}.log-title{letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin-bottom:12px;font-family:Geist Mono,monospace;font-size:10px}.log-entries{flex-direction:column;gap:5px;max-height:120px;display:flex;overflow-y:auto}.log-entry{color:var(--muted);gap:10px;font-family:Geist Mono,monospace;font-size:11px;display:flex}.log-time{color:var(--border)}.log-entry.success .log-msg{color:var(--accent)}.log-entry.error .log-msg{color:var(--accent2)}.log-entry.info .log-msg{color:var(--speed-color)}.btn-disconnect{color:#d0484899;cursor:pointer;background:0 0;border:1px solid #d0484840;border-radius:8px;margin-top:18px;padding:8px 20px;font-family:Geist Mono,monospace;font-size:12px;transition:all .2s}.btn-disconnect:hover{border-color:var(--accent2);color:var(--accent2)}.recording-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;padding:20px 28px;display:flex;box-shadow:0 1px 4px #0000000d}.rec-header{align-items:center;gap:12px;display:flex}.rec-left{align-items:center;gap:10px;display:flex}.session-rec-dot{background:var(--border);border-radius:50%;flex-shrink:0;width:10px;height:10px;transition:all .3s}.session-rec-dot.active{background:var(--accent2);animation:.8s infinite blink;box-shadow:0 0 8px #d0484866}.session-timer-display{background:0 0;border:none;padding:0}.session-timer-value{letter-spacing:.02em;color:var(--accent);font-family:Geist,sans-serif;font-size:26px;font-weight:400;line-height:1}.rec-actions{gap:8px;display:flex}.session-ctrl-row{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:10px 16px;display:flex}.session-ctrl-left{align-items:center;gap:10px;display:flex}.session-ctrl-right{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.interval-watt-ctrl{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:6px;padding:4px 8px;display:flex}.watt-adj-btn{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-family:Geist Mono,monospace;font-size:16px;line-height:1;transition:background .15s}.watt-adj-btn:hover{background:#ffffff14}.watt-adj-val{color:var(--accent);text-align:center;min-width:52px;font-family:Geist Mono,monospace;font-size:13px;font-weight:600}.erg-toggle-label{cursor:pointer;align-items:center;gap:7px;display:flex}.erg-toggle-text{letter-spacing:.06em;color:var(--muted);font-family:Geist Mono,monospace;font-size:11px;font-weight:600}.interval-rounds-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-top:8px;padding:14px 18px;box-shadow:0 1px 4px #0000000d}.irs-phase-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.irs-target-watt{color:var(--text);letter-spacing:.02em;font-family:Geist Mono,monospace;font-size:15px;font-weight:600}.irs-rounds-wrap{border:1px solid var(--border);border-radius:8px;margin-top:14px;overflow:hidden}.irs-rounds-table{margin:0}.irs-actions{justify-content:flex-end;margin-top:12px;display:flex}.btn-session-circle{color:#1a1a1a;cursor:pointer;background:#fff;border:1.5px solid #1a1a1a;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;padding:0;transition:background .15s;display:flex}.btn-session-circle:hover{background:#f0f0f0}.lap-table-wrap{border:1px solid var(--border);border-radius:8px;width:100%;max-height:188px;margin:4px 0 2px;overflow-y:auto}.lap-table{border-collapse:collapse;letter-spacing:.04em;width:100%;font-family:Geist Mono,monospace;font-size:11px}.lap-table thead{z-index:1;background:var(--surface);position:sticky;top:0}.lap-table th{text-align:left;color:var(--muted);letter-spacing:.08em;border-bottom:1px solid var(--border);padding:5px 10px;font-size:10px;font-weight:600}.lap-table td{color:var(--text);border-bottom:1px solid var(--border);box-sizing:border-box;height:32px;padding:6px 10px;line-height:1}.lap-table tbody tr:last-child td{border-bottom:none}.lap-row-current td{background:#c4603a0f;font-weight:600}.lap-dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-right:6px;animation:1.2s ease-in-out infinite lap-dot-pulse;display:inline-block}@keyframes lap-dot-pulse{0%,to{opacity:1}50%{opacity:.3}}.history-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:18px;padding:20px 28px;box-shadow:0 1px 4px #0000000d}.hist-subtitle{color:var(--muted);letter-spacing:.1em;font-family:Geist Mono,monospace;font-size:10px}.hist-row{border-bottom:1px solid var(--border);grid-template-columns:80px 90px 1fr 1fr;align-items:center;gap:8px;padding:8px 0;display:grid}.hist-row:last-child{border-bottom:none}.hist-date{color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.hist-dur{color:var(--text);font-family:Geist Mono,monospace;font-size:11px}.hist-stat{color:var(--text);font-family:Geist,sans-serif;font-size:18px;font-weight:400}.hist-unit{color:var(--muted);font-family:Geist Mono,monospace;font-size:10px}.hist-empty{color:var(--muted);text-align:center;padding:16px 0;font-family:Geist Mono,monospace;font-size:11px}.strava-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:18px;padding:20px 28px;box-shadow:0 1px 4px #0000000d}.strava-badge{color:var(--strava);letter-spacing:.1em;align-items:center;gap:5px;font-family:Geist Mono,monospace;font-size:10px;display:flex}.strava-connected{background:var(--bg);border:1px solid var(--border);border-radius:10px;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;display:flex}.strava-athlete-img{object-fit:cover;border-radius:50%;flex-shrink:0;width:36px;height:36px}.strava-athlete-name{color:var(--text);font-family:Geist,sans-serif;font-size:13px;font-weight:500}.strava-settings{margin-top:14px}.strava-settings-toggle{color:var(--muted);cursor:pointer;letter-spacing:.1em;text-transform:uppercase;padding:4px 0;font-family:Geist Mono,monospace;font-size:11px;list-style:none}.strava-settings-toggle::-webkit-details-marker{display:none}.strava-settings-toggle:before{content:"▶ ";font-size:8px}details[open] .strava-settings-toggle:before{content:"▼ "}.strava-settings-body{padding-top:12px}.btn-strava{background:var(--strava);color:#fff;letter-spacing:.02em;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;flex-shrink:0;padding:10px 18px;font-family:Geist,sans-serif;font-size:13px;font-weight:600;transition:all .2s}.btn-strava:hover{box-shadow:0 4px 16px #fc4c024d}.btn-strava:disabled{background:var(--border);color:var(--muted);cursor:not-allowed;box-shadow:none}.strava-synced-badge{color:var(--strava);justify-content:center;align-items:center;gap:6px;margin-bottom:10px;font-family:Geist Mono,monospace;font-size:11px;font-weight:500;display:flex}.pending-header{letter-spacing:.08em;color:var(--muted);text-transform:uppercase;margin-bottom:8px;font-family:Geist Mono,monospace;font-size:11px;font-weight:500}.pending-row{border-top:1px solid var(--border);align-items:center;gap:8px;padding:8px 0;font-family:Geist Mono,monospace;font-size:12px;display:flex}.pending-date{color:var(--muted);min-width:56px}.pending-dur{min-width:48px}.pending-watts{color:var(--muted);flex:1}.route-section{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:12px;padding:16px 18px}#liveGraphSection{box-shadow:none;border:none;margin-bottom:8px;padding:8px 4px}.sim-toggle-wrap{align-items:center;gap:10px;display:flex}.sim-toggle-label{letter-spacing:.1em;color:var(--muted);text-transform:uppercase;font-family:Geist Mono,monospace;font-size:10px}.sim-toggle-switch{flex-shrink:0;width:40px;height:22px;display:inline-block;position:relative}.sim-toggle-switch input{opacity:0;width:0;height:0}.sim-slider{background:var(--border);cursor:pointer;border-radius:22px;transition:background .3s;position:absolute;inset:0}.sim-slider:before{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .3s,background .3s;position:absolute;bottom:3px;left:3px;box-shadow:0 1px 3px #00000026}.sim-toggle-switch input:checked+.sim-slider{background:var(--accent)}.sim-toggle-switch input:checked+.sim-slider:before{background:#fff;transform:translate(18px)}.route-upload{border:1.5px dashed var(--border);border-radius:10px;flex-direction:column;align-items:center;gap:4px;margin-top:16px;padding:24px;display:flex}.canvas-wrap{margin-top:16px;position:relative}#routeTrackingMap{border:1px solid var(--border);background:var(--surface);border-radius:10px;height:220px}#elevationCanvas{cursor:crosshair;background:#fff;border-radius:10px;width:100%;height:180px;display:block}#liveGraphCanvas{background:#1a1714;border-radius:10px;width:100%;height:330px;display:block}#workoutProgressCanvas{background:#1a1714;border-radius:10px;width:100%;height:180px;display:block}.live-graph-stats{color:var(--muted);letter-spacing:.08em;font-family:Geist Mono,monospace;font-size:11px}.elevation-tooltip{background:var(--surface);border:1px solid var(--border);color:var(--text);pointer-events:none;white-space:nowrap;z-index:10;border-radius:6px;padding:6px 10px;font-family:Geist Mono,monospace;font-size:11px;position:absolute;box-shadow:0 2px 8px #0000001a}.route-metrics-row{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;display:grid}.route-metric{background:var(--bg);border:1px solid var(--border);text-align:center;border-radius:10px;padding:10px 12px}.route-metric-label{letter-spacing:.15em;color:var(--muted);text-transform:uppercase;margin-bottom:4px;font-family:Geist Mono,monospace;font-size:9px}.route-metric-value{color:var(--accent);font-family:Geist,sans-serif;font-size:22px;font-weight:400;line-height:1}#videoGrid{max-height:calc(100vh - 100px);min-height:unset;background:0 0;border:none;border-radius:0;flex-direction:column;gap:4px;display:flex;overflow-y:auto}.vtile{aspect-ratio:16/9;background:#0d0d10;border-radius:8px;flex-shrink:0;width:260px;position:relative;overflow:hidden;box-shadow:0 2px 12px #00000080}.vtile video{object-fit:cover;width:100%;height:100%;display:block}.vtile-label{color:#fff;white-space:nowrap;text-overflow:ellipsis;background:#0009;border-radius:3px;padding:2px 6px;font-family:Geist Mono,monospace;font-size:10px;position:absolute;bottom:4px;left:6px;right:6px;overflow:hidden}.vtile-avatar{color:#3a3530;justify-content:center;align-items:center;width:100%;height:100%;font-family:Geist,sans-serif;font-size:28px;font-weight:700;display:flex}.rider-select-btn{background:var(--bg);border:1px solid var(--border);cursor:pointer;text-align:left;border-radius:10px;align-items:center;gap:10px;width:100%;padding:8px 12px;transition:all .2s;display:flex}.rider-select-btn:hover{border-color:var(--rc);background:color-mix(in srgb, var(--rc) 6%, transparent)}.rider-select-btn.selected{border-color:var(--rc);background:color-mix(in srgb, var(--rc) 10%, transparent)}.rs-avatar{background:color-mix(in srgb, var(--rc) 12%, transparent);border:2px solid var(--rc);width:32px;height:32px;color:var(--rc);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:Geist,sans-serif;font-size:12px;font-weight:700;display:flex}.rs-name{color:var(--text);font-family:Geist,sans-serif;font-size:13px;font-weight:500}.rs-role{color:var(--muted);margin-top:1px;font-family:Geist Mono,monospace;font-size:10px}.rider-select-btn.selected .rs-name{color:var(--rc)}@media (width<=700px){.training-layout{grid-template-columns:1fr}.metrics-sidebar{position:static}.metrics-grid{grid-template-columns:1fr 1fr}.metrics-grid .metric-card.heartrate{grid-column:span 2}.metric-value{font-size:36px}}.sd-athlete-row{align-items:center;gap:10px;margin-bottom:16px;display:flex}.wb-ftp-row{align-items:center;gap:8px;margin-bottom:16px;display:flex}.wb-ftp-label{letter-spacing:.1em;color:var(--muted);text-transform:uppercase;font-family:Geist Mono,monospace;font-size:11px}.wb-ftp-input{text-align:center;flex:none;width:80px}.wb-ftp-unit{color:var(--muted);font-family:Geist Mono,monospace;font-size:12px}.workout-empty{color:var(--muted);text-align:center;padding:24px 0;font-size:14px}.workout-list-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:stretch;margin-bottom:10px;transition:border-color .2s;display:flex;overflow:hidden}.workout-list-card:hover{border-color:var(--accent)}.workout-list-card-body{cursor:pointer;flex:1;padding:14px 16px 10px}.workout-list-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.workout-list-name{font-size:15px;font-weight:600}.workout-list-meta{color:var(--muted);flex-wrap:wrap;gap:10px;font-family:Geist Mono,monospace;font-size:11px;display:flex}.workout-mini-chart{align-items:flex-end;gap:1px;height:28px;display:flex}.mini-bar{border-radius:2px 2px 0 0;min-width:4px}.workout-list-card-actions{border-left:1px solid var(--border);align-items:center;padding:0 12px;display:flex}.wb-stats-bar{background:var(--surface);border:1px solid var(--border);border-radius:12px;gap:0;margin-bottom:12px;display:flex;overflow:hidden}.wb-stat{text-align:center;border-right:1px solid var(--border);flex:1;padding:14px 12px 10px}.wb-stat:last-child{border-right:none}.wb-stat-value{color:var(--text);white-space:nowrap;font-family:Geist Mono,monospace;font-size:16px;font-weight:500}.wb-stat-label{letter-spacing:.08em;color:var(--muted);text-transform:uppercase;margin-top:3px;font-family:Geist Mono,monospace;font-size:10px}.wb-step-editor{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;padding:12px 14px;display:flex}.wb-step-type-select{background:var(--bg);border:1.5px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;min-width:130px;padding:10px 14px;font-family:Geist Mono,monospace;font-size:14px}.wb-step-type-select:focus{border-color:var(--accent);outline:none}.wb-duration-wrap{background:var(--bg);border:1.5px solid var(--border);border-radius:8px;align-items:center;gap:2px;padding:8px 12px;display:flex}.wb-time-field{width:36px;color:var(--text);text-align:center;background:0 0;border:none;outline:none;font-family:Geist Mono,monospace;font-size:16px;font-weight:500}.wb-time-sep{color:var(--muted);padding:0 1px;font-family:Geist Mono,monospace;font-size:16px}.wb-power-wrap{background:var(--bg);border:1.5px solid var(--border);border-radius:8px;align-items:center;gap:4px;padding:8px 12px;display:flex}.wb-power-field{width:52px;color:var(--text);text-align:center;background:0 0;border:none;outline:none;font-family:Geist Mono,monospace;font-size:16px;font-weight:500}.wb-power-pct{color:var(--muted);font-family:Geist Mono,monospace;font-size:12px}.wb-power-watts{color:var(--muted);border-left:1px solid var(--border);white-space:nowrap;margin-left:4px;padding-left:8px;font-family:Geist Mono,monospace;font-size:10px}.wb-cadence-btn{border:1.5px dashed var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:6px 12px;font-family:Geist Mono,monospace;font-size:11px;transition:border-color .2s,color .2s}.wb-cadence-btn:hover{border-color:var(--accent);color:var(--accent)}.wb-cadence-wrap{background:var(--bg);border:1.5px solid var(--border);border-radius:8px;align-items:center;gap:4px;padding:5px 10px;display:flex}.wb-cadence-field{width:44px;color:var(--text);text-align:center;background:0 0;border:none;outline:none;font-family:Geist Mono,monospace;font-size:13px}.wb-step-nav{align-items:center;gap:4px;margin-left:auto;display:flex}.wb-step-counter{color:var(--muted);margin-right:4px;font-family:Geist Mono,monospace;font-size:11px}.wb-nav-btn{background:var(--bg);border:1.5px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;font-size:14px;transition:border-color .15s,background .15s;display:flex}.wb-nav-btn:hover{border-color:var(--accent);background:#0000000d}.wb-nav-delete{border-color:#0000}.wb-nav-delete:hover{border-color:var(--accent2);color:var(--accent2);background:#d0484812}.wb-chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:12px;padding:8px 0 0;position:relative;overflow:hidden}.wb-chart-wrap canvas{cursor:pointer;width:100%;display:block}.wb-add-step-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:22px;line-height:1;transition:background .15s,transform .1s;display:flex;position:absolute;bottom:36px;right:20px;box-shadow:0 2px 8px #00000059}.wb-add-step-btn:hover{background:#000;transform:scale(1.08)}.wb-footer{align-items:center;gap:8px;margin-bottom:24px;display:flex}.workout-picker-card{background:var(--bg);border:1.5px solid var(--border);cursor:pointer;text-align:left;border-radius:10px;align-items:center;gap:12px;width:100%;margin-bottom:8px;padding:12px 14px;transition:border-color .15s,background .15s;display:flex}.workout-picker-card:hover{border-color:var(--accent);background:#00000008}.workout-picker-main{flex:1}.workout-picker-name{margin-bottom:3px;font-size:14px;font-weight:600}.workout-picker-meta{color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.workout-picker-chart{flex-shrink:0;align-items:flex-end;gap:1px;width:80px;height:24px;display:flex}@media (width<=600px){.wb-stats-bar{flex-wrap:wrap}.wb-stat{min-width:30%}.wb-step-nav{width:100%;margin-left:0}}.hr-zone-row{align-items:center;gap:8px;padding:5px 0;font-family:Geist Mono,monospace;font-size:11px;display:flex}.hr-zone-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.hr-zone-name{width:160px;color:var(--text-secondary,#7a7068);letter-spacing:.05em;flex-shrink:0;font-size:10px}.hr-zone-bar-wrap{background:var(--border,#00000014);border-radius:3px;flex:1;height:6px;overflow:hidden}.hr-zone-bar{border-radius:3px;height:100%;transition:width .4s;display:block}.hr-zone-time{text-align:right;width:42px;color:var(--text,#2d2820);flex-shrink:0}.summary-overlay{top:0;left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f2ede6b3;justify-content:center;align-items:center;padding:20px;display:none;position:fixed}.summary-overlay.visible{display:flex}.summary-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:520px;max-height:calc(100vh - 40px - 56px - env(safe-area-inset-bottom));border-radius:16px;padding:32px;position:relative;overflow-y:auto;box-shadow:0 12px 48px #0000001f}.summary-card:before{content:"";pointer-events:none;background:radial-gradient(circle,#0000000d 0%,#0000 70%);width:240px;height:240px;position:absolute;top:-80px;left:50%;transform:translate(-50%)}.summary-kicker{letter-spacing:.2em;color:var(--accent);text-transform:uppercase;margin-bottom:6px;font-family:Geist Mono,monospace;font-size:10px}.summary-title{letter-spacing:-.01em;margin-bottom:20px;font-family:Geist,sans-serif;font-size:30px;font-weight:400}.sum-duration-row{background:var(--bg);border:1px solid var(--border);border-radius:10px;align-items:baseline;gap:12px;margin-bottom:20px;padding:12px 16px;display:flex}.sum-duration-label{letter-spacing:.15em;color:var(--muted);font-family:Geist Mono,monospace;font-size:10px}.sum-duration-value{letter-spacing:-.01em;color:var(--accent);font-family:Geist,sans-serif;font-size:34px;font-weight:400;line-height:1}.sum-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:24px;display:grid}.sum-stat{background:var(--bg);border:1px solid var(--border);text-align:center;border-radius:10px;padding:24px 12px}.sum-stat-label{letter-spacing:.15em;color:var(--muted);text-transform:uppercase;margin-bottom:6px;font-family:Geist Mono,monospace;font-size:9px}.sum-stat-value{color:var(--text);font-family:Geist,sans-serif;font-size:30px;font-weight:400;line-height:1}.sum-stat-value.watts{color:var(--watt-color)}.sum-stat-value.cadence{color:var(--cadence-color)}.sum-stat-unit{color:var(--muted);margin-top:3px;font-family:Geist Mono,monospace;font-size:10px}.compliance-inline{align-items:center;gap:10px;display:flex}.compliance-checkbox-label{cursor:pointer;flex-shrink:0;align-items:center;gap:6px;display:flex}.compliance-checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--text);cursor:pointer}.compliance-checkbox-text{letter-spacing:.15em;color:var(--muted);text-transform:uppercase;white-space:nowrap;font-family:Geist Mono,monospace;font-size:9px}.compliance-remark-input{border:1px solid var(--border);resize:none;box-sizing:border-box;border-radius:8px;flex:1;min-width:0;padding:6px 10px;font-family:inherit;font-size:12px}.compliance-save-btn{background:var(--text);color:var(--bg);cursor:pointer;border:none;border-radius:8px;margin-top:6px;padding:5px 14px;font-size:12px}#sdComplianceSection{margin-bottom:16px}.summary-actions{flex-wrap:wrap;gap:8px;display:flex}.summary-actions .btn-sm{padding:6px 12px;font-size:11px}.sd-session-title{color:var(--text);margin-bottom:4px;font-size:1rem;font-weight:600}.sd-session-desc{color:var(--text-muted,#888);white-space:pre-wrap;font-size:.85rem}.summary-meta{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.summary-meta-input,.summary-meta-textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);resize:none;box-sizing:border-box;border-radius:8px;width:100%;padding:10px 12px;font-family:inherit;font-size:.9rem}.summary-meta-input:focus,.summary-meta-textarea:focus{border-color:var(--accent);outline:none}.session-type-cards{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:8px;display:grid}.session-type-card{background:var(--bg);border:1.5px solid var(--border);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:20px 12px;transition:all .2s;display:flex}.session-type-card:hover{border-color:var(--accent);background:#0000000a;transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.session-type-icon{font-size:28px;line-height:1}.session-type-name{letter-spacing:.1em;color:var(--text);font-family:Geist Mono,monospace;font-size:10px;font-weight:500}.session-type-desc{color:var(--muted);font-size:11px;line-height:1.3}.interval-fields{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.interval-field-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.interval-field-label{letter-spacing:.08em;color:var(--muted);flex:1;font-family:Geist Mono,monospace;font-size:11px}.interval-field-input{align-items:center;gap:8px;display:flex}.interval-field-input .input-field{text-align:right;width:80px;padding:8px 12px}.interval-field-unit{color:var(--muted);min-width:24px;font-family:Geist Mono,monospace;font-size:11px}.interval-preview{background:var(--bg);border:1px solid var(--border);color:var(--accent);letter-spacing:.02em;text-align:center;border-radius:8px;justify-content:center;align-items:center;min-height:38px;padding:10px 14px;font-family:Geist Mono,monospace;font-size:11px;display:flex}.interval-panel{background:var(--bg);border:1px solid var(--border);border-radius:10px;order:3;width:100%;margin-bottom:10px;padding:12px 14px}.interval-panel-row{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.interval-rep-label{letter-spacing:.12em;color:var(--muted);font-family:Geist Mono,monospace;font-size:10px}.interval-phase-badge{letter-spacing:.12em;color:var(--accent);background:#0000001f;border-radius:100px;padding:3px 8px;font-family:Geist Mono,monospace;font-size:10px;font-weight:500}.interval-phase-badge.rest{color:var(--speed-color);background:#3a7ec41f}.interval-countdown{letter-spacing:-.01em;color:var(--text);margin-bottom:8px;font-family:Geist,sans-serif;font-size:32px;line-height:1.1}.interval-progress-track{background:var(--border);border-radius:100px;height:4px;margin-bottom:6px;overflow:hidden}.interval-progress-fill{background:var(--accent);border-radius:100px;height:100%;transition:width .9s linear}.interval-phase-badge.rest~.interval-progress-fill{background:var(--speed-color)}.interval-panel:has(.interval-phase-badge.rest) .interval-progress-fill{background:var(--speed-color)}.interval-next-label{color:var(--muted);letter-spacing:.05em;font-family:Geist Mono,monospace;font-size:10px}.btn-next-step{letter-spacing:.1em;border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:100px;padding:3px 10px;font-family:Geist Mono,monospace;font-size:10px;font-weight:500;transition:color .15s,border-color .15s}.btn-next-step:hover{color:var(--text);border-color:var(--accent)}.laps-header{letter-spacing:.1em;color:var(--muted);margin:1.2rem 0 .4rem;font-size:.65rem;font-weight:700}.lap-row{border-bottom:1px solid #0000000f;align-items:baseline;gap:.5rem;padding:.35rem 0;font-size:.85rem;display:flex}.lap-num{min-width:4.5rem;color:var(--accent);font-weight:600}.lap-stat{flex:1}.lap-unit{color:var(--muted);font-size:.7rem}#sessionDetailModal .sd-detail-card{max-width:600px}.sd-header{margin-bottom:16px}.sd-header-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sd-header-info{flex:1;min-width:0}.sd-session-name{color:var(--text);margin-bottom:4px;font-family:Geist,sans-serif;font-size:22px;font-weight:500;line-height:1.2}.sd-header-meta{color:var(--muted);letter-spacing:.02em;font-family:Geist Mono,monospace;font-size:11px}.sd-header-sep{margin:0 6px}.sd-session-desc{color:var(--text-secondary,#7a7068);margin-top:6px;font-family:Geist,sans-serif;font-size:13px;line-height:1.4}.sd-tabs{background:var(--bg);border:1px solid var(--border);border-radius:12px;gap:4px;margin-bottom:20px;padding:4px;display:flex}.sd-tab{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;padding:8px 12px;font-family:Geist Mono,monospace;font-size:11px;font-weight:600;transition:background .15s,color .15s}.sd-tab:hover{color:var(--text);background:#0000000a}.sd-tab.active{background:var(--accent);color:#fff}.sd-tab-content{display:none}.sd-tab-content.active{display:block}.sd-map-container{border:1px solid var(--border);border-radius:10px;min-height:280px;overflow:hidden}.sd-map-container .leaflet-control-attribution{background:#ffffffb3;font-family:Geist Mono,monospace;font-size:9px}@media (width<=480px){.sd-map-container{min-height:200px}.sd-session-name{font-size:18px}}#plannerView{position:relative}.planner-loading-overlay{z-index:200;background:#fafafad9;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:none;position:fixed;inset:0}.planner-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.75s linear infinite planner-spin}@keyframes planner-spin{to{transform:rotate(360deg)}}.planner-loading-text{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.planner-page-title{letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin:0 0 16px;padding:0;font-family:Geist Mono,monospace;font-size:11px;font-weight:700}.planner-goal-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:12px;margin-bottom:20px;padding:20px 24px;box-shadow:0 1px 4px #0000000d}.planner-goal-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.planner-goal-label{letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-family:Geist Mono,monospace;font-size:10px}.planner-goal-title{color:var(--text);font-size:22px;font-weight:400;line-height:1.2}.planner-goal-date{color:var(--muted);margin-top:4px;font-size:12px}.planner-form{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:24px}.planner-form-title{letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;font-family:Geist Mono,monospace;font-size:11px}.planner-form-hint{color:var(--muted);margin-bottom:16px;font-size:13px;line-height:1.5}.planner-form-row{flex-wrap:wrap;gap:16px;margin:16px 0;display:flex}.planner-form-group{flex-direction:column;flex:1;gap:6px;min-width:160px;display:flex}.planner-form-group label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-family:Geist Mono,monospace;font-size:10px}.planner-weeks-row{align-items:center;gap:12px;margin:16px 0;display:flex}.planner-weeks-row label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-family:Geist Mono,monospace;font-size:10px}.planner-week-btns{gap:6px;display:flex}.btn-week{background:var(--bg);border:1px solid var(--border);cursor:pointer;color:var(--muted);border-radius:6px;padding:6px 14px;font-family:Geist Mono,monospace;font-size:12px;transition:all .15s}.btn-week:hover{border-color:var(--accent);color:var(--text)}.btn-week.active{background:var(--accent);border-color:var(--accent);color:#fff}.planner-lang-btns{gap:6px;display:flex}.btn-plan-lang{background:var(--bg);border:1px solid var(--border);cursor:pointer;color:var(--muted);border-radius:6px;padding:6px 14px;font-family:Geist Mono,monospace;font-size:12px;transition:all .15s}.btn-plan-lang:hover{border-color:var(--accent);color:var(--text)}.btn-plan-lang.active{background:var(--accent);border-color:var(--accent);color:#fff}.planner-no-plan{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:24px}.planner-no-plan p{color:var(--muted);margin-bottom:16px;font-size:13px;line-height:1.5}.planner-plan{margin-bottom:20px}.planner-plan-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.planner-plan-title{letter-spacing:.15em;text-transform:uppercase;color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.planner-plan-generated{color:var(--muted);font-size:11px}.planner-summary{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;margin-bottom:20px;padding:16px 20px;font-size:13px;line-height:1.6}.planner-goal-summary{color:var(--text);border-top:1px solid var(--border);margin-top:16px;padding-top:16px;font-size:13px;line-height:1.6}.planner-weeks{flex-direction:column;gap:10px;display:flex}.planner-week{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.planner-week-header{border-bottom:1px solid var(--border);background:var(--bg);cursor:pointer;-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 20px;transition:background .15s;display:flex}.planner-week-header:hover{background:var(--surface2,#f5f5f5)}.planner-week-chevron{color:var(--muted);text-align:center;flex-shrink:0;width:14px;font-size:12px}.planner-week--collapsed .planner-sessions{display:none}.planner-week--collapsed .planner-week-header{border-bottom:none}.planner-week-num{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-family:Geist Mono,monospace;font-size:11px;font-weight:700}.planner-week-theme{color:var(--text);flex:1;font-size:13px}.planner-week-hours{color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.planner-sessions{background:var(--border);grid-template-columns:repeat(7,1fr);gap:1px;min-width:0;display:grid;overflow-x:auto}.planner-session-card{background:var(--surface);flex-direction:column;gap:4px;height:220px;padding:14px 16px;display:flex;overflow:hidden}.planner-session-day{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-family:Geist Mono,monospace;font-size:10px}.planner-session-type{color:var(--text);font-size:14px;font-weight:500;line-height:1.2}.planner-session-meta{align-items:center;gap:8px;margin:2px 0;display:flex}.planner-session-duration{color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.planner-session-intensity{font-family:Geist Mono,monospace;font-size:11px;font-weight:700}.planner-session-desc{color:var(--muted);-webkit-line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;margin-top:2px;font-size:12px;line-height:1.5;display:-webkit-box;overflow:hidden}.planner-session-type-badge{letter-spacing:.02em;border-radius:20px;margin-top:5px;padding:2px 7px;font-family:Geist Mono,monospace;font-size:10px;font-weight:600;display:inline-block}.planner-badge-free_ride{color:#3b82f6;background:#3b82f626}.planner-badge-workout{color:#f59e0b;background:#f59e0b26}.planner-badge-route_simulation{color:#10b981;background:#10b98126}.planner-session-card--rest{opacity:.45}.planner-session-rest-label{color:var(--muted);font-size:13px;font-style:italic}.btn-start-plan-session{background:var(--accent,#3b82f6);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;margin-top:auto;padding:6px 0;font-size:12px;font-weight:600;transition:opacity .15s;display:block}.btn-start-plan-session:hover{opacity:.85}.planner-regen-row{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;margin-top:20px;padding:16px 20px;display:flex}.planner-clear-section{border-top:1px solid var(--border);margin-top:4px;padding-top:12px}.planner-clear-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.btn-danger{color:#ef4444;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #ef4444;border-radius:8px;padding:10px 20px;font-family:Geist Mono,monospace;font-size:12px;transition:all .15s}.btn-danger:hover{color:#fff;background:#ef4444}.planner-error{color:var(--accent2);margin-top:8px;font-size:12px}.btn-primary{background:var(--accent);color:#fff;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:none;border-radius:8px;padding:10px 20px;font-family:Geist Mono,monospace;font-size:12px;transition:opacity .15s}.btn-primary:hover{opacity:.85}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{color:var(--text-secondary);border:1px solid var(--border);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:8px;padding:10px 20px;font-family:Geist Mono,monospace;font-size:12px;transition:opacity .15s}.btn-secondary:hover{opacity:.75}.btn-link:hover{opacity:.75}.planner-action-btns{flex-wrap:wrap;gap:12px;margin-top:16px;display:flex}.planner-regen-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px;display:flex}.planner-session-actions{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px;display:flex}.btn-edit-session{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:4px 8px;font-family:Geist Mono,monospace;font-size:11px}.btn-edit-session:hover{border-color:var(--accent);color:var(--accent)}.btn-delete-session{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:2px 7px;font-family:Geist Mono,monospace;font-size:13px}.btn-delete-session:hover{color:#ef4444;border-color:#ef4444}.btn-add-session{border:1px dashed var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;width:100%;margin-top:8px;padding:4px 8px;font-family:Geist Mono,monospace;font-size:11px}.btn-add-session:hover{border-color:var(--accent);color:var(--accent)}.planner-advanced-toggle{margin-top:12px}.planner-advanced-prefs{background:var(--surface2,#f9f9f9);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:12px;margin-top:8px;padding:12px 16px;display:flex}.planner-pref-row{flex-direction:column;gap:6px;display:flex}.planner-pref-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:600}.planner-pref-days{flex-wrap:wrap;gap:6px;display:flex}.planner-day-checkbox{cursor:pointer;flex-direction:column;align-items:center;gap:2px;font-size:11px;display:flex}.planner-day-checkbox input{cursor:pointer}.planner-pref-durations{flex-wrap:wrap;gap:8px;display:flex}.planner-duration-input{flex-direction:column;align-items:center;gap:2px;font-size:11px;display:flex}.input-field-sm{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;width:60px;padding:4px 8px;font-family:Geist Mono,monospace;font-size:12px}.planner-edit-modal-card{width:100%;max-width:620px;max-height:85vh;overflow-y:auto}.planner-edit-form{flex-direction:column;gap:12px;display:flex}.planner-edit-row{flex-direction:column;gap:4px;display:flex}.planner-edit-row label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:600}.planner-edit-actions{gap:10px;margin-top:8px;display:flex}.planner-step-header{text-transform:uppercase;color:var(--text-secondary,#6b7280);border-bottom:1px solid var(--border);grid-template-columns:1fr 80px 80px 32px;gap:6px;padding-bottom:4px;font-size:.7rem;font-weight:600;display:grid}.planner-step-row{border-bottom:1px solid var(--border);grid-template-columns:1fr 80px 80px 32px;align-items:center;gap:6px;padding:4px 0;display:grid}.planner-step-row:last-child{border-bottom:none}.btn-delete-step{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:2px 6px;font-size:13px}.btn-delete-step:hover{color:#ef4444;border-color:#ef4444}.planner-history{margin-top:24px}.planner-history-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin-bottom:12px;font-size:13px;font-weight:700}.planner-history-version{border:1px solid var(--border);border-radius:8px;margin-bottom:16px;overflow:hidden}.planner-history-version--active{border-color:var(--accent)}.planner-history-version-header{background:var(--surface2,#f9f9f9);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex}.planner-history-version-num{font-size:12px;font-weight:700}.planner-history-date{color:var(--text-secondary);font-size:11px}.planner-history-active-label{color:var(--accent);font-size:11px;font-weight:600}.planner-history-badge{text-transform:uppercase;letter-spacing:.06em;border-radius:4px;padding:2px 7px;font-size:10px;font-weight:600}.planner-history-badge--ai{color:#1d4ed8;background:#dbeafe}.planner-history-badge--manual{color:#166534;background:#dcfce7}.planner-history-badge--edited{color:#92400e;background:#fef3c7}.planner-history-empty{color:var(--text-secondary);padding:12px 0;font-size:13px}.planner-history-version .planner-plan{padding:12px}.planner-week-theme-input{width:180px;margin-left:8px}.planner-plan--readonly .planner-week{opacity:.9}.planner-loading{color:var(--text-secondary);padding:12px 0;font-size:13px}.day-comparison-card{width:100%;max-width:600px;position:relative}.day-comparison-close{cursor:pointer;color:var(--muted);font-size:22px;line-height:1;position:absolute;top:16px;right:20px}.day-comparison-close:hover{color:var(--text)}.day-comparison-columns{gap:0;min-height:120px;margin-top:20px;display:flex}.day-comparison-col{flex:1;padding:0 12px}.day-comparison-divider{background:var(--border);flex-shrink:0;width:1px}.day-comparison-col-header{letter-spacing:.1em;color:var(--muted);margin-bottom:12px;font-family:Geist Mono,monospace;font-size:10px}.day-comparison-col-body{flex-direction:column;gap:10px;display:flex}.dc-planned-session{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.dc-planned-name{margin-bottom:4px;font-size:13px;font-weight:500}.dc-planned-meta{color:var(--muted);flex-wrap:wrap;gap:8px;font-size:11px;display:flex}.dc-actual-session{background:var(--bg);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:10px 12px;transition:border-color .15s}.dc-actual-session:hover{border-color:var(--accent)}.dc-actual-name{margin-bottom:4px;font-size:13px;font-weight:500}.dc-actual-meta{color:var(--muted);flex-wrap:wrap;gap:8px;font-size:11px;display:flex}.dc-empty{color:var(--muted);padding:8px 0;font-size:12px}.week-day-bubble.has-plan .week-day-circle{border:1.5px dashed var(--accent);color:var(--accent);opacity:.7}.week-day-bubble.has-plan{cursor:pointer}.week-day-bubble.has-plan:hover .week-day-circle{opacity:1;transform:translateY(-2px)}.week-day-bubble.plan-met .week-day-circle{border-color:#10b981}.week-day-bubble.plan-partial .week-day-circle{border-color:#f59e0b}.week-day-bubble.plan-missed .week-day-circle{border-color:#ef4444}.week-day-bubble.plan-missed.has-plan .week-day-circle{opacity:.8;border-style:dashed;border-color:#ef4444}.week-day-bubble.has-plan.future{opacity:.7;pointer-events:auto;cursor:pointer}.week-day-bubble.has-plan.future .week-day-circle{border:1.5px dashed var(--muted);color:var(--muted);opacity:1}.weekly-plan-progress{background:var(--border);border-radius:2px;width:100%;height:4px;margin-bottom:4px;overflow:hidden}.weekly-plan-progress-bar{background:#10b981;border-radius:2px;height:100%;transition:width .3s}.weekly-plan-progress-label{color:var(--muted);text-align:right;margin-bottom:8px;font-family:Geist Mono,monospace;font-size:9px;display:block}.dc-summary{border-radius:8px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:12px;font-weight:500;display:flex}.dc-summary--met{color:#10b981;background:#10b9811a}.dc-summary--partial{color:#f59e0b;background:#f59e0b1a}.dc-summary--missed{color:#ef4444;background:#ef44441a}.dc-compliance{margin-left:4px;font-size:11px;font-weight:600}.dc-compliance--met{color:#10b981}.dc-compliance--missed{color:#ef4444}.dc-planned-desc{color:var(--muted);margin-top:4px;font-size:10px;line-height:1.4}.dc-plan-remark{color:var(--muted);margin-top:4px;font-size:10px;font-style:italic}.planner-activity-icon{margin-right:2px;font-size:14px}.planner-session-item{border-top:1px solid var(--border);flex-direction:column;flex:1;min-height:0;padding:8px 0;display:flex;overflow:hidden}.planner-session-item:first-child{border-top:none;padding-top:4px}.planner-day-date{color:var(--muted);letter-spacing:0;text-transform:none;margin-top:2px;font-size:10px;font-weight:400;display:block}.planner-day-past-icon{opacity:.6;margin-left:4px;font-size:10px}.planner-session-card--past{opacity:.65;background:var(--bg)}.planner-session-card--past:hover{opacity:.85;border-color:var(--accent)}.planner-day-modal-empty{color:var(--muted);padding:12px 0;font-size:13px}.planner-day-modal-sessions{flex-direction:column;gap:12px;margin-top:12px;display:flex}.planner-day-modal-session{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px}.planner-day-modal-session .planner-session-desc,.planner-past-session-card .planner-session-desc{-webkit-line-clamp:unset;-webkit-box-orient:unset;text-overflow:clip;white-space:normal;margin-top:6px;display:block;overflow:visible}.planner-day-modal-session-info{align-items:center;gap:12px;margin-bottom:4px;display:flex}.planner-day-modal-session-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.planner-past-tabs{border-bottom:1px solid var(--border);gap:8px;margin:12px 0;padding-bottom:0;display:flex}.planner-past-tab{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 16px;font-family:Geist Mono,monospace;font-size:12px;transition:color .15s,border-color .15s}.planner-past-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.planner-past-tab-content{padding:12px 0}.planner-past-session-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;margin-bottom:10px;padding:12px 14px}.planner-past-session-header{align-items:center;gap:12px;margin-bottom:4px;display:flex}.planner-past-session-stats{color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:8px;font-size:12px;display:flex}.planner-past-session-stats span{white-space:nowrap}#routePlannerView{padding-bottom:48px}.rp-back-nav{margin-bottom:20px}.rp-toolbar{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;display:flex}.rp-toolbar-left{flex-shrink:0;align-items:center;gap:8px;display:flex}.rp-btn-new{border:1.5px solid var(--accent);color:var(--accent);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:7px 14px;font-family:inherit;font-size:13px;font-weight:600;transition:background .15s,color .15s}.rp-btn-new:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.rp-btn-new.active{background:var(--accent);color:#fff}.rp-new-route-panel{border-top:1px solid var(--border);align-items:center;gap:10px;width:100%;padding-top:8px;animation:.15s ease-out rp-slide-in;display:flex}@keyframes rp-slide-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.rp-new-route-panel .rp-name-input{width:180px;padding:6px 10px;font-size:12px}.rp-new-route-panel .rp-btn-save{width:auto;padding:6px 14px;font-size:12px}.rp-name-input{border:1.5px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;outline:none;padding:9px 12px;font-family:inherit;font-size:13px;transition:border-color .15s}.rp-name-input:focus{border-color:var(--accent)}.rp-name-input::placeholder{color:var(--muted)}.rp-public-checkbox{color:var(--muted);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:11px;display:flex}.rp-public-checkbox input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:14px;height:14px}.rp-btn-save{background:var(--accent);color:#fff;cursor:pointer;letter-spacing:.04em;border:none;border-radius:8px;padding:9px 14px;font-family:inherit;font-size:13px;font-weight:600;transition:opacity .15s}.rp-btn-save:hover{opacity:.88}.rp-toolbar-center{flex:1;justify-content:center;align-items:center;gap:14px;min-width:0;display:flex}.rp-activity-toggle{flex-shrink:0;gap:8px;display:flex}.rp-activity-btn{border:1.5px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:8px;padding:6px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:border-color .15s,color .15s,background .15s}.rp-activity-btn.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--surface))}.rp-activity-btn:hover:not(.active){border-color:var(--muted);color:var(--text)}.rp-toolbar-stats{flex-wrap:nowrap;gap:14px;display:flex;overflow-x:auto}.rp-toolbar-stat{flex-direction:column;align-items:center;gap:1px;display:flex}.rp-toolbar-stat-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:9px;font-weight:600}.rp-toolbar-stat-value{color:var(--text);white-space:nowrap;font-family:Geist Mono,monospace;font-size:14px;font-weight:600}.rp-toolbar-right{flex-shrink:0;margin-left:auto}.rp-saved-dropdown-wrap{align-items:center;gap:6px;display:flex}.rp-saved-dropdown{border:1.5px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;outline:none;min-width:160px;max-width:220px;padding:7px 10px;font-family:inherit;font-size:12px}.rp-saved-dropdown:focus{border-color:var(--accent)}.rp-btn-delete-route{border:1.5px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;padding:5px 8px;font-family:inherit;font-size:12px;transition:border-color .15s,color .15s}.rp-btn-delete-route:hover{color:#c44;border-color:#c44}.rp-btn-submit-route{border:1.5px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:6px;padding:5px 10px;font-family:inherit;font-size:12px;transition:background .15s,color .15s}.rp-btn-submit-route:hover{background:var(--accent);color:#fff}.rp-btn-submit-route:disabled{opacity:.6;cursor:default;color:var(--accent);background:0 0}.rp-map-container{border:1px solid var(--border);border-radius:12px;position:relative;overflow:hidden}#routePlannerMap{width:100%;height:560px}.rp-map-hint{color:#fff;pointer-events:none;white-space:nowrap;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1c1810b8;border-radius:20px;padding:5px 12px;font-size:11px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.rp-marker{background:var(--accent);color:#fff;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-family:Geist,sans-serif;font-size:12px;font-weight:700;display:flex;box-shadow:0 2px 6px #00000040}.rp-marker.rp-marker-start{background:var(--green)}.rp-elevation-wrap{margin-top:12px}.rp-elevation-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:11px;font-weight:600}.rp-elevation-canvas{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;height:180px;display:block}.rp-elev-tooltip{color:#fff;pointer-events:none;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;background:#18140ed9;border-radius:6px;padding:4px 10px;font-family:Geist Mono,monospace;font-size:11px;position:absolute}.rp-bottom-section{margin-top:12px}.rp-waypoints-section{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px}.rp-waypoints-title{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-size:11px;font-weight:600}.rp-hint{color:var(--muted);font-size:12px;line-height:1.5}.rp-waypoint-item{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:5px 0;display:flex}.rp-waypoint-item:last-child{border-bottom:none}.rp-waypoint-badge{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:flex}.rp-waypoint-coords{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.rp-actions{gap:8px;margin-top:10px;display:flex}.rp-btn-secondary{border:1.5px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;flex:1;padding:8px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:border-color .15s,background .15s}.rp-btn-secondary:hover{border-color:var(--muted);background:var(--bg)}@media (width<=680px){.rp-toolbar{flex-direction:column;align-items:stretch}.rp-toolbar-left,.rp-toolbar-center,.rp-toolbar-right{justify-content:flex-start;width:100%}.rp-toolbar-right{margin-left:0}.rp-toolbar-center,.rp-new-route-panel{flex-wrap:wrap}.rp-new-route-panel .rp-name-input{flex:1;width:100%}.rp-saved-dropdown{width:100%;max-width:none}#routePlannerMap{height:360px}}.notif-bell-wrap{position:relative}.notif-bell-btn{cursor:pointer;color:var(--text-secondary,#7a7068);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:6px;transition:color .15s,background .15s;display:flex}.notif-bell-btn:hover{background:var(--surface);color:var(--text)}.notif-badge{background:var(--error);color:#fff;pointer-events:none;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-family:Geist Mono,monospace;font-size:9px;font-weight:700;display:none;position:absolute;top:0;right:0}.notif-panel{background:var(--bg,#1a1714);border:1px solid var(--border);z-index:1000;border-radius:12px;flex-direction:column;width:320px;max-height:440px;display:none;position:absolute;top:calc(100% + 10px);right:0;overflow:hidden;box-shadow:0 8px 32px #00000059}.notif-panel.open{display:flex}.notif-panel-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 16px 12px;display:flex}.notif-panel-title{letter-spacing:.1em;text-transform:uppercase;color:var(--text);font-family:Geist Mono,monospace;font-size:11px;font-weight:600}.notif-mark-read-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;font-family:Geist Mono,monospace;font-size:11px;transition:color .15s}.notif-mark-read-btn:hover{color:var(--accent)}#notifList{flex:1;overflow-y:auto}.notif-item{cursor:pointer;border-bottom:1px solid var(--border);align-items:flex-start;gap:10px;padding:12px 16px;transition:background .15s;display:flex}.notif-item:last-child{border-bottom:none}.notif-item:hover{background:var(--surface)}.notif-dot{background:0 0;border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-top:5px;transition:background .2s}.notif-item.unread .notif-dot{background:var(--accent)}.notif-body{flex:1;min-width:0}.notif-text{color:var(--text);word-break:break-word;font-size:13px;line-height:1.4}.notif-text strong{font-weight:600}.notif-time{color:var(--muted);margin-top:3px;font-family:Geist Mono,monospace;font-size:10px}.notif-empty{text-align:center;color:var(--muted);padding:28px 16px;font-size:13px}@media (width<=480px){.notif-panel{width:calc(100vw - 24px);right:-8px}}.notif-actions{gap:8px;margin-top:8px;display:flex}.notif-action-btn{letter-spacing:.06em;border:1px solid var(--border);cursor:pointer;background:var(--surface);color:var(--text);border-radius:6px;padding:4px 12px;font-family:Geist Mono,monospace;font-size:11px;transition:background .15s,border-color .15s}.notif-action-btn.approve{border-color:var(--cadence-color,#4ade80);color:var(--cadence-color,#4ade80)}.notif-action-btn.approve:hover{background:var(--cadence-color,#4ade80);color:#000}.notif-action-btn.reject{border-color:var(--border);color:var(--text-secondary)}.notif-action-btn.reject:hover{border-color:var(--accent2);color:var(--accent2)}.feedback-fab{z-index:1001;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.feedback-fab-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;transition:transform .2s,opacity .2s;display:flex;box-shadow:0 4px 16px #0000004d}.feedback-fab-btn:hover{opacity:.9;transform:scale(1.05)}.feedback-panel{background:var(--bg,#1a1714);border:1px solid var(--border);border-radius:14px;flex-direction:column;width:300px;display:none;overflow:hidden;box-shadow:0 8px 32px #00000059}.feedback-panel.open{display:flex}.feedback-panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px 12px;display:flex}.feedback-panel-title{letter-spacing:.1em;text-transform:uppercase;color:var(--text);font-family:Geist Mono,monospace;font-size:11px;font-weight:600}.feedback-close-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:16px;line-height:1;transition:color .15s}.feedback-close-btn:hover{color:var(--text)}.feedback-panel-body{flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex}.feedback-hint{color:var(--muted);font-size:12px;line-height:1.5}.feedback-textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);resize:vertical;border-radius:8px;outline:none;min-height:90px;padding:10px 12px;font-family:Geist,sans-serif;font-size:13px;transition:border-color .2s}.feedback-textarea:focus{border-color:var(--accent)}.feedback-textarea::placeholder{color:var(--muted)}.feedback-submit-btn{background:var(--accent);color:#fff;letter-spacing:.08em;cursor:pointer;text-transform:uppercase;border:none;border-radius:8px;padding:10px 0;font-family:Geist Mono,monospace;font-size:12px;font-weight:700;transition:opacity .15s}.feedback-submit-btn:hover:not(:disabled){opacity:.85}.feedback-submit-btn:disabled{opacity:.5;cursor:default}.feedback-confirm{color:#4caf7d;text-align:center;padding:4px 0;font-size:13px;display:none}body.native-app .feedback-fab{bottom:calc(16px + 56px + env(safe-area-inset-bottom))}@media (width<=480px){.feedback-fab{bottom:16px;right:16px}.feedback-panel{width:calc(100vw - 32px)}}.messenger-widget{bottom:calc(56px + env(safe-area-inset-bottom) + 16px);z-index:1001;align-items:flex-end;gap:0;display:flex;position:fixed;right:24px}.messenger-fab-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;transition:transform .2s,opacity .2s;display:flex;position:relative;box-shadow:0 4px 16px #0000004d}.messenger-fab-btn:hover{opacity:.9;transform:scale(1.05)}.messenger-widget.open .messenger-fab-btn{display:none}.messenger-unread-badge{background:var(--error);color:#fff;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-family:Geist Mono,monospace;font-size:10px;font-weight:700;line-height:1;display:flex;position:absolute;top:-4px;right:-4px}.messenger-list-panel{background:var(--bg,#fafafa);border:1px solid var(--border);border-radius:14px;flex-direction:column;width:320px;max-height:480px;display:none;position:absolute;bottom:0;right:0;overflow:hidden;box-shadow:0 8px 32px #00000059}.messenger-widget.open .messenger-list-panel{display:flex}.messenger-list-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px 12px;display:flex}.messenger-list-title{letter-spacing:.1em;text-transform:uppercase;color:var(--text);font-family:Geist Mono,monospace;font-size:11px;font-weight:600}.messenger-close-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:16px;line-height:1;transition:color .15s}.messenger-close-btn:hover{color:var(--text)}.messenger-search{border:none;border-bottom:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);box-sizing:border-box;outline:none;padding:9px 14px;font-family:Geist,sans-serif;font-size:12px}.messenger-search::placeholder{color:var(--muted)}.messenger-conv-list{flex:1;min-height:120px;overflow-y:auto}.messenger-conv-item{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 14px;transition:background .1s;display:flex}.messenger-conv-item:last-child{border-bottom:none}.messenger-conv-item:hover{background:#00000008}.messenger-conv-item.active{background:var(--surface,#f0f0f0)}.messenger-conv-avatar{background:var(--text);width:36px;height:36px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:Geist,sans-serif;font-size:12px;font-weight:600;display:flex}.messenger-conv-info{flex:1;min-width:0}.messenger-conv-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-family:Geist,sans-serif;font-size:13px;font-weight:500;overflow:hidden}.messenger-conv-preview{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-family:Geist,sans-serif;font-size:11px;overflow:hidden}.messenger-conv-time{color:var(--muted);white-space:nowrap;flex-shrink:0;font-family:Geist Mono,monospace;font-size:10px}.messenger-conv-empty{color:var(--muted);text-align:center;padding:32px 16px;font-family:Geist,sans-serif;font-size:13px}.messenger-actions{border-top:1px solid var(--border);gap:0;display:flex}.messenger-action-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 8px;font-family:Geist,sans-serif;font-size:11px;font-weight:500;transition:color .15s,background .15s;display:flex}.messenger-action-btn:first-child{border-right:1px solid var(--border)}.messenger-action-btn:hover{color:var(--text);background:var(--surface,#f5f5f5)}.messenger-action-btn svg{flex-shrink:0}.messenger-chat-panel{background:var(--bg,#fafafa);border:1px solid var(--border);border-radius:14px;flex-direction:column;width:320px;height:480px;max-height:480px;display:none;position:absolute;bottom:0;right:0;overflow:hidden;box-shadow:0 8px 32px #00000059}.messenger-chat-panel.open{display:flex}.messenger-chat-header{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:12px 16px;display:flex}.messenger-chat-back{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:18px;line-height:1;transition:color .15s;display:block}.messenger-chat-back:hover{color:var(--text)}.messenger-chat-name{color:var(--text);flex:1;font-family:Geist,sans-serif;font-size:14px;font-weight:500}.messenger-chat-header .messenger-close-btn{flex-shrink:0;margin-left:auto}.messenger-chat-messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:8px;min-height:200px;padding:12px 14px;display:flex;overflow-y:auto}.messenger-message{flex-direction:column;max-width:72%;display:flex}.messenger-message.mine{align-self:flex-end;align-items:flex-end}.messenger-message.theirs{align-self:flex-start;align-items:flex-start}.messenger-message-bubble{white-space:pre-wrap;word-break:break-word;border-radius:14px;padding:10px 14px;font-family:Geist,sans-serif;font-size:14px;line-height:1.5}.messenger-message.mine .messenger-message-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.messenger-message.theirs .messenger-message-bubble{background:var(--surface);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px}.messenger-message-time{color:var(--muted);margin-top:3px;padding:0 4px;font-family:Geist Mono,monospace;font-size:10px}.messenger-chat-input-row{border-top:1px solid var(--border);align-items:flex-end;gap:10px;padding:10px 14px;display:flex}.messenger-chat-input{border:1px solid var(--border);background:var(--surface);color:var(--text);resize:none;border-radius:10px;outline:none;flex:1;max-height:120px;padding:10px 12px;font-family:Geist,sans-serif;font-size:14px;line-height:1.4;transition:border-color .15s;overflow-y:auto}.messenger-chat-input:focus{border-color:var(--accent)}.messenger-chat-input::placeholder{color:var(--muted)}.messenger-send-btn{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:10px;flex-shrink:0;padding:10px 18px;font-family:Geist,sans-serif;font-size:13px;font-weight:600;transition:opacity .15s}.messenger-send-btn:hover{opacity:.85}.messenger-chat-empty,.messenger-chat-loading{color:var(--muted);text-align:center;padding:24px 0;font-family:Geist,sans-serif;font-size:13px}.messenger-form-panel{background:var(--bg,#fafafa);border:1px solid var(--border);border-radius:14px;flex-direction:column;width:320px;max-height:480px;position:absolute;bottom:0;right:0;overflow:hidden;box-shadow:0 8px 32px #00000059}.messenger-form-body{flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex}body.native-app .messenger-widget{bottom:calc(16px + 56px + env(safe-area-inset-bottom))}@media (width<=480px){.messenger-widget{bottom:calc(56px + env(safe-area-inset-bottom) + 12px);right:16px}.messenger-list-panel,.messenger-chat-panel,.messenger-form-panel{width:calc(100vw - 32px)}}#adminView{max-width:960px;margin:0 auto;padding:24px 16px}.admin-title{color:var(--text);margin:0 0 20px;font-family:Geist,sans-serif;font-size:22px;font-weight:600}.admin-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:24px;display:flex}.admin-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 16px;font-family:Geist,sans-serif;font-size:13px;font-weight:500;transition:color .15s,border-color .15s}.admin-tab:hover{color:var(--text)}.admin-tab.active{color:var(--text);border-bottom-color:var(--accent)}.admin-stat-cards{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}@media (width<=500px){.admin-stat-cards{grid-template-columns:1fr}}.admin-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;padding:20px 24px;display:flex}.admin-stat-card.premium{border-color:var(--premium-gold)}.admin-stat-card.premium-plus{border-color:var(--premium-plus)}.stat-value{color:var(--text);font-family:Geist Mono,monospace;font-size:36px;font-weight:600;line-height:1}.admin-stat-card.premium .stat-value{color:var(--premium-gold)}.admin-stat-card.premium-plus .stat-value{color:var(--premium-plus)}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-family:Geist,sans-serif;font-size:12px}.admin-search-bar{margin-bottom:16px}.admin-search-bar input{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:8px;outline:none;padding:9px 12px;font-family:Geist,sans-serif;font-size:14px;transition:border-color .15s}.admin-search-bar input:focus{border-color:var(--accent)}.admin-user-table{border-collapse:collapse;width:100%;font-family:Geist,sans-serif;font-size:13px}.admin-user-table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--border);padding:8px 12px;font-size:11px;font-weight:600}.admin-user-table td{border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;padding:10px 12px}.admin-user-table tr:last-child td{border-bottom:none}.admin-user-table tr:hover td{background:var(--bg)}.tier-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:3px 8px;font-family:Geist Mono,monospace;font-size:11px;font-weight:600}.tier-badge.tier-standard{color:#555;background:#f0f0f0}.tier-badge.tier-premium{color:#8a6600;background:#fdf3d0}.tier-badge.tier-premium_plus{color:#6b21a8;background:#e8d5f5}.admin-action-btn{border:1px solid var(--border);cursor:pointer;background:var(--surface);color:var(--text);white-space:nowrap;border-radius:6px;padding:5px 10px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:background .15s,border-color .15s}.admin-action-btn:hover{background:var(--bg)}.admin-action-btn.upgrade{border-color:var(--premium-gold);color:#8a6600}.admin-action-btn.upgrade:hover{background:#fdf3d0}.admin-action-btn.upgrade.premium-plus{border-color:var(--premium-plus);color:#6b21a8}.admin-action-btn.upgrade.premium-plus:hover{background:#e8d5f5}.admin-action-btn.downgrade{color:var(--muted);border-color:#ccc}.admin-pagination{color:var(--muted);justify-content:center;align-items:center;gap:16px;margin-top:16px;font-family:Geist,sans-serif;font-size:13px;display:flex}.admin-pagination button{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:7px;padding:6px 14px;font-family:Geist,sans-serif;font-size:13px;transition:background .15s}.admin-pagination button:hover:not(:disabled){background:var(--bg)}.admin-pagination button:disabled{opacity:.4;cursor:not-allowed}.admin-feedback-list{flex-direction:column;gap:12px;display:flex}.admin-feedback-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px}.admin-feedback-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.admin-feedback-user{color:var(--text);font-family:Geist,sans-serif;font-size:12px;font-weight:600}.admin-feedback-date{color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.admin-feedback-message{color:var(--text);white-space:pre-wrap;margin:0 0 8px;font-family:Geist,sans-serif;font-size:14px;line-height:1.5}.admin-feedback-url-wrap{margin-top:8px}.admin-feedback-url{color:var(--muted);word-break:break-all;font-family:Geist Mono,monospace;font-size:11px;text-decoration:none}.admin-feedback-url:hover{color:var(--text);text-decoration:underline}.admin-feedback-subtabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.admin-feedback-subtab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 14px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:color .15s,border-color .15s}.admin-feedback-subtab:hover{color:var(--text)}.admin-feedback-subtab.active{color:var(--text);border-bottom-color:var(--accent)}.admin-feedback-type-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:4px;padding:2px 8px;font-family:Geist,sans-serif;font-size:10px;font-weight:600;display:inline-block}.admin-feedback-type-badge.feedback{color:#1565c0;background:#e3f2fd}.admin-feedback-type-badge.bug_report{color:#c62828;background:#fce4ec}.admin-feedback-reply-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:4px 0;font-family:Geist,sans-serif;font-size:12px;font-weight:500}.admin-feedback-reply-btn:hover{text-decoration:underline}.admin-feedback-reply-form{flex-direction:column;gap:8px;margin-top:10px;display:none}.admin-feedback-reply-form.open{display:flex}.admin-feedback-reply-input{color:var(--text);background:var(--bg);border:1px solid var(--border);resize:vertical;border-radius:8px;min-height:60px;padding:10px 12px;font-family:Geist,sans-serif;font-size:13px}.admin-feedback-reply-input:focus{border-color:var(--accent);outline:none}.admin-feedback-reply-send{color:#fff;background:var(--accent);cursor:pointer;border:none;border-radius:8px;align-self:flex-end;padding:8px 16px;font-family:Geist,sans-serif;font-size:12px;font-weight:600}.admin-feedback-reply-send:hover{opacity:.85}.admin-feedback-replies{flex-direction:column;gap:8px;margin-top:12px;display:flex}.admin-feedback-reply{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.admin-feedback-reply-meta{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.admin-feedback-reply-author{color:var(--accent);font-family:Geist,sans-serif;font-size:11px;font-weight:600}.admin-feedback-reply-date{color:var(--muted);font-family:Geist Mono,monospace;font-size:10px}.admin-feedback-reply-message{color:var(--text);white-space:pre-wrap;margin:0;font-family:Geist,sans-serif;font-size:13px;line-height:1.4}.admin-loading{color:var(--muted);text-align:center;padding:24px 0;font-family:Geist,sans-serif;font-size:13px}.admin-error{color:var(--accent2,#e00000);text-align:center;padding:24px 0;font-family:Geist,sans-serif;font-size:13px}.admin-toggle{width:40px;height:22px;display:inline-block;position:relative}.admin-toggle input{opacity:0;width:0;height:0}.admin-toggle-slider{cursor:pointer;background:var(--muted,#666);border-radius:22px;transition:background .2s;position:absolute;inset:0}.admin-toggle-slider:before{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;bottom:3px;left:3px}.admin-toggle input:checked+.admin-toggle-slider{background:var(--accent,#4a90d9)}.admin-toggle input:checked+.admin-toggle-slider:before{transform:translate(18px)}.admin-features-hint{color:var(--muted);text-align:center;margin-top:16px;font-family:Geist,sans-serif;font-size:12px}#libraryView{max-width:960px;margin:0 auto;padding:24px 16px}.library-title{color:var(--text);margin:16px 0 4px;font-family:Geist,sans-serif;font-size:22px;font-weight:600}.library-subtitle{color:var(--muted);margin:0 0 20px;font-family:Geist,sans-serif;font-size:13px}.library-controls{margin-bottom:20px}.library-search{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:8px;outline:none;margin-bottom:12px;padding:10px 14px;font-family:Geist,sans-serif;font-size:14px}.library-search:focus{border-color:var(--accent)}.library-filters{flex-wrap:wrap;gap:6px;display:flex}.library-filter-btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:20px;padding:6px 14px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:all .15s}.library-filter-btn:hover{color:var(--text);border-color:var(--text)}.library-filter-btn.active{background:var(--accent);color:var(--surface);border-color:var(--accent)}.library-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:10px;margin-bottom:8px;padding:16px;transition:border-color .15s,box-shadow .15s}.library-card:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000d}.library-card-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.library-card-name{color:var(--text);font-family:Geist,sans-serif;font-size:15px;font-weight:600}.library-card-desc{color:var(--muted);margin:0 0 8px;font-family:Geist,sans-serif;font-size:12px;line-height:1.4}.library-card-stats{color:var(--muted);gap:16px;font-family:Geist Mono,monospace;font-size:11px;display:flex}.library-diff-badge{text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border-radius:10px;padding:3px 8px;font-family:Geist,sans-serif;font-size:10px;font-weight:600}.library-diff-easy{color:#2e7d32;background:#e8f5e9}.library-diff-medium{color:#e65100;background:#fff3e0}.library-diff-hard{color:#c62828;background:#fce4ec}.library-loading,.library-empty{color:var(--muted);text-align:center;padding:32px 16px;font-family:Geist,sans-serif;font-size:13px}.library-detail-modal{max-width:600px;max-height:90vh;overflow-y:auto}.modal-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:24px;line-height:1;position:absolute;top:12px;right:16px}.modal-close:hover{color:var(--text)}.library-detail-name{color:var(--text);margin:0 0 6px;padding-right:32px;font-family:Geist,sans-serif;font-size:20px;font-weight:600}.library-detail-desc{color:var(--muted);margin:0 0 12px;font-family:Geist,sans-serif;font-size:13px;line-height:1.4}.library-detail-stats{color:var(--muted);align-items:center;gap:12px;margin-bottom:16px;font-family:Geist Mono,monospace;font-size:12px;display:flex}.library-detail-elevation{background:var(--bg);border-radius:6px;width:100%;height:120px;margin-bottom:12px}.library-detail-map{background:var(--bg);border-radius:6px;width:100%;height:200px;margin-bottom:16px}.library-start-btn{width:100%;margin-bottom:20px}.library-scoreboard-title{color:var(--text);margin:0 0 10px;font-family:Geist,sans-serif;font-size:14px;font-weight:600}.scoreboard-table{border-collapse:collapse;width:100%;font-family:Geist Mono,monospace;font-size:12px}.scoreboard-table th{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:left;border-bottom:1px solid var(--border);padding:6px 8px;font-family:Geist,sans-serif;font-size:10px;font-weight:600}.scoreboard-table td{border-bottom:1px solid var(--border);color:var(--text);padding:8px}.scoreboard-table tr:last-child td{border-bottom:none}.scoreboard-table tr.scoreboard-own{background:#0070f30d}.scoreboard-table tr.scoreboard-own td{font-weight:600}.score-privacy-modal{text-align:center;max-width:400px}.score-privacy-modal h3{margin:0 0 12px;font-family:Geist,sans-serif;font-size:18px;font-weight:600}.score-time-display{color:var(--text);margin:0 0 8px;font-family:Geist Mono,monospace;font-size:14px}.score-time-display strong{color:var(--accent);font-size:24px}.score-privacy-modal>p{color:var(--muted);margin:0 0 16px;font-family:Geist,sans-serif;font-size:13px}.score-privacy-actions{justify-content:center;gap:8px;margin-bottom:12px;display:flex}.btn-outline{background:var(--surface)!important;color:var(--text)!important;border:1px solid var(--border)!important}.btn-outline:hover{border-color:var(--accent)!important}.btn-link{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-family:Geist,sans-serif;font-size:12px;text-decoration:underline}.btn-link:hover{color:var(--text)}.admin-library-actions{margin-bottom:16px}.admin-library-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px;padding:12px 14px;display:flex}.admin-library-card.public{border-left:3px solid var(--green)}.admin-library-card.editing{border-color:var(--accent)}.admin-library-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.admin-library-name{color:var(--text);font-family:Geist,sans-serif;font-size:14px;font-weight:600}.admin-library-meta{color:var(--muted);font-family:Geist Mono,monospace;font-size:11px}.admin-library-desc{color:var(--muted);margin-top:2px;font-family:Geist,sans-serif;font-size:11px}.admin-library-actions{flex-wrap:wrap;flex-shrink:0;gap:6px;display:flex}.admin-library-edit-form{flex-direction:column;gap:8px;width:100%;display:flex}.admin-library-edit-form label{color:var(--muted);flex-direction:column;gap:4px;font-family:Geist,sans-serif;font-size:11px;font-weight:500;display:flex}.admin-library-edit-actions{gap:8px;margin-top:4px;display:flex}@media (width<=600px){.library-card-stats{flex-wrap:wrap;gap:8px}.admin-library-card{flex-direction:column}.admin-library-actions{width:100%}.library-detail-map{height:150px}}#coachView{max-width:960px;margin:0 auto;padding:24px 16px}.coach-title{color:var(--text);margin:0 0 20px;font-family:Geist,sans-serif;font-size:22px;font-weight:600}.coach-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:24px;display:flex}.coach-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 16px;font-family:Geist,sans-serif;font-size:13px;font-weight:500;transition:color .15s,border-color .15s}.coach-tab:hover{color:var(--text)}.coach-tab.active{color:var(--text);border-bottom-color:var(--accent)}.coach-add-form{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:24px;display:flex}.coach-add-form input[type=email]{border:1px solid var(--border);background:var(--surface);min-width:220px;color:var(--text);border-radius:8px;outline:none;flex:1;padding:9px 12px;font-family:Geist,sans-serif;font-size:14px;transition:border-color .15s}.coach-add-form input[type=email]:focus{border-color:var(--accent)}.coach-add-btn{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border-radius:8px;padding:9px 16px;font-family:Geist,sans-serif;font-size:13px;font-weight:600;transition:opacity .15s}.coach-add-btn:hover{opacity:.85}.coach-status-msg{color:var(--muted);font-family:Geist,sans-serif;font-size:12px}.coach-athlete-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:14px;margin-bottom:10px;padding:14px 16px;transition:border-color .15s;display:flex}.coach-athlete-card:hover{border-color:var(--accent)}.coach-athlete-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-family:Geist,sans-serif;font-size:14px;font-weight:700;display:flex}.coach-athlete-info{flex:1;min-width:0}.coach-athlete-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-family:Geist,sans-serif;font-size:14px;font-weight:600;overflow:hidden}.coach-athlete-email{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-family:Geist,sans-serif;font-size:12px;overflow:hidden}.coach-athlete-actions{flex-shrink:0;gap:8px;display:flex}.coach-chat-btn{border:1px solid var(--accent);color:var(--accent);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;padding:6px 12px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:background .15s}.coach-chat-btn:hover{background:var(--accent);color:#fff}.coach-remove-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;padding:6px 12px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:background .15s,color .15s}.coach-remove-btn:hover{color:#ef4444;background:#fee2e2;border-color:#ef4444}.coach-athlete-select-wrap{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.coach-chat-label{color:var(--muted);white-space:nowrap;font-family:Geist,sans-serif;font-size:13px}#coachAthleteSelectDropdown{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;outline:none;flex:1;min-width:180px;padding:8px 12px;font-family:Geist,sans-serif;font-size:14px}.coach-chat-messages{border-top:1px solid var(--border);border-bottom:1px solid var(--border);scroll-behavior:smooth;flex-direction:column;gap:8px;min-height:200px;max-height:420px;margin-bottom:12px;padding:12px 0;display:flex;overflow-y:auto}.coach-message{flex-direction:column;max-width:72%;display:flex}.coach-message.mine{align-self:flex-end;align-items:flex-end}.coach-message.theirs{align-self:flex-start;align-items:flex-start}.coach-message-bubble{white-space:pre-wrap;word-break:break-word;border-radius:14px;padding:10px 14px;font-family:Geist,sans-serif;font-size:14px;line-height:1.5}.coach-message.mine .coach-message-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.coach-message.theirs .coach-message-bubble{background:var(--surface);border:1px solid var(--border);color:var(--text);border-bottom-left-radius:4px}.coach-message-time{color:var(--muted);margin-top:3px;padding:0 4px;font-family:Geist Mono,monospace;font-size:10px}.coach-chat-input-row{align-items:flex-end;gap:10px;display:flex}.coach-message-input{border:1px solid var(--border);background:var(--surface);color:var(--text);resize:none;border-radius:10px;outline:none;flex:1;max-height:120px;padding:10px 12px;font-family:Geist,sans-serif;font-size:14px;line-height:1.4;transition:border-color .15s;overflow-y:auto}.coach-message-input:focus{border-color:var(--accent)}.coach-send-btn{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:10px;flex-shrink:0;padding:10px 18px;font-family:Geist,sans-serif;font-size:13px;font-weight:600;transition:opacity .15s}.coach-send-btn:hover{opacity:.85}.coach-loading,.coach-empty,.coach-chat-empty{color:var(--muted);text-align:center;padding:24px 0;font-family:Geist,sans-serif;font-size:13px}.coach-error{color:var(--accent2,#e00000);text-align:center;padding:24px 0;font-family:Geist,sans-serif;font-size:13px}.coach-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}@media (width>=600px){.coach-modal-overlay{align-items:center;padding:24px}}.coach-modal{background:var(--bg);border-radius:16px 16px 0 0;flex-direction:column;gap:12px;width:100%;max-width:540px;max-height:80vh;padding:20px 20px 32px;display:flex}@media (width>=600px){.coach-modal{border-radius:16px}}.coach-modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-bottom:12px;display:flex}.coach-modal-header h3{color:var(--text);margin:0;font-family:Geist,sans-serif;font-size:16px;font-weight:600}.coach-modal-close{border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:7px;padding:6px 12px;font-family:Geist,sans-serif;font-size:13px}.coach-modal-close:hover{color:var(--text)}.admin-coach-list{flex-direction:column;gap:12px;display:flex}.admin-coach-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px}.admin-coach-header{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.admin-coach-name{color:var(--text);flex:1;font-family:Geist,sans-serif;font-size:14px;font-weight:600}.admin-coach-email{color:var(--muted);font-family:Geist,sans-serif;font-size:12px}.admin-coach-athletes{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}.admin-athlete-list{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.admin-athlete-row{color:var(--text);flex-wrap:wrap;align-items:center;gap:10px;font-family:Geist,sans-serif;font-size:13px;display:flex}.admin-athlete-email{color:var(--muted);flex:1;font-size:12px}.admin-add-athlete-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-input{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:7px;outline:none;flex:1;min-width:180px;padding:7px 10px;font-family:Geist,sans-serif;font-size:13px}.admin-input:focus{border-color:var(--accent)}.admin-status-msg{color:var(--muted);font-family:Geist,sans-serif;font-size:12px}.admin-actions-cell{flex-wrap:wrap;gap:6px;display:flex}.coach-athlete-pending{opacity:.7}.coach-pending-badge{letter-spacing:.08em;color:var(--text-secondary,#7a7068);background:var(--surface);border:1px solid var(--border);vertical-align:middle;border-radius:4px;padding:1px 5px;font-family:Geist Mono,monospace;font-size:10px}.athlete-coach-list{padding:8px 0}.athlete-coach-list-item{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 16px;transition:background .12s;display:flex}.athlete-coach-list-item:last-child{border-bottom:none}.athlete-coach-list-item:hover{background:var(--surface)}.athlete-coach-list-item svg{color:var(--text-secondary);flex-shrink:0;margin-left:auto}.athlete-chat-subheader{border-bottom:1px solid var(--border);align-items:center;gap:8px;min-height:36px;padding:8px 16px;display:flex}.athlete-chat-back-btn{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:4px 6px;font-family:Geist Mono,monospace;font-size:12px;transition:background .12s;display:flex}.athlete-chat-back-btn:hover{background:var(--surface);color:var(--text)}.athlete-chat-coach-name{color:var(--text);font-size:13px;font-weight:500}.coach-feed-filters{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.coach-feed-period-btns{background:var(--surface,#f5f5f5);border-radius:8px;gap:4px;padding:3px;display:flex}.coach-feed-period-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 14px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:all .15s}.coach-feed-period-btn:hover{color:var(--text)}.coach-feed-period-btn.active{background:var(--bg);color:var(--text);box-shadow:0 1px 3px #00000014}.coach-feed-athlete-select{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:8px;padding:6px 10px;font-family:Geist,sans-serif;font-size:12px}.coach-chat-layout{border:1px solid var(--border);border-radius:10px;gap:0;min-height:400px;display:flex;overflow:hidden}.coach-chat-sidebar{border-right:1px solid var(--border);background:var(--surface,#fafafa);flex-direction:column;width:260px;min-width:260px;display:flex}.coach-chat-sidebar-header{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:12px;display:flex}.coach-chat-search{border:1px solid var(--border);background:var(--bg);box-sizing:border-box;border-radius:8px;width:100%;padding:7px 10px;font-family:Geist,sans-serif;font-size:12px}.coach-chat-new-btn{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:8px;padding:6px 12px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:background .15s}.coach-chat-new-btn:hover{background:var(--surface,#f0f0f0)}.coach-chat-conv-list{flex:1;overflow-y:auto}.coach-chat-conv-item{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 12px;transition:background .1s;display:flex}.coach-chat-conv-item:hover{background:#00000008}.coach-chat-conv-item.active{background:var(--bg)}.coach-chat-conv-avatar{background:var(--text);width:36px;height:36px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.coach-chat-conv-info{flex:1;min-width:0}.coach-chat-conv-name{color:var(--text);font-size:13px;font-weight:500}.coach-chat-conv-preview{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.coach-chat-conv-time{color:var(--muted);white-space:nowrap;font-size:10px}.coach-chat-main{flex-direction:column;flex:1;min-width:0;display:flex}.coach-chat-main-header{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:12px 16px;font-size:14px;font-weight:500;display:flex}.coach-chat-back-mobile{color:var(--text);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:20px;line-height:1;display:none}@media (width<=599px){.coach-chat-layout{border:none;border-radius:0;flex-direction:column;min-height:460px}.coach-chat-sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;min-width:0}.coach-chat-main{flex:1;min-height:400px;display:none}.coach-chat-back-mobile{display:block}.coach-chat-messages{max-height:50vh}}.coach-chat-main-empty{color:var(--muted);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.modern-dropdown{width:100%;max-width:320px;margin-bottom:16px;position:relative}.modern-dropdown-toggle{border:1px solid var(--border);background:var(--bg);cursor:pointer;width:100%;color:var(--text);border-radius:10px;align-items:center;gap:10px;padding:10px 14px;font-family:Geist,sans-serif;font-size:13px;transition:border-color .15s;display:flex}.modern-dropdown-toggle:hover{border-color:var(--text)}.modern-dropdown-toggle .modern-dd-avatar{background:var(--text);width:30px;height:30px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex}.modern-dropdown-toggle .modern-dd-chevron{margin-left:auto;transition:transform .15s}.modern-dropdown.open .modern-dd-chevron{transform:rotate(180deg)}.modern-dropdown-panel{background:var(--bg);border:1px solid var(--border);z-index:100;border-radius:10px;display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 4px 16px #0000001a}.modern-dropdown.open .modern-dropdown-panel{display:block}.modern-dropdown-search{border:none;border-bottom:1px solid var(--border);box-sizing:border-box;outline:none;width:100%;padding:10px 14px;font-family:Geist,sans-serif;font-size:12px}.modern-dropdown-list{max-height:200px;overflow-y:auto}.modern-dropdown-item{cursor:pointer;align-items:center;gap:10px;padding:10px 14px;font-size:13px;transition:background .1s;display:flex}.modern-dropdown-item:hover{background:var(--surface,#f5f5f5)}.modern-dropdown-item.active{background:var(--surface,#f0f0f0);font-weight:500}.modern-dropdown-item .modern-dd-avatar{background:var(--text);width:28px;height:28px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:flex}.coach-new-conv-list{max-height:250px;overflow-y:auto}.coach-new-conv-item{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 12px;transition:background .1s;display:flex}.coach-new-conv-item:hover{background:var(--surface,#f5f5f5)}.native-nav{height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);z-index:1000;justify-content:space-around;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}.native-nav-btn{cursor:pointer;color:var(--muted);letter-spacing:.03em;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;padding:8px 4px;font-family:inherit;font-size:10px;font-weight:500;transition:color .15s;display:flex}.native-nav-btn svg{flex-shrink:0;transition:stroke .15s}.native-nav-btn.active{color:var(--accent)}.native-nav-btn.active svg{stroke:var(--accent)}.container{padding-bottom:calc(max(32px, env(safe-area-inset-bottom)) + 56px)}.analytics-title{color:var(--text);margin-top:16px;margin-bottom:24px;font-family:Geist,sans-serif;font-size:20px;font-weight:700}.analytics-grid{flex-direction:column;gap:16px;display:flex}.analytics-card{background:var(--surface);border-radius:16px;padding:20px 24px;box-shadow:0 1px 3px #0000000d,0 1px 2px #00000008}.analytics-top-bar{justify-content:flex-end;align-items:center;display:flex}.analytics-top-controls{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.analytics-period-select{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%23999' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;border-radius:8px;padding:5px 28px 5px 12px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:border-color .15s}.analytics-period-select:hover{border-color:var(--accent)}.analytics-period-select:focus{border-color:var(--accent);outline:none}.analytics-summary-row{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.analytics-summary-card{background:var(--surface);border-radius:14px;padding:18px 20px;box-shadow:0 1px 3px #0000000d,0 1px 2px #00000008}.analytics-summary-top{align-items:center;gap:8px;margin-bottom:10px;display:flex}.analytics-summary-activity-label{color:var(--muted);font-size:12px;font-weight:600}.analytics-summary-period{color:var(--muted);opacity:.7;margin-top:6px;font-size:10px;font-weight:500}.analytics-summary-value{color:var(--text);margin-bottom:4px;font-family:Geist,sans-serif;font-size:26px;font-weight:700;line-height:1.1}.analytics-summary-label{color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:500}.analytics-summary-compare{border-radius:10px;align-items:center;gap:3px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.analytics-compare-up{color:#1a7f37;background:#1a7f3714}.analytics-compare-down{color:#cf222e;background:#cf222e14}.analytics-compare-neutral{color:var(--muted);background:#0000000a}@media (width<=640px){.analytics-summary-row{grid-template-columns:1fr}}.analytics-card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.analytics-card-header h3{color:var(--text);margin:0;font-family:Geist,sans-serif;font-size:15px;font-weight:600}.analytics-metric-toggle{background:var(--bg);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.analytics-toggle-btn{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:5px 14px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:all .2s}.analytics-toggle-btn:hover{color:var(--text)}.analytics-toggle-btn.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 3px #00000014}.analytics-legend{color:var(--muted);gap:16px;margin-bottom:10px;font-size:12px;display:flex}.analytics-legend-item{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:5px;font-weight:500;transition:opacity .2s;display:flex}.analytics-legend-item:hover{opacity:.7}.analytics-legend-item.dimmed{opacity:.25}.analytics-legend-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.analytics-chart-wrap{width:100%}.analytics-chart-wrap canvas{cursor:pointer;width:100%}.analytics-hint{color:var(--muted);text-align:center;padding:12px 0;font-size:12px}.analytics-secondary-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=640px){.analytics-secondary-row{grid-template-columns:1fr}}.analytics-split-title,.analytics-insight-title{color:var(--text);margin-bottom:16px;font-family:Geist,sans-serif;font-size:14px;font-weight:600}.analytics-split-subtitle{color:var(--muted);margin-left:6px;font-size:11px;font-weight:500}.analytics-split-bar{background:var(--bg);border-radius:6px;height:12px;margin-bottom:14px;display:flex;overflow:hidden}.analytics-split-segment{min-width:2px;height:100%;transition:width .3s}.analytics-split-legend{flex-direction:column;gap:10px;display:flex}.analytics-split-legend-item{justify-content:space-between;align-items:center;display:flex}.analytics-split-legend-left{color:var(--text);align-items:center;gap:8px;font-size:13px;font-weight:500;display:flex}.analytics-split-legend-pct{color:var(--muted);font-size:13px;font-weight:600}.analytics-insight-text{color:var(--text);font-size:14px;line-height:1.6}.analytics-insight-text strong{font-weight:600}.analytics-insight-empty{color:var(--muted);font-size:13px}.analytics-chat-section{margin-top:4px}.analytics-chat-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.analytics-chat-header h3{color:var(--text);margin:0;font-family:Geist,sans-serif;font-size:15px;font-weight:600}.analytics-chat-clear{color:var(--muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;padding:4px 12px;font-family:Geist,sans-serif;font-size:11px;transition:all .15s;display:none}.analytics-chat-clear:hover{color:var(--text);border-color:var(--text)}.analytics-chat-subtitle{color:var(--muted);margin-bottom:14px;font-size:13px}.analytics-chat-messages{flex-direction:column;gap:8px;min-height:60px;max-height:400px;padding:8px 0;display:flex;overflow-y:auto}.analytics-chat-msg{display:flex}.analytics-chat-msg.user{justify-content:flex-end}.analytics-chat-msg.assistant{justify-content:flex-start}.analytics-chat-bubble{word-wrap:break-word;border-radius:14px;max-width:88%;padding:10px 14px;font-size:13px;line-height:1.5}.analytics-chat-msg.user .analytics-chat-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.analytics-chat-msg.assistant .analytics-chat-bubble{background:var(--bg);color:var(--text);border-bottom-left-radius:4px}.analytics-chat-input-row{align-items:flex-end;gap:8px;margin-top:12px;display:flex}.analytics-chat-input{border:1px solid var(--border);background:var(--bg);color:var(--text);resize:none;border-radius:12px;flex:1;padding:10px 14px;font-family:Geist,sans-serif;font-size:13px;line-height:1.4;transition:border-color .15s}.analytics-chat-input:focus{border-color:var(--accent);outline:none}.analytics-chat-send{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:12px;padding:10px 18px;font-family:Geist,sans-serif;font-size:12px;font-weight:600;transition:opacity .15s}.analytics-chat-send:hover{opacity:.9}.analytics-chat-send:disabled{opacity:.4;cursor:not-allowed}.analytics-chat-thinking{justify-content:center;align-items:center;padding:12px 16px;display:flex}.analytics-thinking-icon{color:var(--muted);animation:1.5s ease-in-out infinite thinkingPulse}@keyframes thinkingPulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.analytics-viz-table{margin:8px 0;overflow-x:auto}.analytics-viz-table table{border-collapse:collapse;width:100%;font-size:11px}.analytics-viz-table th{text-align:left;border-bottom:2px solid var(--border);color:var(--text);white-space:nowrap;padding:6px 8px;font-weight:600}.analytics-viz-table td{border-bottom:1px solid var(--border);color:var(--text);padding:5px 8px}.analytics-viz-table tr:last-child td{border-bottom:none}.analytics-viz-chart{margin:8px 0}.analytics-viz-chart canvas{background:var(--bg);border-radius:8px;max-width:100%}.analytics-viz-list{margin:8px 0;font-size:12px}.analytics-viz-list ul,.analytics-viz-list ol{padding-left:20px}.analytics-viz-list li{padding:2px 0}.user-profile-header{align-items:center;gap:12px;margin-top:12px;margin-bottom:4px;display:flex}.user-profile-header .follow-avatar{width:44px;height:44px;font-size:14px}.user-profile-name{color:var(--text);font-family:Geist,sans-serif;font-size:20px;font-weight:700}#userProfileRecentSessions h3{color:var(--text);margin:0 0 12px;font-family:Geist,sans-serif;font-size:16px;font-weight:600}
