
/* Android заливает нажатое синим поверх нашей палитры. Свой отклик — :active
   со сжатием — остаётся, так что системный убираем. */
html{-webkit-tap-highlight-color:transparent}

/* === КиТ — Redesign (handoff dna) === */
:root{
    /* Surface */
    --bg-primary:#08080A;--bg-secondary:#0E0E11;--bg-card:#16161A;--bg-card-hover:#1C1C21;--bg-elevated:#1C1C21;--bg-input:#0E0E11;
    --surface:#16161A;--surface-2:#1C1C21;
    /* Champagne accent */
    --gold:oklch(80% 0.12 78);--gold-light:oklch(88% 0.10 88);--gold-dark:oklch(72% 0.12 78);
    --gold-glow:oklch(80% 0.12 78 / 0.12);--gold-soft:oklch(80% 0.12 78 / 0.14);
    --gold-gradient:linear-gradient(135deg,oklch(82% 0.14 78),oklch(88% 0.10 88));
    --gold-gradient-h:linear-gradient(90deg,oklch(82% 0.14 78),oklch(88% 0.10 88));
    --accent:oklch(80% 0.12 78);--accent-soft:oklch(80% 0.12 78 / 0.12);--accent-ink:#0A0908;
    /* Text */
    --text-primary:#F2F1EE;--text-secondary:#B4B2AB;--text-muted:#6E6C66;--text-faint:#44423E;--text-gold:oklch(80% 0.12 78);
    /* Signal */
    --success:oklch(82% 0.22 142);--success-bg:oklch(82% 0.22 142 / 0.14);
    --warning:oklch(80% 0.17 70);--warning-bg:oklch(80% 0.17 70 / 0.14);
    --danger:oklch(70% 0.20 25);--danger-bg:oklch(70% 0.20 25 / 0.14);
    --live:oklch(82% 0.22 142);
    /* Type colours */
    --t-training:oklch(82% 0.22 142);--t-training-soft:oklch(82% 0.22 142 / 0.16);
    --t-game:oklch(70% 0.15 295);--t-game-soft:oklch(70% 0.15 295 / 0.18);
    --t-tournament:oklch(80% 0.12 78);--t-tournament-soft:oklch(80% 0.12 78 / 0.14);
    /* Borders */
    --border:rgba(255,255,255,.06);--border-strong:rgba(255,255,255,.12);--border-gold:oklch(80% 0.12 78 / 0.30);
    /* Radii */
    --radius-sm:8px;--radius-md:12px;--radius-lg:14px;--radius-xl:18px;--radius-2xl:22px;
    /* Shadows */
    --shadow-card:0 8px 24px -8px rgba(0,0,0,.5);
    --shadow-gold:0 8px 20px -12px rgba(0,0,0,.55);
    --shadow-lg:0 20px 50px -20px rgba(0,0,0,.6);
    /* Type */
    --display:'Unbounded','Inter',sans-serif;
    --ui:'Inter',system-ui,sans-serif;
    --mono:'JetBrains Mono',ui-monospace,monospace;
    /* Medal gradients */
    --m-novice:linear-gradient(140deg,#8BC34A,#558B2F);
    --m-novice_plus:linear-gradient(140deg,#26C6DA,#00838F);
    --m-light:linear-gradient(140deg,#E8A968,#B47940,#784A1C);
    --m-light_plus:linear-gradient(140deg,#ECECEC,#B0B0B8,#6E6E78);
    --m-light_pp:linear-gradient(140deg,#FFE066,#E8B040,#B07020);
    --m-medium:linear-gradient(140deg,oklch(85% 0.15 78),oklch(70% 0.14 78));
    --m-hard:linear-gradient(140deg,#E91E63,#880E4F);
}
/* КиТ · Бокс — красная тема для site.html */
body[data-sport="football"]{--accent:oklch(56% 0.18 256);--accent-soft:oklch(56% 0.18 256 / 0.14);--accent-ink:#ffffff;}body[data-sport="kickboxing"]{--accent:oklch(70% 0.19 47);--accent-soft:oklch(70% 0.19 47 / 0.14);--accent-ink:#ffffff;}body[data-sport="taekwondo"]{--accent:oklch(55% 0.22 295);--accent-soft:oklch(55% 0.22 295 / 0.14);--accent-ink:#ffffff;}body[data-sport="boxing"]{
    --gold:oklch(58% 0.215 25);--gold-light:oklch(66% 0.20 25);--gold-dark:oklch(50% 0.20 25);
    --gold-glow:rgba(0,0,0,0);--gold-soft:oklch(58% 0.215 25 / 0.16);
    --gold-gradient:linear-gradient(135deg,oklch(60% 0.22 25),oklch(50% 0.21 25));
    --gold-gradient-h:linear-gradient(90deg,oklch(60% 0.22 25),oklch(50% 0.21 25));
    --accent:oklch(58% 0.215 25);--accent-soft:oklch(58% 0.215 25 / 0.14);--accent-ink:#ffffff;
    --text-gold:oklch(68% 0.20 25);--border-gold:oklch(58% 0.215 25 / 0.30);
    --shadow-gold:0 8px 24px -12px oklch(58% 0.215 25 / 0.5);
    --t-tournament:oklch(58% 0.215 25);--t-tournament-soft:oklch(58% 0.215 25 / 0.16);
    --t-training:oklch(58% 0.215 25);--t-training-soft:oklch(58% 0.215 25 / 0.16);
    --t-game:oklch(58% 0.215 25);--t-game-soft:oklch(58% 0.215 25 / 0.16);
}
body:not([data-sport="volleyball"]) .volley-only,body:not([data-sport="volleyball"]) .trn-only{display:none!important}
body[data-sport="boxing"] .ev-cover-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.25),rgba(8,8,10,.7)),url('/static/kit/box_hero.jpg?v=7') center 58%/cover no-repeat,linear-gradient(180deg,var(--surface-2),var(--surface))}
body[data-sport="boxing"] .detail-hero-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/kit/box_hero.jpg?v=7') center 50%/cover no-repeat,#1A0E0E}
body[data-sport="boxing"] .event-card-v .image-area.training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.65)),url('/static/kit/box_hero.jpg?v=7') center 55%/cover no-repeat,#160C0C}
body[data-sport="kickboxing"] .ev-cover-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.25),rgba(8,8,10,.7)),url('/static/kit/kick_hero.jpg?v=7') center 58%/cover no-repeat,linear-gradient(180deg,var(--surface-2),var(--surface))}
body[data-sport="taekwondo"] .ev-cover-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.25),rgba(8,8,10,.7)),url('/static/kit/tkd_hero.jpg?v=8') center 58%/cover no-repeat,linear-gradient(180deg,var(--surface-2),var(--surface))}
body[data-sport="kickboxing"] .detail-hero-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/kit/kick_hero.jpg?v=7') center 50%/cover no-repeat,#1A0E0E}
body[data-sport="taekwondo"] .detail-hero-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/kit/tkd_hero.jpg?v=8') center 50%/cover no-repeat,#1A0E0E}
body[data-sport="kickboxing"] .event-card-v .image-area.training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.65)),url('/static/kit/kick_hero.jpg?v=7') center 55%/cover no-repeat,#160C0C}
body[data-sport="taekwondo"] .event-card-v .image-area.training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.65)),url('/static/kit/tkd_hero.jpg?v=8') center 55%/cover no-repeat,#160C0C}
*{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased}
body{background:#07070a;color:var(--text-primary);font-family:var(--ui);padding:0 0 calc(80px + env(safe-area-inset-bottom));overflow-x:hidden;font-size:14px;position:relative;min-height:100vh;background-image:radial-gradient(1000px circle at 50% -10%, rgba(245,180,90,.07), transparent 60%),linear-gradient(180deg,#0b0b0f 0%,#08080a 60%,#050507 100%);background-attachment:fixed}
.site-header{padding-top:env(safe-area-inset-top)}
.page{position:relative;z-index:1}
.site-header,.bottom-nav,.mobile-menu{z-index:200}
h1,h2,h3,.heading{font-family:var(--display);font-weight:600;letter-spacing:-0.02em}
.page{padding:0 16px 16px;min-height:calc(100vh - 80px);display:none}
.page.active{display:block}
/* fadeIn-анимация удалена: на быстрой навигации воспринималась как мерцание */
@media (prefers-reduced-motion: reduce){.toast,*{transition:none!important;animation:none!important}}
@keyframes shimmer{0%{background-position:-200px 0}100%{background-position:200px 0}}
@keyframes ptrSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%);background-size:400px 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-xl);height:180px;margin-bottom:12px}

/* === CARDS === */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:18px;margin-bottom:12px;position:relative;overflow:hidden;transition:transform .25s cubic-bezier(.2,0,.1,1),border-color .25s ease,box-shadow .25s ease}
.card-tap{cursor:pointer}
.card-tap:active{transform:scale(.98);border-color:var(--border-strong)}

/* === EVENT CARD (the hero component) === */
.ev-card{border-radius:var(--radius-xl);overflow:hidden;margin-bottom:14px;background:var(--surface);border:1px solid var(--border);cursor:pointer;transition:transform .3s cubic-bezier(.2,0,.1,1),border-color .3s ease,box-shadow .3s ease;position:relative}
.ev-card::before{content:'';position:absolute;top:0;bottom:0;left:0;width:3px;z-index:6;background:var(--accent)}
.ev-card:has(.type-game)::before,.ev-card.type-game::before{background:var(--t-game)}
.ev-card:has(.type-training)::before,.ev-card.type-training::before{background:var(--t-training)}
.ev-card:has(.type-tournament)::before,.ev-card.type-tournament::before{background:var(--t-tournament)}
.ev-card:active{transform:scale(.98);border-color:var(--border-strong)}
.ev-cover{width:100%;height:130px;position:relative;overflow:hidden}
.ev-cover img{width:100%;height:100%;object-fit:cover;filter:brightness(0.78) contrast(1.05);transition:transform .6s cubic-bezier(.22,1,.36,1)}
.ev-card:active .ev-cover img{transform:scale(1.04)}
.ev-cover-placeholder{width:100%;height:130px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}
.ev-cover-placeholder.type-game{background:linear-gradient(180deg,rgba(8,8,10,.25),rgba(8,8,10,.65)),url('/static/images/cover_game.webp') center/cover no-repeat,linear-gradient(180deg,var(--surface-2),var(--surface))}
.ev-cover-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.25),rgba(8,8,10,.65)),url('/static/images/cover_training.webp') center/cover no-repeat,linear-gradient(180deg,var(--surface-2),var(--surface))}
.ev-cover-placeholder.type-tournament{background:linear-gradient(180deg,rgba(8,8,10,.25),rgba(8,8,10,.65)),url('/static/images/cover_tournament.webp') center/cover no-repeat,linear-gradient(180deg,var(--surface-2),var(--surface))}
.ev-cover-overlay{position:absolute;bottom:0;left:0;right:0;height:80px;background:linear-gradient(transparent,rgba(8,8,10,.7));pointer-events:none}

/* Type pill on cover */
.ev-cover .type-badge,.ev-cover-placeholder .type-badge{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px 0 9px;border-radius:8px;font-family:var(--ui);font-size:12px;font-weight:600;background:rgba(8,8,10,.9);border:1px solid var(--border-strong);color:var(--text-primary);text-transform:none;letter-spacing:-0.005em;z-index:3}
.ev-cover .type-badge i,.ev-cover-placeholder .type-badge i{width:14px;height:14px;display:grid;place-items:center}
.type-badge.type-game{color:var(--t-game);border-color:oklch(70% 0.15 295 / 0.4)}
.type-badge.type-training{color:var(--t-training);border-color:oklch(82% 0.22 142 / 0.35)}
.type-badge.type-tournament{color:var(--t-tournament);border-color:oklch(80% 0.12 78 / 0.4)}

/* Level chip on cover */
.ev-cover .lvl,.ev-cover-placeholder .lvl{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 12px 0 6px;border-radius:100px;font-family:var(--ui);font-size:12px;font-weight:600;background:rgba(8,8,10,.92);border:1px solid var(--border-strong);color:var(--text-primary);z-index:3;letter-spacing:-0.005em}
.ev-cover .lvl::before,.ev-cover-placeholder .lvl::before{content:'';width:18px;height:18px;border-radius:50%;background:var(--m-light_plus);box-shadow:inset 0 0 0 1.5px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.25);position:relative}
.ev-cover .lvl.lvl-novice::before,.ev-cover-placeholder .lvl.lvl-novice::before{background:var(--m-novice)}
.ev-cover .lvl.lvl-novice_plus::before,.ev-cover-placeholder .lvl.lvl-novice_plus::before{background:var(--m-novice_plus)}
.ev-cover .lvl.lvl-light::before,.ev-cover-placeholder .lvl.lvl-light::before{background:var(--m-light)}
.ev-cover .lvl.lvl-light_plus::before,.ev-cover-placeholder .lvl.lvl-light_plus::before{background:var(--m-light_plus)}
.ev-cover .lvl.lvl-light_pp::before,.ev-cover-placeholder .lvl.lvl-light_pp::before{background:var(--m-light_pp)}
.ev-cover .lvl.lvl-medium::before,.ev-cover-placeholder .lvl.lvl-medium::before{background:var(--m-medium)}
.ev-cover .lvl.lvl-hard::before,.ev-cover-placeholder .lvl.lvl-hard::before{background:var(--m-hard)}

/* Big date on cover (handoff style) */
.ev-cover-date{position:absolute;left:14px;bottom:10px;z-index:2;display:flex;flex-direction:column;gap:2px}
.ev-cover-date .d{font-family:var(--display);font-weight:600;font-size:30px;line-height:.9;letter-spacing:-0.03em;color:var(--text-primary)}
.ev-cover-date .m{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-secondary)}

/* Full overlay */
.ev-full-badge{position:absolute;inset:0;background:rgba(8,8,10,.6);z-index:2;display:grid;place-items:center;top:0;right:0;text-align:center;padding:0;border-radius:0;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#fff;font-weight:600;font-family:var(--display)}
.ev-full-badge::before{content:'Полный набор';background:var(--danger);padding:8px 18px;border-radius:8px;border:1px solid rgba(255,255,255,.1);box-shadow:0 10px 30px -10px rgba(0,0,0,.6)}

/* Body */
.ev-body{padding:16px 18px 18px}
.ev-title{font-family:var(--display);font-size:17px;font-weight:600;line-height:1.2;letter-spacing:-0.015em;margin-bottom:10px;color:var(--text-primary)}
.ev-meta{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:12px;color:var(--text-secondary);margin-bottom:5px;letter-spacing:.02em}
.ev-meta i{width:13px;height:13px;color:var(--text-muted);flex-shrink:0;stroke-width:1.8}
.ev-footer{display:flex;align-items:flex-end;justify-content:space-between;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.ev-price{font-family:var(--display);font-size:22px;font-weight:600;line-height:1;letter-spacing:-0.02em;color:var(--accent);background:none;-webkit-background-clip:initial;-webkit-text-fill-color:initial}
.ev-spots{text-align:right;min-width:100px}
.ev-spots-text{font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.04em;margin-bottom:6px}
.ev-spots-text b{color:var(--text-primary);font-weight:600}
.ev-spots-bar{width:100%;height:3px;background:rgba(255,255,255,.06);border-radius:3px;overflow:hidden;margin-top:0}
.ev-spots-fill{height:100%;border-radius:3px;background:var(--accent);transition:width .6s cubic-bezier(.22,1,.36,1)}
.ev-spots-fill.low{background:var(--warning)}
.ev-spots-fill.full{background:var(--danger)}
.ev-spots-urgent{font-family:var(--mono);font-size:12.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--danger);margin-top:4px}

/* Horizontal scroll */
.scroll-x{display:flex;gap:14px;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;padding:0 16px 12px;margin:0 -16px}
.scroll-x::-webkit-scrollbar{display:none}
.scroll-x .ev-card{min-width:280px;max-width:300px;flex-shrink:0;scroll-snap-align:start;margin-bottom:0}

/* === BUTTONS === */
.btn{display:block;width:100%;padding:14px 18px;border:none;border-radius:var(--radius-lg);font-family:var(--ui);font-size:14px;font-weight:500;cursor:pointer;text-align:center;text-decoration:none;transition:transform .15s ease,background .2s ease;letter-spacing:-0.005em}
.btn:active{transform:scale(.98)}
.btn-gold{background:var(--accent);color:var(--accent-ink);padding:16px 18px;font-size:15px;border-radius:var(--radius-lg);font-weight:600}
.btn-gold:disabled{background:rgba(255,255,255,.06);color:var(--text-muted);cursor:not-allowed}
.btn-outline{background:transparent;color:var(--text-primary);border:1px solid var(--border-strong);font-weight:500;font-size:14px;border-radius:var(--radius-lg)}
.btn-outline:active{background:var(--surface)}
.btn-secondary{background:var(--surface);color:var(--text-primary);border:1px solid var(--border);font-weight:500;border-radius:var(--radius-lg)}
.btn-secondary:active{background:var(--surface-2)}
.btn-danger{background:var(--danger);color:#fff;border-radius:var(--radius-lg);font-weight:600}
.btn+.btn{margin-top:10px}
.btn-sm{padding:8px 14px;font-size:12px;display:inline-block;width:auto;border-radius:10px}
.btn-icon-row{display:flex;align-items:center;gap:14px;text-align:left;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);cursor:pointer;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;width:100%;font-family:var(--ui);font-size:14px;font-weight:500;color:var(--text-primary)}
.btn-icon-row:active{background:var(--surface-2);border-color:var(--border-strong)}
.btn-icon-row i{color:var(--text-secondary);width:18px;height:18px}
.btn-icon-row .arrow{margin-left:auto;color:var(--text-muted)}

/* Sticky action button */
.sticky-action{position:fixed;bottom:80px;left:0;right:0;padding:12px 16px;background:linear-gradient(transparent,var(--bg-primary) 30%);z-index:50;padding-top:32px}

/* === TEXT === */
.page-title{font-family:var(--display);font-size:30px;font-weight:600;letter-spacing:-0.025em;line-height:1;margin-bottom:18px;padding-top:18px;color:var(--text-primary)}
.section-title{font-family:var(--mono);font-size:11px;font-weight:500;color:var(--text-muted);margin-bottom:12px;text-transform:uppercase;letter-spacing:.16em}
.hint{color:var(--text-secondary);font-size:13px;line-height:1.55}
.text-muted{color:var(--text-muted)}
.text-gold{color:var(--accent)}
.bold{font-weight:600}
.price{font-family:var(--display);font-size:20px;font-weight:600;color:var(--text-primary);letter-spacing:-0.01em}
.eyebrow{font-family:var(--mono);font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);font-weight:500}
.eyebrow.gold{color:var(--accent)}
.mono{font-family:var(--mono);font-feature-settings:"tnum" 1}
.tnum{font-variant-numeric:tabular-nums}
.mb4{margin-bottom:4px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.flex{display:flex}.between{justify-content:space-between;align-items:center}.gap8{gap:8px}.gap12{gap:12px}.center{text-align:center}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}

/* === EVENT DETAIL === */
.detail-hero{margin:0 -16px 0;position:relative;overflow:hidden}
.detail-hero img{width:100%;height:260px;object-fit:cover;display:block;filter:brightness(0.85)}
.detail-hero-placeholder{width:100%;height:240px;position:relative;overflow:hidden}
.detail-hero-placeholder.type-game{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/images/cover_game.webp') center/cover no-repeat,#0D1018}
.detail-hero-placeholder.type-training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/images/cover_training.webp') center/cover no-repeat,#0E1A14}
.detail-hero-placeholder.type-tournament{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/images/cover_tournament.webp') center/cover no-repeat,#1A1408}
.detail-hero-overlay{position:absolute;bottom:0;left:0;right:0;height:120px;background:linear-gradient(transparent,var(--bg-primary))}
.detail-info{position:relative;z-index:2;margin-top:-24px;padding:0 4px}
.detail-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}
.detail-meta-item{padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}
.detail-meta-item .eyebrow{margin-bottom:8px}
.detail-meta-item .meta-val{font-family:var(--display);font-size:18px;font-weight:600;color:var(--text-primary);letter-spacing:-0.01em}
.detail-meta-item .meta-val.gold{color:var(--accent)}
.detail-meta-item span{font-size:13px;color:var(--text-secondary)}
.detail-meta-item i{color:var(--text-muted);width:16px;height:16px;flex-shrink:0;display:inline}

/* Participants */
.participants-inline{display:flex;align-items:center;gap:0;margin:12px 0}
.participants-inline .p-avatar{width:34px;height:34px;border-radius:50%;border:2px solid var(--bg-primary);margin-left:-10px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:12px;font-weight:600;color:var(--text-secondary);overflow:hidden;flex-shrink:0}
.participants-inline .p-avatar:first-child{margin-left:0}
.participants-inline .p-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.participants-inline .p-more{margin-left:10px;font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.06em}

/* Type badges (inline use — not on cover) */
.type-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--ui);font-size:12px;font-weight:600;padding:5px 10px;border-radius:8px;letter-spacing:-0.005em;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-primary);text-transform:none}
.type-badge i{width:14px;height:14px;stroke-width:2}
.type-game{color:var(--t-game)}
.type-game i{color:var(--t-game)}
.type-training{color:var(--t-training)}
.type-training i{color:var(--t-training)}
.type-tournament{color:var(--t-tournament)}
.type-tournament i{color:var(--t-tournament)}

/* Level chip (inline use) */
.lvl{display:inline-flex;align-items:center;gap:6px;padding:4px 11px 4px 5px;border-radius:100px;font-family:var(--ui);font-size:12px;font-weight:600;background:var(--surface);border:1px solid var(--border-strong);color:var(--text-primary);letter-spacing:-0.005em}
.lvl::before{content:'';width:16px;height:16px;border-radius:50%;background:var(--m-light_plus);box-shadow:inset 0 0 0 1.5px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.25)}
.lvl-novice::before{background:var(--m-novice)}
.lvl-novice_plus::before{background:var(--m-novice_plus)}
.lvl-light::before{background:var(--m-light)}
.lvl-light_plus::before{background:var(--m-light_plus)}
.lvl-light_pp::before{background:var(--m-light_pp)}
.lvl-medium::before{background:var(--m-medium)}
.lvl-hard::before{background:var(--m-hard)}

/* Spots bar (inline) */
.spots-wrap{display:flex;align-items:center;gap:10px;margin-top:10px}
.spots-bar{flex:1;height:3px;background:rgba(255,255,255,.06);border-radius:3px;overflow:hidden}
.spots-fill{height:100%;border-radius:3px;background:var(--accent);transition:width .6s cubic-bezier(.22,1,.36,1)}
.spots-fill.low{background:var(--warning)}
.spots-fill.full{background:var(--danger)}

/* Status tags */
.tag{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:100px;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--border-strong)}
.tag-success{background:var(--success-bg);color:var(--success);border-color:transparent}
.tag-warning{background:var(--warning-bg);color:var(--warning);border-color:transparent}
.tag-danger{background:var(--danger-bg);color:var(--danger);border-color:transparent}
.tag-info{background:oklch(78% 0.12 235 / 0.14);color:oklch(78% 0.12 235);border-color:transparent}
.tag-gold{background:var(--accent-soft);color:var(--accent);border-color:transparent}

/* Stat cards */
.stat-card{text-align:center;padding:18px 12px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}
.stat-val{font-family:var(--display);font-size:26px;font-weight:600;color:var(--text-primary);letter-spacing:-0.02em;line-height:1;background:none;-webkit-background-clip:initial;-webkit-text-fill-color:initial}
.stat-val.accent{color:var(--accent)}
.stat-label{font-family:var(--mono);font-size:12.5px;color:var(--text-muted);margin-top:8px;text-transform:uppercase;letter-spacing:.16em;font-weight:500}

/* Profile */
.profile-cover{margin:0 -16px 0;height:120px;background:radial-gradient(60% 80% at 50% 0%,var(--accent-soft),transparent 50%);position:relative;overflow:hidden}
.profile-cover::after{content:'';position:absolute;bottom:0;left:0;right:0;height:60px;background:linear-gradient(transparent,var(--bg-primary))}
.profile-header{position:relative;z-index:2;margin-top:-50px;text-align:center;padding:0 16px}
.profile-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:18px 0}
.profile-stats .stat-card{padding:14px 8px}

/* Avatar */
.avatar-lg{width:108px;height:108px;border-radius:50%;background:linear-gradient(135deg,oklch(72% 0.04 70),oklch(45% 0.04 60));display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:36px;font-weight:600;color:rgba(255,255,255,.9);margin:0 auto 14px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px var(--accent),0 0 0 4px var(--bg-primary);letter-spacing:-0.02em}
.avatar-lg img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.avatar-edit-overlay{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,.6);color:#fff;font-family:var(--mono);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;text-align:center;padding:5px 0;cursor:pointer}
.avatar-actions{display:flex;gap:8px;justify-content:center;margin-bottom:12px}
.avatar-actions button{background:transparent;border:1px solid var(--border-strong);color:var(--text-secondary);font-family:var(--mono);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;padding:6px 12px;border-radius:100px;cursor:pointer;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s}
.avatar-actions button:active{background:var(--surface);border-color:var(--accent);color:var(--accent)}
.avatar-preview-wrap{text-align:center;margin-bottom:16px}
.avatar-preview-wrap img{width:120px;height:120px;border-radius:50%;object-fit:cover;border:3px solid var(--accent)}

/* Positions */
.positions-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pos-chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 12px;text-align:center;cursor:pointer;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;font-family:var(--ui);font-size:14px;color:var(--text-secondary);font-weight:500}
.pos-chip.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}
.pos-chip:active{transform:scale(.97)}
.pos-tags{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-bottom:12px}
.pos-tag{background:var(--accent-soft);color:var(--accent);font-family:var(--mono);font-size:12.5px;letter-spacing:.08em;padding:4px 10px;border-radius:100px;font-weight:600;text-transform:uppercase}

/* Participants */
.participant-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--border)}
.participant-row:last-child{border-bottom:none}
.participant-info{display:flex;align-items:center;gap:12px}
.participant-num{font-family:var(--mono);font-size:11px;color:var(--text-muted);width:22px;text-align:center;letter-spacing:.04em}
.participant-avatar{width:34px;height:34px;border-radius:50%;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:13px;font-weight:600;color:var(--text-secondary);border:1px solid var(--border);flex-shrink:0;overflow:hidden}
.participant-name{font-size:14px;color:var(--text-primary);font-weight:500}

/* Match rows */
.match-row{padding:12px 0;border-bottom:1px solid var(--border);font-size:14px;display:flex;justify-content:space-between;align-items:center}
.match-row:last-child{border-bottom:none}
.winner{font-weight:600;color:var(--accent)}

/* Meta info rows */
.meta-row{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text-secondary);padding:6px 0}
.meta-icon{width:18px;text-align:center;font-size:14px;color:var(--text-muted)}
.meta-link{color:var(--accent);text-decoration:none;font-weight:500}

/* Filter chips */
.chips{display:flex;gap:8px;margin-bottom:16px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
.chips::-webkit-scrollbar{display:none}
.chip{white-space:nowrap;padding:8px 14px;border-radius:100px;font-size:13px;font-weight:500;border:1px solid var(--border-strong);background:transparent;color:var(--text-secondary);cursor:pointer;transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,opacity .2s ease,transform .2s ease;flex-shrink:0;font-family:var(--ui)}
.chip.active{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:600}
.chip:active{transform:scale(.96)}

/* Nav back */
.nav-back{font-family:var(--ui);font-size:13px;color:var(--text-secondary);cursor:pointer;margin:18px 0 14px;padding:10px 16px 10px 12px;display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:100px;letter-spacing:.02em;font-weight:500;transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,opacity .2s ease,transform .2s ease}
.nav-back:hover{background:rgba(255,255,255,.07);color:var(--text-primary);border-color:var(--border-strong);transform:translateX(-2px)}
.nav-back:active{color:var(--accent);transform:translateX(-3px)}
.all-link{font-family:var(--ui);font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:8px;transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,opacity .2s ease,transform .2s ease}
.all-link:hover{background:rgba(245,180,90,.08)}

/* List row (settings, admin) */
.list-row{display:flex;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s ease}
.list-row:last-child{border-bottom:0}
.list-row:active{background:rgba(255,255,255,.02)}
.list-row .ico{width:24px;height:24px;color:var(--text-secondary);flex-shrink:0;display:grid;place-items:center}
.list-row .lbl{flex:1;font-size:14px;color:var(--text-primary);font-weight:500}
.list-row .chev{color:var(--text-faint)}

/* Day row (events list) */
.day-row-card{padding:0!important;cursor:pointer;margin-bottom:10px;transition:transform .2s ease,border-color .2s ease}
.day-row-card:active{transform:scale(.99);border-color:var(--border-strong)}
.day-row{padding:18px 18px;display:flex;align-items:center;gap:16px}
.day-row .date{width:56px;flex-shrink:0;text-align:center;border-right:1px solid var(--border);padding-right:16px}
.day-row .date .d{font-family:var(--display);font-weight:600;font-size:26px;color:var(--accent);line-height:1;letter-spacing:-0.02em}
.day-row .date .m{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);margin-top:5px}
.day-row .info{flex:1;min-width:0}
.day-row .info .name{font-family:var(--display);font-weight:600;font-size:16px;color:var(--text-primary);letter-spacing:-0.005em}
.day-row .info .desc{font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.04em;margin-top:5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.day-row .chev{color:var(--text-muted)}
.lbadge{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;font-family:var(--display);font-weight:700;font-size:12.5px;line-height:1}
.lbadge.training{background:var(--t-training-soft);color:var(--t-training)}
.lbadge.game{background:var(--t-game-soft);color:var(--t-game)}
.lbadge.tournament{background:var(--t-tournament-soft);color:var(--t-tournament)}

/* Empty state */
.empty{text-align:center;padding:60px 24px;color:var(--text-muted)}
.empty-icon{font-size:48px;margin-bottom:16px;opacity:.5;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted)}
.empty-icon svg{width:48px;height:48px;color:var(--text-muted);opacity:.85}
.empty-text{font-family:var(--ui);font-size:14px;color:var(--text-muted)}
.empty-text{font-size:14px;line-height:1.7;margin-bottom:20px;color:var(--text-secondary)}
.empty-state{text-align:center;padding:48px 24px}
.empty-state-icon{width:60px;height:60px;margin:0 auto 16px;border-radius:50%;background:var(--surface);display:flex;align-items:center;justify-content:center;border:1px solid var(--border);color:var(--text-muted)}
.empty-state-title{font-family:var(--display);font-size:16px;font-weight:600;margin-bottom:8px;color:var(--text-primary)}
.empty-state-text{font-size:13px;color:var(--text-secondary);margin-bottom:20px;line-height:1.6}

/* Bottom nav — glass underline tabs */
.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#0a0a0c;border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(5,1fr);padding:6px 4px 4px;padding-bottom:max(6px,env(safe-area-inset-bottom));z-index:100}
.nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px 6px;text-decoration:none;color:var(--text-muted);font-family:var(--ui);font-size:12.5px;font-weight:500;cursor:pointer;transition:color .2s ease;position:relative;letter-spacing:.04em;text-transform:uppercase}
.nav-item.active{color:var(--accent)}
.nav-item.active::after{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:26px;height:2px;border-radius:0 0 2px 2px;background:var(--accent)}
.nav-icon{font-size:22px;line-height:1;transition:transform .2s ease}

/* Toast */
.toast{position:fixed;top:-120px;left:16px;right:16px;padding:14px 18px;border-radius:var(--radius-lg);background:var(--success);color:#fff;font-weight:500;font-size:14px;z-index:10000;text-align:center;transition:top .35s cubic-bezier(.22,.61,.36,1);box-shadow:var(--shadow-lg);font-family:var(--ui);opacity:0;pointer-events:none}
.toast.show{top:16px;opacity:1;pointer-events:auto}
.toast.error{background:var(--danger)}

/* Forms */
input,select,textarea{width:100%;padding:13px 14px;border:1px solid var(--border-strong);border-radius:var(--radius-md);font-family:var(--ui);font-size:14px;background:var(--bg-secondary);color:var(--text-primary);outline:none;transition:border-color .2s ease}
input:focus,select:focus,textarea:focus{border-color:var(--accent)}
input::placeholder{color:var(--text-muted)}
.form-group{margin-bottom:14px}
.form-group label{display:block;font-family:var(--mono);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px;font-weight:500}

.sep{height:1px;background:var(--border);margin:20px 0}
.hidden{display:none}
.divider{height:1px;background:var(--border);border:0;margin:0}

/* Scrollbar */
::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}

/* Stagger */
.ev-card:nth-child(1),.card:nth-child(1){animation:fadeIn .35s ease both}
.ev-card:nth-child(2),.card:nth-child(2){animation:fadeIn .35s .05s ease both}
.ev-card:nth-child(3),.card:nth-child(3){animation:fadeIn .35s .1s ease both}
.ev-card:nth-child(4),.card:nth-child(4){animation:fadeIn .35s .15s ease both}
.ev-card:nth-child(5),.card:nth-child(5){animation:fadeIn .35s .2s ease both}
.ev-card:nth-child(6),.card:nth-child(6){animation:fadeIn .35s .25s ease both}
.ev-card:nth-child(7),.card:nth-child(7){animation:fadeIn .35s .3s ease both}
.ev-card:nth-child(8),.card:nth-child(8){animation:fadeIn .35s .35s ease both}

