/* ========================================
   TrainLytics v5 Ã¢â‚¬â€ Light Premium UI
   Build 057c Ã¢â‚¬â€ Reaction Test v2 (solo lane + lobby browser + error handling)
   ======================================== */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');

:root {
    --primary: #C8102E;
    --primary-light: #E63946;
    --primary-dark: #A00D24;
    --primary-glow: rgba(200,16,46,0.12);
    --accent: #1D1D1F;
    --accent-light: #424245;
    --accent-glow: rgba(29,29,31,0.08);
    --danger: #FF3B30;
    --danger-dark: #D62C23;
    --success: #34C759;
    --warning: #FF9500;
    --blue: #007AFF;
    --bg-body: #F5F5F7;
    --bg-card: #FFFFFF;
    --bg-card-hover: #FAFAFA;
    --bg-input: #FFFFFF;
    --bg-elevated: #F0F0F5;
    --border: rgba(0,0,0,0.10);
    --border-light: rgba(0,0,0,0.16);
    --text: #1D1D1F;
    --text-secondary: #6E6E73;
    --text-tertiary: #AEAEB2;
    --text-muted: #8E8E93;
    --text-dim: #8E8E93;
    --radius-sm: 12px;
    --radius: 16px;
    --radius-lg: 24px;
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.08);
    --shadow: 0 4px 24px rgba(0,0,0,0.08), 0 2px 6px rgba(0,0,0,0.06);
    --shadow-glow: 0 4px 20px var(--primary-glow);
    --transition-fast: 0.18s cubic-bezier(0.25,0.1,0.25,1);
    --transition: 0.25s cubic-bezier(0.25,0.1,0.25,1);
}

/* ================================================================
   DARK MODE — vollständige Token-Überschreibung
   ================================================================ */
