*{box-sizing:border-box}
body{margin:0}
.app-shell--full{max-width:680px;padding-bottom:5.5rem}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:1.2rem 0 .85rem}
.topbar h1{margin:.15rem 0 0;font-size:1.85rem;color:var(--color-primary)}
.eyebrow{margin:0;text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;font-weight:700;color:var(--color-teal-dark)}
.icon-button{width:44px;height:44px;border:1px solid var(--border);border-radius:50%;background:var(--surface-raised);color:var(--text);cursor:pointer;font:inherit}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:8;display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem;padding:.55rem .75rem calc(.55rem + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface-raised) 92%,transparent);border-top:1px solid var(--border);backdrop-filter:blur(10px)}
.tabbar button{border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text-muted);padding:.65rem .35rem;font:inherit;font-size:.72rem;font-weight:600;cursor:pointer}
.tabbar button.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}
.panel{display:none}
.panel.active{display:block}
.card{background:var(--surface-raised);border:1px solid var(--border);border-radius:18px;padding:1rem;margin-bottom:.85rem}
.card h2,.card h3{margin:0 0 .55rem;font-size:.95rem;color:var(--color-primary)}
.card p,.card li{font-size:.82rem;line-height:1.45;color:var(--text)}
.card ul{margin:.35rem 0 0;padding-left:1.1rem}
.muted{color:var(--text-muted);font-size:.78rem;line-height:1.4}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;margin:.75rem 0}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.65rem;text-align:center}
.stat strong{display:block;font-size:1.15rem;color:var(--color-primary)}
.stat span{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}
.button,.button-like{border-radius:12px;padding:.75rem 1rem;border:1px solid var(--color-primary);cursor:pointer;font:inherit}
.button.primary,.button-like.primary{background:var(--color-primary);color:#fff}
.button.secondary{background:transparent;color:var(--color-primary)}
.button.danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}
.button:disabled{opacity:.45;cursor:default}
.actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.75rem}
.field{display:block;margin-bottom:.7rem;font-size:.72rem;font-weight:600;color:var(--text-muted)}
.field input,.field select,.field textarea{display:block;width:100%;margin-top:.25rem;padding:.6rem .7rem;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font:inherit;font-weight:400;font-size:.88rem}
.run-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}
.run-item{border:1px solid var(--border);border-radius:14px;padding:.75rem .85rem;background:var(--surface)}
.run-item-head{display:flex;justify-content:space-between;gap:.5rem;align-items:flex-start;margin-bottom:.25rem}
.run-item-head strong{font-size:.88rem;color:var(--text)}
.run-item-head time{font-size:.72rem;color:var(--text-muted);white-space:nowrap}
.run-meta{display:flex;flex-wrap:wrap;gap:.35rem .65rem;font-size:.74rem;color:var(--text-muted)}
.badge{display:inline-block;padding:.12rem .45rem;border-radius:999px;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;background:var(--color-primary-light);color:var(--color-primary)}
.badge.gps{background:var(--color-teal-light);color:var(--color-teal-dark)}
.badge.health{background:var(--color-secondary);color:#fff}
.badge.manual{background:var(--surface);border:1px solid var(--border);color:var(--text-muted)}
.badge.coach{background:var(--color-secondary);color:#fff}
.coach-prescription{margin:.5rem 0;font-size:.88rem;font-weight:600;color:var(--text);line-height:1.35}
.coach-preview{margin:0 0 .75rem;font-size:.75rem}
.coach-phase-display{text-align:center;margin:.85rem 0;padding:1rem;border-radius:16px;background:var(--color-primary-light);border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent)}
.coach-phase-display.active-jog{background:color-mix(in srgb,var(--color-secondary) 18%,var(--surface))}
.coach-phase-label{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--color-teal-dark)}
.coach-phase-time{display:block;font-size:2.75rem;line-height:1.1;color:var(--color-primary);margin:.15rem 0}
.coach-phase-sub{font-size:.72rem;color:var(--text-muted)}
.coach-live .live-dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;background:var(--color-secondary);margin-right:.35rem;animation:pulse 1.2s infinite}
.probe-grid{display:grid;gap:.55rem}
.probe-row{display:flex;justify-content:space-between;gap:.75rem;align-items:center;padding:.55rem .65rem;border:1px solid var(--border);border-radius:12px;background:var(--surface);font-size:.78rem}
.probe-row strong{color:var(--text)}
.probe-row span{text-align:right;color:var(--text-muted)}
.probe-row.ok span{color:var(--color-teal-dark);font-weight:600}
.probe-row.no span{color:var(--color-danger);font-weight:600}
.probe-row.maybe span{color:#9A7209;font-weight:600}
.matrix{width:100%;border-collapse:collapse;font-size:.72rem;margin-top:.55rem}
.matrix th,.matrix td{border:1px solid var(--border);padding:.45rem .5rem;text-align:left;vertical-align:top}
.matrix th{background:var(--surface);color:var(--text-muted)}
.empty{padding:2rem 1rem;text-align:center;color:var(--text-muted)}
.empty span{font-size:2rem;display:block;margin-bottom:.35rem}
.toast{position:fixed;left:50%;bottom:5.5rem;transform:translate(-50%,120px);background:var(--text);color:var(--surface);padding:.7rem 1rem;border-radius:10px;transition:.2s;z-index:9;font-size:.82rem}
.toast.show{transform:translate(-50%,0)}
.track-live .live-dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;background:var(--color-danger);margin-right:.35rem;animation:pulse 1.2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
details summary{cursor:pointer;font-weight:600;font-size:.82rem;color:var(--text)}
details{margin-top:.65rem}