/* Admin */
.admin-badge{background:var(--danger);color:#fff;font-family:var(--mono);font-size:12.5px;padding:2px 8px;border-radius:4px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}
#pg-admin .btn{display:flex;align-items:center;gap:14px;padding:16px 18px;text-align:left;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);font-size:14px}
#pg-admin .btn+.btn{margin-top:10px}
#pg-admin .btn-gold{background:var(--accent-soft);color:var(--accent);border-color:transparent;font-weight:600}

/* Standings table */
.standings-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12px}
.standings-table th{text-align:right;padding:10px 6px;color:var(--text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.16em;border-bottom:1px solid var(--border);font-weight:500}
.standings-table th:first-child,.standings-table th:nth-child(2){text-align:left}
.standings-table td{padding:12px 6px;border-bottom:1px solid var(--border);color:var(--text-primary);text-align:right;font-variant-numeric:tabular-nums}
.standings-table td:nth-child(2){text-align:left;font-family:var(--ui);font-weight:500}
.standings-table td:first-child{text-align:left;color:var(--text-muted)}
.standings-table tr:last-child td{border-bottom:none}
.standings-table .team-name{color:var(--text-primary);font-weight:500;font-family:var(--ui)}
.standings-table .pts{color:var(--accent);font-weight:600;font-size:13px}
.standings-table .top-3 td:nth-child(2){color:var(--accent)}

/* Tabs */
.tabs{display:flex;background:var(--surface);border-radius:var(--radius-md);padding:4px;margin-bottom:16px;gap:4px;border:1px solid var(--border)}
.tab-btn{flex:1;padding:10px;text-align:center;border-radius:9px;font-family:var(--ui);font-size:13px;font-weight:500;cursor:pointer;transition:color .15s ease,background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease;background:none;border:none;color:var(--text-muted)}
.tab-btn.active{background:var(--bg-primary);color:var(--text-primary);box-shadow:0 1px 0 var(--border-strong)}

/* Matrix */
.matrix-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px}
.matrix-table{width:100%;border-collapse:separate;border-spacing:2px;font-family:var(--mono);font-size:11px}
.matrix-cell{padding:6px 4px;text-align:center;border-radius:4px;background:var(--surface);min-width:46px}
.matrix-cell.win{background:var(--success-bg);color:var(--success);font-weight:600}
.matrix-cell.loss{background:var(--danger-bg);color:var(--danger)}
.matrix-cell.self{background:var(--bg-secondary);color:var(--text-muted)}
.matrix-header{font-size:12.5px;color:var(--text-muted);font-weight:500;padding:6px 4px}
.matrix-team{font-size:11px;font-weight:500;color:var(--text-primary);padding:6px 4px;white-space:nowrap;font-family:var(--ui)}

/* Bracket */
.brk-wrapper{margin:0 -16px;padding:16px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.brk-grid{display:flex;gap:20px;align-items:stretch;min-width:max-content}
.brk-col{display:flex;flex-direction:column;justify-content:space-around;gap:18px;min-width:170px}
.brk-col-final{justify-content:center;min-width:200px}
.brk-col-title{font-family:var(--mono);font-size:12.5px;color:var(--text-muted);letter-spacing:.16em;text-transform:uppercase;font-weight:600;text-align:center;margin-bottom:4px}
.brk-col-title.accent{color:var(--text-secondary)}
.brk-col-title.gold{color:var(--accent)}
.brk-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:0;overflow:hidden;position:relative}
.brk-card.brk-played{border-color:var(--border-strong)}
.brk-card.brk-tbd{opacity:.6}
.brk-team{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;font-size:13px;font-weight:500;color:var(--text-secondary);position:relative}
.brk-team+.brk-team{border-top:1px solid var(--border)}
.brk-team.brk-win{color:var(--accent);font-weight:600;background:rgba(245,180,90,.06)}
.brk-team.brk-win::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}
.brk-team.brk-lose{color:var(--text-muted)}
.brk-team.brk-empty{font-family:var(--mono);font-size:11px;letter-spacing:.1em;opacity:.5}
.brk-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}
.brk-score{font-family:var(--display);font-weight:700;font-size:16px;color:inherit;min-width:16px;text-align:right}
.brk-third-label{font-family:var(--mono);font-size:12.5px;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;text-align:center;margin:18px 0 4px}
.brk-winner{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,rgba(245,180,90,.14),rgba(245,180,90,.04));border:1px solid rgba(245,180,90,.32);border-radius:14px;padding:16px 18px;margin-bottom:8px}
.brk-winner-icon{width:42px;height:42px;border-radius:12px;background:rgba(245,180,90,.16);color:var(--accent);display:grid;place-items:center}
.brk-winner-lbl{font-family:var(--mono);font-size:12.5px;color:var(--accent);letter-spacing:.16em;text-transform:uppercase;font-weight:600;margin-bottom:2px}
.brk-winner-name{font-family:var(--display);font-size:18px;font-weight:600;color:var(--text-primary);letter-spacing:-0.01em}

/* Playoff bracket */
.playoff-stage{margin-bottom:16px}
.playoff-match{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;margin-bottom:10px}

/* Scroll top */
.scroll-top{position:fixed;bottom:90px;right:16px;width:42px;height:42px;border-radius:50%;background:var(--accent);color:var(--accent-ink);border:none;font-size:18px;font-weight:600;cursor:pointer;display:none;align-items:center;justify-content:center;z-index:90}
.scroll-top.visible{display:flex}

/* Skeletons */
.skeleton-card{background:var(--surface);border-radius:var(--radius-xl);overflow:hidden;border:1px solid var(--border);margin-bottom:14px}
.skeleton-cover{height:170px;background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%);background-size:400px 100%;animation:shimmer 1.5s infinite}
.skeleton-body{padding:16px 18px}
.skeleton-line{height:12px;border-radius:4px;background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%);background-size:400px 100%;animation:shimmer 1.5s infinite;margin-bottom:10px}
.skeleton-line.w60{width:60%}
.skeleton-line.w40{width:40%}
.skeleton-line.w80{width:80%}
.skeleton-line.h20{height:18px}

/* Lightbox */
.lightbox{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.95);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .2s ease}
.lightbox img{max-width:95%;max-height:90vh;object-fit:contain;border-radius:12px}
.lightbox-close{position:absolute;top:16px;right:16px;background:rgba(255,255,255,.1);backdrop-filter:blur(8px);border:none;color:#fff;font-size:24px;width:44px;height:44px;border-radius:50%;cursor:pointer}
.lightbox-download{position:absolute;bottom:24px;color:var(--accent);text-decoration:none;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:10px 18px;background:rgba(0,0,0,.6);border-radius:100px;backdrop-filter:blur(8px)}

@media(min-width:768px){
    body{max-width:480px;margin:0 auto}
}

/* === SITE-SPECIFIC (public site only) === */
body{padding:0;background:var(--bg-primary);display:flex;flex-direction:column;min-height:100vh}
/* Reset webapp body padding-bottom (no bottom-nav on site) */
.bottom-nav{display:none!important}

/* HEADER */
.site-header{background:#0a0a0c;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:200;padding:0 24px}
.header-inner{max-width:1380px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:60px;gap:16px}
.header-logo{display:flex;align-items:center;gap:10px;text-decoration:none;cursor:pointer}
.header-logo-icon{width:auto;height:28px;flex-shrink:0;object-fit:contain;border-radius:0}
.header-logo-text{font-family:var(--display);font-size:16px;font-weight:600;letter-spacing:-0.01em;color:var(--text-primary);background:none;-webkit-background-clip:initial;-webkit-text-fill-color:initial}
.header-nav{display:flex;gap:2px;align-items:center;margin-left:24px}
.header-nav-item{padding:8px 14px;border-radius:var(--radius-md);font-family:var(--ui);font-size:13.5px;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,opacity .2s ease,transform .2s ease;text-decoration:none;white-space:nowrap;position:relative}
.header-nav-item:hover{color:var(--text-primary);background:var(--surface)}
.header-nav-item.active{color:var(--text-primary);background:none;font-weight:600}
.header-nav-item.active::after{content:'';position:absolute;bottom:-19px;left:14px;right:14px;height:2px;background:var(--accent);border-radius:2px 2px 0 0}
.header-user{display:flex;align-items:center;gap:12px;margin-left:auto}
.header-user-name{font-size:13.5px;font-weight:500;color:var(--text-primary)}
.header-user-avatar{width:34px;height:34px;border-radius:50%;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:600;font-size:13px;color:var(--text-secondary);cursor:pointer;overflow:hidden;flex-shrink:0;border:1px solid var(--border-strong)}
.header-user-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.header-login-btn{padding:9px 18px;border-radius:var(--radius-md);background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:13.5px;cursor:pointer;border:none;font-family:var(--ui);transition:transform .15s ease,box-shadow .2s ease;letter-spacing:-0.005em}
.header-login-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-gold)}
.hamburger{display:none;background:none;border:none;color:var(--text-secondary);font-size:22px;cursor:pointer;padding:6px}
.mobile-menu{display:none;position:fixed;top:60px;left:0;right:0;bottom:0;background:#0a0a0c;z-index:199;flex-direction:column;padding:16px}
.mobile-menu.open{display:flex}
.mobile-menu .header-nav-item{padding:14px 16px;font-size:15px;border-bottom:1px solid var(--border);border-radius:0}
@media (max-width:768px){.header-nav{display:none}.header-user-name{display:none}.hamburger{display:block}.header-logo-icon{width:28px;height:28px}.site-main{padding:0 16px}}

/* MAIN */
.site-main{flex:1;max-width:1380px;width:100%;margin:0 auto;padding:0 24px}

/* FOOTER */
.site-footer{background:transparent;border-top:none;padding:0;margin-top:auto}
.footer-gradient-line{height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5}
.footer-content{padding:36px 24px;max-width:1380px;margin:0 auto;border-top:1px solid var(--border)}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:32px;margin-bottom:28px}
.footer-col-title{font-family:var(--mono);font-size:12.5px;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:var(--text-muted);margin-bottom:12px}
.footer-col a{display:block;color:var(--text-secondary);text-decoration:none;font-size:13px;padding:4px 0;transition:color .2s;font-family:var(--ui)}
.footer-col a:hover{color:var(--accent)}
.footer-bottom{text-align:center;padding-top:24px;border-top:1px solid var(--border);color:var(--text-muted);font-family:var(--mono);font-size:11px;letter-spacing:.06em}
.footer-logo-text{font-family:var(--display);font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:8px;letter-spacing:-0.01em;background:none;-webkit-background-clip:initial;-webkit-text-fill-color:initial}
.footer-info{color:var(--text-muted);font-family:var(--mono);font-size:11px;line-height:1.8;letter-spacing:.04em}
.footer-links{display:flex;justify-content:center;gap:24px;margin-bottom:18px;flex-wrap:wrap}
.footer-links a{color:var(--text-secondary);text-decoration:none;font-size:13px;transition:color .2s;font-weight:500}
.footer-links a:hover{color:var(--accent)}
@media (max-width:640px){.footer-grid{grid-template-columns:1fr;gap:24px;text-align:center}}

/* LOGIN page */
.login-wrap{max-width:420px;margin:0 auto;text-align:center;padding-top:48px;position:relative}
.login-logo{margin-bottom:18px}
.login-logo img{width:96px;height:96px;object-fit:contain}
.login-title{font-family:var(--display);font-size:32px;font-weight:600;color:var(--text-primary);margin-bottom:8px;letter-spacing:-0.025em;line-height:1;background:none;-webkit-background-clip:initial;-webkit-text-fill-color:initial}
.login-subtitle{color:var(--text-secondary);font-size:14px;margin-bottom:32px;line-height:1.55}
.login-tg-wrap{display:none}.login-divider{display:flex;align-items:center;gap:12px;max-width:300px;margin:22px auto;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em}.login-divider span{white-space:nowrap}
.tg-login-btn{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;background:var(--accent);color:var(--accent-ink);font-family:var(--ui);font-size:14px;font-weight:600;border-radius:var(--radius-lg);text-decoration:none;transition:transform .15s ease,box-shadow .2s ease;letter-spacing:-0.005em}
.tg-login-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-gold)}
.tg-login-btn::after{display:none}
.login-divider{display:flex;align-items:center;gap:12px;margin-bottom:20px;color:var(--text-muted);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.login-divider::before,.login-divider::after{content:'';flex:1;height:1px;background:var(--border)}
.login-code-section{margin-bottom:24px;text-align:center}
.code-input-wrap{display:flex;gap:10px;justify-content:center;align-items:center;margin-bottom:8px}
.code-input{width:160px;padding:14px 16px;font-size:22px;font-weight:600;font-family:var(--mono);letter-spacing:6px;text-align:center;background:var(--bg-secondary);border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--text-primary);outline:none;transition:border-color .2s}
.code-input:focus{border-color:var(--accent)}
.btn-code-get,.btn-code-submit{padding:13px 20px;border-radius:var(--radius-md);font-family:var(--ui);font-size:13px;font-weight:600;cursor:pointer;border:none;background:var(--surface);color:var(--text-primary);border:1px solid var(--border-strong);transition:color .15s ease,background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}
.btn-code-submit{background:var(--accent);color:var(--accent-ink);border-color:transparent}
.btn-code-get:hover,.btn-code-submit:hover{transform:translateY(-1px)}.btn-code-get{display:inline-flex;align-items:center;justify-content:center;gap:9px;background:linear-gradient(135deg,#2AABEE,#229ED9)!important;border:1px solid rgba(255,255,255,.14)!important;color:#fff!important;text-decoration:none;font-size:14px;padding:14px 22px;box-shadow:0 8px 22px rgba(34,158,217,.30)}.btn-code-get:hover{filter:brightness(1.06)}
.login-hint{color:var(--text-secondary);font-size:12.5px;line-height:1.55;max-width:340px;margin:20px auto 0;text-align:center}.login-hint a{font-weight:600}
.code-error{color:var(--danger);font-size:13px;margin-top:8px;font-weight:500}
.login-bg-pattern{display:none}


/* === ЭКРАН ВХОДА: две колонки, стекло, каскад === */
@keyframes laIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes heroZoom{from{transform:scale(1.04)}to{transform:scale(1.12)}}
#pg-login .login-wrap>*{animation:laIn .5s cubic-bezier(.2,.7,.3,1) both}
#pg-login .login-wrap>*:nth-child(1){animation-delay:.03s}
#pg-login .login-wrap>*:nth-child(2){animation-delay:.09s}
#pg-login .login-wrap>*:nth-child(3){animation-delay:.15s}
#pg-login .login-wrap>*:nth-child(4){animation-delay:.21s}
#pg-login .login-wrap>*:nth-child(5){animation-delay:.27s}
#pg-login .login-wrap>*:nth-child(6){animation-delay:.33s}
#pg-login .login-wrap>*:nth-child(7){animation-delay:.39s}
#pg-login .login-wrap>*:nth-child(8){animation-delay:.45s}
#pg-login .login-wrap>*:nth-child(n+9){animation-delay:.5s}
#pg-login .code-input{background:rgba(255,255,255,.045)!important;border:1px solid var(--border)!important;border-radius:16px!important;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
#pg-login .code-input:focus{border-color:rgba(245,180,90,.75)!important;background:rgba(245,180,90,.07)!important;box-shadow:0 0 0 4px rgba(245,180,90,.10)}
#pg-login .btn-gold{border-radius:16px}
.login-hero{display:none}
@media(max-width:1023px){
  .login-hero{display:block;position:relative;margin:20px auto 4px;max-width:420px;border-radius:22px;overflow:hidden;border:1px solid var(--border);height:430px}
  .login-hero-img{position:absolute;inset:0;background-size:cover;background-position:center;animation:none}
  .login-hero-veil{position:absolute;inset:0}
  .login-hero-copy{position:absolute;left:18px;right:18px;top:16px;z-index:2}
  .lh-eyebrow{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
  .lh-title{font-family:var(--display);font-size:22px;font-weight:600;line-height:1.1;color:#fff;letter-spacing:-.02em}
  .lh-sub{display:none}
  .lh-mascot-wrap{position:absolute;left:0;right:0;top:70px;bottom:196px;z-index:1;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}
  .lh-mascot{max-height:100%;max-width:58%;width:auto;height:auto;filter:drop-shadow(0 14px 22px rgba(0,0,0,.6));animation:none}
  .login-hero-cards{position:absolute;left:14px;right:14px;bottom:14px;z-index:2;display:flex;flex-direction:column;gap:8px}
  .lh-card{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:14px;background:rgba(18,20,25,.62);border:1px solid rgba(255,255,255,.10);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .lh-ic{width:28px;height:28px;border-radius:9px;background:rgba(245,180,90,.14);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .lh-ic svg{width:15px;height:15px}
  .lh-t{font-size:13px;font-weight:600;color:#fff;line-height:1.25}
  .lh-s{font-size:11px;color:rgba(255,255,255,.60);margin-top:2px;line-height:1.35}
  .login-hero-cards .lh-card:nth-child(n+3){display:none}
}
@media(min-width:1024px){
  .login-split{display:grid;grid-template-columns:minmax(400px,.85fr) 1fr;gap:36px;align-items:stretch;padding:28px 0 40px}
  .login-col-form{display:flex;align-items:center;justify-content:center}
  #pg-login .login-col-form .login-wrap{padding-top:0;margin:0;text-align:left;max-width:440px;width:100%}
  #pg-login .login-col-form .login-logo{margin-bottom:14px}
  #pg-login .login-col-form .login-logo img{width:66px!important;height:66px!important}
  #pg-login .login-col-form .login-title{font-size:42px;margin-bottom:10px}
  #pg-login .login-col-form .login-subtitle{margin-bottom:26px;font-size:15px}
  #pg-login .login-col-form .login-divider{margin-left:0;margin-right:0;max-width:100%}
  #pg-login .login-col-form .login-hint{margin-left:0;text-align:left;max-width:100%}
  #pg-login .login-col-form .code-input-wrap{justify-content:flex-start}
  #pg-login .login-col-form .btn-code-get{width:100%}
  #pg-login .login-col-form .login-code-section{text-align:left}
  .login-hero{display:block;position:relative;border-radius:28px;overflow:hidden;border:1px solid var(--border);min-height:560px}
  .login-hero-img{position:absolute;inset:0;background:#000 url(/static/images/kit_logo_bg.jpg?v=1) center/cover no-repeat;animation:heroZoom 20s ease-in-out infinite alternate}
  .login-hero-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,9,12,.62) 0%,rgba(8,9,12,.34) 42%,rgba(8,9,12,.90) 100%)}
  .login-hero-copy{position:absolute;left:34px;right:34px;top:34px;z-index:2;animation:laIn .7s cubic-bezier(.2,.7,.3,1) both;animation-delay:.25s}
  .lh-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
  .lh-title{font-family:var(--display);font-size:36px;font-weight:600;line-height:1.1;color:#fff;letter-spacing:-.02em}
  .lh-sub{color:rgba(255,255,255,.66);font-size:15px;line-height:1.5;margin-top:12px;max-width:420px}
  .lh-mascot-wrap{position:absolute;left:0;right:0;top:138px;bottom:262px;z-index:1;display:flex;align-items:flex-end;justify-content:center;pointer-events:none;animation:laIn .8s cubic-bezier(.2,.7,.3,1) both;animation-delay:.4s}
  .lh-mascot{max-height:100%;max-width:74%;width:auto;height:auto;filter:drop-shadow(0 22px 36px rgba(0,0,0,.62));animation:none}
  @keyframes lhFloat{from{transform:none}to{transform:none}}
  .login-hero-cards{position:absolute;left:34px;right:34px;bottom:34px;z-index:2;display:flex;flex-direction:column;gap:12px}
  .lh-card{display:flex;gap:13px;align-items:flex-start;padding:15px 17px;border-radius:20px;background:rgba(18,20,25,.55);border:1px solid rgba(255,255,255,.10);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:laIn .6s cubic-bezier(.2,.7,.3,1) both}
  .lh-card:nth-child(1){animation-delay:.5s}
  .lh-card:nth-child(2){animation-delay:.65s}
  .lh-card:nth-child(3){animation-delay:.8s}
  .lh-ic{width:36px;height:36px;border-radius:12px;background:rgba(245,180,90,.14);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .lh-t{font-size:14.5px;font-weight:600;color:#fff;line-height:1.3}
  .lh-s{font-size:12.5px;color:rgba(255,255,255,.60);margin-top:3px;line-height:1.45}
}


/* === ДАШБОРД === */
.dash-card{padding:18px 20px;margin-bottom:12px}.stat-card .stat-label{white-space:normal;overflow-wrap:anywhere;line-height:1.25}@media(max-width:520px){.stat-card .stat-label{font-size:12px;letter-spacing:.06em}}
.dash-title{font-family:var(--display);font-weight:600;font-size:16px;color:var(--text-primary);margin-bottom:6px}
.dash-hint{font-size:13px;line-height:1.5;color:var(--text-secondary);margin-bottom:16px}
.dash-rows{display:flex;flex-direction:column;gap:12px}
.dash-row{display:flex;align-items:center;gap:14px}
.dash-row.now .dash-row-txt{color:var(--text-primary)}
.dash-row.now .dash-fill{background:linear-gradient(90deg,#F5A623,#ffd08a)}
.dash-row-key{width:32px;flex-shrink:0;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.dash-row-key.wide{width:96px;letter-spacing:.02em}
.dash-row-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.dash-row-txt{font-size:13px;color:var(--text-secondary);line-height:1.2}
.dash-track{height:8px;border-radius:5px;background:rgba(255,255,255,.05);overflow:hidden}
.dash-fill{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,rgba(245,166,35,.85),rgba(245,200,119,.85));transition:width .5s cubic-bezier(.2,.7,.3,1)}
.dash-row-val{width:42px;flex-shrink:0;text-align:right;font-family:var(--display);font-weight:600;font-size:15px;color:var(--text-primary)}
@media(max-width:520px){
  .dash-row-key.wide{width:74px;font-size:12.5px}
  .dash-row-txt{font-size:12px}
}
.dash-top{display:flex;flex-direction:column;gap:6px}
.dash-top-row{display:flex;align-items:center;gap:12px;padding:11px 14px;background:var(--bg-card);border:1px solid var(--border);border-radius:14px}
.dash-rank{width:22px;height:22px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--display);font-size:11px;font-weight:700;background:rgba(255,255,255,.06);color:var(--text-muted)}
.dash-rank.r1{background:rgba(245,166,35,.18);color:var(--accent)}
.dash-rank.r2{background:rgba(200,200,210,.14);color:#cfd3da}
.dash-rank.r3{background:rgba(205,127,50,.16);color:#d09a5e}
.dash-top-name{flex:1;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-top-val{font-family:var(--display);font-weight:600;font-size:15px;color:var(--text-primary);white-space:nowrap}
.dash-unit{font-family:var(--ui);font-size:12.5px;font-weight:500;color:var(--text-muted);margin-left:5px}
/* Legal pages */
.legal-content{max-width:760px;margin:0 auto;line-height:1.75;color:var(--text-secondary);font-size:14px}
.legal-content h1,.legal-content h2{font-family:var(--display);color:var(--text-primary);margin:24px 0 14px;letter-spacing:-0.015em}

/* Override mobile @media body{max-width:480px} from webapp CSS */
@media(min-width:768px){body{max-width:none;margin:0}}

/* === Accordion day-card + EventCardV + Match cards + Profile premium === */
.event-card-v{position:relative;width:100%;border-radius:18px;overflow:hidden;cursor:pointer;background:var(--surface);border:1px solid var(--border);display:flex;flex-direction:column;margin-bottom:14px;transition:transform .18s ease,border-color .18s ease}
.event-card-v:hover{transform:translateY(-2px);border-color:var(--border-strong)}
.event-card-v .image-area{position:relative;height:200px;overflow:hidden;background:linear-gradient(135deg,#1a1a20,#0E0E13)}
.event-card-v .image-area.training{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.65)),url('/static/images/cover_training.webp') center/cover no-repeat,#0E1216}
.event-card-v .image-area.game{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.65)),url('/static/images/cover_game.webp') center/cover no-repeat,#0F1018}
.event-card-v .image-area.tournament{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.65)),url('/static/images/cover_tournament.webp') center/cover no-repeat,#13110B}
.event-card-v .image-area::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(8,8,10,.0) 0%,rgba(8,8,10,.0) 40%,rgba(8,8,10,.85) 100%)}
.event-card-v .top-tags{position:absolute;top:14px;left:14px;right:14px;display:flex;justify-content:space-between;z-index:2;gap:6px}
.event-card-v .pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;border:1px solid rgba(255,255,255,.08);color:var(--text-2);height:24px;background:rgba(8,8,10,.72)}
.event-card-v .title-over{position:absolute;left:18px;right:18px;bottom:16px;z-index:2;font-family:var(--display);font-weight:600;font-size:22px;letter-spacing:-0.02em;color:var(--text-primary);line-height:1.1;text-shadow:0 2px 16px rgba(0,0,0,.4)}
.event-card-v .title-over .sub{color:var(--text-secondary);font-weight:400}
.event-card-v .meta{padding:14px 18px 18px;background:var(--surface);display:flex;flex-direction:column;gap:10px}
.event-card-v .meta-row{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-secondary);font-family:var(--mono)}
.event-card-v .meta-row svg{color:var(--text-muted);flex-shrink:0;width:14px;height:14px}
.event-card-v .meta-row .price{color:var(--accent);font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:-0.01em;margin-left:auto}
.event-card-v .meta-row .seats{color:var(--text-secondary);font-variant-numeric:tabular-nums;margin-left:auto;display:flex;align-items:center;gap:6px}
.event-card-v .meta-row .seats.full{color:var(--danger)}
.event-card-v .bar{height:3px;background:rgba(255,255,255,.06);border-radius:3px;overflow:hidden;margin-top:2px}
.event-card-v .bar>span{display:block;height:100%;background:var(--accent);border-radius:3px;transition:width .6s cubic-bezier(.22,1,.36,1)}
.event-card-v.compact .image-area{height:160px}
.event-card-v.compact .title-over{font-size:19px}

/* Calendar day card (accordion) */
.day-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:18px;overflow:hidden;margin-bottom:10px;transition:border-color .2s ease,background .2s ease}
.day-card.expanded{border-color:var(--border-strong);background:var(--bg-secondary)}
.day-card.today{border-color:var(--accent)}
.day-card.today::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent)}
.day-head{display:flex;align-items:center;gap:16px;padding:18px;cursor:pointer;user-select:none;transition:background .15s ease}
.day-head:hover{background:rgba(255,255,255,.015)}
.day-date{width:56px;flex-shrink:0;text-align:left;border-right:1px solid var(--border);padding-right:16px;position:relative}
.day-card.today .day-date{border-right-color:var(--accent)}
.day-date .d{font-family:var(--display);font-weight:600;font-size:30px;color:var(--text-primary);line-height:1;letter-spacing:-0.03em;font-variant-numeric:tabular-nums}
.day-card.today .day-date .d{color:var(--accent)}
.day-date .m{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin-top:6px}
.day-date .today-tag{display:block;margin:0 0 4px;font-family:var(--mono);font-size:8px;letter-spacing:.12em;line-height:1;white-space:nowrap;text-transform:uppercase;color:var(--accent);font-weight:600}
.day-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.day-info .dow{font-family:var(--display);font-weight:600;font-size:16px;color:var(--text-primary);letter-spacing:-0.005em;line-height:1.1}
.day-info .summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.04em}
.day-info .summary .tag-row{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 4px;border-radius:999px;background:rgba(255,255,255,.04)}
.day-info .summary .tag-row .lbadge{width:14px;height:14px;font-size:8px}
.day-info .summary .tag-row .t{font-size:12.5px;color:var(--text-secondary)}
.day-chev{color:var(--text-muted);transition:transform .3s cubic-bezier(.2,0,.1,1)}
.day-card.expanded .day-chev{transform:rotate(90deg);color:var(--text-primary)}
.day-content{max-height:0;overflow:hidden;transition:max-height .45s cubic-bezier(.2,0,.1,1)}
.day-card.expanded .day-content{max-height:3000px}
.day-content-inner{padding:0 14px 16px;border-top:1px solid var(--border);margin-top:0}
.day-card.expanded .day-content-inner{padding-top:14px;animation:dayContentIn .4s ease}
@keyframes dayContentIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.day-empty{padding:22px 14px;text-align:center;font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}
.day-content-inner .event-card-v{margin-bottom:10px}
.day-content-inner .event-card-v:last-child{margin-bottom:0}
.day-content-inner .event-card-v .image-area{height:160px}
.day-content-inner .event-card-v .title-over{font-size:18px}

/* Month header */
.month-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px;padding:4px 2px 0}
.month-name{font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:-0.015em;color:var(--text-primary)}
.month-meta{font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.04em}

/* === Schedule (matches) === */
.round-header{display:flex;align-items:center;gap:18px;padding:0 2px 18px}
.round-num{width:64px;text-align:left;border-right:1px solid var(--border);padding-right:14px}
.round-label{font-family:var(--mono);font-size:12.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px}
.round-n{font-family:var(--display);font-weight:600;font-size:40px;line-height:.9;letter-spacing:-0.04em;color:var(--text-primary);font-variant-numeric:tabular-nums}
.round-info{flex:1}
.round-title{display:flex;align-items:center;gap:8px;font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:-0.01em;color:var(--text-primary)}
.round-date{font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.06em;margin-top:6px}
.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 0 4px oklch(82% 0.22 142 / 0.18);animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
.match-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px 16px;transition:border-color .2s ease;margin-bottom:8px}
.match-card.live{border-color:oklch(82% 0.22 142 / 0.3);background:linear-gradient(180deg,oklch(82% 0.22 142 / 0.04),var(--surface))}
.match-card.dim{opacity:.65}
.match-card:hover{border-color:var(--border-strong)}
.match-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.match-status{font-family:var(--mono);font-size:12.5px;letter-spacing:.12em;font-weight:600;padding:3px 8px;border-radius:4px;text-transform:uppercase}
.match-status.ft{background:rgba(255,255,255,.05);color:var(--text-muted)}
.match-status.live{background:oklch(82% 0.22 142 / 0.18);color:var(--live);display:inline-flex;align-items:center;gap:6px}
.match-status.live .live-dot{background:var(--live)}
.match-status.sched,.match-status.soon{background:rgba(255,255,255,.03);color:var(--text-faint)}
.match-teams{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}
.team-side{display:flex;align-items:center;gap:10px;min-width:0}
.team-side.right{flex-direction:row-reverse}
.team-side.winner .team-name{color:var(--text-primary);font-weight:600}
.team-side .team-name{font-family:var(--display);font-weight:500;font-size:13px;color:var(--text-secondary);letter-spacing:-0.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.15}
.team-emblem{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;font-family:var(--display);font-weight:700;font-size:11px;color:#0A0908;letter-spacing:-0.01em}
.match-score{display:flex;align-items:baseline;gap:6px;font-family:var(--display);font-weight:600;font-variant-numeric:tabular-nums}
.score-num{font-size:22px;color:var(--text-muted);letter-spacing:-0.02em}
.score-num.win{color:var(--accent)}
.score-colon{color:var(--text-faint);font-size:18px}
.score-vs{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--text-faint);font-weight:600}
.match-sets{display:flex;gap:6px;justify-content:center;margin-top:12px;padding-top:10px;border-top:1px dashed var(--border)}
.match-sets .set{font-family:var(--mono);font-size:12.5px;color:var(--text-muted);font-variant-numeric:tabular-nums;letter-spacing:.04em;padding:2px 8px;border-radius:4px;background:rgba(255,255,255,.025)}
.match-sets .set.live{background:oklch(82% 0.22 142 / 0.14);color:var(--live);font-weight:600}
.match-live-line{margin-top:10px;padding:8px 10px;background:oklch(82% 0.22 142 / 0.08);border-radius:6px;font-family:var(--mono);font-size:11px;color:var(--live);letter-spacing:.06em;text-align:center}

/* Subtabs */
.subtabs{display:flex;background:var(--surface);padding:4px;border-radius:12px;margin:0 0 16px;gap:4px;border:1px solid var(--border)}
.subtab{flex:1;text-align:center;padding:10px;border-radius:9px;cursor:pointer;color:var(--text-muted);font-size:13px;font-weight:500;transition:color .15s ease,background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}
.subtab.active{background:var(--bg-primary);color:var(--text-primary);box-shadow:0 1px 0 var(--border-strong)}

/* Teams cards */
.team-card{display:flex;gap:0;background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:10px;cursor:pointer;overflow:hidden;transition:border-color .2s ease,transform .18s ease}
.team-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}
.team-rank{width:56px;flex-shrink:0;display:grid;place-items:center;background:rgba(255,255,255,.02);border-right:1px solid var(--border);position:relative}
.team-rank.podium{background:var(--accent-soft)}
.team-rank.podium::after{content:"";position:absolute;right:0;top:10%;bottom:10%;width:2px;background:var(--accent)}
.team-rank .rank-num{font-family:var(--display);font-weight:600;font-size:26px;color:var(--text-primary);letter-spacing:-0.03em;font-variant-numeric:tabular-nums}
.team-rank.podium .rank-num{color:var(--accent)}
.team-body{flex:1;padding:14px 16px;min-width:0}
.team-row-top{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.team-emblem-lg{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;font-family:var(--display);font-weight:700;font-size:13px;color:#0A0908;letter-spacing:-0.01em}
.team-text{flex:1;min-width:0}
.team-name-big{font-family:var(--display);font-weight:600;font-size:16px;color:var(--text-primary);letter-spacing:-0.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-captain{font-family:var(--mono);font-size:12.5px;color:var(--text-muted);letter-spacing:.04em;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding-top:12px;border-top:1px solid var(--border)}
.ts{display:flex;flex-direction:column;align-items:center;gap:4px}
.ts-val{font-family:var(--display);font-weight:600;font-size:17px;color:var(--text-primary);letter-spacing:-0.02em;font-variant-numeric:tabular-nums}
.ts-lbl{font-family:var(--mono);font-size:12px;color:var(--text-muted);letter-spacing:.16em;text-transform:uppercase;font-weight:500}

/* Profile premium hero */
.profile-hero{position:relative;padding:36px 20px 24px;overflow:hidden;margin:0 -16px}
.ph-bg-radial{position:absolute;inset:0;background:radial-gradient(60% 70% at 50% 0%,var(--accent-soft) 0%,transparent 55%);pointer-events:none}
.ph-bg-rays{position:absolute;inset:0;opacity:.5;pointer-events:none;background:conic-gradient(from 200deg at 50% 0%,transparent 0deg,oklch(80% 0.12 78 / 0.06) 30deg,transparent 60deg,oklch(80% 0.12 78 / 0.04) 90deg,transparent 130deg)}
.ph-bg-grain{position:absolute;inset:0;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");pointer-events:none}
.ph-bg-filigree{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.6}
.ph-particles{position:absolute;inset:0;pointer-events:none}
.ph-dot{position:absolute;background:var(--accent);border-radius:50%;opacity:.5}
/* phFloat анимация убрана — при resume вкладки перезапускалась и создавала мерцание */
.ph-content{position:relative;text-align:center}
.ph-avatar-wrap{position:relative;width:112px;height:112px;margin:0 auto 16px}
.ph-ring{position:absolute;inset:0;border-radius:50%;border:1px solid var(--accent);opacity:.3}
.ph-ring-2{inset:-8px;opacity:.18}
.ph-ring-3{inset:-16px;opacity:.08}
.ph-avatar{position:absolute;inset:6px;border-radius:50%;background:linear-gradient(135deg,oklch(82% 0.04 70),oklch(40% 0.04 60));overflow:hidden;box-shadow:0 0 0 2px var(--bg-primary),inset 0 0 0 1px rgba(255,255,255,.05),0 10px 30px rgba(0,0,0,.6)}
.ph-avatar-fill{position:absolute;inset:0}
.ph-avatar-text{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--display);font-weight:600;font-size:36px;color:rgba(255,255,255,.92);letter-spacing:-0.02em}
.ph-avatar img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;z-index:2}
.ph-avatar-shine{position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.18) 0%,transparent 35%);border-radius:50%}
.ph-photo-btn{position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);background:var(--bg-primary);border:1px solid var(--border-strong);color:var(--text-secondary);font-family:var(--mono);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;padding:5px 11px;border-radius:100px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;z-index:3;font-weight:500}
.ph-photo-btn:hover{color:var(--accent);border-color:var(--accent)}
.ph-name-line{margin-top:10px}
.ph-name{font-family:var(--display);font-weight:600;font-size:30px;letter-spacing:-0.025em;line-height:1;color:var(--text-primary);margin:6px 0 6px}
.ph-handle{font-family:var(--mono);font-size:12px;color:var(--text-muted);letter-spacing:.06em}
.ph-level-row{margin-top:14px}
.ph-level{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:100px;background:var(--accent-soft);color:var(--accent);font-family:var(--ui);font-size:13px;font-weight:600;border:1px solid oklch(80% 0.12 78 / 0.3)}
.ph-level-star{font-size:14px}
.ph-level-sep{width:3px;height:3px;border-radius:50%;background:var(--accent);opacity:.6}
.ph-level-amplua{color:var(--accent);opacity:.85;font-weight:500}
.eyebrow.gold{color:var(--accent)}

