:root{--c-primary: #2563eb;--c-primary-dark: #1d4ed8;--c-primary-light: #eff6ff;--c-success: #10b981;--c-warning: #f59e0b;--c-danger: #ef4444;--c-danger-light: #fef2f2;--c-surface: #ffffff;--c-bg: #f1f5f9;--c-text: #0f172a;--c-text-secondary: #64748b;--c-border: #e2e8f0;--c-border-dark: #cbd5e1;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--nav-height: 64px;--header-height: 56px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--c-bg);color:var(--c-text);line-height:1.5;min-height:100dvh}#root{display:flex;flex-direction:column;min-height:100dvh;max-width:480px;margin:0 auto;background:var(--c-bg)}.app-header{position:sticky;top:0;z-index:100;height:var(--header-height);background:var(--c-surface);border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;box-shadow:var(--shadow-sm)}.app-header__brand{font-size:18px;font-weight:700;color:var(--c-primary);letter-spacing:-.3px}.app-header__user{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--c-text-secondary)}.avatar{width:32px;height:32px;border-radius:var(--radius-full);background:var(--c-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}.page-content{flex:1;overflow-y:auto;padding:16px;padding-bottom:calc(var(--nav-height) + 16px)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:var(--nav-height);background:var(--c-surface);border-top:1px solid var(--c-border);display:flex;align-items:stretch;z-index:100;box-shadow:0 -2px 8px #0000000f}.bottom-nav__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:none;border:none;cursor:pointer;color:var(--c-text-secondary);font-size:10px;font-weight:500;transition:color .15s;padding:8px 0}.bottom-nav__item svg{stroke-width:1.75}.bottom-nav__item--active{color:var(--c-primary)}.bottom-nav__item--active svg{stroke-width:2.25}.card{background:var(--c-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:16px;margin-bottom:12px}.card--highlight{border-left:4px solid var(--c-primary)}.card--success{border-left:4px solid var(--c-success)}.card--warning{border-left:4px solid var(--c-warning)}.card--danger{border-left:4px solid var(--c-danger)}.card__title{font-size:15px;font-weight:600;color:var(--c-text);margin-bottom:4px}.card__subtitle{font-size:13px;color:var(--c-text-secondary)}.card__row{display:flex;align-items:center;justify-content:space-between;gap:8px}.page-title{font-size:22px;font-weight:700;color:var(--c-text);letter-spacing:-.4px;margin-bottom:4px}.page-subtitle{font-size:14px;color:var(--c-text-secondary);margin-bottom:16px}.section-title{font-size:13px;font-weight:600;color:var(--c-text-secondary);text-transform:uppercase;letter-spacing:.6px;margin:20px 0 10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;border:none;transition:background .15s,transform .1s,opacity .15s;white-space:nowrap}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:active{transform:none}.btn-primary{background:var(--c-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--c-primary-dark)}.btn-success{background:var(--c-success);color:#fff}.btn-danger{background:var(--c-danger);color:#fff}.btn-outline{background:transparent;color:var(--c-primary);border:1.5px solid var(--c-primary)}.btn-outline:hover:not(:disabled){background:var(--c-primary-light)}.btn-ghost{background:transparent;color:var(--c-text-secondary);border:1.5px solid var(--c-border)}.btn-ghost:hover:not(:disabled){background:var(--c-bg)}.btn-full{width:100%}.btn-sm{padding:6px 12px;font-size:13px}.btn-lg{padding:14px 24px;font-size:16px;border-radius:var(--radius-md)}.form-group{margin-bottom:14px}.form-label{display:block;font-size:13px;font-weight:600;color:var(--c-text-secondary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.4px}.form-input{width:100%;padding:11px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--c-border);background:var(--c-bg);font-size:15px;color:var(--c-text);outline:none;transition:border-color .15s,background .15s;-webkit-appearance:none}.form-input:focus{border-color:var(--c-primary);background:var(--c-surface)}.form-input::placeholder{color:var(--c-border-dark)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-row--3{grid-template-columns:1fr 1fr 1fr}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.badge-blue{background:#dbeafe;color:#1e40af}.badge-green{background:#d1fae5;color:#065f46}.badge-amber{background:#fef3c7;color:#92400e}.badge-red{background:#fee2e2;color:#991b1b}.badge-slate{background:#f1f5f9;color:#475569}.divider{height:1px;background:var(--c-border);margin:16px 0}.empty-state{text-align:center;padding:48px 24px;color:var(--c-text-secondary)}.empty-state svg{margin:0 auto 12px;opacity:.35}.empty-state p{font-size:14px}.stat-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.stat-chip{display:flex;flex-direction:column;align-items:center;flex:1;min-width:60px;background:var(--c-bg);border-radius:var(--radius-sm);padding:8px 6px}.stat-chip__value{font-size:17px;font-weight:700;color:var(--c-text)}.stat-chip__label{font-size:10px;color:var(--c-text-secondary);text-transform:uppercase;letter-spacing:.4px;margin-top:1px}.session-banner{background:var(--c-primary);color:#fff;border-radius:var(--radius-md);padding:16px;margin-bottom:12px}.session-banner__status{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;opacity:.8;margin-bottom:2px}.session-banner__timer{font-size:36px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums}.session-banner__actions{display:flex;gap:8px;margin-top:12px}.session-banner__actions .btn{flex:1;background:#fff3;color:#fff;border:1.5px solid rgba(255,255,255,.35)}.session-banner__actions .btn:hover{background:#ffffff4d}.session-banner__actions .btn-complete{background:#fffffff2;color:var(--c-primary);border-color:transparent;font-weight:700}.set-card{background:var(--c-surface);border-radius:var(--radius-md);padding:12px 14px;margin-bottom:8px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:12px}.set-card__index{width:28px;height:28px;border-radius:var(--radius-full);background:var(--c-primary-light);color:var(--c-primary);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.set-card__exercise{font-size:14px;font-weight:600;color:var(--c-text);flex:1}.set-card__stats{font-size:13px;color:var(--c-text-secondary)}.garmin-panel{background:#0f172a;border-radius:var(--radius-md);padding:14px;margin-bottom:12px;color:#fff}.garmin-panel__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.garmin-panel__title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:#94a3b8}.garmin-panel__hr{font-size:32px;font-weight:800;color:#f87171;font-variant-numeric:tabular-nums}.garmin-panel__hr-label{font-size:11px;color:#64748b}.garmin-panel--warning{background:#1c1917;border:1px solid #78350f}.signin-page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;background:var(--c-bg)}.signin-logo{width:72px;height:72px;background:var(--c-primary);border-radius:20px;display:flex;align-items:center;justify-content:center;margin-bottom:24px;box-shadow:0 8px 24px #2563eb59}.signin-title{font-size:26px;font-weight:800;color:var(--c-text);letter-spacing:-.5px;text-align:center;margin-bottom:6px}.signin-subtitle{font-size:15px;color:var(--c-text-secondary);text-align:center;margin-bottom:36px}.signin-card{background:var(--c-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:24px;width:100%;max-width:360px}.filter-bar{background:var(--c-surface);border-radius:var(--radius-md);padding:14px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.filter-bar__title{font-size:13px;font-weight:600;color:var(--c-text-secondary);margin-bottom:10px}.insight-card{border-radius:var(--radius-md);padding:16px;margin-bottom:10px;box-shadow:var(--shadow-sm)}.insight-card--pr{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe}.insight-card--suggestion{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #bbf7d0}.insight-card--reminder{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:1px solid #fde68a}.insight-card__type{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.insight-card--pr .insight-card__type{color:#1d4ed8}.insight-card--suggestion .insight-card__type{color:#065f46}.insight-card--reminder .insight-card__type{color:#92400e}.insight-card__value{font-size:22px;font-weight:800;color:var(--c-text);letter-spacing:-.5px}.insight-card__desc{font-size:13px;color:var(--c-text-secondary);margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.gap-2{gap:8px}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.text-sm{font-size:13px}.text-xs{font-size:11px}.text-secondary{color:var(--c-text-secondary)}.font-bold{font-weight:700}.w-full{width:100%}