[data-theme="dark"] {
    --primary: #FF3B57;
    --primary-light: #FF5C73;
    --primary-dark: #C8102E;
    --primary-glow: rgba(255,59,87,0.20);
    --accent: #F5F5F7;
    --accent-light: #C7C7CC;
    --accent-glow: rgba(245,245,247,0.06);
    --danger: #FF453A;
    --danger-dark: #FF6961;
    --success: #30D158;
    --warning: #FFA31A;
    --blue: #0A84FF;
    --bg-body: #0B0B0D;
    --bg-card: #17171A;
    --bg-card-hover: #1F1F23;
    --bg-input: #1A1A1D;
    --bg-elevated: #232327;
    --border: rgba(255,255,255,0.10);
    --border-light: rgba(255,255,255,0.18);
    --text: #F5F5F7;
    --text-secondary: #C7C7CC;
    --text-tertiary: #8E8E93;
    --text-muted: #98989D;
    --text-dim: #8E8E93;
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.50), 0 1px 2px rgba(0,0,0,0.40);
    --shadow: 0 4px 24px rgba(0,0,0,0.55), 0 2px 6px rgba(0,0,0,0.40);
    --shadow-glow: 0 4px 22px rgba(255,59,87,0.30);
    color-scheme: dark;
}
[data-theme="dark"] body { background:var(--bg-body); color:var(--text); }
[data-theme="dark"] .splash-screen { background:#0B0B0D; }
[data-theme="dark"] .splash-lane-lines {
    background:repeating-linear-gradient(90deg,rgba(255,255,255,0.08) 0,rgba(255,255,255,0.08) 20px,transparent 20px,transparent 30px);
}
[data-theme="dark"] .splash-data-item {
    background:rgba(255,59,87,0.12);
    border-color:rgba(255,59,87,0.24);
    color:var(--primary-light);
}
[data-theme="dark"] .filter-select:hover { background-color:var(--bg-card-hover); }
[data-theme="dark"] .filter-select:focus { background-color:var(--bg-card); }
[data-theme="dark"] .toast { box-shadow:0 4px 24px rgba(0,0,0,0.6); }
[data-theme="dark"] .toast--error { background:#3A1418; }
[data-theme="dark"] .save-success-overlay { background:rgba(0,0,0,0.55); }
[data-theme="dark"] input, [data-theme="dark"] textarea, [data-theme="dark"] select {
    color-scheme: dark;
}

/* Theme switcher (Segmented control) */
.theme-switcher {
    display:inline-flex;
    background:var(--bg-elevated);
    border:1px solid var(--border);
    border-radius:999px;
    padding:4px;
    gap:2px;
    width:100%;
    max-width:340px;
}
.theme-switcher button {
    flex:1;
    border:0; background:transparent;
    color:var(--text-secondary);
    font-size:13px; font-weight:600;
    padding:9px 12px;
    border-radius:999px;
    cursor:pointer;
    display:inline-flex; align-items:center; justify-content:center; gap:6px;
    transition:background .18s ease, color .18s ease, transform .12s ease;
    letter-spacing:-0.01em;
}
.theme-switcher button:hover { color:var(--text); }
.theme-switcher button.active {
    background:var(--bg-card);
    color:var(--text);
    box-shadow:0 1px 3px rgba(0,0,0,0.10);
}
[data-theme="dark"] .theme-switcher button.active {
    background:var(--bg-card-hover);
    box-shadow:0 1px 3px rgba(0,0,0,0.5);
}
.theme-switcher button svg { width:14px; height:14px; }


*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }

body {
    font-family:'Inter',-apple-system,BlinkMacSystemFont,'SF Pro Display','Segoe UI',sans-serif;
    background:var(--bg-body);
    color:var(--text);
    min-height:100vh;
    min-height:100dvh;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    line-height:1.5;
    letter-spacing:-0.01em;
    overflow-x:hidden;
}

/* ================================================================
   SPLASH SCREEN
   ================================================================ */
.splash-screen {
    position:fixed; inset:0;
    display:flex; align-items:center; justify-content:center;
    background:#FFFFFF; z-index:10000; padding:20px; overflow:hidden;
}
.splash-screen.fade-out { animation:splashFadeOut 0.5s ease forwards; pointer-events:none; }
@keyframes splashFadeOut { to { opacity:0; pointer-events:none; } }

.splash-content { text-align:center; width:100%; max-width:400px; }
.splash-phase {
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    min-height:280px;
}

.splash-track { position:relative; width:100%; height:100px; margin-bottom:20px; overflow:hidden; }
.splash-lane-lines {
    position:absolute; bottom:18px; left:0; right:0; height:2px;
    background:repeating-linear-gradient(90deg,rgba(0,0,0,0.06) 0,rgba(0,0,0,0.06) 20px,transparent 20px,transparent 30px);
}
.splash-runner {
    position:absolute; bottom:20px; left:-80px;
    color:var(--primary);
    animation:runAcross 1.6s ease-in-out forwards;
    filter:drop-shadow(0 2px 8px var(--primary-glow));
}
@keyframes runAcross {
    0%   { left:-80px; transform:translateY(0); }
    25%  { transform:translateY(-8px); }
    50%  { left:50%; transform:translateX(-50%) translateY(0); }
    75%  { transform:translateY(-5px); }
    100% { left:calc(100% + 80px); transform:translateY(0); }
}

.splash-data-overlay { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-bottom:24px; min-height:36px; }
.splash-data-item {
    opacity:0; transform:translateY(10px);
    animation:dataPopIn 0.4s ease forwards; animation-delay:var(--delay);
    padding:6px 14px; border-radius:20px;
    background:rgba(200,16,46,0.06); border:1px solid rgba(200,16,46,0.12);
    font-size:13px; font-weight:600; color:var(--primary);
}
@keyframes dataPopIn { to { opacity:1; transform:translateY(0); } }

.splash-logo-reveal { opacity:0; transform:scale(0.8); animation:logoReveal 0.6s ease forwards; animation-delay:1.6s; }
@keyframes logoReveal { to { opacity:1; transform:scale(1); } }

.splash-logo-mark {
    width:96px; height:96px;
    background:#FFFFFF; border:1px solid var(--border);
    border-radius:24px; display:inline-flex; align-items:center; justify-content:center;
    margin-bottom:16px; box-shadow:var(--shadow);
}
.splash-logo-mark.small { width:72px; height:72px; border-radius:20px; margin-bottom:20px; }

.splash-title {
    font-size:36px; font-weight:800;
    color:var(--accent);
    letter-spacing:-0.03em;
}

.splash-welcome {
    font-size:18px; font-weight:500; color:var(--text); line-height:1.6; margin-bottom:6px;
    opacity:0; animation:fadeSlideUp 0.6s ease 0.15s forwards;
}
.splash-welcome strong { color:var(--primary); font-weight:700; }
.splash-welcome-sub {
    font-size:15px; color:var(--primary); font-weight:600;
    opacity:0; animation:fadeSlideUp 0.5s ease 0.4s forwards;
}

.splash-dots { display:flex; gap:6px; justify-content:center; margin-top:24px; }
.splash-dots span {
    width:8px; height:8px; border-radius:50%; background:var(--primary); opacity:0.2;
    animation:dotPulse 1.2s ease infinite;
}
.splash-dots span:nth-child(2) { animation-delay:0.2s; }
.splash-dots span:nth-child(3) { animation-delay:0.4s; }
@keyframes dotPulse { 0%,80% { opacity:0.2; transform:scale(1); } 40% { opacity:1; transform:scale(1.3); } }

/* ================================================================
   LOGIN SCREEN
   ================================================================ */
.login-screen {
    position:fixed; inset:0;
    display:flex; flex-direction:column; align-items:center;
    justify-content:flex-start;
    background:#FFFFFF; z-index:9999; padding:40px 20px;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
}
.login-screen.fade-in { animation:loginFadeIn 0.5s ease forwards; }
@keyframes loginFadeIn { from{opacity:0} to{opacity:1} }

.login-card {
    background:#FFFFFF; border:none;
    border-radius:var(--radius-lg); padding:44px 36px 36px;
    max-width:380px; width:100%; text-align:center;
    box-shadow:0 8px 60px rgba(0,0,0,0.08), 0 1px 4px rgba(0,0,0,0.04);
}

.login-logo {
    width:88px; height:88px;
    background:var(--bg-body); border:none;
    border-radius:22px; display:inline-flex; align-items:center; justify-content:center;
    margin-bottom:20px; box-shadow:var(--shadow-sm);
}

.login-card h1 {
    font-size:32px; font-weight:800;
    color:var(--accent);
    margin-bottom:6px; letter-spacing:-0.03em;
}

.login-tagline { font-size:13px; color:var(--text-secondary); margin-bottom:4px; font-style:italic; font-weight:500; line-height:1.5; }
.login-sub { font-size:12px; color:var(--text-tertiary); margin-bottom:16px; }
.login-forgot-pw { text-align:center; margin-top:12px; font-size:12px; }
.login-forgot-pw a { color:var(--text-tertiary); text-decoration:none; }
.login-forgot-pw a:hover { color:var(--primary); text-decoration:underline; }

.lang-selector { display:flex; justify-content:center; gap:8px; margin-bottom:20px; }
.lang-btn {
    background:var(--bg-body); border:1.5px solid var(--border);
    border-radius:20px; padding:6px 16px; font-size:13px; font-weight:600;
    color:var(--text-secondary); cursor:pointer; transition:all var(--transition-fast);
}
.lang-btn.active { border-color:var(--primary); color:var(--primary); background:rgba(200,16,46,0.04); }

.login-card .form-group { text-align:left; margin-bottom:16px; }
.login-card .btn-primary { margin-top:4px; }
.app-version { margin-top:16px; font-size:11px; color:var(--text-tertiary); font-weight:500; letter-spacing:0.3px; }
.login-pw-hint { display:flex; align-items:flex-start; gap:8px; background:var(--bg-body); border:1px solid var(--border); padding:10px 14px; margin-bottom:12px; border-radius:12px; font-size:12.5px; color:var(--text-secondary); line-height:1.45; }
.login-pw-hint .hint-icon { font-size:16px; flex-shrink:0; margin-top:1px; }
.login-pw-hint .hint-text { flex:1; }
.stay-row { display:flex; align-items:center; justify-content:space-between; margin:10px 0 16px; }
.stay-label { font-size:13px; color:var(--text-secondary); font-weight:500; }
.stay-switch { display:flex; background:var(--bg-body); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.stay-opt { padding:6px 16px; font-size:13px; font-weight:600; cursor:pointer; user-select:none; transition:all 0.2s; color:var(--text-secondary); }
.stay-opt.active { background:var(--primary); color:#fff; }
.app-version-footer { display:flex; justify-content:center; align-items:center; gap:16px; padding:16px 0 24px; font-size:11px; color:var(--text-tertiary); font-weight:500; letter-spacing:0.3px; }
.faq-link { cursor:pointer; color:var(--text-tertiary); font-size:11px; font-weight:500; letter-spacing:0.3px; transition:color 0.2s; }
.faq-link:hover { color:var(--primary); }
.faq-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.25); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); z-index:2000; justify-content:center; align-items:center; padding:20px; }
.faq-overlay.show { display:flex; }
.faq-panel { background:#FFFFFF; border:none; border-radius:20px; max-width:520px; width:100%; max-height:80vh; overflow-y:auto; padding:28px 24px; box-shadow:0 20px 60px rgba(0,0,0,0.12); }
.faq-panel h2 { margin:0 0 20px; font-size:18px; color:var(--text); font-weight:700; }
.faq-item { border-bottom:1px solid var(--border); }
.faq-item:last-child { border-bottom:none; }
.faq-question { display:flex; justify-content:space-between; align-items:center; padding:14px 0; cursor:pointer; font-size:14px; font-weight:600; color:var(--text); transition:color 0.2s; }
.faq-question:hover { color:var(--primary); }
.faq-question .faq-arrow { font-size:12px; color:var(--text-tertiary); transition:transform 0.25s; }
.faq-item.open .faq-arrow { transform:rotate(180deg); }
.faq-answer { display:none; padding:0 0 14px; font-size:13px; color:var(--text-secondary); line-height:1.55; }
.faq-item.open .faq-answer { display:block; }
.faq-close { display:block; margin:20px auto 0; background:none; border:1px solid var(--border); color:var(--text-secondary); padding:8px 28px; border-radius:12px; cursor:pointer; font-size:13px; transition:all 0.2s; }
.faq-close:hover { border-color:var(--primary); color:var(--primary); }

.saved-users { margin-top:20px; }
.saved-users-title {
    font-size:10px; font-weight:700; color:var(--text-tertiary);
    text-transform:uppercase; letter-spacing:0.8px; margin-bottom:8px;
}
.user-chip {
    display:inline-flex; align-items:center; gap:6px;
    padding:8px 16px; margin:4px;
    border:1.5px solid var(--border); border-radius:20px;
    background:#FFFFFF; color:var(--text-secondary);
    font-size:13px; font-weight:600; cursor:pointer; transition:all var(--transition-fast);
}
.user-chip:hover { border-color:var(--primary); color:var(--primary); background:rgba(200,16,46,0.02); }
.user-chip-icon {
    width:22px; height:22px; border-radius:50%;
    background:var(--primary);
    display:flex; align-items:center; justify-content:center;
    font-size:11px; font-weight:800; color:#fff;
}

/* ================================================================
   APP CONTAINER & LAYOUT
   ================================================================ */
.app-container {
    max-width:600px;
    margin:0 auto;
    padding:0 16px 100px;
}

/* ================================================================
   HEADER
   ================================================================ */
.app-header {
    padding:16px 0 4px;
    display:flex; align-items:center; justify-content:space-between;
    gap:8px;
}
.app-header .greeting-wave {
    display:inline-block; animation:wave 1.8s ease-in-out 0.5s 1;
    transform-origin:70% 70%;
}
@keyframes wave {
    0%,100% { transform:rotate(0); }
    15% { transform:rotate(14deg); }
    30% { transform:rotate(-8deg); }
    45% { transform:rotate(14deg); }
    60% { transform:rotate(-4deg); }
    75% { transform:rotate(10deg); }
}

.logo-row { display:flex; align-items:center; gap:12px; min-width:0; flex:1; overflow:hidden; }

.logo-icon {
    width:40px; height:40px;
    background:#FFFFFF;
    border:none;
    border-radius:12px;
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
    box-shadow:var(--shadow-sm);
}

.app-header h1 {
    font-size:20px; font-weight:800; letter-spacing:-0.03em;
    color:var(--accent);
    white-space:nowrap;
}

.app-header .subtitle {
    font-size:12px; color:var(--primary); font-weight:600;
    letter-spacing:0.2px;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

.btn-logout {
    width:38px; height:38px;
    display:flex; align-items:center; justify-content:center;
    border:none; border-radius:var(--radius-sm);
    background:var(--bg-card); color:var(--text-secondary);
    cursor:pointer; transition:all var(--transition-fast);
    flex-shrink:0;
    box-shadow:var(--shadow-sm);
}
.btn-logout:hover {
    color:var(--danger); background:rgba(255,59,48,0.06);
}
#btn-logout {
    color:var(--danger);
}

@media (max-width:400px) {
    .btn-logout { width:32px; height:32px; }
    .btn-logout svg { width:15px; height:15px; }
    .logo-row { gap:8px; }
    .logo-icon { width:34px; height:34px; }
    .logo-icon svg { width:24px; height:24px; }
    .app-header h1 { font-size:17px; }
}

/* ================================================================
   NAVIGATION Ã¢â‚¬â€ Bottom Tab Bar (WhatsApp iOS style)
   ================================================================ */
.tab-nav {
    display:grid; grid-template-columns:repeat(5,1fr);
    gap:0;
    padding:6px 16px calc(14px + env(safe-area-inset-bottom, 0px));
    position:fixed; bottom:0; left:0; right:0;
    z-index:900;
    background:#FFFFFF;
    border-top:1px solid rgba(0,0,0,0.06);
    box-shadow:0 -2px 12px rgba(0,0,0,0.04);
}

.tab-btn {
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
    padding:6px 0 6px;
    border:none;
    border-radius:0;
    background:transparent;
    color:var(--text-secondary);
    font-family:inherit; font-size:11px; font-weight:600; cursor:pointer;
    transition:color 0.2s ease, transform 0.15s ease;
    position:relative;
    box-shadow:none;
    -webkit-tap-highlight-color:transparent;
    min-height:52px;
    width:100%;
    touch-action:manipulation;
    user-select:none; -webkit-user-select:none;
}
.tab-btn, .tab-btn * { cursor:pointer; }
.tab-btn { position:relative; }
.tab-btn:hover {
    color:var(--text-secondary);
}
.tab-btn:active {
    transform:scale(0.92);
}
.tab-btn.active {
    color:var(--text);
    font-weight:600;
}
.tab-btn.active::after {
    content:''; position:absolute; top:0; left:50%; transform:translateX(-50%);
    width:24px; height:3px; border-radius:0 0 3px 3px;
    background:var(--primary);
}
.tab-btn.active::before { display:none; }

/* Icon wrapper Ã¢â‚¬â€ active tab gets a subtle pill behind the icon */
.tab-icon {
    width:auto; height:auto;
    border-radius:14px;
    padding:5px 16px;
    background:transparent;
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
    transition:background 0.25s ease;
}
.tab-icon .tab-svg { width:24px; height:24px; }

/* Colored icons */
.tab-icon--training { color:#C8102E; }
.tab-icon--analytics { color:#007AFF; }
.tab-icon--diary { color:#34C759; }
.tab-icon--calendar { color:#FF9500; }
.tab-icon--community { color:#AF52DE; }
.tab-icon--coach-overview { color:#007AFF; }
.tab-icon--coach-plan { color:#FF9500; }
.tab-icon--coach-diary { color:#FF3B30; }

/* Active tab: light pill behind icon */
.tab-btn.active .tab-icon {
    background:rgba(200,16,46,0.08);
}
.tab-btn.active .tab-icon .tab-svg {
    transform:scale(1.08);
    transition:transform 0.2s ease;
}

/* Tab notification badge */
.tab-badge {
    display:none;
    position:absolute;
    top:4px;
    right:8px;
    width:9px;
    height:9px;
    border-radius:50%;
    background:#FF3B30;
    box-shadow:0 0 0 2px var(--bg);
    pointer-events:none;
}
.tab-badge.visible { display:block; }

.tab-svg { width:18px; height:18px; flex-shrink:0; }

.tab-content { display:none; }
.tab-content.active { display:block; margin-top:12px; }

/* Card subtitle for Training card */
.card-subtitle {
    font-size:12px;
    font-weight:500;
    color:var(--text-tertiary);
    margin-top:2px;
    letter-spacing:0.01em;
}

/* ================================================================
   CUSTOM SELECT DROPDOWN (replaces native <select>)
   ================================================================ */
.custom-select-wrap {
    position:relative;
}
.custom-select-wrap > select { display:none; }

.custom-select-trigger {
    display:flex; align-items:center; justify-content:space-between;
    width:100%;
    padding:9px 12px;
    background:var(--bg-input);
    border:1.5px solid rgba(0,0,0,0.10);
    border-radius:10px;
    font-family:inherit; font-size:13px; font-weight:500;
    color:var(--text);
    cursor:pointer;
    transition:all 0.2s ease;
    -webkit-tap-highlight-color:transparent;
    box-shadow:0 1px 2px rgba(0,0,0,0.04);
}
.custom-select-trigger:hover {
    border-color:var(--text-tertiary);
    background:#FAFAFA;
}
.custom-select-trigger.open {
    border-color:var(--text-tertiary);
    box-shadow:0 0 0 3px rgba(0,0,0,0.05);
    border-radius:10px 10px 0 0;
}
.custom-select-trigger.placeholder { color:var(--text-tertiary); }

.custom-select-arrow {
    width:16px; height:16px;
    flex-shrink:0;
    color:var(--text-tertiary);
    transition:transform 0.25s ease;
}
.custom-select-trigger.open .custom-select-arrow { transform:rotate(180deg); }

.custom-select-dropdown {
    position:fixed;
    background:#FFFFFF;
    border:1.5px solid var(--border);
    border-radius:0 0 10px 10px;
    box-shadow:0 6px 24px rgba(0,0,0,0.12);
    z-index:9999;
    max-height:40vh;
    overflow-y:auto;
    display:none;
    -webkit-overflow-scrolling:touch;
}
.custom-select-dropdown.show { display:block; }

.custom-select-option {
    padding:8px 12px;
    font-size:13px;
    font-weight:400;
    color:var(--text);
    cursor:pointer;
    transition:background 0.15s ease;
    border-bottom:1px solid rgba(0,0,0,0.03);
    line-height:1.3;
}
.custom-select-option:last-child { border-bottom:none; }
.custom-select-option:hover { background:rgba(0,0,0,0.035); }
.custom-select-option:active { background:rgba(0,0,0,0.06); }
.custom-select-option.selected {
    background:rgba(0,0,0,0.04);
    color:var(--text);
    font-weight:600;
}
/* Compact variant inside headers */
.history-header .custom-select-wrap { width:auto; min-width:140px; }
.history-header .custom-select-trigger { padding:6px 10px; font-size:12px; font-weight:600; border-radius:8px; }
.history-header .custom-select-trigger.open { border-radius:8px 8px 0 0; }
.history-header .custom-select-dropdown { border-radius:0 0 8px 8px; }
.history-header .custom-select-option { font-size:12px; padding:6px 10px; }

/* ================================================================
   CUSTOM DATE PICKER (Airbnb-style)
   ================================================================ */
.custom-date-wrap { position:relative; }
.custom-date-wrap > input[type="date"] { position:absolute; opacity:0; pointer-events:none; width:0; height:0; }
.custom-date-trigger {
    display:flex; align-items:center; gap:10px;
    width:100%;
    padding:11px 14px;
    background:var(--bg-input);
    border:1.5px solid rgba(0,0,0,0.10);
    border-radius:var(--radius-sm);
    font-family:'Inter',sans-serif; font-size:12px; font-weight:500;
    color:var(--text);
    cursor:pointer;
    transition:border-color var(--transition-fast), box-shadow var(--transition-fast);
    -webkit-tap-highlight-color:transparent;
    box-shadow:0 1px 2px rgba(0,0,0,0.04);
}
.custom-date-trigger:hover { border-color:var(--primary); background:#FAFAFA; }
.custom-date-trigger.open { border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-glow); }
.custom-date-trigger.placeholder .cdt-text { color:var(--text-tertiary); }
.cdt-icon { width:18px; height:18px; color:var(--text-tertiary); flex-shrink:0; }
.cdt-text { flex:1; }

.date-picker-overlay {
    position:fixed; inset:0; z-index:2000;
    background:rgba(0,0,0,0.4); backdrop-filter:blur(4px);
    display:flex; align-items:center; justify-content:center;
    opacity:0; visibility:hidden;
    transition:opacity 0.25s ease, visibility 0.25s ease;
}
.date-picker-overlay.show { opacity:1; visibility:visible; }

.date-picker-modal {
    background:#FFFFFF; border-radius:20px;
    box-shadow:0 20px 60px rgba(0,0,0,0.20);
    width:min(340px, 92vw);
    padding:0;
    transform:translateY(20px) scale(0.96);
    transition:transform 0.3s cubic-bezier(0.34,1.56,0.64,1);
    overflow:hidden;
}
.date-picker-overlay.show .date-picker-modal { transform:translateY(0) scale(1); }

.dp-header {
    display:flex; align-items:center; justify-content:space-between;
    padding:20px 20px 12px;
}
.dp-month-label {
    font-size:16px; font-weight:700; color:var(--text);
    user-select:none;
}
.dp-nav {
    display:flex; gap:4px;
}
.dp-nav-btn {
    width:36px; height:36px;
    border:none; border-radius:50%;
    background:transparent;
    color:var(--text);
    cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:background 0.15s;
}
.dp-nav-btn:hover { background:rgba(0,0,0,0.06); }
.dp-nav-btn:active { background:rgba(0,0,0,0.10); }
.dp-nav-btn svg { width:20px; height:20px; }

.dp-weekdays {
    display:grid; grid-template-columns:repeat(7,1fr);
    padding:0 16px; gap:0;
}
.dp-weekday {
    text-align:center; font-size:11px; font-weight:600;
    color:var(--text-tertiary); padding:8px 0;
    text-transform:uppercase; letter-spacing:0.5px;
}

.dp-days {
    display:grid; grid-template-columns:repeat(7,1fr);
    padding:4px 16px 16px; gap:2px;
}
.dp-day {
    aspect-ratio:1; display:flex; align-items:center; justify-content:center;
    font-size:14px; font-weight:500; color:var(--text);
    border-radius:50%; cursor:pointer;
    transition:all 0.15s ease;
    border:none; background:transparent;
    font-family:'Inter',sans-serif;
    -webkit-tap-highlight-color:transparent;
}
.dp-day:hover { background:rgba(0,0,0,0.06); }
.dp-day:active { transform:scale(0.92); background:var(--primary); color:#FFFFFF; }
.dp-day.other-month { color:var(--text-tertiary); opacity:0.4; }
.dp-day.today { color:var(--primary); font-weight:700; }
.dp-day.selected {
    background:var(--primary); color:#FFFFFF; font-weight:700;
    box-shadow:0 2px 8px rgba(200,16,46,0.3);
}
.dp-day.selected:hover { background:var(--primary); color:#FFFFFF; }
.dp-day.selected:active { background:var(--primary-dark); color:#FFFFFF; }

.dp-footer {
    display:flex; justify-content:space-between; align-items:center;
    padding:12px 20px 16px;
    border-top:1px solid rgba(0,0,0,0.06);
}
.dp-today-btn {
    font-size:13px; font-weight:600; color:var(--primary);
    background:none; border:none; cursor:pointer;
    padding:6px 12px; border-radius:8px;
    transition:background 0.15s;
}
.dp-today-btn:hover { background:rgba(200,16,46,0.06); }
.dp-confirm-btn {
    font-size:13px; font-weight:600; color:#FFFFFF;
    background:var(--primary); border:none; cursor:pointer;
    padding:8px 20px; border-radius:10px;
    transition:background 0.15s, transform 0.1s;
}
.dp-confirm-btn:hover { background:var(--primary-hover); }
.dp-confirm-btn:active { transform:scale(0.96); }

/* ================================================================
   CUSTOM TIME PICKER (Scroll-wheel style)
   ================================================================ */
.custom-time-wrap { position:relative; }
.custom-time-wrap > input[type="time"] { position:absolute; opacity:0; pointer-events:none; width:0; height:0; }
.custom-time-trigger {
    display:flex; align-items:center; gap:10px;
    width:100%;
    padding:11px 14px;
    background:var(--bg-input);
    border:1.5px solid rgba(0,0,0,0.10);
    border-radius:var(--radius-sm);
    font-family:'Inter',sans-serif; font-size:12px; font-weight:500;
    color:var(--text);
    cursor:pointer;
    transition:border-color var(--transition-fast), box-shadow var(--transition-fast);
    -webkit-tap-highlight-color:transparent;
    box-shadow:0 1px 2px rgba(0,0,0,0.04);
}
.custom-time-trigger:hover { border-color:var(--primary); background:#FAFAFA; }
.custom-time-trigger.open { border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-glow); }
.custom-time-trigger.placeholder .ctt-text { color:var(--text-tertiary); }
.ctt-icon { width:18px; height:18px; color:var(--text-tertiary); flex-shrink:0; }
.ctt-text { flex:1; }

.time-picker-overlay {
    position:fixed; inset:0; z-index:2000;
    background:rgba(0,0,0,0.4); backdrop-filter:blur(4px);
    display:flex; align-items:center; justify-content:center;
    opacity:0; visibility:hidden;
    transition:opacity 0.25s ease, visibility 0.25s ease;
}
.time-picker-overlay.show { opacity:1; visibility:visible; }

.time-picker-modal {
    background:#FFFFFF; border-radius:20px;
    box-shadow:0 20px 60px rgba(0,0,0,0.20);
    width:min(300px, 80vw);
    padding:0;
    transform:translateY(20px) scale(0.96);
    transition:transform 0.3s cubic-bezier(0.34,1.56,0.64,1);
    overflow:hidden;
}
.time-picker-overlay.show .time-picker-modal { transform:translateY(0) scale(1); }

.tp-header {
    padding:20px 20px 8px;
    text-align:center;
}
.tp-title {
    font-size:16px; font-weight:700; color:var(--text);
}

.tp-columns {
    display:flex; align-items:center; justify-content:center;
    padding:12px 20px 20px; gap:0;
}
.tp-col {
    width:80px; height:200px;
    overflow-y:auto;
    scroll-snap-type:y mandatory;
    -webkit-overflow-scrolling:touch;
    position:relative;
}
.tp-col::-webkit-scrollbar { display:none; }
.tp-col { scrollbar-width:none; }

.tp-spacer { height:80px; }

.tp-cell {
    height:40px; display:flex; align-items:center; justify-content:center;
    font-size:20px; font-weight:500; color:var(--text-tertiary);
    scroll-snap-align:center;
    transition:all 0.15s ease;
    cursor:pointer;
    user-select:none;
    font-family:'Inter',sans-serif;
    font-variant-numeric:tabular-nums;
}
.tp-cell.active {
    color:var(--text); font-weight:700; font-size:24px;
}

.tp-separator {
    font-size:28px; font-weight:700; color:var(--text);
    padding:0 4px; align-self:center;
    margin-top:-4px;
}

.tp-highlight {
    position:absolute;
    left:4px; right:4px;
    top:50%; transform:translateY(-50%);
    height:40px;
    background:rgba(200,16,46,0.06);
    border-radius:10px;
    pointer-events:none;
}

.tp-footer {
    display:flex; justify-content:space-between; align-items:center;
    padding:12px 20px 16px;
    border-top:1px solid rgba(0,0,0,0.06);
}
.tp-now-btn {
    font-size:13px; font-weight:600; color:var(--primary);
    background:none; border:none; cursor:pointer;
    padding:6px 12px; border-radius:8px;
    transition:background 0.15s;
}
.tp-now-btn:hover { background:rgba(200,16,46,0.06); }
.tp-confirm-btn {
    font-size:13px; font-weight:600; color:#FFFFFF;
    background:var(--primary); border:none; cursor:pointer;
    padding:8px 20px; border-radius:10px;
    transition:background 0.15s, transform 0.1s;
}
.tp-confirm-btn:hover { background:var(--primary-hover); }
.tp-confirm-btn:active { transform:scale(0.96); }

/* ================================================================
   CARDS
   ================================================================ */
.card {
    background:var(--bg-card);
    border:1px solid rgba(0,0,0,0.06);
    border-radius:18px;
    padding:22px;
    margin-bottom:12px;
    transition:box-shadow 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
    box-shadow:0 1px 3px rgba(0,0,0,0.04), 0 4px 16px rgba(0,0,0,0.04);
}
.card:hover { box-shadow:0 4px 20px rgba(0,0,0,0.08); border-color:rgba(0,0,0,0.08); }

.glass-card {
    background:rgba(255,255,255,0.85);
    backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
    box-shadow:0 2px 8px rgba(0,0,0,0.04), 0 8px 32px rgba(0,0,0,0.05);
    border:1px solid rgba(255,255,255,0.6);
}

.card-header {
    display:flex; align-items:flex-start; justify-content:space-between;
    margin-bottom:18px;
}
.card-header h2 { font-size:17px; font-weight:800; letter-spacing:-0.03em; color:var(--text); }
.card h2 { font-size:17px; font-weight:800; margin-bottom:14px; letter-spacing:-0.03em; }
.card h3 { font-size:13px; font-weight:600; color:var(--text-secondary); margin-bottom:4px; }

.card-badge {
    font-size:9px; font-weight:800; letter-spacing:1.2px; padding:4px 10px;
    border-radius:8px; background:rgba(200,16,46,0.08); color:var(--primary);
    text-transform:uppercase;
    margin-top:2px;
}

/* ================================================================
   FORM ELEMENTS
   ================================================================ */
.form-row { display:flex; gap:10px; }
.form-row .form-group { flex:1; }
.form-group { margin-bottom:14px; }

.form-group label, #times-container > label {
    display:block; font-size:11px; font-weight:700; color:var(--text);
    text-transform:uppercase; letter-spacing:0.8px; margin-bottom:6px;
}
.label-hint { font-weight:500; text-transform:none; letter-spacing:0; opacity:0.7; }

input, select, textarea {
    width:100%; padding:11px 14px;
    border:1.5px solid rgba(0,0,0,0.10); border-radius:var(--radius-sm);
    background:var(--bg-input); color:var(--text);
    font-family:'Inter',sans-serif; font-size:14px;
    transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background 0.2s;
    -webkit-appearance:none; appearance:none;
    box-shadow:0 1px 2px rgba(0,0,0,0.04);
}
input:focus, select:focus, textarea:focus {
    outline:none; border-color:var(--primary);
    box-shadow:0 0 0 3px var(--primary-glow);
    background:#FFFFFF;
}
input::placeholder, textarea::placeholder { color:var(--text-tertiary); opacity:0.6; }

select {
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7' viewBox='0 0 12 7'%3E%3Cpath fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:right 14px center; background-size:12px 7px;
    background-color:var(--bg-input);
    padding:12px 40px 12px 14px; cursor:pointer;
    font-weight:500;
    transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color 0.2s;
}
select:hover {
    border-color:var(--primary);
    background-color:#FAFAFA;
}
select:focus {
    border-color:var(--primary);
    box-shadow:0 0 0 3px var(--primary-glow);
    background-color:#FFFFFF;
}
select option {
    padding:10px 14px;
    font-size:14px;
    background:#FFFFFF;
    color:var(--text);
}
textarea { resize:vertical; min-height:48px; }

/* ================================================================
   TIME / DISTANCE ENTRIES
   ================================================================ */
.times-list, .distance-list { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.time-entry { display:flex; align-items:center; gap:8px; }
.sprint-distance-group { margin-bottom:14px; }
.sprint-distance-group > label { font-weight:600; font-size:13px; }

.tempo-ind-block { border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; margin-bottom:10px; background:var(--bg-input); }
.tempo-ind-block-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.tempo-ind-block-label { font-weight:600; font-size:13px; color:var(--text); }
.btn-remove-block { background:none; border:none; color:var(--danger); font-size:18px; cursor:pointer; padding:2px 6px; line-height:1; }
.btn-remove-block:hover { opacity:0.7; }
.type-badge.tempo-ind { background:rgba(52,199,89,0.10); color:#34C759; }

.shoe-toggle { display:flex; gap:6px; }
.shoe-btn {
    flex:1; padding:8px 12px; border:1.5px solid var(--border); border-radius:var(--radius-sm);
    background:var(--bg-card); color:var(--text-secondary); font-size:13px; font-weight:500;
    cursor:pointer; transition:all var(--transition-fast); text-align:center;
}
.shoe-btn.active { background:var(--accent); color:#fff; border-color:var(--accent); }
.shoe-btn:hover:not(.active) { border-color:var(--accent); color:var(--accent); }

.wind-btn {
    padding:6px 12px; border:1.5px solid var(--border); border-radius:var(--radius-sm);
    background:var(--bg-card); color:var(--text-secondary); font-size:12px; font-weight:500;
    cursor:pointer; transition:all var(--transition-fast);
}
.wind-btn.active { background:var(--accent); color:#fff; border-color:var(--accent); }
.wind-btn:hover:not(.active) { border-color:var(--accent); color:var(--accent); }
.meta-wind { margin-left:8px; }

.analytics-shoe-toggle { display:flex; gap:0; margin-top:6px; margin-bottom:2px; background:var(--bg-input); border-radius:var(--radius-sm); border:1px solid var(--border); overflow:hidden; }
.analytics-shoe-btn {
    flex:1; padding:7px 10px; border:none; border-right:1px solid var(--border);
    background:transparent; color:var(--text-secondary); font-size:12px; font-weight:600;
    cursor:pointer; transition:all var(--transition-fast); text-align:center; white-space:nowrap;
}
.analytics-shoe-btn:last-child { border-right:none; }
.analytics-shoe-btn.active { background:var(--accent); color:#fff; }
.analytics-shoe-btn:hover:not(.active) { background:var(--bg-card); color:var(--accent); }

/* Analytics mode toggle (Training / WettkÃƒÂ¤mpfe) */
.analytics-mode-toggle {
    display:flex; align-items:center; justify-content:center; gap:10px;
    margin-bottom:14px; padding:8px 0;
}
.analytics-mode-label {
    font-size:13px; font-weight:600; color:var(--text-muted); transition:color 0.2s;
    cursor:default; user-select:none;
}
.analytics-mode-label.active { color:var(--text); font-weight:700; }
.analytics-mode-switch {
    position:relative; display:inline-block; width:48px; height:26px;
}
.analytics-mode-switch input { opacity:0; width:0; height:0; }
.analytics-mode-slider {
    position:absolute; inset:0; background:var(--bg-input); border:1.5px solid var(--border);
    border-radius:13px; cursor:pointer; transition:all 0.25s ease;
}
.analytics-mode-slider::before {
    content:''; position:absolute; left:2px; top:50%; transform:translateY(-50%);
    width:20px; height:20px; border-radius:50%; background:var(--primary);
    transition:all 0.25s ease; box-shadow:0 1px 3px rgba(0,0,0,0.15);
}
.analytics-mode-switch input:checked + .analytics-mode-slider { border-color:#E040FB; }
.analytics-mode-switch input:checked + .analytics-mode-slider::before {
    left:calc(100% - 22px); background:#E040FB;
}

.time-index {
    width:26px; height:26px; display:flex; align-items:center; justify-content:center;
    border-radius:50%; background:var(--bg-input); color:var(--text-tertiary);
    font-size:11px; font-weight:700; flex-shrink:0; border:1px solid var(--border);
}
.time-entry .time-input, .time-entry .distance-input { flex:1; }

.btn-remove-time {
    width:36px; height:36px; border:1px solid var(--border); border-radius:var(--radius-sm);
    background:transparent; color:var(--text-tertiary); font-size:18px;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    transition:all var(--transition-fast); flex-shrink:0;
}
.btn-remove-time:hover:not(:disabled) {
    background:rgba(255,59,48,0.06); color:var(--danger); border-color:rgba(255,59,48,0.2);
}
.btn-remove-time:disabled { opacity:0.15; cursor:not-allowed; }

/* ================================================================
   STARTS Ã¢â‚¬â€ paired time + distance entries
   ================================================================ */
#starts-container { margin-bottom:14px; }
.starts-header {
    display:flex; align-items:center; gap:8px; margin-bottom:4px;
}
.starts-header label { margin-bottom:0; font-weight:600; font-size:13px; }
.optional-pill {
    font-size:10px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase;
    padding:2px 8px; border-radius:999px;
    background:rgba(142,142,147,0.14); color:var(--text-tertiary);
    border:1px solid var(--border);
}
.starts-hint {
    margin:0 0 10px; font-size:12px; color:var(--text-tertiary); line-height:1.4;
}
.starts-list { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }

.starts-col-headers {
    display:grid;
    grid-template-columns:26px 1fr 1fr 36px;
    gap:8px;
    align-items:center;
    margin-bottom:4px;
    padding:0 2px;
}
.starts-col-label {
    font-size:11px; font-weight:700; letter-spacing:0.04em;
    color:var(--text-tertiary); text-transform:uppercase; text-align:left;
    padding-left:2px;
}
.starts-col-spacer, .starts-col-spacer-btn { display:block; }

.start-pair-entry {
    display:grid;
    grid-template-columns:26px 1fr 1fr 36px;
    gap:8px;
    align-items:center;
}

.start-input-wrap {
    position:relative;
    display:flex;
    align-items:center;
    width:100%;
}
.start-input-wrap input {
    width:100%;
    padding-right:26px;
}
.start-input-suffix {
    position:absolute;
    right:10px;
    font-size:12px;
    font-weight:600;
    color:var(--text-tertiary);
    pointer-events:none;
}

.btn-remove-start {
    width:36px; height:36px; border:1px solid var(--border); border-radius:var(--radius-sm);
    background:transparent; color:var(--text-tertiary); font-size:18px;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    transition:all var(--transition-fast); flex-shrink:0;
}
.btn-remove-start:hover:not(:disabled) {
    background:rgba(255,59,48,0.06); color:var(--danger); border-color:rgba(255,59,48,0.2);
}
.btn-remove-start:disabled { opacity:0.15; cursor:not-allowed; }

/* ================================================================
   BUTTONS
   ================================================================ */
.btn-primary {
    width:100%; display:flex; align-items:center; justify-content:center; gap:8px;
    padding:13px; border:none; border-radius:var(--radius-sm);
    background:var(--accent);
    color:#fff; font-family:'Inter',sans-serif; font-size:15px; font-weight:700;
    cursor:pointer; transition:all var(--transition); margin-top:6px;
    letter-spacing:-0.01em;
}
.btn-primary:hover {
    box-shadow:0 4px 20px rgba(29,29,31,0.18);
    transform:translateY(-1px);
}
.btn-primary:active { transform:translateY(0); opacity:0.9; }

.btn-ghost {
    display:inline-flex; align-items:center; gap:6px;
    padding:8px 14px; border:1.5px dashed var(--border); border-radius:var(--radius-sm);
    background:transparent; color:var(--primary);
    font-family:'Inter',sans-serif; font-size:12px; font-weight:600;
    cursor:pointer; transition:all var(--transition-fast); margin-bottom:14px;
}
.btn-ghost:hover { border-color:var(--primary); background:rgba(200,16,46,0.03); }

/* ================================================================
   TOGGLE BUTTONS
   ================================================================ */
.toggle-row { display:flex; gap:6px; }
.toggle-btn {
    flex:1; padding:9px 14px; border:1.5px solid var(--border); border-radius:var(--radius-sm);
    background:transparent; color:var(--text-secondary);
    font-family:'Inter',sans-serif; font-size:13px; font-weight:600;
    cursor:pointer; transition:all var(--transition-fast);
}
.toggle-btn.active {
    border-color:var(--primary); background:rgba(200,16,46,0.05); color:var(--primary);
}
.toggle-btn:hover:not(.active) {
    border-color:var(--border-light); background:rgba(0,0,0,0.01);
}

.btn-danger {
    padding:10px 22px; border:none; border-radius:var(--radius-sm);
    background:var(--danger); color:#fff; font-family:'Inter',sans-serif;
    font-size:14px; font-weight:600; cursor:pointer; transition:background var(--transition-fast);
}
.btn-danger:hover { background:var(--danger-dark); }

/* ================================================================
   FILTER
   ================================================================ */
.filter-select {
    width:auto; padding:8px 36px 8px 12px; font-size:12px; font-weight:600;
    border-radius:10px; border:1.5px solid rgba(0,0,0,0.10);
    background-color:var(--bg-card); box-shadow:var(--shadow-sm);
    transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color 0.2s;
}
.filter-select:hover { border-color:var(--primary); background-color:#FAFAFA; }
.filter-select:focus { background-color:#FFFFFF; border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-glow); }

/* ================================================================
   HISTORY
   ================================================================ */
.history-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
.history-header h2 { margin-bottom:0; }
.training-list { display:flex; flex-direction:column; gap:8px; }

/* ================================================================
   EMPTY STATE — vereinheitlicht (Icon · Titel · Sub · CTA)
   ================================================================ */
.empty-state {
    text-align:center; padding:40px 20px;
    display:flex; flex-direction:column; align-items:center; gap:10px;
}
.empty-state svg { color:var(--text-tertiary); opacity:0.4; }
.empty-state .empty-title {
    color:var(--text); font-size:15px; font-weight:600;
    margin:6px 0 0; letter-spacing:-0.01em;
}
.empty-state .empty-sub {
    color:var(--text-tertiary); font-size:13px; line-height:1.5;
    max-width:320px; margin:0;
}
.empty-state p { color:var(--text-tertiary); font-size:13px; margin:0; }
.empty-state .empty-cta {
    margin-top:8px;
    display:inline-flex; align-items:center; gap:6px;
    padding:9px 18px; border-radius:999px;
    background:var(--primary); color:#fff;
    font-size:13px; font-weight:600;
    border:0; cursor:pointer;
    box-shadow:0 4px 14px var(--primary-glow);
    transition:transform .15s ease, box-shadow .2s ease;
}
.empty-state .empty-cta:hover { transform:translateY(-1px); box-shadow:0 6px 20px rgba(200,16,46,0.22); }
.empty-state .empty-cta:active { transform:translateY(0); }

/* ================================================================
   SKELETON LOADER — verhindert Layout-Sprünge
   ================================================================ */
.skeleton {
    position:relative; overflow:hidden;
    background:var(--bg-input, #F0F0F5);
    border-radius:var(--radius-sm);
}
.skeleton::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.55) 50%, transparent 100%);
    animation:skeletonShimmer 1.4s ease-in-out infinite;
    transform:translateX(-100%);
}
.skeleton-line { height:12px; border-radius:6px; margin:8px 0; }
.skeleton-line.lg { height:16px; }
.skeleton-line.sm { height:10px; }
.skeleton-line.w-30 { width:30%; }
.skeleton-line.w-50 { width:50%; }
.skeleton-line.w-70 { width:70%; }
.skeleton-line.w-90 { width:90%; }
.skeleton-card {
    background:var(--bg-card);
    border:1px solid var(--border);
    border-radius:var(--radius);
    padding:16px;
    box-shadow:var(--shadow-sm);
    margin-bottom:8px;
}
.skeleton-block { width:100%; height:120px; border-radius:var(--radius); }
.loading-hint {
    text-align:center; color:var(--text-tertiary);
    font-size:13px; padding:18px 0;
}
@keyframes skeletonShimmer {
    0% { transform:translateX(-100%); }
    100% { transform:translateX(100%); }
}
@media (prefers-reduced-motion: reduce) {
    .skeleton::after { animation:none; }
}

/* ================================================================
   TRAINING ENTRY CARDS
   ================================================================ */
.training-entry {
    background:var(--bg-card);
    border:1px solid var(--border);
    border-left:4px solid var(--entry-accent, var(--border));
    border-radius:var(--radius);
    padding:14px 16px 14px 14px;
    transition:all var(--transition-fast);
    overflow:hidden;
    box-shadow:var(--shadow-sm);
}
.training-entry:hover { box-shadow:var(--shadow); border-color:var(--border-light); border-left-color:var(--entry-accent, var(--border-light)); }
.training-entry[data-type='Sprint (50m)'] { --entry-accent:#C8102E; }
.training-entry[data-type='Sprint (20m/30m/50m/80m)'] { --entry-accent:#C8102E; }
.training-entry[data-type='Tempolauf (120m)'] { --entry-accent:#007AFF; }
.training-entry[data-type='Tempolauf (150m)'] { --entry-accent:#FBBF24; }
.training-entry[data-type='Tempolauf (Individuell)'] { --entry-accent:#2DD4BF; }
.training-entry[data-type^='Tempolauf (Ind:'] { --entry-accent:#2DD4BF; }
.training-entry[data-type='80m LÃƒÂ¤ufe'] { --entry-accent:#818CF8; }
.training-entry[data-type='Kraft'] { --entry-accent:#AF52DE; }
.training-entry[data-type='Joggen (5km)'] { --entry-accent:#34C759; }
.training-entry[data-type='Pausetag'] { --entry-accent:#FF9500; }
.training-entry[data-type='Regeneration'] { --entry-accent:#06B6D4; }
.training-entry[data-type='Technik'] { --entry-accent:#FB923C; }
.training-entry[data-type='Sprung'] { --entry-accent:#4CAF50; }

.entry-header { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.entry-meta { display:flex; flex-direction:column; gap:1px; flex-shrink:0; }
.entry-date { font-size:14px; font-weight:600; white-space:nowrap; }
.entry-time-label { font-size:11px; color:var(--text-tertiary); font-weight:500; }

.entry-badges { display:flex; gap:4px 5px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }

@media (max-width:420px) {
    .entry-header { flex-direction:column; gap:6px; }
    .entry-badges { justify-content:flex-start; }
}

.type-badge {
    padding:4px 10px; border-radius:20px; font-size:11px; font-weight:700;
    letter-spacing:0.3px; white-space:nowrap;
}
.type-badge.sprint { background:rgba(200,16,46,0.08); color:var(--primary); }
.type-badge.tempo120 { background:rgba(0,122,255,0.08); color:var(--blue); }
.type-badge.tempo150 { background:rgba(255,149,0,0.08); color:var(--warning); }
.type-badge.kraft { background:rgba(175,82,222,0.08); color:#AF52DE; }
.type-badge.joggen { background:rgba(52,199,89,0.08); color:#34C759; }
.type-badge.pausetag { background:rgba(255,149,0,0.08); color:#FF9500; }
.type-badge.regen { background:rgba(6,182,212,0.08); color:#06B6D4; }
.type-badge.technik { background:rgba(255,149,0,0.08); color:#FF9500; }
.type-badge.sprung { background:rgba(76,175,80,0.08); color:#4CAF50; }
.type-badge.sonstiges { background:rgba(142,142,147,0.08); color:#8E8E93; }
.type-badge.custom-type { background:rgba(142,142,147,0.08); color:#8E8E93; }

/* Joggen */
.joggen-inputs { display:flex; gap:8px; align-items:center; }
.joggen-inputs input { width:70px; }
.joggen-inputs span { color:var(--text-muted); font-size:0.85rem; }
.joggen-chip { background:rgba(52,199,89,0.08)!important; color:#34C759!important; }

/* Intensity / Sprint / Technik badges */
.intensity-badge {
    padding:3px 8px; border-radius:6px; font-size:10px; font-weight:700;
    letter-spacing:0.5px; text-transform:uppercase;
    background:rgba(0,122,255,0.06); color:var(--blue);
}
.sprint-cat-badge { background:rgba(200,16,46,0.06); color:var(--primary); }
.technik-cat-badge { background:rgba(255,149,0,0.06); color:#FF9500; }

/* Collapsible badges */
.entry-badges-wrap { position:relative; }
.entry-badges-collapsed .entry-badges { max-height:48px; overflow:hidden; }
.entry-badges-collapsed .entry-badges-fade {
    display:block; position:absolute; bottom:0; left:0; right:0; height:22px;
    background:linear-gradient(transparent, var(--bg-card)); pointer-events:none;
}
.entry-badges-fade { display:none; }
.btn-entry-toggle {
    display:block; width:100%; text-align:center; font-size:11px; font-weight:600;
    color:var(--text-tertiary); cursor:pointer; padding:4px 0 0; border:none; background:none;
    letter-spacing:0.3px; font-family:'Inter',sans-serif;
}
.btn-entry-toggle:hover { color:var(--primary); }
.custom-cat-badge { background:rgba(142,142,147,0.06); color:#8E8E93; }
.shoe-badge { background:rgba(0,0,0,0.04); }

.entry-times { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; align-items:center; }
.entry-times + .entry-times { margin-top:4px; }
.entry-times strong {
    font-size:11px; font-weight:700; letter-spacing:0.4px;
    color:var(--text-secondary); margin-right:2px;
    display:inline-flex; align-items:center; gap:4px;
}
.time-chip {
    background:var(--bg-input); border:1px solid var(--border);
    padding:4px 10px; border-radius:8px; font-size:12px; font-weight:600;
    font-variant-numeric:tabular-nums; letter-spacing:0.3px;
}

.entry-count { margin-top:10px; font-size:13px; font-weight:600; color:var(--text-secondary); }
.entry-notes { margin-top:8px; font-size:12px; color:var(--text-tertiary); font-style:italic; padding-left:2px; }
.entry-meta-line { margin-top:6px; font-size:11px; color:var(--text-tertiary); display:flex; gap:10px; align-items:center; }
.meta-weather, .meta-location { display:inline-flex; align-items:center; gap:2px; }
.entry-footer { display:flex; justify-content:flex-end; margin-top:10px; }

.btn-icon {
    width:30px; height:30px; display:flex; align-items:center; justify-content:center;
    border:1px solid var(--border); border-radius:8px; background:transparent;
    color:var(--text-tertiary); cursor:pointer; transition:all var(--transition-fast);
}
.btn-icon:hover {
    color:var(--danger); border-color:rgba(255,59,48,0.2); background:rgba(255,59,48,0.04);
}
.plan-week-nav .btn-icon:hover {
    color:var(--primary); border-color:rgba(200,16,46,0.2); background:rgba(200,16,46,0.04);
}

/* ================================================================
   KRAFT EXERCISES
   ================================================================ */
.kraft-exercises { display:flex; flex-direction:column; gap:8px; margin:8px 0 16px; }
.sprung-exercises { display:flex; flex-direction:column; gap:12px; margin:8px 0 16px; }
#sprung-builtin-exercises, #sprung-saved-custom-exercises { display:flex; flex-direction:column; gap:12px; }
#sonstiges-builtin-exercises, .at-sonstiges-exercises { display:flex; flex-direction:column; gap:12px; margin:8px 0 4px; }
#kraft-saved-custom-exercises { display:flex; flex-direction:column; gap:8px; }
.kraft-exercise {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius); padding:12px 14px; transition:all var(--transition-fast);
}
.kraft-exercise:has(input:checked) {
    border-color:rgba(200,16,46,0.25); background:rgba(200,16,46,0.02);
}
.kraft-check {
    display:flex; align-items:center; gap:10px;
    font-size:14px; font-weight:600; color:var(--text); cursor:pointer;
}
.kraft-check input[type="checkbox"] {
    width:20px; height:20px; accent-color:var(--primary); cursor:pointer; flex-shrink:0;
}
.kraft-details { margin-top:10px; padding-top:10px; border-top:1px solid var(--border); }
.kraft-inputs { display:flex; gap:12px; }
.kraft-field { flex:1; }
.kraft-field label {
    display:block; font-size:11px; font-weight:600; color:var(--text-tertiary);
    text-transform:uppercase; letter-spacing:0.5px; margin-bottom:4px;
}
.kraft-field input {
    width:100%; padding:8px 10px;
    background:#FFFFFF; border:1px solid var(--border);
    border-radius:var(--radius-sm); color:var(--text);
    font-size:14px; font-family:'Inter',sans-serif;
}
.kraft-field input:focus {
    outline:none; border-color:var(--primary);
    box-shadow:0 0 0 3px rgba(200,16,46,0.08);
}

.kraft-mode-toggle { display:flex; gap:6px; margin-bottom:10px; }
.kraft-mode-toggle .toggle-btn { flex:1; font-size:12px; padding:6px 0; }

.pyramid-set { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.pyramid-set-label { font-size:11px; font-weight:700; color:var(--text-tertiary); min-width:42px; flex-shrink:0; }
.pyramid-set .kraft-inputs { flex:1; }
.btn-ghost-sm { font-size:12px; padding:6px 12px; }

/* Custom Kraft exercise rows */
.kraft-custom-row {
    display:flex; align-items:center; gap:8px; margin-top:8px;
}
.kraft-custom-row input.kraft-custom-name {
    flex:2; padding:8px 10px;
    background:#FFFFFF; border:1px solid var(--border);
    border-radius:var(--radius-sm); color:var(--text);
    font-size:14px; font-family:'Inter',sans-serif;
}
.kraft-custom-row input.kraft-custom-name:focus,
.kraft-custom-row input.kraft-custom-kg:focus,
.kraft-custom-row input.kraft-custom-reps:focus {
    outline:none; border-color:var(--primary);
    box-shadow:0 0 0 3px rgba(200,16,46,0.08);
}
.kraft-custom-row input.kraft-custom-kg,
.kraft-custom-row input.kraft-custom-reps {
    flex:1; padding:8px 10px;
    background:#FFFFFF; border:1px solid var(--border);
    border-radius:var(--radius-sm); color:var(--text);
    font-size:14px; font-family:'Inter',sans-serif;
}
.kraft-custom-row .kraft-custom-remove {
    background:none; border:none; color:var(--text-tertiary);
    cursor:pointer; font-size:18px; padding:4px 6px; line-height:1;
    border-radius:var(--radius-sm); transition:color var(--transition-fast);
}
.kraft-custom-row .kraft-custom-remove:hover { color:var(--danger); }

.entry-kraft { display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; }
.kraft-chip {
    display:inline-flex; align-items:center; gap:4px;
    padding:4px 10px; border-radius:10px;
    font-size:12px; font-weight:600;
    background:var(--bg-input); color:var(--text);
    border:1px solid var(--border);
}
.kraft-chip .kraft-chip-detail { font-weight:400; color:var(--text-secondary); font-size:11px; }

/* ================================================================
   SEASON SELECT (Dashboard header)
   ================================================================ */
.season-picker {
    display:flex; align-items:center; gap:6px;
}
.season-picker-label {
    font-size:10px; font-weight:700; color:var(--text-muted);
    text-transform:uppercase; letter-spacing:0.5px;
}
.season-select {
    appearance:none; -webkit-appearance:none;
    background:var(--bg-input) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%236E6E73'/%3E%3C/svg%3E") no-repeat right 8px center;
    border:1px solid var(--border); border-radius:8px;
    padding:4px 22px 4px 8px;
    font-size:12px; font-weight:600; color:var(--text);
    cursor:pointer; outline:none; min-width:0; width:auto;
    transition:border-color var(--transition);
}
.season-select:focus { border-color:var(--primary); }

/* ================================================================
   STAT CARDS
   ================================================================ */
.stats-row {
    display:grid; grid-template-columns:repeat(3,1fr);
    gap:8px; margin-bottom:12px;
}

.stat-card {
    background:var(--bg-card);
    border:1px solid var(--border);
    border-radius:var(--radius);
    padding:14px 10px 12px;
    text-align:center;
    display:flex; flex-direction:column; align-items:center; gap:3px;
    transition:all var(--transition);
    box-shadow:var(--shadow-sm);
    position:relative;
    cursor:pointer;
    -webkit-tap-highlight-color:transparent;
}
.stat-card:hover { box-shadow:var(--shadow); border-color:var(--border-light); transform:translateY(-1px); }
.stat-card:active { transform:translateY(0); }
.stat-card::after {
    content:'';
    position:absolute; top:6px; right:6px;
    width:14px; height:14px;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23A1A1A6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><line x1='12' y1='16' x2='12' y2='12'/><line x1='12' y1='8' x2='12.01' y2='8'/></svg>");
    background-size:contain; background-repeat:no-repeat;
    opacity:0; transition:opacity var(--transition-fast);
    pointer-events:none;
}
.stat-card:hover::after { opacity:0.55; }

.stat-icon { font-size:18px; margin-bottom:3px; opacity:0.85; }
.stat-label {
    font-size:9px; font-weight:600; color:var(--text-muted);
    text-transform:uppercase; letter-spacing:0.6px; line-height:1.3;
}
.stat-value {
    font-size:22px; font-weight:700; font-variant-numeric:tabular-nums; line-height:1.2;
    letter-spacing:-0.025em; color:var(--text);
}

/* Accent classes kept for backwards compat — deliberately neutralized for a calmer, more professional look */
.accent-purple .stat-value,
.accent-teal .stat-value,
.accent-gold .stat-value,
.accent-blue .stat-value,
.accent-green .stat-value,
.accent-red .stat-value,
.accent-orange .stat-value { color:var(--text); }

/* Subtle hierarchy: lead metric in each row gets the brand accent + slightly larger weight */
.stats-row > .stat-card:first-child .stat-value {
    color:var(--primary);
    font-size:24px;
    font-weight:800;
}

/* Explicit highlight class for hand-picked KPIs */
.stat-card--key .stat-value { color:var(--primary); font-size:24px; font-weight:800; }

/* Form hint text below dropdowns / inputs */
.form-hint {
    font-size:12px; color:var(--text-tertiary);
    margin:6px 2px 0; line-height:1.45;
    font-weight:500;
}

/* Inline info-icon button (sits next to headings) */
.info-btn {
    display:inline-flex; align-items:center; justify-content:center;
    width:18px; height:18px; padding:0; margin-left:8px;
    background:none; border:none; cursor:pointer;
    color:var(--text-tertiary); vertical-align:middle;
    transition:color var(--transition-fast);
    -webkit-tap-highlight-color:transparent;
}
.info-btn:hover, .info-btn:focus { color:var(--primary); outline:none; }
.info-btn svg { width:16px; height:16px; }

/* Info / Stat-Explainer modal */
.info-modal {
    max-width:380px; padding:24px 22px 22px;
    text-align:left; position:relative;
    background:var(--bg-card); color:var(--text);
}
.info-modal-close {
    position:absolute; top:12px; right:12px;
    width:30px; height:30px;
    background:none; border:none; cursor:pointer;
    color:var(--text-muted);
    display:inline-flex; align-items:center; justify-content:center;
    border-radius:8px; transition:all var(--transition-fast);
}
.info-modal-close:hover { background:var(--bg-input); color:var(--text); }
.info-modal-icon {
    width:44px; height:44px; border-radius:12px;
    display:inline-flex; align-items:center; justify-content:center;
    background:rgba(200,16,46,0.08); color:var(--primary);
    margin-bottom:12px;
}
.info-modal-icon svg { width:22px; height:22px; }
.info-modal h3 {
    font-size:17px; font-weight:700; margin:0 0 10px;
    letter-spacing:-0.02em; color:var(--text);
}
.info-modal-body {
    font-size:13.5px; line-height:1.55;
    color:var(--text-secondary);
}
.info-modal-body p { margin:0 0 10px; color:var(--text-secondary); font-size:13.5px; }
.info-modal-body p:last-child { margin-bottom:0; }
.info-modal-body strong { color:var(--text); font-weight:600; }
.info-modal-body .info-formula {
    display:block; margin-top:10px; padding:10px 12px;
    background:var(--bg-input); border-radius:8px;
    font-family:'SF Mono', Menlo, monospace; font-size:12px;
    color:var(--text); border:1px solid var(--border);
}

/* ================================================================
   CHART CARDS
   ================================================================ */
.chart-header { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:14px; }

.chart-tag {
    font-size:10px; font-weight:600; letter-spacing:0.5px; text-transform:uppercase;
    padding:3px 10px; border-radius:8px; background:rgba(200,16,46,0.06);
    color:var(--primary); border:1px solid rgba(200,16,46,0.10);
}

.chart-container { position:relative; width:100%; height:240px; }
.chart-tall { height:300px; }

/* ================================================================
   PB TABLE
   ================================================================ */
.pb-table { width:100%; border-collapse:collapse; font-size:13px; }
.pb-table th {
    text-align:left; font-size:10px; font-weight:700; color:var(--text-tertiary);
    text-transform:uppercase; letter-spacing:0.5px; padding:8px 10px;
    border-bottom:1px solid var(--border);
}
.pb-table td { padding:10px; border-bottom:1px solid var(--border); font-variant-numeric:tabular-nums; }
.pb-table tr:last-child td { border-bottom:none; }

.pb-rank {
    width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center;
    border-radius:50%; font-weight:800; font-size:11px;
}
.pb-rank.gold { background:rgba(255,149,0,0.10); color:#FF9500; }
.pb-rank.silver { background:rgba(142,142,147,0.10); color:#8E8E93; }
.pb-rank.bronze { background:rgba(221,153,51,0.10); color:#DD9933; }
.pb-rank.normal { background:var(--bg-input); color:var(--text-tertiary); }

.pb-time { font-weight:700; font-size:15px; }
.empty-chart-msg { text-align:center; color:var(--text-tertiary); padding:40px 0; font-size:13px; }

/* ================================================================
   TOAST — mit Varianten (success / error / info)
   ================================================================ */
.toast {
    position:fixed; bottom:80px; left:50%;
    transform:translateX(-50%) translateY(60px);
    background:var(--accent); color:#fff;
    padding:11px 22px; border-radius:var(--radius-sm);
    font-size:13px; font-weight:600; opacity:0;
    transition:all 0.25s; z-index:1000;
    box-shadow:0 4px 20px rgba(29,29,31,0.25);
    pointer-events:none;
    max-width:calc(100vw - 32px);
    text-align:center; line-height:1.4;
    display:inline-flex; align-items:center; gap:8px;
}
.toast.show { transform:translateX(-50%) translateY(0); opacity:1; pointer-events:auto; }
.toast--success { background:#1D1D1F; }
.toast--success::before {
    content:''; width:14px; height:14px; flex-shrink:0;
    border-radius:50%; background:var(--success);
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
    background-size:10px; background-repeat:no-repeat; background-position:center;
}
.toast--error {
    background:#3A1418; color:#fff;
    border:1px solid rgba(200,16,46,0.55);
    box-shadow:0 4px 22px rgba(200,16,46,0.30);
}
.toast--error::before {
    content:'!'; width:16px; height:16px; flex-shrink:0;
    border-radius:50%; background:var(--primary); color:#fff;
    font-size:11px; font-weight:800;
    display:inline-flex; align-items:center; justify-content:center;
    line-height:1;
}
.toast--info { background:#1D1D1F; }

/* Save success — dezenter Toast statt Vollbild-Overlay */
.save-success-overlay {
    position:fixed; inset:0;
    display:flex; align-items:center; justify-content:center;
    z-index:9999; pointer-events:none;
    background:rgba(255,255,255,0.4);
    backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
    animation:successFadeIn 0.3s ease forwards;
}
.save-success-overlay.fade-out { animation:successFadeOut 0.3s ease forwards; }
.save-success-circle {
    width:80px; height:80px; border-radius:50%;
    background:var(--success);
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 8px 32px rgba(52,199,89,0.35);
    animation:successPop 0.4s cubic-bezier(0.175,0.885,0.32,1.275) forwards;
}
.save-success-circle svg { width:40px; height:40px; stroke:#fff; stroke-width:3; fill:none; }
.save-success-circle svg path { stroke-dasharray:48; stroke-dashoffset:48; animation:checkDraw 0.4s ease 0.2s forwards; }
@keyframes successFadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes successFadeOut { from { opacity:1; } to { opacity:0; } }
@keyframes successPop { from { transform:scale(0.3); opacity:0; } to { transform:scale(1); opacity:1; } }
@keyframes checkDraw { to { stroke-dashoffset:0; } }
@media (prefers-reduced-motion: reduce) {
    .save-success-overlay, .save-success-circle, .save-success-circle svg path { animation:none !important; }
}

/* Comment notification popup */
.comment-notif-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.25);
    backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
    display:none; align-items:center; justify-content:center;
    z-index:1100; padding:20px;
}
.comment-notif-overlay.show { display:flex; }
.comment-notif {
    background:#FFFFFF; border:none;
    border-radius:var(--radius-lg); padding:28px 24px 22px;
    max-width:340px; width:100%; text-align:center;
    box-shadow:0 20px 60px rgba(0,0,0,0.12);
}
.comment-notif-icon { font-size:32px; margin-bottom:10px; }
.comment-notif-title { font-size:16px; font-weight:700; color:var(--text); margin-bottom:8px; }
.comment-notif-body { font-size:13px; color:var(--text-secondary); line-height:1.5; margin-bottom:18px; }
.comment-notif-author { font-weight:700; color:var(--primary); }
.comment-notif-btn {
    padding:10px 28px; border:none; border-radius:var(--radius-sm);
    background:var(--accent); color:#fff; font-family:'Inter',sans-serif;
    font-size:14px; font-weight:600; cursor:pointer; transition:background var(--transition-fast);
}
.comment-notif-btn:hover { background:var(--accent-light); }

/* ================================================================
   MODALS
   ================================================================ */
.modal-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.25);
    backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
    display:none; align-items:center; justify-content:center;
    z-index:1000; padding:20px;
}
.modal-overlay.show { display:flex; }

.modal {
    background:#FFFFFF; border:none;
    border-radius:var(--radius-lg); padding:28px 24px 24px;
    max-width:360px; width:100%; text-align:center;
    box-shadow:0 20px 60px rgba(0,0,0,0.12);
}
.modal-icon-wrap { margin-bottom:14px; }
.modal h3 { font-size:18px; font-weight:700; margin-bottom:6px; }
.modal p { font-size:13px; color:var(--text-secondary); margin-bottom:22px; }
.modal-actions { display:flex; gap:10px; justify-content:center; }
.modal-actions .btn-ghost { margin-bottom:0; border-style:solid; }

/* ================================================================
   WEEKLY RECAP POPUP
   ================================================================ */
.recap-modal {
    border-radius:20px; overflow:hidden;
    box-shadow:0 25px 80px rgba(0,0,0,0.18), 0 0 0 1px rgba(0,0,0,0.04);
    animation: recap-enter 0.5s cubic-bezier(0.16,1,0.3,1);
}
@keyframes recap-enter {
    from { opacity:0; transform:translateY(30px) scale(0.96); }
    to   { opacity:1; transform:translateY(0) scale(1); }
}
.recap-header {
    background:linear-gradient(135deg, #007AFF 0%, #5856D6 100%);
    padding:28px 24px 22px; color:#fff; text-align:center;
}
.recap-logo {
    font-size:22px; font-weight:800; letter-spacing:-0.3px;
    margin-bottom:4px;
}
.recap-subtitle {
    font-size:12px; font-weight:500; opacity:0.8;
}
.recap-body {
    padding:22px 24px 24px;
}
.recap-greeting {
    font-size:19px; font-weight:700; margin:0 0 8px;
    background:linear-gradient(135deg, #007AFF, #5856D6);
    -webkit-background-clip:text; -webkit-text-fill-color:transparent;
    background-clip:text;
}
.recap-message {
    font-size:13.5px; color:var(--text-secondary); line-height:1.55;
    margin-bottom:16px;
}
.recap-stats {
    display:grid; grid-template-columns:1fr 1fr; gap:8px;
    margin-bottom:18px;
}
.recap-stat-item {
    background:var(--bg-body); border-radius:12px;
    padding:12px 14px; text-align:center;
}
.recap-stat-val {
    font-size:20px; font-weight:800; letter-spacing:-0.5px;
    margin-bottom:2px;
}
.recap-stat-lbl {
    font-size:11px; color:var(--text-muted); font-weight:500;
}
.recap-motto {
    font-size:13px; color:var(--text-muted); font-style:italic;
    text-align:center; margin-bottom:18px; line-height:1.4;
    padding:10px 16px; background:var(--bg-body); border-radius:10px;
}
.recap-close-btn {
    width:100%; padding:12px; font-size:15px; font-weight:600;
    border-radius:12px;
}

/* ================================================================
   EDIT ENTRY MODAL
   ================================================================ */
.edit-modal-content {
    max-width:480px; text-align:left; padding:24px 22px 20px;
    max-height:85vh; overflow-y:auto;
}
.edit-modal-header {
    display:flex; align-items:center; justify-content:space-between; margin-bottom:16px;
}
.edit-modal-header h3 { font-size:18px; font-weight:700; margin:0; }
.edit-modal-content .form-group { margin-bottom:12px; }
.edit-modal-content .form-row { display:flex; gap:10px; }
.edit-modal-content .form-row .form-group { flex:1; }
.edit-modal-content label { display:block; font-size:12px; font-weight:600; color:var(--text); margin-bottom:4px; }
.edit-modal-content input, .edit-modal-content select, .edit-modal-content textarea {
    width:100%; padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius-sm);
    font-size:14px; font-family:inherit; background:var(--bg-input); color:var(--text);
}
.edit-modal-content textarea { resize:vertical; min-height:44px; }
.edit-modal-content .times-list { margin-bottom:6px; }
.edit-modal-content .btn-ghost { font-size:13px; padding:4px 10px; }
.edit-ti-block { background:var(--bg-input); border-radius:var(--radius-sm); padding:10px; margin-bottom:10px; }
.edit-kraft-summary .kraft-chip { display:inline-block; margin:2px; }
.btn-edit { background:none; border:none; cursor:pointer; padding:4px; opacity:0.5; transition:opacity 0.15s; }
.btn-edit:hover { opacity:1; }

/* ================================================================
   FEEDBACK MODAL
   ================================================================ */
.modal-feedback { max-width:400px; text-align:left; padding:24px 22px 20px; max-height:90vh; overflow-y:auto; }
.feedback-header { text-align:center; margin-bottom:14px; }
.feedback-icon { font-size:32px; display:block; margin-bottom:6px; }
.feedback-header h3 { font-size:18px; font-weight:700; margin-bottom:4px; }
.feedback-intro { font-size:13px; color:var(--text-secondary); line-height:1.5; margin-bottom:0; }
.feedback-stars-section { display:flex; flex-direction:column; gap:8px; }
.feedback-aspect { display:flex; align-items:center; justify-content:space-between; padding:6px 10px; background:var(--bg-input); border-radius:var(--radius-sm); }
.feedback-aspect-label { font-size:13px; font-weight:600; color:var(--text); }
.feedback-stars { display:flex; gap:2px; }
.fb-star { font-size:22px; color:var(--border); cursor:pointer; transition:color 0.15s, transform 0.15s; user-select:none; }
.fb-star:hover { transform:scale(1.2); }
.fb-star.active { color:#FBBF24; }
#feedback-submit:disabled { opacity:0.45; cursor:not-allowed; }
#feedback-text { resize:vertical; min-height:50px; }

/* ================================================================
   FEEDBACK DASHBOARD
   ================================================================ */
.feedback-summary-cards { display:grid; grid-template-columns:repeat(auto-fit, minmax(120px, 1fr)); gap:10px; margin-bottom:16px; }
.fb-summary-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:14px 12px; text-align:center; }
.fb-summary-card .fb-sum-val { font-size:22px; font-weight:800; color:var(--primary); }
.fb-summary-card .fb-sum-label { font-size:11px; color:var(--text-secondary); margin-top:2px; }
.fb-entry { padding:14px 16px; border-bottom:1px solid var(--border); }
.fb-entry:last-child { border-bottom:none; }
.fb-entry-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.fb-entry-name { font-weight:700; font-size:14px; }
.fb-entry-date { font-size:11px; color:var(--text-tertiary); }
.fb-entry-stars { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
.fb-entry-aspect { font-size:12px; color:var(--text-secondary); }
.fb-entry-aspect .fb-aspect-stars { color:#FBBF24; letter-spacing:1px; }
.fb-entry-text { font-size:13px; color:var(--text); background:var(--bg-input); border-radius:var(--radius-sm); padding:8px 10px; margin-top:6px; line-height:1.5; font-style:italic; }

/* ================================================================
   PRIVACY CONSENT MODAL
   ================================================================ */
.privacy-icon { font-size:36px; margin-bottom:10px; }
.privacy-intro { text-align:left; font-size:13px; color:var(--text-secondary); line-height:1.5; margin-bottom:12px; }
.privacy-toggle {
    display:flex; align-items:center; justify-content:space-between;
    background:var(--bg-input); border:1px solid var(--border);
    border-radius:var(--radius); padding:10px 14px;
    cursor:pointer; font-size:13px; font-weight:600; color:var(--text);
    transition:background 0.15s;
}
.privacy-toggle:hover { background:var(--bg-elevated); }
.privacy-chevron { transition:transform 0.2s; flex-shrink:0; }
.privacy-toggle.open .privacy-chevron { transform:rotate(180deg); }
.privacy-text {
    max-height:260px; overflow-y:auto; text-align:left;
    font-size:11.5px; line-height:1.6; color:var(--text-secondary);
    background:var(--bg-input); border:1px solid var(--border);
    border-radius:var(--radius); padding:14px 16px;
    margin-top:8px;
}
.privacy-text h4 { font-size:12.5px; font-weight:700; color:var(--text); margin:10px 0 4px; }
.privacy-text h4:first-child { margin-top:0; }
.privacy-text ul { margin:4px 0 8px 16px; padding:0; }
.privacy-text li { margin-bottom:3px; }
#privacy-accept:disabled { opacity:0.45; cursor:not-allowed; }
#privacy-accept:not(:disabled) { animation:fadeSlideUp 0.2s ease; }

/* ================================================================
   SCROLLBAR
   ================================================================ */
::-webkit-scrollbar { width:4px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:rgba(0,0,0,0.08); border-radius:3px; }
::-webkit-scrollbar-thumb:hover { background:rgba(0,0,0,0.15); }

/* ================================================================
   ANIMATIONS
   ================================================================ */
@keyframes fadeSlideUp {
    from { opacity:0; transform:translateY(8px); }
    to   { opacity:1; transform:translateY(0); }
}
.training-entry.new { animation:fadeSlideUp 0.25s ease; }

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (max-width:420px) {
    .app-container { padding:0 12px 110px; }
    .card { padding:16px; }
    .stats-row { grid-template-columns:repeat(2,1fr); }
    .stat-value { font-size:17px; }
    .login-card { padding:32px 20px 24px; }
}

/* ================================================================
   COACH DASHBOARD
   ================================================================ */
.coach-ranking-section { margin-bottom:4px; }
.coach-ranking-section h3 { font-size:13px; font-weight:700; color:var(--text-secondary); margin-bottom:8px; }
.coach-ranking-list { display:flex; flex-direction:column; gap:6px; }
.coach-rank-row {
    display:flex; align-items:center; gap:12px;
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:10px 14px; transition:all var(--transition-fast);
    cursor:pointer;
}
.coach-rank-row:hover { border-color:var(--border-light); background:var(--bg-elevated); }
.coach-rank-name { flex:1; font-size:14px; font-weight:600; color:var(--text); }
.coach-rank-value { font-size:16px; font-weight:800; color:var(--primary); font-variant-numeric:tabular-nums; }

/* Coach Athlete Detail Modal */
.coach-athlete-modal-header {
    display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;
}
.coach-athlete-modal-header h3 { font-size:18px; font-weight:700; margin:0; }
.coach-athlete-modal-body { max-height:60vh; overflow-y:auto; }
.coach-athlete-entry {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:10px 12px; margin-bottom:8px;
}
.coach-athlete-entry-header {
    display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:4px;
}
.coach-athlete-entry-date { font-size:12px; color:var(--text-secondary); white-space:nowrap; }
.coach-athlete-entry-detail { font-size:12px; color:var(--text-secondary); margin-top:2px; }
.coach-athlete-entry-detail .time-chip {
    display:inline-block; background:var(--bg-card); border:1px solid var(--border);
    border-radius:4px; padding:1px 6px; font-size:11px; margin:1px 2px;
}
.coach-athlete-entry-notes { font-size:11px; color:var(--text-tertiary); margin-top:4px; font-style:italic; }
.coach-athlete-summary {
    display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px;
}
.coach-athlete-summary-chip {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:4px 10px; font-size:12px; color:var(--text-secondary);
}
.coach-athlete-summary-chip strong { color:var(--text); }

/* ================================================================
   KALENDER / WETTKÃƒâ€žMPFE
   ================================================================ */
.btn-add-wk { width:100%; margin-bottom:14px; gap:6px; justify-content:center; }

.countdown-card .card-header h2 { font-size:15px; }
.wk-countdown { text-align:center; padding:12px 0 4px; }
.countdown-name { font-size:16px; font-weight:700; color:var(--text); margin-bottom:4px; }
.countdown-days {
    font-size:28px; font-weight:900;
    color:var(--primary);
    margin-bottom:4px;
}
.countdown-date { font-size:12px; color:var(--text-muted); margin-bottom:8px; }
.countdown-discs { display:flex; flex-wrap:wrap; gap:4px; justify-content:center; }
.countdown-none { color:var(--text-tertiary); font-size:13px; }

/* Calendar month grid */
.cal-nav {
    display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; padding:0 4px;
}
.cal-nav-btn {
    width:36px; height:36px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    background:var(--bg-input); border:1px solid var(--border); cursor:pointer;
    color:var(--text-secondary); transition:all var(--transition-fast);
}
.cal-nav-btn:hover { background:var(--bg-elevated); color:var(--text); }
.cal-nav-label { font-size:16px; font-weight:700; color:var(--text); }
.cal-grid {
    overflow:hidden; position:relative; touch-action:pan-y;
}
.cal-month {
    background:var(--bg-card); border-radius:var(--radius);
    padding:4px 0; transition:opacity 0.2s ease, transform 0.2s ease;
}
.cal-month.cal-slide-left { animation:calSlideLeft 0.25s ease forwards; }
.cal-month.cal-slide-right { animation:calSlideRight 0.25s ease forwards; }
@keyframes calSlideLeft {
    from { transform:translateX(40px); opacity:0; }
    to { transform:translateX(0); opacity:1; }
}
@keyframes calSlideRight {
    from { transform:translateX(-40px); opacity:0; }
    to { transform:translateX(0); opacity:1; }
}
.cal-month-label { font-size:13px; font-weight:700; color:var(--text-secondary); margin-bottom:8px; text-align:center; }
.cal-days-header {
    display:grid; grid-template-columns:repeat(7,1fr); text-align:center;
    font-size:10px; color:var(--text-tertiary); margin-bottom:4px; font-weight:600;
}
.cal-days { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.cal-day {
    display:flex; align-items:center; justify-content:center;
    width:100%; aspect-ratio:1; font-size:11px; font-weight:500; color:var(--text-muted);
    border-radius:8px; position:relative; cursor:default; transition:background var(--transition-fast);
}
.cal-day.empty { visibility:hidden; }
.cal-day.trained { background:rgba(52,199,89,0.08); color:#34C759; font-weight:700; }
.cal-day.pausetag { background:rgba(255,149,0,0.10); color:#FF9500; font-weight:700; }
.cal-day.wk { background:rgba(224,64,251,0.10); color:#E040FB; font-weight:800; box-shadow:inset 0 0 0 1.5px #E040FB; }
.cal-day.trained.wk { background:linear-gradient(135deg,rgba(52,199,89,0.08),rgba(224,64,251,0.10)); }
.cal-day.today { box-shadow:inset 0 0 0 2px var(--primary); color:var(--primary); font-weight:800; }
.cal-day.today.wk { box-shadow:inset 0 0 0 2px #E040FB, 0 0 8px rgba(224,64,251,0.15); }

/* Legend */
.cal-legend { display:flex; gap:16px; justify-content:center; margin:12px 0 16px; flex-wrap:wrap; }
.cal-legend-item { display:flex; align-items:center; gap:5px; font-size:11px; color:var(--text-muted); }
.cal-dot { width:10px; height:10px; border-radius:3px; display:inline-block; }
.cal-dot-training { background:rgba(52,199,89,0.35); }
.cal-dot-pause { background:rgba(255,149,0,0.35); }
.cal-dot-wk { background:rgba(224,64,251,0.35); }
.cal-dot-camp { background:rgba(0,122,255,0.35); }
.cal-dot-regen { background:rgba(88,86,214,0.35); }
.cal-dot-today { border:2px solid var(--primary); }

/* Calendar day: training camp */
.cal-day.camp { background:rgba(0,122,255,0.10); color:#007AFF; }
.cal-day.camp.trained { background:linear-gradient(135deg,rgba(52,199,89,0.08),rgba(0,122,255,0.10)); color:#34C759; }
.cal-day.camp.wk { background:linear-gradient(135deg,rgba(224,64,251,0.10),rgba(0,122,255,0.10)); }

/* Calendar day: regeneration */
.cal-day.regen { background:rgba(88,86,214,0.08); color:#5856D6; }

/* Calendar day popup */
.cal-day.clickable { cursor:pointer; }
.cal-day.clickable:hover { background:var(--bg-elevated); }
.cal-day-modal-header {
    display:flex; align-items:center; justify-content:space-between; margin-bottom:12px;
}
.cal-day-modal-header h3 { font-size:17px; font-weight:700; margin:0; }
.cal-day-modal-body { display:flex; flex-direction:column; gap:12px; }
.cal-day-section-title {
    font-size:12px; font-weight:700; color:var(--text-secondary);
    text-transform:uppercase; letter-spacing:0.5px; margin-bottom:6px;
}
.cal-day-entry {
    background:var(--bg-input); border-radius:var(--radius-sm); padding:10px 12px;
    border-left:3px solid #34C759;
}
.cal-day-entry.wk-result-entry { border-left-color:#E040FB; }
.cal-day-entry-type { font-size:13px; font-weight:700; color:var(--text); }
.cal-day-entry-detail { font-size:12px; color:var(--text-secondary); margin-top:2px; }
.cal-day-empty { font-size:13px; color:var(--text-muted); text-align:center; padding:16px; }

/* Competition results */
.wk-entry-results { margin-top:8px; display:flex; flex-direction:column; gap:4px; }
.wk-result-row {
    display:flex; align-items:center; gap:8px; padding:6px 10px;
    background:rgba(224,64,251,0.06); border:1px solid rgba(224,64,251,0.12);
    border-radius:var(--radius-sm); font-size:12px;
}
.wk-result-disc { font-weight:700; color:var(--text); }
.wk-result-perf { font-weight:700; color:#E040FB; margin-left:auto; }
.wk-result-wind { font-size:11px; color:var(--text-muted); }
.wk-result-place { font-size:11px; font-weight:600; color:var(--primary); }
.wk-entry-actions { display:flex; gap:6px; margin-top:8px; }
.btn-add-result {
    display:inline-flex; align-items:center; gap:4px;
    font-size:11px; font-weight:600; color:var(--primary);
    background:rgba(200,16,46,0.06); border:1px solid rgba(200,16,46,0.12);
    border-radius:var(--radius-sm); padding:5px 10px; cursor:pointer;
    transition:all var(--transition-fast);
}
.btn-add-result:hover { background:rgba(200,16,46,0.12); }
.btn-del-result {
    font-size:10px; color:var(--text-muted); background:none; border:none;
    cursor:pointer; padding:2px 4px; opacity:0.6; transition:opacity 0.15s;
}
.btn-del-result:hover { opacity:1; color:var(--primary); }

/* Discipline search dropdown */
.wk-disc-search-wrap { position:relative; }
.wk-disc-dropdown {
    display:none; position:absolute; top:100%; left:0; right:0; z-index:50;
    background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm);
    max-height:200px; overflow-y:auto; box-shadow:var(--shadow-sm);
}
.wk-disc-dropdown.open { display:block; }
.wk-disc-dropdown-cat {
    font-size:10px; font-weight:700; color:var(--text-tertiary);
    text-transform:uppercase; letter-spacing:0.5px; padding:8px 12px 2px;
}
.wk-disc-dropdown-item {
    padding:8px 12px; font-size:13px; color:var(--text); cursor:pointer;
    transition:background 0.1s;
}
.wk-disc-dropdown-item:hover { background:var(--bg-input); }
.wk-disc-dropdown-item.selected { background:rgba(200,16,46,0.06); color:var(--primary); font-weight:600; }

/* Competition entries */
.wk-list { display:flex; flex-direction:column; gap:8px; }
.wk-entry {
    background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm);
    padding:12px 14px; transition:all var(--transition-fast);
}
.wk-entry:hover { border-color:var(--border-light); }
.wk-entry.wk-past { opacity:0.5; }
.wk-entry-header { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
.wk-entry-name { font-size:14px; font-weight:700; color:var(--text); }
.wk-entry-date { font-size:12px; color:var(--text-muted); margin-top:2px; }
.wk-entry-discs { display:flex; flex-wrap:wrap; gap:4px; margin-top:8px; }
.wk-disc-tag {
    font-size:11px; font-weight:600; padding:3px 8px; border-radius:6px;
    background:rgba(224,64,251,0.08); color:#E040FB;
}

/* Training camp entries */
.camp-list { display:flex; flex-direction:column; gap:8px; }
.camp-entry {
    background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm);
    padding:12px 14px; transition:all var(--transition-fast);
    border-left:3px solid #007AFF;
}
.camp-entry:hover { border-color:var(--border-light); }
.camp-entry.camp-past { opacity:0.5; }
.camp-entry-header { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
.camp-entry-location { font-size:14px; font-weight:700; color:var(--text); display:flex; align-items:center; gap:6px; }
.camp-entry-flag { font-size:18px; line-height:1; }
.camp-entry-dates { font-size:12px; color:var(--text-muted); margin-top:2px; }
.camp-entry-duration {
    display:inline-block; font-size:10px; font-weight:700; color:#007AFF;
    background:rgba(0,122,255,0.08); padding:2px 8px; border-radius:10px; margin-left:6px;
}
.camp-entry-notes { font-size:12px; color:var(--text-secondary); margin-top:6px; font-style:italic; }

/* Competition modal */
.modal-wk { max-width:400px; max-height:85vh; overflow-y:auto; }
.wk-disciplines { display:flex; flex-wrap:wrap; gap:8px; }
.wk-disc-check {
    display:flex; align-items:center; gap:4px; font-size:13px; color:var(--text-secondary);
    background:var(--bg-card); border:1px solid var(--border); border-radius:8px;
    padding:6px 10px; cursor:pointer; transition:all var(--transition-fast);
}
.wk-disc-check:has(input:checked) { background:rgba(224,64,251,0.06); border-color:#E040FB; color:#E040FB; }
.wk-disc-check input { display:none; }

/* WK Analytics Ã¢â‚¬â€œ PB Table */
.wk-pb-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:16px; margin-bottom:16px; }
.wk-pb-card h3 { font-size:15px; font-weight:700; margin:0 0 12px; color:var(--text); }
.wk-pb-disc-group { margin-bottom:14px; }
.wk-pb-disc-group:last-child { margin-bottom:0; }
.wk-pb-disc-label { font-size:12px; font-weight:700; color:#E040FB; text-transform:uppercase; letter-spacing:0.3px; margin-bottom:6px; }
.wk-pb-row { display:flex; align-items:center; gap:8px; padding:6px 10px; background:var(--bg-input); border-radius:var(--radius-sm); margin-bottom:4px; font-size:12px; }
.wk-pb-row:last-child { margin-bottom:0; }
.wk-pb-perf { font-weight:700; color:#E040FB; min-width:60px; }
.wk-pb-wind { font-size:11px; color:var(--text-muted); }
.wk-pb-meta { margin-left:auto; font-size:11px; color:var(--text-secondary); text-align:right; }
.wk-pb-place { font-size:10px; font-weight:600; color:var(--primary); background:rgba(200,16,46,0.06); padding:2px 6px; border-radius:4px; margin-left:6px; }
.wk-pb-empty { font-size:13px; color:var(--text-muted); text-align:center; padding:16px; }

/* WK Analytics Ã¢â‚¬â€œ Timeline */
.wk-timeline { display:flex; flex-direction:column; gap:8px; }
.wk-timeline-item { display:flex; align-items:flex-start; gap:10px; padding:10px 12px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); border-left:3px solid #E040FB; }
.wk-timeline-date { font-size:11px; font-weight:700; color:var(--text-secondary); min-width:70px; }
.wk-timeline-name { font-size:13px; font-weight:700; color:var(--text); }
.wk-timeline-discs { display:flex; flex-wrap:wrap; gap:3px; margin-top:4px; }
.wk-timeline-disc { font-size:10px; font-weight:600; padding:2px 6px; border-radius:4px; background:rgba(224,64,251,0.08); color:#E040FB; }
.wk-timeline-results { display:flex; flex-wrap:wrap; gap:4px; margin-top:4px; }
.wk-timeline-result { font-size:11px; color:var(--text-secondary); }
.wk-timeline-result b { color:#E040FB; }
.wk-no-data { font-size:13px; color:var(--text-muted); text-align:center; padding:20px; }

/* ================================================================
   NAHRUNGSERGÃƒâ€žNZUNGSMITTEL (SUPPLEMENTS)
   ================================================================ */
.suppl-card { margin-bottom:14px; }
.suppl-header { cursor:pointer; display:flex; align-items:center; justify-content:space-between; user-select:none; }
.suppl-header h2 { margin:0; }
.suppl-toggle-icon { font-size:12px; opacity:.5; transition:transform .2s; }
.suppl-toggle-icon.open { transform:rotate(180deg); }
.suppl-body { padding:0 2px; }

.suppl-manage-title, .suppl-intake-title, .suppl-log-title {
    font-size:13px; font-weight:600; color:var(--text-secondary);
    text-transform:uppercase; letter-spacing:.5px; margin:14px 0 8px;
}
.suppl-today-list { display:flex; flex-direction:column; gap:6px; }

.suppl-my-list { display:flex; flex-direction:column; gap:4px; }
.suppl-my-item {
    display:flex; align-items:center; gap:8px;
    font-size:13px; padding:6px 10px;
    background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius);
}
.suppl-my-item .suppl-my-name { flex:1; font-weight:500; }
.suppl-my-item .suppl-my-dose { color:var(--text-secondary); font-size:12px; }
.suppl-my-item .suppl-my-del {
    background:none; border:none; color:var(--text-secondary); cursor:pointer;
    padding:2px 4px; font-size:14px; opacity:.5; transition:opacity .15s;
}
.suppl-my-item .suppl-my-del:hover { opacity:1; color:#e53935; }

.suppl-add-btn { width:100%; margin-top:6px; font-size:13px; }

.suppl-intake-item {
    display:flex; align-items:center; gap:10px;
    background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius);
    padding:10px 14px; cursor:pointer; transition:border-color var(--transition-fast);
}
.suppl-intake-item:hover { border-color:var(--accent); }
.suppl-intake-name { font-weight:600; font-size:14px; flex:1; }
.suppl-intake-dose { font-size:12px; color:var(--text-secondary); }
.suppl-intake-btn {
    background:var(--accent); color:#fff; border:none; border-radius:8px;
    padding:6px 12px; font-size:12px; font-weight:600; cursor:pointer;
    white-space:nowrap;
}

.suppl-log-list { display:flex; flex-direction:column; margin-bottom:10px; }
.suppl-log-meta {
    font-size:11px; color:var(--text-muted); text-align:right;
    margin-bottom:6px; font-variant-numeric:tabular-nums;
}
.suppl-log-scroll {
    display:flex; flex-direction:column; gap:6px;
    max-height:340px; overflow-y:auto;
    padding:4px 4px 6px 0;
    border:1px solid var(--border); border-radius:var(--radius);
    background:var(--bg-input);
}
.suppl-log-scroll::-webkit-scrollbar { width:6px; }
.suppl-log-scroll::-webkit-scrollbar-thumb { background:var(--border); border-radius:3px; }
.suppl-log-date {
    position:sticky; top:0; z-index:1;
    background:var(--bg-input);
    font-size:10.5px; font-weight:700; letter-spacing:.5px; text-transform:uppercase;
    color:var(--text-muted);
    padding:6px 10px 4px;
}
.suppl-log-entry {
    display:flex; align-items:center; gap:10px;
    background:var(--bg-card); border:1px solid var(--border); border-radius:10px;
    padding:8px 10px; margin:0 6px;
}
.suppl-log-entry .suppl-log-info { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.suppl-log-entry .suppl-log-name { font-weight:600; font-size:13px; line-height:1.2; color:var(--text-primary); }
.suppl-log-entry .suppl-log-name .suppl-log-dose {
    font-weight:500; color:var(--text-secondary); font-size:12px; margin-left:4px;
}
.suppl-log-entry .suppl-log-detail { font-size:11px; color:var(--text-muted); line-height:1.2; }
.suppl-log-entry .suppl-log-del {
    display:inline-flex; align-items:center; justify-content:center;
    background:none; border:none; color:var(--text-secondary); cursor:pointer;
    width:26px; height:26px; border-radius:6px; opacity:.55; transition:all .15s;
    flex-shrink:0;
}
.suppl-log-entry .suppl-log-del:hover { opacity:1; color:#e53935; background:rgba(229,57,53,0.08); }

/* ================================================================
   SCHMERZTAGEBUCH (INJURY DIARY)
   ================================================================ */
#btn-add-injury { width:100%; margin-bottom:14px; }

.injury-entry {
    background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius);
    padding:14px 16px; margin-bottom:10px; transition:border-color var(--transition-fast);
}
.injury-entry:hover { border-color:var(--border-light); }
.injury-entry-header { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:6px; }
.injury-entry-info { display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.injury-bodypart { font-size:14px; font-weight:700; color:var(--text); }
.injury-side-tag {
    font-size:11px; font-weight:600; padding:2px 7px; border-radius:6px;
    background:rgba(200,16,46,0.06); color:var(--primary);
}
.injury-pain-badge { font-size:11px; font-weight:700; padding:2px 8px; border-radius:6px; }
.injury-date { font-size:12px; color:var(--text-muted); margin-bottom:6px; }
.injury-notes { font-size:13px; color:var(--text-secondary); margin-bottom:8px; }
.injury-pain-bar { width:100%; height:4px; background:rgba(0,0,0,0.04); border-radius:4px; overflow:hidden; }
.injury-pain-fill { height:100%; border-radius:4px; transition:width 0.3s; }
.injury-del-btn {
    color:var(--text-muted); background:none; border:none; padding:4px; cursor:pointer;
    opacity:0.5; transition:opacity var(--transition-fast);
}
.injury-del-btn:hover { opacity:1; color:#FF3B30; }

/* Injury stats */
#injury-stats-card { margin-top:14px; }
.injury-stats-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:16px; }
.injury-stat { text-align:center; }
.injury-stat-val { display:block; font-size:20px; font-weight:800; color:var(--text); }
.injury-stat-label { font-size:11px; color:var(--text-muted); }

.injury-freq-bars { display:flex; flex-direction:column; gap:6px; }
.injury-freq-row { display:flex; align-items:center; gap:8px; }
.injury-freq-label { font-size:12px; color:var(--text-secondary); width:100px; flex-shrink:0; text-align:right; }
.injury-freq-bar-bg { flex:1; height:6px; background:rgba(0,0,0,0.04); border-radius:4px; overflow:hidden; }
.injury-freq-bar-fill { height:100%; border-radius:4px; background:var(--primary); transition:width 0.3s; }
.injury-freq-count { font-size:12px; font-weight:700; color:var(--text-muted); width:24px; }

/* Injury modal */
#injury-modal .pain-slider-wrap { display:flex; align-items:center; gap:12px; margin-bottom:4px; }
#injury-modal input[type="range"] { flex:1; accent-color:var(--primary); }
#injury-modal .pain-val { font-size:18px; font-weight:800; color:var(--primary); min-width:30px; text-align:center; }

/* ================================================================
   TRAININGSPLAN
   ================================================================ */
#plan-card { margin-bottom:14px; transition:box-shadow 0.3s ease, border-color 0.3s ease; }
#plan-card.plan-highlight {
    animation:planPulse 2s ease;
}
@keyframes planPulse {
    0%   { box-shadow:0 0 0 0 rgba(200,16,46,0.4); }
    30%  { box-shadow:0 0 0 8px rgba(200,16,46,0.15); }
    60%  { box-shadow:0 0 0 4px rgba(200,16,46,0.08); }
    100% { box-shadow:0 0 0 0 rgba(200,16,46,0); }
}
.plan-week-label {
    font-size:13px; font-weight:700; color:var(--text-muted); margin-bottom:10px;
    text-transform:uppercase; letter-spacing:0.5px;
}

.plan-grid { display:flex; flex-direction:column; gap:5px; }
.plan-grid-day {
    display:flex; align-items:baseline; gap:10px;
    padding:8px 12px; border-radius:8px; background:rgba(200,16,46,0.02);
}
.plan-grid-day-label { font-size:12px; font-weight:800; color:var(--primary); min-width:62px; display:inline-block; font-variant-numeric:tabular-nums; }
.plan-grid-day-val { font-size:13px; color:var(--text); }
.plan-coach-notes {
    font-size:12px; color:var(--text-muted); font-style:italic; margin-top:10px;
    padding-top:8px; border-top:1px solid var(--border);
}

/* Coach plan form */
.coach-plan-section { margin-top:24px; padding-top:20px; border-top:1px solid var(--border); }
.plan-week-range { display:block; font-size:12px; color:var(--primary); font-weight:600; margin-top:4px; }
.plan-day-row { display:flex; align-items:center; gap:6px; margin-bottom:6px; flex-wrap:nowrap; }
.plan-day-label { font-size:13px; font-weight:700; color:var(--text-secondary); width:72px; flex-shrink:0; text-align:left; font-variant-numeric:tabular-nums; }
.plan-day-select {
    width:110px; padding:7px 8px; border-radius:8px; border:1px solid var(--border);
    background:var(--bg-input); color:var(--text); font-size:12px; flex-shrink:0;
}
.plan-day-input {
    flex:1; padding:8px 12px; border-radius:8px; border:1px solid var(--border);
    background:var(--bg-input); color:var(--text); font-size:13px; min-width:0;
}
.plan-day-input.hidden { display:none; }
.plan-day-input::placeholder { color:var(--text-muted); opacity:0.5; }
.plan-day-mic {
    width:32px; height:32px; border-radius:50%; border:1px solid var(--border);
    background:var(--bg-input); color:var(--text-muted); cursor:pointer;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
    transition:all 0.2s ease;
}
.plan-day-mic:hover { border-color:var(--primary); color:var(--primary); }
.plan-day-mic.recording { background:#FF3B30; border-color:#FF3B30; color:#fff; animation:voicePulse 1s ease infinite; }
.plan-day-mic.has-voice { background:rgba(52,199,89,0.1); border-color:#34C759; color:#34C759; }
@keyframes voicePulse { 0%,100%{transform:scale(1)} 50%{transform:scale(1.15)} }
.plan-day-rec-timer {
    font-size:11px; font-weight:600; color:var(--text-muted);
    white-space:nowrap; min-width:0; flex-shrink:0;
}
.plan-day-rec-timer.rec-active {
    color:#FF3B30;
}
.plan-day-row { flex-wrap:wrap; }
.plan-day-rec-timer:not(:empty) {
    width:100%; margin-top:2px; padding-left:32px;
}

/* Coach tabs */
.coach-tab-nav { grid-template-columns:repeat(5,1fr); }
.coach-tab-content { display:none; }
.coach-tab-content.active { display:block; margin-top:12px; }

.coach-ranking-switcher {
    display:flex; gap:0; border-radius:8px; overflow:hidden; border:1px solid var(--border);
    margin-bottom:10px;
}
.coach-ranking-switcher button {
    flex:1; padding:7px 0; border:none; background:var(--bg-input); color:var(--text-secondary);
    font-family:inherit; font-size:12px; font-weight:600; cursor:pointer; transition:all 0.2s;
}
.coach-ranking-switcher button.active {
    background:var(--primary); color:#fff;
}

.plan-current-info { margin-bottom:12px; }
.plan-info-badge {
    display:inline-block; font-size:12px; font-weight:600; padding:5px 12px;
    border-radius:8px; background:rgba(255,149,0,0.08); color:#FF9500;
}

/* Plan exclude athlete checkboxes */
.plan-exclude-wrap { margin-bottom:12px; }
.plan-exclude-label { font-size:12px; font-weight:600; color:var(--text-secondary); margin-bottom:6px; display:block; }
.plan-exclude-list { display:flex; flex-wrap:wrap; gap:6px; }
.plan-exclude-chip {
    display:flex; align-items:center; gap:5px; padding:5px 10px; border-radius:8px;
    border:1px solid var(--border); background:var(--bg-card); cursor:pointer;
    font-size:12px; font-weight:600; color:var(--text); transition:all 0.15s ease;
    user-select:none; -webkit-tap-highlight-color:transparent;
}
.plan-exclude-chip input[type="checkbox"] { display:none; }
.plan-exclude-chip.checked { background:rgba(52,199,89,0.08); border-color:rgba(52,199,89,0.3); color:#34C759; }
.plan-exclude-chip .chip-check {
    width:14px; height:14px; border-radius:4px; border:1.5px solid var(--border);
    display:flex; align-items:center; justify-content:center; transition:all 0.15s ease;
    flex-shrink:0;
}
.plan-exclude-chip.checked .chip-check { background:#34C759; border-color:#34C759; }
.plan-exclude-chip.checked .chip-check::after { content:'Ã¢Å“â€œ'; color:#fff; font-size:10px; font-weight:700; }

/* Per-day voice indicator (in sent plans & athlete view) */
.day-voice-icon {
    display:inline-flex; align-items:center; justify-content:center; cursor:pointer;
    width:22px; height:22px; border-radius:50%; background:rgba(52,199,89,0.1); color:#34C759;
    flex-shrink:0; transition:all 0.15s ease; vertical-align:middle; margin-left:4px;
}
.day-voice-icon:hover { background:rgba(52,199,89,0.2); }
.day-voice-icon.playing { background:#34C759; color:#fff; }

/* Sent plans */
.sent-plan-entry {
    border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 14px;
    margin-bottom:10px; background:var(--bg-card); transition:all var(--transition-fast);
}
.sent-plan-entry:last-child { margin-bottom:0; }
.sent-plan-entry:hover { border-color:var(--border-light); }
.sent-plan-expired { opacity:0.5; }
.sent-plan-header { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:8px; }
.sent-plan-week { font-size:13px; font-weight:700; color:var(--text); }
.sent-plan-tag {
    font-size:10px; font-weight:700; padding:2px 8px; border-radius:6px; margin-left:6px;
    text-transform:uppercase; letter-spacing:0.3px;
}
.sent-plan-tag.active { background:rgba(52,199,89,0.08); color:#34C759; }
.sent-plan-tag.expired { background:rgba(0,0,0,0.03); color:var(--text-muted); }
.sent-plan-actions { display:flex; gap:4px; }
.sent-plan-edit:hover { color:var(--primary)!important; border-color:rgba(200,16,46,0.2)!important; background:rgba(200,16,46,0.03)!important; }
.sent-plan-days { display:flex; flex-direction:column; gap:3px; margin-bottom:6px; }
.sent-plan-day { display:flex; align-items:baseline; gap:8px; font-size:12px; }
.sent-plan-day-label { font-weight:800; color:var(--primary); min-width:62px; display:inline-block; font-variant-numeric:tabular-nums; }
.sent-plan-notes {
    font-size:11px; color:var(--text-muted); font-style:italic; padding-top:6px;
    border-top:1px solid var(--border); margin-top:4px;
}
.sent-plan-user { font-size:12px; font-weight:700; color:var(--primary); }
.btn-small {
    font-size:11px; padding:5px 12px; border-radius:8px; font-weight:600; cursor:pointer;
    border:1px solid var(--border); background:var(--bg-input); color:var(--text); transition:all var(--transition-fast);
}
.btn-small:hover { border-color:rgba(200,16,46,0.2); background:rgba(200,16,46,0.03); color:var(--primary); }
.btn-small.btn-danger { border-color:rgba(255,59,48,0.15); color:#FF3B30; }
.btn-small.btn-danger:hover { border-color:rgba(255,59,48,0.3); background:rgba(255,59,48,0.04); color:#FF3B30; }

.plan-week-nav {
    display:flex; align-items:center; justify-content:space-between; gap:8px;
    margin-bottom:12px; padding:6px 0;
}
.plan-week-indicator { font-size:13px; font-weight:700; color:var(--text); text-align:center; }

/* ================================================================
   CUSTOM TRAINING TYPES / SETTINGS
   ================================================================ */
.custom-types-list { margin-bottom:16px; max-height:240px; overflow-y:auto; }
.ct-item {
    display:flex; align-items:center; justify-content:space-between; gap:8px;
    padding:10px 12px; background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); margin-bottom:6px;
}
.ct-item-info { display:flex; align-items:center; gap:8px; flex:1; min-width:0; }
.ct-item-color { width:14px; height:14px; border-radius:50%; flex-shrink:0; }
.ct-item-emoji { font-size:16px; flex-shrink:0; }
.ct-item-name {
    font-size:13px; font-weight:700; color:var(--text); white-space:nowrap;
    overflow:hidden; text-overflow:ellipsis;
}
.ct-item-subs {
    font-size:10px; font-weight:600; padding:2px 6px; border-radius:5px;
    background:rgba(200,16,46,0.06); color:var(--primary); white-space:nowrap;
}
.ct-item-times { font-size:12px; flex-shrink:0; }
.ct-item-actions { display:flex; gap:4px; flex-shrink:0; }

.custom-type-form {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius); padding:14px 16px;
}
.custom-type-form h4 { font-size:14px; font-weight:700; color:var(--text); margin-bottom:10px; }

.ct-color-row { display:flex; gap:8px; flex-wrap:wrap; }
.ct-color-opt {
    width:28px; height:28px; border-radius:50%; cursor:pointer;
    border:2px solid transparent; transition:all var(--transition-fast);
}
.ct-color-opt:hover { transform:scale(1.15); }
.ct-color-opt.selected { border-color:var(--accent); box-shadow:0 0 8px rgba(0,0,0,0.1); transform:scale(1.15); }

.ct-form-actions { display:flex; gap:8px; justify-content:flex-end; margin-top:10px; }

/* Notebook */
.notebook-card { overflow:hidden; }
.notebook-header { display:flex; align-items:center; justify-content:space-between; cursor:pointer; user-select:none; }
.notebook-header h2 { margin:0; font-size:16px; }
.notebook-chevron { transition:transform 0.2s; color:var(--text-muted); }
.notebook-card.open .notebook-chevron { transform:rotate(180deg); }
.notebook-privacy {
    display:flex; align-items:flex-start; gap:6px;
    font-size:11px; color:var(--text-muted); margin-top:8px;
    padding:6px 8px; background:rgba(200,16,46,0.03);
    border-radius:var(--radius-sm); line-height:1.4;
}
.notebook-privacy svg { flex-shrink:0; margin-top:1px; color:var(--primary); }
.notebook-body { display:flex; flex-direction:column; gap:14px; margin-top:14px; }
.notebook-section { display:flex; flex-direction:column; gap:6px; }
.notebook-label { font-size:12px; font-weight:600; color:var(--text-secondary); }
.notebook-mood { display:flex; gap:6px; }
.mood-btn {
    width:40px; height:40px; border-radius:50%; border:2px solid var(--border);
    background:var(--bg-input); font-size:20px; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:all var(--transition-fast);
}
.mood-btn:hover { border-color:var(--primary); transform:scale(1.1); }
.mood-btn.active { border-color:var(--primary); background:rgba(200,16,46,0.05); transform:scale(1.1); }
.notebook-textarea {
    width:100%; padding:8px 10px; border-radius:var(--radius-sm);
    border:1px solid var(--border); background:var(--bg-input);
    color:var(--text); font-size:13px; font-family:inherit;
    resize:vertical; transition:border-color var(--transition-fast);
}
.notebook-textarea:focus { border-color:var(--primary); outline:none; }
.notebook-date-input {
    padding:8px 10px; border-radius:var(--radius-sm);
    border:1px solid var(--border); background:var(--bg-input);
    color:var(--text); font-size:13px; font-family:inherit; width:100%;
}
.notebook-date-input:focus { border-color:var(--primary); outline:none; }
.notebook-history { display:flex; flex-direction:column; gap:6px; max-height:300px; overflow-y:auto; }
.notebook-entry {
    padding:8px 10px; border-radius:var(--radius-sm);
    background:var(--bg-card); border:1px solid var(--border);
}
.notebook-entry-header { display:flex; align-items:center; justify-content:space-between; }
.notebook-entry-right { display:flex; align-items:center; gap:6px; }
.notebook-entry-chevron { color:var(--text-muted); transition:transform 0.2s; }
.notebook-entry.open .notebook-entry-chevron { transform:rotate(180deg); }
.notebook-entry-date { font-size:12px; font-weight:600; color:var(--text-secondary); }
.notebook-entry-mood { font-size:16px; }
.notebook-entry-content { padding-top:8px; }
.notebook-entry-goals { font-size:12px; color:var(--text-secondary); line-height:1.4; margin-bottom:6px; }
.notebook-entry-text { font-size:12px; color:var(--text-muted); line-height:1.4; white-space:pre-wrap; margin-bottom:8px; }
.notebook-entry-delete {
    display:inline-flex; align-items:center; gap:4px;
    background:none; border:1px solid var(--border); border-radius:var(--radius-sm);
    color:#FF3B30; font-size:11px; padding:3px 8px; cursor:pointer;
    transition:all var(--transition-fast);
}
.notebook-entry-delete:hover { background:rgba(255,59,48,0.04); border-color:#FF3B30; }

/* Settings Modal */
.settings-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.settings-header h3 { margin:0; font-size:18px; font-weight:700; letter-spacing:-0.02em; }
.settings-close {
    background:none; border:none; color:var(--text-muted);
    width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center;
    cursor:pointer; padding:0; border-radius:8px; transition:all var(--transition-fast);
}
.settings-close:hover { background:var(--bg-input); color:var(--text); }

.settings-tabs {
    display:flex; flex-wrap:wrap; gap:4px;
    margin:0 0 18px;
    padding:5px;
    background:var(--bg-input);
    border-radius:var(--radius-sm);
}
.settings-tab {
    flex:1 1 calc(33.333% - 4px);
    min-width:0;
    display:inline-flex; align-items:center; justify-content:center; gap:6px;
    padding:9px 10px; border:none; background:none; color:var(--text-muted);
    font-size:12.5px; font-weight:600; font-family:inherit; border-radius:8px;
    cursor:pointer; transition:all var(--transition-fast);
    white-space:nowrap;
    letter-spacing:-0.005em;
}
.settings-tab svg { width:14px; height:14px; flex-shrink:0; opacity:0.7; }
.settings-tab.active { background:var(--bg-card); color:var(--text); box-shadow:var(--shadow-sm); }
.settings-tab.active svg { opacity:1; color:var(--primary); }
.settings-tab:hover:not(.active) { color:var(--text-secondary); }
.settings-tab-label { display:inline; overflow:hidden; text-overflow:ellipsis; }
[data-theme="dark"] .settings-tab.active { background:var(--bg-card-hover); }
@media (max-width:420px) {
    .settings-tab { flex:1 1 calc(50% - 4px); font-size:12px; }
}

.settings-tab-content { display:none; }
.settings-tab-content.active { display:block; }

/* Notification settings */
.notif-status { padding:4px 0; }
.notif-status-text { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-secondary); }
.notif-status-icon { font-size:18px; }
.notif-active-badge { background:rgba(67,160,71,.08); color:#43a047; padding:8px 12px; border-radius:var(--radius-sm);
    font-weight:600; font-size:12px; text-align:center; margin-bottom:14px; }
.notif-option { display:flex; align-items:center; justify-content:space-between; padding:12px 0; border-bottom:1px solid var(--border); }
.notif-option:last-of-type { border-bottom:none; }
.notif-option-label { display:flex; align-items:center; gap:8px; font-size:13px; cursor:pointer; flex:1; }
.notif-option-label input[type="checkbox"] { display:none; }
/* iOS-style toggle switch */
.notif-toggle {
    position:relative; width:44px; height:26px; flex-shrink:0;
    background:#E0E0E0; border-radius:13px; cursor:pointer;
    transition:background 0.25s ease;
}
.notif-toggle::after {
    content:''; position:absolute; top:2px; left:2px;
    width:22px; height:22px; border-radius:50%;
    background:#fff; box-shadow:0 1px 3px rgba(0,0,0,0.2);
    transition:transform 0.25s ease;
}
.notif-toggle.active { background:#34C759; }
.notif-toggle.active::after { transform:translateX(18px); }
.notif-settings .btn-ghost { margin-top:14px; font-size:13px; }
.notif-sub-option { padding-left:28px; border-bottom:none !important; padding-top:4px; }
.notif-time-input {
    background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm);
    padding:6px 10px; font-size:13px; font-family:inherit; color:var(--text);
    text-align:center; width:100px;
}

/* Backup list */
.backup-list { display:flex; flex-direction:column; gap:6px; max-height:280px; overflow-y:auto; }
.backup-item {
    display:flex; align-items:center; justify-content:space-between;
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:8px 10px;
}
.backup-info { display:flex; flex-direction:column; gap:2px; }
.backup-date { font-size:12px; font-weight:600; color:var(--text); }
.backup-count { font-size:11px; color:var(--text-muted); }
.backup-actions { display:flex; gap:4px; }
.backup-btn {
    background:none; border:1px solid var(--border); border-radius:var(--radius-sm);
    padding:4px 6px; cursor:pointer; font-size:13px;
    transition:all var(--transition-fast);
}
.backup-btn:hover { background:var(--bg-card); border-color:var(--primary); }

.settings-hint { font-size:12px; color:var(--text-muted); margin-bottom:12px; }

/* Additional training type sections */
.additional-type-section {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:12px 14px; margin-bottom:8px;
}
.additional-type-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.additional-type-label { font-size:12px; font-weight:700; color:var(--primary); }
.btn-remove-additional {
    background:none; border:none; color:var(--text-muted); font-size:18px;
    cursor:pointer; padding:2px 6px; border-radius:6px; line-height:1;
}
.btn-remove-additional:hover { background:rgba(255,59,48,0.06); color:var(--danger); }

/* ================================================================
   FORMKURVE
   ================================================================ */
.formkurve-card {
    cursor:pointer; transition:transform .15s, box-shadow .15s;
    margin-bottom:16px; padding:18px 18px 10px;
}
.formkurve-card:active { transform:scale(0.98); }
.formkurve-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.formkurve-info h3 { font-size:16px; font-weight:700; margin:0; }
.formkurve-subtitle { font-size:11px; color:var(--text-muted); }
.formkurve-indicator { display:flex; align-items:center; gap:8px; }
.formkurve-emoji { font-size:28px; line-height:1; }
.formkurve-score { font-size:26px; font-weight:800; font-family:'Inter',sans-serif; }
.formkurve-score.score-up { color:#34C759; }
.formkurve-score.score-flat { color:#FF9500; }
.formkurve-score.score-down { color:#FF3B30; }
.formkurve-chart-wrap { height:100px; position:relative; }
.formkurve-hint { text-align:center; font-size:11px; color:var(--text-muted); margin-top:6px; padding-bottom:4px; }
/* Detail modal */
.formkurve-modal-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.formkurve-modal-header h3 { margin:0; font-size:17px; font-weight:700; }
.formkurve-detail-score { display:flex; align-items:center; gap:10px; margin-bottom:16px; padding:10px 14px; background:var(--bg-input); border-radius:var(--radius-sm); }
.formkurve-detail-score .formkurve-emoji { font-size:24px; }
#fk-detail-label { font-size:14px; font-weight:600; }
.fk-type-section { margin-bottom:18px; }
.fk-type-section h4 { font-size:14px; font-weight:700; margin:0 0 8px; display:flex; align-items:center; gap:6px; }
.fk-type-chart { height:140px; position:relative; }
.fk-no-data { font-size:12px; color:var(--text-muted); text-align:center; padding:20px 0; }
.fk-explainer { margin-bottom:14px; }
.fk-explain-details {
    background:var(--bg-input); border:1px solid var(--border); border-radius:12px;
    padding:0; overflow:hidden;
}
.fk-explain-details > summary {
    cursor:pointer; user-select:none; list-style:none;
    padding:10px 14px; font-size:13px; font-weight:600; color:var(--text-primary);
    display:flex; align-items:center; gap:8px;
}
.fk-explain-details > summary::-webkit-details-marker { display:none; }
.fk-explain-details > summary::before {
    content:'ⓘ'; font-size:14px; color:var(--primary); flex-shrink:0;
}
.fk-explain-details > summary::after {
    content:'›'; margin-left:auto; font-size:18px; line-height:1;
    color:var(--text-muted); transition:transform .2s;
}
.fk-explain-details[open] > summary::after { transform:rotate(90deg); }
.fk-explain-body {
    padding:0 14px 12px; font-size:12.5px; line-height:1.5; color:var(--text-secondary);
    border-top:1px solid var(--border);
}
.fk-explain-body p { margin:8px 0; }
.fk-explain-body ul { margin:6px 0 8px; padding-left:20px; }
.fk-explain-body li { margin:2px 0; }
.fk-explain-body b { color:var(--text-primary); font-weight:600; }

/* Custom location manage list */
.custom-loc-item {
    display:flex; align-items:center; gap:8px;
    background:var(--bg-input); border:1px solid var(--border); border-radius:10px;
    padding:8px 10px;
}
.custom-loc-item-name { flex:1; font-size:13px; font-weight:500; color:var(--text-primary); }
.custom-loc-item-del {
    display:inline-flex; align-items:center; justify-content:center;
    width:28px; height:28px; border-radius:6px;
    background:none; border:none; color:var(--text-secondary); cursor:pointer;
    opacity:.65; transition:all .15s; flex-shrink:0;
}
.custom-loc-item-del:hover { opacity:1; color:#e53935; background:rgba(229,57,53,0.08); }

/* ================================================================
   CHAT POPUP
   ================================================================ */
.chat-popup {
    position:fixed; bottom:80px; right:16px;
    width:340px; max-height:500px;
    background:#FFFFFF; border:1px solid var(--border);
    border-radius:var(--radius-lg); overflow:hidden;
    box-shadow:0 20px 60px rgba(0,0,0,0.15);
    z-index:950; display:flex; flex-direction:column;
    animation:chatSlideUp 0.25s ease;
}
@keyframes chatSlideUp {
    from { opacity:0; transform:translateY(20px); }
    to { opacity:1; transform:translateY(0); }
}
.chat-header {
    display:flex; align-items:center; justify-content:space-between;
    padding:14px 16px; background:var(--bg-input); border-bottom:1px solid var(--border);
}
.chat-title { font-size:14px; font-weight:700; }
.chat-close {
    background:none; border:none; color:var(--text-secondary); font-size:22px;
    cursor:pointer; line-height:1; padding:0 4px;
}
.chat-close:hover { color:var(--text); }

.chat-messages {
    flex:1; overflow-y:auto; padding:14px 14px 8px;
    display:flex; flex-direction:column; gap:10px;
    min-height:180px; max-height:320px;
}
.chat-msg {
    padding:10px 14px; border-radius:14px;
    font-size:13px; line-height:1.5; max-width:88%; word-wrap:break-word;
}
.chat-msg.user {
    background:var(--accent); color:#fff;
    align-self:flex-end; border-bottom-right-radius:4px;
}
.chat-msg.bot {
    background:var(--bg-input); color:var(--text);
    align-self:flex-start; border-bottom-left-radius:4px;
    border:1px solid var(--border);
}
.chat-msg.bot .chat-stat { color:var(--primary); font-weight:700; }

.chat-suggestions-inline { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.chat-suggestion {
    background:#FFFFFF; border:1px solid var(--border);
    border-radius:20px; padding:5px 12px;
    font-size:11px; color:var(--text-secondary); cursor:pointer;
    transition:all var(--transition-fast); font-family:inherit;
}
.chat-suggestion:hover { background:var(--bg-input); color:var(--text); border-color:var(--primary); }

.chat-input-row {
    display:flex; gap:8px; padding:10px 14px 14px;
    border-top:1px solid var(--border);
}
.chat-input-row input {
    flex:1; background:var(--bg-input); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:8px 12px;
    color:var(--text); font-size:13px; font-family:inherit;
    outline:none; transition:border-color var(--transition-fast);
}
.chat-input-row input:focus { border-color:var(--primary); }
.chat-send {
    background:var(--accent); border:none; color:#fff;
    width:36px; height:36px; border-radius:var(--radius-sm);
    display:flex; align-items:center; justify-content:center;
    cursor:pointer; transition:background var(--transition-fast);
}
.chat-send:hover { background:var(--accent-light); }

/* ================================================================
   COACH WEEKLY SUMMARY POPUP
   ================================================================ */
.coach-weekly-modal {
    max-width:440px; width:100%; text-align:left;
    padding:28px 24px 22px; max-height:85vh; overflow-y:auto;
}
.cws-header {
    display:flex; align-items:center; justify-content:space-between; margin-bottom:4px;
}
.cws-header h3 { font-size:20px; font-weight:800; color:var(--text); margin:0; }
.cws-subtitle {
    font-size:13px; color:var(--text-secondary); margin-bottom:18px; font-weight:500;
}
.cws-body { display:flex; flex-direction:column; gap:14px; }
.cws-section {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius); padding:14px 16px;
}
.cws-section-title {
    font-size:13px; font-weight:700; color:var(--text-secondary);
    text-transform:uppercase; letter-spacing:0.5px; margin-bottom:10px;
}
.cws-stat-grid {
    display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:0;
}
.cws-stat {
    text-align:center; background:var(--bg-input); border-radius:var(--radius-sm); padding:10px 6px;
}
.cws-stat-val { font-size:22px; font-weight:800; color:var(--primary); display:block; }
.cws-stat-label { font-size:10px; color:var(--text-secondary); font-weight:600; text-transform:uppercase; letter-spacing:0.3px; }
.cws-rank-list { display:flex; flex-direction:column; gap:6px; }
.cws-rank-row {
    display:flex; align-items:center; gap:10px; padding:6px 10px;
    background:var(--bg-input); border-radius:var(--radius-sm);
}
.cws-rank-pos {
    width:22px; height:22px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    font-size:11px; font-weight:800; color:#fff; flex-shrink:0;
}
.cws-rank-pos.gold { background:linear-gradient(135deg,#FFD700,#FFA500); }
.cws-rank-pos.silver { background:linear-gradient(135deg,#C0C0C0,#A0A0A0); }
.cws-rank-pos.bronze { background:linear-gradient(135deg,#CD7F32,#A0522D); }
.cws-rank-pos.normal { background:var(--text-tertiary); }
.cws-rank-name { font-size:14px; font-weight:600; color:var(--text); flex:1; }
.cws-rank-value { font-size:14px; font-weight:700; color:var(--primary); }
.cws-injury-list { display:flex; flex-direction:column; gap:6px; }
.cws-injury-row {
    display:flex; align-items:center; gap:10px; padding:8px 12px;
    background:rgba(200,16,46,0.06); border:1px solid rgba(200,16,46,0.12);
    border-radius:var(--radius-sm);
}
.cws-injury-icon { font-size:18px; flex-shrink:0; }
.cws-injury-info { flex:1; }
.cws-injury-name { font-size:13px; font-weight:700; color:var(--text); }
.cws-injury-detail { font-size:11px; color:var(--text-secondary); }
.cws-no-injury {
    display:flex; align-items:center; gap:8px; padding:10px 12px;
    background:rgba(34,211,197,0.06); border:1px solid rgba(34,211,197,0.12);
    border-radius:var(--radius-sm); font-size:13px; color:var(--text-secondary);
}
.cws-type-list { display:flex; flex-wrap:wrap; gap:6px; }
.cws-type-tag {
    display:inline-flex; align-items:center; gap:4px;
    padding:5px 10px; background:var(--bg-input); border-radius:16px;
    font-size:12px; font-weight:600; color:var(--text);
}
.cws-type-count { color:var(--primary); font-weight:800; }
.cws-actions {
    margin-top:18px; display:flex; justify-content:center;
}
.cws-actions .btn-primary {
    gap:6px; display:inline-flex; align-items:center;
}

@media (max-width:400px) {
    .chat-popup { right:10px; left:10px; width:auto; bottom:80px; max-height:70vh; }
}

/* ---- Community Tab ---- */
.community-info-box {
    display:flex; align-items:center; gap:10px;
    padding:14px 16px; margin-bottom:12px;
    background:linear-gradient(135deg, rgba(33,150,243,0.12), rgba(33,150,243,0.06));
    border:1px solid rgba(33,150,243,0.25);
    border-radius:var(--radius-sm);
    font-size:13px; color:var(--text); font-weight:500; line-height:1.45;
}
.community-info-icon { font-size:22px; flex-shrink:0; }

/* ---- Mini-Games CTA Button ---- */
.community-games-cta {
    display:flex; align-items:center; gap:12px;
    width:100%; padding:14px 16px; margin-bottom:12px;
    background:linear-gradient(135deg, rgba(200,16,46,0.08), rgba(200,16,46,0.03));
    border:1px solid rgba(200,16,46,0.18);
    border-radius:var(--radius-sm);
    cursor:pointer; transition:all .2s ease;
    text-align:left; color:var(--text);
}
.community-games-cta:hover {
    background:linear-gradient(135deg, rgba(200,16,46,0.14), rgba(200,16,46,0.06));
    border-color:rgba(200,16,46,0.35);
    transform:translateY(-1px);
    box-shadow:0 4px 12px rgba(200,16,46,0.10);
}
.community-games-cta:active { transform:translateY(0); }
.community-games-cta-icon { font-size:28px; flex-shrink:0; }
.community-games-cta-text { display:flex; flex-direction:column; gap:2px; flex:1; min-width:0; }
.community-games-cta-text strong { font-size:15px; font-weight:700; }
.community-games-cta-text small { font-size:12px; color:var(--text-secondary); font-weight:500; }
.community-games-cta-arrow { font-size:22px; font-weight:700; color:var(--primary); flex-shrink:0; opacity:.7; transition:opacity .2s; }
.community-games-cta:hover .community-games-cta-arrow { opacity:1; }

/* ---- Community Back Button ---- */
.community-back-btn {
    display:inline-flex; align-items:center; gap:6px;
    padding:8px 14px; margin-bottom:12px;
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm);
    font-size:13px; font-weight:600; color:var(--text);
    cursor:pointer; transition:all .15s ease;
}
.community-back-btn:hover {
    border-color:var(--primary); color:var(--primary);
    background:rgba(200,16,46,0.03);
}

.community-list {
    display:flex; flex-direction:column; gap:8px;
}
.community-athletes-scroll {
    display:flex; flex-direction:column; gap:6px;
    max-height:348px; overflow-y:auto;
    scrollbar-width:thin;
    -webkit-overflow-scrolling:touch;
}
.community-athletes-scroll::-webkit-scrollbar { width:4px; }
.community-athletes-scroll::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }
.community-loading {
    grid-column:1 / -1;
    text-align:center; color:var(--text-tertiary); padding:24px 0; font-size:13px;
}
.community-card {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:10px 12px;
    display:flex; align-items:center; gap:10px;
    cursor:pointer; transition:all var(--transition-fast);
}
.community-card:hover { border-color:var(--primary); background:rgba(200,16,46,0.02); }
.community-card.is-me { border-color:rgba(200,16,46,0.2); }
.community-avatar {
    width:32px; height:32px; border-radius:50%;
    background:var(--primary); color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:13px; font-weight:700; text-transform:uppercase; flex-shrink:0;
}
.community-name {
    font-size:13px; font-weight:600; color:var(--text); flex:1;
}
.community-week-header {
    font-size:11px; font-weight:600; color:var(--text-secondary);
    text-transform:uppercase; letter-spacing:0.5px;
    padding:2px 4px 6px;
}
.community-week-badge {
    font-size:13px; font-weight:700; min-width:22px; text-align:center;
    padding:2px 8px;
    border-radius:10px; background:rgba(200,16,46,0.06); color:var(--primary);
    white-space:nowrap;
}

/* ---- Community Mini-Games ---- */
.community-games-grid {
    display:grid; grid-template-columns:repeat(auto-fill, minmax(140px,1fr));
    gap:10px; margin-bottom:16px;
}
.community-game-tile {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:18px 12px;
    display:flex; flex-direction:column; align-items:center; gap:8px;
    cursor:pointer; transition:all var(--transition-fast);
    text-align:center;
}
.community-game-tile.active:hover {
    border-color:var(--primary); background:rgba(200,16,46,0.04);
    transform:translateY(-2px); box-shadow:0 4px 12px rgba(0,0,0,0.08);
}
.community-game-tile.active,
.community-game-tile.selected { border-color:rgba(200,16,46,0.2); }
.community-game-tile.selected { background:rgba(200,16,46,0.06); }
.community-game-tile.locked {
    opacity:0.5; cursor:default;
}
.community-game-icon { font-size:28px; }
.community-game-name { font-size:12px; font-weight:700; color:var(--text); }
#community-game-container {
    margin-top:12px;
    overflow:hidden;
}

/* ---- Profile Modal ---- */
.profile-modal-header {
    display:flex; align-items:center; gap:12px; margin-bottom:16px;
}
.profile-avatar-lg {
    width:48px; height:48px; border-radius:50%;
    background:var(--primary); color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:18px; font-weight:700; text-transform:uppercase; flex-shrink:0;
}
.profile-header-info { flex:1; }
.profile-header-info h3 { margin:0; font-size:16px; text-transform:capitalize; }
.profile-week-stat {
    font-size:12px; color:var(--primary); font-weight:500;
}
.profile-section { margin-bottom:14px; }
.profile-label {
    display:block; font-size:11px; font-weight:600; color:var(--text-tertiary);
    text-transform:uppercase; letter-spacing:0.5px; margin-bottom:6px;
}
.profile-bio-text {
    font-size:13px; color:var(--text-secondary); line-height:1.5;
    min-height:20px;
}
.profile-bio-text:empty::before {
    content:attr(data-empty); color:var(--text-tertiary); font-style:italic;
}
.profile-bio-input {
    width:100%; background:var(--bg-input); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:8px 10px;
    color:var(--text); font-size:13px; font-family:inherit;
    outline:none; resize:none; transition:border-color var(--transition-fast);
}
.profile-bio-input:focus { border-color:var(--primary); }

/* ============ REACTION TEST ============ */
#rt-game-area { padding:0; overflow:hidden; }

/* Mode bar */
.rt-mode-bar {
    display:flex; border-bottom:2px solid var(--border);
}
.rt-mode-btn {
    flex:1; padding:12px; border:none; background:var(--bg-card);
    color:var(--text-secondary); font-size:15px; font-weight:700;
    cursor:pointer; transition:all .2s; text-align:center;
}
.rt-mode-btn.active {
    color:var(--accent,#e53935); background:var(--bg-secondary);
    box-shadow:inset 0 -3px 0 var(--accent,#e53935);
}

/* Lobby */
.rt-lobby { padding:16px; }
.rt-lobby-header {
    display:flex; align-items:center; justify-content:space-between; margin-bottom:12px;
}
.rt-lobby-title { font-size:18px; font-weight:800; color:var(--text); }
.rt-lobby-code {
    font-family:monospace; font-size:20px; font-weight:900; letter-spacing:3px;
    color:var(--accent,#e53935); background:var(--bg-tertiary);
    padding:4px 12px; border-radius:var(--radius-sm);
}
.rt-lobby-players {
    display:flex; flex-direction:column; gap:6px; margin-bottom:12px; min-height:40px;
}
.rt-lobby-player {
    display:flex; align-items:center; gap:10px; padding:8px 12px;
    background:var(--bg-tertiary); border-radius:var(--radius-sm);
}
.rt-lobby-player .lane-num {
    width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    font-size:12px; font-weight:800; color:#fff;
}
.rt-lobby-player .name { font-weight:600; color:var(--text); flex:1; }
.rt-lobby-player .status { font-size:12px; color:var(--text-tertiary); }
.rt-lobby-player.ready .status { color:#43a047; }
.rt-lobby-player.dq .status { color:#e53935; }

/* Open lobbies browser */
.rt-open-lobbies { margin-bottom:12px; }
.rt-open-lobby-row {
    display:flex; align-items:center; justify-content:space-between;
    padding:10px 12px; background:var(--bg-tertiary); border-radius:var(--radius-sm);
    margin-bottom:6px;
}
.rt-open-lobby-info { display:flex; flex-direction:column; gap:2px; }
.rt-open-lobby-host { font-weight:700; font-size:14px; color:var(--text); }
.rt-open-lobby-count { font-size:12px; color:var(--text-secondary); }
.rt-open-lobby-join {
    padding:6px 16px; border:none; border-radius:var(--radius-sm);
    background:linear-gradient(135deg,#43a047,#2e7d32); color:#fff;
    font-weight:700; font-size:13px; cursor:pointer; transition:transform .1s;
}
.rt-open-lobby-join:active { transform:scale(.95); }
.rt-lobby-actions { display:flex; gap:8px; margin-bottom:8px; }
.rt-lobby-actions .rt-start-btn { border-radius:var(--radius-sm); font-size:14px; padding:10px; }
#rt-mp-start-btn { border-radius:var(--radius-sm); margin-bottom:4px; }
#rt-leave-btn { border-radius:var(--radius-sm); font-size:13px; padding:8px; }

/* Track scene: top-down birds-eye view */
.rt-scene {
    position:relative; width:100%; min-height:380px;
    background:#c0392b; overflow:hidden; cursor:pointer; user-select:none;
}

/* Lanes container */
.rt-lanes { position:relative; width:100%; }

.rt-lane {
    position:relative; height:64px;
    border-bottom:2px solid rgba(255,255,255,.25);
    display:flex; align-items:center;
    background:linear-gradient(180deg,rgba(180,50,30,.2) 0%,transparent 50%,rgba(0,0,0,.1) 100%);
}
.rt-lane:nth-child(odd) { background:linear-gradient(180deg,rgba(200,60,40,.15) 0%,transparent 50%,rgba(0,0,0,.08) 100%); }
.rt-lane:first-child { border-top:2px solid rgba(255,255,255,.25); }
.rt-lane:only-child { height:120px; }

/* Lane number */
.rt-lane-num {
    position:absolute; left:6px; top:50%; transform:translateY(-50%);
    width:22px; height:22px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    font-size:11px; font-weight:900; color:rgba(255,255,255,.6); background:rgba(0,0,0,.25);
    z-index:2;
}

/* Start line */
.rt-lanes::before {
    content:''; position:absolute; top:0; bottom:0; left:70px; width:3px;
    background:rgba(255,255,255,.7); z-index:3;
}
/* Staggered start marks */
.rt-lane::before {
    content:''; position:absolute; left:66px; top:0; bottom:0; width:8px;
    border-right:3px solid rgba(255,255,255,.35);
}

/* Sprinter on lane (top-down) */
.rt-lane-sprinter {
    position:absolute; left:36px; top:50%; transform:translateY(-50%);
    z-index:2; transition:left .12s ease-out;
}
.rt-lane-sprinter svg { display:block; }
.rt-lane-sprinter.go {
    animation:rtSprintTopDown .7s ease-in forwards;
}
@keyframes rtSprintTopDown {
    0%   { left:36px; }
    100% { left:calc(100% + 60px); }
}
.rt-lane-sprinter.false-start {
    animation:rtFalseStartTopDown .4s ease-out;
}
@keyframes rtFalseStartTopDown {
    0%   { left:36px; }
    30%  { left:52px; }
    60%  { left:32px; }
    100% { left:36px; }
}
.rt-lane-sprinter.dq { opacity:.35; }

/* Lane name label */
.rt-lane-name {
    position:absolute; right:8px; top:50%; transform:translateY(-50%);
    font-size:10px; font-weight:700; color:rgba(255,255,255,.7);
    text-shadow:0 1px 3px rgba(0,0,0,.5); z-index:2;
    max-width:100px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
/* Lane reaction time */
.rt-lane-time {
    position:absolute; right:8px; top:50%; transform:translateY(-50%);
    font-size:15px; font-weight:900; color:#fff;
    text-shadow:0 0 12px rgba(0,0,0,.6); z-index:4;
    display:none;
}

/* Signal lights (top center) */
.rt-lights {
    position:absolute; top:8px; left:50%; transform:translateX(-50%);
    display:flex; gap:10px; background:rgba(0,0,0,.65); padding:8px 14px;
    border-radius:24px; z-index:10;
}
.rt-light {
    width:22px; height:22px; border-radius:50%;
    background:#333; border:2px solid #555;
    transition:background .15s, box-shadow .15s;
}
.rt-light.red    { background:#e53935; box-shadow:0 0 14px #e53935; }
.rt-light.yellow { background:#fdd835; box-shadow:0 0 14px #fdd835; }
.rt-light.green  { background:#43a047; box-shadow:0 0 14px #43a047; }

/* Phase overlay */
.rt-phase-overlay {
    position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    z-index:8; pointer-events:none;
}
.rt-phase-text {
    font-size:22px; font-weight:800; color:#fff; text-transform:uppercase;
    text-shadow:0 2px 12px rgba(0,0,0,.7); letter-spacing:1px;
    opacity:0; transition:opacity .2s; max-width:90vw; text-align:center;
    word-break:break-word; line-height:1.2;
}
.rt-phase-text.visible { opacity:1; }
.rt-phase-text.flash { animation:rtFlash .5s ease-out; }
@keyframes rtFlash {
    0%   { transform:scale(1.8); opacity:1; }
    100% { transform:scale(1); opacity:1; }
}

/* Result display */
.rt-result {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    z-index:9; text-align:center; background:rgba(0,0,0,.6);
    padding:12px 24px; border-radius:12px;
}
.rt-result-time {
    font-size:56px; font-weight:900; color:#fff;
    text-shadow:0 0 24px rgba(229,57,53,.8); display:block; line-height:1;
}
.rt-result-label { font-size:16px; color:rgba(255,255,255,.7); font-weight:600; }
.rt-result.excellent .rt-result-time { color:#43a047; text-shadow:0 0 24px rgba(67,160,71,.8); }
.rt-result.good .rt-result-time      { color:#fdd835; text-shadow:0 0 24px rgba(253,216,53,.8); }
.rt-result.slow .rt-result-time      { color:#e53935; }

/* Buttons */
.rt-start-btn {
    display:flex; align-items:center; justify-content:center; gap:8px;
    width:100%; padding:14px; border:none;
    background:linear-gradient(135deg,var(--accent,#e53935),#b71c1c);
    color:#fff; font-size:16px; font-weight:700; cursor:pointer;
    transition:background .2s, transform .1s; text-transform:uppercase; letter-spacing:1px;
}
.rt-start-btn:active { transform:scale(.97); }
.rt-start-btn:disabled { opacity:.5; cursor:not-allowed; }
.rt-retry-btn { background:linear-gradient(135deg,#555,#333); }
.rt-create-btn { background:linear-gradient(135deg,#1565c0,#0d47a1); }

/* Attempt dots */
.rt-attempts {
    display:flex; justify-content:center; gap:8px; padding:10px 16px;
    background:var(--bg-card);
}
.rt-attempt-dot {
    width:14px; height:14px; border-radius:50%;
    background:var(--bg-tertiary); border:2px solid var(--border);
    transition:background .3s, border-color .3s, transform .3s;
}
.rt-attempt-dot.done    { background:#43a047; border-color:#43a047; transform:scale(1.15); }
.rt-attempt-dot.fail    { background:#e53935; border-color:#e53935; transform:scale(1.15); }
.rt-attempt-dot.current { border-color:var(--accent,#e53935); transform:scale(1.25); box-shadow:0 0 8px var(--accent,#e53935); }

/* DQ banner */
.rt-dq-banner {
    padding:14px; text-align:center; font-size:16px; font-weight:800;
    background:linear-gradient(135deg,#b71c1c,#880e0e); color:#fff;
    letter-spacing:1px; text-transform:uppercase;
}

/* Summary */
.rt-summary { padding:20px 16px; text-align:center; background:var(--bg-card); }
.rt-summary-title { font-size:20px; font-weight:800; margin-bottom:12px; color:var(--text); }
.rt-summary-stats { display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; margin-bottom:16px; }
.rt-summary-stat { background:var(--bg-tertiary); border-radius:var(--radius-sm); padding:10px 6px; }
.rt-summary-stat .val { display:block; font-size:22px; font-weight:800; color:var(--accent,#e53935); }
.rt-summary-stat .lbl { font-size:11px; color:var(--text-secondary); text-transform:uppercase; }
.rt-summary .rt-start-btn { margin-top:8px; border-radius:var(--radius-sm); }

/* Tap zone for mobile */
.rt-scene.rt-tappable { cursor:pointer; }
.rt-scene.rt-tappable::after {
    content:'TAP!'; position:absolute; inset:0; z-index:6;
    display:flex; align-items:center; justify-content:center;
    font-size:42px; font-weight:900; color:rgba(255,255,255,.12);
    pointer-events:none;
}
.btn-bio-save {
    margin-top:6px; padding:6px 18px; border:none; border-radius:var(--radius-sm);
    background:var(--accent); color:#fff; font-family:'Inter',sans-serif;
    font-size:12px; font-weight:600; cursor:pointer; transition:all var(--transition-fast);
}
.btn-bio-save:hover { background:var(--accent-light); }
.profile-comments-list {
    max-height:180px; overflow-y:auto; display:flex; flex-direction:column; gap:8px;
    margin-bottom:8px;
}
.profile-comment-item {
    background:var(--bg-card); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:8px 10px;
}
.profile-comment-header {
    display:flex; justify-content:space-between; align-items:center;
}
.btn-delete-comment {
    background:none; border:none; color:var(--text-tertiary); font-size:16px;
    cursor:pointer; padding:0 2px; line-height:1; transition:color var(--transition-fast);
}
.btn-delete-comment:hover { color:var(--danger); }
.profile-comment-author {
    font-size:11px; font-weight:600; color:var(--primary); text-transform:capitalize;
}
.profile-comment-date {
    font-size:10px; color:var(--text-tertiary); margin-left:6px;
}
.profile-comment-text {
    font-size:12px; color:var(--text-secondary); line-height:1.4; margin-top:2px;
}
.profile-no-comments {
    font-size:12px; color:var(--text-tertiary); font-style:italic; padding:8px 0;
}
.profile-comment-form {
    display:flex; gap:6px;
}
.profile-comment-form input {
    flex:1; background:var(--bg-input); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:7px 10px;
    color:var(--text); font-size:12px; font-family:inherit;
    outline:none; transition:border-color var(--transition-fast);
}
.profile-comment-form input:focus { border-color:var(--primary); }
.profile-comment-form input::placeholder { color:var(--text-tertiary); }

/* ---- Avatar Picker Modal ---- */
.avatar-modal-header {
    display:flex; align-items:center; justify-content:space-between; margin-bottom:12px;
}
.avatar-modal-header h3 { margin:0; font-size:16px; font-weight:700; }
.avatar-preview {
    width:64px; height:64px; border-radius:50%; margin:0 auto 14px;
    background:var(--bg-input); border:2px solid var(--border);
    display:flex; align-items:center; justify-content:center;
    font-size:36px; line-height:1; transition:all 0.2s ease;
    overflow:hidden;
}
.avatar-preview.has-avatar { border-color:var(--primary); }
.avatar-preview:empty::before {
    content:'?'; font-size:24px; font-weight:700; color:var(--text-muted);
}
.avatar-preview img { width:100%; height:100%; object-fit:cover; }

/* ---- Avatar Builder ---- */
.avatar-builder-row { margin-bottom:10px; text-align:left; }
.avatar-builder-label {
    font-size:10px; font-weight:700; color:var(--text-tertiary);
    text-transform:uppercase; letter-spacing:0.5px; margin-bottom:4px;
}
.avatar-builder-colors { display:flex; gap:6px; flex-wrap:wrap; }
.avatar-color-btn {
    width:30px; height:30px; border-radius:50%; border:2.5px solid transparent;
    cursor:pointer; transition:all 0.15s; outline:none;
}
.avatar-color-btn:hover { transform:scale(1.12); }
.avatar-color-btn.selected { border-color:var(--primary); box-shadow:0 0 0 2px rgba(200,16,46,0.25); }
.avatar-builder-options { display:flex; gap:4px; flex-wrap:wrap; }
.avatar-opt-btn {
    padding:5px 10px; border-radius:12px; border:1.5px solid var(--border);
    background:var(--bg-input); color:var(--text); font-size:11px; font-weight:500;
    cursor:pointer; transition:all 0.15s; font-family:inherit; outline:none;
}
.avatar-opt-btn:hover { border-color:var(--primary); }
.avatar-opt-btn.selected { border-color:var(--primary); background:rgba(200,16,46,0.06); color:var(--primary); font-weight:600; }

/* Avatar in community list & button */
.community-avatar.has-icon {
    background:var(--bg-input); font-size:20px; line-height:1; overflow:hidden;
}
.community-avatar.has-icon img { width:100%; height:100%; object-fit:cover; }
.profile-avatar-lg.has-icon {
    background:var(--bg-input); font-size:28px; line-height:1; overflow:hidden;
}
.profile-avatar-lg.has-icon img { width:100%; height:100%; object-fit:cover; }
.btn-community-avatar {
    width:22px; height:22px; display:flex; align-items:center; justify-content:center;
    font-size:16px; line-height:1; overflow:hidden; border-radius:50%;
}
.btn-community-avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; }

/* ---- My Profile Card (top of community list) ---- */
.community-my-profile {
    background:var(--bg-card); border:1px solid rgba(200,16,46,0.25);
    border-radius:var(--radius-sm); padding:10px 12px;
    display:flex; align-items:center; gap:10px;
    cursor:pointer; transition:all var(--transition-fast);
    margin-bottom:10px;
}
.community-my-profile:hover { border-color:var(--primary); background:rgba(200,16,46,0.03); }
.community-my-profile .community-avatar { width:36px; height:36px; }
.community-my-info { flex:1; display:flex; flex-direction:column; gap:1px; }
.community-my-info .community-name { font-size:13px; font-weight:700; }
.community-edit-label {
    font-size:10px; color:var(--primary); font-weight:600;
    letter-spacing:0.3px;
}
.community-my-edit {
    color:var(--text-tertiary); display:flex; align-items:center;
}

/* ---- Avatar modal bio + scroll area ---- */
.avatar-bio-section {
    text-align:left; margin-bottom:10px;
}
.avatar-bio-label {
    display:block; font-size:10px; font-weight:700; color:var(--text-tertiary);
    text-transform:uppercase; letter-spacing:0.5px; margin-bottom:4px;
}
.avatar-bio-textarea {
    width:100%; background:var(--bg-input); border:1px solid var(--border);
    border-radius:var(--radius-sm); padding:8px 10px;
    color:var(--text); font-size:13px; font-family:inherit;
    outline:none; resize:none; transition:border-color var(--transition-fast);
}
.avatar-bio-textarea:focus { border-color:var(--primary); }
.avatar-bio-textarea::placeholder { color:var(--text-tertiary); }
.avatar-scroll-area {
    max-height:320px; overflow-y:auto; padding-right:4px;
}

/* RT Leaderboard */
.rt-leaderboard {
    margin-top:20px; padding:16px; background:var(--bg-card);
    border-top:1px solid var(--border);
}
.rt-lb-title {
    font-size:18px; font-weight:800; text-align:center;
    margin-bottom:12px; color:var(--text);
}
.rt-lb-tabs {
    display:flex; justify-content:center; gap:8px; margin-bottom:14px;
}
.rt-lb-tab {
    padding:6px 18px; border-radius:var(--radius-sm); border:1px solid var(--border);
    background:var(--bg-tertiary); color:var(--text-secondary);
    font-size:13px; font-weight:600; cursor:pointer; transition:all var(--transition-fast);
}
.rt-lb-tab.active {
    background:var(--primary); color:#fff; border-color:var(--primary);
}
.rt-lb-body { min-height:40px; }
.rt-lb-loading { text-align:center; color:var(--text-tertiary); font-size:13px; padding:12px 0; }
.rt-lb-empty { text-align:center; color:var(--text-tertiary); font-size:13px; padding:12px 0; }
.rt-lb-row {
    display:flex; align-items:center; padding:8px 10px; gap:10px;
    border-radius:var(--radius-sm); transition:background var(--transition-fast);
}
.rt-lb-row:nth-child(odd) { background:var(--bg-tertiary); }
.rt-lb-row.is-me { background:rgba(var(--primary-rgb, 66,165,245),0.12); }
.rt-lb-rank {
    width:28px; text-align:center; font-weight:800; font-size:15px; flex-shrink:0;
}
.rt-lb-rank.gold { color:#FFD700; }
.rt-lb-rank.silver { color:#C0C0C0; }
.rt-lb-rank.bronze { color:#CD7F32; }
.rt-lb-name {
    flex:1; font-size:14px; font-weight:600; color:var(--text);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.rt-lb-time {
    font-size:15px; font-weight:800; color:var(--accent,#e53935);
    flex-shrink:0;
}

/* ================================================================
   SPRINT-TAPPING GAME
   ================================================================ */
.sprint-game { overflow:hidden; }
.sprint-track {
    position:relative; padding:24px 16px 8px; background:linear-gradient(135deg,#c0392b,#a93226);
    min-height:140px;
}
.sprint-runner {
    position:absolute; top:12px; left:0; font-size:28px;
    transition:left 0.08s linear; z-index:2;
}
.sprint-distance-markers {
    display:flex; justify-content:space-between; padding-top:40px;
    font-size:10px; font-weight:700; color:rgba(255,255,255,.6);
}
.sprint-progress-bar {
    height:8px; background:rgba(0,0,0,.3); border-radius:4px;
    margin-top:8px; overflow:hidden;
}
.sprint-progress-fill {
    height:100%; width:0%; background:linear-gradient(90deg,#fdd835,#43a047);
    border-radius:4px; transition:width 0.08s linear;
}
.sprint-info {
    display:flex; justify-content:space-between; align-items:center;
    padding:12px 16px; background:var(--bg-card);
}
.sprint-timer {
    font-size:28px; font-weight:900; color:var(--accent,#e53935);
    font-variant-numeric:tabular-nums;
}
.sprint-taps {
    font-size:14px; font-weight:600; color:var(--text-secondary);
}
.sprint-tap-zone {
    min-height:160px; display:flex; align-items:center; justify-content:center;
    background:var(--bg-tertiary); cursor:pointer; user-select:none;
    -webkit-user-select:none; touch-action:manipulation;
}
.sprint-tap-zone.sprint-countdown .sprint-tap-text {
    font-size:64px; font-weight:900; color:var(--accent,#e53935);
    animation:sprintPulse 0.8s ease-in-out infinite;
}
.sprint-tap-zone.sprint-active {
    background:linear-gradient(135deg,#c0392b,#e53935);
}
.sprint-tap-zone.sprint-active .sprint-tap-text {
    font-size:28px; font-weight:900; color:#fff; letter-spacing:2px;
    text-transform:uppercase; animation:sprintPulse 0.3s ease-in-out infinite;
}
.sprint-tap-text {
    font-size:16px; font-weight:600; color:var(--text-secondary);
}
@keyframes sprintPulse {
    0%,100% { transform:scale(1); }
    50% { transform:scale(1.1); }
}
.sprint-result {
    padding:20px 16px; text-align:center; background:var(--bg-card);
}
.sprint-result-title {
    font-size:24px; font-weight:800; margin-bottom:8px; color:var(--text);
}
.sprint-result-time {
    font-size:48px; font-weight:900; color:var(--accent,#e53935);
    line-height:1;
}
.sprint-result-detail {
    font-size:13px; color:var(--text-secondary); margin:8px 0 16px;
}

/* ================================================================
   WEITSPRUNG GAME
   ================================================================ */
.wj-game { overflow:hidden; }
.wj-instructions {
    padding:12px 16px; background:var(--bg-card); border-bottom:1px solid var(--border);
}
.wj-instructions-title {
    font-size:15px; font-weight:800; color:var(--text); margin-bottom:6px;
}
.wj-instructions-steps {
    display:flex; flex-direction:column; gap:4px;
    font-size:12px; color:var(--text-secondary); line-height:1.5;
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ Viewport Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-viewport {
    position:relative; width:100%; height:220px; overflow:hidden;
    border-bottom:1px solid var(--border);
    cursor:pointer; user-select:none; -webkit-user-select:none;
    touch-action:manipulation;
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ Scene v2: static athlete + scrolling track Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-scene-v2 {
    display:flex; height:100%; align-items:stretch;
}
.wj-athlete-static {
    width:50px; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    font-size:38px; background:#c0392b; z-index:5;
    border-right:2px solid rgba(255,255,255,.15);
}
.wj-track {
    position:relative; flex:1; min-width:0; overflow:hidden;
}
.wj-track-surface {
    position:absolute; inset:0;
    background:linear-gradient(180deg,#c0392b 0%,#a93226 100%);
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ Runner marker Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-footprints {
    position:absolute; top:0; bottom:0; left:0; width:100%;
    z-index:5; pointer-events:none;
}
.wj-runner-marker {
    position:absolute; top:50%; left:5%;
    transform:translate(-50%,-50%);
    font-size:30px;
    filter:drop-shadow(0 2px 6px rgba(0,0,0,.5));
    transition:left 0.06s linear;
    z-index:6;
}
.wj-trail-dot {
    position:absolute; top:50%;
    width:8px; height:8px; border-radius:50%;
    background:rgba(255,255,255,.35);
    transform:translate(-50%,-50%);
    animation:wjDotAppear 0.2s ease-out forwards;
}
@keyframes wjDotAppear {
    from { opacity:0; transform:translate(-50%,-50%) scale(0); }
    to   { opacity:1; transform:translate(-50%,-50%) scale(1); }
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ Board v2 Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-board-v2 {
    position:absolute; top:0; bottom:0; right:28%; width:70px;
    display:flex; flex-direction:row; z-index:4;
}
.wj-board-white-v2 {
    width:50px; height:100%;
    background:linear-gradient(180deg,#f5f5f5,#e0e0e0);
    border-left:2px solid #bbb; border-right:1px solid #ddd;
}
.wj-board-black-v2 {
    width:20px; height:100%;
    background:linear-gradient(180deg,#333,#1a1a1a);
    border-right:2px solid #555;
}
.wj-board-indicator {
    position:absolute; top:4px; right:28%; width:70px;
    display:flex; z-index:10; pointer-events:none;
}
.wj-bi-white {
    width:50px; text-align:center;
    font-size:7px; font-weight:900; color:rgba(0,0,0,.3);
    letter-spacing:0.5px;
}
.wj-bi-black {
    width:20px; text-align:center;
    font-size:6px; font-weight:900; color:rgba(255,255,255,.5);
    letter-spacing:0.5px;
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ Sand pit v2 Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-pit-v2 {
    position:absolute; top:0; bottom:0; right:0; width:28%;
    background:#8B4513; overflow:hidden;
}
.wj-pit-sand-v2 {
    position:absolute; top:10px; bottom:10px; left:4px; right:10px;
    background:linear-gradient(180deg,#f5e6c8,#e0c990);
    border:2px solid rgba(139,90,43,.3); border-radius:3px;
}
.wj-pit-label-v2 {
    position:absolute; bottom:2px; left:50%; transform:translateX(-50%);
    font-size:7px; font-weight:800; color:rgba(139,90,43,.4);
    letter-spacing:1px; text-transform:uppercase; white-space:nowrap; z-index:2;
}
.wj-landing-mark {
    position:absolute; top:50%; transform:translate(-50%,-50%);
    font-size:18px; z-index:8;
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ Overlays Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-distance-label {
    position:absolute; bottom:10px; left:50%; transform:translateX(-50%);
    background:rgba(0,0,0,.75); padding:6px 16px; border-radius:10px;
    z-index:20;
}
.wj-distance-label span {
    font-size:24px; font-weight:900; color:#fff;
}
.wj-foul-banner {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    background:rgba(229,57,53,.92); color:#fff; padding:10px 24px;
    border-radius:10px; font-size:18px; font-weight:900;
    letter-spacing:2px; z-index:25; text-align:center;
    animation:wjFoulPulse .4s ease-in-out 2;
}
@keyframes wjFoulPulse {
    0%,100% { transform:translate(-50%,-50%) scale(1); }
    50% { transform:translate(-50%,-50%) scale(1.08); }
}
.wj-info {
    display:flex; justify-content:space-between; padding:10px 16px;
    background:var(--bg-card); border-top:1px solid var(--border);
}
.wj-attempt-label, .wj-best-label {
    font-size:13px; font-weight:600; color:var(--text-secondary);
}
.wj-best-label { color:var(--accent,#e53935); }
.wj-tap-hint {
    padding:14px; text-align:center; font-size:18px; font-weight:800;
    color:#fff; background:linear-gradient(135deg,#43a047,#2e7d32);
    animation:sprintPulse 0.5s ease-in-out infinite;
    letter-spacing:1px; cursor:pointer;
}
.wj-result {
    padding:20px 16px; text-align:center; background:var(--bg-card);
}
.wj-result-title {
    font-size:20px; font-weight:800; margin-bottom:4px; color:var(--text);
}
.wj-result-saved {
    font-size:12px; color:#43a047; font-weight:600; margin-bottom:12px;
}
.wj-result-stats {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(80px,1fr));
    gap:8px; margin-bottom:16px;
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ WJ Doping Tracker & Button Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-doping-tracker {
    margin:10px 0 6px; padding:8px 12px; border-radius:var(--radius-sm);
    background:var(--bg-card); border:1px solid var(--border);
}
.wj-doping-label {
    font-size:12px; font-weight:600; color:var(--text-secondary); margin-bottom:6px;
}
.wj-doping-bar-track {
    height:8px; border-radius:4px; background:var(--bg-input); overflow:hidden;
}
.wj-doping-bar-fill {
    height:100%; border-radius:4px; background:linear-gradient(90deg,#e53935,#ff6f00);
    transition:width 0.5s ease;
}
.wj-doping-bar-fill.full {
    background:linear-gradient(90deg,#43a047,#66bb6a);
    animation:dopingGlow 1s ease infinite alternate;
}
@keyframes dopingGlow {
    0% { box-shadow:0 0 4px #43a047; }
    100% { box-shadow:0 0 12px #43a047; }
}
.wj-doping-btn {
    display:block; width:100%; margin:6px 0; padding:12px 16px;
    border:2px dashed #e53935; border-radius:var(--radius-sm);
    background:rgba(229,57,53,0.08); color:#e53935;
    font-size:15px; font-weight:700; cursor:pointer;
    transition:all 0.3s ease; text-align:center;
    animation:dopingReady 1.2s ease infinite;
}
@keyframes dopingReady {
    0%,100% { transform:scale(1); }
    50% { transform:scale(1.03); }
}
.wj-doping-btn:hover { background:rgba(229,57,53,0.22); }
.wj-doping-btn.active {
    background:#43a047; color:#fff; border-color:#43a047; border-style:solid;
    animation:none;
}
/* Doping injection animation overlay Ã¢â‚¬â€ shared by WJ & SW */
.doping-overlay {
    position:relative; width:100%; height:180px; margin:8px 0;
    background:radial-gradient(ellipse at center, #0a0a0a 0%, #000 100%);
    border-radius:var(--radius-sm); overflow:hidden;
    display:flex; align-items:center; justify-content:center;
    border:1px solid rgba(229,57,53,0.3);
}
.doping-vignette {
    position:absolute; inset:0;
    background:radial-gradient(ellipse at center, transparent 40%, rgba(229,57,53,0.15) 100%);
    pointer-events:none;
}
.doping-arm {
    font-size:56px; position:absolute; left:28%; top:50%;
    transform:translate(-50%,-50%); opacity:0;
    transition:all 0.4s ease;
}
.doping-arm.visible { opacity:1; }
.doping-arm.pulse {
    animation:dopingArmPulse 0.4s ease;
    filter:drop-shadow(0 0 20px #43a047);
}
.doping-syringe {
    font-size:40px; position:absolute; right:5%; top:50%;
    transform:translate(0,-50%) rotate(-15deg); opacity:0;
    transition:all 0.8s cubic-bezier(0.22,0.61,0.36,1);
}
.doping-syringe.approach {
    right:36%; opacity:1;
    filter:drop-shadow(0 0 8px rgba(229,57,53,0.6));
}
.doping-syringe.inject {
    right:32%; opacity:1;
    transform:translate(0,-50%) rotate(-5deg) scale(0.9);
    filter:drop-shadow(0 0 12px #e53935);
}
.doping-flash {
    position:absolute; inset:0; background:rgba(255,255,255,0.9);
    opacity:0; pointer-events:none;
}
.doping-flash.active {
    animation:dopingFlashBang 0.3s ease-out forwards;
}
.doping-particles {
    position:absolute; inset:0; pointer-events:none; overflow:hidden;
}
.doping-particle {
    position:absolute; width:4px; height:4px; border-radius:50%;
    background:#43a047; opacity:0;
}
.doping-particle.active {
    animation:dopingParticleFly 0.8s ease-out forwards;
}
.doping-stats {
    position:absolute; bottom:12px; left:0; right:0;
    display:flex; justify-content:center; gap:16px;
    opacity:0; transform:translateY(10px);
    transition:all 0.4s ease;
}
.doping-stats.visible {
    opacity:1; transform:translateY(0);
}
.doping-stat {
    font-size:11px; font-weight:700; color:rgba(255,255,255,0.7);
    text-transform:uppercase; letter-spacing:1px;
}
.doping-stat span {
    color:#43a047; font-weight:800; margin-left:4px;
}
.doping-text {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%) scale(0.3);
    font-size:18px; font-weight:900; color:#43a047;
    text-shadow:0 0 20px rgba(67,160,71,0.6), 0 0 40px rgba(67,160,71,0.3);
    opacity:0; white-space:nowrap; letter-spacing:2px;
    transition:all 0.5s cubic-bezier(0.22,0.61,0.36,1);
    z-index:10;
}
.doping-text.visible {
    opacity:1; transform:translate(-50%,-50%) scale(1);
}
@keyframes dopingArmPulse {
    0% { transform:translate(-50%,-50%) scale(1); }
    50% { transform:translate(-50%,-50%) scale(1.3); }
    100% { transform:translate(-50%,-50%) scale(1.15); }
}
@keyframes dopingFlashBang {
    0% { opacity:0.9; }
    100% { opacity:0; }
}
@keyframes dopingParticleFly {
    0% { opacity:1; transform:translate(0,0) scale(1); }
    100% { opacity:0; transform:translate(var(--dx), var(--dy)) scale(0); }
}
@keyframes dopingShake {
    0%,100% { transform:translateX(0); }
    20% { transform:translateX(-4px); }
    40% { transform:translateX(4px); }
    60% { transform:translateX(-3px); }
    80% { transform:translateX(2px); }
}

/* Ã¢â€â‚¬Ã¢â€â‚¬ WJ Power Bar Ã¢â€â‚¬Ã¢â€â‚¬ */
.wj-power-bar {
    position:absolute; bottom:8px; left:10%; width:80%; z-index:30; text-align:center;
}
.wj-power-track {
    position:relative; height:18px; border-radius:9px;
    background:linear-gradient(90deg, #e53935 0%, #fb8c00 25%, #43a047 45%, #43a047 55%, #fb8c00 75%, #e53935 100%);
    border:2px solid rgba(255,255,255,.3);
    overflow:visible;
}
.wj-power-cursor {
    position:absolute; top:-3px; width:5px; height:24px;
    background:#fff; border-radius:2px; left:0%;
    box-shadow:0 0 8px rgba(255,255,255,.9);
}
.wj-power-label {
    font-size:11px; font-weight:800; color:#fff; margin-top:4px;
    text-shadow:0 1px 3px rgba(0,0,0,.6);
}

/* ================================================================
   HOCHSPRUNG GAME
   ================================================================ */
.hj-game { overflow:hidden; }
.hj-instructions {
    padding:12px 16px; background:var(--bg-card); border-bottom:1px solid var(--border);
}
.hj-instructions-title {
    font-size:15px; font-weight:800; color:var(--text); margin-bottom:6px;
}
.hj-instructions-steps {
    display:flex; flex-direction:column; gap:4px;
    font-size:12px; color:var(--text-secondary); line-height:1.5;
}
.hj-viewport {
    position:relative; width:100%; height:240px; overflow:hidden;
    background:linear-gradient(180deg,#87CEEB 0%,#b0d8f0 60%,#8B7355 60%,#6B5B45 100%);
    border-bottom:1px solid var(--border);
    cursor:pointer; user-select:none; -webkit-user-select:none;
    touch-action:manipulation;
}
.hj-scene {
    position:relative; width:100%; height:100%;
}
.hj-ground {
    position:absolute; bottom:0; left:0; right:0; height:40%;
    background:linear-gradient(180deg,#8B7355,#6B5B45);
}
.hj-mat {
    position:absolute; bottom:12px; right:15%; width:25%; height:35px;
    background:linear-gradient(180deg,#1565C0,#0D47A1);
    border-radius:4px; border:2px solid rgba(255,255,255,.15);
    z-index:2;
}
.hj-uprights {
    position:absolute; bottom:12px; z-index:3;
}
.hj-upright-left {
    position:absolute; bottom:0; left:0; width:6px;
    background:linear-gradient(180deg,#ddd,#999);
    border-radius:2px 2px 0 0;
}
.hj-upright-right {
    position:absolute; bottom:0; right:0; width:6px;
    background:linear-gradient(180deg,#ddd,#999);
    border-radius:2px 2px 0 0;
}
.hj-bar {
    position:absolute; left:6px; right:6px; height:4px;
    background:linear-gradient(180deg,#ff6f00,#e65100);
    border-radius:2px;
    box-shadow:0 2px 4px rgba(0,0,0,.3);
}
.hj-athlete {
    position:absolute; bottom:12px; left:5%;
    font-size:36px; z-index:4;
    transition:none;
}
.hj-height-display {
    position:absolute; top:8px; right:12px;
    font-size:28px; font-weight:900; color:#fff;
    text-shadow:0 2px 6px rgba(0,0,0,.5);
    z-index:10;
}
.hj-power-bar {
    position:absolute; bottom:8px; left:10%; width:80%; z-index:30; text-align:center;
}
.hj-power-track {
    position:relative; height:18px; border-radius:9px;
    border:2px solid rgba(255,255,255,.3);
    overflow:visible;
}
.hj-power-cursor {
    position:absolute; top:-3px; width:5px; height:24px;
    background:#fff; border-radius:2px; left:0%;
    box-shadow:0 0 8px rgba(255,255,255,.9);
}
.hj-power-label {
    font-size:11px; font-weight:800; color:#fff; margin-top:4px;
    text-shadow:0 1px 3px rgba(0,0,0,.6);
}
.hj-result-overlay {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    background:rgba(67,160,71,.92); color:#fff; padding:10px 24px;
    border-radius:10px; font-size:18px; font-weight:900;
    letter-spacing:2px; z-index:25; text-align:center;
    animation:wjFoulPulse .4s ease-in-out 2;
}
.hj-fail-overlay {
    background:rgba(229,57,53,.92);
}
.hj-info {
    display:flex; justify-content:space-between; padding:10px 16px;
    background:var(--bg-card); border-top:1px solid var(--border);
}
.hj-height-label, .hj-attempt-label {
    font-size:13px; font-weight:600; color:var(--text-secondary);
}
.hj-height-label { color:var(--accent,#e53935); }
.hj-result {
    padding:20px 16px; text-align:center; background:var(--bg-card);
}
.hj-result-title {
    font-size:20px; font-weight:800; margin-bottom:4px; color:var(--text);
}
.hj-result-saved {
    font-size:12px; color:#43a047; font-weight:600; margin-bottom:12px;
}
.hj-result-stats {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(80px,1fr));
    gap:8px; margin-bottom:16px;
}

/* ================================================================
   SPEERWERFEN GAME
   ================================================================ */
.sw-game { overflow:hidden; }
.sw-instructions {
    padding:12px 16px; background:var(--bg-card); border-bottom:1px solid var(--border);
}
.sw-instructions-title {
    font-size:15px; font-weight:800; color:var(--text); margin-bottom:6px;
}
.sw-instructions-steps {
    display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--text-secondary);
}
.sw-viewport {
    position:relative; width:100%; height:240px; overflow:hidden;
    border-bottom:1px solid var(--border);
    cursor:pointer; user-select:none; -webkit-user-select:none;
    touch-action:manipulation;
}
.sw-scene {
    position:relative; width:100%; height:100%;
    background:linear-gradient(180deg,#87CEEB 0%,#b0d8f0 40%,#4a7c3a 40%,#3d6b30 100%);
}
.sw-track-bg {
    position:absolute; bottom:0; left:0; width:40%; height:60%;
    background:linear-gradient(90deg,#c0392b,#a93226);
    border-top:3px solid #fff;
}
.sw-throw-line {
    position:absolute; bottom:0; left:40%; width:4px; height:60%;
    background:#fff; z-index:5;
}
.sw-thrower {
    position:absolute; bottom:32%; left:5%; font-size:36px;
    transition:left 0.08s linear; z-index:10;
}
.sw-spear-flying {
    position:absolute; font-size:28px; z-index:8;
    transition:none;
}
.sw-landing-zone {
    position:absolute; top:0; right:0; width:58%; height:100%;
}
.sw-distance-markers {
    position:absolute; bottom:2px; left:0; right:0; height:16px;
}
.sw-distance-markers span {
    position:absolute; font-size:9px; font-weight:700;
    color:rgba(255,255,255,0.7); transform:translateX(-50%);
}
.sw-landing-mark {
    position:absolute; top:30%; font-size:20px; z-index:6;
}
.sw-angle-bar {
    position:absolute; bottom:50px; left:10%; width:80%; z-index:30; text-align:center;
}
.sw-angle-track {
    position:relative; height:18px; border-radius:9px;
    background:linear-gradient(90deg,#e53935 0%,#fb8c00 20%,#43a047 42%,#66bb6a 50%,#43a047 58%,#fb8c00 80%,#e53935 100%);
    overflow:hidden;
}
.sw-angle-optimal {
    position:absolute; left:45%; width:10%; height:100%;
    border-left:2px dashed rgba(255,255,255,0.5);
    border-right:2px dashed rgba(255,255,255,0.5);
    pointer-events:none;
}
.sw-angle-cursor {
    position:absolute; top:-2px; width:6px; height:22px;
    background:#fff; border-radius:3px;
    box-shadow:0 0 6px rgba(0,0,0,0.4); transition:none;
}
.sw-angle-label {
    font-size:11px; font-weight:700; color:#fff; margin-top:4px;
    text-shadow:0 1px 3px rgba(0,0,0,0.5);
}
.sw-power-bar {
    position:absolute; bottom:8px; left:10%; width:80%; z-index:30; text-align:center;
}
.sw-power-track {
    position:relative; height:18px; border-radius:9px;
    background:linear-gradient(90deg,#e53935 0%,#fb8c00 25%,#43a047 45%,#43a047 55%,#fb8c00 75%,#e53935 100%);
    overflow:hidden;
}
.sw-power-cursor {
    position:absolute; top:-2px; width:6px; height:22px;
    background:#fff; border-radius:3px;
    box-shadow:0 0 6px rgba(0,0,0,0.4); transition:none;
}
.sw-power-label {
    font-size:11px; font-weight:700; color:#fff; margin-top:4px;
    text-shadow:0 1px 3px rgba(0,0,0,0.5);
}
.sw-distance-label {
    position:absolute; bottom:10px; left:50%; transform:translateX(-50%);
    background:rgba(0,0,0,.75); padding:6px 16px; border-radius:10px;
    z-index:20;
}
.sw-distance-label span {
    font-size:24px; font-weight:900; color:#fff;
}
.sw-foul-banner {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    background:rgba(229,57,53,0.95); color:#fff; font-size:20px; font-weight:800;
    padding:12px 28px; border-radius:12px; z-index:40;
    animation:hjBannerIn 0.3s ease;
}
.sw-info {
    display:flex; justify-content:space-between; padding:8px 16px;
    font-size:13px; font-weight:600; color:var(--text-secondary);
    border-bottom:1px solid var(--border);
}
.sw-tap-hint {
    position:fixed; bottom:60px; left:50%; transform:translateX(-50%);
    background:rgba(0,0,0,0.85); color:#fff; padding:10px 24px;
    border-radius:20px; font-size:15px; font-weight:700; z-index:100;
    animation:rtPulse 1s ease infinite; pointer-events:none;
}
.sw-action-btn {
    padding:16px; text-align:center; font-size:18px; font-weight:800;
    color:#fff; background:linear-gradient(135deg,#43a047,#2e7d32);
    animation:sprintPulse 0.5s ease-in-out infinite;
    letter-spacing:1px; cursor:pointer; border:none; border-radius:0;
    -webkit-tap-highlight-color:transparent; user-select:none;
}
.sw-result {
    padding:20px 16px; text-align:center;
}
.sw-result-title {
    font-size:20px; font-weight:800; margin-bottom:4px; color:var(--text);
}
.sw-result-saved {
    font-size:12px; color:#43a047; font-weight:600; margin-bottom:12px;
}
.sw-result-stats {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(80px,1fr));
    gap:8px; margin-bottom:16px;
}
.sw-doping-tracker {
    margin:10px 16px 6px; padding:8px 12px; border-radius:var(--radius-sm);
    background:var(--bg-card); border:1px solid var(--border);
}
.sw-doping-label {
    font-size:12px; font-weight:600; color:var(--text-secondary); margin-bottom:6px;
}
.sw-doping-bar-track {
    height:8px; border-radius:4px; background:var(--bg-input); overflow:hidden;
}
.sw-doping-bar-fill {
    height:100%; border-radius:4px; background:linear-gradient(90deg,#e53935,#ff6f00);
    transition:width 0.5s ease;
}
.sw-doping-bar-fill.full {
    background:linear-gradient(90deg,#43a047,#66bb6a);
    animation:dopingGlow 1s ease infinite alternate;
}
/* SW doping overlay uses shared .doping-overlay styles */

/* Dynamic ceiling info in leaderboards */
.rt-lb-record-info {
    padding:8px 12px; margin-top:8px; text-align:center;
    font-size:11px; font-weight:600; color:var(--accent,#e53935);
    background:var(--bg-input); border-radius:var(--radius-sm);
    border:1px dashed var(--border);
}

/* ================================================================
   HÃƒÅ“RDENLAUF GAME
   ================================================================ */
.hl-game { overflow:hidden; }
.hl-instructions {
    padding:12px 16px; background:var(--bg-card); border-bottom:1px solid var(--border);
}
.hl-instructions-title {
    font-size:15px; font-weight:800; color:var(--text); margin-bottom:6px;
}
.hl-instructions-steps {
    display:flex; flex-direction:column; gap:4px;
    font-size:12px; color:var(--text-secondary); line-height:1.5;
}
.hl-viewport {
    position:relative; width:100%; height:280px; overflow:hidden;
    border-bottom:1px solid var(--border);
    cursor:pointer; user-select:none; -webkit-user-select:none;
    touch-action:manipulation;
}
/* Sky with gradient */
.hl-sky {
    position:absolute; top:0; left:0; right:0; height:35%;
    background:linear-gradient(180deg,#1a237e 0%,#3949ab 40%,#5c6bc0 70%,#7986cb 100%);
    z-index:0;
}
.hl-cloud {
    position:absolute; background:rgba(255,255,255,.15); border-radius:50%;
    height:16px; width:50px;
}
.hl-cloud::after {
    content:''; position:absolute; background:inherit; border-radius:inherit;
    height:12px; width:35px; top:-6px; left:10px;
}
.hl-cloud-1 { top:10%; left:15%; animation:hlCloudDrift 25s linear infinite; }
.hl-cloud-2 { top:18%; left:55%; width:40px; animation:hlCloudDrift 30s linear infinite reverse; }
.hl-cloud-3 { top:6%; left:75%; width:60px; animation:hlCloudDrift 20s linear infinite; }
@keyframes hlCloudDrift {
    0% { transform:translateX(0); }
    100% { transform:translateX(-80px); }
}
/* Stadium crowd */
.hl-crowd {
    position:absolute; top:25%; left:0; right:0; height:15%;
    background:
        repeating-linear-gradient(90deg,
            rgba(233,30,99,.4) 0px, rgba(233,30,99,.4) 8px,
            rgba(33,150,243,.4) 8px, rgba(33,150,243,.4) 16px,
            rgba(255,193,7,.4) 16px, rgba(255,193,7,.4) 24px,
            rgba(76,175,80,.4) 24px, rgba(76,175,80,.4) 32px);
    z-index:1;
    border-top:2px solid rgba(255,255,255,.1);
    border-bottom:2px solid rgba(255,255,255,.15);
}
/* Track */
.hl-track {
    position:absolute; top:40%; left:0; right:0; bottom:0;
    background:linear-gradient(180deg,#c62828 0%,#b71c1c 50%,#8e0000 100%);
    z-index:2;
}
.hl-lane-lines { position:absolute; inset:0; z-index:1; }
.hl-lane-line {
    position:absolute; left:0; right:0; height:3px;
    background:rgba(255,255,255,.25);
}
.hl-lane-top { top:15%; }
.hl-lane-bot { bottom:15%; }
/* Runner */
.hl-runner {
    position:absolute; left:8%; top:50%; transform:translateY(-50%);
    font-size:42px; z-index:10; transition:none;
    filter:drop-shadow(2px 2px 4px rgba(0,0,0,.4));
}
.hl-runner.hl-jumping {
    animation:hlJumpAnim 0.45s ease-out;
}
@keyframes hlJumpAnim {
    0% { transform:translateY(-50%); }
    30% { transform:translateY(-155%); }
    55% { transform:translateY(-145%); }
    100% { transform:translateY(-50%); }
}
.hl-runner.hl-stumble {
    animation:hlStumbleAnim 0.5s ease-out;
}
@keyframes hlStumbleAnim {
    0% { transform:translateY(-50%) rotate(0deg); }
    30% { transform:translateY(-80%) rotate(-15deg); }
    60% { transform:translateY(-40%) rotate(10deg); }
    100% { transform:translateY(-50%) rotate(0deg); }
}
.hl-runner.hl-crash-anim {
    animation:hlCrashAnim 0.6s ease-out forwards;
}
@keyframes hlCrashAnim {
    0% { transform:translateY(-50%) rotate(0deg); }
    30% { transform:translateY(-30%) rotate(-25deg); }
    60% { transform:translateY(-20%) rotate(15deg) scale(0.9); }
    100% { transform:translateY(-30%) rotate(-5deg) scale(0.95); }
}
/* Hurdles */
.hl-hurdle {
    position:absolute; top:38%; width:6px; height:28%;
    z-index:5; transition:none;
}
.hl-hurdle-post-l, .hl-hurdle-post-r {
    position:absolute; bottom:0; width:2px; height:100%;
    background:linear-gradient(180deg,#fff,#ccc);
    border-radius:1px;
}
.hl-hurdle-post-l { left:0; }
.hl-hurdle-post-r { right:0; }
.hl-hurdle-bar-top {
    position:absolute; top:0; left:-2px; right:-2px; height:4px;
    background:linear-gradient(180deg,#e53935,#fff);
    border-radius:2px;
    box-shadow:0 1px 3px rgba(0,0,0,.3);
}
.hl-hurdle.hl-hurdle-cleared .hl-hurdle-bar-top {
    background:linear-gradient(180deg,#43a047,#a5d6a7);
}
.hl-hurdle.hl-hurdle-hit {
    animation:hlHurdleKnock 0.4s ease-out forwards;
}
@keyframes hlHurdleKnock {
    0% { transform:rotate(0deg); }
    100% { transform:rotate(35deg) translateY(10px); opacity:0.5; }
}
/* Jump zone marker on ground */
.hl-jump-marker {
    position:absolute; top:62%; width:40px; height:6px;
    background:linear-gradient(90deg,transparent,rgba(67,160,71,.6),rgba(67,160,71,.8),rgba(67,160,71,.6),transparent);
    border-radius:3px; z-index:4;
    box-shadow:0 0 8px rgba(67,160,71,.3);
}
.hl-jump-marker::before {
    content:'\25B2'; position:absolute; top:-14px; left:50%; transform:translateX(-50%);
    font-size:10px; color:rgba(67,160,71,.7);
}
/* Finish line */
.hl-finish {
    position:absolute; top:10%; width:6px; bottom:10%;
    background:repeating-linear-gradient(180deg,#000 0px,#000 5px,#fff 5px,#fff 10px);
    z-index:4; border-radius:2px; display:none;
}
/* HUD overlay */
.hl-hud {
    position:absolute; top:8px; left:8px; right:8px;
    display:flex; justify-content:space-between;
    z-index:20; pointer-events:none;
}
.hl-hud-item {
    display:flex; flex-direction:column; align-items:center;
    background:rgba(0,0,0,.55); backdrop-filter:blur(4px);
    padding:4px 10px; border-radius:8px;
    border:1px solid rgba(255,255,255,.1);
}
.hl-hud-val {
    font-size:18px; font-weight:900; color:#fff;
    font-variant-numeric:tabular-nums;
    text-shadow:0 1px 3px rgba(0,0,0,.5);
}
.hl-hud-lbl {
    font-size:9px; font-weight:600; color:rgba(255,255,255,.7);
    text-transform:uppercase; letter-spacing:.5px;
}
#hl-penalty { color:#ff9800; }
/* Timing hint */
.hl-timing-hint {
    position:absolute; bottom:12px; left:50%; transform:translateX(-50%);
    z-index:25; background:rgba(67,160,71,.9);
    color:#fff; font-weight:800; font-size:14px;
    padding:6px 18px; border-radius:20px;
    animation:hlHintPulse 0.4s ease-in-out infinite alternate;
    box-shadow:0 2px 12px rgba(67,160,71,.5);
}
@keyframes hlHintPulse {
    0% { transform:translateX(-50%) scale(1); }
    100% { transform:translateX(-50%) scale(1.08); }
}
/* Result */
.hl-result {
    padding:20px 16px; text-align:center; background:var(--bg-card);
}
.hl-result-title {
    font-size:20px; font-weight:800; margin-bottom:4px; color:var(--text);
}
.hl-result-saved {
    font-size:12px; color:#43a047; font-weight:600; margin-bottom:12px;
}
.hl-result-stats {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(80px,1fr));
    gap:8px; margin-bottom:16px;
}
/* Action button (jump / react) */
.hl-action-btn {
    padding:16px; text-align:center; font-size:20px; font-weight:800;
    color:#fff; background:linear-gradient(135deg,#43a047,#2e7d32);
    animation:sprintPulse 0.5s ease-in-out infinite;
    letter-spacing:1px; cursor:pointer;
    user-select:none; -webkit-user-select:none;
    touch-action:manipulation;
}
.hl-action-btn.hl-action-wait {
    background:linear-gradient(135deg,#616161,#424242);
    animation:none;
    opacity:.7;
}
.hl-action-btn.hl-action-react {
    background:linear-gradient(135deg,#ff9800,#e65100);
    animation:hlReactPulse 0.3s ease-in-out infinite alternate;
    opacity:1;
}
@keyframes hlReactPulse {
    0% { transform:scale(1); }
    100% { transform:scale(1.03); }
}
.hl-false-start-banner {
    position:absolute; inset:0; z-index:30;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    background:rgba(229,57,53,.9); color:#fff;
    font-size:22px; font-weight:900; text-align:center;
}
.hl-false-start-banner .hl-fs-sub {
    font-size:14px; font-weight:600; margin-top:6px; opacity:.85;
}
/* Confetti */
.hl-confetti-container {
    position:absolute; inset:0; z-index:50; pointer-events:none; overflow:hidden;
}
.hl-confetti-piece {
    position:absolute; top:-10px; border-radius:2px;
    animation:hlConfettiFall 2s ease-in forwards;
}
@keyframes hlConfettiFall {
    0% { transform:translateY(0) translateX(0) rotate(0deg); opacity:1; }
    100% { transform:translateY(320px) translateX(var(--hlcx)) rotate(var(--hlcr)); opacity:0; }
}
/* Doping tracker */
.hl-doping-tracker {
    padding:8px 16px; background:var(--bg-card); border-top:1px solid var(--border);
}

/* ================================================================
   GAME FULLSCREEN MODE
   ================================================================ */
#community-game-container,#sprint-game-container,#wj-game-container,
#hj-game-container,#sw-game-container,#hl-game-container { position:relative; }

.game-fs-btn {
    position:absolute; top:10px; right:10px; z-index:60;
    width:36px; height:36px; border-radius:50%;
    background:rgba(0,0,0,0.7); border:none; color:#fff;
    display:flex; align-items:center; justify-content:center;
    cursor:pointer; font-size:18px; line-height:1;
    backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
    transition:background 0.2s, transform 0.15s;
    -webkit-tap-highlight-color:transparent;
}
.game-fs-btn:active { transform:scale(0.9); }
.game-fs-btn svg { width:18px; height:18px; stroke-width:2.5; }

/* Close button only shown in fullscreen */
.game-fs-close {
    display:none; position:fixed; top:calc(env(safe-area-inset-top, 0px) + 10px); right:10px; z-index:10000;
    width:40px; height:40px; border-radius:50%;
    background:rgba(0,0,0,0.75); border:none; color:#fff;
    font-size:24px; font-weight:700; line-height:1; cursor:pointer;
    align-items:center; justify-content:center;
    backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
    -webkit-tap-highlight-color:transparent;
}

/* Fullscreen state Ã¢â‚¬â€ full screen edge-to-edge, stays within app width */
.game-fullscreen {
    position:fixed !important; top:0 !important; bottom:0 !important; z-index:9999 !important;
    left:50% !important; right:auto !important; transform:translateX(-50%) !important;
    width:100% !important; max-width:600px !important;
    display:flex !important; flex-direction:column !important;
    background:var(--bg-body, #F5F5F7) !important;
    height:100dvh !important;
    overflow-y:auto !important;
    padding:0;
}
.game-fullscreen .game-fs-btn { display:none; }
.game-fullscreen .game-fs-close { display:flex; }

/* Inner game fills container */
.game-fullscreen > .sprint-game,
.game-fullscreen > .wj-game,
.game-fullscreen > .hj-game,
.game-fullscreen > .sw-game,
.game-fullscreen > .hl-game,
.game-fullscreen > #rt-game-community {
    flex:1; display:flex; flex-direction:column; overflow-y:auto;
}

/* --- Viewports fill available space --- */
.game-fullscreen .wj-viewport,
.game-fullscreen .hj-viewport,
.game-fullscreen .sw-viewport {
    height:calc(100dvh - 200px) !important; flex-shrink:0;
}
.game-fullscreen .hl-viewport {
    height:calc(100dvh - 180px) !important; flex-shrink:0;
}
.game-fullscreen .sprint-track {
    min-height:calc(100dvh - 320px) !important;
}
.game-fullscreen .rt-scene {
    min-height:calc(100dvh - 160px) !important;
}

/* --- Scale up emoji characters --- */
.game-fullscreen .sprint-runner { font-size:52px !important; top:16px !important; }
.game-fullscreen .wj-athlete-static { font-size:60px !important; width:75px !important; }
.game-fullscreen .wj-runner-marker { font-size:48px !important; }
.game-fullscreen .hj-athlete { font-size:60px !important; }
.game-fullscreen .hj-height-display { font-size:40px !important; }
.game-fullscreen .sw-thrower { font-size:60px !important; }
.game-fullscreen .sw-spear-flying { font-size:44px !important; }
.game-fullscreen .hl-runner { font-size:66px !important; }

/* --- Scale up structural elements --- */
.game-fullscreen .sprint-progress-bar { height:12px !important; }
.game-fullscreen .sprint-distance-markers { font-size:14px !important; padding-top:60px !important; }
.game-fullscreen .hj-upright-left,
.game-fullscreen .hj-upright-right { width:8px !important; }
.game-fullscreen .hj-bar { height:6px !important; }
.game-fullscreen .hj-mat { height:50px !important; }
.game-fullscreen .hl-hurdle { width:8px !important; }
.game-fullscreen .hl-hurdle-bar-top { height:6px !important; }
.game-fullscreen .hl-finish { width:8px !important; }
.game-fullscreen .hl-lane-line { height:4px !important; }
.game-fullscreen .hl-cloud { height:24px !important; width:70px !important; }
.game-fullscreen .hl-hud-val { font-size:22px !important; }
.game-fullscreen .sw-throw-line { width:6px !important; }
.game-fullscreen .wj-board-v2 { width:90px !important; }
.game-fullscreen .wj-board-white-v2 { width:66px !important; }
.game-fullscreen .wj-board-black-v2 { width:24px !important; }
.game-fullscreen .wj-landing-mark { font-size:26px !important; }

/* --- Bigger power/angle bars --- */
.game-fullscreen .wj-power-track,
.game-fullscreen .hj-power-track,
.game-fullscreen .sw-power-track,
.game-fullscreen .sw-angle-track { height:24px !important; }
.game-fullscreen .wj-power-cursor,
.game-fullscreen .hj-power-cursor,
.game-fullscreen .sw-power-cursor,
.game-fullscreen .sw-angle-cursor { height:32px !important; }

/* --- Bigger tap zone + action buttons --- */
.game-fullscreen .sprint-tap-zone { min-height:200px !important; }
.game-fullscreen .sprint-tap-text { font-size:22px !important; }
.game-fullscreen .sprint-timer { font-size:36px !important; }
.game-fullscreen .rt-start-btn,
.game-fullscreen .wj-start-btn,
.game-fullscreen .wj-action-btn,
.game-fullscreen .hj-action-btn,
.game-fullscreen .sw-action-btn,
.game-fullscreen .hl-action-btn {
    font-size:18px !important; padding:18px 32px !important;
}

/* --- RT: bigger lights & lanes --- */
.game-fullscreen .rt-light { width:30px !important; height:30px !important; }
.game-fullscreen .rt-phase-text { font-size:28px !important; }
.game-fullscreen .rt-result-time { font-size:72px !important; }
.game-fullscreen .rt-lane { min-height:70px !important; }
.game-fullscreen .rt-lane-sprinter svg { height:50px !important; width:60px !important; }
.game-fullscreen .rt-lane-name { font-size:14px !important; }
.game-fullscreen .rt-lane-time { font-size:16px !important; }

/* --- Hide leaderboard in fullscreen (scroll down to see after exit) --- */
.game-fullscreen .community-leaderboard { display:none !important; }

/* ================================================================
   ATHLETE INSIGHT ENGINE
   ================================================================ */

/* Top bar */
.aie-topbar {
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:10px; padding:0 2px;
}
.aie-topbar-title { font-size:15px; font-weight:800; letter-spacing:-0.02em; color:var(--text); }
.aie-topbar-back {
    width:32px; height:32px; border:none; border-radius:50%;
    background:var(--bg-elevated); color:var(--text-secondary);
    font-size:16px; font-weight:700; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    box-shadow:var(--shadow-sm); transition:all var(--transition-fast);
    -webkit-tap-highlight-color:transparent;
}
.aie-topbar-back:active { transform:scale(0.9); }

/* Toggle Button */
.aie-toggle-compact { padding:10px 14px !important; }
.aie-toggle-btn {
    display:flex; align-items:center; gap:12px; width:100%;
    padding:4px 0; border:none; background:transparent;
    cursor:pointer; text-align:left; color:var(--text);
    -webkit-tap-highlight-color:transparent;
}
.aie-toggle-icon { font-size:24px; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; color:var(--primary); }
.aie-toggle-icon svg { width:24px; height:24px; }
.aie-toggle-text { display:flex; flex-direction:column; gap:1px; flex:1; }
.aie-toggle-text strong { font-size:14px; font-weight:800; letter-spacing:-0.02em; }
.aie-toggle-text small { font-size:11px; color:var(--text-secondary); }
.aie-toggle-arrow { font-size:18px; color:var(--text-tertiary); font-weight:700; }

/* Back button (bottom) */
.aie-back-btn {
    display:block; width:100%; padding:14px; margin-top:8px;
    border:none; border-radius:var(--radius-sm); background:var(--bg-card);
    color:var(--text-secondary); font-size:14px; font-weight:600;
    cursor:pointer; text-align:center;
    box-shadow:var(--shadow-sm); transition:all var(--transition-fast);
}
.aie-back-btn:active { transform:scale(0.98); }

/* Cards */
.aie-card { margin-bottom:12px; }
.aie-subtitle { font-size:12px; color:var(--text-secondary); margin-bottom:14px; }

/* Empty States */
.aie-empty-text {
    font-size:13px; color:var(--text-tertiary); text-align:center;
    padding:20px 16px; line-height:1.6;
}

/* Readiness Sliders */
.aie-sliders { display:flex; flex-direction:column; gap:14px; }
.aie-slider-row {
    display:grid; grid-template-columns:120px 1fr 28px;
    align-items:center; gap:10px;
}
.aie-slider-row label { font-size:13px; font-weight:600; color:var(--text); }
.aie-range {
    -webkit-appearance:none; appearance:none; width:100%; height:6px;
    border-radius:3px; background:var(--bg-elevated); outline:none;
}
.aie-range::-webkit-slider-thumb {
    -webkit-appearance:none; appearance:none; width:22px; height:22px;
    border-radius:50%; background:var(--primary); cursor:pointer;
    box-shadow:0 1px 4px rgba(0,0,0,0.15);
}
.aie-range::-moz-range-thumb {
    width:22px; height:22px; border-radius:50%; background:var(--primary);
    border:none; cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,0.15);
}
.aie-range-val {
    font-size:14px; font-weight:700; color:var(--primary);
    text-align:center; min-width:20px;
}

/* Save Button */
.aie-save-btn {
    display:block; width:100%; margin-top:16px; padding:14px;
    border:none; border-radius:var(--radius-sm);
    background:linear-gradient(135deg, var(--primary), var(--primary-dark));
    color:#fff; font-size:15px; font-weight:700; cursor:pointer;
    box-shadow:var(--shadow-glow); transition:all var(--transition-fast);
}
.aie-save-btn:active { transform:scale(0.97); opacity:0.9; }

/* Score Ring */
.aie-score-display {
    display:flex; flex-direction:column; align-items:center; gap:8px;
    margin-top:20px; padding-top:16px;
    border-top:1px solid var(--border);
}
.aie-score-ring {
    position:relative; width:110px; height:110px;
}
.aie-score-ring svg { width:100%; height:100%; transform:rotate(-90deg); }
.aie-ring-bg {
    fill:none; stroke:var(--bg-elevated); stroke-width:8;
}
.aie-ring-fg {
    fill:none; stroke:var(--primary); stroke-width:8;
    stroke-linecap:round;
    stroke-dasharray:326.73; /* 2Ãâ‚¬ Ãƒâ€” 52 */
    stroke-dashoffset:326.73;
    transition:stroke-dashoffset 0.8s ease, stroke 0.4s ease;
}
.aie-score-num {
    position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    font-size:32px; font-weight:900; color:var(--text); letter-spacing:-0.03em;
}
.aie-score-label {
    font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:0.05em;
}

/* Wochenbelastung */
.aie-load-grid {
    display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:14px;
}
.aie-load-stat {
    background:var(--bg-elevated); border-radius:var(--radius-sm); padding:14px;
    text-align:center;
}
.aie-load-stat .aie-stat-val {
    font-size:24px; font-weight:900; color:var(--text); display:block;
}
.aie-load-stat .aie-stat-label {
    font-size:11px; color:var(--text-secondary); margin-top:2px; display:block;
}
.aie-trend-badge {
    display:inline-flex; align-items:center; gap:4px;
    padding:4px 10px; border-radius:20px;
    font-size:12px; font-weight:700;
}
.aie-trend-up { background:rgba(255,149,0,0.12); color:#e68a00; }
.aie-trend-stable { background:rgba(52,199,89,0.12); color:#28a745; }
.aie-trend-down { background:rgba(0,122,255,0.12); color:#007AFF; }

/* Insights List */
.aie-insights-list { display:flex; flex-direction:column; gap:10px; }
.aie-insight-item {
    display:flex; gap:10px; align-items:flex-start;
    padding:12px 14px; border-radius:var(--radius-sm);
    background:var(--bg-elevated); font-size:13px; line-height:1.5;
    color:var(--text);
}
.aie-insight-icon { font-size:18px; flex-shrink:0; margin-top:1px; }
.aie-insight-text { flex:1; }

/* WochenrÃƒÂ¼ckblick */
.aie-recap-text {
    font-size:14px; line-height:1.7; color:var(--text);
    padding:4px 0;
}

/* Fortschrittsfeed */
.aie-progress-feed { display:flex; flex-direction:column; gap:10px; }
.aie-progress-card {
    display:flex; gap:12px; align-items:center;
    padding:12px 14px; border-radius:var(--radius-sm);
    background:var(--bg-elevated);
}
.aie-progress-icon { font-size:22px; flex-shrink:0; }
.aie-progress-body { flex:1; }
.aie-progress-title { font-size:13px; font-weight:700; color:var(--text); }
.aie-progress-desc { font-size:12px; color:var(--text-secondary); margin-top:2px; }

/* ================================================================
   NARROW ANDROID (Ã¢â€°Â¤374px) Ã¢â‚¬â€ iPhone 375px+ unaffected
   ================================================================ */
@media (max-width:374px) {
    .form-row { gap:6px; }
    .custom-date-trigger,
    .custom-time-trigger { padding:9px 10px; gap:6px; font-size:11px; }
    .cdt-icon, .ctt-icon { width:16px; height:16px; }
    .kraft-chip { font-size:11px; padding:3px 8px; }
    .kraft-chip .kraft-chip-detail { font-size:10px; }
}





/* ================================================================
   RACE PREDICTION CARD
   ================================================================ */
.race-pred-card {
    padding:18px;
    margin-bottom:16px;
    background:linear-gradient(135deg, rgba(200,16,46,0.04), rgba(0,122,255,0.04));
    border:1px solid rgba(200,16,46,0.12);
}
.race-pred-header {
    display:flex; align-items:center; justify-content:space-between;
    gap:12px; margin-bottom:14px;
}
.race-pred-info h3 {
    margin:0 0 2px; font-size:16px; font-weight:700; color:var(--text);
}
.race-pred-subtitle {
    font-size:12px; color:var(--text-secondary);
}
.race-pred-conf {
    display:flex; flex-direction:column; align-items:flex-end;
    padding:8px 12px; border-radius:10px;
    background:rgba(200,16,46,0.08);
}
.race-pred-conf-label { font-size:10px; color:var(--text-secondary); text-transform:uppercase; letter-spacing:0.5px; }
.race-pred-conf-val { font-size:16px; font-weight:700; color:var(--text); margin-top:2px; }
.race-pred-body {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(120px, 1fr));
    gap:10px;
}
.race-pred-tile {
    background:#fff;
    border:1px solid rgba(0,0,0,0.06);
    border-radius:12px;
    padding:12px 10px;
    text-align:center;
    box-shadow:0 1px 2px rgba(0,0,0,0.03);
}
.race-pred-tile-dist {
    font-size:11px; color:var(--text-secondary);
    text-transform:uppercase; letter-spacing:0.5px; margin-bottom:4px;
}
.race-pred-tile-time {
    font-size:22px; font-weight:700; color:var(--text);
    font-variant-numeric:tabular-nums;
}
.race-pred-tile-meta {
    font-size:10px; color:var(--text-muted); margin-top:3px;
}
.race-pred-tile.race-pred-measured {
    background:linear-gradient(135deg, rgba(52,211,153,0.08), rgba(52,211,153,0.02));
    border-color:rgba(52,211,153,0.2);
}
.race-pred-tile.race-pred-measured .race-pred-tile-time { color:#0a8c5e; }
.race-pred-empty {
    grid-column:1/-1; text-align:center; padding:18px 8px;
    color:var(--text-secondary); font-size:13px;
}
.race-pred-chart-wrap {
    margin-top:14px; height:200px; position:relative;
}
.race-pred-foot {
    margin-top:10px; padding-top:10px;
    border-top:1px solid rgba(0,0,0,0.05);
}
.race-pred-hint {
    font-size:11px; color:var(--text-muted);
}

/* Settings: Race factor editor */
.race-factors-grid {
    display:flex; flex-direction:column; gap:8px; margin-top:10px;
}
.race-factor-row {
    display:grid; grid-template-columns:1fr 80px 24px;
    align-items:center; gap:10px;
    padding:10px 12px;
    background:rgba(0,0,0,0.02);
    border-radius:10px;
}
.race-factor-label {
    font-size:13px; font-weight:600; color:var(--text);
}
.race-factor-input {
    width:100%; padding:6px 8px;
    border:1px solid rgba(0,0,0,0.1);
    border-radius:8px;
    font-size:14px; font-weight:600; text-align:center;
    background:#fff; color:var(--text);
    font-variant-numeric:tabular-nums;
}
.race-factor-input:disabled {
    background:rgba(0,0,0,0.04); color:var(--text-secondary);
}
.race-factor-suffix {
    font-size:12px; color:var(--text-secondary); text-align:left;
}
.race-factors-status {
    margin-top:10px; font-size:12px; color:var(--text-secondary); min-height:16px;
}
.race-factors-status.success { color:#0a8c5e; }
.race-factors-status.error { color:#c8102e; }

/* ================================================================
   PB CELEBRATION MODAL + SHAREABLE CARD
   ================================================================ */
.pb-celebrate-modal {
    max-width:380px;
    text-align:center;
    padding:24px 20px 18px;
    position:relative;
    overflow:hidden;
}
.pb-confetti {
    position:absolute; inset:0;
    pointer-events:none; overflow:hidden; z-index:1;
}
.pb-confetti span {
    position:absolute; top:-20px;
    width:8px; height:14px;
    opacity:0.95;
    animation:pb-confetti-fall linear forwards;
}
@keyframes pb-confetti-fall {
    0% { transform:translateY(-20px) rotate(0deg); opacity:1; }
    100% { transform:translateY(560px) rotate(720deg); opacity:0; }
}
.pb-close {
    position:absolute; top:10px; right:10px; z-index:3;
    width:30px; height:30px; border-radius:15px;
    background:rgba(0,0,0,0.05); color:var(--text-secondary);
    border:none; cursor:pointer; font-size:14px;
    display:flex; align-items:center; justify-content:center;
}
.pb-close:hover { background:rgba(0,0,0,0.1); }
.pb-celebrate-header { position:relative; z-index:2; }
.pb-celebrate-emoji {
    font-size:54px; line-height:1;
    animation:pb-emoji-pop 0.6s cubic-bezier(0.34,1.56,0.64,1) both;
}
@keyframes pb-emoji-pop {
    0% { transform:scale(0); opacity:0; }
    100% { transform:scale(1); opacity:1; }
}
.pb-celebrate-title {
    margin:6px 0 4px; font-size:20px; font-weight:700;
    background:linear-gradient(90deg, #C8102E, #FB923C);
    -webkit-background-clip:text; background-clip:text;
    -webkit-text-fill-color:transparent;
}
.pb-celebrate-subtitle {
    font-size:13px; color:var(--text-secondary); margin-bottom:4px;
}
.pb-celebrate-actions {
    display:flex; gap:8px; margin-top:8px; position:relative; z-index:2;
}
.pb-celebrate-actions button { flex:1; }
.pb-celebrate-foot {
    margin-top:10px; position:relative; z-index:2;
}
.pb-skip-btn {
    background:transparent; border:none; color:var(--text-muted);
    font-size:12px; cursor:pointer; padding:6px 12px;
}
.pb-skip-btn:hover { color:var(--text-secondary); }
/* ============ AIE Risk Management ============ */
.aie-risk-summary { padding:12px 14px; border-radius:12px; margin-bottom:14px; }
.aie-risk-ok   { background:linear-gradient(135deg, rgba(52,199,89,0.10), rgba(52,199,89,0.04)); border:1px solid rgba(52,199,89,0.25); }
.aie-risk-med  { background:linear-gradient(135deg, rgba(255,149,0,0.10), rgba(255,149,0,0.04)); border:1px solid rgba(255,149,0,0.30); }
.aie-risk-high { background:linear-gradient(135deg, rgba(255,59,48,0.12), rgba(255,59,48,0.05)); border:1px solid rgba(255,59,48,0.35); }
.aie-risk-meter { height:8px; background:rgba(0,0,0,0.06); border-radius:4px; overflow:hidden; margin-bottom:8px; }
.aie-risk-bar { height:100%; border-radius:4px; transition:width 0.5s ease; background:linear-gradient(90deg, #34C759 0%, #FF9500 50%, #FF3B30 100%); }
.aie-risk-head { display:flex; justify-content:space-between; align-items:center; }
.aie-risk-level { font-size:18px; font-weight:700; color:var(--text-primary); }
.aie-risk-score { font-size:14px; color:var(--text-secondary); font-variant-numeric:tabular-nums; }
.aie-risk-factors { display:flex; flex-direction:column; gap:8px; }
.aie-risk-factor { display:flex; gap:10px; padding:10px 12px; border-radius:10px; background:rgba(0,0,0,0.025); border-left:3px solid #C7C7CC; }
.aie-risk-factor.aie-risk-ok   { border-left-color:#34C759; }
.aie-risk-factor.aie-risk-med  { border-left-color:#FF9500; background:rgba(255,149,0,0.05); }
.aie-risk-factor.aie-risk-high { border-left-color:#FF3B30; background:rgba(255,59,48,0.05); }
.aie-risk-icon { font-size:20px; line-height:1.2; flex-shrink:0; }
.aie-risk-body { flex:1; min-width:0; }
.aie-risk-row { display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:2px; }
.aie-risk-label { font-size:13px; font-weight:600; color:var(--text-primary); }
.aie-risk-val { font-size:12px; color:var(--text-secondary); font-variant-numeric:tabular-nums; }
.aie-risk-desc { font-size:12px; color:var(--text-secondary); line-height:1.35; }
.aie-risk-recs { margin-top:14px; padding:12px; background:rgba(0,122,255,0.06); border-radius:10px; border-left:3px solid #007AFF; }
.aie-risk-recs-title { font-size:13px; font-weight:600; margin-bottom:6px; color:var(--text-primary); }
.aie-risk-recs ul { margin:0; padding-left:18px; }
.aie-risk-recs li { font-size:12.5px; line-height:1.4; color:var(--text-secondary); margin-bottom:3px; }

/* ============ AIE Daily Timeline ============ */
.aie-timeline-toggle { display:flex; gap:4px; }
.aie-tl-btn { background:rgba(0,0,0,0.05); border:none; padding:5px 10px; border-radius:6px; font-size:11px; font-weight:600; color:var(--text-secondary); cursor:pointer; }
.aie-tl-btn.active { background:#007AFF; color:#FFFFFF; }
.aie-timeline-chart-wrap { position:relative; height:240px; margin-bottom:10px; }
.aie-timeline-legend { display:flex; flex-wrap:wrap; gap:14px; padding:6px 0 12px; border-bottom:1px solid rgba(0,0,0,0.05); margin-bottom:10px; }
.aie-tl-leg-group { display:flex; flex-wrap:wrap; gap:10px; }
.aie-tl-leg-item { display:inline-flex; align-items:center; gap:5px; font-size:11px; color:var(--text-secondary); }
.aie-tl-leg-dot { width:10px; height:10px; border-radius:3px; display:inline-block; }
.aie-tl-leg-line { width:18px; height:3px; border-radius:2px; display:inline-block; }
.aie-tl-leg-line-dash { background-image:linear-gradient(90deg, currentColor 50%, transparent 50%); background-size:6px 100%; }
.aie-timeline-list { display:flex; flex-direction:column; gap:8px; max-height:340px; overflow-y:auto; }
.aie-tl-day { padding:10px 12px; background:rgba(0,0,0,0.025); border-radius:10px; }
.aie-tl-day-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
.aie-tl-day-date { font-size:13px; font-weight:600; color:var(--text-primary); }
.aie-tl-day-score { font-size:11px; color:var(--text-secondary); background:rgba(0,122,255,0.1); padding:2px 8px; border-radius:10px; }
.aie-tl-day-entries { display:flex; flex-direction:column; gap:4px; margin-bottom:6px; }
.aie-tl-entry { display:flex; gap:6px; align-items:center; font-size:12px; flex-wrap:wrap; }
.aie-tl-entry-tag { font-size:10px; font-weight:700; color:#FFFFFF; padding:2px 7px; border-radius:6px; }
.aie-tl-entry-type { color:var(--text-primary); flex:1; min-width:0; }
.aie-tl-entry-meta { font-size:11px; color:var(--text-secondary); background:rgba(0,0,0,0.04); padding:1px 6px; border-radius:5px; }
.aie-tl-day-read { display:flex; flex-wrap:wrap; gap:10px; padding-top:6px; border-top:1px solid rgba(0,0,0,0.05); font-size:11.5px; color:var(--text-secondary); }
/* ============ Type-Cluster Detail Modal ============ */
.tcm-breakdown { display:flex; flex-direction:column; gap:6px; padding:12px; background:rgba(0,0,0,0.025); border-radius:10px; margin-bottom:14px; }
.tcm-bd-row { display:flex; align-items:center; gap:10px; font-size:13px; }
.tcm-bd-dot { width:10px; height:10px; border-radius:3px; flex-shrink:0; }
.tcm-bd-label { flex:1; color:var(--text-primary); }
.tcm-bd-count { color:var(--text-secondary); font-size:12px; font-variant-numeric:tabular-nums; }
.tcm-entries-title { font-size:12px; font-weight:600; color:var(--text-secondary); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:6px; padding:0 4px; }
.tcm-entries { display:flex; flex-direction:column; gap:8px; }
.tcm-entry { display:flex; gap:10px; padding:10px 12px; background:rgba(0,0,0,0.025); border-radius:10px; }
.tcm-entry-tag { font-size:10px; font-weight:700; color:#FFFFFF; padding:3px 8px; border-radius:6px; height:fit-content; white-space:nowrap; flex-shrink:0; }
.tcm-entry-body { flex:1; min-width:0; }
.tcm-entry-date { font-size:13px; font-weight:600; color:var(--text-primary); margin-bottom:3px; }
.tcm-entry-meta { font-size:12px; color:var(--text-secondary); line-height:1.4; word-break:break-word; }
.tcm-more { text-align:center; font-size:11px; color:var(--text-muted); padding:6px; }
/* === Multi-tenant: Coach Group Card (build063z) === */
.coach-group-info { display: flex; flex-direction: column; gap: 8px; }
.coach-group-row { display: flex; justify-content: space-between; align-items: center; font-size: 13px; padding: 6px 0; border-bottom: 1px solid var(--border); }
.coach-group-row:last-of-type { border-bottom: none; }
.coach-group-label { color: var(--text-secondary); font-weight: 500; }
.coach-group-val { color: var(--text-primary); font-weight: 600; }
.coach-group-invite { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.coach-group-code-row { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
.coach-group-code-row code { flex: 1; font-family: 'SF Mono', Menlo, monospace; font-size: 16px; font-weight: 700; letter-spacing: 1px; padding: 8px 12px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 8px; color: var(--primary); text-align: center; }
.btn-icon { padding: 8px !important; min-width: 36px; }
.coach-group-empty { padding: 4px 0; }
/* === Coach Registration Modal (build063aa - Phase 3) === */
.login-divider { display: flex; align-items: center; gap: 10px; margin: 16px 0 12px; color: var(--text-muted); font-size: 11px; text-transform: uppercase; letter-spacing: 1px; }
.login-divider::before, .login-divider::after { content: ''; flex: 1; height: 1px; background: var(--border); }
.btn-coach-register { width: 100%; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 11px; border: 1.5px dashed var(--border); border-radius: 10px; background: transparent; color: var(--text-secondary); font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.15s; }
.btn-coach-register:hover { border-color: var(--primary); color: var(--primary); background: var(--bg-elevated); }

.modal-coach-register { max-width: 420px; width: calc(100% - 32px); padding: 24px; max-height: 90vh; overflow-y: auto; }
.modal-coach-register .modal-header { margin-bottom: 18px; }
.modal-coach-register .form-group { margin-bottom: 14px; }
.modal-coach-register .form-hint { font-size: 11px; color: var(--text-muted); margin: 4px 0 0; }
.modal-coach-register input[type="text"], .modal-coach-register input[type="password"] { width: 100%; padding: 10px 12px; font-size: 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-elevated); color: var(--text-primary); }
.modal-coach-register input:focus { outline: none; border-color: var(--primary); }
.modal-coach-register .btn-primary { width: 100%; margin-top: 4px; }
.modal-coach-register .checkbox-row input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--primary); cursor: pointer; flex-shrink: 0; }
/* === Login: dezenter Coach-CTA unter der Login-Karte (build063ac) === */
/* (clear-button row added build063ao) */
.login-code-row { position:relative; display:flex; align-items:center; }
.login-code-row #login-code { flex:1; padding-right:38px; }
.login-code-clear {
    position:absolute; right:8px; top:50%; transform:translateY(-50%);
    background:transparent; border:none; cursor:pointer;
    width:28px; height:28px; border-radius:50%;
    color:#888; font-size:20px; line-height:1;
    display:none; align-items:center; justify-content:center;
    transition:background 0.15s, color 0.15s;
}
.login-code-clear:hover { background:rgba(0,0,0,.06); color:var(--primary); }
.login-code-row:has(#login-code:not(:placeholder-shown)) .login-code-clear { display:flex; }
.login-coach-cta {
    text-align: center;
    margin: 22px auto 0;
    max-width: 360px;
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.55;
    padding: 0 16px;
}
.login-coach-cta a {
    color: var(--primary);
    font-weight: 600;
    text-decoration: none;
    margin-left: 4px;
    white-space: nowrap;
    transition: color 0.15s;
}
.login-coach-cta a:hover { color: var(--primary-dark); text-decoration: underline; }
/* === Phase 4: Invite-Code Onboarding Overlay (build063ae) === */
.invite-overlay {
    position: fixed; inset: 0; z-index: 10000;
    background: rgba(11, 11, 13, 0.55);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
    animation: inviteOverlayFade 0.25s ease;
}
@keyframes inviteOverlayFade { from { opacity: 0 } to { opacity: 1 } }
.invite-card {
    background: #FFFFFF;
    border-radius: var(--radius-lg, 22px);
    padding: 36px 28px 24px;
    max-width: 420px;
    width: 100%;
    text-align: center;
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.25), 0 4px 16px rgba(0, 0, 0, 0.08);
    animation: inviteCardPop 0.32s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes inviteCardPop {
    from { opacity: 0; transform: translateY(20px) scale(0.95); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.invite-icon {
    width: 64px; height: 64px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--primary, #C8102E), var(--primary-light, #E63946));
    color: #FFFFFF;
    display: inline-flex; align-items: center; justify-content: center;
    margin-bottom: 16px;
    box-shadow: 0 8px 24px rgba(200, 16, 46, 0.28);
}
.invite-card h2 {
    font-size: 22px;
    font-weight: 800;
    color: var(--text, #1D1D1F);
    margin: 0 0 8px;
    letter-spacing: -0.02em;
}
.invite-sub {
    font-size: 14px;
    color: var(--text-secondary, #6E6E73);
    line-height: 1.5;
    margin: 0 0 20px;
    padding: 0 4px;
}
.invite-sub b { color: var(--text, #1D1D1F); font-weight: 700; }
#invite-code-input {
    width: 100%;
    box-sizing: border-box;
    padding: 16px 18px;
    font-size: 22px;
    font-weight: 700;
    text-align: center;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    font-family: 'SF Mono', 'Roboto Mono', Menlo, Consolas, monospace;
    background: var(--bg-body, #F5F5F7);
    border: 2px solid transparent;
    border-radius: 14px;
    color: var(--text, #1D1D1F);
    outline: none;
    transition: all 0.15s;
}
#invite-code-input:focus {
    border-color: var(--primary, #C8102E);
    background: #FFFFFF;
    box-shadow: 0 0 0 4px rgba(200, 16, 46, 0.10);
}
#invite-code-input::placeholder { color: #C7C7CC; letter-spacing: 0.08em; font-weight: 500; }
.invite-error {
    margin: 10px 0 0;
    padding: 10px 14px;
    background: rgba(255, 59, 48, 0.10);
    border-radius: 10px;
    color: #FF3B30;
    font-size: 13px;
    font-weight: 600;
    text-align: left;
}
.invite-card .btn-primary {
    width: 100%;
    margin-top: 16px;
    padding: 14px;
    font-size: 15px;
}
.invite-skip {
    display: block;
    margin: 14px auto 0;
    background: none;
    border: none;
    color: var(--text-secondary, #6E6E73);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    padding: 8px 12px;
    border-radius: 8px;
    transition: all 0.15s;
    font-family: inherit;
}
.invite-skip:hover { color: var(--text, #1D1D1F); background: var(--bg-body, #F5F5F7); }
.invite-hint {
    margin: 12px 0 0;
    font-size: 11px;
    color: var(--text-muted, #8E8E93);
    line-height: 1.4;
}
.invite-spinner {
    display: inline-block; width: 14px; height: 14px;
    border: 2px solid rgba(255,255,255,0.35);
    border-top-color: #FFFFFF;
    border-radius: 50%;
    margin-right: 6px;
    vertical-align: -2px;
    animation: inviteSpin 0.7s linear infinite;
}
@keyframes inviteSpin { to { transform: rotate(360deg) } }
@media (max-width: 480px) {
    .invite-card { padding: 28px 20px 20px; border-radius: 18px; }
    .invite-card h2 { font-size: 20px; }
    #invite-code-input { font-size: 20px; padding: 14px 16px; }
}

/* === Phase 6: Coach Group Card 2.0 (build063ae) === */
.cg-section {
    padding: 16px 0;
    border-top: 1px solid var(--border, #E5E5EA);
}
.cg-section:first-child { border-top: none; padding-top: 4px; }
.cg-label {
    display: flex; align-items: center; gap: 8px;
    font-size: 12px; font-weight: 700;
    color: var(--text-secondary, #6E6E73);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 10px;
}
.cg-counter {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 20px;
    padding: 0 6px;
    background: var(--bg-body, #F5F5F7);
    border-radius: 10px;
    font-size: 11px; font-weight: 700;
    color: var(--text, #1D1D1F);
    letter-spacing: 0;
}
.cg-hint {
    margin: 8px 0 0;
    font-size: 11px;
    color: var(--text-muted, #8E8E93);
    line-height: 1.4;
}
.cg-name-row {
    display: flex; align-items: center; gap: 8px;
}
.cg-name-input {
    flex: 1;
    padding: 10px 14px;
    font-size: 18px; font-weight: 700;
    color: var(--text, #1D1D1F);
    background: var(--bg-body, #F5F5F7);
    border: 2px solid transparent;
    border-radius: 10px;
    outline: none;
    transition: all 0.15s;
}
.cg-name-input:focus { border-color: var(--primary, #C8102E); background: #FFFFFF; }
.cg-save-btn {
    flex-shrink: 0;
    width: 36px; height: 36px;
    background: var(--primary, #C8102E) !important;
    color: #FFFFFF !important;
    border-radius: 10px !important;
}
.cg-save-btn:hover:not(:disabled) { transform: scale(1.05); }
.cg-save-btn:disabled { opacity: 0.35; cursor: not-allowed; background: var(--text-muted, #8E8E93) !important; }
.cg-meta-row {
    display: flex; gap: 6px; flex-wrap: wrap;
    margin-top: 10px;
}
.cg-pill {
    display: inline-flex; align-items: center;
    padding: 4px 10px;
    font-size: 11px; font-weight: 700;
    border-radius: 999px;
    letter-spacing: 0.04em;
}
.cg-pill.plan-beta { background: rgba(255, 149, 0, 0.12); color: #FF9500; }
.cg-pill.plan-pro { background: linear-gradient(135deg, #C8102E, #E63946); color: #FFFFFF; }
.cg-pill.cg-pill-muted { background: var(--bg-body, #F5F5F7); color: var(--text-secondary, #6E6E73); }

.cg-color-row {
    display: flex; align-items: center; gap: 10px;
}
#cg-color-input {
    width: 44px; height: 44px;
    padding: 0;
    border: 2px solid var(--border, #E5E5EA);
    border-radius: 12px;
    background: transparent;
    cursor: pointer;
    flex-shrink: 0;
}
#cg-color-input::-webkit-color-swatch { border: none; border-radius: 8px; }
#cg-color-input::-moz-color-swatch { border: none; border-radius: 8px; }
.cg-color-hex {
    flex: 1;
    padding: 12px 14px;
    font-family: 'SF Mono', 'Roboto Mono', Menlo, Consolas, monospace;
    font-size: 14px; font-weight: 700;
    background: var(--bg-body, #F5F5F7);
    border-radius: 10px;
    color: var(--text, #1D1D1F);
    letter-spacing: 0.05em;
}

.cg-athletes {
    display: flex; flex-direction: column; gap: 6px;
}
.cg-athlete-row {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 12px;
    background: var(--bg-body, #F5F5F7);
    border-radius: 12px;
    transition: background 0.15s;
}
.cg-athlete-row:hover { background: var(--bg-elevated, #EEEEF1); }
.cg-athlete-avatar {
    flex-shrink: 0;
    width: 32px; height: 32px;
    border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    color: #FFFFFF;
    font-size: 14px; font-weight: 700;
    text-transform: uppercase;
}
.cg-athlete-name {
    flex: 1;
    font-size: 14px; font-weight: 600;
    color: var(--text, #1D1D1F);
}
.cg-kick-btn {
    flex-shrink: 0;
    width: 28px; height: 28px;
    background: transparent;
    border: none;
    color: var(--text-muted, #8E8E93);
    border-radius: 8px;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    transition: all 0.15s;
}
.cg-kick-btn:hover { background: rgba(255, 59, 48, 0.12); color: #FF3B30; }
.cg-kick-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.cg-empty {
    margin: 0;
    padding: 14px;
    text-align: center;
    font-size: 13px;
    color: var(--text-muted, #8E8E93);
    background: var(--bg-body, #F5F5F7);
    border-radius: 12px;
    border: 1.5px dashed var(--border, #E5E5EA);
}

.cg-tag-list {
    display: flex; flex-wrap: wrap; gap: 6px;
    min-height: 8px;
    margin-bottom: 8px;
}
.cg-tag {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 5px 6px 5px 12px;
    background: var(--bg-body, #F5F5F7);
    border-radius: 999px;
    font-size: 12px; font-weight: 600;
    color: var(--text, #1D1D1F);
}
.cg-tag-remove {
    width: 18px; height: 18px;
    border: none;
    background: transparent;
    color: var(--text-muted, #8E8E93);
    border-radius: 50%;
    cursor: pointer;
    font-size: 16px; line-height: 1;
    padding: 0;
    transition: all 0.15s;
}
.cg-tag-remove:hover { background: rgba(255, 59, 48, 0.12); color: #FF3B30; }
.cg-add-row {
    display: flex; gap: 6px;
}
.cg-add-row input {
    flex: 1;
    padding: 9px 12px;
    font-size: 13px;
    background: var(--bg-body, #F5F5F7);
    border: 2px solid transparent;
    border-radius: 10px;
    color: var(--text, #1D1D1F);
    outline: none;
    transition: all 0.15s;
}
.cg-add-row input:focus { border-color: var(--primary, #C8102E); background: #FFFFFF; }
.cg-add-row .btn-ghost.btn-icon {
    width: 36px; height: 36px;
    background: var(--primary, #C8102E) !important;
    color: #FFFFFF !important;
    border-radius: 10px !important;
}

/* === Phase 7: Login wizard - invite code field === */
.login-code-group input#login-code {
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-family: 'SF Mono', 'Roboto Mono', Menlo, Consolas, monospace;
    font-weight: 700;
    text-align: center;
}
.login-code-group input#login-code::placeholder {
    letter-spacing: 0.08em;
    font-weight: 500;
}
.login-code-status {
    margin: 6px 2px 0;
    font-size: 12px;
    font-weight: 600;
    min-height: 16px;
    text-align: center;
    transition: color 0.15s;
}
.login-code-status--ok { color: #34C759; }
.login-code-status--error { color: #FF3B30; }
.login-code-status--muted { color: var(--text-muted, #8E8E93); font-weight: 500; }
/* === Phase 7: Login wizard - invite code field === */
.login-code-group input#login-code {
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-family: 'SF Mono', 'Roboto Mono', Menlo, Consolas, monospace;
    font-weight: 700;
    text-align: center;
}
.login-code-group input#login-code::placeholder {
    letter-spacing: 0.08em;
    font-weight: 500;
}
.login-code-status {
    margin: 6px 2px 0;
    font-size: 12px;
    font-weight: 600;
    min-height: 16px;
    text-align: center;
    transition: color 0.15s;
}
.login-code-status--ok { color: #34C759; }
.login-code-status--error { color: #FF3B30; }
.login-code-status--muted { color: var(--text-muted, #8E8E93); font-weight: 500; }

/* === build063au/aw: Coach Training Types Manager — Modern UI === */

/* ---------- Section header & action buttons ---------- */
.cgt-section { padding-top: 22px; }
.cgt-actions {
    display: flex; flex-wrap: wrap; gap: 10px;
    margin: 4px 0 18px;
}
.cgt-action-btn {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 11px 16px;
    font-size: 13.5px; font-weight: 600;
    border-radius: 12px;
    line-height: 1;
}
.cgt-action-btn svg { width: 14px; height: 14px; flex-shrink: 0; }

/* ---------- Empty state ---------- */
.cgt-empty {
    margin: 0;
    padding: 28px 20px;
    text-align: center;
    font-size: 13.5px;
    color: var(--text-secondary, #6E6E73);
    background: linear-gradient(180deg, rgba(0,0,0,0.015), rgba(0,0,0,0.04));
    border: 1.5px dashed var(--border, #E5E5EA);
    border-radius: 14px;
}

/* ---------- Type list (grouped by category) ---------- */
.cgt-list { display: flex; flex-direction: column; gap: 12px; }
.cgt-cat {
    background: var(--bg-card, #FFFFFF);
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid var(--border, #E5E5EA);
    box-shadow: 0 1px 3px rgba(0,0,0,0.03);
}
.cgt-cat-header {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 14px;
    background: var(--bg-body, #F5F5F7);
    font-size: 11px; font-weight: 700;
    color: var(--text-secondary, #6E6E73);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    border-bottom: 1px solid var(--border, #E5E5EA);
}
.cgt-cat-count {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 20px;
    padding: 0 6px;
    background: var(--bg-card, #FFFFFF);
    border: 1px solid var(--border, #E5E5EA);
    border-radius: 10px;
    font-size: 10.5px;
    color: var(--text, #1D1D1F);
}
.cgt-cat-items { display: flex; flex-direction: column; }
.cgt-item {
    display: flex; align-items: center; gap: 12px;
    padding: 14px 16px;
    background: var(--bg-card, #FFFFFF);
    border-bottom: 1px solid var(--border, #E5E5EA);
    transition: background 0.15s;
}
.cgt-item:last-child { border-bottom: none; }
.cgt-item:hover { background: rgba(0,0,0,0.018); }
.cgt-item-main { flex: 1; min-width: 0; }
.cgt-item-name {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    font-size: 14.5px; font-weight: 600;
    color: var(--text, #1D1D1F);
    margin-bottom: 6px;
    line-height: 1.2;
}
.cgt-emoji { font-size: 17px; line-height: 1; }
.cgt-parent {
    margin-left: 4px;
    padding: 2px 8px;
    font-size: 10.5px; font-weight: 600;
    color: var(--text-secondary, #6E6E73);
    background: var(--bg-body, #F5F5F7);
    border-radius: 6px;
}
.cgt-item-fields { display: flex; flex-wrap: wrap; gap: 5px; }
.cgt-field-pill {
    display: inline-flex; align-items: center;
    padding: 3px 9px;
    background: rgba(0, 122, 255, 0.10);
    color: #007AFF;
    border-radius: 999px;
    font-size: 11px; font-weight: 600;
    line-height: 1.4;
}
.cgt-empty-fields {
    font-size: 11.5px;
    color: var(--text-muted, #8E8E93);
    font-style: italic;
}
.cgt-item-actions { display: flex; gap: 4px; flex-shrink: 0; }
.cgt-icon-btn {
    width: 32px; height: 32px;
    display: inline-flex; align-items: center; justify-content: center;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 9px;
    color: var(--text-secondary, #6E6E73);
    cursor: pointer;
    transition: all 0.15s;
    padding: 0;
}
.cgt-icon-btn:hover { background: var(--bg-body, #F5F5F7); color: var(--text, #1D1D1F); border-color: var(--border, #E5E5EA); }
.cgt-icon-btn.cgt-delete:hover { background: rgba(255,59,48,0.10); color: #FF3B30; border-color: rgba(255,59,48,0.20); }

/* ---------- Modal shell ---------- */
.cgt-modal-overlay {
    position: fixed; inset: 0;
    background: rgba(15, 15, 20, 0.55);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    display: flex; align-items: center; justify-content: center;
    z-index: 100000;
    padding: 20px;
    animation: cgtFadeIn 0.18s ease-out;
}
@keyframes cgtFadeIn { from { opacity: 0; } to { opacity: 1; } }
.cgt-modal {
    background: var(--bg-card, #FFFFFF);
    border-radius: 20px;
    width: 100%;
    max-height: 90vh;
    display: flex; flex-direction: column;
    box-shadow: 0 30px 80px rgba(0,0,0,0.35);
    animation: cgtScaleIn 0.20s cubic-bezier(0.16, 1, 0.3, 1);
    overflow: hidden;
}
@keyframes cgtScaleIn { from { transform: translateY(12px) scale(0.97); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } }
.cgt-modal-lg { max-width: 760px; }
.cgt-modal-md { max-width: 540px; }
.cgt-modal-header {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
    padding: 22px 24px 16px;
    border-bottom: 1px solid var(--border, #E5E5EA);
}
.cgt-modal-header h3 {
    margin: 0 0 4px;
    font-size: 18px; font-weight: 700;
    color: var(--text, #1D1D1F);
    letter-spacing: -0.01em;
}
.cgt-modal-sub {
    margin: 0;
    font-size: 12.5px;
    color: var(--text-secondary, #6E6E73);
    line-height: 1.5;
}
.cgt-modal-close {
    width: 34px; height: 34px;
    background: var(--bg-body, #F5F5F7);
    border: none;
    border-radius: 10px;
    color: var(--text-secondary, #6E6E73);
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    transition: all 0.15s;
}
.cgt-modal-close:hover { background: var(--border, #E5E5EA); color: var(--text, #1D1D1F); }
.cgt-modal-body {
    padding: 18px 24px;
    overflow-y: auto;
    flex: 1;
}
.cgt-modal-hint {
    margin: 0 0 16px;
    font-size: 12.5px;
    color: var(--text-secondary, #6E6E73);
    line-height: 1.5;
}
.cgt-modal-footer {
    display: flex; gap: 10px; align-items: center;
    padding: 14px 24px 20px;
    border-top: 1px solid var(--border, #E5E5EA);
    justify-content: flex-end;
    background: var(--bg-card, #FFFFFF);
}
.cgt-modal-footer .btn-ghost.cgt-danger {
    color: #FF3B30;
    margin-right: auto;
}
.cgt-cat-counter {
    margin-right: auto;
    font-size: 12.5px; font-weight: 600;
    color: var(--text-secondary, #6E6E73);
}
.cgt-modal-footer .btn-primary,
.cgt-modal-footer .btn-ghost {
    padding: 10px 18px;
    font-size: 13.5px; font-weight: 600;
    border-radius: 11px;
}
.cgt-modal-footer .btn-primary:disabled {
    opacity: 0.4; cursor: not-allowed;
}

/* ---------- Catalog modal: cards ---------- */
.cgt-mc-cat { margin-bottom: 22px; }
.cgt-mc-cat:last-child { margin-bottom: 0; }
.cgt-mc-cat-title {
    margin: 0 0 10px;
    font-size: 11px; font-weight: 700;
    color: var(--text-secondary, #6E6E73);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.cgt-mc-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 10px;
}
.cgt-mc-card {
    position: relative;
    display: flex; flex-direction: column; gap: 10px;
    padding: 14px;
    background: var(--bg-card, #FFFFFF);
    border: 1.5px solid var(--border, #E5E5EA);
    border-radius: 14px;
    cursor: pointer;
    transition: all 0.18s;
    user-select: none;
}
.cgt-mc-card:hover:not(.is-existing) {
    border-color: rgba(200, 16, 46, 0.35);
    box-shadow: 0 4px 14px rgba(200, 16, 46, 0.08);
    transform: translateY(-1px);
}
.cgt-mc-card.is-selected {
    border-color: var(--primary, #C8102E);
    background: linear-gradient(180deg, rgba(200,16,46,0.04), rgba(200,16,46,0.02));
    box-shadow: 0 4px 16px rgba(200, 16, 46, 0.12);
}
.cgt-mc-card.is-existing {
    opacity: 0.55;
    cursor: default;
    background: var(--bg-body, #F5F5F7);
}
.cgt-mc-head { display: flex; align-items: center; gap: 10px; }
.cgt-mc-avatar {
    width: 36px; height: 36px;
    flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--bg-body, #F5F5F7);
    border-radius: 10px;
    font-size: 15px; font-weight: 700;
    color: var(--text, #1D1D1F);
}
/* Category accents */
.cgt-mc-avatar[data-cat="Sprint"]       { background: rgba(255,59,48,0.12); color: #FF3B30; }
.cgt-mc-avatar[data-cat="Lauf"]         { background: rgba(255,149,0,0.12); color: #FF9500; }
.cgt-mc-avatar[data-cat="Hürden"]       { background: rgba(175,82,222,0.12); color: #AF52DE; }
.cgt-mc-avatar[data-cat="Sprung"]       { background: rgba(90,200,250,0.15); color: #0A84BF; }
.cgt-mc-avatar[data-cat="Wurf"]         { background: rgba(52,199,89,0.13); color: #248A3D; }
.cgt-mc-avatar[data-cat="Mehrkampf"]    { background: rgba(200,16,46,0.10); color: #C8102E; }
.cgt-mc-avatar[data-cat="Kraft"]        { background: rgba(29,29,31,0.08); color: #1D1D1F; }
.cgt-mc-avatar[data-cat="Technik"]      { background: rgba(88,86,214,0.12); color: #5856D6; }
.cgt-mc-avatar[data-cat="Athletik"]     { background: rgba(0,122,255,0.12); color: #007AFF; }
.cgt-mc-avatar[data-cat="Regeneration"] { background: rgba(162,132,94,0.13); color: #8B6F4E; }
.cgt-mc-avatar[data-cat="Koordination"] { background: rgba(48,209,88,0.13); color: #248A3D; }
.cgt-mc-avatar[data-cat="Stabilität"]   { background: rgba(100,210,255,0.15); color: #0A84BF; }
.cgt-mc-title { flex: 1; min-width: 0; }
.cgt-mc-card-name {
    font-size: 14px; font-weight: 600;
    color: var(--text, #1D1D1F);
    line-height: 1.2;
    margin-bottom: 2px;
}
.cgt-mc-card-cat {
    font-size: 10.5px; font-weight: 600;
    color: var(--text-muted, #8E8E93);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.cgt-mc-mark {
    width: 22px; height: 22px;
    flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--bg-body, #F5F5F7);
    border: 1.5px solid var(--border, #E5E5EA);
    border-radius: 50%;
    color: transparent;
    transition: all 0.15s;
}
.cgt-mc-card.is-selected .cgt-mc-mark {
    background: var(--primary, #C8102E);
    border-color: var(--primary, #C8102E);
    color: #FFFFFF;
}
.cgt-mc-card.is-existing .cgt-mc-mark {
    background: #34C759;
    border-color: #34C759;
    color: #FFFFFF;
}
.cgt-mc-existing-row {
    margin-top: 2px;
    padding: 6px 10px;
    background: rgba(52,199,89,0.10);
    color: #248A3D;
    border-radius: 8px;
    font-size: 11.5px; font-weight: 600;
    text-align: center;
}
.cgt-mc-chips {
    display: flex; flex-wrap: wrap; gap: 4px;
    padding-top: 2px;
    border-top: 1px dashed var(--border, #E5E5EA);
    padding-top: 10px;
}
.cgt-mc-chip {
    padding: 5px 10px;
    background: var(--bg-body, #F5F5F7);
    color: var(--text-secondary, #6E6E73);
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 11px; font-weight: 600;
    cursor: pointer;
    transition: all 0.13s;
    line-height: 1.2;
    -webkit-appearance: none; appearance: none;
    font-family: inherit;
}
.cgt-mc-chip:hover:not(:disabled) {
    background: rgba(0,122,255,0.08);
    color: #007AFF;
}
.cgt-mc-chip.is-active {
    background: rgba(0,122,255,0.12);
    color: #007AFF;
    border-color: rgba(0,122,255,0.25);
}
.cgt-mc-chip:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ---------- Custom builder modal ---------- */
.cgt-form-group { margin-bottom: 16px; }
.cgt-form-row { display: flex; gap: 12px; }
.cgt-form-row .cgt-flex2 { flex: 2; }
.cgt-form-row .cgt-flex1 { flex: 1; }
.cgt-form-label {
    display: block;
    font-size: 11.5px; font-weight: 700;
    color: var(--text-secondary, #6E6E73);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 7px;
}
/* Reset global input styles inside the builder so they look consistent */
.cgt-modal .cgt-form-group input[type="text"],
.cgt-modal .cgt-form-group select {
    width: 100%;
    padding: 11px 13px;
    background: var(--bg-body, #F5F5F7);
    border: 1.5px solid transparent;
    border-radius: 11px;
    font-size: 14px;
    color: var(--text, #1D1D1F);
    outline: none;
    box-shadow: none;
    -webkit-appearance: none; appearance: none;
    font-family: 'Inter', sans-serif;
    transition: all 0.15s;
}
.cgt-modal .cgt-form-group input:focus,
.cgt-modal .cgt-form-group select:focus {
    border-color: var(--primary, #C8102E);
    background: var(--bg-card, #FFFFFF);
    box-shadow: 0 0 0 3px rgba(200,16,46,0.12);
}
.cgt-modal .cgt-form-group input[readonly] { opacity: 0.65; cursor: not-allowed; }
.cgt-req { color: #FF3B30; }
.cgt-opt {
    font-size: 11px;
    color: var(--text-muted, #8E8E93);
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
}
.cgt-hint-sm {
    margin: -2px 0 8px;
    font-size: 11.5px;
    color: var(--text-muted, #8E8E93);
    line-height: 1.45;
}

/* Custom builder: field selector (toggleable cards) */
.cgt-fields-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
    gap: 7px;
    margin-top: 4px;
}
.cgt-field-row {
    position: relative;
    display: flex; align-items: center; gap: 8px;
    padding: 10px 12px;
    background: var(--bg-body, #F5F5F7);
    border: 1.5px solid transparent;
    border-radius: 10px;
    font-size: 13px; font-weight: 500;
    color: var(--text-secondary, #6E6E73);
    cursor: pointer;
    transition: all 0.13s;
    user-select: none;
}
.cgt-field-row:hover { background: rgba(0,122,255,0.05); color: var(--text, #1D1D1F); }
.cgt-field-row:has(input:checked) {
    background: rgba(0,122,255,0.10);
    border-color: rgba(0,122,255,0.30);
    color: #007AFF;
    font-weight: 600;
}
/* CRITICAL: force checkboxes inside the modal to render as proper small boxes
   (the global `input { width:100%; padding:... }` rule otherwise turns them into ovals) */
.cgt-modal input[type="checkbox"],
.cgt-mc-card input[type="checkbox"] {
    width: 16px !important;
    height: 16px !important;
    min-width: 16px;
    padding: 0 !important;
    margin: 0;
    border: 1.5px solid var(--border, #E5E5EA);
    border-radius: 4px;
    background: var(--bg-card, #FFFFFF) !important;
    box-shadow: none !important;
    accent-color: var(--primary, #C8102E);
    -webkit-appearance: auto; appearance: auto;
    cursor: pointer;
    flex-shrink: 0;
}

@media (max-width: 600px) {
    .cgt-modal {
        max-height: 96vh;
        border-radius: 18px 18px 0 0;
        align-self: flex-end;
    }
    .cgt-modal-overlay { align-items: flex-end; padding: 0; }
    .cgt-mc-grid { grid-template-columns: 1fr; }
    .cgt-form-row { flex-direction: column; gap: 0; }
    .cgt-modal-header { padding: 18px 18px 12px; }
    .cgt-modal-body { padding: 16px 18px; }
    .cgt-modal-footer { padding: 12px 18px 16px; }
}


/* ===========================================================
   COACH ANALYTICS TAB (build063az)
   =========================================================== */
.coach-analytics-toolbar {
    display: flex; flex-direction: column; gap: 12px;
}
.coach-analytics-picker {
    display: flex; flex-wrap: wrap; gap: 8px;
}
.analytics-chip {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px;
    border: 1px solid var(--border-color, #E5E5EA);
    background: var(--surface-color, #fff);
    border-radius: 999px;
    font-size: 13px; font-weight: 500;
    color: var(--text-primary, #1d1d1f);
    cursor: pointer; transition: all 0.15s;
}
.analytics-chip:hover { border-color: #C8102E; }
.analytics-chip .chip-dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--border-color, #E5E5EA);
    transition: background 0.15s;
}
.analytics-chip.active {
    background: #C8102E; color: #fff; border-color: #C8102E;
}
.analytics-chip.active .chip-dot { background: #fff; }
.coach-analytics-actions {
    display: flex; gap: 8px; flex-wrap: wrap;
}
.coach-stats-grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 12px; margin-top: 8px;
}
.coach-stat-box {
    background: var(--bg-secondary, #F5F5F7);
    border-radius: 12px; padding: 14px 12px; text-align: center;
}
.coach-stat-box .stat-value {
    font-size: 22px; font-weight: 700; color: var(--text-primary, #1d1d1f);
    font-variant-numeric: tabular-nums;
}
.coach-stat-box .stat-label {
    font-size: 11px; color: var(--text-secondary, #6E6E73);
    margin-top: 2px; text-transform: uppercase; letter-spacing: 0.4px;
}
.analytics-compare-table {
    width: 100%; border-collapse: collapse; font-size: 13px;
}
.analytics-compare-table th, .analytics-compare-table td {
    padding: 8px 10px; border-bottom: 1px solid var(--border-color, #E5E5EA);
}
.analytics-compare-table th {
    font-weight: 600; color: var(--text-secondary, #6E6E73);
    font-size: 11px; text-transform: uppercase; letter-spacing: 0.4px;
}
.analytics-compare-table .dot {
    display: inline-block; width: 10px; height: 10px; border-radius: 50%;
    margin-right: 8px; vertical-align: middle;
}

/* build063az addendum: sprint/tempo sub-tabs in coach analytics */
.coach-an-sprint-tabs {
    display: flex; gap: 6px; margin: 8px 0 12px; flex-wrap: wrap;
}
.coach-an-sprint-tab {
    padding: 5px 12px;
    border: 1px solid var(--border-color, #E5E5EA);
    background: var(--surface-color, #fff);
    border-radius: 999px;
    font-size: 12px; font-weight: 600;
    color: var(--text-secondary, #6E6E73);
    cursor: pointer; transition: all 0.15s;
    font-variant-numeric: tabular-nums;
}
.coach-an-sprint-tab:hover { border-color: #C8102E; color: var(--text-primary, #1d1d1f); }
.coach-an-sprint-tab.active {
    background: #C8102E; color: #fff; border-color: #C8102E;
}
#coach-an-tempo-card .coach-an-sprint-tab.active {
    background: #3B82F6; border-color: #3B82F6;
}
#coach-an-tempo-card .coach-an-sprint-tab:hover { border-color: #3B82F6; }
.coach-an-meta {
    display: flex; flex-wrap: wrap; gap: 14px;
    margin-top: 10px; padding-top: 10px;
    border-top: 1px solid var(--border-color, #E5E5EA);
    font-size: 12px; color: var(--text-secondary, #6E6E73);
    font-variant-numeric: tabular-nums;
}
.coach-an-meta strong { color: var(--text-primary, #1d1d1f); font-weight: 700; margin-right: 4px; }