input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-text-fill-color:var(--text-primary)!important;-webkit-box-shadow:0 0 0 1000px var(--bg-secondary) inset!important;caret-color:var(--text-primary);transition:background-color 9999s ease-out 0s}
/* Компьютер: карточки событий крупнее — на широком экране они выглядели полосками */
@media (min-width:1100px){
  .site-main{max-width:1560px}
  .event-card-v .image-area{height:320px}
  .event-card-v .title-over{font-size:26px;left:24px;right:24px;bottom:18px}
  .event-card-v .meta{padding:20px 24px}
  .event-card-v .meta-row{font-size:15px}
  .event-card-v .price{font-size:24px}
  .event-card-v .seats{font-size:14px}
  .event-card-v .pill,.event-card-v .lbadge{font-size:12px;padding:6px 12px}
  .card.row-tap{padding:20px 22px}
}
@media (min-width:1600px){
  .event-card-v .image-area{height:380px}
  .event-card-v .title-over{font-size:30px}
}

@media (min-width:1100px){
  .day-content-inner .event-card-v .image-area,.event-card-v.compact .image-area{height:300px}
  .day-content-inner .event-card-v .title-over{font-size:24px}
}
@media (min-width:1600px){
  .day-content-inner .event-card-v .image-area,.event-card-v.compact .image-area{height:340px}
}
/* вкладки управления не влезали на телефоне: скроллим по горизонтали */
.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab-btn{flex:1 0 auto;white-space:nowrap;min-width:0}

/* ===== РЕДИЗАЙН · ФУТБОЛ (стенд) =========================================
   Тёмная база остаётся, но уходим от узнаваемого «ИИ-набора»:
   карточки-плитки → плотный список, Inter → Manrope + Oswald,
   свечения, полоски-акценты и пружинные анимации убраны.
   ========================================================================= */
body[data-sport="football"]{
    /* Тип: узкий афишный для цифр и заголовков, гуманистический для текста */
    --display:'Oswald','Arial Narrow',sans-serif;
    --ui:'Manrope',system-ui,sans-serif;
    /* Ночь без синевы: тёплый уголь вместо чёрно-синего */
    --bg:#0B0B0C;--surface:#141416;--surface-2:#1B1B1E;
    --border:rgba(255,255,255,.08);--border-strong:rgba(255,255,255,.16);
    /* Контраст подписей: было 3.4:1 — ниже нормы */
    --text-muted:#8E8B86;--text-secondary:#B9B5AE;
}
/* Фон КиТ остаётся — это фирменная подложка. */

/* Свечения — главный признак генерённого UI. Гасим все разом. */
body[data-sport="football"] *{
    box-shadow:none!important;
    text-shadow:none!important;
}
/* Пружинные easing → спокойное затухание */
body[data-sport="football"] *{
    transition-timing-function:cubic-bezier(.22,.61,.36,1)!important;
}
/* Полоска-акцент слева у карточки — самый узнаваемый штамп */
body[data-sport="football"] .ev-card::before{display:none!important}

/* ---- Список занятий вместо карточек-плиток ---- */
.fx-list{border-top:1px solid var(--border)}
.fx-row{
    display:grid;grid-template-columns:64px 1fr auto;gap:16px;align-items:center;
    padding:18px 2px;border-bottom:1px solid var(--border);
    cursor:pointer;background:none;border-left:0;border-right:0;width:100%;
    text-align:left;color:inherit;font-family:inherit;
}
.fx-row:active{background:rgba(255,255,255,.03)}

/* Дата — герой строки, как счёт на табло */
.fx-date{text-align:center;line-height:1}
.fx-date .d{
    display:block;font-family:var(--display);font-weight:600;font-size:38px;
    line-height:.86;letter-spacing:-.01em;color:var(--text-primary);
    font-variant-numeric:tabular-nums;
}
.fx-date .m{
    display:block;margin-top:5px;font-family:var(--ui);font-size:12px;font-weight:600;
    text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);
}

.fx-main{min-width:0;display:block}
.fx-main > span{display:block}
.fx-date > span{display:block}
.fx-title{
    font-family:var(--display);font-weight:600;font-size:21px;line-height:1.1;
    text-transform:uppercase;letter-spacing:.005em;color:var(--text-primary);
    margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.fx-meta{
    font-size:13px;color:var(--text-secondary);line-height:1.4;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.fx-meta b{color:var(--text-primary);font-weight:600}
.fx-slots{margin-top:7px;font-size:12.5px;color:var(--text-muted)}
.fx-slots i{font-style:normal;color:var(--accent);font-weight:600}
.fx-slots.is-last i{color:#E4674F}

/* Цена — второй по значимости элемент строки */
.fx-price{
    font-family:var(--display);font-weight:600;font-size:26px;line-height:1;
    letter-spacing:-.01em;color:var(--text-primary);white-space:nowrap;
    font-variant-numeric:tabular-nums;
}
.fx-price span{font-size:15px;color:var(--text-muted);margin-left:2px}
.fx-full{
    font-family:var(--ui);font-size:12px;font-weight:600;text-transform:uppercase;
    letter-spacing:.08em;color:var(--text-muted);white-space:nowrap;
}

/* Заголовок секции: без разряженного микро-капса на 10px */
body[data-sport="football"] .section-title{
    font-family:var(--display);font-size:15px;font-weight:600;letter-spacing:.04em;
    color:var(--text-secondary);text-transform:uppercase;
}
body[data-sport="football"] .eyebrow{font-size:12px;letter-spacing:.1em;color:var(--text-muted)}

/* Кнопки: плотнее, без скруглений-«таблеток» и без градиента */
body[data-sport="football"] .btn{
    border-radius:10px;font-family:var(--ui);font-weight:600;letter-spacing:0;
}
body[data-sport="football"] .btn-gold{background:var(--accent);color:#fff;background-image:none}

/* Быстрые действия — строки, а не плитки с иконкой в квадрате */
body[data-sport="football"] .btn-icon-row{
    border-radius:10px;background:var(--surface);font-size:15px;font-weight:600;
}

/* Ничего мельче 12px в функциональном тексте */
body[data-sport="football"] .ev-spots-text,
body[data-sport="football"] .ev-spots-urgent,
body[data-sport="football"] .meta-row,
body[data-sport="football"] .hint{font-size:12.5px}

/* ---- Лента дней ---- */
.fx-day{
    display:flex;align-items:baseline;gap:10px;
    padding:26px 2px 10px;border-bottom:2px solid var(--text-primary);
    margin-top:8px;
}
.fx-day-n{
    font-family:var(--display);font-weight:600;font-size:26px;line-height:1;
    color:var(--text-primary);font-variant-numeric:tabular-nums;
}
.fx-day-w{
    font-family:var(--display);font-weight:600;font-size:16px;text-transform:uppercase;
    letter-spacing:.03em;color:var(--text-primary);
}
.fx-day-m{font-size:13px;color:var(--text-muted);flex:1}
.fx-day-today,.fx-day-reg{
    font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
    padding:3px 8px;border-radius:4px;
}
.fx-day-today{background:var(--text-primary);color:var(--bg)}
.fx-day-reg{background:transparent;border:1px solid var(--accent);color:var(--accent)}
.fx-empty{padding:16px 2px;color:var(--text-muted);font-size:13.5px;border-bottom:1px solid var(--border)}

/* ---- Занятие: шапка и табло ---- */
.fx-hero{margin:0 -16px 18px;line-height:0}
.fx-hero img{width:100%;height:230px;object-fit:cover;display:block}
.fx-detail{padding-bottom:6px}
.fx-kicker{
    font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;
    color:var(--accent);margin-bottom:8px;
}
.fx-h1{
    font-family:var(--display);font-weight:600;font-size:34px;line-height:.98;
    text-transform:uppercase;letter-spacing:0;color:var(--text-primary);margin:0 0 10px;
}
.fx-desc{font-size:14px;color:var(--text-secondary);line-height:1.5;margin:0 0 16px}

/* Табло: четыре числа в ряд, подписи под ними — как на стадионном экране */
.fx-board{
    display:grid;grid-template-columns:repeat(4,1fr);
    border-top:1px solid var(--border);border-bottom:1px solid var(--border);
    margin-bottom:14px;
}
.fx-cell{padding:14px 4px;text-align:center;border-right:1px solid var(--border)}
.fx-cell:last-child{border-right:0}
.fx-cell .v{
    display:block;font-family:var(--display);font-weight:600;font-size:27px;line-height:1;
    color:var(--text-primary);font-variant-numeric:tabular-nums;
}
.fx-cell .v i{font-style:normal;font-size:16px;color:var(--text-muted);margin-left:1px}
.fx-cell .v.is-out{color:#E4674F}
.fx-cell .k{
    display:block;margin-top:6px;font-size:11.5px;line-height:1.25;color:var(--text-muted);
}

.fx-place{
    display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;
    padding:14px 0;background:none;border:0;border-bottom:1px solid var(--border);
    color:var(--text-primary);font-family:inherit;font-size:14px;text-align:left;cursor:pointer;
}
.fx-place span{color:var(--accent);font-size:12.5px;font-weight:600;white-space:nowrap}

/* ---- Профиль и разделы: строки вместо плиток с иконками ---- */
body[data-sport="football"] .page-title{
    font-family:var(--display);font-weight:600;text-transform:uppercase;
    font-size:32px;letter-spacing:0;
}
body[data-sport="football"] .card{border-radius:12px}
body[data-sport="football"] .chip{border-radius:6px;font-weight:600}
body[data-sport="football"] .nav-item{font-size:11.5px}

/* В ленте слева стоит время — оно уже,  чем дата, и цифры равной ширины */
.fx-date.is-time .d{font-size:24px;letter-spacing:-.005em}
/* Длинные названия переносим, а не рубим многоточием */
.fx-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

/* ---- Полная информация в строке: тип, уровень, статус минимума ---- */
.fx-tags{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:8px}
.fx-kind{
    font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
    color:var(--text-secondary);padding:3px 7px;border:1px solid var(--border-strong);border-radius:4px;
}
/* Уровень — фирменная медаль клуба, градиенты те же, что и были */
.fx-lvl{
    font-size:11.5px;font-weight:700;color:#12100E;padding:3px 9px;border-radius:4px;
    background:var(--m-light);white-space:nowrap;
}
.fx-lvl.lvl-novice{background:var(--m-novice)}
.fx-lvl.lvl-novice_plus{background:var(--m-novice_plus)}
.fx-lvl.lvl-light{background:var(--m-light)}
.fx-lvl.lvl-light_plus{background:var(--m-light_plus)}
.fx-lvl.lvl-light_pp{background:var(--m-light_pp)}
.fx-lvl.lvl-medium{background:var(--m-medium)}
.fx-lvl.lvl-hard{background:var(--m-hard);color:#fff}
.fx-min{
    font-size:11.5px;font-weight:600;color:#E4674F;padding:3px 7px;border-radius:4px;
    background:rgba(228,103,79,.12);
}
.fx-min.is-ok{color:var(--accent);background:transparent;padding-left:0}

/* Промо-ролик в шапке занятия — он и даёт «крутость», ради него всё */
.fx-hero.detail-hero{position:relative;height:230px;overflow:hidden;margin:0 -16px 18px}
.fx-hero.detail-hero .detail-hero-placeholder{position:absolute;inset:0;height:100%!important}
.fx-hero.detail-hero video.cover-vid{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;
    transition:opacity .5s ease;
}
.fx-hero.detail-hero video.cover-vid.on{opacity:1}
.fx-hero.detail-hero::after{
    content:'';position:absolute;left:0;right:0;bottom:0;height:90px;
    background:linear-gradient(transparent,var(--bg));pointer-events:none;
}

/* ===== ПАЛИТРА «ЭКИПИРОВКА» · футбол ========================================
   Три варианта на выбор. Переключатель внизу экрана, выбор запоминается.
   Общее правило: цвет приходит из мира спорта, а не из веб-палитры, и у всех
   направлений одна светлота и насыщенность — тогда это семья, а не пять
   случайных красок.
   ========================================================================= */

/* --- 1. ЭКИПИРОВКА: цвет берём с формы и инвентаря, приглушённый --------- */
body[data-sport="football"]{--accent:oklch(58% 0.12 158);--accent-ink:#0B0B0C}
body[data-sport="boxing"]{--accent:oklch(52% 0.15 22);--accent-ink:#fff}
body[data-sport="volleyball"]{--accent:oklch(68% 0.11 72);--accent-ink:#0B0B0C}
body[data-sport="kickboxing"]{--accent:oklch(60% 0.13 48);--accent-ink:#0B0B0C}
body[data-sport="taekwondo"]{--accent:oklch(56% 0.12 285);--accent-ink:#fff}
body{--accent-soft:color-mix(in oklab,var(--accent) 16%,transparent)}

/* ===== КНОПКИ ============================================================
   Что выдавало генерённый интерфейс: иконка в каждой кнопке, «таблеточный»
   радиус и градиентная заливка. Здесь — плоская форма, ясная иерархия,
   иконки только там, где они несут смысл.
   ========================================================================= */
body[data-sport="football"] .btn{
    border-radius:6px;padding:15px 20px;font-weight:700;font-size:14.5px;
    letter-spacing:.02em;background-image:none;border:1px solid transparent;
}
/* Главное действие: сплошная заливка цветом направления */
body[data-sport="football"] .btn-gold,
body[data-sport="football"] .btn-primary{
    background:var(--accent);color:var(--accent-ink);text-transform:uppercase;
    letter-spacing:.06em;font-size:13.5px;
}
/* Второстепенное: только контур, без заливки */
body[data-sport="football"] .btn-outline,
body[data-sport="football"] .btn-secondary{
    background:transparent;border:1px solid var(--border-strong);color:var(--text-primary);
}
/* Иконки внутри кнопок убираем — текст говорит сам */
body[data-sport="football"] .btn > i[data-lucide],
body[data-sport="football"] .btn > svg,
body[data-sport="football"] .btn-gold svg,
body[data-sport="football"] .btn-primary svg{display:none}
/* Кроме кнопок, где иконка и есть смысл: карта, телеграм, копирование */
body[data-sport="football"] .btn-code-get svg,
body[data-sport="football"] .fx-place svg{display:inline-block}

/* Быстрые действия: строка с текстом, без иконки в квадратной плитке */
body[data-sport="football"] .btn-icon-row{
    border-radius:6px;border:1px solid var(--border);background:transparent;
    padding:16px;font-size:15px;font-weight:600;
}
body[data-sport="football"] .btn-icon-row .icon-box,
body[data-sport="football"] .btn-icon-row > i[data-lucide]{display:none}

/* Фильтры-чипсы: квадратные, активный — заливкой */
body[data-sport="football"] .chip{
    border-radius:5px;font-size:13px;font-weight:600;padding:9px 14px;
    border:1px solid var(--border-strong);background:transparent;color:var(--text-secondary);
}
body[data-sport="football"] .chip.active{
    background:var(--accent);color:var(--accent-ink);border-color:var(--accent);
}


/* Быстрые действия: иконка в скруглённом квадрате — тот самый штамп.
   Оставляем только название и стрелку. */
body[data-sport="football"] .fx-quick .card{
    padding:18px 14px!important;border-radius:6px;background:transparent!important;
    border:1px solid var(--border);
}
body[data-sport="football"] .fx-quick .card > div:first-child{display:none!important}
body[data-sport="football"] .fx-quick .card > div{
    font-family:var(--display)!important;font-size:16px!important;font-weight:600!important;
    text-transform:uppercase;letter-spacing:.02em;color:var(--text-primary);
}
body[data-sport="football"] .fx-quick .card::after{
    content:'→';margin-left:auto;color:var(--text-muted);font-size:15px;
}
/* Строка события: тег и статус в одну линию, без переносов */
.fx-tags{flex-wrap:nowrap;overflow:hidden}
.fx-min{white-space:nowrap}

/* Подписи-счётчики: «ТРЕНИРОВОК» рвалось посреди слова из-за overflow-wrap:anywhere
   в узкой колонке. Слово должно уменьшаться, а не разламываться. */
body[data-sport="football"] .stat-label{
    overflow-wrap:normal;word-break:keep-all;hyphens:none;
    font-size:11.5px;letter-spacing:.03em;white-space:nowrap;
}
body[data-sport="football"] .stat-box,
body[data-sport="football"] .stat-card{min-width:0}

/* ===== ТО САМОЕ «РАСПЛАСТАННОЕ» ==========================================
   Подписи по всему приложению набраны JetBrains Mono — моноширинным. В нём
   каждая буква занимает одинаковую ширину, поэтому кириллица растягивается:
   «ш» такая же, как «i». Плюс разрядка до 0.16em добивает.
   Моноширинный оставляем только цифрам в таблицах, слова — обычным шрифтом.
   ========================================================================= */
body[data-sport="football"]{--mono:'Manrope',system-ui,sans-serif}
body[data-sport="football"] .mono{
    font-family:'Manrope',system-ui,sans-serif;
    font-variant-numeric:tabular-nums;
    letter-spacing:.02em;
}
/* Заголовки разделов: разрядка уместна, но вдвое меньше прежней */
body[data-sport="football"] .section-title,
body[data-sport="football"] .eyebrow{
    font-family:'Manrope',system-ui,sans-serif;letter-spacing:.06em;
}
body[data-sport="football"] .stat-label{letter-spacing:.02em}
/* Даты и время в строках — цифры ровными колонками, буквы обычные */
body[data-sport="football"] .ev-meta,
body[data-sport="football"] .fx-meta,
body[data-sport="football"] .fx-date .m,
body[data-sport="football"] .day-info .dow{
    font-family:'Manrope',system-ui,sans-serif;letter-spacing:.01em;
    font-variant-numeric:tabular-nums;
}

/* Остатки широкой разрядки: подписи полей, разделители формы входа, футер.
   Разрядка выше 0.06em на русском тексте читается как растянутый шрифт. */
body[data-sport="football"] label,
body[data-sport="football"] .lh-eyebrow,
body[data-sport="football"] .footer-col-title,
body[data-sport="football"] .divider-text,
body[data-sport="football"] .or-text,
body[data-sport="football"] .login-hint span{
    letter-spacing:.04em;
    font-family:'Manrope',system-ui,sans-serif;
}


/* ===== ОСТАВШИЕСЯ ЭКРАНЫ · футбол ========================================
   Профиль, «Мои записи», абонементы, админка — тот же язык, что и в ленте:
   цифра крупно, подпись мелко, разделители вместо карточек-плиток.
   Только стили: разметку и словарь иконок не трогаем.
   ========================================================================= */

/* ---- Счётчики (профиль и админка): число — герой ---- */
body[data-sport="football"] .stat-card{
    background:transparent;border:1px solid var(--border);border-radius:8px;
    padding:14px 14px 12px;
}
body[data-sport="football"] .stat-val{
    font-family:var(--display);font-weight:600;font-size:32px;line-height:1;
    letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--text-primary);
}
body[data-sport="football"] .stat-val.accent{color:var(--accent)}
body[data-sport="football"] .stat-label{
    margin-top:7px;font-size:11.5px;color:var(--text-muted);
    text-transform:uppercase;letter-spacing:.04em;
}

/* ---- Профиль: имя крупно, данные строками ---- */
body[data-sport="football"] .avatar-lg{border-radius:10px}
body[data-sport="football"] .profile-name,
body[data-sport="football"] .page-title{
    font-family:var(--display);font-weight:600;text-transform:uppercase;
    letter-spacing:0;line-height:1;
}
/* Поля профиля: подпись слева, значение справа, волосяная линия между */
body[data-sport="football"] .meta-row,
body[data-sport="football"] .participant-row{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:13px 0;border-bottom:1px solid var(--border);
}
body[data-sport="football"] .meta-row:last-child,
body[data-sport="football"] .participant-row:last-child{border-bottom:0}

/* ---- Вкладки: подчёркивание вместо «таблеток» ---- */
body[data-sport="football"] .tabs{
    display:flex;gap:22px;border-bottom:1px solid var(--border);margin-bottom:4px;
}
body[data-sport="football"] .tab-btn{
    background:none;border:0;border-radius:0;padding:11px 0;
    font-family:var(--display);font-weight:600;font-size:15px;text-transform:uppercase;
    letter-spacing:.02em;color:var(--text-muted);border-bottom:2px solid transparent;
}
body[data-sport="football"] .tab-btn.active{
    color:var(--text-primary);border-bottom-color:var(--accent);background:none;
}

/* ---- Карточки разделов: плоские, с чёткой границей ---- */
body[data-sport="football"] .card{
    background:var(--surface);border:1px solid var(--border);border-radius:10px;
}
body[data-sport="football"] .card.row-tap{background:transparent}

/* ---- Абонемент: остаток крупной цифрой ---- */
body[data-sport="football"] .sub-card{padding:16px}
body[data-sport="football"] .sub-remain{
    font-family:var(--display);font-weight:600;font-size:38px;line-height:1;
    font-variant-numeric:tabular-nums;
}
body[data-sport="football"] .sub-total{font-size:17px;color:var(--text-muted)}
/* Полоса расхода — тонкая линия, без градиента и свечения */
body[data-sport="football"] .spots-bar,
body[data-sport="football"] .ev-spots-bar{
    height:3px;border-radius:0;background:rgba(255,255,255,.10);
}
body[data-sport="football"] .spots-fill,
body[data-sport="football"] .ev-spots-fill{
    border-radius:0;background:var(--accent);background-image:none;
}

/* ---- Пустые состояния: без крупной иконки-заглушки ---- */
body[data-sport="football"] .empty,
body[data-sport="football"] .empty-state{padding:36px 8px;text-align:left}
body[data-sport="football"] .empty-icon,
body[data-sport="football"] .empty-state-icon{display:none}
body[data-sport="football"] .empty-text,
body[data-sport="football"] .empty-state-title{
    font-family:var(--display);font-weight:600;font-size:19px;text-transform:uppercase;
    color:var(--text-secondary);
}
body[data-sport="football"] .empty-state-text{font-size:13.5px;color:var(--text-muted);margin-top:6px}

/* ---- Админка: разделы списком, а не сеткой плиток ---- */
body[data-sport="football"] .admin-tile,
body[data-sport="football"] .admin-card{
    border-radius:8px;background:transparent;border:1px solid var(--border);
}
body[data-sport="football"] .admin-tile .icon-box,
body[data-sport="football"] .admin-card .icon-box{display:none}

/* ---- Значки статусов: прямые, без «таблеток» ---- */
body[data-sport="football"] .tag,
body[data-sport="football"] .badge,
body[data-sport="football"] .lvl,
body[data-sport="football"] .type-badge{
    border-radius:4px;font-weight:600;letter-spacing:.02em;
}

/* ---- Профиль: аватар без золотого кольца, подписи ровные ---- */
body[data-sport="football"] .profile-avatar-ring,
body[data-sport="football"] .avatar-ring{display:none!important}
body[data-sport="football"] .avatar-lg{
    border-radius:12px;border:1px solid var(--border-strong);
}
body[data-sport="football"] .avatar-lg img{border-radius:12px}
body[data-sport="football"] .eyebrow.gold{color:var(--text-muted)}

/* ---- Админка: заголовок в общем языке, подсветки — цветом направления ---- */
body[data-sport="football"] #pg-admin h1,
body[data-sport="football"] .admin-title{
    font-family:var(--display)!important;font-weight:600!important;
    text-transform:uppercase;letter-spacing:0!important;
}
/* Первый пункт подсвечивался синим из старой темы */
body[data-sport="football"] .row-tap.is-primary,
body[data-sport="football"] .admin-row.active,
body[data-sport="football"] [style*="rgba(59,130,246"],
body[data-sport="football"] [style*="rgba(37,99,235"]{
    background:var(--accent-soft)!important;
}
body[data-sport="football"] .btn-blue,
body[data-sport="football"] [style*="background:#1572db"],
body[data-sport="football"] [style*="background:#2563eb"]{
    background:var(--accent)!important;color:var(--accent-ink)!important;
}

/* ---- «Мои записи»: карточки плотнее, без двойных рамок ---- */
body[data-sport="football"] #my-events-list > .card{
    border-radius:10px;padding:14px;margin-bottom:10px;
}
body[data-sport="football"] #my-events-list .card .card{border:0;padding:0;background:none}

/* ---- Пустые состояния слева, без центрирования ---- */
body[data-sport="football"] .hint.center{text-align:left}

/* ---- Поверхности: карточки были заданы синевато-серым мимо палитры ---- */
body[data-sport="football"].kit-bg .card,
body[data-sport="football"] .card,
body[data-sport="football"] .stat-card,
body[data-sport="football"] .row-tap{
    background:var(--surface)!important;
}
body[data-sport="football"] .card.row-tap,
body[data-sport="football"] .fx-quick .card{background:transparent!important}
/* Кнопки-подложки в админке — тем же тоном, что и остальные поверхности */
body[data-sport="football"] .btn-secondary,
body[data-sport="football"] .btn-outline{background:transparent!important}

/* ---- Фирменная подложка КиТ: остаётся, но не спорит с текстом ----
   Логотип на фоне — часть бренда, убирать его нельзя. Вместо этого делаем
   подложку тише и добавляем к затемнению тёплый уголь палитры, чтобы буквы
   ленты читались поверх неё. */
body[data-sport="football"]::before{opacity:.16!important}
body[data-sport="football"]::after{
    background:
      radial-gradient(120% 60% at 50% 88%, rgba(90,170,110,.07), rgba(0,0,0,0) 60%),
      linear-gradient(180deg, rgba(11,11,12,.72) 0%, rgba(11,11,12,.88) 45%, rgba(11,11,12,.96) 100%)
      !important;
}

/* ---- Форма входа: убираем чужие акценты старой темы ---- */
/* Телеграм-кнопка: цвет узнаваемый, оставляем, но без градиента, тени и подпрыгивания */
body[data-sport="football"] .btn-code-get{
    background:#2AABEE!important;border:0!important;border-radius:8px;
    box-shadow:none!important;font-weight:600;
}
body[data-sport="football"] .btn-code-get:hover{transform:none;filter:brightness(1.05)}
body[data-sport="football"] .btn-code-submit{border-radius:8px}
/* Золотые ссылки старой темы → акцент направления */
body[data-sport="football"] a[style*="var(--gold)"],
body[data-sport="football"] b[style*="var(--gold)"]{color:var(--accent)!important}
/* Поле кода — моноширинный уместен: это цифры */
body[data-sport="football"] .code-inp,
body[data-sport="football"] input[id*="code"]{
    font-family:'JetBrains Mono',monospace;letter-spacing:.35em;border-radius:8px;
}
/* Поля ввода: прямее, в тон поверхностей */
body[data-sport="football"] input.input,
body[data-sport="football"] input[type="email"],
body[data-sport="football"] input[type="password"],
body[data-sport="football"] input[type="text"],
body[data-sport="football"] input[type="tel"],
body[data-sport="football"] textarea,
body[data-sport="football"] select{
    border-radius:8px;background:var(--surface);border:1px solid var(--border-strong);
}

/* ---- Кошелёк: карточка баланса без золотой рамки-градиента ---- */
body[data-sport="football"] .wallet-balance-card,
body[data-sport="football"] #pg-wallet .card:first-of-type{
    border:1px solid var(--border-strong)!important;
    background:var(--surface)!important;box-shadow:none!important;
}

/* Кнопки с одиночным классом (без базового .btn) — тот же язык форм */
body[data-sport="football"] .btn-gold,
body[data-sport="football"] .btn-primary,
body[data-sport="football"] .btn-outline,
body[data-sport="football"] .btn-secondary,
body[data-sport="football"] .header-login-btn,
body[data-sport="football"] .btn-code-submit{
    border-radius:8px;background-image:none;
}

/* ===== ТУРНИРЫ НА СТЕНДЕ ==================================================
   Турниры были только у волейбола (класс .trn-only скрыт для всех остальных),
   поэтому при раскатке дизайна они уехали бы в старом виде. Включаем их
   футболу, чтобы проработать здесь. Волейбольную специфику (.volley-only:
   позиции, уровни) не трогаем — она остаётся скрытой.
   ========================================================================= */
body[data-sport="football"] .nav-item.trn-only,
body[data-sport="football"] .card.trn-only,
body[data-sport="football"] .list-row.trn-only{display:flex!important}
body[data-sport="football"] .chip.trn-only{display:inline-flex!important}
body[data-sport="football"] .trn-only:not(.nav-item):not(.card):not(.list-row):not(.chip){
    display:block!important;
}

/* ---- Турнирная таблица ---- */
body[data-sport="football"] .standings-table{font-variant-numeric:tabular-nums;width:100%}
body[data-sport="football"] .standings-table th{
    font-family:var(--display);font-weight:600;font-size:11.5px;text-transform:uppercase;
    letter-spacing:.06em;color:var(--text-muted);padding:12px 8px;
    border-bottom:1px solid var(--border);
}
body[data-sport="football"] .standings-table td{
    padding:13px 8px;border-bottom:1px solid var(--border);font-size:14px;
}
body[data-sport="football"] .standings-table tr:last-child td{border-bottom:0}
/* Место — цифра, различие призовых даём цветом, а не одинаковой медалью */
body[data-sport="football"] .standings-table td:first-child{
    font-family:var(--display);font-weight:600;font-size:17px;
    color:var(--text-muted);width:34px;text-align:center;
}
body[data-sport="football"] tr.top-3:nth-child(1) td:first-child{color:#D9A648}
body[data-sport="football"] tr.top-3:nth-child(2) td:first-child{color:#B9BEC4}
body[data-sport="football"] tr.top-3:nth-child(3) td:first-child{color:#C08457}
body[data-sport="football"] tr.top-3 td:nth-child(2){font-weight:600;color:var(--text-primary)}
/* Очки — второй по важности столбец после названия */
body[data-sport="football"] .standings-table td:last-child{
    font-family:var(--display);font-weight:600;font-size:17px;color:var(--text-primary);
}
/* Прогресс турнира — тонкая линия в тон, без градиента */
body[data-sport="football"] .trn-progress-fill,
body[data-sport="football"] .progress-fill{background:var(--accent)!important;background-image:none!important}

/* ---- Нижняя навигация: пять вкладок в один ряд ----
   Для не-волейбола сетка была жёстко на 4 колонки (турниров не было).
   Включив турниры футболу, я добавил пятую вкладку — она уезжала на вторую
   строку и ломала панель. */
body[data-sport="football"] .bottom-nav{
    grid-template-columns:repeat(5,1fr)!important;
}
body[data-sport="football"] .nav-item{
    font-size:10.5px;letter-spacing:.01em;padding:8px 2px 6px;gap:3px;
}
body[data-sport="football"] .nav-item .nav-icon svg{width:20px;height:20px}

/* ===== ПЛАШКИ ТИПА СОБЫТИЯ ===============================================
   «Тренировка» и «Игра» шли мелкой иконкой в скруглённой таблетке — ровно
   тот приём, по которому узнают генерённый интерфейс. Оставляем слово,
   набранное как ярлык: прямые углы, капс, тонкая рамка цветом типа.
   ========================================================================= */
body[data-sport="football"] .type-badge svg,
body[data-sport="football"] .type-badge i,
body[data-sport="football"] .lbadge svg,
body[data-sport="football"] .lbadge i{display:none!important}
body[data-sport="football"] .type-badge{
    height:auto;padding:4px 8px;border-radius:3px;gap:0;
    font-family:var(--display);font-size:11px;font-weight:600;
    text-transform:uppercase;letter-spacing:.08em;
    background:transparent;border:1px solid currentColor;
}
body[data-sport="football"] .type-badge.type-training{color:#7FB88A}
body[data-sport="football"] .type-badge.type-game{color:#8FA8CC}
body[data-sport="football"] .type-badge.type-tournament{color:#D9A648}

/* ===== СЕТКА ПЛЕЙ-ОФФ ====================================================
   Была списком тех же карточек, что и групповой этап: кто с кем и что дальше
   — непонятно. Теперь пара стоит блоком, победитель подсвечен, финал
   выделен рамкой.
   ========================================================================= */
.bkt{display:flex;flex-direction:column;gap:26px;padding-bottom:12px}
.bkt-head{
    display:flex;align-items:baseline;justify-content:space-between;gap:10px;
    padding-bottom:8px;margin-bottom:12px;border-bottom:2px solid var(--text-primary);
}
.bkt-title{
    font-family:var(--display);font-weight:600;font-size:17px;text-transform:uppercase;
    letter-spacing:.02em;color:var(--text-primary);
}
.bkt-status{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}
.bkt-status.is-done{color:var(--accent)}

.bkt-pair{
    border:1px solid var(--border);border-radius:8px;overflow:hidden;
    margin-bottom:10px;background:var(--surface);
}
.bkt-stage.is-final .bkt-pair{border-color:var(--accent)}
.bkt-side{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:13px 14px;border-bottom:1px solid var(--border);
}
.bkt-side:last-of-type{border-bottom:0}
.bkt-team{
    font-family:var(--display);font-weight:600;font-size:17px;text-transform:uppercase;
    letter-spacing:.01em;color:var(--text-secondary);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.bkt-score{
    font-family:var(--display);font-weight:600;font-size:21px;line-height:1;
    color:var(--text-muted);font-variant-numeric:tabular-nums;min-width:22px;text-align:right;
}
/* Победитель пары читается сразу: имя белым, счёт цветом направления */
.bkt-side.is-win .bkt-team{color:var(--text-primary)}
.bkt-side.is-win .bkt-score{color:var(--accent)}
.bkt-pair.is-pending .bkt-team{color:var(--text-secondary)}
.bkt-when{
    padding:9px 14px;border-top:1px solid var(--border);
    font-size:12px;color:var(--text-muted);
}
.bkt-pair:not(.is-pending) .bkt-when{display:none}
.bkt-edit{
    display:block;width:100%;padding:11px 14px;border:0;border-top:1px solid var(--border);
    background:transparent;color:var(--accent);font-family:inherit;font-size:12.5px;
    font-weight:600;cursor:pointer;text-align:left;
}


/* Фолбэк шапки турнира — газон, а не чужой финал со стока */
body[data-sport="football"] .detail-hero-placeholder.type-tournament,
body[data-sport="football"] .ev-cover-placeholder.type-tournament{
    background:linear-gradient(180deg,rgba(8,8,10,.25),rgba(8,8,10,.82)),
      url('/static/kit/tex/field_hero.webp') center 35%/cover no-repeat,#0E1A14!important;
}

/* ===== ДОВОДКА: то, что не тянет обратно к «сгенерировано» ================
   Из присланного списка берём фото-текстуры, скелетоны, отклик на нажатие,
   иерархию и активный маркер меню. Неон, стекло и свечения не возвращаем —
   именно по ним узнают генерённый интерфейс.
   ========================================================================= */

/* ---- 1. Фото-текстура площадки в шапке занятия и турнира ---- */
body[data-sport="football"] .fx-hero.detail-hero .detail-hero-placeholder{
    background:
      linear-gradient(180deg, rgba(11,11,12,.25) 0%, rgba(11,11,12,.92) 100%),
      url('/static/kit/tex/field_hero.webp') center 45%/cover no-repeat,
      var(--surface) !important;
}
/* Плашка «ближайшее событие» — та же трава, но мягкая и тихая */
body[data-sport="football"] #menu-mynext .card{
    background:
      linear-gradient(180deg, rgba(11,11,12,.82) 0%, rgba(11,11,12,.95) 100%),
      url('/static/kit/tex/field_soft.webp') center/cover no-repeat,
      var(--surface) !important;
}

/* ---- 2. Скелетоны вместо крутилки ---- */
@keyframes fx-shimmer{0%{background-position:-380px 0}100%{background-position:380px 0}}
body[data-sport="football"] .skeleton,
body[data-sport="football"] .skeleton-line,
body[data-sport="football"] .sk-line{
    background:linear-gradient(90deg,
        rgba(255,255,255,.04) 0%, rgba(255,255,255,.09) 50%, rgba(255,255,255,.04) 100%);
    background-size:380px 100%;
    animation:fx-shimmer 1.25s linear infinite;
    border-radius:4px;
}
@media (prefers-reduced-motion: reduce){
    body[data-sport="football"] .skeleton,
    body[data-sport="football"] .sk-line{animation:none}
}

/* ---- 3. Отклик на нажатие: кнопка слегка проседает ---- */
body[data-sport="football"] .btn,
body[data-sport="football"] .btn-gold,
body[data-sport="football"] .btn-outline,
body[data-sport="football"] .fx-row,
body[data-sport="football"] .card.row-tap,
body[data-sport="football"] .bkt-edit,
body[data-sport="football"] .chip{
    transition:transform .12s cubic-bezier(.22,.61,.36,1), background .18s ease, border-color .18s ease;
}
body[data-sport="football"] .btn:active,
body[data-sport="football"] .btn-gold:active,
body[data-sport="football"] .btn-outline:active,
body[data-sport="football"] .card.row-tap:active,
body[data-sport="football"] .chip:active{transform:scale(.975)}
body[data-sport="football"] .fx-row:active{transform:scale(.995)}

/* ---- 4. Иерархия на главной: приветствие тише, статус громче ---- */
body[data-sport="football"] .greeting,
body[data-sport="football"] .hello-name{font-weight:500}
body[data-sport="football"] .level-value,
body[data-sport="football"] .lvl-big{
    font-family:var(--display);font-weight:600;font-size:20px;
    text-transform:uppercase;letter-spacing:.01em;color:var(--accent);
}

/* ---- 5. Активный пункт меню: форма и вес, без неонового свечения ---- */
body[data-sport="football"] .nav-item{position:relative}
body[data-sport="football"] .nav-item.active{color:var(--text-primary);font-weight:700}
body[data-sport="football"] .nav-item.active::before{
    content:'';position:absolute;top:2px;left:50%;transform:translateX(-50%);
    width:26px;height:2px;background:var(--accent);border-radius:0;
}
body[data-sport="football"] .nav-item.active .nav-icon{color:var(--accent)}

/* ---- 6. Ввод счёта прямо в сетке плей-офф ---- */
.bkt-form{border-top:1px solid var(--border);padding:12px 14px;background:rgba(255,255,255,.02)}
.bkt-form-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.bkt-form-team{
    font-family:var(--display);font-weight:600;font-size:14px;text-transform:uppercase;
    color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.bkt-inp{
    width:74px;padding:9px 10px;text-align:center;border-radius:6px;
    border:1px solid var(--border-strong);background:var(--bg);color:var(--text-primary);
    font-family:var(--display);font-weight:600;font-size:18px;
}
.bkt-form-btns{display:flex;gap:8px;margin-top:4px;flex-wrap:wrap}
.bkt-save,.bkt-cancel,.bkt-clear{
    padding:9px 14px;border-radius:6px;border:1px solid var(--border-strong);
    font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;background:transparent;
}
.bkt-save{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.bkt-cancel{color:var(--text-secondary)}
.bkt-clear{color:#E4674F;border-color:rgba(228,103,79,.4);margin-left:auto}

/* ---- 7. Красная плашка отмены: мой !important её гасил ---- */
body[data-sport="football"] .card[style*="rgba(239,68,68"]{
    background:rgba(228,103,79,.10)!important;
    border-color:rgba(228,103,79,.45)!important;
}

/* ---- Кнопка «Записаться» перекрывала последнюю строку списка ----
   Она висит фиксированно над нижним меню, а контент заканчивался вплотную —
   последний участник уходил под неё. Даём странице запас снизу. */
body[data-sport="football"] #event-detail{
    padding-bottom:104px;
}
/* Сама панель: плотнее и без длинного градиента-шлейфа */
body[data-sport="football"] .sticky-action{
    padding-top:14px;
    background:linear-gradient(transparent, var(--bg) 55%);
}

/* ---- 8. Турнирный матч в ленте: та же строка, что и занятие ----
   Слева время, в середине пара команд, справа счёт. Разделитель «vs» —
   не картинка и не значок, а просто более тихая буквенная вставка. */
body[data-sport="football"] .fx-row.is-match .fx-title{
    display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;
}
body[data-sport="football"] .fx-row.is-match .fx-title i{
    font-style:normal;font-family:var(--body);font-weight:500;
    font-size:11px;letter-spacing:.14em;text-transform:uppercase;
    color:var(--text-muted);
}
/* Стадия плей-офф отличается от названия турнира: она обведена */
body[data-sport="football"] .fx-stage{
    display:inline-block;padding:2px 7px;
    border:1px solid var(--border-strong);border-radius:3px;
    font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:var(--text-secondary);
}
/* Счёт занимает место цены — тот же правый столбец, те же цифры */
body[data-sport="football"] .fx-score{
    flex:0 0 auto;display:flex;align-items:baseline;gap:2px;
    font-family:var(--display);font-weight:600;font-size:26px;
    font-variant-numeric:tabular-nums;color:var(--text-secondary);
}
body[data-sport="football"] .fx-score b{font-weight:600}
body[data-sport="football"] .fx-score b.w{color:var(--text-primary)}
body[data-sport="football"] .fx-score i{
    font-style:normal;font-size:18px;color:var(--text-muted);margin:0 1px;
}
/* Не сыгран — вместо счёта тихое «vs», чтобы столбец не прыгал */
body[data-sport="football"] .fx-vs{
    flex:0 0 auto;font-family:var(--display);font-weight:600;font-size:15px;
    letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);
}

/* ---- 9. Список турниров — строки, а не карточки ----
   Тот же приём, что и в ленте: линия сверху, крупное имя, тихая подпись. */
body[data-sport="football"] .trn-row{
    display:block;width:100%;text-align:left;background:transparent;
    border:0;border-top:2px solid var(--text-primary);
    padding:16px 0 20px;cursor:pointer;font:inherit;color:inherit;
}
body[data-sport="football"] .trn-row + .trn-row{border-top-color:var(--border)}
body[data-sport="football"] .trn-head{
    display:flex;align-items:baseline;justify-content:space-between;gap:12px;
}
body[data-sport="football"] .trn-name{
    font-family:var(--display);font-weight:600;font-size:21px;line-height:1.05;
    text-transform:uppercase;letter-spacing:.005em;color:var(--text-primary);
}
body[data-sport="football"] .trn-state{
    flex:0 0 auto;font-size:11px;font-weight:600;letter-spacing:.12em;
    text-transform:uppercase;color:var(--text-muted);
}
body[data-sport="football"] .trn-state.is-live{color:var(--accent)}
body[data-sport="football"] .trn-state.is-done{color:var(--text-secondary)}
body[data-sport="football"] .trn-sub{
    display:block;margin-top:6px;font-size:13px;color:var(--text-secondary);
}
/* Прогресс: полоса и число под ней, без плашек и подписи «ПРОГРЕСС» */
body[data-sport="football"] .trn-prog{display:block;margin-top:14px}
body[data-sport="football"] .trn-bar{
    display:block;height:2px;background:var(--border);overflow:hidden;
}
body[data-sport="football"] .trn-bar i{
    display:block;height:100%;background:var(--accent);
}
body[data-sport="football"] .trn-n{
    display:block;margin-top:7px;font-family:var(--display);font-weight:600;
    font-size:14px;font-variant-numeric:tabular-nums;color:var(--text-primary);
}
body[data-sport="football"] .trn-n em{font-style:normal;color:var(--text-muted)}
body[data-sport="football"] .trn-win{display:block;margin-top:14px}
body[data-sport="football"] .trn-win-k{
    display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    color:var(--text-muted);
}
body[data-sport="football"] .trn-win-v{
    display:block;margin-top:4px;font-family:var(--display);font-weight:600;
    font-size:18px;text-transform:uppercase;color:var(--accent);
}
body[data-sport="football"] .trn-row:active{transform:scale(.995)}

/* ---- 10. Экран турнира ----
   Разделы — строки с текстовой стрелкой. Иконка в квадратике ничего не
   объясняла: «Расписание» и «Команды» читаются словами быстрее значка. */
body[data-sport="football"] .trn-nav{margin-top:22px}
body[data-sport="football"] .trn-link{
    display:flex;align-items:center;gap:12px;width:100%;
    padding:17px 0;background:none;border:0;border-bottom:1px solid var(--border);
    font-family:var(--display);font-weight:600;font-size:16px;text-transform:uppercase;
    letter-spacing:.01em;color:var(--text-primary);text-align:left;cursor:pointer;
}
body[data-sport="football"] .trn-link i{
    margin-left:auto;font-style:normal;font-size:16px;color:var(--accent);
}
body[data-sport="football"] .trn-link b{
    font-family:var(--body);font-weight:500;font-size:13px;color:var(--text-muted);
    font-variant-numeric:tabular-nums;
}
body[data-sport="football"] .trn-link b u{text-decoration:none;color:var(--accent)}
/* Главный раздел выделен весом, а не заливкой во всю ширину */
body[data-sport="football"] .trn-link.is-main{
    font-size:20px;border-top:2px solid var(--text-primary);padding-top:18px;
}
body[data-sport="football"] .trn-link.is-adm{color:var(--text-secondary);font-size:14px}
body[data-sport="football"] .trn-link:active{opacity:.6}

/* Статус турнира в шапке: «в разгаре» — единственное, что светится */
body[data-sport="football"] .fx-kicker.is-live{color:var(--accent)}

/* Последний матч — табло, а не карточка */
body[data-sport="football"] .trn-last{margin-top:26px;border-top:1px solid var(--border);padding-top:16px}
body[data-sport="football"] .trn-last-k{
    font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);
}
body[data-sport="football"] .trn-last-row{
    display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;margin-top:12px;
}
body[data-sport="football"] .trn-last-t{
    font-family:var(--display);font-weight:600;font-size:16px;text-transform:uppercase;
    color:var(--text-muted);line-height:1.1;
}
body[data-sport="football"] .trn-last-t.w{color:var(--text-primary)}
body[data-sport="football"] .trn-last-row .trn-last-t:last-child{text-align:right}
body[data-sport="football"] .trn-last-s{
    font-family:var(--display);font-weight:600;font-size:34px;line-height:1;
    font-variant-numeric:tabular-nums;color:var(--text-primary);
}
body[data-sport="football"] .trn-last-s i{font-style:normal;color:var(--text-muted);margin:0 2px}

/* Полосе прогресса в списке нужен воздух — иначе читается как подчёркивание */
body[data-sport="football"] .trn-prog{margin-top:18px}

/* ---- 11. Расписание матчей — строки ----
   Пастельные квадратики с инициалами убраны: их цвет выводился из хэша
   названия команды и не имел отношения к палитре направления. */
body[data-sport="football"] .mrow{
    display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:center;
    padding:14px 0;border-bottom:1px solid var(--border);
}
body[data-sport="football"] .mrow.is-edit{cursor:pointer}
body[data-sport="football"] .mrow.is-dim{opacity:.55}
body[data-sport="football"] .mrow-time{
    font-family:var(--display);font-weight:600;font-size:17px;
    font-variant-numeric:tabular-nums;color:var(--text-secondary);
}
body[data-sport="football"] .mrow-body{
    display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;
}
body[data-sport="football"] .mrow-team{
    font-family:var(--display);font-weight:600;font-size:15px;line-height:1.1;
    text-transform:uppercase;color:var(--text-muted);
    overflow:hidden;text-overflow:ellipsis;
}
body[data-sport="football"] .mrow-team.r{text-align:right}
body[data-sport="football"] .mrow-team.w{color:var(--text-primary)}
body[data-sport="football"] .mrow-score{
    font-family:var(--display);font-weight:600;font-size:22px;line-height:1;
    font-variant-numeric:tabular-nums;color:var(--text-primary);white-space:nowrap;
}
body[data-sport="football"] .mrow-score i{font-style:normal;color:var(--text-muted);margin:0 2px}
body[data-sport="football"] .mrow-vs{
    font-family:var(--display);font-weight:600;font-size:12px;letter-spacing:.12em;
    text-transform:uppercase;color:var(--text-muted);
}
body[data-sport="football"] .mrow-st{
    grid-column:2;margin-top:5px;font-size:11px;letter-spacing:.1em;
    text-transform:uppercase;color:var(--text-muted);
}
body[data-sport="football"] .mrow.is-edit .mrow-st{color:var(--accent)}

/* ---- 12. Команды: капитан помечается словом ----
   Раньше это была жёлтая звёздочка-эмодзи и синий квадратик с буквой «C» —
   ни то, ни другое не читалось как «капитан». */
body[data-sport="football"] .cap-tag{
    margin-left:8px;font-size:10px;font-weight:600;letter-spacing:.1em;
    text-transform:uppercase;color:var(--accent);vertical-align:middle;
}

/* Команды — такие же плоские блоки, как всё остальное в футболе.
   Своя команда отличается линией в цвете направления, а не рамкой вокруг. */
body[data-sport="football"] #tournament-teams-content .card{
    background:transparent;border:0;border-top:1px solid var(--border);
    border-radius:0;padding:18px 0 6px;margin-bottom:0;
}
body[data-sport="football"] #tsu-my .card{border-top:2px solid var(--accent);padding-top:16px}
body[data-sport="football"] #tournament-teams-content .section-title{
    font-family:var(--display);font-weight:600;font-size:17px;
    text-transform:uppercase;letter-spacing:.01em;color:var(--text-primary);
}
body[data-sport="football"] #tournament-teams-content .participant-row{
    border-bottom:0;padding:9px 0;
}

/* ---- 13. Профиль ----
   Настройки были карточкой с иконками в кружках и шевронами. Слово «Амплуа»
   объясняет строку лучше мишени, а шеврон дублировал то, что строка и так
   нажимается. */
body[data-sport="football"] #profile-content .list-row .ico,
body[data-sport="football"] #profile-content .list-row .chev{display:none}
/* Без :has(): он выбирает родителя по содержимому и в системном WebView
   Android может игнорироваться целиком — тогда карточка сохраняла старые
   отступы, а строки внутри уже были перестроены, и вид разъезжался. */
body[data-sport="football"] #profile-content .list-row{
    display:flex;align-items:center;gap:12px;padding:16px 14px;
    border-bottom:1px solid var(--border);background:transparent;
}
body[data-sport="football"] #profile-content .list-row:last-child{border-bottom:0}
body[data-sport="football"] #profile-content .list-row .lbl{
    flex:1;font-family:var(--display);font-weight:600;font-size:16px;
    text-transform:uppercase;letter-spacing:.01em;color:var(--text-primary);
}
body[data-sport="football"] #profile-content .list-row::after{
    content:'\2192';color:var(--accent);font-size:16px;line-height:1;flex:0 0 auto;
}
/* Концентрические кольца вокруг аватара — декор без смысла */
body[data-sport="football"] .ph-ring{display:none}
body[data-sport="football"] .ph-avatar-shine{display:none}

/* Кнопки: прямоугольные и с плотной прописной типографикой.
   Скруглённая «пилюля» с иконкой — самый узнаваемый признак шаблона. */
body[data-sport="football"] .btn,
body[data-sport="football"] .btn-gold,
body[data-sport="football"] .btn-primary,
body[data-sport="football"] .btn-outline,
body[data-sport="football"] .btn-secondary{
    border-radius:4px;font-family:var(--display);font-weight:600;
    text-transform:uppercase;letter-spacing:.05em;
}

/* ---- 14. Газон читается, а не угадывается ----
   Присланный вид поля сверху: полосы покоса и разметка. Раньше текстура
   тонула под градиентом 0.82→0.95 — её просто не было видно. */
body[data-sport="football"] #menu-mynext .card{
    background:
      linear-gradient(180deg, rgba(11,11,12,.58) 0%, rgba(11,11,12,.93) 78%),
      url('/static/kit/tex/field_card.webp') center 40%/cover no-repeat,
      var(--surface) !important;
}
/* Шапка турнира: полоса газона за заголовком вместо стокового фото */
body[data-sport="football"] #tournament-list-content .fx-detail,
body[data-sport="football"] #tournament-detail-content .fx-detail{
    position:relative;
}
body[data-sport="football"] #tournament-list-content .fx-detail::before,
body[data-sport="football"] #tournament-detail-content .fx-detail::before{
    content:'';position:absolute;left:-16px;right:-16px;top:-12px;height:132px;
    background:
      linear-gradient(180deg, rgba(11,11,12,.52) 0%, var(--bg) 92%),
      url('/static/kit/tex/field_hero.webp') center 30%/cover no-repeat;
    pointer-events:none;z-index:0;
}
body[data-sport="football"] #tournament-list-content .fx-detail > *,
body[data-sport="football"] #tournament-detail-content .fx-detail > *{
    position:relative;z-index:1;
}

/* ---- 15. Фон экрана — не чистый чёрный ----
   У Apple Sports экран уходит в тёмно-зелёный к верху, и именно это держит
   спортивную принадлежность без единой картинки. Вешаем на фон body: слой
   поверх контента ломал position:fixed у нижнего меню. */
body[data-sport="football"]{
    background-image:linear-gradient(180deg,
        rgba(28,74,47,.78) 0px, rgba(20,48,32,.30) 230px, transparent 430px);
    background-repeat:no-repeat;
    background-attachment:fixed;
}

/* Шапка турнира: газонная полоса больше не нужна — там снова играет ролик */
body[data-sport="football"] #tournament-list-content .fx-detail::before,
body[data-sport="football"] #tournament-detail-content .fx-detail::before{
    content:none;
}
/* Под шапкой-роликом заголовок начинается сразу, без лишнего отступа */
body[data-sport="football"] .fx-detail.has-hero{padding-top:16px}

/* ---- 16. Сводка дня ----
   Вторая строка под датой: сколько событий, из чего состоят, сколько уже
   записано. У волейбола это жило в шапке аккордеона; в открытой ленте оно
   нужно не меньше — иначе день читается только по строкам. */
body[data-sport="football"] .fx-day-sum{
    margin:-6px 0 14px;font-size:12.5px;line-height:1.4;color:var(--text-muted);
    font-variant-numeric:tabular-nums;
}
body[data-sport="football"] .fx-day-sum b{
    font-weight:600;color:var(--text-secondary);
}

/* ---- 17. День снова читается как блок ----
   Замечание: черта над днём читалась как конец предыдущего дня, а не начало
   следующего, и при пролистывании было непонятно, что к чему относится.
   Плюс число дня (26px), время строки (24px), цена (26px) и название (21px)
   шли одним кеглем — глазу не за что зацепиться.

   День становится блоком с собственной подложкой: шапка сверху, строки
   внутри. Разделители внутри блока слабые, между блоками — воздух. */
body[data-sport="football"] .fx-daygroup{
    background:var(--surface);
    border-radius:2px;
    padding:0 14px 4px;
    margin-bottom:18px;
    overflow:hidden;
}
body[data-sport="football"] .fx-daygroup.is-today{
    box-shadow:inset 3px 0 0 var(--accent);
}
/* Шапка дня: число и месяц столбиком слева, день недели и состав справа.
   Раньше всё лежало в одном блоке с числом — колонка растягивалась, и
   «августа» уезжало под день недели отдельной строкой. */
body[data-sport="football"] .fx-dayhead{
    display:grid;grid-template-columns:auto 1fr auto;column-gap:14px;
    align-items:start;padding:14px 0 13px;cursor:pointer;
    -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
body[data-sport="football"] .fx-daygroup .fx-day{
    border-top:0;padding:0;margin:0;display:block;text-align:center;min-width:42px;
}
body[data-sport="football"] .fx-daygroup .fx-day-n{
    display:block;font-size:34px;line-height:.86;letter-spacing:-.015em;
}
body[data-sport="football"] .fx-daygroup .fx-day-m{
    display:block;margin-top:4px;font-size:10.5px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--text-muted);
}
body[data-sport="football"] .fx-daymeta{min-width:0;padding-top:2px}
body[data-sport="football"] .fx-daygroup .fx-day-w{
    font-size:15px;letter-spacing:.05em;color:var(--text-primary);
}
body[data-sport="football"] .fx-day-today,
body[data-sport="football"] .fx-day-reg{margin-left:8px;vertical-align:middle}
body[data-sport="football"] .fx-daymeta .fx-day-sum{margin:5px 0 0;padding:0}
body[data-sport="football"] .fx-day-arrow{align-self:center;margin:0}

/* Строки внутри блока: разделители тише, у последней их нет */
body[data-sport="football"] .fx-daygroup .fx-row{
    border-bottom:1px solid rgba(255,255,255,.05);
}
body[data-sport="football"] .fx-daygroup .fx-row:last-child{border-bottom:0}

/* Внутри строки главное — название; время и цена перестают с ним спорить */
body[data-sport="football"] .fx-daygroup .fx-date.is-time .d{
    font-size:19px;color:var(--text-secondary);
}
body[data-sport="football"] .fx-daygroup .fx-title{font-size:18px}
body[data-sport="football"] .fx-daygroup .fx-price{
    font-size:19px;color:var(--text-secondary);
}
body[data-sport="football"] .fx-daygroup .fx-score{font-size:20px}

/* Внутри блока дня у строки остаётся только нижний разделитель:
   верхняя граница строки шла сразу за линией сводки — получались две
   черты подряд. */
body[data-sport="football"] .fx-daygroup .fx-row{border-top:0}
body[data-sport="football"] .fx-daygroup .fx-day-sum{border-bottom:0;padding-bottom:0;margin-bottom:10px}
body[data-sport="football"] .fx-daygroup .fx-row:first-of-type{
    border-top:1px solid var(--border);
}

/* Админская часть сводки дня — отдельной строкой и в цвете направления:
   игроку она не показывается, поэтому не должна теряться в общем тексте. */
body[data-sport="football"] .fx-day-adm{
    display:block;margin-top:3px;font-style:normal;
    font-size:12px;letter-spacing:.02em;color:var(--accent);
}

/* ---- 18. Дни раскрываются, свёрнутые — компактные ----
   Смысл волейбольной ленты: сначала видишь список дней целиком, потом
   раскрываешь нужный. Свёрнутый день должен занимать одну строку, иначе
   выигрыш теряется. */
body[data-sport="football"] .fx-daygroup{
    margin-bottom:10px;padding:0 14px;
}
body[data-sport="football"] .fx-daygroup .fx-day{
    padding:13px 0 3px;cursor:pointer;
}
body[data-sport="football"] .fx-daygroup .fx-day-n{font-size:32px}
body[data-sport="football"] .fx-daygroup .fx-day-sum{
    margin:5px 0 0;padding-bottom:13px;cursor:pointer;
}
/* Тело дня раскрывается вниз. Через grid-template-rows:0fr не вышло: так
   схлопывается только первая строка сетки, а строк там столько же, сколько
   занятий — из свёрнутого дня торчали названия. */
/* Высота приходит из JS измерением. Раскрытие 220 мс, закрытие 160 мс:
   человек уже принял решение, и система должна ответить сразу. */
body[data-sport="football"] .fx-day-body{
    overflow:hidden;height:0;
    transition:height .16s cubic-bezier(.23,1,.32,1);
}
body[data-sport="football"] .fx-daygroup.is-open .fx-day-body{
    /* auto нужен после анимации: JS снимает измеренную высоту, чтобы список
       внутри мог меняться, и без этого правила день схлопывался обратно. */
    height:auto;
    transition-duration:.22s;
}
/* Строки въезжают каскадом, а не все разом. Задержки короткие: длинные
   делают интерфейс медленным, а не живым. */
/* Каскад проигрывается только по нажатию: класс ставит обработчик.
   Раньше анимация висела на всех строках открытого дня и повторялась при
   каждой перерисовке ленты — занятия вспыхивали сами по себе. */
body[data-sport="football"] .fx-daygroup.is-opening .fx-row{
    animation:fx-rowin .22s cubic-bezier(.23,1,.32,1) both;
}
body[data-sport="football"] .fx-daygroup.is-opening .fx-row:nth-child(2){animation-delay:.04s}
body[data-sport="football"] .fx-daygroup.is-opening .fx-row:nth-child(3){animation-delay:.08s}
body[data-sport="football"] .fx-daygroup.is-opening .fx-row:nth-child(4){animation-delay:.12s}
@keyframes fx-rowin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){
    body[data-sport="football"] .fx-daygroup.is-opening .fx-row{animation:none}
    body[data-sport="football"] .fx-day-body{transition-duration:.12s}
}
body[data-sport="football"] .fx-daygroup.is-open .fx-day-sum{
    border-bottom:1px solid var(--border);
}
body[data-sport="football"] .fx-daygroup.is-open .fx-row:first-of-type{border-top:0}
body[data-sport="football"] .fx-daygroup .fx-row:last-child{border-bottom:0;padding-bottom:16px}

/* Стрелка раскрытия: две линии, а не готовая иконка из набора */
body[data-sport="football"] .fx-day-arrow{
    margin-left:auto;width:9px;height:9px;flex:0 0 auto;align-self:center;
    border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);
    transform:rotate(45deg) translate(-2px,-2px);
    transition:transform .22s ease, border-color .22s ease;
}
body[data-sport="football"] .fx-daygroup.is-open .fx-day-arrow{
    transform:rotate(225deg) translate(-2px,-2px);
    border-color:var(--accent);
}

/* ---- 19. Команды турнира — отдельные блоки ----
   Плоский список сливался: заголовок команды, три имени, снова заголовок —
   шаг одинаковый, границы не читаются. Даём каждой команде подложку, как у
   блока дня, и делаем состав плотнее заголовка. */
body[data-sport="football"] #tournament-teams-content .card{
    background:var(--surface);border:0;border-radius:2px;
    padding:14px 14px 6px;margin-bottom:10px;
}
body[data-sport="football"] #tsu-my .card{
    box-shadow:inset 3px 0 0 var(--accent);
    border-top:0;padding-top:14px;
}
/* Шапка команды: имя и число людей, под ними линия */
body[data-sport="football"] #tournament-teams-content .section-title{
    font-size:18px;padding-bottom:10px;margin-bottom:2px;
    border-bottom:1px solid var(--border);
}
/* Состав — плотный список, а не набор отдельных строк */
body[data-sport="football"] #tournament-teams-content .participant-row{
    padding:7px 0;border-bottom:0;
}
body[data-sport="football"] #tournament-teams-content .participant-name{
    font-size:14px;
}
/* Заголовок раздела отделяем воздухом от блока «моя команда» */
body[data-sport="football"] #tsu-teams > .section-title{
    background:transparent;border-bottom:0;
    margin:20px 0 10px;font-size:12px;letter-spacing:.12em;
    text-transform:uppercase;color:var(--text-muted);font-family:var(--body);
    font-weight:600;padding-bottom:0;
}

/* Состав дня: время выделено, тип — обычным. Читается как расписание. */
body[data-sport="football"] .fx-day-sum b{
    color:var(--text-primary);font-weight:600;font-variant-numeric:tabular-nums;
}

/* ---- 20. «Мои записи» в языке ленты ----
   Экран жил по старым правилам: скруглённые карточки, зелёная цена, плашка
   статуса заливкой. Приводим к тому же виду, что и лента событий. */
body[data-sport="football"] #my-events-list .card{
    background:var(--surface);border:0;border-radius:2px;padding:16px 14px;
}
body[data-sport="football"] #my-events-list h3{
    font-size:19px;text-transform:uppercase;letter-spacing:.005em;margin-bottom:6px;
}
body[data-sport="football"] #my-events-list .tag{
    background:transparent;border:1px solid var(--border-strong);
    color:var(--text-secondary);border-radius:3px;font-weight:600;
    font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding:4px 8px;
}
body[data-sport="football"] #my-events-list .tag.tag-success,
body[data-sport="football"] #my-events-list .tag.tag-info{
    color:var(--accent);border-color:rgba(46,160,96,.45);
}
body[data-sport="football"] #my-events-list .tag.tag-danger{
    color:#E4674F;border-color:rgba(228,103,79,.45);
}
/* Цена — как в строке ленты: крупная, но приглушённая */
body[data-sport="football"] #my-events-list .card .mono + span,
body[data-sport="football"] #my-events-list .card [style*="var(--accent)"][style*="font-size:16"]{
    font-family:var(--display);font-weight:600;color:var(--text-secondary)!important;
}

/* Плашка типа события в «Моих записях» — такая же серая рамка, как в ленте:
   цветные рамки под каждый тип возвращали пестроту, из-за которой всё
   и затевалось. */
body[data-sport="football"] #my-events-list .type-badge{
    background:transparent!important;border:1px solid var(--border-strong)!important;
    color:var(--text-secondary)!important;border-radius:4px;
    font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
    padding:3px 7px;
}

/* ---- 21. Депозит: карточка баланса была в старом золотом акценте ----
   Он остался от прежней темы и в палитре «Экипировка» смотрится чужим. */
body[data-sport="football"] #pg-wallet .card,
body[data-sport="football"] #pg-subs .card{
    background:var(--surface)!important;border:0!important;border-radius:2px;
    box-shadow:inset 3px 0 0 var(--accent);
}
body[data-sport="football"] #pg-wallet .card [style*="font-size:34"],
body[data-sport="football"] #pg-wallet .balance-value{
    font-family:var(--display);font-weight:600;
}

/* ---- 22. Статусные цвета — в одной семье с палитрой ----
   «Подтверждено» светилось oklch(.82 .22 142) — кислотный зелёный, зашитый
   мимо переменных: он не менялся с направлением и был ярче всего на экране.
   Статус остаётся статусом (успех/ожидание/отказ), но той же светлоты и
   насыщенности, что и остальная палитра. */
body[data-sport="football"]{
    --success:#3aa96a; /* запасной цвет для старых движков */
    --success:oklch(72% 0.13 152);
    --warning:#e0a63c; /* запасной цвет для старых движков */
    --warning:oklch(78% 0.14 70);
    --danger:#e4674f; /* запасной цвет для старых движков */
    --danger:oklch(66% 0.16 25);
}
body[data-sport="football"] .tag-success{
    color:var(--success)!important;
    background:rgba(58,169,106,.14)!important; /* запасной цвет для старых движков */
    background:color-mix(in oklab,var(--success) 14%,transparent)!important;
    border-color:rgba(58,169,106,.40)!important; /* запасной цвет для старых движков */
    border-color:color-mix(in oklab,var(--success) 40%,transparent)!important;
}
body[data-sport="football"] .tag-warning{
    color:var(--warning)!important;
    background:rgba(224,166,60,.14)!important; /* запасной цвет для старых движков */
    background:color-mix(in oklab,var(--warning) 14%,transparent)!important;
    border-color:rgba(224,166,60,.40)!important; /* запасной цвет для старых движков */
    border-color:color-mix(in oklab,var(--warning) 40%,transparent)!important;
}
body[data-sport="football"] .tag-danger{
    color:var(--danger)!important;
    background:rgba(228,103,79,.14)!important; /* запасной цвет для старых движков */
    background:color-mix(in oklab,var(--danger) 14%,transparent)!important;
    border-color:rgba(228,103,79,.40)!important; /* запасной цвет для старых движков */
    border-color:color-mix(in oklab,var(--danger) 40%,transparent)!important;
}
body[data-sport="football"] .fx-min.is-ok{color:var(--success)}
body[data-sport="football"] .fx-min:not(.is-ok){color:var(--danger)}

/* ---- 23. Цвет направления ----
   Примерочная палитр убрана: выбор сделан, панель больше не нужна.
   Остаётся один акцент — футбольный, он же базовый для стенда. */
body[data-sport="football"]{
    --accent:#2ea060; /* запасной цвет для старых движков */
    --accent:oklch(70% 0.15 158);
    --accent-ink:#0B0B0C;
    --accent-soft:rgba(46,160,96,.16);
}

/* ---- 24. Панель палитр перекрывала контент ----
   Она висит над нижним меню и накрыла последние пункты списка разделов
   турнира — «Управление» просто не было видно. Даём страницам запас снизу
   и по умолчанию держим панель свёрнутой в угол. */
body[data-sport="football"] #pg-tournaments,
body[data-sport="football"] #tournament-list-content,
body[data-sport="football"] #pg-standings,
body[data-sport="football"] #pg-schedule,
body[data-sport="football"] #pg-tournament-teams,
body[data-sport="football"] #pg-tournament-playoff,
body[data-sport="football"] #pg-my-events,
body[data-sport="football"] #pg-profile,
body[data-sport="football"] #pg-wallet,
body[data-sport="football"] #pg-subs{
    padding-bottom:170px;
}

/* ---- 25. Правки по чек-листу Эмиля Ковальски ============================
   Прогнал футбольную сборку по его правилам. Уже было в порядке: нет входа
   из scale(0), нет ease-in на интерфейсе, ничего длиннее 300 мс, есть
   prefers-reduced-motion и 23 состояния :active. Осталось два нарушения. */

/* transition: all — браузер анимирует и то, что меняться не должно, включая
   размеры и цвета при перерисовке. Перечисляем свойства явно. */
body[data-sport="football"] .btn-icon-row,
body[data-sport="football"] .avatar-actions button,
body[data-sport="football"] .pos-chip,
body[data-sport="football"] .chip,
body[data-sport="football"] .tab-btn,
body[data-sport="football"] .subtab{
    transition:background-color .18s ease, border-color .18s ease,
               color .18s ease, transform .12s cubic-bezier(.22,.61,.36,1);
}

/* Hover без медиазапроса: на телефоне первое касание отрабатывает как
   наведение, состояние залипает до тапа по другому месту. В Telegram это
   особенно заметно — карточка остаётся приподнятой. */
@media (hover: none), (pointer: coarse){
    body[data-sport="football"] .event-card-v:hover,
    body[data-sport="football"] .team-card:hover{transform:none}
    body[data-sport="football"] .day-head:hover{background:transparent}
    body[data-sport="football"] .match-card:hover,
    body[data-sport="football"] .event-card-v:hover,
    body[data-sport="football"] .team-card:hover{border-color:var(--border)}
    body[data-sport="football"] .ph-photo-btn:hover{
        color:var(--text-secondary);border-color:var(--border-strong);
    }
}


/* ---- 26. Плашка типа события — везде одна и та же ----
   На главной «Игра» была голубой, «Тренировка» зелёной: цвета из старой
   темы, не из палитры направления. Тип события — это ярлык, а не статус,
   поэтому он нейтральный. */
body[data-sport="football"] .type-badge{
    background:transparent!important;border:1px solid var(--border-strong)!important;
    color:var(--text-secondary)!important;border-radius:4px;
    font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
    padding:3px 7px;
}
/* Базовый акцент направления: держим и без выбранной палитры */


/* ---- 27. Заготовки шаблонов ----
   Расписание, которое у направления уже есть, — создаётся одним нажатием.
   Заведённая заготовка из списка пропадает, чтобы не плодить дубликаты. */
body[data-sport="football"] .tpl-presets{margin-bottom:20px}
body[data-sport="football"] .tpl-presets-k{
    font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    color:var(--text-muted);margin-bottom:8px;
}
body[data-sport="football"] .tpl-preset{
    display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;
    width:100%;text-align:left;padding:14px 0;background:none;
    border:0;border-top:1px solid var(--border);cursor:pointer;font:inherit;color:inherit;
}
body[data-sport="football"] .tpl-preset:last-child{border-bottom:1px solid var(--border)}
body[data-sport="football"] .tpl-preset-t{
    grid-column:1;font-family:var(--display);font-weight:600;font-size:16px;
    text-transform:uppercase;letter-spacing:.01em;color:var(--text-primary);
}
body[data-sport="football"] .tpl-preset-m{
    grid-column:1;font-size:12.5px;color:var(--text-secondary);margin-top:3px;
}
body[data-sport="football"] .tpl-preset-add{
    grid-column:2;grid-row:1 / span 2;align-self:center;
    font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:var(--accent);white-space:nowrap;
}
body[data-sport="football"] .tpl-preset:active{opacity:.6}
body[data-sport="football"] .tpl-preset[disabled]{opacity:.45}

/* ---- 28. Шапка занятия перестаёт вспыхивать ----
   Порядок был такой: открыл карточку — виден газон, через две с лишним
   секунды поверх него резко проявляется ролик. Ролик снят на белом фоне,
   поэтому в тёмной теме это читается как вспышка, а если видео не успевало
   подняться, картинка возвращалась назад — отсюда ощущение хаоса.

   Лечим тремя вещами: ролик приглушён и притемнён по краям тем же
   градиентом, что и подложка; появление растянуто и начинается чуть позже,
   чтобы не спорить с загрузкой карточки; сама подложка не гаснет под ним. */
body[data-sport="football"] .fx-hero.detail-hero video.cover-vid{
    transition:opacity .9s cubic-bezier(.23,1,.32,1) .15s;
}
/* Подложка остаётся под роликом: если он не поднимется, возвращаться некуда */
body[data-sport="football"] .fx-hero.detail-hero .detail-hero-placeholder{
    opacity:1!important;
}
@media (prefers-reduced-motion: reduce){
    body[data-sport="football"] .fx-hero.detail-hero video.cover-vid{transition-duration:.3s}
}

/* ---- 29. Поле как фон приложения ----
   Вид сверху даёт узнаваемую фактуру: полосы газона и линии разметки видно
   даже сильно притемнёнными. Заменяем им логотип КиТ, но только в футболе —
   у остальных направлений свой фон остаётся.

   Картинка притемнена заранее, в самом файле, а сверху лежит вертикальный
   уход в чёрный: под текстом фон должен исчезать совсем, иначе он начинает
   спорить с содержимым, ради которого сюда и заходят. */
body[data-sport="football"].kit-bg::before{
    background:
      url('/static/kit/tex/field_bg_soft.webp') center 32%/cover no-repeat !important;
    opacity:.50 !important;
    filter:none !important;
}
/* Ниже первого экрана фон уводится в чёрный: там начинаются списки. */
body[data-sport="football"].kit-bg::after{
    background:linear-gradient(180deg,
        rgba(10,11,14,.05) 0%,
        rgba(10,11,14,.30) 45%,
        rgba(10,11,14,.55) 100%) !important;
}

/* ---- 30. Карточка события с обложкой ----
   Плоские строки читались как сплошной текст: тип события приходилось
   вычитывать. Возвращаем картинку — по ней тип узнаётся раньше, чем прочитан
   заголовок, — но оставляем типографику редизайна. */
body[data-sport="football"] .fx-card{
    display:block;width:100%;padding:0;margin:0 0 14px;text-align:left;
    background:var(--surface);border:0;border-radius:3px;overflow:hidden;
    cursor:pointer;font:inherit;color:inherit;
}
body[data-sport="football"] .fx-card:active{transform:scale(.994)}

/* Обложка: сюда же скрипт подставляет промо-ролик направления */
body[data-sport="football"] .fx-cover{
    /* Кадр 16:9 — как сняты сами фотографии залов. Фиксированные 150 px
       резали кадр по вертикали: человек не помещался, а плашки типа и
       уровня ложились прямо на него. */
    position:relative;display:flex;flex-direction:column;justify-content:flex-end;
    overflow:hidden;
    height:150px;                       /* запасной вариант для старых движков */
    aspect-ratio:16 / 9;
    background:var(--surface-2, #14161b) center/cover no-repeat;
}
@supports (aspect-ratio: 16 / 9){
    body[data-sport="football"] .fx-cover{height:auto}
}
/* Широкий экран: карточка занимает всю ширину сайта, и кадр 16:9 вырастал
   почти на весь экран. Держим обложку в разумной высоте, кадрируем ближе к
   верху — там человек, по центру остаются ноги. */
@media (min-width: 760px){
    body[data-sport="football"] .fx-cover{
        width:100%;                     /* иначе предел высоты сжимает и ширину */
        max-height:280px;
        background-position:center 14%;
    }
}
body[data-sport="football"] .fx-cover::after{
    content:'';position:absolute;inset:0;
    background:linear-gradient(180deg, rgba(10,11,14,.15) 0%, rgba(10,11,14,.88) 100%);
}
body[data-sport="football"] .fx-cover > *{position:relative;z-index:1}
body[data-sport="football"] .fx-cover-top{
    /* Прижаты к низу вместе с заголовком: в верхних углах кадра стоит
       человек, и плашки перекрывали ему голову. */
    display:flex;gap:6px;padding:0 14px 8px;order:1;
}
body[data-sport="football"] .fx-cover-kind,
body[data-sport="football"] .fx-cover-lvl{
    display:inline-block;padding:4px 8px;border-radius:3px;
    background:rgba(10,11,14,.72);
    font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
    color:#f2f1ee;
}
body[data-sport="football"] .fx-cover-lvl{
    background:transparent;border:1px solid rgba(255,255,255,.35);
}
body[data-sport="football"] .fx-cover-when{
    position:absolute;right:14px;top:12px;
    font-family:var(--display);font-weight:600;font-size:17px;
    font-variant-numeric:tabular-nums;color:#f2f1ee;
    text-shadow:0 1px 6px rgba(0,0,0,.6);
}
body[data-sport="football"] .fx-cover-title{
    order:2;padding:0 14px 12px;
    font-family:var(--display);font-weight:600;font-size:22px;line-height:1.05;
    text-transform:uppercase;letter-spacing:.005em;color:#fff;
    text-shadow:0 2px 10px rgba(0,0,0,.55);
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

/* Тело карточки */
body[data-sport="football"] .fx-card-body{display:block;padding:12px 14px 14px}
body[data-sport="football"] .fx-card-place{
    display:block;font-size:13px;color:var(--text-secondary);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
body[data-sport="football"] .fx-card-foot{
    display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:8px;
}
body[data-sport="football"] .fx-seats{font-size:13px;color:var(--text-secondary)}
body[data-sport="football"] .fx-seats b{color:var(--text-primary);font-weight:600}
body[data-sport="football"] .fx-seats.is-last b{color:var(--warning)}
body[data-sport="football"] .fx-seats.is-full{color:var(--text-muted)}
body[data-sport="football"] .fx-card-price{
    margin-left:auto;font-family:var(--display);font-weight:600;font-size:21px;
    color:var(--text-primary);font-variant-numeric:tabular-nums;white-space:nowrap;
}
body[data-sport="football"] .fx-card-price i{font-style:normal;font-size:13px;color:var(--text-muted);margin-left:2px}

/* Полоса заполненности: сколько мест занято — видно, не читая цифр */
body[data-sport="football"] .fx-fill{
    display:block;height:2px;margin-top:12px;background:rgba(255,255,255,.07);
}
body[data-sport="football"] .fx-fill i{display:block;height:100%;background:var(--accent)}

/* Обложки по типу события. Для футбола — свой кадр, для остальных общие:
   класс type-* тот же, что использует скрипт промо-роликов, поэтому в
   карточке может подняться видео направления вместо статичной картинки. */
body[data-sport="football"] .fx-cover.type-training{
    background-image:url('/static/images/football_event.webp?v=3');
}
body[data-sport="football"] .fx-cover.type-game{
    background-image:url('/static/kit/tex/field_hero.webp');
}
body[data-sport="football"] .fx-cover.type-tournament{
    background-image:url('/static/kit/tex/field_bg_soft.webp');
}
body[data-sport="football"] .fx-cover video.cover-vid{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
    opacity:0;transition:opacity .6s ease;
}
body[data-sport="football"] .fx-cover video.cover-vid.on{opacity:1}

/* ---- 31. Читаемость серого текста ----
   Замер по стандарту показывает норму (приглушённый серый даёт 5.8 при
   пороге 4.5), но замер считает контраст к ровному фону. У нас под текстом
   лежит поле с яркими полосами газона и белыми линиями разметки — там
   контраст локально проваливается, и мелкие серые подписи начинают
   «вычитываться».

   Поднимаем оба серых на ступень и укрупняем мелкие подписи. Заголовки
   секций переводим в основной цвет: они опорные точки, по ним ищут раздел. */
body[data-sport="football"]{
    --text-secondary:#CFCCC6;
    --text-muted:#A7A49E;
}
body[data-sport="football"] .section-title,
body[data-sport="football"] .eyebrow,
body[data-sport="football"] .fx-daygroup .fx-day-m{
    color:var(--text-secondary);
}
/* Заголовки разделов на главной — по ним ориентируются, они должны быть
   заметны, а не шептать из фона. */
body[data-sport="football"] #pg-menu .section-title{
    color:var(--text-primary);font-weight:700;
}
/* Мелкие подписи: 11 px серым на фотофоне — нижняя граница читаемости */
body[data-sport="football"] .fx-day-sum{font-size:13px}
body[data-sport="football"] .fx-card-place{font-size:13.5px}
body[data-sport="football"] .hint{font-size:13px;color:var(--text-secondary)}

/* Текст поверх фона-поля должен иметь под собой опору: лёгкая тень
   отделяет буквы от полос газона, не делая их жирнее. */
body[data-sport="football"] #pg-menu .section-title,
body[data-sport="football"] .page-title,
body[data-sport="football"] .fx-h1{
    text-shadow:0 1px 10px rgba(10,11,14,.75);
    font-size:clamp(20px,6.4vw,30px);
    overflow-wrap:normal;word-break:keep-all;hyphens:none;
}
@media (min-width:760px){ body[data-sport="football"] .fx-h1{font-size:30px} }


/* ---- 40. АБОНЕМЕНТ КАК БИЛЕТ ----
   Вместо строки «5 / 8» с полоской — карта в цвете направления: зерно,
   компостер из кружков по числу занятий, корешок со сроком. Списание
   пробивает кружок (220 мс, ease-out), новый абонемент появляется той же
   пружиной, что успешная оплата. Наклон за мышью/гироскопом — только здесь. */
body[data-sport="football"] .sc-stage{perspective:1100px;margin:0 0 14px}
body[data-sport="football"] .subcard{
    --sc-acc:var(--accent);
    --sc-deep:var(--accent);              /* запасной для старых движков без color-mix — плоская карта */
    --sc-deep:color-mix(in oklab, var(--accent) 62%, #000);
    --sc-ink:#F7F5F0;
    position:relative;border-radius:16px;overflow:hidden;color:var(--sc-ink);
    background:linear-gradient(135deg,var(--sc-acc) 0%,var(--sc-deep) 100%);
    box-shadow:0 20px 48px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.06) inset;
    transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
    transition:transform .18s cubic-bezier(.23,1,.32,1);
    --stub:calc(100% - 118px);
    -webkit-mask:radial-gradient(12px at 0 var(--stub),transparent 98%,#000 100%) left/51% 100% no-repeat,
                 radial-gradient(12px at 100% var(--stub),transparent 98%,#000 100%) right/51% 100% no-repeat;
    mask:radial-gradient(12px at 0 var(--stub),transparent 98%,#000 100%) left/51% 100% no-repeat,
         radial-gradient(12px at 100% var(--stub),transparent 98%,#000 100%) right/51% 100% no-repeat;
}
body[data-sport="football"] .subcard::before{
    content:"";position:absolute;inset:0;pointer-events:none;opacity:.42;mix-blend-mode:soft-light;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
    background-size:220px 220px;
}
body[data-sport="football"] .subcard::after{
    content:"";position:absolute;inset:-40%;pointer-events:none;
    background:radial-gradient(closest-side at var(--gx,30%) var(--gy,20%),rgba(255,255,255,.2),transparent 65%);
}
body[data-sport="football"] .subcard>*{position:relative;z-index:1}
body[data-sport="football"] .sc-head{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 20px 0}
body[data-sport="football"] .sc-club{font-family:var(--display);font-weight:700;font-size:12px;letter-spacing:.16em;text-transform:uppercase;opacity:.85}
body[data-sport="football"] .sc-sport{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:.85}
body[data-sport="football"] .sc-owner{font-size:13px;font-weight:500;opacity:.75;margin-top:6px}
body[data-sport="football"] .sc-big{padding:22px 20px 6px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
body[data-sport="football"] .sc-big b{font-family:var(--display);font-weight:700;font-size:52px;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
body[data-sport="football"] .sc-big span{font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;opacity:.85}
body[data-sport="football"] .sc-punch{display:grid;gap:8px;padding:12px 20px 20px;max-width:340px}
body[data-sport="football"] .sc-hole{
    aspect-ratio:1;width:100%;max-width:32px;border-radius:50%;border:2px solid rgba(255,255,255,.75);
    display:grid;place-items:center;font-style:normal;
    transition:transform .2s cubic-bezier(.23,1,.32,1),background .2s cubic-bezier(.23,1,.32,1),border-color .2s cubic-bezier(.23,1,.32,1);
}
body[data-sport="football"] .sc-hole svg{width:14px;height:14px;opacity:0;transform:scale(.6);transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
body[data-sport="football"] .sc-hole.used{background:rgba(0,0,0,.34);border-color:rgba(0,0,0,.34);box-shadow:inset 0 2px 4px rgba(0,0,0,.45)}
body[data-sport="football"] .sc-hole.used svg{opacity:.9;transform:scale(1)}
body[data-sport="football"] .sc-hole.sc-punching{animation:scPunch .22s cubic-bezier(.23,1,.32,1)}
@keyframes scPunch{0%{transform:scale(1)}40%{transform:scale(.72)}100%{transform:scale(1)}}
body[data-sport="football"] .sc-stub{
    border-top:2px dashed rgba(255,255,255,.35);height:118px;
    padding:14px 20px 16px;display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;align-items:end;
}
body[data-sport="football"] .sc-lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.7;font-weight:600}
body[data-sport="football"] .sc-val{font-size:15px;font-weight:600;margin-top:3px;white-space:nowrap;font-variant-numeric:tabular-nums}
body[data-sport="football"] .sc-right{text-align:right}
body[data-sport="football"] .sc-barcode{grid-column:1 / -1;height:26px;width:100%;opacity:.85;
    background:repeating-linear-gradient(90deg,currentColor 0 2px,transparent 2px 4px,currentColor 4px 5px,transparent 5px 8px,currentColor 8px 11px,transparent 11px 13px)}
body[data-sport="football"] .subcard.sc-enter{animation:scPop .5s cubic-bezier(.2,1.4,.4,1)}
@keyframes scPop{0%{transform:scale(.7) translateY(24px);opacity:0}100%{transform:scale(1) translateY(0);opacity:1}}
@media (prefers-reduced-motion:reduce){
    body[data-sport="football"] .subcard{transition:none;transform:none!important}
    body[data-sport="football"] .subcard.sc-enter{animation:scFade .25s ease}
    @keyframes scFade{from{opacity:0}to{opacity:1}}
    body[data-sport="football"] .sc-hole.sc-punching{animation:none}
}


/* ---- 41. ВЕЩНЫЕ ЭКРАНЫ: депозит-карта, чеки, удостоверение, конверт, итог ----
   Тот же язык, что у абонемента: ценное выглядит как предмет. Общая база —
   .subcard (§40); здесь только то, что у каждого предмета своё. */

/* Депозит — билет про деньги */
body[data-sport="football"] .sc-wallet .sc-big b{font-size:44px}
body[data-sport="football"] .sc-wallet .sc-big b i{font-style:normal;font-size:22px;margin-left:4px;opacity:.8}
body[data-sport="football"] .sc-hold{padding:0 20px 14px;font-size:12px;opacity:.75;margin-top:-2px}

/* Лента операций — чековая лента: зубчатые края */
body[data-sport="football"] .sc-tape{
    background:var(--surface);margin:16px -4px 0;padding:14px 18px 18px;
    -webkit-mask:linear-gradient(#000 0 0) center/100% calc(100% - 16px) no-repeat,
        conic-gradient(from 135deg at 50% 0,#000 90deg,transparent 0) top/14px 8px repeat-x,
        conic-gradient(from -45deg at 50% 100%,#000 90deg,transparent 0) bottom/14px 8px repeat-x;
    mask:linear-gradient(#000 0 0) center/100% calc(100% - 16px) no-repeat,
        conic-gradient(from 135deg at 50% 0,#000 90deg,transparent 0) top/14px 8px repeat-x,
        conic-gradient(from -45deg at 50% 100%,#000 90deg,transparent 0) bottom/14px 8px repeat-x;
}
body[data-sport="football"] .sc-tape-head{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);padding:4px 0 6px;border-bottom:1px dashed rgba(255,255,255,.14)}

/* Чеки — бумага на тёмном: единственное светлое пятно на экране, и это намеренно */
body[data-sport="football"] .sc-receipts{display:flex;flex-direction:column;gap:14px}
body[data-sport="football"] .sc-receipt{
    background:#F6F3EC;color:#1C1B18;padding:14px 16px 20px;font-size:13px;line-height:1.45;
    font-variant-numeric:tabular-nums;position:relative;
    -webkit-mask:linear-gradient(#000 0 0) top/100% calc(100% - 8px) no-repeat,
        conic-gradient(from -45deg at 50% 100%,#000 90deg,transparent 0) bottom/14px 8px repeat-x;
    mask:linear-gradient(#000 0 0) top/100% calc(100% - 8px) no-repeat,
        conic-gradient(from -45deg at 50% 100%,#000 90deg,transparent 0) bottom/14px 8px repeat-x;
}
body[data-sport="football"] .sc-receipt>*{position:relative}
body[data-sport="football"] .sc-rc-head{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#6B675E;padding-bottom:8px;border-bottom:1px dashed #C9C3B6;margin-bottom:10px}
body[data-sport="football"] .sc-rc-title{font-family:var(--display);font-weight:700;font-size:15px;line-height:1.2;text-wrap:balance}
body[data-sport="football"] .sc-rc-when{font-size:12px;color:#6B675E;margin-top:3px}
body[data-sport="football"] .sc-rc-line{display:flex;justify-content:space-between;align-items:baseline;margin-top:10px;padding-top:8px;border-top:1px dashed #C9C3B6}
body[data-sport="football"] .sc-rc-line b{font-family:var(--display);font-weight:700;font-size:20px}
body[data-sport="football"] .sc-rc-tls{margin-top:8px;padding-top:8px;border-top:1px dashed #C9C3B6;font-size:11.5px;color:#4A473F;display:flex;flex-direction:column;gap:3px}
body[data-sport="football"] .sc-rc-tl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 10px}
body[data-sport="football"] .sc-rc-tl span:first-child{color:#8A857A;white-space:nowrap}
body[data-sport="football"] .sc-rc-foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:10px}
body[data-sport="football"] .sc-rc-bar{height:22px;flex:1;max-width:150px;opacity:.7;
    background:repeating-linear-gradient(90deg,#1C1B18 0 2px,transparent 2px 4px,#1C1B18 4px 5px,transparent 5px 8px,#1C1B18 8px 11px,transparent 11px 13px)}
body[data-sport="football"] .sc-rc-link{font-size:12px;color:#1C1B18;text-decoration:underline;text-underline-offset:3px}
body[data-sport="football"] .sc-stamp{
    display:inline-block;padding:4px 10px;border:2px solid currentColor;border-radius:4px;
    font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    transform:rotate(-6deg);opacity:.85;
}
body[data-sport="football"] .sc-stamp.is-ok{color:#1F7A47}
body[data-sport="football"] .sc-stamp.is-warn{color:#9A6A12}
body[data-sport="football"] .sc-stamp.is-bad{color:#B3312B}
body[data-sport="football"] .sc-stamp.is-wait{color:#6B675E}

/* Удостоверение — шапка профиля становится карточкой: без лучей и частиц, с низом */
body[data-sport="football"] .profile-hero{border-radius:16px;overflow:hidden;
    background:linear-gradient(135deg,var(--accent) 0%,var(--accent) 100%);
    background:linear-gradient(135deg,var(--accent) 0%,color-mix(in oklab,var(--accent) 62%,#000) 100%)}
body[data-sport="football"] .ph-bg-rays,body[data-sport="football"] .ph-bg-radial,body[data-sport="football"] .ph-particles,
body[data-sport="football"] .ph-bg-filigree,body[data-sport="football"] .ph-ring{display:none}
body[data-sport="football"] .sc-idfoot{
    display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px 12px;align-items:end;
    margin:18px 0 0;padding:12px 0 0;border-top:2px dashed rgba(255,255,255,.35);text-align:left;
}
body[data-sport="football"] .sc-idfoot .sc-lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;opacity:.7;font-weight:600}
body[data-sport="football"] .sc-idfoot .sc-val{font-size:14px;font-weight:600;margin-top:2px;white-space:nowrap}
body[data-sport="football"] .sc-idfoot .sc-barcode{grid-column:1 / -1;height:22px;width:100%;opacity:.8;
    background:repeating-linear-gradient(90deg,currentColor 0 2px,transparent 2px 4px,currentColor 4px 5px,transparent 5px 8px,currentColor 8px 11px,transparent 11px 13px)}

/* Конверт приглашения */
body[data-sport="football"] .sc-envelope{position:relative;margin:0 0 12px;border-radius:14px;overflow:hidden;background:var(--surface-2,#1C1C21);border:1px solid rgba(255,255,255,.14)}
body[data-sport="football"] .sc-env-flap{height:46px;background:var(--accent);
    background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 62%,#000));
    -webkit-clip-path:polygon(0 0,100% 0,50% 100%);clip-path:polygon(0 0,100% 0,50% 100%)}
body[data-sport="football"] .sc-env-body{padding:8px 16px 16px}
body[data-sport="football"] .sc-env-eyebrow{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:700}
body[data-sport="football"] .sc-env-title{font-family:var(--display);font-weight:700;font-size:18px;line-height:1.15;margin-top:4px;text-wrap:balance}
body[data-sport="football"] .sc-env-from{font-size:13px;color:var(--text-secondary);margin-top:4px}
body[data-sport="football"] .sc-env-roster{margin-top:10px;padding-top:10px;border-top:1px dashed rgba(255,255,255,.14);font-size:13px;line-height:1.6}
body[data-sport="football"] .sc-env-member em{font-style:normal;font-size:11px;color:var(--accent);margin-left:4px}
body[data-sport="football"] .sc-env-actions{display:flex;gap:8px;margin-top:14px}
body[data-sport="football"] .sc-env-actions .btn{width:auto;flex:1}

/* Итог турнира — распечатка на стене клуба + медаль */
body[data-sport="football"] .sc-poster{background:#F6F3EC;color:#1C1B18;padding:14px 16px;margin:14px 0;border-radius:2px;
    box-shadow:0 12px 30px rgba(0,0,0,.45);font-variant-numeric:tabular-nums;position:relative}
body[data-sport="football"] .sc-poster::after{content:"";position:absolute;top:-6px;left:50%;width:44px;height:14px;transform:translateX(-50%) rotate(-2deg);
    background:rgba(255,255,255,.55);box-shadow:0 1px 2px rgba(0,0,0,.2)}
body[data-sport="football"] .sc-poster-head{display:flex;justify-content:space-between;gap:10px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#6B675E;padding-bottom:8px;border-bottom:2px solid #1C1B18;margin-bottom:6px}
body[data-sport="football"] .sc-poster-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px dashed #C9C3B6}
body[data-sport="football"] .sc-poster-row b{font-family:var(--display);font-weight:700;font-size:16px}
body[data-sport="football"] .sc-poster-row span{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body[data-sport="football"] .sc-poster-row i{font-style:normal;font-size:11px;color:#6B675E;white-space:nowrap}
body[data-sport="football"] .sc-poster-row.is-1 b{color:#9A6A12}
body[data-sport="football"] .sc-poster-row.is-2 b{color:#6B675E}
body[data-sport="football"] .sc-poster-row.is-3 b{color:#8A4B2A}
body[data-sport="football"] .sc-medal{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 14px;align-items:center;
    padding:14px 16px;margin:0 0 14px;border-radius:14px;background:var(--surface-2,#1C1C21);border:1px solid rgba(255,255,255,.14)}
body[data-sport="football"] .sc-medal-disc{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;
    background:radial-gradient(circle at 35% 30%,#fff6d6,#C9A227 55%,#7A5A18);box-shadow:0 6px 16px rgba(0,0,0,.4),inset 0 0 0 3px rgba(255,255,255,.25)}
body[data-sport="football"] .sc-medal.is-2 .sc-medal-disc{background:radial-gradient(circle at 35% 30%,#fff,#B9BCC4 55%,#6B6F78)}
body[data-sport="football"] .sc-medal.is-3 .sc-medal-disc{background:radial-gradient(circle at 35% 30%,#ffe2c9,#B3733A 55%,#6E3F1B)}
body[data-sport="football"] .sc-medal-disc b{font-family:var(--display);font-weight:700;font-size:22px;color:#1C1B18}
body[data-sport="football"] .sc-medal-title{font-family:var(--display);font-weight:700;font-size:17px;line-height:1.15}
body[data-sport="football"] .sc-medal-sub{font-size:13px;color:var(--text-secondary);margin-top:2px}
body[data-sport="football"] .sc-medal .btn{grid-column:1 / -1;width:100%}
/* На карте-удостоверении золотой номер и зелёная рамка уровня терялись на
   зелёном — на предмете всё подписано светлым. */
body[data-sport="football"] .profile-hero .eyebrow.gold{color:rgba(255,255,255,.82)}
body[data-sport="football"] .profile-hero .ph-level{color:#fff;border-color:rgba(255,255,255,.55);background:rgba(0,0,0,.18)}
body[data-sport="football"] .profile-hero .ph-level-star{color:#fff}
body[data-sport="football"] .profile-hero .ph-handle{color:rgba(255,255,255,.7)}
/* Распечатка итогов: подзаголовки секций и строки группового этапа тише финалистов */
body[data-sport="football"] .sc-poster-sec{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#6B675E;margin:12px 0 2px;font-weight:700}
body[data-sport="football"] .sc-poster-row.is-group b{color:#8A857A;font-size:14px}
body[data-sport="football"] .sc-poster-row.is-group span{font-weight:500}

/* ---- 42. ПАСПОРТ СПОРТСМЕНА (профиль, вариант Б) ----
   Разворот книжки: слева герб, фото, печать; справа поля машинописью и MRZ.
   Нарочно ни на что в приложении не похож — не билет и не чек. */
body[data-sport="football"] .pp{
    display:grid;grid-template-columns:1fr 1.25fr;border-radius:12px;overflow:hidden;position:relative;
    background:#15171B;box-shadow:0 24px 50px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.07) inset;margin:0 0 4px;
}
body[data-sport="football"] .pp::after{content:"";position:absolute;left:44.4%;top:0;bottom:0;width:2px;background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,.2),rgba(0,0,0,.6))}
body[data-sport="football"] .pp-l{padding:18px 14px 16px;display:flex;flex-direction:column;gap:12px;align-items:flex-start;background:linear-gradient(180deg,#1A1D22,#121417);position:relative}
body[data-sport="football"] .pp-crest{font-family:var(--display);font-weight:900;font-size:22px;letter-spacing:.04em;color:var(--accent);line-height:1}
body[data-sport="football"] .pp-crest small{display:block;font:600 9px var(--ui);letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted);margin-top:4px}
body[data-sport="football"] .pp-photo{width:100%;aspect-ratio:3/4;border-radius:4px;overflow:hidden;background:radial-gradient(circle at 40% 30%,#6f7d86,#2a3036 70%);
    display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.15)}
body[data-sport="football"] .pp-photo img{width:100%;height:100%;object-fit:cover;display:block}
body[data-sport="football"] .pp-photo .ph-avatar-text{font-family:var(--display);font-weight:700;font-size:34px;color:#fff}
body[data-sport="football"] .pp-photo-btn{position:static;margin-top:-4px;font-size:11px;padding:5px 10px;border-radius:8px}
body[data-sport="football"] .pp-stamp{align-self:flex-end;width:58px;height:58px;border-radius:50%;border:2px solid var(--accent);display:grid;place-items:center;
    font:600 8px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-align:center;color:var(--accent);transform:rotate(-12deg);opacity:.8;line-height:1.2}
body[data-sport="football"] .pp-r{padding:18px 16px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;min-width:0}
body[data-sport="football"] .pp-r .f{margin-bottom:10px}
body[data-sport="football"] .pp-r .f small{display:block;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:2px}
body[data-sport="football"] .pp-r .f b{font-weight:600;color:var(--text-primary);overflow-wrap:anywhere}
body[data-sport="football"] .pp-r .f b em{font-style:normal;font-size:9px;letter-spacing:.14em;color:var(--accent);margin-left:6px}
body[data-sport="football"] .pp-r .mrz{margin-top:12px;padding-top:10px;border-top:1px dashed rgba(255,255,255,.15);font-size:10px;letter-spacing:.12em;color:var(--text-secondary);line-height:1.6;word-break:break-all}
/* Удостоверение из §41 больше не нужно — шапка заменена паспортом */
body[data-sport="football"] .sc-idfoot{display:none}
/* Паспорт: фамилия наследовала размер старого заголовка ph-name, кнопка «Фото» —
   абсолютное позиционирование старой шапки. Обнуляем внутри книжки. */
body[data-sport="football"] .pp .ph-name{font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;letter-spacing:0;line-height:1.3;margin:0;text-shadow:none}
body[data-sport="football"] .pp .pp-photo-btn{position:static!important;transform:none!important;left:auto!important;bottom:auto!important;margin:0;display:inline-flex;align-items:center;gap:5px}

/* ---- 43. ШИРОКИЙ ЭКРАН: предметы не растягиваются ----
   На сайте контейнер под 1400 px, и паспорт с депозитом тянулись во всю
   ширину — фото в полметра. Предмет остаётся предметом: не шире ладони. */
@media (min-width: 760px){
    body[data-sport="football"] .pp,
    body[data-sport="football"] .sc-stage,
    body[data-sport="football"] .sc-tape,
    body[data-sport="football"] .sc-receipts,
    body[data-sport="football"] .sc-envelope,
    body[data-sport="football"] .sc-poster,
    body[data-sport="football"] .sc-medal{max-width:460px}
    body[data-sport="football"] .sc-tape{margin-left:0;margin-right:0}
}

/* ---- 44. МАТЧИ И ТУРЫ ----
   Карточка матча: команды строками с эмблемой-инициалами, победитель
   подсвечен, счёт столбиком справа, у волейбола — сеты под ними. Шапка
   тура — тихая строка с плашкой, а не цифра в полэкрана. */
body[data-sport="football"] .rnd{margin:0 0 22px}
body[data-sport="football"] .rnd-head{display:flex;align-items:center;gap:10px;padding:0 2px 10px}
body[data-sport="football"] .rnd-num{font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
    color:var(--accent-ink,#fff);background:var(--accent);padding:5px 9px;border-radius:6px}
body[data-sport="football"] .rnd-num.is-po{background:var(--surface-2,#1C1C21);color:var(--text-primary)}
body[data-sport="football"] .rnd-state{font-size:12px;font-weight:600;color:var(--text-secondary)}
body[data-sport="football"] .rnd-state.is-live{color:var(--accent)}
body[data-sport="football"] .rnd-state.is-live::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:6px;vertical-align:1px}
body[data-sport="football"] .rnd-meta{margin-left:auto;font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums}
body[data-sport="football"] .rnd-list{display:flex;flex-direction:column;gap:8px}
body[data-sport="football"] .mx{background:var(--surface);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:10px 12px 12px}
body[data-sport="football"] .mx.is-dim{opacity:.72}
body[data-sport="football"] .mx.is-edit{cursor:pointer}
body[data-sport="football"] .mx-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:11px;color:var(--text-muted)}
body[data-sport="football"] .mx-time{font-family:var(--display);font-weight:700;font-size:12px;color:var(--text-primary);font-variant-numeric:tabular-nums}
body[data-sport="football"] .mx-stage{padding:2px 7px;border-radius:5px;background:var(--surface-2,#1C1C21);color:var(--text-secondary);font-weight:600}
body[data-sport="football"] .mx-st{margin-left:auto}
body[data-sport="football"] .mx.is-ft .mx-st{color:var(--text-muted)}
body[data-sport="football"] .mx-teams{display:flex;flex-direction:column;gap:6px}
body[data-sport="football"] .mx-team{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;color:var(--text-secondary)}
body[data-sport="football"] .mx-team.w{color:var(--text-primary)}
body[data-sport="football"] .mx-emb{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-style:normal;
    font-family:var(--display);font-weight:700;font-size:10px;letter-spacing:.02em;background:var(--surface-2,#1C1C21);color:var(--text-secondary);border:1px solid rgba(255,255,255,.08)}
body[data-sport="football"] .mx-team.w .mx-emb{background:var(--accent);color:var(--accent-ink,#fff);border-color:transparent}
body[data-sport="football"] .mx-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body[data-sport="football"] .mx-team.w .mx-name{font-weight:700}
body[data-sport="football"] .mx-pts{font-family:var(--display);font-weight:700;font-size:20px;line-height:1;min-width:26px;text-align:right;font-variant-numeric:tabular-nums;color:var(--text-muted)}
body[data-sport="football"] .mx-team.w .mx-pts{color:var(--text-primary)}
body[data-sport="football"] .mx-sets{margin-top:8px;padding-top:8px;border-top:1px dashed rgba(255,255,255,.1);font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;align-items:center}
body[data-sport="football"] .mx-sets i{font-style:normal;margin:0 6px;opacity:.5}
body[data-sport="football"] .mx-sets .hw{color:var(--text-primary);font-weight:600}
body[data-sport="football"] .mx-sets .gw{color:var(--text-secondary)}
body[data-sport="football"] .mx-edit{margin-top:8px;font-size:12px;color:var(--accent);font-weight:600}


/* ---- 45. АФИША ТУРНИРА в списке и навигация внутри турнира ----
   Строка с тонким текстом читалась слабо. Афиша: обложка направления с
   затемнением, сезон, крупное название, плашка состояния, прогресс. */
body[data-sport="football"] .tc{position:relative;display:block;width:100%;margin:0 0 12px;padding:16px 16px 14px;border:0;border-radius:16px;overflow:hidden;
    text-align:left;color:#fff;background:var(--surface);cursor:pointer;font:inherit;min-height:164px}
body[data-sport="football"] .tc-cover{position:absolute;inset:0;background:var(--surface-2,#1C1C21) center 22%/cover no-repeat}
/* картинка отдельным правилом: сборщики других направлений вырезают строку с футбольным кадром целиком */
body[data-sport="football"] .tc-cover{background-image:url('/static/images/football_event.webp?v=3')}
body[data-sport="football"] .tc-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,8,10,.94) 0%,rgba(8,8,10,.88) 58%,rgba(8,8,10,.34) 100%),linear-gradient(180deg,rgba(8,8,10,0) 45%,rgba(8,8,10,.75) 100%)}
body[data-sport="football"] .tc-name,body[data-sport="football"] .tc-meta{max-width:74%}
body[data-sport="football"] .tc>*:not(.tc-cover){position:relative;z-index:1}
body[data-sport="football"] .tc:active{transform:scale(.992)}
body[data-sport="football"] .tc-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:26px}
body[data-sport="football"] .tc-season{font-size:10px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;opacity:.8}
body[data-sport="football"] .tc-state{font-family:var(--display);font-weight:700;font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:5px 9px;border-radius:6px;
    background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22)}
body[data-sport="football"] .tc.is-live .tc-state{background:var(--accent);border-color:transparent;color:var(--accent-ink,#fff)}
body[data-sport="football"] .tc.is-done .tc-state{background:rgba(0,0,0,.4);color:rgba(255,255,255,.75)}
body[data-sport="football"] .tc-name{display:block;font-family:var(--display);font-weight:700;font-size:21px;line-height:1.08;letter-spacing:-.01em;text-transform:uppercase;text-wrap:balance;text-shadow:0 2px 10px rgba(0,0,0,.5)}
body[data-sport="football"] .tc-meta{display:block;margin-top:6px;font-size:12.5px;color:rgba(255,255,255,.82)}
body[data-sport="football"] .tc-foot{display:flex;align-items:center;gap:10px;margin-top:12px}
body[data-sport="football"] .tc-bar{flex:1;height:4px;border-radius:2px;background:rgba(255,255,255,.2);overflow:hidden}
body[data-sport="football"] .tc-bar i{display:block;height:100%;background:var(--accent);border-radius:2px}
body[data-sport="football"] .tc-n{font-size:12px;color:rgba(255,255,255,.85);font-variant-numeric:tabular-nums;white-space:nowrap}
body[data-sport="football"] .tc-n b{font-family:var(--display);font-weight:700;font-size:14px}
body[data-sport="football"] .tc-win{display:flex;align-items:baseline;gap:8px;font-family:var(--display);font-weight:700;font-size:15px}
body[data-sport="football"] .tc-win em{font:600 10px var(--ui);letter-spacing:.14em;text-transform:uppercase;opacity:.75;font-style:normal}
/* ссылки внутри турнира — карточки, а не строки с разделителями */
body[data-sport="football"] .trn-nav{display:flex;flex-direction:column;gap:8px;margin:14px 0}
body[data-sport="football"] .trn-link{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:14px 16px;border:1px solid rgba(255,255,255,.06);border-radius:12px;
    background:var(--surface);color:var(--text-primary);font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.04em;text-transform:uppercase;text-align:left;cursor:pointer}
body[data-sport="football"] .trn-link.is-main{background:var(--accent);color:var(--accent-ink,#fff);border-color:transparent}
body[data-sport="football"] .trn-link i{font-style:normal;opacity:.7}
body[data-sport="football"] .trn-link.is-adm{color:var(--text-secondary)}

/* ---- 46. ПАСПОРТ СПОРТСМЕНА v2 ---- */
body[data-sport="football"] .pp2{position:relative;border-radius:12px;overflow:hidden;background:#15171B;color:var(--text-primary);
    box-shadow:0 24px 50px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.07) inset;margin:0 0 4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
body[data-sport="football"] .pp2::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.22;
    background:repeating-radial-gradient(circle at 20% 0,transparent 0 5px,rgba(255,255,255,.035) 5px 6px),
               repeating-radial-gradient(circle at 90% 110%,transparent 0 6px,rgba(255,255,255,.03) 6px 7px)}
body[data-sport="football"] .pp2>*{position:relative}
body[data-sport="football"] .pp2-band{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.1);background:rgba(0,0,0,.25)}
body[data-sport="football"] .pp2-crest{font-family:var(--display);font-weight:900;font-size:16px;color:var(--accent);letter-spacing:.04em}
body[data-sport="football"] .pp2-title{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-secondary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body[data-sport="football"] .pp2-serial{font-size:11px;font-weight:600;letter-spacing:.08em;color:#E36B5C}
body[data-sport="football"] .pp2-body{display:grid;grid-template-columns:118px minmax(0,1fr);gap:14px;padding:14px}
body[data-sport="football"] .pp2-left{display:flex;flex-direction:column;gap:8px;align-items:flex-start;position:relative}
body[data-sport="football"] .pp2-photo{position:relative;width:118px;aspect-ratio:3/4;border-radius:5px;overflow:hidden;background:radial-gradient(circle at 40% 30%,#6f7d86,#2a3036 70%);
    display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 0 0 4px rgba(255,255,255,.04)}
body[data-sport="football"] .pp2-photo>img{width:100%;height:100%;object-fit:cover;display:block}
body[data-sport="football"] .pp2-photo .ph-avatar-text{font-family:var(--display);font-weight:700;font-size:30px;color:#fff}
body[data-sport="football"] .pp2-ghost{position:absolute;right:-6px;bottom:-6px;width:38px;aspect-ratio:3/4;border-radius:3px;overflow:hidden;opacity:.28;filter:grayscale(1);pointer-events:none;display:grid;place-items:center}
body[data-sport="football"] .pp2-ghost img{width:100%;height:100%;object-fit:cover}
body[data-sport="football"] .pp2-ghost .ph-avatar-text{font-size:11px!important}
body[data-sport="football"] .pp2-photo-btn{position:static!important;transform:none!important;left:auto!important;bottom:auto!important;margin:0;font-size:11px;padding:5px 10px;border-radius:8px;display:inline-flex;align-items:center;gap:5px}
body[data-sport="football"] .pp2-stamp{position:absolute;left:78px;top:118px;width:62px;height:62px;border-radius:50%;border:2px solid var(--accent);
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:8px;letter-spacing:.1em;color:var(--accent);
    transform:rotate(-14deg);opacity:.85;background:rgba(21,23,27,.35);pointer-events:none}
body[data-sport="football"] .pp2-stamp span:nth-child(2){font-weight:700;font-size:11px}
body[data-sport="football"] .pp2-fields{display:flex;flex-direction:column;gap:9px;min-width:0}
body[data-sport="football"] .pp2-row{display:grid;grid-template-columns:1fr 1fr;gap:9px 10px}
body[data-sport="football"] .pp2-f{min-width:0;border-bottom:1px dotted rgba(255,255,255,.22);padding-bottom:4px}
body[data-sport="football"] .pp2-f small{display:block;font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin-bottom:2px}
body[data-sport="football"] .pp2-f b{display:block;font-size:12px;font-weight:600;overflow-wrap:anywhere;line-height:1.3}
body[data-sport="football"] .pp2-f b em{font-style:normal;font-size:9px;letter-spacing:.14em;color:var(--accent)}
body[data-sport="football"] .pp2 .ph-name{font-size:12px;font-family:inherit;font-weight:600;letter-spacing:0;line-height:1.3;margin:0;text-shadow:none;display:inline}
body[data-sport="football"] .pp2-mrz{margin:0 14px 14px;padding:10px 12px;background:rgba(255,255,255,.04);border:1px dashed rgba(255,255,255,.14);border-radius:6px;
    font-size:11.5px;letter-spacing:.14em;line-height:1.7;color:var(--text-secondary);white-space:nowrap;overflow:hidden}
@media (max-width:360px){ body[data-sport="football"] .pp2-body{grid-template-columns:104px minmax(0,1fr)} body[data-sport="football"] .pp2-photo{width:104px} body[data-sport="football"] .pp2-stamp{left:64px;top:104px} }

/* ---- 47. ДЕПОЗИТ: чеки выше ленты, лента свёрнута ----
   На волейболе лента в 50+ операций хоронила чеки внизу страницы. */
body[data-sport="football"] .sc-tape.is-collapsed{max-height:420px;overflow:hidden;position:relative}
body[data-sport="football"] .sc-tape.is-collapsed::after{content:"";position:absolute;left:0;right:0;bottom:0;height:90px;background:linear-gradient(transparent,var(--surface));pointer-events:none}
body[data-sport="football"] .sc-tape-more{width:100%;margin:8px 0 0}


/* ---- 48. ЭМБЛЕМЫ КОМАНД ----
   Капитан загрузил лого — показываем его; нет лого — круг с инициалами. */
body[data-sport="football"] .mx-emb.has-logo,body[data-sport="football"] .st-emb.has-logo,body[data-sport="football"] .tm-emb.has-logo,body[data-sport="football"] .rs-emb.has-logo{background:transparent;overflow:hidden;padding:0}
body[data-sport="football"] .mx-emb img,body[data-sport="football"] .st-emb img,body[data-sport="football"] .tm-emb img,body[data-sport="football"] .rs-emb img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}
body[data-sport="football"] .mx-team.w .mx-emb.has-logo{background:transparent;border-color:var(--accent)}
body[data-sport="football"] .st-team{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%}
body[data-sport="football"] .st-team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body[data-sport="football"] .st-emb{width:24px;height:24px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-style:normal;font:700 9px var(--display);background:var(--surface-2,#1C1C21);border:1px solid rgba(255,255,255,.12);color:var(--text-secondary)}

/* ---- 49. КОМАНДЫ: моя команда и список ----
   Было: заголовок, три строки текста и кнопки «капитаном/убрать» в ряд.
   Стало: эмблема, название, прогресс состава, строки игроков с аватарками. */
body[data-sport="football"] .tm{background:var(--surface);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:14px 14px 12px;margin:0 0 10px}
body[data-sport="football"] .tm.tm-mine{border-color:color-mix(in oklab,var(--accent) 45%,transparent);background:linear-gradient(160deg,color-mix(in oklab,var(--accent) 12%,var(--surface)),var(--surface) 60%)}
body[data-sport="football"] .tm-head{display:flex;align-items:center;gap:12px}
body[data-sport="football"] .tm-emb{width:56px;height:56px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font:700 20px var(--display);font-style:normal;background:var(--surface-2,#1C1C21);border:2px solid rgba(255,255,255,.14);color:var(--text-primary);box-shadow:0 6px 18px rgba(0,0,0,.35)}
body[data-sport="football"] .tm.tm-mine .tm-emb{border-color:var(--accent)}
body[data-sport="football"] .tm-ttl{min-width:0;flex:1}
body[data-sport="football"] .tm-ttl small{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}
body[data-sport="football"] .tm-ttl b{display:block;font-family:var(--display);font-weight:700;font-size:19px;line-height:1.1;text-transform:uppercase;letter-spacing:-.01em;overflow-wrap:anywhere}
body[data-sport="football"] .tm-st{display:inline-block;margin-top:5px;font-size:11px;color:var(--text-secondary)}
body[data-sport="football"] .tm-st.is-ok{color:#8FD19E}
body[data-sport="football"] .tm-st.is-wait{color:#F0C06A}
body[data-sport="football"] .tm-logo-btn{background:none;border:0;padding:0;margin:6px 0 0;font:600 11px var(--ui);color:var(--accent);cursor:pointer;letter-spacing:.02em;display:inline-flex;align-items:center;gap:5px}
body[data-sport="football"] .tm-roster{margin:12px 0 4px}
body[data-sport="football"] .tm-bar{height:4px;border-radius:2px;background:rgba(255,255,255,.1);overflow:hidden}
body[data-sport="football"] .tm-bar i{display:block;height:100%;background:var(--accent);border-radius:2px}
body[data-sport="football"] .tm-roster span{display:block;margin-top:6px;font-size:12px;color:var(--text-secondary)}
body[data-sport="football"] .tm-roster span b{color:var(--text-primary)}
body[data-sport="football"] .tm-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid rgba(255,255,255,.06)}
body[data-sport="football"] .tm-row.is-dim{opacity:.62}
body[data-sport="football"] .tm-av{width:36px;height:36px;border-radius:50%;flex:0 0 auto;overflow:hidden;background:var(--surface-2,#1C1C21);display:grid;place-items:center;font:700 12px var(--display);color:var(--text-secondary);border:1px solid rgba(255,255,255,.1)}
body[data-sport="football"] .tm-av img{width:100%;height:100%;object-fit:cover;display:block}
body[data-sport="football"] .tm-nm{min-width:0;flex:1}
body[data-sport="football"] .tm-nm b{display:block;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body[data-sport="football"] .tm-nm small{display:block;font-size:11px;color:var(--text-muted);margin-top:1px}
body[data-sport="football"] .tm-row.is-dim .tm-nm small{color:#F0C06A}
body[data-sport="football"] .tm-cap{font:700 9px var(--display);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in oklab,var(--accent) 50%,transparent);border-radius:6px;padding:3px 6px;flex:0 0 auto}
body[data-sport="football"] .tm-act{display:flex;gap:6px;flex:0 0 auto}
body[data-sport="football"] .tm-ib{height:32px;min-width:32px;border-radius:9px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;padding:0 8px;font:600 11px var(--ui);white-space:nowrap}
body[data-sport="football"] .tm-ib.is-danger{color:#EF8F8F;border-color:rgba(239,68,68,.3)}
body[data-sport="football"] .tm-ib.is-sure{background:#EF4444;color:#fff;border-color:transparent}
body[data-sport="football"] .tm-ib.is-ok{color:var(--accent);border-color:color-mix(in oklab,var(--accent) 45%,transparent)}
body[data-sport="football"] .tm-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
body[data-sport="football"] .tm-actions .btn{width:auto}
body[data-sport="football"] .tm-count{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);flex:0 0 auto}
body[data-sport="football"] .tm-head .btn{width:auto;padding:7px 12px;flex:0 0 auto}
body[data-sport="football"] .tm-sec{margin:16px 0 8px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:10px}
body[data-sport="football"] .tm-sec::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.08)}
body[data-sport="football"] .tm-apply{display:flex;flex-direction:column;gap:10px}
body[data-sport="football"] .tm-apply-logo{display:flex;align-items:center;gap:12px}
body[data-sport="football"] .tm-apply-logo .tm-emb{width:48px;height:48px;font-size:16px;cursor:pointer}
body[data-sport="football"] .tm-apply-logo small{font-size:12px;color:var(--text-secondary);line-height:1.3}
body[data-sport="football"] .tm-apply input[type="text"]{width:100%;box-sizing:border-box;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:12px 14px;color:var(--text-primary);font:inherit;font-size:15px}

/* ---- 50. ИТОГИ ТУРНИРА: пьедестал и таблица ----
   Не чек, а премиальная афиша: тёмно-синий с золотом, три ступени, эмблемы. */
body[data-sport="football"] .rs{position:relative;margin:14px 0;border-radius:18px;overflow:hidden;padding:18px 12px 12px;color:#fff;background:radial-gradient(120% 80% at 50% 0%,#1B2A44 0%,#0F1626 55%,#0B0F18 100%);border:1px solid rgba(255,255,255,.08);box-shadow:0 20px 50px rgba(0,0,0,.5)}
body[data-sport="football"] .rs::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 18% 22%,rgba(255,214,120,.35) 0 1.5px,transparent 2.5px),radial-gradient(circle at 78% 12%,rgba(255,214,120,.3) 0 1px,transparent 2px),radial-gradient(circle at 62% 38%,rgba(255,214,120,.25) 0 1px,transparent 2px),radial-gradient(circle at 30% 60%,rgba(255,214,120,.2) 0 1px,transparent 2px),radial-gradient(circle at 88% 70%,rgba(255,214,120,.25) 0 1.5px,transparent 2.5px),radial-gradient(circle at 10% 85%,rgba(255,214,120,.2) 0 1px,transparent 2px)}
body[data-sport="football"] .rs>*{position:relative}
body[data-sport="football"] .rs-head{text-align:center;margin-bottom:14px}
body[data-sport="football"] .rs-crest{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:50%;background:linear-gradient(160deg,#F6D27A,#B8862B);color:#2A1D05;margin-bottom:8px;box-shadow:0 6px 16px rgba(246,210,122,.35)}
body[data-sport="football"] .rs-title{font-family:var(--display);font-weight:800;font-size:24px;letter-spacing:.02em;text-transform:uppercase;line-height:1;background:linear-gradient(180deg,#FFFFFF,#D0D2DA);-webkit-background-clip:text;background-clip:text;color:transparent}
body[data-sport="football"] .rs-sub{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:#F3CD77;margin-top:6px}
body[data-sport="football"] .rs-sec{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:12px 10px 10px;margin-bottom:10px}
body[data-sport="football"] .rs-sec-t{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#F3CD77;margin:0 4px 14px}
body[data-sport="football"] .rs-podium{display:grid;grid-template-columns:1fr 1.18fr 1fr;gap:8px;align-items:end;padding-top:6px}
body[data-sport="football"] .rs-p{position:relative;text-align:center;border-radius:12px;padding:24px 6px 12px;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.1)}
body[data-sport="football"] .rs-p.is-1{padding-top:26px;border-color:rgba(246,210,122,.55);background:linear-gradient(180deg,rgba(246,210,122,.16),rgba(246,210,122,.03));box-shadow:0 10px 30px rgba(246,210,122,.15)}
body[data-sport="football"] .rs-p.is-2{border-color:rgba(200,205,215,.4)}
body[data-sport="football"] .rs-p.is-3{border-color:rgba(205,127,50,.45)}
body[data-sport="football"] .rs-medal{position:absolute;top:-12px;left:50%;transform:translateX(-50%);width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font:800 13px var(--display);color:#1A1408;background:linear-gradient(160deg,#F6D27A,#C9962F);box-shadow:0 4px 10px rgba(0,0,0,.4)}
body[data-sport="football"] .rs-p.is-2 .rs-medal{background:linear-gradient(160deg,#E6E8EE,#9AA0AD)}
body[data-sport="football"] .rs-p.is-3 .rs-medal{background:linear-gradient(160deg,#E0A066,#9C5A22)}
body[data-sport="football"] .rs-cup{color:#F6D27A;margin-bottom:4px;filter:drop-shadow(0 4px 10px rgba(246,210,122,.5))}
body[data-sport="football"] .rs-emb{width:44px;height:44px;margin:0 auto 8px;border-radius:50%;display:grid;place-items:center;font:700 15px var(--display);font-style:normal;color:#fff;background:rgba(255,255,255,.08);border:2px solid rgba(255,255,255,.18)}
body[data-sport="football"] .rs-p.is-1 .rs-emb{width:54px;height:54px;border-color:#F6D27A;font-size:18px}
body[data-sport="football"] .rs-p b{display:block;font-family:var(--display);font-weight:700;font-size:12.5px;line-height:1.15;text-transform:uppercase;overflow-wrap:anywhere}
body[data-sport="football"] .rs-p.is-1 b{font-size:15px}
body[data-sport="football"] .rs-p small{display:block;margin-top:3px;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:#F3CD77}
body[data-sport="football"] .rs-p.is-2 small{color:#CDD2DC}
body[data-sport="football"] .rs-p.is-3 small{color:#E0A066}
body[data-sport="football"] .rs-p em{display:inline-block;margin-top:7px;font-style:normal;font:700 12px var(--mono,monospace);padding:3px 8px;border-radius:6px;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.12)}
body[data-sport="football"] .rs-table{width:100%;border-collapse:collapse;font-size:12.5px}
body[data-sport="football"] .rs-table th{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.5);font-weight:600;padding:2px 6px 6px;text-align:center;white-space:nowrap}
body[data-sport="football"] .rs-table th:nth-child(2){text-align:left}
body[data-sport="football"] .rs-table td{padding:8px 6px;border-top:1px solid rgba(255,255,255,.07);text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap;color:rgba(255,255,255,.85)}
body[data-sport="football"] .rs-table td:nth-child(2){text-align:left;white-space:normal;width:100%}
body[data-sport="football"] .rs-n{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;background:rgba(255,255,255,.06);font:700 11px var(--display);color:#fff}
body[data-sport="football"] .rs-table tr.is-top .rs-n{background:rgba(246,210,122,.2);color:#F6D27A}
body[data-sport="football"] .rs-team{display:flex;align-items:center;gap:8px;min-width:0}
body[data-sport="football"] .rs-team .rs-emb{width:26px;height:26px;margin:0;font-size:9px;border-width:1px;flex:0 0 auto}
body[data-sport="football"] .rs-team span{font-weight:700;font-size:12px;text-transform:uppercase;font-family:var(--display);line-height:1.1;color:#fff}
body[data-sport="football"] .rs-pts{color:#F3CD77;font-weight:700}
body[data-sport="football"] .rs-link{display:flex;align-items:center;gap:12px;width:100%;margin-top:2px;padding:12px 14px;border-radius:14px;border:1px solid rgba(246,210,122,.4);background:linear-gradient(90deg,rgba(246,210,122,.12),rgba(246,210,122,.03));color:#fff;text-align:left;cursor:pointer;font:inherit}
body[data-sport="football"] .rs-link .ico{width:38px;height:38px;border-radius:10px;background:rgba(246,210,122,.15);display:grid;place-items:center;color:#F6D27A;flex:0 0 auto}
body[data-sport="football"] .rs-link b{display:block;font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.04em;text-transform:uppercase}
body[data-sport="football"] .rs-link small{display:block;font-size:11px;color:rgba(255,255,255,.6);margin-top:2px}
body[data-sport="football"] .rs-link i{margin-left:auto;font-style:normal;color:#F6D27A;font-size:20px;line-height:1}

/* ---- 51. ПАСПОРТ СПОРТСМЕНА v3 ----
   По референсу: большое фото слева, поля с золотыми подписями справа,
   ряд плиток, блок «кем выдан» с печатью, код документа со штрихкодом. */
body[data-sport="football"] .pp3{position:relative;border-radius:18px;overflow:hidden;padding:14px;color:var(--text-primary);background:linear-gradient(160deg,#1C1A17 0%,#121214 45%,#0F0F12 100%);border:1px solid color-mix(in oklab,var(--accent) 45%,transparent);box-shadow:0 0 0 1px rgba(255,255,255,.03) inset,0 24px 50px rgba(0,0,0,.55),0 0 40px color-mix(in oklab,var(--accent) 12%,transparent)}
body[data-sport="football"] .pp3::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.6;background:radial-gradient(120% 60% at 100% 0%,color-mix(in oklab,var(--accent) 18%,transparent),transparent 60%),repeating-linear-gradient(135deg,transparent 0 6px,rgba(255,255,255,.012) 6px 7px)}
body[data-sport="football"] .pp3::after{content:"";position:absolute;right:-70px;top:150px;width:260px;height:260px;border-radius:50%;pointer-events:none;opacity:.07;background:radial-gradient(circle at 35% 30%,#FFFFFF,#777777 55%,#222222 100%)}
body[data-sport="football"] .pp3>*{position:relative;z-index:1}
body[data-sport="football"] .pp3-top{display:flex;justify-content:space-between;align-items:center;font:600 10px var(--mono,monospace);letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}
body[data-sport="football"] .pp3-top b{color:var(--accent);font-size:12px;letter-spacing:.1em}
body[data-sport="football"] .pp3-club{display:flex;align-items:center;gap:10px;margin:12px 0 14px;font-size:13px;color:var(--text-secondary)}
body[data-sport="football"] .pp3-crest{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;font:800 12px var(--display);color:#111;background:linear-gradient(160deg,var(--accent),color-mix(in oklab,var(--accent) 70%,#000));box-shadow:0 4px 12px color-mix(in oklab,var(--accent) 35%,transparent);flex:0 0 auto}
body[data-sport="football"] .pp3-body{display:grid;grid-template-columns:minmax(118px,42%) minmax(0,1fr);gap:16px;align-items:start}
body[data-sport="football"] .pp3-photo{position:relative;aspect-ratio:3/4;border-radius:12px;overflow:hidden;background:radial-gradient(circle at 40% 30%,#6F7D86,#2A3036 70%);display:grid;place-items:center;box-shadow:0 0 0 1px rgba(255,255,255,.15) inset,0 0 0 3px color-mix(in oklab,var(--accent) 35%,transparent)}
body[data-sport="football"] .pp3-photo>img{width:100%;height:100%;object-fit:cover;display:block}
body[data-sport="football"] .pp3-photo .ph-avatar-text{font-family:var(--display);font-weight:700;font-size:36px;color:#fff}
body[data-sport="football"] .pp3-cam{position:absolute;left:10px;bottom:10px;width:40px;height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.2);background:rgba(20,20,24,.72);backdrop-filter:blur(6px);color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}
body[data-sport="football"] .pp3-fields{display:flex;flex-direction:column;gap:11px;min-width:0}
body[data-sport="football"] .pp3-f small{display:block;font:600 9.5px var(--ui);letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);margin-bottom:3px}
body[data-sport="football"] .pp3-f b{display:block;font-family:var(--display);font-weight:700;font-size:20px;line-height:1.05;letter-spacing:.01em;overflow-wrap:anywhere;color:var(--text-primary)}
body[data-sport="football"] .pp3-f b.sm{font-size:15px}
body[data-sport="football"] .pp3-f b .ph-name{font:inherit;letter-spacing:inherit;margin:0;text-shadow:none;display:inline}
body[data-sport="football"] .pp3-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
body[data-sport="football"] .pp3-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px;padding:12px 10px;border-radius:14px;background:rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.07)}
body[data-sport="football"] .pp3-tile{display:flex;align-items:center;gap:8px;min-width:0}
body[data-sport="football"] .pp3-tile i{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--accent);background:color-mix(in oklab,var(--accent) 14%,transparent);flex:0 0 auto;font-style:normal}
body[data-sport="football"] .pp3-tile small{display:block;font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}
body[data-sport="football"] .pp3-tile b{display:block;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body[data-sport="football"] .pp3-issued{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:10px;padding:12px;border-radius:14px;background:rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.07)}
body[data-sport="football"] .pp3-issued small{display:block;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);margin-bottom:3px}
body[data-sport="football"] .pp3-issued b{display:block;font-size:13px;font-weight:600;line-height:1.3}
body[data-sport="football"] .pp3-issued .pp3-more{margin-top:9px}
body[data-sport="football"] .pp3-role{color:var(--accent)!important;font-family:var(--mono,monospace);letter-spacing:.1em;font-size:12px!important;display:inline-flex!important;align-items:center;gap:5px}
body[data-sport="football"] .pp3-seal{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;text-align:center;position:relative;transform:rotate(-8deg);border:2px solid color-mix(in oklab,var(--accent) 70%,transparent);box-shadow:0 0 0 4px rgba(0,0,0,.25);color:var(--accent);opacity:.9;background:radial-gradient(circle,color-mix(in oklab,var(--accent) 12%,transparent),transparent 70%)}
body[data-sport="football"] .pp3-seal::before{content:"";position:absolute;inset:7px;border-radius:50%;border:1px dashed color-mix(in oklab,var(--accent) 55%,transparent)}
body[data-sport="football"] .pp3-seal span{display:block;font:800 15px var(--display);line-height:1}
body[data-sport="football"] .pp3-seal em{display:block;font:600 8px var(--mono,monospace);letter-spacing:.2em;margin-top:3px;font-style:normal}
body[data-sport="football"] .pp3-code{margin-top:10px;padding:12px;border-radius:14px;background:rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.07)}
body[data-sport="football"] .pp3-code-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
body[data-sport="football"] .pp3-code-h small{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap}
body[data-sport="football"] .pp3-bar{flex:1;max-width:58%;height:18px;opacity:.8;background:repeating-linear-gradient(90deg,#E8E8EC 0 1px,transparent 1px 3px,#E8E8EC 3px 5px,transparent 5px 6px,#E8E8EC 6px 7px,transparent 7px 10px,#E8E8EC 10px 12px,transparent 12px 13px)}
body[data-sport="football"] .pp3-mrz{font:600 12px var(--mono,ui-monospace,monospace);letter-spacing:.14em;line-height:1.7;color:var(--text-secondary);white-space:nowrap;overflow:hidden}
@media (max-width:360px){ body[data-sport="football"] .pp3-f b{font-size:17px} body[data-sport="football"] .pp3-tiles{grid-template-columns:1fr 1fr} body[data-sport="football"] .pp3-body{gap:12px} }
body[data-sport="football"] .pp3-tile>span{min-width:0;display:block}

/* доводка после скриншотов: дата в плитке не влезала, таблица итогов вылезала вправо */
body[data-sport="football"] .pp3-tiles{grid-template-columns:1.25fr .75fr 1fr;gap:6px;padding:12px 8px}
body[data-sport="football"] .pp3-tile{gap:6px}
body[data-sport="football"] .pp3-tile i{width:24px;height:24px}
body[data-sport="football"] .pp3-tile b{font-size:12px}
body[data-sport="football"] .rs-sec.is-tbl{padding:12px 6px 8px}
body[data-sport="football"] .rs-sec.is-tbl .rs-sec-t{margin-left:6px}
body[data-sport="football"] .rs-table{font-size:12px}
body[data-sport="football"] .rs-table th{padding:2px 3px 6px;font-size:9px;letter-spacing:.08em}
body[data-sport="football"] .rs-table td{padding:8px 3px}
body[data-sport="football"] .rs-table td:first-child{padding-left:4px}
body[data-sport="football"] .rs-table .rs-team span{font-size:11.5px}
body[data-sport="football"] .rs-table .rs-team .rs-emb{width:24px;height:24px}


/* ---- 52. ПАСПОРТ v4 — три зоны, без «карточки в карточке» ----
   Егор: убрать возраст, MRZ и штрихкод (имитация загранпаспорта без пользы),
   мяч на фоне почти растворить, роль и телеграм понизить, низ — завершение
   документа с печатью. Внутренних рамок нет: зоны делят тонкие линии. */
body[data-sport="football"] .pp4{position:relative;border-radius:18px;overflow:hidden;padding:16px 16px 18px;margin:0 0 6px;color:var(--text-primary);
    background:linear-gradient(160deg,#1B1917 0%,#121214 46%,#0F0F12 100%);border:1px solid color-mix(in oklab,var(--accent) 40%,transparent);
    box-shadow:0 0 0 1px rgba(255,255,255,.03) inset,0 24px 50px rgba(0,0,0,.55)}
body[data-sport="football"] .pp4::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 55% at 100% 0%,color-mix(in oklab,var(--accent) 12%,transparent),transparent 62%)}
body[data-sport="football"] .pp4::after{content:"";position:absolute;right:-90px;bottom:-70px;width:280px;height:280px;border-radius:50%;pointer-events:none;
    opacity:.05;background:radial-gradient(circle at 38% 32%,#FFFFFF,#8A8A8A 55%,#1A1A1A 100%)}
body[data-sport="football"] .pp4>*{position:relative;z-index:1}
/* шапка документа */
body[data-sport="football"] .pp4-head{display:flex;align-items:center;gap:12px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.09)}
body[data-sport="football"] .pp4-crest{width:44px;height:44px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;font:800 15px var(--display);color:#14110A;
    background:linear-gradient(160deg,var(--accent),color-mix(in oklab,var(--accent) 65%,#000));box-shadow:0 6px 16px color-mix(in oklab,var(--accent) 30%,transparent)}
body[data-sport="football"] .pp4-org{min-width:0;flex:1;line-height:1.15}
body[data-sport="football"] .pp4-org small{display:block;font:600 8.5px var(--ui);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap}
body[data-sport="football"] .pp4-org b{display:block;font-family:var(--display);font-weight:700;font-size:15px;letter-spacing:.06em;text-transform:uppercase;margin-top:3px}
body[data-sport="football"] .pp4-no{text-align:right;flex:0 0 auto}
body[data-sport="football"] .pp4-no small{display:block;font:600 8.5px var(--ui);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted)}
body[data-sport="football"] .pp4-no b{display:block;font:700 14px var(--mono,ui-monospace,monospace);letter-spacing:.06em;color:var(--accent);margin-top:3px}
/* зона 01 — личные данные */
body[data-sport="football"] .pp4-id{display:grid;grid-template-columns:minmax(110px,34%) minmax(0,1fr) auto;gap:14px;align-items:center;padding:16px 0}
/* медаль уровня рядом с именем — главный знак спортсмена */
body[data-sport="football"] .pp4-medal{flex:0 0 auto;display:grid;place-items:center;filter:drop-shadow(0 6px 16px rgba(0,0,0,.55))}
body[data-sport="football"] .pp4-medal img,body[data-sport="football"] .pp4-medal svg{display:block;height:96px;width:auto}
body[data-sport="football"] .pp4-medal .lv-text{white-space:nowrap}
body[data-sport="football"] .pp4-stats.is-three{grid-template-columns:repeat(3,minmax(0,1fr))}
body[data-sport="football"] .pp4-stats.is-three>div+div{border-left:1px solid rgba(255,255,255,.08);padding-left:12px}
body[data-sport="football"] .pp4-stats.is-three b{font-size:20px}
body[data-sport="football"] .pp4-name{min-width:0;overflow:hidden}
@media (max-width:430px){
    body[data-sport="football"] .pp4-id{grid-template-columns:minmax(88px,30%) minmax(0,1fr) auto;gap:9px}
    body[data-sport="football"] .pp4-medal img,body[data-sport="football"] .pp4-medal svg{height:66px}
    body[data-sport="football"] .pp4-stats.is-three b{font-size:17px}
    body[data-sport="football"] .pp4-stats.is-three small{font-size:8px;letter-spacing:.1em}
}
body[data-sport="football"] .pp4-photo{position:relative;aspect-ratio:3/4;border-radius:12px;overflow:hidden;background:radial-gradient(circle at 40% 30%,#6F7D86,#2A3036 70%);display:grid;place-items:center;
    box-shadow:0 0 0 1px rgba(255,255,255,.14) inset,0 0 0 3px color-mix(in oklab,var(--accent) 30%,transparent),0 12px 28px rgba(0,0,0,.45)}
body[data-sport="football"] .pp4-photo>img{width:100%;height:100%;object-fit:cover;display:block}
body[data-sport="football"] .pp4-photo .ph-avatar-text{font-family:var(--display);font-weight:700;font-size:38px;color:#fff}
body[data-sport="football"] .pp4-cam{position:absolute;left:9px;bottom:9px;width:38px;height:38px;border-radius:11px;border:1px solid rgba(255,255,255,.2);background:rgba(18,18,22,.7);backdrop-filter:blur(6px);color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}
body[data-sport="football"] .pp4-name{min-width:0}
body[data-sport="football"] .pp4-name small{display:block;font:600 9px var(--ui);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px}
body[data-sport="football"] .pp4-ln{display:block;font-family:var(--display);font-weight:700;font-size:clamp(17px,5.6vw,30px);line-height:1.08;letter-spacing:-.01em;text-transform:uppercase;overflow-wrap:normal;word-break:keep-all;hyphens:none;white-space:nowrap}
body[data-sport="football"] .pp4-fn{display:block;font-family:var(--display);font-weight:700;font-size:clamp(17px,5vw,24px);line-height:1.18;text-transform:uppercase;color:var(--text-secondary);overflow-wrap:break-word;margin-top:4px;padding-bottom:2px}
body[data-sport="football"] .pp4-ln .ph-name{font:inherit;letter-spacing:inherit;margin:0;text-shadow:none;display:inline}
body[data-sport="football"] .pp4-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
body[data-sport="football"] .pp4-tag{font:700 10px var(--display);letter-spacing:.12em;text-transform:uppercase;padding:5px 9px;border-radius:7px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:var(--text-secondary)}
body[data-sport="football"] .pp4-tag.is-lv{color:var(--accent);border-color:color-mix(in oklab,var(--accent) 45%,transparent);background:color-mix(in oklab,var(--accent) 10%,transparent)}
/* зона 02 — статус спортсмена */
body[data-sport="football"] .pp4-stats{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px 0;border-top:1px solid rgba(255,255,255,.09);border-bottom:1px solid rgba(255,255,255,.09)}
body[data-sport="football"] .pp4-stats>div+div{border-left:1px solid rgba(255,255,255,.08);padding-left:14px}
body[data-sport="football"] .pp4-stats small{display:block;font:600 9px var(--ui);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin-bottom:5px}
body[data-sport="football"] .pp4-stats b{display:block;font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:.01em;font-variant-numeric:tabular-nums}
/* зона 03 — клуб и печать */
body[data-sport="football"] .pp4-club{display:grid;grid-template-columns:minmax(0,1fr) 96px;gap:12px;align-items:center;padding-top:16px}
body[data-sport="football"] .pp4-club small{display:block;font:600 9px var(--ui);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px}
body[data-sport="football"] .pp4-club b{display:block;font-size:14px;font-weight:600;line-height:1.35}
body[data-sport="football"] .pp4-sub{margin-top:11px;display:flex;flex-wrap:wrap;gap:16px}
body[data-sport="football"] .pp4-sub small{margin-bottom:2px}
body[data-sport="football"] .pp4-sub b{font-size:12px;font-weight:600;color:var(--text-secondary)}
body[data-sport="football"] .pp4-sub b.is-role{color:var(--accent);display:inline-flex;align-items:center;gap:5px;font-family:var(--mono,monospace);letter-spacing:.08em}
body[data-sport="football"] .pp4-seal{position:relative;width:92px;height:92px;border-radius:50%;justify-self:end;transform:rotate(-9deg);display:grid;place-items:center;text-align:center;
    color:var(--accent);opacity:.88;border:2px solid color-mix(in oklab,var(--accent) 62%,transparent);background:radial-gradient(circle,color-mix(in oklab,var(--accent) 10%,transparent),transparent 72%)}
body[data-sport="football"] .pp4-seal::before{content:"";position:absolute;inset:6px;border-radius:50%;border:1px solid color-mix(in oklab,var(--accent) 40%,transparent)}
body[data-sport="football"] .pp4-seal::after{content:"";position:absolute;inset:10px;border-radius:50%;border:1px dashed color-mix(in oklab,var(--accent) 45%,transparent)}
body[data-sport="football"] .pp4-seal i{position:absolute;left:50%;top:50%;width:3px;height:3px;margin:-1.5px;border-radius:50%;background:currentColor;opacity:.75}
body[data-sport="football"] .pp4-seal i:nth-child(1){transform:translateY(-32px)}
body[data-sport="football"] .pp4-seal i:nth-child(2){transform:translateY(32px)}
body[data-sport="football"] .pp4-seal i:nth-child(3){transform:translateX(-32px)}
body[data-sport="football"] .pp4-seal i:nth-child(4){transform:translateX(32px)}
body[data-sport="football"] .pp4-seal span{display:block;position:relative;z-index:1}
body[data-sport="football"] .pp4-seal span b{display:block;font:800 17px var(--display);line-height:1;letter-spacing:.02em}
body[data-sport="football"] .pp4-seal span em{display:block;font:600 7.5px var(--mono,monospace);letter-spacing:.16em;font-style:normal;margin-top:3px;opacity:.9}
/* низ — завершение документа */
body[data-sport="football"] .pp4-foot{margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,.09);display:flex;justify-content:space-between;align-items:baseline;gap:10px;
    font:600 9.5px var(--ui);letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}
body[data-sport="football"] .pp4-foot span:last-child{font-family:var(--mono,monospace);letter-spacing:.08em;color:var(--text-secondary);white-space:nowrap}
@media (max-width:360px){
    body[data-sport="football"] .pp4-ln{font-size:25px}
    body[data-sport="football"] .pp4-fn{font-size:20px}
    body[data-sport="football"] .pp4-club{grid-template-columns:minmax(0,1fr) 78px}
    body[data-sport="football"] .pp4-seal{width:76px;height:76px}
    body[data-sport="football"] .pp4-seal i:nth-child(1){transform:translateY(-26px)}
    body[data-sport="football"] .pp4-seal i:nth-child(2){transform:translateY(26px)}
    body[data-sport="football"] .pp4-seal i:nth-child(3){transform:translateX(-26px)}
    body[data-sport="football"] .pp4-seal i:nth-child(4){transform:translateX(26px)}
}

/* ---- 53. ИТОГИ ТУРНИРА v2 ----
   Егор: чемпиона путали с первым местом группы — одинаковые золотые «1».
   Теперь чемпион — отдельная крупная карточка, призёры мельче, а таблица
   группы идёт под разделителем с рангами 01/02 и без золота на номерах. */
body[data-sport="football"] .rs-h{text-align:center;margin-bottom:14px}
body[data-sport="football"] .rs-h b{display:block;font-family:var(--display);font-weight:800;font-size:17px;letter-spacing:.14em;text-transform:uppercase;color:#fff}
body[data-sport="football"] .rs-h small{display:block;margin-top:5px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#F3CD77}
body[data-sport="football"] .rs-band{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#F3CD77}
body[data-sport="football"] .rs-band::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(246,210,122,.4),transparent)}
body[data-sport="football"] .rs-band em{font-style:normal;color:rgba(255,255,255,.5);letter-spacing:.1em}
body[data-sport="football"] .rs-champ{display:flex;flex-direction:column;align-items:center;text-align:center;padding:18px 14px 16px;border-radius:16px;
    background:linear-gradient(180deg,rgba(246,210,122,.18),rgba(246,210,122,.03));border:1px solid rgba(246,210,122,.5);box-shadow:0 12px 34px rgba(246,210,122,.14)}
body[data-sport="football"] .rs-champ .rs-cup{color:#F6D27A;margin-bottom:6px;filter:drop-shadow(0 4px 12px rgba(246,210,122,.55))}
body[data-sport="football"] .rs-champ .rs-emb{width:62px;height:62px;margin:2px auto 10px;border-color:#F6D27A}
body[data-sport="football"] .rs-champ b{display:block;font-family:var(--display);font-weight:800;font-size:22px;line-height:1.05;text-transform:uppercase;overflow-wrap:anywhere;color:#fff}
body[data-sport="football"] .rs-champ small{display:block;margin-top:5px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#F3CD77}
body[data-sport="football"] .rs-score{margin-top:10px;font:800 24px var(--display);letter-spacing:.06em;color:#fff;padding:5px 16px;border-radius:10px;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.12)}
body[data-sport="football"] .rs-final{margin-top:9px;font-size:11px;color:rgba(255,255,255,.6)}
body[data-sport="football"] .rs-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
body[data-sport="football"] .rs-side{display:flex;align-items:center;gap:9px;padding:11px 10px;border-radius:12px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09);min-width:0}
body[data-sport="football"] .rs-side.is-2{border-color:rgba(205,210,220,.35)}
body[data-sport="football"] .rs-side.is-3{border-color:rgba(205,127,50,.4)}
body[data-sport="football"] .rs-side .rs-emb{width:32px;height:32px;margin:0;font-size:11px;flex:0 0 auto}
body[data-sport="football"] .rs-side div{min-width:0}
body[data-sport="football"] .rs-side small{display:block;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55)}
body[data-sport="football"] .rs-side.is-2 small{color:#CDD2DC}
body[data-sport="football"] .rs-side.is-3 small{color:#E0A066}
body[data-sport="football"] .rs-side b{display:block;font-family:var(--display);font-weight:700;font-size:12.5px;line-height:1.1;text-transform:uppercase;overflow-wrap:anywhere;margin-top:2px;color:#fff}
body[data-sport="football"] .rs-side em{display:block;font-style:normal;font:600 10px var(--mono,monospace);color:rgba(255,255,255,.55);margin-top:3px}
body[data-sport="football"] .rs-split{height:1px;margin:16px 0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent)}
body[data-sport="football"] .rs-list{display:flex;flex-direction:column}
body[data-sport="football"] .rs-r{display:grid;grid-template-columns:26px auto minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:10px 2px;border-top:1px solid rgba(255,255,255,.07)}
body[data-sport="football"] .rs-r:first-child{border-top:0}
body[data-sport="football"] .rs-rank{font:700 12px var(--mono,monospace);color:rgba(255,255,255,.45);font-variant-numeric:tabular-nums}
body[data-sport="football"] .rs-r.is-lead .rs-rank{color:rgba(255,255,255,.85)}
body[data-sport="football"] .rs-r .rs-emb{width:28px;height:28px;margin:0;font-size:10px;border-width:1px}
body[data-sport="football"] .rs-r-nm{min-width:0}
body[data-sport="football"] .rs-r-nm b{display:block;font-family:var(--display);font-weight:700;font-size:12.5px;line-height:1.15;text-transform:uppercase;color:#fff;overflow-wrap:anywhere}
body[data-sport="football"] .rs-r-nm small{display:block;font-size:10.5px;color:rgba(255,255,255,.5);margin-top:2px}
body[data-sport="football"] .rs-r-g{font:600 12px var(--mono,monospace);color:rgba(255,255,255,.6);font-variant-numeric:tabular-nums;text-align:right;min-width:18px}
body[data-sport="football"] .rs-r-p{font:800 17px var(--display);color:#F3CD77;font-variant-numeric:tabular-nums;text-align:right;min-width:26px}
body[data-sport="football"] .rs-legend{display:flex;justify-content:flex-end;gap:14px;margin-top:8px;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.4)}

/* ---- 54. ДЕСКТОП: предметы и обложки на широком экране ----
   Паспорт растягивался на 1196 px (фото в полметра), а обложка события
   при ширине сайта резала игроку голову. */
@media (min-width: 760px){
    body[data-sport="football"] .pp2,
    body[data-sport="football"] .pp3,
    body[data-sport="football"] .pp4{max-width:460px}
    body[data-sport="football"] .rs{max-width:560px}
    body[data-sport="football"] .tm{max-width:640px}
    body[data-sport="football"] .site-main .fx-card{max-width:840px;margin-left:auto;margin-right:auto}
    body[data-sport="football"] .site-main .fx-cover{height:auto;aspect-ratio:16/9;max-height:430px;background-position:center 22%}
    body[data-sport="football"] .site-main .detail-hero-placeholder{height:auto!important;aspect-ratio:16/9;max-height:430px}
}
/* Автозаполнение Chrome красит поле в белый через UA-стиль с !important —
   перебить можно только тенью поверх фона; дублируем стандартным селектором. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active,
input:autofill,
input:autofill:hover,
input:autofill:focus{
    -webkit-text-fill-color:#F2F1EE !important;
    caret-color:#F2F1EE;
    -webkit-box-shadow:0 0 0 1000px #14141A inset !important;
    box-shadow:0 0 0 1000px #14141A inset !important;
    background-color:#14141A !important;
    background-image:none !important;
    transition:background-color 99999s ease-in-out 0s !important}


/* ---- 55. ПОЧИНКИ ПОСЛЕ РАЗБОРА НА КОМПЕ ----
   Сайт: контент шёл во всю ширину 1196 px — карточки, афиши и таблицы
   растягивались. Колонка ограничена; список турниров стал сеткой афиш. */
@media (min-width: 900px){
    body[data-sport="football"] .site-main .page:not(#pg-login){max-width:1000px;margin-left:auto;margin-right:auto}
    body[data-sport="football"] .site-main #tournament-list-content{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;align-items:start}
    body[data-sport="football"] .site-main #tournament-list-content>*:not(.tc){grid-column:1/-1}
    body[data-sport="football"] .site-main #tournament-list-content .tc{margin:0;min-height:196px}
    body[data-sport="football"] .site-main .fx-card{max-width:none}
    body[data-sport="football"] .site-main .fx-cover{max-height:380px}
}
/* эмблему команды можно рассмотреть по тапу */
body[data-sport="football"] .tm-emb.is-tap,body[data-sport="football"] .rs-emb.is-tap{cursor:zoom-in}
body[data-sport="football"] .tm-lb{position:fixed;inset:0;z-index:9999;background:rgba(6,6,8,.88);display:grid;place-items:center;padding:24px;cursor:zoom-out}
body[data-sport="football"] .tm-lb img{max-width:min(420px,86vw);max-height:70vh;border-radius:18px;box-shadow:0 30px 70px rgba(0,0,0,.6)}
/* фирменный логотип в шапке паспорта вместо буквенного герба */
body[data-sport="football"] .pp4-crest{width:auto;height:34px;padding:0;border-radius:0;background:none;box-shadow:none;display:flex;align-items:center}
body[data-sport="football"] .pp4-crest img{height:34px;width:auto;display:block}


/* ---- 56. ПЕЧАТЬ SVG И ВЫВОДЫ КВИТАНЦИЯМИ ---- */
body[data-sport="football"] .pp4-seal{width:92px;height:92px;border:0;background:none;transform:rotate(-8deg);opacity:.85;color:var(--accent);display:block;justify-self:end}
body[data-sport="football"] .pp4-seal::before,body[data-sport="football"] .pp4-seal::after{content:none}
body[data-sport="football"] .pp4-seal svg{display:block;width:100%;height:100%}
body[data-sport="football"] .wd-active{padding:14px;border-radius:14px;margin-bottom:14px;background:linear-gradient(160deg,rgba(245,158,11,.12),rgba(245,158,11,.03));border:1px solid rgba(245,158,11,.32)}
body[data-sport="football"] .wd-active-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
body[data-sport="football"] .wd-lbl{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#F0C06A}
body[data-sport="football"] .wd-active-top b{font-family:var(--display);font-weight:700;font-size:21px;color:#F0C06A;white-space:nowrap}
body[data-sport="football"] .wd-active-to{margin-top:6px;font-size:13px;color:var(--text-primary)}
body[data-sport="football"] .wd-active-note{margin-top:4px;font-size:11.5px;color:var(--text-secondary)}


/* ---- 57. НАСТОЯЩИЙ ДЕСКТОПНЫЙ САЙТ ----
   Егор: «узко для ПК, все страницы просто ужас». Колонка 900 px — это
   телефон по центру. На широком экране страницы становятся двухколоночными:
   слева главное (событие, паспорт, карта депозита), справа — списки и
   действия; ленты и афиши раскладываются сеткой. */
@media (min-width: 1000px){
    body[data-sport="football"] .site-main .page:not(#pg-login){max-width:1320px;margin-left:auto;margin-right:auto}

    /* Главная: приветствие и счётчики во всю ширину, событие слева, действия справа */
    body[data-sport="football"] .site-main #pg-menu.active{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);column-gap:32px;align-items:start}
    body[data-sport="football"] .site-main #pg-menu>*{grid-column:1}
    body[data-sport="football"] .site-main #pg-menu>.dk-side,
    body[data-sport="football"] .site-main #profile-content>.dk-side,
    body[data-sport="football"] .site-main #wallet-content>.dk-side{grid-column:2;grid-row:1/span 999;display:flex;flex-direction:column;gap:0;min-width:0;align-self:start}
    body[data-sport="football"] .site-main .dk-side>.section-title:first-child{margin-top:0}
    body[data-sport="football"] .site-main #menu-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
    body[data-sport="football"] .site-main #pg-menu>*:nth-child(n+5) .card.row-tap{margin-bottom:8px}

    /* Лента событий и записи — в две колонки */
    body[data-sport="football"] .site-main #dates-list,
    body[data-sport="football"] .site-main #my-events-list,
    body[data-sport="football"] .site-main #events-date-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
    body[data-sport="football"] .site-main #dates-list>*,
    body[data-sport="football"] .site-main #my-events-list>*{margin-bottom:0}
    body[data-sport="football"] .site-main #dates-list .fx-daygroup.is-open{grid-column:1/-1}

    /* Турниры — сетка афиш в три колонки */
    body[data-sport="football"] .site-main #tournament-list-content{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}

    /* Профиль: паспорт слева и залипает, справа уровень, статистика и настройки */
    body[data-sport="football"] .site-main #profile-content{display:grid;grid-template-columns:minmax(0,460px) minmax(0,1fr);column-gap:36px;align-items:start}
    body[data-sport="football"] .site-main #profile-content>*{grid-column:1}
    body[data-sport="football"] .site-main #profile-content>.pp4{grid-column:1;position:sticky;top:92px}
    body[data-sport="football"] .site-main #profile-content>.section-title:first-of-type{margin-top:0}

    /* Депозит: карта и вывод слева, квитанции и лента справа */
    body[data-sport="football"] .site-main #wallet-content{display:grid;grid-template-columns:minmax(0,440px) minmax(0,1fr);column-gap:36px;align-items:start}
    body[data-sport="football"] .site-main #wallet-content>*{grid-column:1}
    body[data-sport="football"] .site-main .dk-side .sc-tape{max-width:none}
    body[data-sport="football"] .site-main .dk-side>.sc-tape-more{margin-top:8px}
    body[data-sport="football"] .sc-receipts{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;align-items:start;max-width:none}

    /* Турнир: шапка во всю ширину, итоги слева, разделы залипают справа */
    body[data-sport="football"] .site-main #tournament-detail-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);column-gap:32px;align-items:start}
    body[data-sport="football"] .site-main #tournament-detail-content>*{grid-column:1}
    body[data-sport="football"] .site-main #tournament-detail-content>.fx-hero,
    body[data-sport="football"] .site-main #tournament-detail-content>.fx-detail{grid-column:1/-1}
    body[data-sport="football"] .site-main #tournament-detail-content>.trn-nav{grid-column:2;position:sticky;top:92px;margin-top:0}
    body[data-sport="football"] .site-main #tournament-detail-content>.rs{max-width:none}

    /* Расписание и команды — по две колонки */
    body[data-sport="football"] .site-main #schedule-list,
    body[data-sport="football"] .site-main #round-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
    body[data-sport="football"] .site-main #schedule-list>*{margin-bottom:0}
    body[data-sport="football"] .site-main #schedule-list>*:not(.rnd){grid-column:1/-1}
    body[data-sport="football"] .site-main #tournament-teams-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:28px;align-items:start}
    body[data-sport="football"] .site-main #tournament-teams-content>#tsu-my{grid-column:1}
    body[data-sport="football"] .site-main #tournament-teams-content>#tsu-teams{grid-column:2}
    body[data-sport="football"] .site-main #tournament-teams-content .tm{max-width:none}
    body[data-sport="football"] .site-main #tsu-teams .tm-sec{margin-top:0}

    /* Предметы на широком экране: паспорт и итоги держат размер, остальное тянется */
    body[data-sport="football"] .site-main .rs{max-width:640px}
    body[data-sport="football"] .site-main .sc-stage,
    body[data-sport="football"] .site-main .sc-envelope,
    body[data-sport="football"] .site-main .sc-poster,
    body[data-sport="football"] .site-main .sc-medal{max-width:440px}
    body[data-sport="football"] .site-main .fx-cover{max-height:340px}
}
@media (min-width: 1400px){
    body[data-sport="football"] .site-main #dates-list,
    body[data-sport="football"] .site-main #my-events-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* ---- 58. САЙТ НА КОМПЕ: МЕНЮ СЛЕВА ----
   Верхняя навигация из четырёх пунктов на широком экране выглядела как
   растянутый телефон. Меню переезжает в постоянную колонку слева, шапка
   прячется; в Telegram-приложении всё остаётся как было. */
body[data-sport="football"] .dk-nav{display:none}
@media (min-width: 1000px){
    body[data-sport="football"].dk-shell .site-header{display:none}
    body[data-sport="football"].dk-shell .dk-nav{
        display:flex;flex-direction:column;gap:20px;position:fixed;left:0;top:0;bottom:0;width:262px;z-index:40;
        padding:22px 16px;border-right:1px solid var(--border,rgba(255,255,255,.08));
        background:linear-gradient(180deg,#101014,var(--bg-primary,#0B0B0D));overflow-y:auto}
    body[data-sport="football"].dk-shell{padding-left:262px}
    body[data-sport="football"].dk-shell .site-main{margin-left:0;padding-top:26px;max-width:none;width:100%}
    body[data-sport="football"].dk-shell .site-main .page:not(#pg-login){max-width:min(1240px,100%)}
    body[data-sport="football"].dk-shell .dk-brand{display:flex;align-items:center;cursor:pointer;padding:0 4px}
    body[data-sport="football"].dk-shell .dk-brand img{height:32px;width:auto;display:block}
    body[data-sport="football"].dk-shell .dk-sport{padding:11px 13px;border:1px solid var(--border,rgba(255,255,255,.08));border-radius:13px;background:var(--surface,#141418)}
    body[data-sport="football"].dk-shell .dk-sport small{display:block;font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted)}
    body[data-sport="football"].dk-shell .dk-sport b{font-size:15px;font-weight:600}
    body[data-sport="football"].dk-shell .dk-links{display:flex;flex-direction:column;gap:2px}
    body[data-sport="football"].dk-shell .dk-links a{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:11px;
        color:var(--text-secondary);font-weight:500;font-size:14.5px;cursor:pointer;transition:background .15s,color .15s}
    body[data-sport="football"].dk-shell .dk-links a svg{width:19px;height:19px;flex:0 0 auto;opacity:.85}
    body[data-sport="football"].dk-shell .dk-links a span{flex:1;min-width:0}
    body[data-sport="football"].dk-shell .dk-links a:hover{background:rgba(255,255,255,.05);color:var(--text-primary)}
    body[data-sport="football"].dk-shell .dk-links a.on{background:color-mix(in oklab,var(--accent) 15%,transparent);color:var(--accent)}
    body[data-sport="football"].dk-shell .dk-tag{font:700 11px var(--ui);color:var(--accent)}
    body[data-sport="football"].dk-shell .dk-sep{height:1px;background:var(--border,rgba(255,255,255,.08));margin:10px 4px}
    body[data-sport="football"].dk-shell .dk-foot{margin-top:auto}
    body[data-sport="football"].dk-shell .dk-me{display:flex;align-items:center;gap:11px;padding:11px;border-radius:13px;cursor:pointer;
        border:1px solid var(--border,rgba(255,255,255,.08));background:var(--surface,#141418)}
    body[data-sport="football"].dk-shell .dk-av{width:38px;height:38px;border-radius:50%;flex:0 0 auto;overflow:hidden;display:grid;place-items:center;
        font:700 13px var(--display);background:var(--surface-2,#1B1B21);color:var(--text-secondary)}
    body[data-sport="football"].dk-shell .dk-av img{width:100%;height:100%;object-fit:cover}
    body[data-sport="football"].dk-shell .dk-nm{min-width:0}
    body[data-sport="football"].dk-shell .dk-nm b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    body[data-sport="football"].dk-shell .dk-nm small{display:block;font-size:11.5px;color:var(--text-muted)}
    body[data-sport="football"].dk-shell .dk-login{width:100%;padding:12px;border-radius:12px;border:0;cursor:pointer;
        background:var(--accent);color:var(--accent-ink,#17130A);font:600 14px var(--ui)}
    /* профиль чужого игрока — паспорт по центру колонки */
    body[data-sport="football"] .pl-contacts{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
    body[data-sport="football"] .pl-actions{margin-top:12px}
}
/* контакты и кнопки в чужом профиле — общие для телефона и сайта */
body[data-sport="football"] .pl-contacts{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
body[data-sport="football"] .pl-link{font-size:13px;color:var(--accent);text-decoration:none;padding:8px 12px;border-radius:10px;
    border:1px solid color-mix(in oklab,var(--accent) 35%,transparent);background:color-mix(in oklab,var(--accent) 8%,transparent)}
body[data-sport="football"] .pl-actions{margin-top:14px}
body[data-sport="football"] .pl-actions .btn{width:100%}
@media (min-width:760px){ body[data-sport="football"] #player-view .pp4{max-width:460px} body[data-sport="football"] .pl-actions .btn{width:auto;min-width:240px} }

/* эмблема уровня в зоне статуса паспорта */
body[data-sport="football"] .pp4-stats.has-lvl{grid-template-columns:1fr 1fr auto}
body[data-sport="football"] .pp4-lvl{border-left:1px solid rgba(255,255,255,.08);padding-left:14px;text-align:center}
body[data-sport="football"] .pp4-lvl span{display:flex;flex-direction:column;align-items:center;gap:3px}
body[data-sport="football"] .pp4-lvl img{display:block;filter:drop-shadow(0 3px 8px rgba(0,0,0,.5))}
body[data-sport="football"] .pp4-lvl b{font:700 12px var(--display);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
@media (max-width:360px){ body[data-sport="football"] .pp4-lvl{padding-left:10px} body[data-sport="football"] .pp4-lvl img{height:36px!important} }
body[data-sport="football"] .pp4-a{color:var(--accent);text-decoration:none;border-bottom:1px dotted color-mix(in oklab,var(--accent) 45%,transparent)}
body[data-sport="football"] .pp4-sub{gap:14px 18px}
@media (min-width:760px){ body[data-sport="football"] .pp4-ln{font-size:27px} body[data-sport="football"] .pp4-fn{font-size:22px} }

/* ---- 59. ТУРНИРНАЯ ТАБЛИЦА НА ТЕЛЕФОНЕ ----
   После эмблем команд строка перестала помещаться: очки уезжали за экран.
   Фиксируем раскладку, название переносим, эмблему уменьшаем. */
body[data-sport="football"] .standings-table{width:100%;table-layout:fixed}
/* ниже — компактный вид для телефона; десктопные размеры задаются в §62 */
body[data-sport="football"] .standings-table th,
body[data-sport="football"] .standings-table td{padding:9px 4px;font-size:12.5px}
body[data-sport="football"] .standings-table th:first-child,
body[data-sport="football"] .standings-table td:first-child{width:30px;text-align:center;padding-left:6px}
body[data-sport="football"] .standings-table th:not(:first-child):not(:nth-child(2)),
body[data-sport="football"] .standings-table td:not(:first-child):not(:nth-child(2)){width:30px;text-align:center}
/* колонка сетов/мячей шире — «17:16» не влезало и налезало на очки */
body[data-sport="football"] .standings-table th:not(:first-child):nth-last-child(2),
body[data-sport="football"] .standings-table td:not(:first-child):nth-last-child(2){width:54px!important}
body[data-sport="football"] .standings-table thead th{font-size:9.5px;letter-spacing:.04em;white-space:nowrap;padding-left:2px;padding-right:2px}
body[data-sport="football"] .standings-table th:last-child,
body[data-sport="football"] .standings-table td:last-child{width:36px;padding-right:8px}
body[data-sport="football"] .standings-table td.team-name{width:auto;white-space:normal}
body[data-sport="football"] .st-team{gap:7px}
body[data-sport="football"] .st-team span{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.15;font-size:12.5px;overflow-wrap:anywhere}
body[data-sport="football"] .st-emb{width:22px;height:22px;font-size:8px}
@media (max-width:400px){
    body[data-sport="football"] .standings-table th,
    body[data-sport="football"] .standings-table td{padding:8px 3px;font-size:12px}
    body[data-sport="football"] .st-emb{display:none}
    body[data-sport="football"] .standings-table th:not(:first-child):not(:nth-child(2)),
    body[data-sport="football"] .standings-table td:not(:first-child):not(:nth-child(2)){width:30px}
}
body[data-sport="football"] .lv-text{display:inline-block;font:700 11px var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);
    padding:5px 9px;border-radius:8px;border:1px solid color-mix(in oklab,var(--accent) 45%,transparent);background:color-mix(in oklab,var(--accent) 10%,transparent)}
body[data-sport="football"] .pp4-lvl span{justify-content:center;min-height:44px}
body[data-sport="football"] .pp4-lvl b{margin-top:2px}
/* на медали уровень уже написан — дублирующую подпись прячем визуально */
body[data-sport="football"] .pp4-lvl b.sr-lvl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
body[data-sport="football"] .pp4-lvl img{max-width:100%;height:auto}

/* ---- 60. ПРОФИЛЬ НА САЙТЕ: правая колонка ----
   Плитки и строки настроек были мелкими и сырыми — на широком экране это
   выглядело как растянутый телефон. */
@media (min-width:1000px){
    body[data-sport="football"].dk-shell #profile-content .dk-side{gap:18px}
    body[data-sport="football"].dk-shell #profile-content .stat-card{padding:20px 18px;border-radius:16px;background:var(--surface);border:1px solid var(--border,rgba(255,255,255,.07));text-align:left!important}
    body[data-sport="football"].dk-shell #profile-content .stat-val{font-family:var(--display);font-weight:700;font-size:34px;line-height:1}
    body[data-sport="football"].dk-shell #profile-content .stat-label{margin-top:8px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}
    body[data-sport="football"].dk-shell #profile-content .section-title{margin:6px 0 10px;font-size:11px;letter-spacing:.2em;color:var(--text-muted)}
    body[data-sport="football"].dk-shell #profile-content .card{border-radius:16px;overflow:hidden}
    body[data-sport="football"].dk-shell #profile-content .list-row{padding:16px 18px;gap:12px;border-top:1px solid var(--border,rgba(255,255,255,.07))}
    body[data-sport="football"].dk-shell #profile-content .list-row:first-child{border-top:0}
    body[data-sport="football"].dk-shell #profile-content .list-row:hover{background:rgba(255,255,255,.03)}
    body[data-sport="football"].dk-shell #profile-content .list-row .lbl{font-size:14px;font-weight:500;letter-spacing:.02em}
    body[data-sport="football"].dk-shell #profile-content .list-row .mono{font-size:12.5px}
    body[data-sport="football"].dk-shell #profile-content .btn{width:auto;min-width:260px}
    /* уровень в плитке — тем же цветом, что и на медали */
    body[data-sport="football"].dk-shell #profile-content .stat-val.accent{color:var(--accent)}
}

/* ---- 61. ЛЕНТА СОБЫТИЙ НА ДЕСКТОПЕ ----
   Дни-аккордеоны в две узкие колонки читались плохо: сначала строка, потом
   раскрытие во всю ширину. На широком экране день — заголовок, а события под
   ним идут карточками сеткой. */
@media (min-width:1000px){
    body[data-sport="football"].dk-shell #dates-list{display:block}
    body[data-sport="football"].dk-shell #dates-list .fx-daygroup{background:none;border:0;border-radius:0;margin:0 0 26px;padding:0}
    body[data-sport="football"].dk-shell #dates-list .fx-dayhead{padding:0 0 12px;border-bottom:1px solid var(--border,rgba(255,255,255,.08));margin-bottom:14px;cursor:default;pointer-events:none}
    body[data-sport="football"].dk-shell #dates-list .fx-dayhead .fx-day-arrow,
    body[data-sport="football"].dk-shell #dates-list .fx-dayhead .fx-chev{display:none}
    body[data-sport="football"].dk-shell #dates-list .fx-day-body{max-height:none!important;opacity:1!important;overflow:visible!important;
        display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;padding:0}
    body[data-sport="football"].dk-shell #dates-list .fx-row{border:1px solid var(--border,rgba(255,255,255,.07));border-radius:16px;background:var(--surface);padding:16px;margin:0;
        display:flex;flex-direction:column;gap:10px;align-items:flex-start;transition:border-color .15s,transform .15s}
    body[data-sport="football"].dk-shell #dates-list .fx-row:hover{border-color:color-mix(in oklab,var(--accent) 45%,transparent);transform:translateY(-1px)}
}
/* на узком экране подписи в шапке паспорта слипались — оставляем номер */
@media (max-width:430px){
    body[data-sport="football"] .pp4-head{gap:9px}
    body[data-sport="football"] .pp4-no small{display:none}
    body[data-sport="football"] .pp4-org b{font-size:14px}
    body[data-sport="football"] .pp4-foot{font-size:8.5px;letter-spacing:.1em}
}

/* ---- 62. ДЕСКТОП: страница события и таблица ----
   На широком экране обложка растягивалась в узкую полосу, доска и кнопка шли
   во всю ширину, а таблица оставалась «телефонной». */
@media (min-width:1000px){
    body[data-sport="football"].dk-shell #event-detail{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,1fr);
        column-gap:28px;row-gap:0;align-items:start}
    body[data-sport="football"].dk-shell #event-detail>.fx-hero{grid-column:1;grid-row:1;border-radius:18px;overflow:hidden}
    body[data-sport="football"].dk-shell #event-detail>.fx-hero{min-height:420px}
    body[data-sport="football"].dk-shell #event-detail>.fx-hero .detail-hero-placeholder,
    body[data-sport="football"].dk-shell #event-detail>.fx-hero .image-area,
    body[data-sport="football"].dk-shell #event-detail>.fx-hero video{height:420px!important;max-height:none;object-fit:cover}
    body[data-sport="football"].dk-shell #event-detail>.fx-detail{grid-column:2;grid-row:1;padding:0}
    body[data-sport="football"].dk-shell #event-detail>.btn{grid-column:2;grid-row:2;width:100%;margin-top:16px;position:sticky;top:92px}
    body[data-sport="football"].dk-shell #event-detail .fx-board{grid-template-columns:repeat(2,1fr);gap:12px}
    body[data-sport="football"].dk-shell #event-detail .fx-h1{font-size:30px}

    /* турнирная таблица: на десктопе колонки шире, шрифт крупнее */
    body[data-sport="football"].dk-shell .standings-table{table-layout:auto;max-width:920px}
    body[data-sport="football"].dk-shell .standings-table th,
    body[data-sport="football"].dk-shell .standings-table td{padding:12px 10px;font-size:14px;width:auto!important}
    body[data-sport="football"].dk-shell .standings-table thead th{font-size:10.5px;letter-spacing:.14em}
    body[data-sport="football"].dk-shell .standings-table td.team-name{width:auto}
    body[data-sport="football"].dk-shell .st-emb{display:grid;width:26px;height:26px}
    body[data-sport="football"].dk-shell .st-team span{font-size:14px}
    body[data-sport="football"].dk-shell .matrix-wrapper{max-width:920px}

    /* кнопка «назад» — заметная ссылка, а не мелкий текст */
    body[data-sport="football"].dk-shell .nav-back{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;margin-bottom:16px;
        border:1px solid var(--border,rgba(255,255,255,.08));border-radius:11px;background:var(--surface);color:var(--text-secondary);
        font-size:13px;cursor:pointer;transition:color .15s,border-color .15s}
    body[data-sport="football"].dk-shell .nav-back:hover{color:var(--text-primary);border-color:color-mix(in oklab,var(--accent) 40%,transparent)}
}

/* ---- 63. ДЕСКТОП: турнир, расписание, остальные экраны ---- */
@media (min-width:1000px){
    /* шапка турнира — не плоская полоса */
    body[data-sport="football"].dk-shell #tournament-detail-content>.fx-hero{min-height:340px;border-radius:18px;overflow:hidden}
    body[data-sport="football"].dk-shell #tournament-detail-content>.fx-hero .detail-hero-placeholder,
    body[data-sport="football"].dk-shell #tournament-detail-content>.fx-hero .image-area,
    body[data-sport="football"].dk-shell #tournament-detail-content>.fx-hero video{height:340px!important;max-height:none;object-fit:cover}
    body[data-sport="football"].dk-shell #tournament-detail-content>.fx-detail{padding-top:18px}
    /* карточки матчей в расписании не растягиваются на всю строку */
    body[data-sport="football"].dk-shell #schedule-list .rnd{margin:0}
    body[data-sport="football"].dk-shell #schedule-list .mx{max-width:none}
    /* абонементы, записи, кошелёк — карточки сеткой */
    body[data-sport="football"].dk-shell #subs-list,
    body[data-sport="football"].dk-shell #my-events-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px;align-items:start}
    body[data-sport="football"].dk-shell #subs-list>*,
    body[data-sport="football"].dk-shell #my-events-list>*{margin:0}
    /* заголовки страниц крупнее и с воздухом */
    body[data-sport="football"].dk-shell .page-title{font-size:30px;margin:0 0 18px}
    body[data-sport="football"].dk-shell .section-title{font-size:11px;letter-spacing:.2em}
    /* пустые состояния не жмутся в угол */
    body[data-sport="football"].dk-shell .empty{padding:48px 0;text-align:center}
}
/* имени нужно место: медаль чуть меньше, колонка фото уже */
@media (max-width:430px){
    body[data-sport="football"] .pp4-id{grid-template-columns:minmax(84px,27%) minmax(0,1fr) auto;gap:8px}
    body[data-sport="football"] .pp4-medal img,body[data-sport="football"] .pp4-medal svg{height:60px}
    body[data-sport="football"] .pp4-tag{font-size:9px;padding:4px 7px;letter-spacing:.08em}
}
body[data-sport="football"] .pp4-tags{flex-wrap:wrap;row-gap:5px}

/* Выбранный тип занятия в форме шаблона. Помечено important: кнопки
   направления принудительно прозрачные, иначе выбор не виден. */
body[data-sport] .btn.tpl-type-btn.active,
body[data-sport] button.tpl-type-btn.active{
    background:var(--accent)!important;
    color:#000!important;
    border-color:var(--accent)!important;
}


/* ---- 60. КОМПЬЮТЕР: УБИРАЕМ СЛЕДЫ ТЕЛЕФОННОЙ ВЁРСТКИ ----
   Длина строки, растянутые таблицы, пустая колонка у команд, двойной заголовок
   расписания. Всё, кроме заголовка, — только на широком экране. */

/* Расписание рисует свою шапку с названием турнира и счётчиком матчей, поэтому
   заголовок из разметки шёл вторым «Расписание» подряд. */
#pg-schedule > .page-title { display:none }

/* Быстрые действия: раскладку вынесли из инлайна, иначе её не переопределить. */
.qa-grid { grid-template-columns:1fr 1fr }

@media (min-width: 1000px) {
    /* Длина строки. После ~75 знаков глаз теряет начало следующей — регламент
       и биография тренера читались через силу. */
    body.dk-shell .site-main .rul-p span,
    body.dk-shell .site-main .rul-note,
    body.dk-shell .site-main .rul-sub { max-width:76ch }

    /* Табло турнира. У прежнего блока итогов лимит был (.rs — 640px), у нового
       не стало: колонки уезжали вправо, между ними и названием команды зияло
       полэкрана. */
    body.dk-shell .site-main .trb { max-width:660px }

    /* Плей-офф: счёт не должен убегать от названия команды. */
    body.dk-shell .site-main .bkt-stage { max-width:660px }

    /* Команды: подсказка занимала половину экрана, под ней метр пустоты.
       Теперь она сверху во всю ширину, а карточки команд — в три колонки. */
    body.dk-shell .site-main #tournament-teams-content { display:block }
    body.dk-shell .site-main #tsu-my { margin-bottom:18px }
    body.dk-shell .site-main #tsu-teams { display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
        gap:12px; align-content:start }
    body.dk-shell .site-main #tsu-teams > .tm-sec { grid-column:1/-1 }
    body.dk-shell .site-main #tsu-teams > .tm { margin:0 }

    /* Контакты — короткий список, а не полоса во весь экран. */
    body.dk-shell .site-main #pg-contacts .legal-content { max-width:620px }
    body.dk-shell .site-main .ct-row { display:grid; grid-template-columns:34px minmax(0,1fr) auto;
        align-items:center; gap:12px; padding:13px 0; border-bottom:1px solid var(--border) }
    body.dk-shell .site-main .ct-row:last-child { border-bottom:0 }

    /* Турнирная таблица: тянулась на всю ширину, и колонки уезжали от названий.
       Ширины хватает на семь колонок с запасом. */
    body.dk-shell .site-main #pg-standings .card,
    body.dk-shell .site-main #pg-standings .tabs,
    body.dk-shell .site-main #pg-standings .hint { max-width:880px }

    /* Главная: карточка события крупнее, быстрые действия — колонкой сбоку.
       Была сетка 2+2+1 с одинокой плиткой в последнем ряду. */
    body.dk-shell .site-main #pg-menu .event-card-v .image-area { height:420px }
    body.dk-shell .site-main .qa-grid { grid-template-columns:minmax(0,1fr) }
}

/* Место в таблице: число вместо медали-эмодзи (три одинаковых кубка не давали
   понять, какое место чьё). Призовые — цветом направления. */
.st-place { font-family:var(--display); font-weight:600; font-variant-numeric:tabular-nums;
    color:var(--text-muted); letter-spacing:.02em }
.st-place.is-top { color:var(--accent) }

/* ---- 61. ТЕЛЕФОН: РАЗБОР ОБХОДА ПО САЙТУ ----
   Мелкие цели нажатия, рваные сетки, обрезанные полосы фильтров. */

/* Ссылка «Все →» ломалась надвое — стрелка уезжала под слово. */
.section-title > span[onclick] { white-space:nowrap }

/* Кнопка входа по почте: чёрная рамка 2px на золотом читалась как ободок. */
#pg-login .btn-gold, #pg-login .btn-primary { border:0 }

/* Полоса фильтров прокручивается — показываем это растворением справа,
   иначе последняя вкладка выглядит обрезанной краем экрана. */
.chips { position:relative; scrollbar-width:none; -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent 100%);
    mask-image:linear-gradient(90deg,#000 88%,transparent 100%) }
.chips::-webkit-scrollbar { display:none }

/* Заголовок события на светлой части снимка терялся. */
.event-card-v .image-area::after { background:linear-gradient(180deg,rgba(8,8,10,0) 0%,rgba(8,8,10,0) 32%,rgba(8,8,10,.55) 62%,rgba(8,8,10,.92) 100%) }

@media (max-width: 760px) {
    /* Одна колонка: в двух подписи рвались на два слова, а пятая плитка
       оставалась одна в ряду. */
    .qa-grid { grid-template-columns:minmax(0,1fr) }

    /* Цель нажатия — от 44 px, иначе палец промахивается. «Регистрация» и
       «Забыли пароль?» лежат в обычном div, поэтому берём все ссылки входа. */
    #pg-login a, #pg-contacts .meta-link,
    .section-title > span[onclick] { display:inline-flex; align-items:center; min-height:44px }
}

/* Длинное название команды на узком экране обрезалось многоточием — там
   показываем короткое имя из карточки команды. */
.nm-short { display:none }
@media (max-width: 520px) {
    .nm-full { display:none }
    .nm-short { display:inline }
}

/* ---- 63. СТРОКА ФАКТОВ: ЯЗЫК ПЛАКАТА НА ОСТАЛЬНЫХ ЭКРАНАХ ----
   Числа были в клетках по центру: на узком экране решётка складывалась в
   квадрат, линии давали крест, и карточка читалась как калькулятор. Теперь
   одна строка, выключка влево, только волосяные разделители. */
.fx-board { grid-template-columns:repeat(4,minmax(0,1fr)); margin-bottom:18px }
.fx-cell { padding:15px 14px 14px 0; text-align:left; border-right:1px solid var(--border) }
.fx-cell + .fx-cell { padding-left:16px }
.fx-cell .v { font-size:26px; letter-spacing:-.01em }
.fx-cell .v i { font-size:14px; color:var(--text-muted); margin-left:3px; font-weight:500 }
.fx-cell .k {
    margin-top:7px; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase;
    font-weight:700; color:var(--text-muted); white-space:nowrap;
}
@media (max-width: 520px) {
    .fx-cell { padding:13px 8px 12px 0 }
    .fx-cell + .fx-cell { padding-left:10px }
    .fx-cell .v { font-size:20px }
    .fx-cell .v i { font-size:11px }
    .fx-cell .k { font-size:8.5px; letter-spacing:.1em }
}
/* Адрес — та же строка на волосяной линии, что и факты. */
.fx-place { padding:15px 0; font-size:13.5px }
.fx-place span { font-size:11px; letter-spacing:.12em; text-transform:uppercase }

/* На компьютере карточка события — две колонки, и числа стояли решёткой в
   узкой правой. Здесь тоже одна строка, набор помельче. */
body.dk-shell #event-detail .fx-board { grid-template-columns:repeat(4,minmax(0,1fr))!important; gap:0!important }
body.dk-shell #event-detail .fx-cell { padding:13px 8px 12px 0 }
body.dk-shell #event-detail .fx-cell + .fx-cell { padding-left:12px }
body.dk-shell #event-detail .fx-cell .v { font-size:21px }
body.dk-shell #event-detail .fx-cell .v i { font-size:12px }
body.dk-shell #event-detail .fx-cell .k { font-size:8.5px; letter-spacing:.1em }


/* ---- 64. РАСПИСАНИЕ: СТРОКИ ВМЕСТО КАРТОЧЕК ----
   Тридцать три плитки с подложкой и рамкой превращали расписание в список
   коробок. Оставляем волосяную линию — она отделяет матчи не хуже. */
body[data-sport] .rnd-list { gap:0 }
body[data-sport] .mx {
    background:transparent; border:0; border-radius:0;
    border-bottom:1px solid var(--border); padding:12px 8px 13px 0;
}
body[data-sport] .rnd-list .mx:last-child { border-bottom:0 }
body[data-sport] .mx:hover { background:rgba(255,255,255,.02) }

/* Кнопка записи была тёмной полосой во всю ширину и повторялась у каждого
   матча. Делаем её тихой ссылкой — заметна, но не спорит с содержимым. */
body[data-sport] .mx-vid {
    width:auto!important; margin-top:8px!important; padding:0!important;
    border:0!important; background:none!important; border-radius:0!important;
    color:var(--accent)!important; font-size:12px!important; letter-spacing:.04em;
    justify-content:flex-start!important;
}
body[data-sport] .mx-vid:hover { text-decoration:underline }

/* ---- 65. ЛЕНТА СОБЫТИЙ: ДЕНЬ ОТКРЫВАЕТСЯ И НА КОМПЬЮТЕРЕ ----
   Раньше дни держались раскрытыми принудительно, поэтому шапке выключили
   нажатия и спрятали стрелку. Дни снова сворачиваются — значит, шапка опять
   кнопка. */
@media (min-width:1000px) {
    body[data-sport].dk-shell #dates-list .fx-dayhead {
        cursor:pointer; pointer-events:auto; padding:14px 0; margin-bottom:0;
    }
    body[data-sport].dk-shell #dates-list .fx-dayhead .fx-day-arrow { display:block }
    body[data-sport].dk-shell #dates-list .fx-dayhead:hover { background:rgba(255,255,255,.02) }
    body[data-sport].dk-shell #dates-list .fx-daygroup.is-open .fx-dayhead { border-bottom-color:transparent }
}

/* ---- 66. КОМАНДЫ: СТРОКИ ВМЕСТО ПЛИТОК ----
   Восемь карточек с подложкой и скруглением — последний крупный кусок старого
   языка. Команда теперь строка на волосяной линии; своя отмечена линией слева,
   а не заливкой. */
body[data-sport] #tsu-teams .tm {
    background:none; border:0; border-radius:0;
    border-bottom:1px solid var(--border); padding:14px 0 15px; margin:0;
}
body[data-sport] #tsu-teams .tm:last-child { border-bottom:0 }
body[data-sport] #tsu-teams .tm.tm-mine {
    background:none; border-left:2px solid var(--accent); padding-left:14px;
}
body[data-sport] #tsu-teams .tm-emb {
    width:40px; height:40px; font-size:14px; border-width:1px; box-shadow:none;
}
body[data-sport] #tsu-teams .tm-ttl b { font-size:17px }
body[data-sport] #tsu-teams .tm-ttl small { margin-bottom:3px }

/* На широком экране список шёл в три колонки плиток разной высоты, и последний
   ряд оставался рваным. Две колонки строк держат ритм линий. */
@media (min-width:1000px) {
    body[data-sport].dk-shell #tsu-teams {
        display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:40px;
    }
    body[data-sport].dk-shell #tsu-teams .tm-sec,
    body[data-sport].dk-shell #tsu-teams .fee-note { grid-column:1/-1 }
    /* В две колонки последняя строка левого столбца оставалась с линией, а
       правого — без: закрываем список линией под обеими. */
    body[data-sport].dk-shell #tsu-teams .tm:last-child { border-bottom:1px solid var(--border) }
}

/* ---- 67. ПЕРЕХОДЫ ТУРНИРА: СТРОКИ, А НЕ КОРОБКИ ----
   Вся карточка турнира собрана на волосяных линиях, и только эти четыре
   кнопки оставались скруглёнными коробками с рамками. */
body[data-sport] .trn-link {
    border:0; border-radius:0; background:none;
    border-bottom:1px solid var(--border);
    padding:15px 2px 15px 0; letter-spacing:.02em;
}
body[data-sport] .trn-link:last-child { border-bottom:0 }
body[data-sport] .trn-link:hover { background:rgba(255,255,255,.02) }
body[data-sport] .trn-link i { opacity:.45; font-size:15px }
/* Главный переход — акцент цветом и линией слева, без заливки во всю ширину. */
body[data-sport] .trn-link.is-main {
    background:none; color:var(--accent); border-color:var(--border);
    border-left:2px solid var(--accent); padding-left:14px;
}
body[data-sport] .trn-link.is-main i { opacity:.8 }

/* ---- 68. СПИСОК ТУРНИРОВ: ПЛАКАТ, А НЕ ДВЕ УЗКИЕ КАРТОЧКИ ----
   Турниров единицы, а стояли они двумя скруглёнными карточками в ряд: снимок
   резался посередине, заголовок ломался, страница пустовала. */
body[data-sport] .tc { border-radius:0 }
@media (min-width:1000px) {
    body[data-sport].dk-shell .site-main #tournament-list-content {
        display:block!important;
    }
    body[data-sport].dk-shell .site-main #tournament-list-content .tc {
        min-height:230px; margin:0 0 18px; padding:22px 26px 20px;
        display:flex; flex-direction:column; justify-content:space-between;
    }
    /* Полоса 1098x230 — это почти пять к одному: снимок при таком вырезе
       раздувается до лица во весь экран. Поэтому он не фон полосы, а панель у
       правого края в привычной пропорции, растворяющаяся в тёмном поле. */
    body[data-sport].dk-shell #tournament-list-content .tc-cover {
        left:auto; right:0; width:46%; background-position:62% 14%;
    }
    body[data-sport].dk-shell #tournament-list-content .tc-cover::after {
        /* Растворять надо в цвет самой полосы, иначе на стыке видна ступенька. */
        background:linear-gradient(90deg,
                       var(--surface) 0%,
                       color-mix(in oklab,var(--surface) 60%,transparent) 26%,
                       transparent 66%),
                   linear-gradient(180deg,rgba(8,8,10,0) 58%,rgba(8,8,10,.55) 100%);
    }
    body[data-sport].dk-shell #tournament-list-content .tc-name { font-size:34px; max-width:56% }
    body[data-sport].dk-shell #tournament-list-content .tc-meta { max-width:56%; font-size:13.5px }
    body[data-sport].dk-shell #tournament-list-content .tc-top { margin-bottom:0 }
    body[data-sport].dk-shell #tournament-list-content .tc-foot { max-width:56% }
}

/* ---- 69. СРОК ДЕЙСТВИЯ АБОНЕМЕНТА ----
   Условие, которое человек должен прочесть до оплаты, а не после. */
body[data-sport] .sub-term {
    margin:-4px 0 16px; padding:11px 0 12px;
    border-top:1px solid var(--border); border-bottom:1px solid var(--border);
    font-size:12.5px; line-height:1.45; color:var(--text-secondary);
}

/* ---- 70. КНОПКА «ПОЛНАЯ СТАТИСТИКА» ----
   Строка на волосяных линиях, а не коробка: та же азбука, что на остальных
   экранах. Акцент — только значок и стрелка. */
body[data-sport] .rep-btn {
    display:flex; align-items:center; gap:13px; width:100%;
    background:none; border:0; border-top:1px solid var(--border);
    border-bottom:1px solid var(--border); border-radius:0;
    padding:15px 2px 15px 0; margin:0 0 18px; cursor:pointer;
    font-family:inherit; color:var(--text-primary); text-align:left;
}
body[data-sport] .rep-btn:hover { background:rgba(255,255,255,.02) }
body[data-sport] .rep-btn.is-busy { opacity:.5; cursor:progress }
body[data-sport] .rep-btn.is-done .rep-ico,
body[data-sport] .rep-btn.is-done .rep-txt b { color:var(--accent) }
body[data-sport] .rep-btn:disabled { cursor:default }
body[data-sport] .rep-ico { display:flex; color:var(--accent); flex:0 0 auto }
body[data-sport] .rep-txt { flex:1; min-width:0 }
body[data-sport] .rep-txt b {
    display:block; font-family:var(--display); font-weight:700; font-size:15px;
    letter-spacing:.01em; text-transform:uppercase;
}
body[data-sport] .rep-txt i {
    display:block; margin-top:3px; font-style:normal; font-size:11.5px;
    color:var(--text-muted);
}
body[data-sport] .rep-go { color:var(--accent); opacity:.55; font-size:15px }

/* ---- 71. СКЕЛЕТОНЫ БЕЗ ПЕРЕРИСОВКИ ----
   Мерцание через background-position перерисовывало градиент каждый кадр —
   ровно тогда, когда процессор занят загрузкой данных. Бегущая полоса на
   transform уходит в композитор и не трогает отрисовку. */
.skeleton,.skeleton-cover,.skeleton-line,
body[data-sport] .skeleton,body[data-sport] .skeleton-line,body[data-sport] .sk-line{
    position:relative;overflow:hidden;
    background:rgba(255,255,255,.05);animation:none;
}
.skeleton::after,.skeleton-cover::after,.skeleton-line::after,
body[data-sport] .sk-line::after{
    content:'';position:absolute;inset:0;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.07),transparent);
    transform:translateX(-100%);
    animation:sk-sweep 1.4s linear infinite;
}
@keyframes sk-sweep{to{transform:translateX(100%)}}
@media (prefers-reduced-motion: reduce){
    .skeleton::after,.skeleton-cover::after,.skeleton-line::after,
    body[data-sport] .sk-line::after{animation:none}
}

/* ---- 72. СТРОКА СО ЗНАЧКОМ ----
   .meta-row раздвигает края ради полей профиля («подпись — значение»).
   В админской карточке события слева значок, и текст улетал к правому краю.
   Прижимаем его обратно к значку. */
.meta-row .meta-icon + span { margin-right:auto }

/* Обложка направления на событии любого типа: занятия заводят и
   «игрой», а для них подставлялась общая волейбольная картинка. */
body[data-sport="boxing"] .ev-cover-placeholder,body[data-sport="boxing"] .detail-hero-placeholder{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/kit/box_hero.jpg?v=8') center/cover no-repeat,#0D1018}
body[data-sport="kickboxing"] .ev-cover-placeholder,body[data-sport="kickboxing"] .detail-hero-placeholder{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/kit/kick_hero.jpg?v=8') center/cover no-repeat,#0D1018}
body[data-sport="taekwondo"] .ev-cover-placeholder,body[data-sport="taekwondo"] .detail-hero-placeholder{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/kit/tkd_hero.jpg?v=8') center/cover no-repeat,#0D1018}
body[data-sport="football"] .ev-cover-placeholder,body[data-sport="football"] .detail-hero-placeholder{background:linear-gradient(180deg,rgba(8,8,10,.2),rgba(8,8,10,.7)),url('/static/images/football_event.webp') center/cover no-repeat,#0D1018}
