  :root{
    /* Base paint before JS runs — matches the default game+theme
       (CSTV, dark) so there's no color flash once applyGameBranding()
       takes over. See THEME_PALETTES in JS for the full 2-game x
       2-theme table these variables are switched between at runtime. */
    --bg:#070A10; --bg-elev:#101720; --bg-elev-2:#182233; --border:#243349;
    --text:#E8ECEF; --muted:#8492A0;
    /* --orange doubles as "primary accent" (blue for CSTV, orange for
       OWTV) and --blue as the secondary/complementary accent (always
       the other discipline's color) — both set at runtime by
       applyGameBranding() based on discipline (CS/OW) AND theme
       (dark/light). See THEME_PALETTES. */
    --orange:#3D7FFF; --blue:#FF7A1F; --green:#39FF88; --red:#FF4D5E; --yellow:#FFC93C;
    /* Live-indicator dot next to the logo: red for CSTV, blue for OWTV.
       Set here as the pre-JS fallback (matches default discipline=CS);
       overridden per-discipline by applyGameBranding() below. */
    --live-dot:#FF3B3B;
    --orange-rgb:61,127,255; --blue-rgb:255,122,31;
    --on-accent:#170D06;
    /* Contrast-safe siblings of --orange/--blue, used everywhere the
       accent colour paints TEXT sitting on the ordinary page background
       (headings, links, stat numbers, pills) rather than acting as a
       background itself. Same hue, lightness nudged just enough to stay
       readable — recomputed by readableAccent()/applyDynamicContrast() in
       JS every time the accent, game or a visitor's custom colours
       change. These starting values just mirror --orange/--blue so there
       is no flash before JS runs. */
    --orange-text:#3D7FFF; --blue-text:#FF7A1F;
    /* Fixed colour for the "TV" letters in the logo — always blue for CSTV,
       always orange for OWTV, regardless of theme or the visitor's custom
       colours. Set for real by applyGameBranding() based on currentGame;
       this is just the pre-JS fallback (matches default discipline=CS). */
    --logo-tv-color:#3D7FFF;
    --topbar-grad-a:#0C121B; --topbar-grad-b:#070A10; --ticker-bg:#0C121B;
    --topbar-fg:#E8ECEF; --topbar-fg-muted:#8492A0;
    --hover-1:rgba(255,255,255,0.02); --hover-2:rgba(255,255,255,0.035); --hover-3:rgba(255,255,255,0.04);
    --shadow-lg:0 12px 28px rgba(0,0,0,0.45); --shadow-md:0 10px 30px rgba(0,0,0,0.45);
    --font-display:'Teko', sans-serif; --font-body:'Inter', sans-serif; --font-mono:'JetBrains Mono', monospace;
  }
  /* ---------- Light theme ----------
     Toggled via html[data-theme="light"] (see toggleTheme() in JS).
     Only handles the "always the same regardless of game" bits — text,
     muted, hover tints, shadows. The brand-colored surface variables
     (bg/bg-elev/bg-elev-2/border/topbar/ticker/accent) are per-game AND
     per-theme, so those are computed by applyGameBranding() (JS) from
     THEME_PALETTES, not here — this block's own values for them are
     just the pre-JS fallback for CSTV light. */
  html[data-theme="light"]{
    --bg:#E7F0FC; --bg-elev:#F3F8FF; --bg-elev-2:#D9E8FA; --border:#B9D4F5;
    --text:#12151A; --muted:#5B6572;
    --topbar-grad-a:#F3F8FF; --topbar-grad-b:#E7F0FC; --ticker-bg:#DEEBFC;
    --topbar-fg:#12151A; --topbar-fg-muted:#5B6572;
    --hover-1:rgba(10,14,20,0.028); --hover-2:rgba(10,14,20,0.045); --hover-3:rgba(10,14,20,0.05);
    --shadow-lg:0 10px 24px rgba(20,24,30,0.12); --shadow-md:0 8px 22px rgba(20,24,30,0.12);
    --orange:#2461D9;
    --orange-rgb:36,97,217; --blue-rgb:224,101,10;
    --on-accent:#FFFFFF;
    --orange-text:#2461D9; --blue-text:#E0650A;
  }
  /* ---------- Colour style: "обычка" (flat/solid) ----------
     Default is the gradient look above; toggled via
     html[data-colorstyle="solid"] (see applyColorStyle() in JS). Flattens
     the decorative gradients to a plain colour, using the same CSS vars so
     it still respects the current game/theme accent. Team-color banners
     (inline styles from teamColorGradient()) are handled in JS, not here. */
  html[data-colorstyle="solid"] #colorStyleToggleBtn{ color:var(--accent-text); border-color:var(--accent); }
  html[data-colorstyle="solid"] .topbar{ background:var(--topbar-grad-a); }
  /* Preset swatches in the "Расцветка" panel — see COLOR_PRESETS / renderColorPresets() in JS */
  .cs-preset-swatch{width:34px;height:34px;border-radius:50%;border:2px solid var(--border);cursor:pointer;padding:0;flex-shrink:0;transition:transform .12s ease,border-color .12s ease;}
  .cs-preset-swatch:hover{transform:scale(1.08);}
  .cs-preset-swatch.active{border-color:var(--text);box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--text);}
  html[data-colorstyle="solid"] .card::before{ background:var(--accent); }
  html[data-colorstyle="solid"] .profile-hero{ background:var(--bg-elev); }
  html[data-colorstyle="solid"] .profile-hero::before{ display:none; }
  html[data-colorstyle="solid"] .tour-hero{ background:var(--bg-elev); }
  html[data-colorstyle="solid"] .tour-hero::before{ display:none; }
  html[data-colorstyle="solid"] .match-hero::before{ display:none; }
  html[data-colorstyle="solid"] .standing-expand td{ background:var(--bg-elev); }
  html[data-colorstyle="solid"] .roster-photo-wrap{ background:var(--accent); }
  html[data-colorstyle="solid"] .rep-badge{ background:rgba(160,80,220,0.14); }
  html[data-colorstyle="solid"] .msg-proposal-card{ background:var(--bg-elev-2); }
  html[data-colorstyle="solid"] .msg-proposal-card.accepted{ background:var(--bg-elev-2); }
  html[data-colorstyle="solid"] .motm-card{ background:var(--bg-elev-2); }
  html[data-colorstyle="solid"] .bt-champion{ background:var(--bg-elev); }
  html[data-colorstyle="solid"] .impact-gauge{ background:var(--bg-elev); }
  *{box-sizing:border-box;}
  /* Theme-toggle ripple: disable the browser's default cross-fade so the
     only motion visible is the circular clip-path wave animated from JS
     (toggleTheme). Root snapshot layer, not scoped per-element. */
  ::view-transition-old(root), ::view-transition-new(root){ animation: none; mix-blend-mode: normal; }
  ::view-transition-new(root){ z-index: 1; }
  ::view-transition-old(root){ z-index: 0; }
  html{background:var(--bg);}
  body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);line-height:1.5;transition:background-color .15s ease,color .15s ease;overflow-x:hidden;}
  /* ---- Своя картинка в шапке сайта ---- */
  html[data-header-bg="photo"] .topbar{background-image:linear-gradient(rgba(7,10,16,.38),rgba(7,10,16,.38)),var(--header-photo-url,none);background-size:cover;background-position:center;background-repeat:no-repeat;}
  /* ---- Мини-редактор области фото (кроп): превью с зумом/перетаскиванием ---- */
  .crop-viewport{position:relative;overflow:hidden;border-radius:8px;border:1px solid var(--border);background:#000;margin:0 auto;cursor:grab;touch-action:none;}
  .crop-viewport.dragging{cursor:grabbing;}
  .crop-viewport img{position:absolute;top:0;left:0;transform-origin:0 0;user-select:none;pointer-events:none;max-width:none;}
  .crop-zoom-row{display:flex;align-items:center;gap:10px;margin-top:10px;}
  .crop-zoom-row input[type="range"]{flex:1;}
  .app{max-width:1180px;margin:0 auto;padding:0 20px 80px;}

  .topbar{position:sticky;top:0;z-index:40;border-bottom:2px solid var(--accent);background:linear-gradient(180deg,var(--topbar-grad-a),var(--topbar-grad-b));box-shadow:0 1px 0 var(--border), 0 6px 18px rgba(0,0,0,0.18);}
  .topbar-inner{max-width:1180px;margin:0 auto;padding:14px 20px;display:flex;align-items:center;gap:22px;flex-wrap:wrap;}

  /* ---------- Глобальный поиск (шапка) ---------- */
  .gsearch{position:relative;flex:0 1 220px;min-width:0;}
  .gsearch-box{position:relative;display:flex;align-items:center;}
  .gsearch-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--topbar-fg-muted);pointer-events:none;display:flex;}
  .gsearch-input{width:100%;background:var(--bg-elev);border:1px solid var(--border);border-radius:999px;color:var(--topbar-fg);font-family:var(--font-body);font-size:13.5px;padding:8px 34px 8px 32px;outline:none;transition:border-color .12s ease,background .12s ease;}
  .gsearch-input::placeholder{color:var(--topbar-fg-muted);}
  .gsearch-input:focus{border-color:var(--accent);background:var(--bg-elev-2);}
  .gsearch-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--topbar-fg-muted);cursor:pointer;padding:4px;display:none;line-height:0;}
  .gsearch-clear.show{display:flex;}
  .gsearch-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:min(420px,92vw);max-height:min(70vh,560px);overflow-y:auto;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);z-index:60;padding:6px;}
  .gsearch-group-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);padding:8px 10px 4px;}
  .gsearch-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--text);}
  .gsearch-item:hover{background:var(--hover-2);}
  .gsearch-item .gs-badge{width:26px;height:26px;border-radius:6px;object-fit:cover;flex:none;background:var(--bg-elev-2);}
  .gsearch-item .gs-title{font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .gsearch-item .gs-sub{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .gsearch-item .gs-game-pill{margin-left:auto;flex:none;font-family:var(--font-mono);font-size:9.5px;letter-spacing:0.04em;color:var(--muted);border:1px solid var(--border);border-radius:5px;padding:1px 5px;}
  .gsearch-empty,.gsearch-hint{padding:16px 10px;color:var(--muted);font-size:13px;text-align:center;}
  .gsearch-seeall{display:block;width:100%;text-align:center;background:none;border:none;border-top:1px solid var(--border);color:var(--accent-text);font-size:12.5px;font-weight:600;padding:9px 6px 6px;cursor:pointer;margin-top:4px;}
  .gsearch-highlight{outline:2px solid var(--accent);outline-offset:2px;animation:gsearch-flash 2s ease;}
  @keyframes gsearch-flash{0%,30%{background:var(--hover-3);}100%{background:transparent;}}
  @media (max-width:860px){
    .gsearch{flex:1 1 100%;order:9;}
    .gsearch-dropdown{left:0;right:0;width:auto;}
  }
  .logo{font-family:'Dividente','Bebas Neue',var(--font-display);font-size:34px;font-weight:700;letter-spacing:1px;color:var(--topbar-fg);display:flex;align-items:baseline;gap:2px;}
  .logo span{color:var(--logo-tv-color);} /* fixed per-discipline colour: always blue for CSTV, always orange for OWTV — independent of theme/custom colours */
  .version-label{font-family:var(--font-mono);font-size:9.5px;color:var(--topbar-fg-muted);letter-spacing:0.5px;margin-top:-4px;text-align:center;}
  .logo::after{content:'';width:8px;height:8px;background:var(--live-dot);border-radius:50%;margin-left:6px;align-self:center;box-shadow:0 0 6px 1px var(--live-dot);animation:pulse-dot .4s steps(1) infinite;}
  @keyframes pulse-dot{0%,49%{opacity:1;}50%,100%{opacity:0;}}
  nav{display:flex;gap:2px;flex-wrap:wrap;}
  nav button{background:none;border:none;border-radius:5px 5px 0 0;color:var(--topbar-fg-muted);font-family:var(--font-display);font-size:16.5px;letter-spacing:0.6px;padding:8px 12px;cursor:pointer;border-bottom:2px solid transparent;text-transform:uppercase;transition:color .12s ease,border-color .12s ease,background-color .12s ease;}
  nav button:hover{color:var(--text);background:var(--hover-1);}
  nav button.active{color:var(--topbar-fg);border-bottom-color:var(--accent);background:rgba(var(--accent-rgb),0.1);}
  .theme-toggle-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:3px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--muted);cursor:pointer;flex-shrink:0;}
  .discord-link-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:3px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--muted);flex-shrink:0;text-decoration:none;transition:color .15s ease,border-color .15s ease;}
  .discord-link-btn:hover{color:#5865F2;border-color:#5865F2;}
  .telegram-link-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:3px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--muted);flex-shrink:0;text-decoration:none;transition:color .15s ease,border-color .15s ease;}
  .telegram-link-btn:hover{color:#2AABEE;border-color:#2AABEE;}
  .anticheat-link-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elev-2);flex-shrink:0;text-decoration:none;cursor:pointer;transition:border-color .15s ease,transform .12s ease,box-shadow .15s ease;overflow:hidden;padding:0;}
  .anticheat-link-btn img{width:100%;height:100%;object-fit:cover;display:block;}
  .anticheat-link-btn:hover{border-color:var(--accent);box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.16);transform:translateY(-1px);}
  .theme-toggle-btn:hover{color:var(--accent-text);border-color:var(--accent);}
  .authbox{margin-left:auto;display:flex;align-items:center;gap:10px;}
  .authbox .btn-ghost{color:var(--topbar-fg);border-color:var(--topbar-fg-muted);}
  .authbox .who{font-size:13px;color:var(--topbar-fg-muted);}
  .authbox .who b{color:var(--topbar-fg);}
  .admin-pill{font-family:var(--font-mono);font-size:10px;color:var(--yellow);border:1px dashed var(--yellow);padding:2px 6px;border-radius:2px;margin-left:6px;}
  .nav-alert-dot{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:var(--red);color:#fff;font-family:var(--font-body);font-size:10px;font-weight:800;line-height:1;margin-left:5px;vertical-align:top;position:relative;top:-2px;}

  .ticker-wrap{border-bottom:1px solid var(--border);background:var(--ticker-bg);overflow:hidden;position:relative;}
  .ticker-wrap .tag{position:absolute;left:0;top:0;bottom:0;background:var(--accent);color:var(--on-accent);font-family:var(--font-display);font-size:14px;font-weight:700;letter-spacing:1px;display:flex;align-items:center;padding:0 12px;z-index:2;}
  .ticker-track{display:flex;gap:40px;white-space:nowrap;padding:9px 0 9px 110px;animation:scroll-left 28s linear infinite;font-family:var(--font-mono);font-size:13px;color:var(--muted);}
  .ticker-track span b{color:var(--text);}
  @keyframes scroll-left{from{transform:translateX(0);}to{transform:translateX(-50%);}}

  h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;letter-spacing:0.3px;margin:0 0 4px;}
  .section-title{font-size:32px;text-transform:uppercase;display:flex;align-items:center;gap:12px;margin:36px 0 4px;}
  .section-title .bar{width:5px;height:24px;background:var(--accent);display:inline-block;}
  .section-sub{color:var(--muted);font-size:14px;margin-bottom:20px;}
  .row-between{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;}

  .btn{font-family:var(--font-body);font-weight:600;font-size:13.5px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);padding:10px 16px;border-radius:6px;cursor:pointer;transition:border-color .15s ease,transform .1s ease;}
  .btn:hover{border-color:rgba(var(--accent-rgb),0.5);}
  .btn:active{transform:translateY(1px);}
  .btn:disabled{opacity:0.4;cursor:not-allowed;}
  .btn-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);}
  .btn-primary:hover{filter:brightness(1.12);}
  .btn-ghost{background:none;border:1px solid var(--border);color:var(--muted);}
  .btn-sm{padding:6px 11px;font-size:12px;border-radius:5px;}
  .btn-green{background:var(--green);color:#062012;border-color:var(--green);}
  .btn-red{background:var(--red);color:#280006;border-color:var(--red);}
  .btn-blue{background:var(--accent-2);color:#051A30;border-color:var(--accent-2);}
  .btn-wide{width:100%;}

  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-top:16px;}
  .card{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:16px;position:relative;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;}
  .card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--accent),rgba(var(--accent-rgb),0.25));}
  .card.clickable{cursor:pointer;}
  .card.clickable:hover{border-color:rgba(var(--accent-rgb),0.45);box-shadow:0 10px 24px rgba(0,0,0,0.14);transform:translateY(-2px);}
  .team-head{display:flex;align-items:center;gap:12px;margin-bottom:10px;}
  .team-color-banner{height:64px;border-radius:8px;margin-bottom:14px;}
  .team-badge{width:46px;height:46px;border-radius:3px;background:var(--bg-elev-2);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--accent-text);flex-shrink:0;overflow:hidden;}
  .team-name{font-family:var(--font-display);font-size:22px;line-height:1.1;}
  .team-country{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:0.5px;}
  .team-desc{font-size:13px;color:var(--muted);margin:8px 0 10px;min-height:18px;}
  .rp-badge{font-family:var(--font-mono);font-size:11px;color:var(--yellow);margin-bottom:8px;}
  .status{display:inline-block;font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:1px;padding:3px 8px;border-radius:2px;text-transform:uppercase;border:1px dashed;}
  .status.approved{color:var(--green);border-color:var(--green);background:rgba(57,255,136,0.08);}
  .status.pending{color:var(--yellow);border-color:var(--yellow);background:rgba(255,201,60,0.08);transform:rotate(-2deg);}
  .status.rejected{color:var(--red);border-color:var(--red);background:rgba(255,77,94,0.08);}
  .status.completed{color:var(--accent-2-text);border-color:var(--accent-2);background:rgba(var(--accent-2-rgb),0.08);}
  .status.inactive{color:var(--yellow);border-color:var(--yellow);background:rgba(255,201,60,0.08);}
  .status.scheduled{color:var(--accent-2-text);border-color:var(--accent-2);background:rgba(var(--accent-2-rgb),0.08);}
  .status.live{color:var(--red);border-color:var(--red);background:rgba(255,77,94,0.12);animation:livePulse 1.4s ease-in-out infinite;}
  @keyframes livePulse{0%,100%{opacity:1;}50%{opacity:0.5;}}

  .notif-wrap{position:relative;}
  .notif-bell-btn{position:relative;}
  .notif-badge{position:absolute;top:-5px;right:-5px;min-width:15px;height:15px;padding:0 3px;border-radius:999px;background:var(--red);color:#fff;font-family:var(--font-body);font-size:10px;font-weight:800;line-height:15px;text-align:center;}
  .notif-panel{position:absolute;right:0;top:calc(100% + 8px);width:320px;max-height:420px;overflow-y:auto;background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;box-shadow:var(--shadow-lg);z-index:60;padding:6px;}
  .notif-panel-head{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 8px;border-bottom:1px solid var(--border);margin-bottom:4px;}
  .notif-item{display:flex;gap:8px;align-items:flex-start;padding:8px;border-radius:3px;cursor:pointer;font-size:13px;line-height:1.4;}
  .notif-item:hover{background:var(--bg-elev-2);}
  .notif-item.unread{background:rgba(var(--accent-2-rgb),0.06);}
  .notif-item .notif-dot{flex-shrink:0;width:7px;height:7px;border-radius:50%;background:var(--accent-2);margin-top:5px;}
  .notif-item .notif-dot.read{background:transparent;}
  .notif-item .notif-time{color:var(--muted);font-size:11px;margin-top:2px;}

  /* ---- Player profile redesign ---- */
  .pdet-banner{display:flex;align-items:center;gap:20px;flex-wrap:wrap;border-radius:8px;padding:20px;margin-bottom:4px;}
  /* This banner's background is the TEAM's own custom color (independent
     of the site's dark/light theme, see teamColorGradient()), so its text
     can't just inherit var(--text) — that flips to near-black in light
     theme and goes invisible against what's often still a dark team
     color. Force a fixed light color + shadow instead, readable against
     any background regardless of site theme. */
  .pdet-banner, .pdet-banner .pdet-name{ color:#F4F6F8; text-shadow:0 1px 4px rgba(0,0,0,0.55); }
  .pdet-banner .section-sub{ color:rgba(244,246,248,0.8); text-shadow:0 1px 4px rgba(0,0,0,0.55); }
  .pdet-banner-info{flex:1;min-width:200px;}
  .pdet-name{font-size:28px;line-height:1.15;margin:0;}
  @media (max-width:560px){ .pdet-banner{padding:16px;gap:14px;} .pdet-name{font-size:22px;} }
  .pdet-stars{color:var(--border);letter-spacing:2px;font-size:15px;}
  .transfer-move-box{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
  .transfer-move-side{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;}
  .transfer-move-tag{font-family:var(--font-mono);font-size:12px;color:var(--muted);}
  .transfer-move-arrow{font-size:22px;color:var(--muted);flex-shrink:0;}
  .transfer-row-v2{display:flex;align-items:center;gap:18px;padding:14px 6px;border-bottom:1px solid var(--border);}
  .transfer-row-v2:last-child{border-bottom:none;}
  .tr-player{display:flex;flex-direction:column;align-items:center;gap:6px;width:84px;flex-shrink:0;cursor:pointer;text-align:center;}
  .tr-player .avatar,.tr-player .avatar-fallback{border-radius:10px;}
  .tr-player-nick{font-size:12.5px;font-weight:700;color:var(--text);max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tr-move{flex:1;display:flex;align-items:center;justify-content:center;gap:16px;}
  .tr-side{display:flex;flex-direction:column;align-items:center;gap:6px;width:96px;}
  .tr-side-tag{font-size:11.5px;font-weight:700;color:var(--muted);font-family:var(--font-mono);max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tr-arrow{font-size:22px;color:var(--accent-text);flex-shrink:0;}
  .tr-date{color:var(--muted);font-size:12px;flex-shrink:0;font-family:var(--font-mono);width:80px;text-align:right;}
  @media (max-width:640px){
    .transfer-row-v2{gap:8px;}
    .tr-player{width:60px;}
    .tr-player-nick{max-width:60px;font-size:11px;}
    .tr-move{gap:8px;}
    .tr-side{width:64px;}
    .tr-side-tag{max-width:64px;font-size:10px;}
    .tr-date{width:auto;font-size:10.5px;}
  }
  .pdet-stars .filled{color:var(--yellow);}

  /* ---- Player profile: HLTV-style layout (hp-*) ----
     hp-head — колонка: сверху строка (фото + инфо), снизу — панель
     наград на всю ширину шапки (см. hp-awards-panel ниже). */
  .hp-head{display:flex;flex-direction:column;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;overflow:hidden;}
  .hp-head-top{display:flex;}
  .hp-photo{position:relative;width:180px;flex-shrink:0;min-height:230px;display:flex;align-items:flex-end;justify-content:center;}
  .hp-photo-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center;display:block;}
  .hp-photo-fb{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,0.55);background:rgba(11,14,17,0.35);}
  .hp-badges{position:absolute;top:8px;left:8px;display:flex;flex-direction:column;gap:6px;}

  /* Панель наград — сплошная полоса на всю ширину шапки игрока (под
     фото и информационным блоком сразу), а не только под фото. */
  .hp-awards-panel{
    display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;gap:10px;flex-shrink:0;
    padding:10px 16px;min-height:52px;
    background:var(--bg-elev-2);border-top:1px solid var(--border);
  }
  .hp-awards-panel.hp-awards-empty{
    align-items:center;justify-content:center;color:var(--muted);font-size:11.5px;text-align:center;
  }
  .hp-award-tile{position:relative;width:34px;height:34px;cursor:pointer;flex-shrink:0;transition:transform .12s ease;}
  .hp-award-tile:hover{transform:translateY(-2px);}
  .hp-award-tile img.hp-award-img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5));}
  .hp-award-tile svg{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5));}
  .hp-award-picker{position:fixed;z-index:10000;width:270px;max-height:260px;overflow:auto;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.55);padding:6px;}
  .hp-award-picker-title{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;padding:4px 8px 6px;}
  .hp-award-pick{display:block;width:100%;text-align:left;background:none;border:0;color:var(--text);padding:7px 8px;border-radius:4px;cursor:pointer;font:inherit;font-size:13px;font-weight:600;}
  .hp-award-pick:hover{background:var(--bg-elev-2);}
  .hp-award-pick .meta{display:block;font-size:11px;font-weight:400;margin-top:1px;}
  .hp-award-count{
    position:absolute;right:-3px;bottom:-3px;min-width:15px;height:15px;padding:0 3px;
    border-radius:8px;background:#E7472E;color:#fff;font:800 9px/15px var(--font-mono,monospace);
    text-align:center;box-shadow:0 0 0 2px var(--bg-elev-2);
  }
  /* Медаль за место: кубок турнира сверху, место (#1/#2/#3) снизу —
     вместо кружка с цифрой. Ширина авто, поэтому переопределяем базовые
     34×34 у .hp-award-tile. */
  .hp-award-tile.hp-award-trophy{
    width:auto;height:auto;display:flex;flex-direction:column;align-items:center;gap:3px;
  }
  .hp-award-trophy-icon{width:34px;height:34px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .hp-award-trophy-img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5));}
  .hp-award-trophy-emoji{font-size:26px;line-height:1;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5));}
  .hp-award-trophy-place{
    font:800 10.5px/1 var(--font-mono,monospace);color:var(--muted);letter-spacing:.2px;
  }
  @media (max-width:600px){
    .hp-photo{width:120px;min-height:190px;}
    .hp-awards-panel{padding:7px 10px;gap:8px;min-height:44px;}
    .hp-award-tile{width:28px;height:28px;}
    .hp-award-trophy-icon{width:28px;height:28px;}
    .hp-award-trophy-place{font-size:9.5px;}
  }

  .hp-badge{display:block;object-fit:cover;border-radius:3px;box-shadow:0 2px 6px rgba(0,0,0,0.45);}
  .hp-flag{width:24px;height:17px;}
  .hp-logo{width:26px;height:26px;object-fit:contain;background:var(--bg-elev);padding:2px;border-radius:5px;}
  .hp-info{flex:1;min-width:0;padding:18px 24px 8px;display:flex;flex-direction:column;}
  .hp-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
  .hp-title{min-width:0;}
  .hp-top-right{display:flex;flex-direction:column;align-items:flex-end;gap:9px;}
  .hp-highlights{display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
  .hp-year-title{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:800;color:var(--yellow);text-align:right;white-space:nowrap;}
  .hp-year-title img{width:22px;height:22px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5));}
  @media (max-width:640px){
    .hp-top-right{align-items:flex-start;width:100%;}
    .hp-highlights{align-items:flex-start;}
    .hp-year-title{white-space:normal;}
  }
  .hp-nick{font-family:var(--font-display);font-size:40px;line-height:1;margin:0;font-weight:600;letter-spacing:.3px;word-break:break-word;}
  .hp-real{color:var(--muted);font-size:12.5px;margin-top:4px;}
  .hp-stars{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .hp-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .hp-rows{margin-top:14px;}
  .hp-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:9px 0;border-bottom:1px solid var(--border);font-size:14px;}
  .hp-row:last-child{border-bottom:none;}
  .hp-row .k{font-weight:700;flex-shrink:0;}
  .hp-row .v{color:var(--muted);display:flex;align-items:center;gap:6px;text-align:right;flex-wrap:wrap;justify-content:flex-end;}
  .hp-teamlink{display:inline-flex;align-items:center;gap:6px;color:var(--accent-text);font-weight:600;}
  .hp-teamlink .team-badge{border-radius:4px;}

  .hp-tabs{display:flex;margin-top:14px;background:var(--bg);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;overflow-x:auto;scrollbar-width:none;}
  .hp-tabs::-webkit-scrollbar{display:none;}
  .hp-tab{background:none;border:none;border-right:1px solid var(--border);color:var(--muted);font:inherit;font-size:13.5px;padding:13px 18px;cursor:pointer;white-space:nowrap;position:relative;}
  .hp-tab:hover{color:var(--text);background:var(--hover-2);}
  .hp-tab.active{background:var(--bg-elev);color:var(--text);font-weight:600;}
  .hp-tab.active::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent);}
  .hp-body{background:var(--bg-elev);border:1px solid var(--border);border-radius:0 0 6px 6px;padding:22px 24px 26px;min-height:240px;}

  .hp-h{font-size:16px;font-weight:700;margin:0 0 14px;color:var(--text);}
  .hp-h-sub{font-size:12px;font-weight:400;color:var(--muted);margin-left:6px;}
  .hp-muted{color:var(--muted);}
  .hp-link{color:var(--accent-text);}
  .hp-two{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:start;}

  .hp-bars{border:1px solid var(--border);border-radius:5px;background:var(--bg-elev-2);overflow:hidden;}
  .hp-bar{padding:11px 14px;border-bottom:1px solid var(--border);font-size:13.5px;}
  .hp-bar:last-child{border-bottom:none;}
  .hp-bar-top{display:flex;justify-content:space-between;align-items:center;}
  .hp-bar-top > span:first-child{font-weight:600;}
  .hp-bar-val{color:var(--muted);font-size:12px;font-family:var(--font-mono);}
  .hp-bar-val b{color:var(--text);font-size:13px;}
  .hp-bar-track{height:4px;border-radius:2px;background:var(--border);margin-top:8px;overflow:hidden;}
  .hp-bar-fill{height:100%;background:var(--accent);border-radius:2px;}
  .hp-rating{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);}
  .hp-rating b{font-size:15px;}

  .hp-statgrid{display:grid;border:1px solid var(--border);border-radius:5px;background:var(--bg-elev-2);}
  .hp-statgrid-3{grid-template-columns:repeat(3,1fr);}
  .hp-statgrid-2{grid-template-columns:repeat(2,1fr);}
  .hp-statgrid-4{grid-template-columns:repeat(4,1fr);}
  .hp-statgrid > div{padding:16px 8px;text-align:center;border-right:1px solid var(--border);}
  .hp-statgrid > div:last-child{border-right:none;}
  .hp-statgrid b{display:block;font-size:22px;font-weight:700;font-family:var(--font-mono);}
  .hp-statgrid span{display:block;font-size:11.5px;color:var(--muted);margin-top:2px;}
  .hp-statgrid-4 > div{padding:12px 6px;}
  .hp-statgrid-4 b{font-size:17px;}

  .hp-btn{background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text);font:inherit;font-size:12px;font-weight:600;padding:5px 12px;border-radius:4px;cursor:pointer;white-space:nowrap;}
  .hp-btn:hover{border-color:var(--accent);color:var(--accent-text);}
  .hp-btn-wide{display:block;width:100%;margin-top:10px;padding:11px;font-size:13px;}

  .hp-mcard{display:flex;align-items:center;gap:10px;background:var(--bg-elev-2);border:1px solid var(--border);border-right:3px solid transparent;border-radius:4px;padding:10px 14px;margin-bottom:8px;cursor:pointer;transition:border-color .12s;}
  .hp-mcard:hover{border-color:var(--accent);}
  .hp-mcard.win{border-right-color:var(--green);}
  .hp-mcard.loss{border-right-color:var(--red);}
  .hp-vs-label{color:var(--muted);font-size:12px;}
  .hp-mmain{flex:1;min-width:0;}
  .hp-mname{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hp-msub{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hp-mtime{text-align:right;line-height:1.2;}
  .hp-mtime b{display:block;font-size:14px;font-family:var(--font-mono);}
  .hp-mtime span{font-size:11.5px;color:var(--muted);}
  .hp-mscore{font-family:var(--font-mono);font-weight:700;font-size:14px;}
  .hp-live{background:var(--red);color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.6px;padding:2px 7px;border-radius:3px;}

  .hp-table{margin-top:0;}
  .hp-scroll{overflow-x:auto;}
  .hp-thead{color:var(--muted);font-size:12px;padding-top:6px !important;padding-bottom:8px !important;}
  .hp-group{text-align:center;font-weight:700;font-size:15px;color:var(--muted);background:var(--bg-elev-2);padding:12px;border-radius:4px;margin:14px 0 2px;}
  .hp-group:first-child{margin-top:0;}
  .hp-trow{display:grid;grid-template-columns:200px 1fr 1fr;gap:12px;align-items:center;padding:12px 6px;border-bottom:1px solid var(--border);font-size:13.5px;}
  .hp-mrow{display:grid;grid-template-columns:110px 1fr auto auto;gap:14px;align-items:center;padding:10px 6px;border-bottom:1px solid var(--border);font-size:13.5px;cursor:pointer;}
  .hp-mrow:hover,.hp-arow:hover{background:var(--hover-2);}
  .hp-mrow > .hp-muted:first-child{white-space:nowrap;}
  .hp-mrow-up{grid-template-columns:150px 1fr auto auto;}
  .hp-arow{display:grid;grid-template-columns:70px 130px minmax(160px,1fr) 50px 60px 64px 96px;gap:12px;align-items:center;padding:11px 6px;border-bottom:1px solid var(--border);font-size:13.5px;cursor:pointer;min-width:640px;}
  .hp-thead.hp-arow,.hp-thead.hp-trow{cursor:default;}
  .hp-thead.hp-arow:hover{background:none;}
  .hp-vs{display:flex;align-items:center;justify-content:center;gap:12px;min-width:0;}
  .hp-side{display:inline-flex;align-items:center;gap:7px;flex:1;min-width:0;}
  .hp-side.end{justify-content:flex-end;}
  .hp-side .team-badge{border-radius:4px;flex-shrink:0;}
  .hp-tag{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hp-score{font-family:var(--font-mono);font-weight:700;background:var(--bg-elev-2);border-radius:999px;padding:3px 12px;flex-shrink:0;}
  .hp-score.win{color:var(--green);}
  .hp-score.loss{color:var(--red);}
  .hp-kda{font-family:var(--font-mono);font-size:12px;}

  .hp-tl{border:1px solid var(--border);border-radius:5px;background:var(--bg-elev-2);padding:12px 64px 14px 18px;}
  .hp-tl-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-family:var(--font-mono);margin-bottom:8px;}
  .hp-tl-axis2{position:relative;height:14px;margin-bottom:8px;font-size:10.5px;color:var(--muted);font-family:var(--font-mono);}
  .hp-tl-tick{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap;}
  .hp-tl-rows{position:relative;}
  .hp-tl-grid{position:absolute;top:0;bottom:0;width:1px;background:var(--border);opacity:.55;}
  .hp-tl-row{position:relative;height:32px;}
  .hp-tl-dur{position:absolute;top:5px;line-height:12px;transform:translateX(15px);font-size:10.5px;font-family:var(--font-mono);color:var(--muted);white-space:nowrap;}
  .hp-tl-bar{position:absolute;top:6px;height:10px;border-radius:2px;background:var(--accent);opacity:.85;}
  .hp-tl-logo{position:absolute;top:0;transform:translateX(-50%);}

  .hp-empty{display:flex;align-items:center;gap:14px;border:1px solid var(--border);background:var(--bg-elev-2);border-radius:5px;padding:22px 20px;color:var(--muted);}
  .hp-empty-ico{font-size:26px;opacity:.6;}

  @media (max-width:820px){
    .hp-two{grid-template-columns:1fr;}
  }
  @media (max-width:600px){
    .hp-photo{width:120px;min-height:190px;}
    .hp-info{padding:14px 14px 4px;}
    .hp-nick{font-size:30px;}
    .hp-row{font-size:13px;}
    .hp-body{padding:16px 12px 20px;}
    .hp-mrow{grid-template-columns:1fr auto;grid-template-areas:'date date' 'vs vs' 'kda btn';gap:6px 10px;}
    .hp-mrow > :nth-child(1){grid-area:date;}
    .hp-mrow > :nth-child(2){grid-area:vs;}
    .hp-mrow > :nth-child(3){grid-area:kda;}
    .hp-mrow > :nth-child(4){grid-area:btn;}
    .hp-mrow-up{grid-template-columns:1fr auto;}
    .hp-trow{grid-template-columns:110px 1fr;}
    .hp-trow > :nth-child(3){grid-column:1 / -1;}
    .hp-tab{padding:12px 14px;}
  }
  .rep-badge{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:3px;background:linear-gradient(90deg,rgba(160,80,220,0.22),rgba(160,80,220,0.05));border:1px solid rgba(160,80,220,0.4);font-family:var(--font-display);font-size:16px;color:#d9a9ff;}
  .panel-box{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:14px 16px;}
  .panel-title{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:10px;font-family:var(--font-mono);}
  .panels-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px;}
  @media (max-width:680px){ .panels-row{grid-template-columns:1fr;} }
  .impact-gauge{width:150px;height:150px;border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center;margin:0 auto;}
  .impact-gauge::before{content:'';position:absolute;inset:13px;background:var(--bg-elev-2);border-radius:50%;}
  .impact-gauge-value{position:relative;z-index:1;text-align:center;}
  .stat-quadrant-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;}
  .stat-quadrant{text-align:center;}
  .stat-quadrant .v{font-family:var(--font-mono);font-size:16px;font-weight:700;}
  .stat-quadrant .l{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:0.5px;}
  .info-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px;}
  .info-row:last-child{border-bottom:none;}

  /* HLTV-style dense data tables: bold caps header row on a slightly
     darker strip, tight zebra striping, no vertical rules — the table
     itself carries the page's information density instead of cards. */
  table{width:100%;border-collapse:collapse;margin-top:14px;font-size:13.5px;}
  thead tr{background:var(--bg-elev-2);}
  th{text-align:left;font-family:var(--font-mono);font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:0.9px;padding:9px 10px;border-bottom:1px solid var(--border);}
  td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle;}
  tbody tr:nth-child(even) td{background:var(--hover-1);}
  tr:hover td{background:var(--hover-2);}
  .rank-num{font-family:var(--font-mono);color:#fff;width:26px;display:inline-block;}
  .rank-num.rank-num-1{color:#FFD700;}
  .rank-num.rank-num-2{color:#C0C6CE;}
  .rank-num.rank-num-3{color:#CD7F32;}
  .mono{font-family:var(--font-mono);}
  .pos{color:var(--green);}
  .neg{color:var(--red);}
  .clickable-cell{cursor:pointer;color:var(--accent-2-text);}
  .clickable-cell:hover{text-decoration:underline;}

  .empty{border:1px dashed var(--border);border-radius:4px;padding:34px 20px;text-align:center;color:var(--muted);margin-top:16px;}
  .empty b{color:var(--text);}

  .overlay{position:fixed;inset:0;background:rgba(4,5,7,0.72);display:none;align-items:center;justify-content:center;z-index:50;padding:20px;}
  .overlay.open{display:flex;}
  .modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;padding:26px;width:100%;max-width:440px;max-height:88vh;overflow-y:auto;position:relative;}
  .modal.wide{max-width:660px;}
  .modal.xwide{max-width:760px;}
  .checkbox-inline{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:12px;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:400;cursor:pointer;}
  .checkbox-inline input{width:auto;margin:0;}
  .modal-details{margin:18px 0 0;padding-top:12px;border-top:1px solid var(--border);}
  .modal-details:first-of-type{margin-top:0;padding-top:0;border-top:none;}
  .modal-details summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--font-mono);font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:10px;}
  .modal-details summary::-webkit-details-marker{display:none;}
  .modal-details summary::after{content:'+ Открыть';font-size:10.5px;color:var(--accent-text);letter-spacing:0;text-transform:none;flex-shrink:0;}
  .modal-details[open] summary::after{content:'– Свернуть';}
  .modal h3{font-size:26px;text-transform:uppercase;margin-bottom:14px;}
  .modal-section-title{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:0.8px;margin:18px 0 6px;padding-top:12px;border-top:1px solid var(--border);}
  .modal-section-title:first-of-type{margin-top:0;padding-top:0;border-top:none;}
  .field{margin-bottom:12px;}
  .field label{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:5px;}
  .field input,.field select,.field textarea{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:9px 11px;border-radius:3px;font-family:var(--font-body);font-size:14px;}
  .field textarea{resize:vertical;min-height:60px;}
  .field-row{display:flex;gap:10px;}
  .field-row .field{flex:1;}
  .modal-actions{display:flex;gap:10px;margin-top:18px;}
  .modal-actions .btn{flex:1;}
  .modal-close{position:absolute;top:16px;right:18px;background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;}
  .modal-err{color:var(--red);font-size:12.5px;margin-top:6px;min-height:16px;}
  /* --- кадрирование картинок перед загрузкой (см. openImageCropper) --- */
  .crp-overlay{position:fixed;inset:0;background:rgba(4,5,7,0.86);display:flex;align-items:center;justify-content:center;z-index:400;padding:14px;}
  .crp-box{background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:18px;width:100%;max-width:640px;max-height:96vh;overflow-y:auto;display:flex;flex-direction:column;gap:12px;}
  .crp-title{font-size:22px;text-transform:uppercase;margin:0;}
  .crp-hint{font-size:12.5px;color:var(--muted);line-height:1.45;}
  .crp-ratios{display:flex;gap:6px;flex-wrap:wrap;}
  .crp-chip{font-family:var(--font-mono);font-size:12px;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--muted);cursor:pointer;}
  .crp-chip.on{border-color:var(--accent-2);color:var(--accent-2-text);}
  .crp-stage{position:relative;width:100%;height:min(56vh,420px);background:#07090d;overflow:hidden;border-radius:4px;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;}
  .crp-stage.grabbing{cursor:grabbing;}
  .crp-img{position:absolute;left:0;top:0;max-width:none;max-height:none;transform-origin:0 0;pointer-events:none;-webkit-user-drag:none;}
  .crp-frame{position:absolute;box-sizing:border-box;border:2px solid var(--accent-2);box-shadow:0 0 0 999px rgba(6,8,12,0.62);pointer-events:none;
    background-image:linear-gradient(rgba(255,255,255,.22),rgba(255,255,255,.22)),linear-gradient(rgba(255,255,255,.22),rgba(255,255,255,.22)),linear-gradient(90deg,rgba(255,255,255,.22),rgba(255,255,255,.22)),linear-gradient(90deg,rgba(255,255,255,.22),rgba(255,255,255,.22));
    background-size:100% 1px,100% 1px,1px 100%,1px 100%;background-position:0 33.333%,0 66.666%,33.333% 0,66.666% 0;background-repeat:no-repeat;}
  .crp-frame.round{border-radius:50%;background-image:none;}
  .crp-zoom{display:flex;align-items:center;gap:10px;}
  .crp-zoom input[type=range]{flex:1;padding:0;border:none;background:none;accent-color:var(--accent-2);}
  .crp-zbtn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:var(--bg-elev-2);color:var(--text);font-size:18px;line-height:1;cursor:pointer;user-select:none;}
  .crp-actions{display:flex;gap:10px;flex-wrap:wrap;}
  .crp-actions .btn{flex:1;min-width:110px;}
  .rules-body{font-size:13.5px;color:var(--muted);line-height:1.65;}
  .rules-body p{margin:0 0 14px;}
  .rules-body b{color:var(--text);font-family:var(--font-mono);font-size:12.5px;text-transform:uppercase;letter-spacing:0.3px;}
  .rules-btn-wrap{margin-top:26px;padding-top:18px;border-top:1px solid var(--border);text-align:center;}
  .rules-btn-wrap .btn{background:var(--bg-elev-2);border-color:var(--red);color:var(--red);font-size:12.5px;letter-spacing:0.3px;}
  .rules-btn-wrap .btn:hover{background:var(--red);color:#fff;}
  .ban-pill{display:inline-block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:0.5px;color:var(--red);border:1px solid var(--red);border-radius:2px;padding:1px 6px;margin-left:6px;text-transform:uppercase;}
  /* ---------- Live streaming indicator ---------- */
  .live-badge{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:0.5px;color:#fff;background:var(--red);border-radius:3px;padding:2px 7px 2px 6px;text-transform:uppercase;vertical-align:middle;margin-left:6px;}
  .live-badge::before{content:'';width:6px;height:6px;border-radius:50%;background:#fff;animation:live-pulse 1.4s ease-in-out infinite;}
  @keyframes live-pulse{0%,100%{opacity:1;}50%{opacity:.25;}}
  .live-now-strip{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0 0 18px;padding:10px 14px;border:1px solid var(--red);border-radius:6px;background:rgba(255,77,94,0.06);}
  .live-now-strip .lns-label{font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:1px;color:var(--red);text-transform:uppercase;margin-right:2px;}
  .live-now-chip{display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--text);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:20px;padding:4px 10px 4px 4px;font-size:13px;transition:border-color .15s;}
  .live-now-chip:hover{border-color:var(--red);}
  /* ---------- Team media gallery ---------- */
  .media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-top:14px;}
  .media-item{position:relative;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;overflow:hidden;}
  .media-item .media-thumb{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--bg-elev-2);}
  .media-item .media-embed{width:100%;aspect-ratio:16/9;border:0;display:block;}
  .media-item .media-title{padding:8px 10px;font-size:13px;color:var(--muted);}
  .media-item .media-link-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;aspect-ratio:16/9;color:var(--text);text-decoration:none;font-size:14px;padding:10px;text-align:center;}
  .media-item .media-remove{position:absolute;top:6px;right:6px;background:rgba(7,10,16,0.7);color:var(--red);border:1px solid var(--red);border-radius:50%;width:24px;height:24px;line-height:1;cursor:pointer;font-size:13px;}
  .auth-tabs{display:flex;gap:4px;margin-bottom:20px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:4px;}
  .auth-tabs button{flex:1;background:none;border:none;color:var(--muted);padding:9px 8px;border-radius:4px;cursor:pointer;font-size:13px;font-weight:600;transition:background-color .15s ease,color .15s ease;}
  .auth-tabs button.active{color:var(--on-accent);background:var(--accent);}
  .auth-modal{max-width:400px;padding-top:30px;}
  .auth-modal h3{font-size:24px;text-align:center;margin-bottom:18px;}
  .auth-sub{color:var(--muted);font-size:13px;text-align:center;margin:-10px 0 18px;}
  .auth-avatar-picker{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:18px;}
  .auth-avatar-preview{width:84px;height:84px;border-radius:50%;background:var(--bg);border:2px dashed var(--border);display:flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer;overflow:hidden;position:relative;transition:border-color .15s ease;}
  .auth-avatar-preview:hover{border-color:var(--accent);color:var(--accent-text);}
  .auth-avatar-preview img{width:100%;height:100%;object-fit:cover;}
  .auth-avatar-preview .cam-badge{position:absolute;bottom:0;right:0;width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center;font-size:13px;border:2px solid var(--bg-elev);}
  .auth-forgot{text-align:right;margin:-6px 0 14px;}
  .auth-forgot a{color:var(--accent-2-text);font-size:12.5px;text-decoration:none;cursor:pointer;}
  .auth-forgot a:hover{text-decoration:underline;}
  .auth-back{color:var(--muted);font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;margin-bottom:14px;}
  .auth-back:hover{color:var(--text);}

  .admin-block{margin-bottom:34px;}
  .review-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg-elev);border:1px solid var(--border);border-radius:3px;padding:10px 14px;margin-bottom:8px;flex-wrap:wrap;}
  .review-row .meta{font-size:12.5px;color:var(--muted);}
  .review-row .actions{display:flex;gap:6px;flex-shrink:0;align-items:center;}
  .rp-input{width:70px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:6px 8px;border-radius:3px;font-family:var(--font-mono);font-size:12.5px;}
  .toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--bg-elev-2);border:1px solid var(--border);border-left:3px solid var(--green);color:var(--text);padding:12px 18px;border-radius:3px;font-size:13.5px;z-index:100;display:none;max-width:88vw;}
  .toast.err{border-left-color:var(--red);}

  .hero{padding:34px 0 10px;}
  .hero h1{font-size:52px;line-height:0.95;}
  .hero .sub{color:var(--muted);max-width:520px;margin-top:8px;font-size:15px;}

  .players-table td.role{font-family:var(--font-mono);font-size:11px;color:var(--accent-2-text);text-transform:uppercase;}
  .del-x{background:none;border:none;color:var(--red);cursor:pointer;font-size:15px;}

  .meta-label{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:0.6px;}
  .meta-val{font-family:var(--font-mono);font-size:21px;font-weight:700;margin-top:2px;}
  .meta-block{min-width:90px;}

  .toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 4px;}
  .toolbar input[type=text],.toolbar select{background:var(--bg-elev);border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:3px;font-size:13.5px;font-family:var(--font-body);}
  .toolbar input[type=text]{flex:1;min-width:180px;}

  .load-more{display:flex;justify-content:center;margin-top:18px;}
  .post-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:20px 22px;margin-bottom:14px;position:relative;overflow:hidden;transition:border-color .12s ease;}
  .post-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);}
  .post-card:hover{border-color:rgba(var(--accent-rgb),0.4);}
  .post-card.auto::before{background:var(--accent-2);}
  .post-meta-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
  .post-meta-pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-family:var(--font-mono);color:var(--muted);background:var(--bg-elev-2);border-radius:999px;padding:3px 10px;}
  .post-title{font-size:24px;font-family:var(--font-display);line-height:1.2;}
  .post-image{max-width:100%;max-height:440px;width:100%;object-fit:cover;border-radius:8px;margin:12px 0;display:block;border:1px solid var(--border);}
  .post-body{font-size:14.5px;line-height:1.6;color:var(--text);white-space:pre-wrap;margin-top:8px;}
  .post-footer{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border);flex-wrap:wrap;}
  .post-reactions{display:flex;gap:4px;flex-wrap:wrap;margin-right:auto;}
  .post-reaction-btn{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:3px 9px;font-size:14px;cursor:pointer;line-height:1.4;transition:border-color .12s ease,background .12s ease,transform .1s ease;}
  .post-reaction-btn:hover{border-color:var(--accent);transform:translateY(-1px);}
  .post-reaction-btn.active{background:rgba(var(--accent-rgb),0.18);border-color:var(--accent);}
  .post-reaction-count{font-size:11.5px;font-family:var(--font-mono);color:var(--muted);font-weight:700;}

  /* Emoji picker popup (custom reaction) */
  .emoji-picker-popup{position:absolute;z-index:60;width:280px;max-height:280px;display:flex;flex-direction:column;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);padding:8px;}
  .emoji-picker-cats{display:flex;gap:2px;overflow-x:auto;margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--border);flex-shrink:0;}
  .emoji-picker-cat-btn{background:none;border:none;border-radius:6px;font-size:16px;padding:4px 6px;cursor:pointer;opacity:.55;flex-shrink:0;}
  .emoji-picker-cat-btn:hover{opacity:.85;background:var(--hover-1);}
  .emoji-picker-cat-btn.active{opacity:1;background:rgba(var(--accent-rgb),0.16);}
  .emoji-picker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;overflow-y:auto;}
  .emoji-picker-item{background:none;border:none;border-radius:6px;font-size:19px;line-height:1;padding:5px 0;cursor:pointer;}
  .emoji-picker-item:hover{background:var(--hover-2);}

  /* News composer (create/edit post modal) */
  .post-compose-title-input{font-size:20px;font-family:var(--font-display);font-weight:700;}
  .post-image-preview{display:none;margin-top:8px;border:1px solid var(--border);border-radius:6px;overflow:hidden;max-height:220px;}
  .post-image-preview img{width:100%;max-height:220px;object-fit:cover;display:block;}

  .avatar{border-radius:50%;object-fit:cover;vertical-align:middle;flex-shrink:0;}
  .avatar-fallback{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-elev-2);color:var(--muted);vertical-align:middle;flex-shrink:0;}



  /* ---- Стикеры Глобалов (stk-*) ----------------------------------------
     Стикер = «вырубка» с белой каймой + лицо. Лицо задаёт фон уровня:
       regular (участник)  — бумага            blue (плей-офф) — синяя бумага
       red (топ-4)         — красный металл    silver (топ-2)  — серебристый металл
       gold (топ-1)        — золото
     Всё рисуется градиентами и одним SVG-шумом для бумаги, без картинок;
     единственные внешние изображения — логотип команды и роспись игрока. */
  .stk-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:18px; justify-items:center; margin:14px 0 6px; }
  .stk-cell{ display:flex; flex-direction:column; align-items:center; gap:8px; }
  .stk-h{ font-size:17px; margin:26px 0 0; }
  .stk-note{ border:1px solid var(--border); border-radius:8px; padding:12px 14px; margin-top:14px; background:var(--bg-elev-2); font-size:13.5px; line-height:1.5; }
  .stk-note.ok{ border-color:var(--green); } .stk-note.warn{ border-color:var(--yellow); } .stk-note.bad{ border-color:var(--red); }
  .stk-preview{ min-height:10px; margin:6px 0 12px; }
  .stk{
    --stk-ink:#2b2720; --stk-line:rgba(60,50,30,.28); --stk-chip:#2b2720; --stk-chip-ink:#f4efe4; --stk-signbg:transparent;
    --stk-bg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35  0 0 0 0 .28  0 0 0 0 .16  0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23n%29'/%3E%3C/svg%3E"), linear-gradient(160deg,#f6f1e6,#e6dcc6); --stk-sheen:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.35) 50%,transparent 60%);
    width:176px; height:176px; padding:5px; box-sizing:border-box; border-radius:20px; background:#f8f6f1; flex-shrink:0;
    box-shadow:0 8px 18px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.7);
  }
  .stk-face{
    position:relative; width:100%; height:100%; box-sizing:border-box; border-radius:15px; overflow:hidden;
    display:flex; flex-direction:column; align-items:center; justify-content:space-between; gap:2px;
    padding:9px 8px 8px; text-align:center; color:var(--stk-ink); background:var(--stk-bg);
  }
  .stk-face::before{ content:''; position:absolute; inset:0; background:var(--stk-sheen); pointer-events:none; }
  .stk-face::after{ content:''; position:absolute; inset:4px; border-radius:11px; border:1px solid var(--stk-line); pointer-events:none; }
  .stk-face > *{ position:relative; z-index:1; }
  .stk-tier{ font-family:var(--font-display); font-weight:700; font-size:13px; line-height:1.15; letter-spacing:1.2px; text-transform:uppercase; padding:1px 10px; border-radius:999px; background:var(--stk-chip); color:var(--stk-chip-ink); }
  .stk-logo{ width:80px; height:80px; display:flex; align-items:center; justify-content:center; filter:drop-shadow(0 3px 4px rgba(0,0,0,.35)); }
  .stk-logo img{ max-width:100%; max-height:100%; object-fit:contain; border-radius:10px; }
  .stk-tag{ font-family:var(--font-display); font-size:46px; font-weight:700; line-height:1; letter-spacing:1px; }
  .stk-name{ font-family:var(--font-display); font-size:22px; font-weight:700; line-height:1; letter-spacing:.5px; }
  .stk-event{ font-size:9.5px; font-weight:700; opacity:.78; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .stk-sign{ width:100%; height:64px; display:flex; align-items:center; justify-content:center; border-radius:8px; }
  .stk-sign.has-img{ background:var(--stk-signbg); }
  .stk-sign img{ max-width:100%; max-height:100%; object-fit:contain; }
  .stk-nickbig{ font-family:var(--font-display); font-weight:700; line-height:1; letter-spacing:.5px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .stk-nick{ font-size:12px; font-weight:800; line-height:1; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .stk-teamline{ display:flex; align-items:center; gap:5px; font-size:11px; font-weight:800; line-height:1; }
  .stk-teamline img{ width:16px; height:16px; object-fit:contain; border-radius:4px; }

  .stk-blue{
    --stk-ink:#0f2a55; --stk-line:rgba(30,80,170,.42); --stk-chip:#2f6fe0; --stk-chip-ink:#fff;
    --stk-bg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35  0 0 0 0 .28  0 0 0 0 .16  0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23n%29'/%3E%3C/svg%3E"), linear-gradient(160deg,#eaf2fd,#c3d8f6);
  }
  .stk-red{
    --stk-ink:#fff4ee; --stk-line:rgba(255,255,255,.38); --stk-chip:#fff1e8; --stk-chip-ink:#7a0e14; --stk-signbg:rgba(255,255,255,.86);
    --stk-bg:repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 1px,rgba(0,0,0,.09) 1px 2px), linear-gradient(135deg,#6b0d14,#c8252f 38%,#8d141c 62%,#4d0a10);
    --stk-sheen:linear-gradient(112deg,transparent 28%,rgba(255,255,255,.32) 44%,transparent 58%);
  }
  .stk-silver{
    --stk-ink:#1c2128; --stk-line:rgba(255,255,255,.6); --stk-chip:#2a313b; --stk-chip-ink:#e8edf3;
    --stk-bg:repeating-linear-gradient(90deg,rgba(255,255,255,.2) 0 1px,rgba(0,0,0,.05) 1px 2px), linear-gradient(135deg,#8b949f,#e9edf2 34%,#a7b0ba 58%,#dfe4ea 80%,#7f8893);
    --stk-sheen:linear-gradient(112deg,transparent 28%,rgba(255,255,255,.5) 44%,transparent 58%);
  }
  .stk-gold{
    --stk-ink:#3a2705; --stk-line:rgba(255,246,200,.65); --stk-chip:#3a2705; --stk-chip-ink:#ffe08a;
    --stk-bg:linear-gradient(135deg,#8a6512,#f3cf62 26%,#fff0ac 44%,#dcaa27 62%,#a97c17 80%,#f0c94f);
    --stk-sheen:linear-gradient(112deg,transparent 26%,rgba(255,255,255,.55) 42%,transparent 56%);
  }

  /* ---- Стикеры с артом события (stk-art) ---------------------------------
     Готовая картинка (бумага → синяя бумага → красный металл → серебро → золото).
     Команда: на арте с эмблемой стоит медальон с логотипом и тегом.
     Игрок: арт с «приглушённой» эмблемой (--stk-art-p, эмблема остаётся лишь
     водяным знаком), а роспись/ник лежат прямо на стикере, без плашки; ниже —
     ник и команда. Позиции считаются от размера стикера (cqw), поэтому всё
     масштабируется вместе с ним. --cx/--cy/--r — центр и радиус кольца эмблемы;
     --ay0/--ay1 — свободная зона под роспись (в радиусах от центра); --tk/--ts —
     цвет и тень текста; --pf/--pe/--pe2/--pk — цвета медальона команды.
     Роспись (у .stk-pbox нет transform/opacity — иначе blend-mode изолируется): на светлых стикерах — как чернила (multiply, белый фон JPG
     пропадает), на тёмных — светлой (инверсия + screen). Арт встроен как WebP
     (data-URI), чтобы index.html работал сам по себе. Включается stkArtOn() в JS. */
  .stk-grid:has(.stk-art){ grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr)); }
  .stk.stk-art{
    position:relative; container-type:inline-size;
    width:min(var(--stk-w),100%); height:auto; aspect-ratio:var(--stk-ar);
    padding:0; border-radius:0; background:none; box-shadow:none; color:var(--pk);
  }
  .stk-art::before{
    content:''; position:absolute; inset:0; pointer-events:none;
    background:var(--stk-art) center/100% 100% no-repeat;
    filter:drop-shadow(0 6px 9px rgba(0,0,0,.38));
  }
  .stk-art.stk-player::before{ background-image:var(--stk-art-p); }
  .stk-art .stk-medal{
    position:absolute; left:var(--cx); top:var(--cy); transform:translate(-50%,-50%);
    box-sizing:border-box; display:flex; flex-direction:column; align-items:center; justify-content:center;
    background:var(--pf); text-align:center; overflow:hidden;
    box-shadow:0 0 0 .5cqw var(--pe), 0 0 0 1cqw var(--pe2), 0 1.4cqw 2.6cqw rgba(0,0,0,.5),
               inset 0 .4cqw .8cqw rgba(255,255,255,.65), inset 0 -.6cqw 1.2cqw rgba(0,0,0,.16);
    width:calc(var(--r)*1.74); aspect-ratio:1; border-radius:50%; gap:calc(var(--r)*.03);
  }
  .stk-art .stk-medal img{ width:60%; height:60%; object-fit:contain; border-radius:calc(var(--r)*.16); filter:drop-shadow(0 .5cqw .8cqw rgba(0,0,0,.3)); }
  .stk-art .stk-medal .stk-tag{ font-size:calc(var(--r)*.7); }
  .stk-art .stk-mtag{ font-family:var(--font-display); font-weight:700; line-height:1; letter-spacing:.06em; text-transform:uppercase; font-size:calc(var(--r)*.27); max-width:86%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .stk-art .stk-pbox{
    position:absolute; left:calc(var(--cx) - var(--r)*1.55); top:calc(var(--cy) + var(--r)*var(--ay0));
    width:calc(var(--r)*3.1); height:calc(var(--r)*(var(--ay1) - var(--ay0)));
    box-sizing:border-box; display:flex; flex-direction:column; align-items:center; justify-content:center;
    gap:calc(var(--r)*.05); text-align:center; color:var(--tk); text-shadow:var(--ts);
  }
  .stk-art .stk-sign{ position:relative; flex:1 1 0; min-height:0; width:100%; height:auto; background:none; }
  .stk-art .stk-sign.has-img{ background:none; }
  .stk-art .stk-sign img{ position:absolute; inset:0; width:100%; height:100%; max-width:none; max-height:none; object-fit:contain; mix-blend-mode:multiply; }
  .stk-art.stk-red .stk-sign img, .stk-art.stk-silver .stk-sign img{ mix-blend-mode:screen; filter:grayscale(1) contrast(1.2) invert(1); }
  .stk-art.stk-gold .stk-sign img{ mix-blend-mode:screen; filter:grayscale(1) contrast(1.2) invert(1) sepia(1) saturate(2.4) brightness(1.15); }
  .stk-art .stk-nickbig{ line-height:1; max-width:100%; }
  .stk-art .stk-nick{ font-size:calc(var(--r)*.22); letter-spacing:.06em; text-transform:uppercase; }
  .stk-art .stk-teamline{ gap:calc(var(--r)*.08); font-size:calc(var(--r)*.2); letter-spacing:.04em; text-transform:uppercase; }
  .stk-art .stk-teamline img{ width:calc(var(--r)*.26); height:calc(var(--r)*.26); border-radius:calc(var(--r)*.05); }
  .stk-art.stk-regular{
    --stk-w:276px; --stk-ar:640/507; --cx:50.1cqw; --cy:38.2cqw; --r:20.6cqw;
    --pf:radial-gradient(circle at 35% 28%,#fbf6ea,#e9dfc8 68%,#d9ccae); --pe:#173a6b; --pe2:rgba(23,58,107,.38); --pk:#12274a;
    --ay0:-1.0; --ay1:1.2; --tk:#12274a; --ts:0 0 .5cqw rgba(246,241,230,.9);
    --stk-art:var(--asset-1);
    --stk-art-p:var(--asset-2);
  }
  .stk-art.stk-blue{
    --stk-w:292px; --stk-ar:640/444; --cx:49.0cqw; --cy:36.2cqw; --r:19.3cqw;
    --pf:radial-gradient(circle at 35% 28%,#f5f9ff,#d0e1f8 68%,#b1cbef); --pe:#14408a; --pe2:rgba(20,64,138,.38); --pk:#0f2a55;
    --ay0:-0.95; --ay1:1.0; --tk:#0f2a55; --ts:0 0 .5cqw rgba(214,229,248,.9);
    --stk-art:var(--asset-3);
    --stk-art-p:var(--asset-4);
  }
  .stk-art.stk-red{
    --stk-w:300px; --stk-ar:640/444; --cx:49.7cqw; --cy:36.6cqw; --r:18.5cqw;
    --pf:radial-gradient(circle at 35% 28%,#fff8f2,#ecdcd2 68%,#d3bcaf); --pe:#e3e7ec; --pe2:rgba(90,8,14,.6); --pk:#4d0a10;
    --ay0:-0.95; --ay1:1.0; --tk:#fff4ee; --ts:0 .35cqw .8cqw rgba(40,0,0,.75);
    --stk-art:var(--asset-5);
    --stk-art-p:var(--asset-6);
  }
  .stk-art.stk-silver{
    --stk-w:336px; --stk-ar:640/467; --cx:50.1cqw; --cy:42.0cqw; --r:15.8cqw;
    --pf:radial-gradient(circle at 35% 28%,#ffffff,#dfe5ec 62%,#a9b4c1); --pe:#f1f4f8; --pe2:rgba(20,30,50,.55); --pk:#1c2128;
    --ay0:-1.05; --ay1:0.75; --tk:#f1f4f8; --ts:0 .35cqw .8cqw rgba(0,0,0,.8);
    --stk-art:var(--asset-7);
    --stk-art-p:var(--asset-8);
  }
  .stk-art.stk-gold{
    --stk-w:312px; --stk-ar:640/489; --cx:50.0cqw; --cy:41.2cqw; --r:17.6cqw;
    --pf:radial-gradient(circle at 35% 28%,#fff9dc,#f2d270 62%,#c69726); --pe:#ffe58f; --pe2:rgba(58,39,5,.6); --pk:#3a2705;
    --ay0:-1.15; --ay1:0.85; --tk:#ffe08a; --ts:0 .35cqw .8cqw rgba(0,0,0,.85);
    --stk-art:var(--asset-9);
    --stk-art-p:var(--asset-10);
  }

  /* ---- Team header skins (ths-*) --------------------------------------
     Оформления шапки профиля команды: Classic (обычная — без обёртки,
     ничего не меняется), Elite (выдаёт админ), Global Elite (победитель
     Глобала, авто) и Red Hot (3–4 место на Глобале, авто). Как и у
     игроков (hps-*), скин задаёт только набор переменных --ths-*, а
     фон — картинка из assets.js (см. ниже) или градиенты. Текст внутри
     всегда светлый, потому что фон тёмный в любой теме сайта. Цвета
     команды остаются видны — полоской по нижнему краю шапки. */
  .th-skin{
    position:relative;
    border:2px solid transparent;
    border-radius:12px;
    background:linear-gradient(#0c0f13,#0c0f13) padding-box, var(--ths-frame) border-box;
    box-shadow:0 12px 38px rgba(0,0,0,.45), 0 0 0 1px rgba(0,0,0,.5), 0 0 26px -10px var(--ths-glow);
    overflow:hidden;
    margin-bottom:14px;
    color:#F2F5F8;
  }
  .th-skin-body{ position:relative; display:flex; flex-direction:column; padding:42px 20px 0; }
  .th-skin-body::before{ content:''; position:absolute; inset:0; pointer-events:none; background:var(--ths-art); }
  .th-skin-body::after{
    content:''; position:absolute; inset:0; pointer-events:none;
    background:
      linear-gradient(90deg, rgba(10,12,15,.9) 0%, rgba(10,12,15,.5) 30%, rgba(10,12,15,.12) 62%, rgba(10,12,15,.5) 100%),
      radial-gradient(120% 150% at 50% 50%, transparent 40%, rgba(0,0,0,.5) 100%);
  }
  .th-skin-body > *{ position:relative; z-index:1; }
  .th-skin .team-color-banner{ order:9; height:5px; margin:14px -20px 0; border-radius:0; }
  .th-skin .team-name{ color:#F2F5F8; }
  .th-skin .team-country{ color:rgba(242,245,248,.62); }
  .th-skin .team-desc{ color:rgba(242,245,248,.74); }
  .th-skin .btn-ghost{ background:rgba(255,255,255,.07); border-color:rgba(255,255,255,.2); color:#F2F5F8; }
  .th-skin .btn-ghost:hover{ border-color:var(--ths-accent); color:var(--ths-accent); }
  .ths-name{
    font-weight:800; letter-spacing:-.3px;
    background:var(--ths-name);
    -webkit-background-clip:text; background-clip:text;
    -webkit-text-fill-color:transparent; color:transparent;
    filter:drop-shadow(0 3px 10px rgba(0,0,0,.6));
  }
  .ths-ribbon{
    position:absolute; top:0; left:0; z-index:6; height:30px; display:flex; align-items:center; gap:7px;
    padding:0 26px 0 11px; font-family:var(--font-display); font-size:13px; font-weight:800;
    letter-spacing:1px; text-transform:uppercase; white-space:nowrap;
    color:var(--ths-ribbon-text); background:var(--ths-ribbon);
    border-radius:10px 0 0 0;
    clip-path:polygon(0 0, 100% 0, calc(100% - 16px) 100%, 0 100%);
    box-shadow:0 4px 14px rgba(0,0,0,.5);
  }
  .ths-ribbon svg{ flex-shrink:0; }
  .ths-ribbon::after{
    content:''; position:absolute; top:0; right:-14px; width:24px; height:100%;
    background:var(--ths-ribbon); opacity:.5;
    clip-path:polygon(9px 0, 100% 0, calc(100% - 16px) 100%, 0 100%);
  }

  /* --- ELITE (чёрно-золотая, выдаёт админ) --- */
  .ths-elite{
    --ths-accent:#EDCB7B;
    --ths-glow:rgba(237,203,123,.32);
    --ths-frame:linear-gradient(135deg,#F0D48A,#0f1216 46%,#B8933F);
    --ths-ribbon:linear-gradient(100deg,#33373f,#101317);
    --ths-ribbon-text:#F0D48A;
    --ths-name:linear-gradient(180deg,#FFF1C9,#D9A83C);
    --ths-art:
      linear-gradient(103deg, transparent 24%, rgba(255,232,170,.11) 41%, transparent 55%),
      radial-gradient(52% 115% at 84% 8%, rgba(237,203,123,.30), transparent 60%),
      radial-gradient(75% 135% at 38% 115%, rgba(120,88,20,.42), transparent 62%),
      linear-gradient(122deg,#08090c,#1c1c20 50%,#050609);
  }
  /* --- GLOBAL ELITE (золото + фиолетовый, победитель Глобала, авто) --- */
  .ths-globalelite{
    --ths-accent:#F5CE5B;
    --ths-glow:rgba(245,206,91,.5);
    --ths-frame:linear-gradient(135deg,#FFE894,#7a5c12 44%,#FFD34E);
    --ths-ribbon:linear-gradient(100deg,#FFEB9C,#D8A11E);
    --ths-ribbon-text:#170f02;
    --ths-name:linear-gradient(180deg,#FFF3C4,#E8B73A);
    --ths-art:
      linear-gradient(103deg, transparent 24%, rgba(255,225,150,.12) 41%, transparent 55%),
      radial-gradient(50% 115% at 84% 6%, rgba(245,206,91,.38), transparent 60%),
      radial-gradient(78% 140% at 40% 118%, rgba(104,45,190,.55), transparent 64%),
      linear-gradient(122deg,#0b0713,#2a1a4c 50%,#08050f);
  }
  /* --- RED HOT (красный + оранжевый, 3–4 место на Глобале, авто) --- */
  .ths-redhot{
    --ths-accent:#FF8A3D;
    --ths-glow:rgba(255,80,40,.55);
    --ths-frame:linear-gradient(135deg,#FFB347,#8a0f10 46%,#FF4B2B);
    --ths-ribbon:linear-gradient(100deg,#FFB05A,#E62E1F);
    --ths-ribbon-text:#1c0603;
    --ths-name:linear-gradient(180deg,#FFE3B0,#FF8A3D 55%,#F0402A);
    --ths-art:
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cdefs%3E%3ClinearGradient id='f' x1='0' y1='1' x2='0' y2='0'%3E%3Cstop offset='0' stop-color='%23E62E1F'/%3E%3Cstop offset='.55' stop-color='%23FF7A1F'/%3E%3Cstop offset='1' stop-color='%23FFC15A'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='url%28%23f%29' fill-opacity='.34' d='M20 40C8 40 3 31 7 22c2-4 6-6 6-12 4 2 6 6 6 10 2-6 4-12 2-20 10 8 16 20 12 30-2 6-6 10-14 10z'/%3E%3C/svg%3E") 0 100% / 64px 44px repeat-x,
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cdefs%3E%3ClinearGradient id='f' x1='0' y1='1' x2='0' y2='0'%3E%3Cstop offset='0' stop-color='%23E62E1F'/%3E%3Cstop offset='.55' stop-color='%23FF7A1F'/%3E%3Cstop offset='1' stop-color='%23FFC15A'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='url%28%23f%29' fill-opacity='.20' d='M20 40C8 40 3 31 7 22c2-4 6-6 6-12 4 2 6 6 6 10 2-6 4-12 2-20 10 8 16 20 12 30-2 6-6 10-14 10z'/%3E%3C/svg%3E") 24px 100% / 40px 27px repeat-x,
      linear-gradient(103deg, transparent 24%, rgba(255,190,120,.10) 41%, transparent 55%),
      radial-gradient(50% 115% at 86% 6%, rgba(255,140,50,.36), transparent 60%),
      radial-gradient(78% 140% at 30% 118%, rgba(200,30,20,.55), transparent 64%),
      linear-gradient(122deg,#140404,#4a0f0a 50%,#0d0303);
  }

  /* Картинки шапок команд (assets.js): Elite — --asset-17 (та же чёрно-золотая, что у «Легенды»
     игрока), Global Elite — --asset-23, Red Hot — --asset-24. Если картинки нет, остаётся тёмная шапка. */
  .th-skin.ths-elite,
  .th-skin.ths-globalelite,
  .th-skin.ths-redhot{
    --ths-art:none;
    background:
      var(--ths-img,none) center 45% / cover no-repeat padding-box,
      linear-gradient(#0c0f13,#0c0f13) padding-box,
      var(--ths-frame) border-box;
  }
  .ths-elite{ --ths-img:var(--asset-17,none); }
  .ths-globalelite{ --ths-img:var(--asset-23,none); }
  .ths-redhot{ --ths-img:var(--asset-24,none); }
  .ths-elite .th-skin-body::after{
    background:linear-gradient(90deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,.3) 55%, rgba(0,0,0,.5) 100%);
  }
  .ths-globalelite .th-skin-body::after{
    background:linear-gradient(90deg, rgba(0,0,0,.58) 0%, rgba(0,0,0,.34) 55%, rgba(0,0,0,.3) 100%);
  }
  .ths-redhot .th-skin-body::after{
    background:linear-gradient(90deg, rgba(0,0,0,.66) 0%, rgba(0,0,0,.5) 55%, rgba(0,0,0,.58) 100%);
  }

  /* ---- Player header skins (hps-*) ------------------------------------
     Пять оформлений шапки профиля игрока. Каждый скин задаёт только
     набор CSS-переменных (--hps-*), вся геометрия общая. Фон рисуется
     градиентами — никаких внешних картинок, файл остаётся автономным.
     Текст внутри шапки всегда светлый: фоны тёмные независимо от
     светлой/тёмной темы сайта (та же причина, что и у .pdet-banner). */
  .hp-head.hps{
    position:relative;
    border:2px solid transparent;
    border-radius:10px;
    background:linear-gradient(#0c0f13,#0c0f13) padding-box, var(--hps-frame) border-box;
    box-shadow:0 12px 38px rgba(0,0,0,.45), 0 0 0 1px rgba(0,0,0,.5), 0 0 26px -10px var(--hps-glow);
    overflow:hidden;
  }
  .hp-head.hps, .hp-head.hps .hp-nick{ color:#F2F5F8; }
  .hp-head.hps .hp-real{ color:rgba(242,245,248,.62); font-size:13px; letter-spacing:.2px; }
  .hp-head.hps .hp-row{ border-bottom:none; position:relative; padding:10px 0; }
  .hp-head.hps .hp-row::after{
    content:'';position:absolute;left:0;right:0;bottom:0;height:1px;
    background:linear-gradient(90deg, var(--hps-accent), rgba(255,255,255,.06) 92%);
    opacity:.6;
  }
  .hp-head.hps .hp-row:last-child::after{ display:none; }
  .hp-head.hps .hp-row .k{ color:var(--hps-accent); letter-spacing:.2px; }
  .hp-head.hps .hp-row .v{ color:#EDF1F5; }
  .hp-head.hps .hp-teamlink{ color:var(--hps-accent); }
  .hp-head.hps .hp-btn{ background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.16);color:#F2F5F8; }
  .hp-head.hps .hp-btn:hover{ border-color:var(--hps-accent);color:var(--hps-accent); }
  .hp-head.hps select{
    background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#EDF1F5;border-radius:5px;
  }

  /* ник: у золота и элиты — градиентная заливка текста */
  .hp-head.hps .hp-nick{
    font-weight:800;letter-spacing:-.5px;
    background:var(--hps-nick);
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;color:transparent;
    filter:drop-shadow(0 3px 10px rgba(0,0,0,.6));
  }

  /* правая часть: «арт»-подложка скина */
  .hp-head.hps .hp-info{ position:relative; overflow:hidden; padding:20px 26px 12px; }
  .hp-head.hps .hp-info::before{
    content:'';position:absolute;inset:0;pointer-events:none;background:var(--hps-art);
  }
  /* мягкая виньетка: гасит края, чтобы текст читался, но не убивает арт */
  .hp-head.hps .hp-info::after{
    content:'';position:absolute;inset:0;pointer-events:none;
    background:
      linear-gradient(90deg, rgba(10,12,15,.92) 0%, rgba(10,12,15,.45) 22%, rgba(10,12,15,.12) 50%, rgba(10,12,15,.55) 100%),
      radial-gradient(120% 150% at 50% 50%, transparent 38%, rgba(0,0,0,.5) 100%);
  }
  .hp-head.hps .hp-info > *{ position:relative; z-index:1; }

  /* фото остаётся ровно таким же, как в обычной шапке — лента просто
     ложится поверх его левого верхнего угла и ничего не двигает */
  .hp-head.hps .hp-photo::after{
    content:'';position:absolute;top:0;right:0;bottom:0;width:2px;z-index:3;
    background:linear-gradient(180deg, var(--hps-accent), transparent 85%);
    opacity:.75;
  }

  /* лента-плашка в левом верхнем углу */
  .hps-ribbon{
    position:absolute;top:0;left:0;z-index:6;height:30px;display:flex;align-items:center;gap:7px;
    padding:0 26px 0 11px;font-family:var(--font-display);font-size:13px;font-weight:800;
    letter-spacing:1px;text-transform:uppercase;white-space:nowrap;
    color:var(--hps-ribbon-text);background:var(--hps-ribbon);
    border-radius:8px 0 0 0;
    clip-path:polygon(0 0, 100% 0, calc(100% - 16px) 100%, 0 100%);
    box-shadow:0 4px 14px rgba(0,0,0,.5);
  }
  .hps-ribbon svg{ flex-shrink:0; }
  .hps-ribbon::after{
    content:'';position:absolute;top:0;right:-14px;width:24px;height:100%;
    background:var(--hps-ribbon);opacity:.5;
    clip-path:polygon(9px 0, 100% 0, calc(100% - 16px) 100%, 0 100%);
  }
  .hp-head.hps .hp-badges{ top:38px; }

  /* соцсети */
  .hp-socials{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
  .hp-social{
    width:34px;height:34px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;
    color:#fff;background:var(--sc,#2b3138);text-decoration:none;flex-shrink:0;
    box-shadow:0 3px 10px rgba(0,0,0,.4);
    transition:transform .12s ease, filter .12s ease;
  }
  .hp-social:hover{ transform:translateY(-2px); filter:brightness(1.18); }
  .hp-social svg{ width:18px;height:18px;display:block; }
  .hp-social.sc-x{--sc:#1b1f24;}
  .hp-social.sc-twitch{--sc:#8B5CF6;}
  .hp-social.sc-instagram{--sc:none;background:linear-gradient(45deg,#F9CE34,#EE2A7B 50%,#6228D7);}
  .hp-social.sc-youtube{--sc:#FF0033;}
  .hp-social.sc-tiktok{--sc:#111317;}
  .hp-social.sc-telegram{--sc:#29A9EB;}
  .hp-social.sc-discord{--sc:#5865F2;}
  .hp-social.sc-vk{--sc:#0077FF;}
  .hp-social.sc-steam{--sc:#1B2838;}
  .hp-social.sc-faceit{--sc:#FF5500;}
  .hp-social.sc-hltv{--sc:#2D5A8E;}
  .hp-social.sc-link{--sc:#39424C;}

  /* --- скин: НОВИЧОК (зелёный, авто, 7 дней) --- */
  .hps-rookie{
    --hps-accent:#62E845;
    --hps-glow:rgba(70,220,60,.55);
    --hps-frame:linear-gradient(135deg,#8CFF6E,#1c7d16 48%,#6BE84B);
    --hps-ribbon:linear-gradient(100deg,#A6FF78,#3FD32A);
    --hps-ribbon-text:#08160a;
    --hps-nick:linear-gradient(180deg,#D5FFC0,#4FDE33);
    --hps-art:
      linear-gradient(103deg, transparent 26%, rgba(200,255,180,.10) 42%, transparent 56%),
      radial-gradient(55% 120% at 86% 6%, rgba(110,255,90,.42), transparent 62%),
      radial-gradient(70% 130% at 34% 112%, rgba(20,150,40,.55), transparent 62%),
      linear-gradient(122deg,#06180a,#12421a 52%,#040d06);
  }
  /* --- скин: ЭЛИТА / ЛЕГЕНДА (чёрно-золотой, ставит модератор) --- */
  .hps-elite{
    --hps-accent:#EDCB7B;
    --hps-glow:rgba(237,203,123,.32);
    --hps-frame:linear-gradient(135deg,#F0D48A,#0f1216 46%,#B8933F);
    --hps-ribbon:linear-gradient(100deg,#33373f,#101317);
    --hps-ribbon-text:#F0D48A;
    --hps-nick:linear-gradient(180deg,#FFF1C9,#D9A83C);
    --hps-art:
      linear-gradient(103deg, transparent 24%, rgba(255,232,170,.11) 41%, transparent 55%),
      radial-gradient(52% 115% at 84% 8%, rgba(237,203,123,.30), transparent 60%),
      radial-gradient(75% 135% at 38% 115%, rgba(120,88,20,.42), transparent 62%),
      linear-gradient(122deg,#08090c,#1c1c20 50%,#050609);
  }
  /* --- скин: ОБЫЧНАЯ (сине-серая, авто по умолчанию) --- */
  .hps-normal{
    --hps-accent:#7FB2F5;
    --hps-glow:rgba(90,150,230,.35);
    --hps-frame:linear-gradient(135deg,#9CC2EC,#1e2b3a 48%,#6d93c2);
    --hps-ribbon:linear-gradient(100deg,#BBD5F2,#5E86B8);
    --hps-ribbon-text:#08131d;
    --hps-nick:linear-gradient(180deg,#E4F0FF,#6EA4E8);
    --hps-art:
      linear-gradient(103deg, transparent 26%, rgba(190,220,255,.09) 42%, transparent 56%),
      radial-gradient(55% 120% at 85% 6%, rgba(100,160,240,.32), transparent 62%),
      radial-gradient(72% 132% at 36% 114%, rgba(30,70,130,.55), transparent 62%),
      linear-gradient(122deg,#070b11,#152a40 52%,#05080d);
  }
  /* --- скин: ПОБЕДИТЕЛЬ ГЛОБАЛ (золото, авто до конца след. глобала) --- */
  .hps-global{
    --hps-accent:#F5CE5B;
    --hps-glow:rgba(245,206,91,.5);
    --hps-frame:linear-gradient(135deg,#FFE894,#7a5c12 44%,#FFD34E);
    --hps-ribbon:linear-gradient(100deg,#FFEB9C,#D8A11E);
    --hps-ribbon-text:#170f02;
    --hps-nick:linear-gradient(180deg,#FFF3C4,#E8B73A);
    --hps-art:
      linear-gradient(103deg, transparent 24%, rgba(255,225,150,.12) 41%, transparent 55%),
      radial-gradient(50% 115% at 84% 6%, rgba(245,206,91,.38), transparent 60%),
      radial-gradient(78% 140% at 40% 118%, rgba(104,45,190,.55), transparent 64%),
      linear-gradient(122deg,#0b0713,#2a1a4c 50%,#08050f);
  }


  /* --- скин: ЛЕГЕНДА (чёрный шёлк + золото; авто — 3+ победы в Глобалах) --- */
  .hps-legend{
    --hps-accent:#EDC968;
    --hps-glow:rgba(237,201,104,.42);
    --hps-frame:linear-gradient(135deg,#F7E09C,#2a1f08 46%,#C79B3A);
    --hps-ribbon:linear-gradient(100deg,#F7E09C,#C79B3A);
    --hps-ribbon-text:#1c1204;
    --hps-nick:linear-gradient(180deg,#FFF3C4,#E5B84A);
    --hps-art:
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 48'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23FFF3B8'/%3E%3Cstop offset='1' stop-color='%23E3A21A'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg fill='url(%23g)' fill-opacity='.26'%3E%3Cpath d='M6 34 2 13l15 11L32 6l15 18 15-11-4 21z'/%3E%3Crect x='7' y='37' width='50' height='6' rx='2'/%3E%3Ccircle cx='2' cy='11' r='3'/%3E%3Ccircle cx='32' cy='4' r='3.4'/%3E%3Ccircle cx='62' cy='11' r='3'/%3E%3C/g%3E%3C/svg%3E") 50% 50% / auto 66% no-repeat,
      linear-gradient(103deg, transparent 24%, rgba(255,215,140,.12) 41%, transparent 55%),
      radial-gradient(48% 115% at 86% 6%, rgba(255,200,70,.36), transparent 60%),
      radial-gradient(60% 130% at 14% 114%, rgba(205,28,58,.58), transparent 62%),
      radial-gradient(70% 130% at 62% 116%, rgba(112,46,205,.52), transparent 64%),
      linear-gradient(122deg,#0d0510,#2a1040 48%,#14060b);
  }
  /* --- скин: ИГРОК СЕЗОНА, осень–зима (синий + чёрный + фиолетовый) --- */
  .hps-season-aw{
    --hps-accent:#8FB8FF;
    --hps-glow:rgba(110,120,255,.5);
    --hps-frame:linear-gradient(135deg,#8FB8FF,#07080d 44%,#8E5BE8);
    --hps-ribbon:linear-gradient(100deg,#A3C8FF,#5F4FD0);
    --hps-ribbon-text:#06081a;
    --hps-nick:linear-gradient(180deg,#E6F0FF,#8FA8FF 55%,#B58CFF);
    --hps-art:
      linear-gradient(103deg, transparent 26%, rgba(190,210,255,.10) 42%, transparent 56%),
      radial-gradient(52% 118% at 85% 6%, rgba(80,130,255,.42), transparent 62%),
      radial-gradient(72% 135% at 30% 116%, rgba(126,60,220,.55), transparent 64%),
      linear-gradient(122deg,#04050a,#0e1a3d 52%,#050308);
  }
  /* --- скин: ИГРОК СЕЗОНА, весна–лето (зелёный + жёлтый + синий) --- */
  .hps-season-ss{
    --hps-accent:#B7E84A;
    --hps-glow:rgba(150,230,80,.5);
    --hps-frame:linear-gradient(135deg,#F7E15A,#1a6b3a 44%,#3FA4F0);
    --hps-ribbon:linear-gradient(100deg,#F7E15A,#5BC94B 60%,#3FA4F0);
    --hps-ribbon-text:#07160a;
    --hps-nick:linear-gradient(180deg,#F8F3B0,#7FD95A 55%,#5DB8F5);
    --hps-art:
      linear-gradient(103deg, transparent 26%, rgba(255,250,190,.11) 42%, transparent 56%),
      radial-gradient(50% 118% at 85% 6%, rgba(250,225,70,.40), transparent 62%),
      radial-gradient(72% 135% at 32% 116%, rgba(50,150,240,.50), transparent 64%),
      linear-gradient(122deg,#06170e,#12502c 52%,#04100a);
  }
  /* --- скин: ВЕТЕРАН (чёрный + тёмно-зелёный + золотой; авто — 200+ матчей) --- */
  .hps-veteran{
    --hps-accent:#D9B550;
    --hps-glow:rgba(217,181,80,.36);
    --hps-frame:linear-gradient(135deg,#E6C766,#0a1510 44%,#1E5A3A 68%,#C9A23F);
    --hps-ribbon:linear-gradient(100deg,#1f5236,#0b1712);
    --hps-ribbon-text:#EBCB6E;
    --hps-nick:linear-gradient(180deg,#FFF0BE,#D9B550);
    --hps-art:
      linear-gradient(103deg, transparent 24%, rgba(240,205,110,.10) 41%, transparent 55%),
      radial-gradient(50% 115% at 85% 6%, rgba(217,181,80,.30), transparent 60%),
      radial-gradient(75% 135% at 34% 116%, rgba(30,110,66,.55), transparent 63%),
      linear-gradient(122deg,#050806,#0f2b1d 52%,#040605);
  }
  /* --- скин: ЗАБАНЕН (красно-чёрный, авто — полный бан на проекте, перекрывает любой другой скин) --- */
  .hps-banned{
    --hps-accent:#FF4D5E;
    --hps-glow:rgba(255,60,60,.5);
    --hps-frame:linear-gradient(135deg,#FF6B6B,#1a0304 46%,#7A0E14);
    --hps-ribbon:linear-gradient(100deg,#4a0508,#1a0203);
    --hps-ribbon-text:#FF9AA2;
    --hps-nick:linear-gradient(180deg,#FFC9CE,#8C1116);
    --hps-art:
      linear-gradient(103deg, transparent 24%, rgba(255,90,90,.12) 41%, transparent 55%),
      radial-gradient(55% 120% at 85% 6%, rgba(255,60,60,.30), transparent 60%),
      radial-gradient(75% 135% at 30% 116%, rgba(90,5,10,.7), transparent 62%),
      linear-gradient(122deg,#0a0303,#1e0507 52%,#060101);
  }
  /* --- скин: СВОБОДНЫЙ АГЕНТ (нейтрально-серый, авто — без команды / статус снят) --- */
  .hps-freeagent{
    --hps-accent:#F2E23A;
    --hps-glow:rgba(242,226,58,.38);
    --hps-frame:linear-gradient(135deg,#F7EC5A,#1a1c14 48%,#8B8420);
    --hps-ribbon:linear-gradient(100deg,#F7EC5A,#B5A81C);
    --hps-ribbon-text:#171500;
    --hps-nick:linear-gradient(180deg,#FFFBD0,#E8D93A);
    --hps-art:
      linear-gradient(103deg, transparent 26%, rgba(200,210,220,.08) 42%, transparent 56%),
      radial-gradient(55% 120% at 85% 6%, rgba(160,170,185,.22), transparent 62%),
      radial-gradient(72% 132% at 36% 114%, rgba(40,45,52,.55), transparent 62%),
      linear-gradient(122deg,#0a0c0f,#20242a 52%,#07080a);
  }

  /* --- скин: КОНТЕНТ-МЕЙКЕР (фиолетовый + красный, выдаёт админ) --- */
  .hps-contentmaker{
    --hps-accent:#C560FF;
    --hps-glow:rgba(197,96,255,.5);
    --hps-frame:linear-gradient(135deg,#D98BFF,#3a0a12 44%,#E23B57);
    --hps-ribbon:linear-gradient(100deg,#B04CFF,#E23B57);
    --hps-ribbon-text:#1a0212;
    --hps-nick:linear-gradient(180deg,#EFC9FF,#B04CFF 55%,#E23B57);
    --hps-art:
      linear-gradient(103deg, transparent 24%, rgba(220,150,255,.12) 41%, transparent 55%),
      radial-gradient(52% 115% at 84% 8%, rgba(197,96,255,.36), transparent 60%),
      radial-gradient(75% 135% at 34% 116%, rgba(226,59,87,.5), transparent 62%),
      linear-gradient(122deg,#0e0410,#34081a 50%,#08030a);
  }
  /* --- скин: СОЗДАТЕЛЬ (личное фото основателя сайта вместо узора,
       с лёгким фиолетово-розовым свечением по краям; выдаётся вручную) --- */
  .hps-creator{
    --hps-accent:#C9A6FF;
    --hps-glow:rgba(255,111,168,.45);
    --hps-frame:linear-gradient(135deg,#BFE0FF,#05030c 44%,#FF6FA8);
    --hps-ribbon:linear-gradient(100deg,#D7ECFF,#FF6FA8);
    --hps-ribbon-text:#0d0714;
    --hps-nick:linear-gradient(180deg,#EAF2FF,#C9A6FF 55%,#FF6FA8);
    --hps-art:
      linear-gradient(103deg, rgba(20,10,30,.2) 0%, rgba(20,10,30,.06) 30%, rgba(20,10,30,.42) 100%),
      radial-gradient(60% 120% at 82% 0%, rgba(255,111,168,.22), transparent 60%),
      radial-gradient(70% 130% at 12% 118%, rgba(120,90,220,.28), transparent 62%),
      var(--asset-11) center 42% / cover no-repeat;
  }
  /* --- скин: АДМИН (золото + красный, выдаёт основатель сайта) --- */
  .hps-adminskin{
    --hps-accent:#F5CE5B;
    --hps-glow:rgba(245,206,91,.42);
    --hps-frame:linear-gradient(135deg,#FFE894,#2b0508 46%,#C21F32);
    --hps-ribbon:linear-gradient(100deg,#FFEB9C,#B21C2E);
    --hps-ribbon-text:#1c0304;
    --hps-nick:linear-gradient(180deg,#FFF3C4,#E8B73A 55%,#E23B4B);
    --hps-art:
      linear-gradient(103deg, transparent 24%, rgba(255,225,150,.1) 41%, transparent 55%),
      radial-gradient(50% 115% at 84% 6%, rgba(245,206,91,.32), transparent 60%),
      radial-gradient(78% 140% at 32% 118%, rgba(194,31,50,.55), transparent 64%),
      linear-gradient(122deg,#0e0506,#3a0a0f 50%,#080304);
  }
  /* --- скин: ЖУРНАЛИСТ (коричневый + бирюзовый, выдаёт основатель сайта) --- */
  .hps-journalist{
    --hps-accent:#5FD4C6;
    --hps-glow:rgba(95,212,198,.4);
    --hps-frame:linear-gradient(135deg,#7FE8DA,#241408 46%,#8A5A2E);
    --hps-ribbon:linear-gradient(100deg,#8FF0E2,#8A5A2E);
    --hps-ribbon-text:#0a1614;
    --hps-nick:linear-gradient(180deg,#D6FFF7,#5FD4C6 55%,#B8813F);
    --hps-art:
      linear-gradient(103deg, transparent 24%, rgba(150,230,220,.1) 41%, transparent 55%),
      radial-gradient(50% 115% at 84% 6%, rgba(95,212,198,.3), transparent 60%),
      radial-gradient(78% 140% at 32% 118%, rgba(138,90,46,.55), transparent 64%),
      linear-gradient(122deg,#070f0d,#26180a 50%,#040807);
  }
  /* --- скин: НАЦИОНАЛЬНЫЙ (флаг страны игрока вместо обычного узора,
       с лёгкой анимацией «развевания»; ставится по запросу пользователя,
       подтверждённому админом — флаг берётся из поля country игрока, так
       что никаких ограничений по стране нет, включая РФ. Сам флаг
       (--hps-art) подставляется инлайн-стилем в JS, см. renderPlayerBanner) --- */
  .hps-national{
    --hps-accent:#EDEDED;
    --hps-glow:rgba(255,255,255,.3);
    --hps-frame:linear-gradient(135deg,#EDEDED,#0c0c0c 48%,#8a8a8a);
    --hps-ribbon:linear-gradient(100deg,#f0f0f0,#4a4a4a);
    --hps-ribbon-text:#0c0c0c;
    --hps-nick:linear-gradient(180deg,#FFFFFF,#C9C9C9);
  }
  .hps-national .hp-info::before{ animation:hpsFlagWave 6s ease-in-out infinite; transform-origin:60% 40%; }
  @keyframes hpsFlagWave{
    0%,100%{ transform:skewY(0deg) scale(1.04); }
    25%{ transform:skewY(.7deg) scale(1.055); }
    50%{ transform:skewY(0deg) scale(1.04); }
    75%{ transform:skewY(-.7deg) scale(1.055); }
  }

  /* значки роли / капитана на ленте */
  .hps-rbs{display:inline-flex;align-items:center;gap:4px;}
  .hps-rb{
    display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:5px;flex-shrink:0;
    background:rgba(128,128,128,.22);
    background:color-mix(in srgb, currentColor 16%, transparent);
    box-shadow:inset 0 0 0 1px rgba(128,128,128,.35);
    box-shadow:inset 0 0 0 1px color-mix(in srgb, currentColor 38%, transparent);
  }
  .hps-rb svg{width:14px;height:14px;display:block;}
  .hps-ribbon .hps-rbs:not(:first-child){margin-left:2px;}

  @media (max-width:600px){
    .hps-ribbon{height:26px;font-size:11px;padding:0 21px 0 8px;gap:5px;letter-spacing:.6px;}
    .hps-rb{width:18px;height:18px;}
    .hps-rb svg{width:12px;height:12px;}
    .hp-head.hps.hps-has-ribbon .hp-info{padding-top:34px;}
    .hp-head.hps .hp-badges{top:32px;}
    .hp-head.hps .hp-info{padding:16px 14px 6px;}
    .hp-social{width:30px;height:30px;border-radius:8px;}
    .hp-social svg{width:16px;height:16px;}
  }

  /* ---------- Roles v4.14: кастер / игрок / партнёр ---------- */
  .role-pill{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.4px;border:1px dashed currentColor;padding:2px 7px;border-radius:3px;margin-left:6px;text-decoration:none;white-space:nowrap;cursor:default;vertical-align:middle;}
  a.role-pill,.role-pill[onclick]{cursor:pointer;}
  a.role-pill:hover,.role-pill[onclick]:hover{background:rgba(255,255,255,.07);}
  .role-caster{color:#C77DFF;}
  .role-partner{color:var(--green);}
  .role-player{color:var(--accent-text);}
  .up-role-modal .field select,.up-role-modal .field input{width:100%;}
  .up-role-err{color:var(--red);font-size:13px;min-height:18px;margin:4px 0 8px;}

  /* ---------- User profile v2 (up-*) — шапка, локация, разделы ---------- */
  .up-hero{position:relative;border:1px solid var(--border);border-radius:16px;background:var(--bg-elev);overflow:hidden;margin-bottom:18px;box-shadow:0 10px 30px rgba(0,0,0,.18);}
  .up-cover{position:relative;height:clamp(130px,20vw,230px);background-size:cover;background-position:center;background-color:var(--bg-elev-2);}
  .up-cover.noimg::before{content:'';position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.10) 1px,transparent 1.2px);background-size:18px 18px;opacity:.55;}
  .up-cover::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,0) 45%,rgba(0,0,0,.5));pointer-events:none;}
  .up-cover-tools{position:absolute;top:12px;right:12px;z-index:2;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
  .up-cover-tools .btn{background:rgba(0,0,0,.5);color:#fff;border:1px solid rgba(255,255,255,.28);backdrop-filter:blur(6px);}
  .up-cover-tools .btn:hover{background:rgba(0,0,0,.7);}
  .up-head{position:relative;z-index:1;display:flex;align-items:flex-start;gap:20px;padding:0 26px 22px;margin-top:-54px;flex-wrap:wrap;}
  .up-avatar{flex-shrink:0;}
  .up-avatar .avatar,.up-avatar .avatar-fallback{border-radius:50%;border:4px solid var(--bg-elev);box-shadow:0 0 0 2px rgba(var(--accent-rgb),.65),0 8px 20px rgba(0,0,0,.35);background:var(--bg-elev-2);}
  .up-id{flex:1;min-width:220px;padding-top:62px;}
  .up-name{font-size:30px;font-weight:800;line-height:1.1;margin:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .up-sub{margin-top:6px;color:var(--muted);font-size:14px;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;}
  .up-loc{display:inline-flex;align-items:center;gap:2px;color:var(--text);font-weight:600;font-size:14px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:4px 12px 4px 8px;}
  .up-loc img{margin-right:6px!important;border-radius:3px!important;}
  .up-loc-pin{margin-right:6px;}
  .up-bio{margin-top:12px;max-width:720px;line-height:1.55;color:var(--text);opacity:.92;white-space:pre-wrap;word-break:break-word;}
  .up-pills{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center;}
  .up-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin:0 0 6px;}
  .up-stat{display:flex;align-items:center;gap:12px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:12px 14px;transition:border-color .12s ease,transform .12s ease;}
  .up-stat:hover{border-color:var(--accent);transform:translateY(-1px);}
  .up-stat-ico{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;background:rgba(var(--accent-rgb),.14);flex-shrink:0;}
  .up-stat-val{font-family:var(--font-mono);font-size:22px;font-weight:700;line-height:1;}
  .up-stat-lbl{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-top:4px;}
  .up-sec-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:30px 0 14px;flex-wrap:wrap;}
  .up-sec-title{display:flex;align-items:center;gap:10px;font-size:21px;font-weight:800;margin:0;}
  .up-sec-title::before{content:'';width:4px;height:22px;border-radius:2px;background:var(--accent);}
  .up-count{font-family:var(--font-mono);font-size:12px;font-weight:700;color:var(--muted);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:2px 10px;}
  .up-sub-title{font-size:13px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.8px;margin:18px 0 10px;}
  .up-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;}
  .up-two{display:grid;grid-template-columns:1.2fr 1fr;gap:14px;}
  .up-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;padding:18px 20px;}
  .up-card h3,.up-card h4{margin:0 0 12px;}
  .up-muted{color:var(--muted);font-size:14px;}
  .up-info-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--border);font-size:14px;align-items:center;}
  .up-info-row:last-child{border-bottom:none;}
  .up-info-row span:first-child{color:var(--muted);}
  .up-badges{display:flex;flex-wrap:wrap;gap:8px;}
  .up-badge{display:inline-flex;align-items:center;gap:8px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:10px;padding:7px 12px 7px 9px;font-size:13px;font-weight:700;cursor:default;transition:border-color .12s ease,transform .12s ease;}
  .up-badge:hover{border-color:var(--yellow);transform:translateY(-1px);}
  .up-badge i{font-style:normal;font-size:17px;}
  .up-nudge{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:linear-gradient(120deg,rgba(var(--accent-rgb),.16),rgba(var(--accent-rgb),.04));border:1px dashed rgba(var(--accent-rgb),.6);border-radius:12px;padding:14px 18px;margin-bottom:14px;}
  .up-nudge b{display:block;margin-bottom:2px;}
  /* Team card */
  .up-team{position:relative;background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;}
  .up-team:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 12px 26px rgba(0,0,0,.25);}
  .up-team-top{height:74px;position:relative;}
  .up-team-top::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.35));}
  .up-team-game{position:absolute;top:10px;right:10px;z-index:1;font-family:var(--font-mono);font-size:11px;font-weight:800;letter-spacing:1px;color:#fff;background:rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:2px 8px;}
  .up-team-flag{position:absolute;top:10px;left:10px;z-index:1;}
  .up-team-flag img{margin:0!important;}
  .up-team-body{padding:0 16px 16px;margin-top:-28px;position:relative;z-index:1;}
  .up-team-logo .team-badge{border:3px solid var(--bg-elev);border-radius:14px;box-shadow:0 6px 16px rgba(0,0,0,.35);}
  .up-team-name{margin-top:8px;font-weight:800;font-size:17px;line-height:1.2;word-break:break-word;}
  .up-team-name small{display:block;font-family:var(--font-mono);color:var(--accent-text);font-size:12px;letter-spacing:1px;margin-bottom:2px;}
  .up-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
  .up-chip{font-family:var(--font-mono);font-size:11px;font-weight:700;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:3px 9px;}
  .up-chip.ok{color:var(--green);border-color:var(--green);}
  .up-chip.warn{color:var(--yellow);border-color:var(--yellow);}
  .up-chip.bad{color:var(--red);border-color:var(--red);}
  .up-chip.mute{color:var(--muted);}
  /* Tournament card */
  .up-tour{position:relative;background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;}
  .up-tour:hover{border-color:var(--accent-2);transform:translateY(-3px);box-shadow:0 12px 26px rgba(0,0,0,.25);}
  .up-tour-cover{height:96px;background-size:cover;background-position:center;position:relative;background-color:var(--bg-elev-2);}
  .up-tour-cover.noimg{background-image:linear-gradient(125deg,rgba(var(--accent-2-rgb),.55),rgba(var(--accent-rgb),.35) 70%,var(--bg-elev-2));}
  .up-tour-cover::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.05),rgba(0,0,0,.55));}
  .up-tour-cover .up-tour-ico{position:absolute;right:14px;bottom:8px;font-size:34px;opacity:.35;z-index:1;}
  .up-role{position:absolute;top:10px;left:10px;z-index:1;font-size:10px;font-weight:800;letter-spacing:1px;color:#fff;background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.28);border-radius:6px;padding:3px 8px;}
  .up-role.org{background:rgba(var(--accent-2-rgb),.85);border-color:transparent;}
  .up-tour-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1;}
  .up-tour-name{font-weight:800;font-size:17px;line-height:1.25;word-break:break-word;}
  .up-tour-meta{font-size:12.5px;color:var(--muted);}
  .up-tour-teams{font-size:12px;color:var(--muted);display:flex;gap:5px;flex-wrap:wrap;align-items:center;}
  .up-tour-teams b{font-family:var(--font-mono);color:var(--text);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:1px 6px;}
  /* Settings */
  .up-set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;align-items:start;}
  .up-cover-mini{height:110px;border-radius:10px;overflow:hidden;margin-bottom:12px;border:1px solid var(--border);}
  .up-swatches{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px;}
  .up-swatch{width:54px;height:34px;border-radius:8px;border:2px solid var(--border);cursor:pointer;transition:transform .12s ease,border-color .12s ease;padding:0;}
  .up-swatch:hover{transform:scale(1.08);}
  .up-swatch.on{border-color:var(--text);}
  .up-country-row{display:flex;align-items:center;gap:10px;}
  .up-country-row select{flex:1;}
  .up-country-flag{min-width:34px;display:flex;align-items:center;justify-content:center;}
  .up-country-flag img{margin:0!important;}
  .up-hint{font-size:12px;color:var(--muted);margin:-4px 0 12px;}
  @media (max-width:820px){ .up-two{grid-template-columns:1fr;} }
  @media (max-width:600px){
    .up-head{padding:0 16px 18px;gap:14px;margin-top:-44px;}
    .up-id{padding-top:52px;min-width:0;}
    .up-name{font-size:24px;}
    .up-grid{grid-template-columns:1fr;}
    .up-set-grid{grid-template-columns:1fr;}
  }

  /* ---------- Profile (own + public) ---------- */
  .profile-hero{
    display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:26px 24px;border-radius:10px;margin-bottom:18px;
    background:linear-gradient(135deg, rgba(var(--accent-rgb),0.14), rgba(var(--accent-rgb),0.02) 60%), var(--bg-elev);
    border:1px solid var(--border);position:relative;overflow:hidden;
  }
  .profile-hero::before{content:'';position:absolute;top:-40%;right:-8%;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle, rgba(var(--accent-rgb),0.16), transparent 70%);pointer-events:none;}
  .profile-hero > *{position:relative;z-index:1;}
  .profile-hero .avatar,.profile-hero .avatar-fallback{box-shadow:0 0 0 3px var(--bg-elev),0 0 0 4px rgba(var(--accent-rgb),0.45);}
  .meta-block{
    min-width:110px;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:10px 16px;
    transition:border-color .12s ease,transform .12s ease;
  }
  .meta-block:hover{border-color:var(--accent);transform:translateY(-1px);}
  .review-row{border-left:3px solid var(--border);}
  .review-row.st-approved{border-left-color:var(--green);}
  .review-row.st-pending{border-left-color:var(--yellow);}
  .review-row.st-rejected{border-left-color:var(--red);}
  .review-row.st-inactive{border-left-color:var(--muted);}
  .review-row.st-completed{border-left-color:var(--accent-2);}
  .review-row[onclick]{cursor:pointer;transition:border-color .12s ease,background .12s ease;}
  .review-row[onclick]:hover{background:var(--hover-2);border-color:var(--accent);}

  /* ---------- Team messenger ---------- */
  .msg-shell{display:flex;gap:0;border:1px solid var(--border);border-radius:20px;overflow:hidden;height:580px;background:var(--bg-elev);box-shadow:0 16px 40px rgba(0,0,0,0.28),0 1px 0 rgba(255,255,255,0.02) inset;}
  .msg-list-col{width:300px;flex-shrink:0;border-right:1px solid var(--border);display:flex;flex-direction:column;background:linear-gradient(180deg,var(--bg-elev-2),var(--bg-elev) 140%);}
  .msg-conv-list{flex:1;overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:3px;}
  .msg-conv-list::-webkit-scrollbar, .msg-bubbles::-webkit-scrollbar{width:7px;}
  .msg-conv-list::-webkit-scrollbar-thumb, .msg-bubbles::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px;}
  .msg-conv-list::-webkit-scrollbar-track, .msg-bubbles::-webkit-scrollbar-track{background:transparent;}
  .msg-conv-item{position:relative;display:flex;align-items:center;gap:11px;padding:10px 12px;cursor:pointer;border-radius:13px;transition:background .14s ease,transform .14s ease;}
  .msg-conv-item:hover{background:var(--hover-2);transform:translateX(1px);}
  .msg-conv-item.active{background:linear-gradient(90deg,rgba(var(--accent-rgb),0.16),rgba(var(--accent-rgb),0.05));box-shadow:0 0 0 1px rgba(var(--accent-rgb),0.22) inset;}
  .msg-conv-item.active::before{content:'';position:absolute;left:-6px;top:10px;bottom:10px;width:3px;border-radius:3px;background:var(--accent);}
  .msg-conv-item.has-unread{background:rgba(var(--accent-rgb),0.055);}
  .msg-conv-item.has-unread .msg-conv-name{color:var(--text);font-weight:800;}
  .msg-conv-info{min-width:0;flex:1;}
  .msg-conv-name{font-size:13.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .msg-conv-preview{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px;}
  .msg-conv-time{font-size:10px;color:var(--muted);flex-shrink:0;font-family:var(--font-mono);opacity:.8;}
  .msg-unread-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-left:4px;vertical-align:middle;box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.2);}
  /* ---------- Непрочитанные (счётчик) ---------- */
  .msg-unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;border-radius:10px;background:var(--accent);color:var(--on-accent);font-size:10.5px;font-weight:800;font-family:var(--font-mono);margin-left:5px;vertical-align:middle;box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.18);}
  .msg-conv-item .msg-mute-icon{opacity:.6;font-size:10.5px;margin-left:4px;vertical-align:middle;}
  /* ---------- Мут уведомлений диалога ---------- */
  .msg-mute-btn{flex-shrink:0;width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--muted);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .12s ease,border-color .12s ease;}
  .msg-mute-btn:hover{color:var(--accent-text);border-color:rgba(var(--accent-rgb),0.5);}
  .msg-mute-btn.active{color:var(--red);border-color:rgba(255,77,94,0.5);}
  /* ---------- Эмодзи и стикеры ---------- */
  .msg-input-row{position:relative;}
  .msg-extras-picker{position:absolute;bottom:58px;left:18px;z-index:25;width:270px;max-height:250px;display:flex;flex-direction:column;border-radius:14px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow-lg);animation:reactPickerIn .12s ease;overflow:hidden;}
  .msg-extras-picker-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--border);}
  .msg-extras-picker-tabs button{flex:1;border:none;background:none;padding:9px 6px;font-size:12px;font-weight:700;color:var(--muted);cursor:pointer;transition:color .12s ease,background .12s ease;}
  .msg-extras-picker-tabs button.active{color:var(--accent-text);background:rgba(var(--accent-rgb),0.08);}
  .msg-emoji-grid,.msg-sticker-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:8px;}
  .msg-emoji-grid button,.msg-sticker-grid button{border:none;background:none;font-size:19px;padding:5px;cursor:pointer;border-radius:8px;transition:background .1s ease,transform .1s ease;line-height:1;}
  .msg-sticker-grid button{font-size:26px;}
  .msg-emoji-grid button:hover,.msg-sticker-grid button:hover{background:var(--hover-2);transform:scale(1.15);}
  .msg-bubble.sticker-bubble{background:none;border:none;box-shadow:none;padding:0;max-width:none;}
  .msg-sticker{font-size:52px;line-height:1;}
  .msg-friends-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 10px 4px;padding:8px 12px;border-radius:12px;background:var(--hover-1);border:1px solid var(--border);color:var(--text);font-size:12.5px;font-weight:700;cursor:pointer;transition:background .12s ease,border-color .12s ease;}
  .msg-friends-toggle:hover{background:var(--hover-2);border-color:rgba(var(--accent-rgb),0.3);}
  .msg-friends-toggle.open{color:var(--accent-text);border-color:rgba(var(--accent-rgb),0.35);background:rgba(var(--accent-rgb),0.08);}
  .msg-friends-toggle-arrow{font-size:10px;transition:transform .15s ease;opacity:.8;}
  .msg-friends-toggle.open .msg-friends-toggle-arrow{transform:rotate(180deg);}
  .msg-new-convo{display:flex;gap:6px;padding:10px;border-top:1px solid var(--border);flex-shrink:0;}
  .msg-new-convo select{flex:1;min-width:0;font-size:12px;}
  .msg-user-search{position:relative;display:flex;align-items:center;padding:12px;flex-shrink:0;border-bottom:1px solid var(--border);}
  .msg-user-search input{flex:1;font-size:12.5px;padding:10px 32px 10px 14px;border-radius:24px;background:var(--bg);border:1px solid var(--border);box-shadow:0 1px 3px rgba(0,0,0,0.15) inset;transition:border-color .15s ease,box-shadow .15s ease;}
  .msg-user-search input:focus{border-color:rgba(var(--accent-rgb),0.5);box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.14),0 1px 3px rgba(0,0,0,0.15) inset;}
  .msg-user-search .msg-reply-bar-close{position:absolute;right:18px;}
  .msg-bubble-sender{font-size:11px;font-weight:800;color:var(--accent-text);margin-bottom:3px;}
  .msg-thread-col{position:relative;flex:1;display:flex;flex-direction:column;min-width:0;background:
    radial-gradient(circle at 20% 0%, rgba(var(--accent-rgb),0.06), transparent 60%);}
  .msg-thread-head{display:flex;align-items:center;gap:10px;padding:13px 20px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg-elev);}
  .msg-back-btn{display:none;}
  .msg-bubbles{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:4px;}
  .msg-empty-thread{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:14px;text-align:center;padding:20px;}
  .msg-empty-thread::before{content:'💬';font-size:38px;opacity:.35;}
  .msg-bubble{position:relative;max-width:68%;padding:9px 13px 7px;margin:2px 0;border-radius:19px;background:var(--bg-elev-2);border:1px solid var(--border);box-shadow:0 1px 2px rgba(0,0,0,0.18);transition:box-shadow .15s ease;}
  .msg-bubble.mine{align-self:flex-end;background:linear-gradient(160deg,rgba(var(--accent-rgb),0.32),rgba(var(--accent-rgb),0.15));border-color:rgba(var(--accent-rgb),0.4);border-bottom-right-radius:6px;}
  .msg-bubble.theirs{align-self:flex-start;border-bottom-left-radius:6px;}
  .msg-bubble-text{font-size:14px;line-height:1.38;white-space:pre-wrap;word-break:break-word;padding-right:2px;}
  .msg-bubble-time{font-size:10px;color:var(--muted);margin-top:2px;text-align:right;font-family:var(--font-mono);display:flex;justify-content:flex-end;align-items:center;gap:3px;}
  .msg-typing-row{font-size:12px;min-height:16px;}
  .msg-typing-indicator{color:var(--accent-text);font-weight:600;}
  .msg-typing-indicator::after{content:'';display:inline-block;width:4px;}
  .msg-read-receipt{margin-left:6px;color:var(--muted);}
  .msg-read-receipt.read{color:var(--green);}
  .msg-bubble-actions{position:absolute;top:-13px;right:6px;display:flex;gap:4px;opacity:0;transition:opacity .12s ease;}
  .msg-bubble.mine .msg-bubble-actions{right:auto;left:6px;}
  .msg-bubble:hover .msg-bubble-actions{opacity:1;}
  .msg-bubble-reply-btn,.msg-bubble-react-btn,.msg-bubble-fwd-btn,.msg-bubble-edit-btn,.msg-bubble-del-btn,.msg-bubble-pin-btn{width:22px;height:22px;border-radius:50%;border:1px solid var(--border);background:var(--bg-elev);color:var(--muted);font-size:11px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .12s ease,border-color .12s ease,transform .12s ease;}
  .msg-bubble-reply-btn:hover,.msg-bubble-react-btn:hover,.msg-bubble-fwd-btn:hover,.msg-bubble-edit-btn:hover,.msg-bubble-pin-btn:hover{color:var(--accent-text);border-color:var(--accent);transform:scale(1.08);}
  .msg-bubble-pin-btn.active{color:#FFC93C;border-color:#FFC93C;}
  .msg-bubble-del-btn:hover{color:var(--red);border-color:var(--red);transform:scale(1.08);}
  .msg-bubble-edited-tag{color:var(--muted);font-style:italic;}
  .msg-bubble-pinned-tag{font-size:10px;}
  .msg-bubble.pinned{box-shadow:0 0 0 1px rgba(255,201,60,0.45),0 1px 2px rgba(0,0,0,0.18);}
  .msg-bubble-quote{display:block;margin-bottom:5px;padding:4px 8px;border-left:3px solid var(--accent);background:rgba(var(--accent-rgb),0.08);border-radius:4px;font-size:12px;color:var(--muted);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .msg-bubble-quote b{color:var(--text);}
  .msg-bubble.flash-highlight{animation:msgFlash 1.1s ease;}
  @keyframes msgFlash{ 0%{box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.55);} 100%{box-shadow:0 1px 2px rgba(0,0,0,0.08);} }
  /* ---------- Поиск по сообщениям ---------- */
  .msg-thread-search-btn{flex-shrink:0;width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--muted);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .12s ease,border-color .12s ease;}
  .msg-thread-search-btn:hover,.msg-thread-search-btn.active{color:var(--accent-text);border-color:rgba(var(--accent-rgb),0.5);}
  .msg-search-bar{display:flex;align-items:center;gap:8px;padding:9px 18px;border-bottom:1px solid var(--border);background:var(--bg-elev-2);flex-shrink:0;}
  .msg-search-bar input{flex:1;font-size:12.5px;padding:8px 14px;border-radius:20px;background:var(--bg);border:1px solid var(--border);}
  .msg-search-bar input:focus{border-color:rgba(var(--accent-rgb),0.5);box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.14);}
  .msg-search-results{max-height:220px;overflow-y:auto;border-bottom:1px solid var(--border);background:var(--bg-elev-2);flex-shrink:0;}
  .msg-search-results-count{font-size:11px;color:var(--muted);padding:6px 18px 2px;text-transform:uppercase;letter-spacing:.4px;font-family:var(--font-mono);}
  .msg-search-result-item{padding:8px 18px;font-size:12.5px;color:var(--text);cursor:pointer;border-top:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s ease;}
  .msg-search-result-item:hover{background:var(--hover-2);}
  /* ---------- Закреплённые сообщения ---------- */
  .msg-pinned-bar{display:flex;align-items:flex-start;gap:8px;padding:8px 18px;border-bottom:1px solid var(--border);background:rgba(255,201,60,0.08);flex-shrink:0;}
  .msg-pinned-bar-icon{flex-shrink:0;font-size:13px;margin-top:3px;}
  .msg-pinned-bar-list{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;max-height:88px;overflow-y:auto;}
  .msg-pinned-bar-item{display:flex;align-items:center;gap:8px;}
  .msg-pinned-bar-text{flex:1;min-width:0;font-size:12.5px;color:var(--text);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .msg-pinned-bar-item button{flex-shrink:0;background:none;border:none;color:var(--muted);cursor:pointer;font-size:12px;padding:2px 4px;border-radius:50%;transition:color .12s ease;}
  .msg-pinned-bar-item button:hover{color:var(--red);}
  /* ---------- Reactions ---------- */
  .msg-reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;}
  .msg-reaction-pill{display:flex;align-items:center;gap:4px;padding:1px 8px 1px 6px;border-radius:20px;background:var(--bg-elev);border:1px solid var(--border);font-size:12px;cursor:pointer;line-height:1.7;transition:transform .1s ease,border-color .12s ease,background .12s ease;user-select:none;}
  .msg-reaction-pill:hover{transform:scale(1.06);}
  .msg-reaction-pill.mine{border-color:var(--accent);background:rgba(var(--accent-rgb),0.16);}
  .msg-reaction-pill b{font-size:11px;font-weight:700;color:var(--muted);}
  .msg-reaction-pill.mine b{color:var(--accent-text);}
  .msg-reaction-picker{position:absolute;top:-46px;z-index:20;display:flex;gap:2px;padding:5px 6px;border-radius:20px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow-md);animation:reactPickerIn .12s ease;}
  .msg-bubble.mine .msg-reaction-picker{right:0;}
  .msg-bubble.theirs .msg-reaction-picker{left:0;}
  @keyframes reactPickerIn{ 0%{opacity:0;transform:translateY(4px) scale(.9);} 100%{opacity:1;transform:translateY(0) scale(1);} }
  .msg-reaction-picker button{width:28px;height:28px;border:none;background:none;font-size:17px;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform .1s ease,background .1s ease;}
  .msg-reaction-picker button:hover{transform:scale(1.25);background:var(--hover-2);}
  /* ---------- Voice messages ---------- */
  .msg-bubble.media-bubble{padding:8px 10px;}
  .voice-msg{display:flex;align-items:center;gap:9px;min-width:190px;}
  .voice-msg-play{flex-shrink:0;width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;background:var(--accent);color:var(--on-accent);font-size:13px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(var(--accent-rgb),0.35);transition:transform .1s ease;}
  .voice-msg-play:hover{transform:scale(1.05);}
  .voice-msg-body{flex:1;min-width:0;}
  .voice-msg-track{position:relative;height:22px;display:flex;align-items:center;cursor:pointer;}
  .voice-msg-wave{width:100%;height:3px;border-radius:3px;background:rgba(128,140,160,0.35);overflow:hidden;position:relative;}
  .voice-msg-wave-fill{position:absolute;inset:0 auto 0 0;width:0%;background:var(--accent);border-radius:3px;}
  .voice-msg-dur{font-size:10.5px;color:var(--muted);font-family:var(--font-mono);margin-top:2px;}
  /* ---------- Video circles (video notes) ---------- */
  .msg-bubble.circle-bubble{background:none;border:none;box-shadow:none;padding:0;max-width:none;}
  .circle-msg{position:relative;width:190px;height:190px;border-radius:50%;overflow:hidden;cursor:pointer;box-shadow:0 3px 14px rgba(0,0,0,0.35);border:2px solid var(--border);background:#000;}
  .msg-bubble.mine .circle-msg{border-color:rgba(var(--accent-rgb),0.5);}
  .circle-msg video{width:100%;height:100%;object-fit:cover;display:block;}
  .circle-msg-badge{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);padding:2px 9px;border-radius:20px;background:rgba(0,0,0,0.55);color:#fff;font-size:10px;font-family:var(--font-mono);display:flex;align-items:center;gap:4px;pointer-events:none;}
  .circle-msg-playbtn{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,0.6);background:rgba(0,0,0,0.18);transition:opacity .12s ease;}
  .circle-msg.playing .circle-msg-playbtn{opacity:0;pointer-events:none;}
  .circle-msg-time{font-size:10px;color:var(--muted);font-family:var(--font-mono);text-align:center;margin-top:3px;}
  .msg-bubble.mine .circle-msg-time{text-align:right;padding-right:6px;}
  .msg-bubble.theirs .circle-msg-time{text-align:left;padding-left:6px;}
  /* ---------- Record bar (voice/video-note capture) ---------- */
  .msg-record-bar{display:flex;align-items:center;gap:12px;padding:13px 18px;border-top:1px solid var(--border);flex-shrink:0;background:var(--bg-elev);}
  .msg-record-dot{width:11px;height:11px;border-radius:50%;background:var(--red);flex-shrink:0;animation:recDotPulse 1s infinite;}
  @keyframes recDotPulse{ 0%,100%{opacity:1;} 50%{opacity:.25;} }
  .msg-record-time{font-family:var(--font-mono);font-size:14px;font-weight:700;min-width:44px;}
  .msg-record-hint{flex:1;font-size:12.5px;color:var(--muted);}
  .msg-record-cancel{background:none;border:1px solid var(--border);color:var(--muted);border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:14px;}
  .msg-record-cancel:hover{color:var(--red);border-color:var(--red);}
  .msg-record-send{background:var(--accent);color:var(--on-accent);border:none;border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:14px;box-shadow:0 3px 10px rgba(var(--accent-rgb),0.3);}
  /* Крупное превью записи видеосообщения (кружка) — плавающее по центру
     области чата, поверх ленты сообщений, пока идёт запись. Роль такая же,
     как у кружка в Telegram: даёт видеть себя в реальном времени, а не
     маленький превью-квадрат внутри панели записи. */
  .msg-record-preview-overlay{position:absolute;inset:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:6;animation:msgRecPrevIn .18s ease;}
  @keyframes msgRecPrevIn{ 0%{opacity:0;transform:scale(.92);} 100%{opacity:1;transform:scale(1);} }
  .msg-record-preview-circle{position:relative;width:min(260px,62vw);height:min(260px,62vw);border-radius:50%;overflow:hidden;background:#000;box-shadow:0 12px 40px rgba(0,0,0,0.55),0 0 0 6px rgba(var(--accent-rgb),0.16);border:3px solid var(--accent);pointer-events:auto;}
  .msg-record-preview-circle video{width:100%;height:100%;object-fit:cover;display:block;transform:scaleX(-1);}
  .msg-record-preview-ring{position:absolute;inset:-3px;border-radius:50%;border:3px solid var(--red);opacity:.85;animation:msgRecRingPulse 1.4s ease-in-out infinite;pointer-events:none;}
  @keyframes msgRecRingPulse{ 0%,100%{opacity:.85;transform:scale(1);} 50%{opacity:.25;transform:scale(1.045);} }
  .msg-record-preview-time{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);padding:3px 12px;border-radius:20px;background:rgba(0,0,0,0.55);color:#fff;font-size:12px;font-family:var(--font-mono);font-weight:700;display:flex;align-items:center;gap:6px;}
  .msg-record-preview-time::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--red);animation:recDotPulse 1s infinite;}
  @media (max-width:640px){ .msg-record-preview-circle{width:min(200px,58vw);height:min(200px,58vw);} }
  .msg-input-extra-btn{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--bg);color:var(--muted);font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .12s ease,border-color .12s ease;}
  .msg-input-extra-btn:hover{color:var(--accent-text);border-color:rgba(var(--accent-rgb),0.5);}
  .msg-reply-bar{display:flex;align-items:center;gap:8px;padding:9px 18px;border-top:1px solid var(--border);background:var(--bg-elev-2);}
  .msg-reply-bar-info{flex:1;min-width:0;border-left:3px solid var(--accent);padding-left:8px;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .msg-reply-bar-info b{color:var(--text);}
  .msg-reply-bar-close{background:none;border:none;color:var(--muted);cursor:pointer;font-size:15px;padding:2px 6px;border-radius:50%;transition:background .12s ease,color .12s ease;}
  .msg-reply-bar-close:hover{color:var(--red);background:rgba(var(--red-rgb,220,53,69),0.12);}
  .msg-input-row{display:flex;gap:8px;align-items:center;padding:13px 18px;border-top:1px solid var(--border);flex-shrink:0;background:var(--bg-elev);}
  .msg-input-row input{flex:1;border-radius:22px;padding:10px 18px;background:var(--bg);color:var(--text);border:1px solid var(--border);transition:border-color .15s ease,box-shadow .15s ease;}
  .msg-input-row input:focus{border-color:rgba(var(--accent-rgb),0.5);box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.14);}
  .msg-input-row button[type="submit"]{border-radius:22px;padding:9px 20px;box-shadow:0 3px 10px rgba(var(--accent-rgb),0.25);}
  .launch-pairs{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto;}
  .launch-pair-row{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-elev-2);border-radius:6px;}
  .launch-pair-row select{flex:1;min-width:0;}
  .launch-pair-num{font-family:var(--font-mono);font-size:11px;color:var(--muted);width:18px;flex-shrink:0;}
  .launch-pair-vs{font-size:11px;color:var(--muted);font-weight:700;flex-shrink:0;}
  .launch-groups{display:flex;gap:16px;}
  .launch-group-col{flex:1;min-width:0;background:var(--bg-elev-2);border-radius:8px;padding:10px;max-height:420px;overflow-y:auto;}
  .launch-group-col h4{margin:0 0 8px;font-size:13px;}
  .launch-team-row{display:flex;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid var(--border);}
  .launch-team-row:last-child{border-bottom:none;}
  .launch-team-row span{flex:1;font-size:13px;font-weight:700;}
  .msg-conv-pinned{background:rgba(255,201,60,0.08);border-bottom:1px solid var(--border);}
  .msg-conv-pinned:hover{background:rgba(255,201,60,0.14);}
  .msg-conv-pinned.active{background:rgba(255,201,60,0.2);}
  .msg-propose-btn{font-size:16px;padding:6px 10px;flex-shrink:0;}
  .msg-propose-form{display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg-elev-2);}
  .msg-propose-row{display:flex;gap:8px;}
  .msg-propose-row input,.msg-propose-row select{flex:1;}
  .msg-propose-actions{display:flex;justify-content:flex-end;gap:8px;}
  .msg-proposal-card{align-self:flex-start;max-width:80%;background:linear-gradient(150deg, rgba(255,201,60,0.16), var(--bg-elev-2) 65%);border:1px solid var(--yellow);border-radius:14px;padding:12px 16px;box-shadow:0 2px 8px rgba(0,0,0,0.1);}
  .msg-proposal-card.accepted{border-color:var(--green);background:linear-gradient(150deg, rgba(52,199,89,0.16), var(--bg-elev-2) 65%);}
  .msg-proposal-card.declined{border-color:var(--red);opacity:0.75;}
  .msg-proposal-card.countered{border-color:var(--muted);opacity:0.8;}
  .msg-proposal-head{font-weight:800;font-size:12.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--yellow);display:flex;align-items:center;gap:6px;}
  .msg-proposal-card.accepted .msg-proposal-head{color:var(--green);}
  .msg-proposal-when{font-family:var(--font-mono);font-size:16px;font-weight:700;margin-top:5px;}
  .msg-proposal-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
  .msg-proposal-chip{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px;background:var(--bg-elev);border:1px solid var(--border);color:var(--muted);}
  .msg-proposal-note{font-size:13px;color:var(--muted);margin-top:6px;}
  .msg-proposal-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
  .msg-proposal-status{font-size:12.5px;font-weight:700;margin-top:8px;}
  .msg-proposal-match-link{display:inline-block;margin-top:8px;}
  .ban-cross{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:rgba(var(--red-rgb,220,53,69),0.18);color:var(--red);font-size:10px;font-weight:900;margin-left:6px;cursor:help;vertical-align:middle;line-height:1;}
  select.player-banned-select,input.player-banned-input{opacity:0.5;}
  .stats-row-banned td{opacity:0.55;}
  @media (max-width:760px){
    .msg-shell{height:min(72vh,600px);position:relative;}
    .msg-list-col{width:100%;border-right:none;}
    .msg-thread-col{position:absolute;inset:0;background:var(--bg-elev);transform:translateX(100%);transition:transform .18s ease;}
    .msg-shell.thread-open .msg-list-col{display:none;}
    .msg-shell.thread-open .msg-thread-col{transform:translateX(0);}
    .msg-back-btn{display:inline-flex;}
    .msg-bubble{max-width:85%;}
    .msg-bubble-actions{opacity:1;}
  }

  .standing-row{cursor:pointer;}
  .standing-row td{transition:background 0.12s;}
  .standing-row:hover td{background:var(--hover-2);}
  .standing-row.is-open td{background:rgba(var(--accent-rgb),0.05);border-bottom-color:transparent;}
  .standing-chevron{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;color:var(--muted);transition:transform 0.18s ease;}
  .standing-chevron svg{width:10px;height:10px;}
  .standing-chevron.open{transform:rotate(90deg);color:var(--accent-text);}
  .standing-expand td{background:linear-gradient(180deg,rgba(var(--accent-rgb),0.05),rgba(255,255,255,0.01));padding:0;border-bottom:1px solid var(--border);}
  .roster-strip{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start;justify-content:center;padding:18px 20px 20px 60px;border-left:2px solid var(--accent);margin:0 10px;}
  .roster-card{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;width:72px;text-align:center;padding:6px 4px;border-radius:4px;transition:background 0.12s;}
  .roster-card:hover{background:var(--hover-3);}
  .roster-card:hover .roster-nick{color:var(--accent-text);}
  .roster-photo-wrap{width:60px;height:60px;border-radius:50%;padding:2px;background:linear-gradient(135deg,var(--accent),var(--bg-elev-2));}
  .roster-photo-wrap .avatar,.roster-photo-wrap .avatar-fallback{width:56px;height:56px;border:2px solid var(--bg-elev);}
  .roster-nick{font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:72px;transition:color 0.12s;color:var(--text);}
  .roster-flag{display:flex;align-items:center;justify-content:center;}
  .roster-profile-btn{align-self:center;margin-left:4px;}

  /* ---------- Рейтинг команд (в стиле HLTV, записи по понедельникам) ---------- */
  .rk-layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:22px;align-items:start;margin-top:18px;}
  .rk-side{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;overflow:hidden;}
  .rk-side-title{font-family:var(--font-mono);font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);padding:10px 14px;background:var(--bg-elev-2);border-bottom:1px solid var(--border);}
  .rk-group-title{font-family:var(--font-mono);font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);padding:9px 14px;background:var(--bg-elev-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
  .rk-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;color:var(--muted);font-family:var(--font-body);font-weight:600;font-size:13px;padding:8px 14px;cursor:pointer;transition:background .12s,color .12s;}
  .rk-opt:hover:not(:disabled){background:var(--hover-2);color:var(--text);}
  .rk-opt.active{color:var(--accent-text);background:rgba(var(--accent-rgb),0.10);box-shadow:inset 3px 0 0 var(--accent);}
  .rk-opt:disabled{opacity:.35;cursor:not-allowed;}
  .rk-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(57,255,136,0.15);flex:none;}
  .rk-side-empty{padding:12px 14px;font-size:12px;color:var(--muted);line-height:1.5;}

  .rk-headbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
  .rk-title{font-family:var(--font-display);font-size:30px;line-height:1.1;letter-spacing:.3px;}
  .rk-nav{display:flex;gap:6px;}
  .rk-nav button{width:34px;height:34px;border-radius:6px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);cursor:pointer;font-size:16px;line-height:1;transition:border-color .12s;}
  .rk-nav button:hover:not(:disabled){border-color:var(--accent);color:var(--accent-text);}
  .rk-nav button:disabled{opacity:.35;cursor:not-allowed;}
  .rk-sub{color:var(--muted);font-size:12.5px;margin:6px 0 14px;line-height:1.5;}

  .rk-admin{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--bg-elev);border:1px dashed var(--border);border-radius:8px;padding:8px 12px;margin-bottom:12px;font-size:12px;color:var(--muted);}
  .rk-admin .rk-admin-warn{flex-basis:100%;color:var(--yellow);}

  .rk-item{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;margin-bottom:8px;overflow:hidden;transition:border-color .12s,transform .12s;}
  .rk-item:hover{border-color:rgba(var(--accent-rgb),0.45);}
  .rk-item.open{border-color:rgba(var(--accent-rgb),0.55);}
  .rk-head{display:flex;align-items:center;gap:14px;padding:11px 16px;cursor:pointer;}
  .rk-rank{font-family:var(--font-display);font-size:26px;line-height:1;width:44px;color:#fff;flex:none;}
  .rk-rank.rk-rank-1{color:#FFD700;}
  .rk-rank.rk-rank-2{color:#C0C6CE;}
  .rk-rank.rk-rank-3{color:#CD7F32;}
  .rk-item.rk-top .rk-rank{color:#FFD700;}
  .rk-item.rk-top{background:linear-gradient(90deg,rgba(var(--accent-rgb),0.10),var(--bg-elev) 55%);}
  .rk-main{flex:1;min-width:0;}
  .rk-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--text);}
  .rk-name b{font-size:16px;}
  .rk-fullname{color:var(--muted);font-size:13px;}
  .rk-pts{color:var(--yellow);font-family:var(--font-mono);font-size:12.5px;font-weight:700;}
  .rk-nicks{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px;}
  .rk-nicks i{font-style:normal;opacity:.5;padding:0 5px;}
  .rk-stats{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:12px;color:var(--muted);white-space:nowrap;flex:none;}
  .rk-form{flex:none;}
  .rk-move{min-width:48px;text-align:right;font-family:var(--font-mono);font-weight:700;font-size:13px;flex:none;}
  .rk-mv.up{color:var(--green);}
  .rk-mv.down{color:var(--red);}
  .rk-mv.same{color:var(--muted);}
  .rk-mv.new{color:var(--yellow);font-size:11px;letter-spacing:.6px;}

  .rk-body{border-top:1px solid var(--border);padding:18px 16px 14px;background:linear-gradient(180deg,rgba(var(--accent-rgb),0.06),transparent);}
  .rk-players{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;max-width:760px;margin:0 auto;}
  .rk-player{text-align:center;cursor:pointer;min-width:0;}
  .rk-photo{aspect-ratio:1/1;width:100%;max-width:132px;margin:0 auto;border-radius:8px;overflow:hidden;background:linear-gradient(160deg,var(--bg-elev-2),var(--bg));border:1px solid var(--border);display:flex;align-items:flex-end;justify-content:center;transition:border-color .12s;}
  .rk-photo img{width:100%;height:100%;object-fit:cover;display:block;}
  .rk-photo svg{opacity:.55;}
  .rk-player:hover .rk-photo{border-color:var(--accent);}
  .rk-player:hover .rk-pname{color:var(--accent-text);}
  .rk-pname{margin-top:7px;font-weight:700;font-size:13px;display:flex;justify-content:center;align-items:center;color:var(--text);transition:color .12s;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
  .rk-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:16px;}

  @media (max-width:860px){
    .rk-layout{grid-template-columns:minmax(0,1fr);gap:14px;}
    .rk-side-groups{display:flex;flex-wrap:wrap;}
    .rk-side-groups > div{flex:1 1 100%;}
    .rk-group-opts{display:flex;flex-wrap:wrap;}
    .rk-group-opts .rk-opt{width:auto;}
  }
  @media (max-width:700px){
    .rk-stats{display:none;}
    .rk-form{display:none;}
    .rk-title{font-size:24px;}
    .rk-head{padding:10px 12px;gap:10px;}
    .rk-rank{width:34px;font-size:22px;}
    .rk-players{grid-template-columns:repeat(3,minmax(0,1fr));}
  }
  .rk-main-col{min-width:0;}

  .upload-field{border:1px dashed var(--border);border-radius:3px;padding:10px;margin-bottom:8px;}
  .upload-field input[type=file]{font-size:12px;color:var(--muted);}
  .upload-field input[type=text]{margin-top:8px;}

  @media(max-width:640px){
    .hero h1{font-size:38px;}
    .field-row{flex-direction:column;}
  }
  /* ---------- Tournament detail (hero, subnav, bracket, swiss) ---------- */
  .tour-hero{
    display:flex;gap:22px;align-items:flex-start;padding:26px 24px;border-radius:10px;margin-bottom:20px;
    background:linear-gradient(135deg, rgba(var(--accent-rgb),0.14), rgba(var(--accent-rgb),0.02) 60%), var(--bg-elev);
    border:1px solid var(--border);position:relative;overflow:hidden;
  }
  .tour-hero::before{content:'';position:absolute;top:-40%;right:-10%;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle, rgba(var(--accent-rgb),0.16), transparent 70%);pointer-events:none;}
  .tour-hero-icon{
    font-size:44px;line-height:1;width:80px;height:80px;display:flex;align-items:center;justify-content:center;
    background:linear-gradient(160deg, rgba(var(--accent-rgb),0.22), var(--bg-elev-2));
    border:1px solid rgba(var(--accent-rgb),0.35);border-radius:10px;flex-shrink:0;position:relative;z-index:1;
    box-shadow:0 6px 18px rgba(var(--accent-rgb),0.18);
  }
  .tour-hero-dates{color:var(--muted);font-size:12.5px;letter-spacing:.03em;text-transform:uppercase;font-weight:600;}
  .tour-hero-title{font-size:30px;margin:3px 0 0;line-height:1.15;position:relative;z-index:1;}
  .tour-hero > div{position:relative;z-index:1;}
  .tour-pill{display:inline-flex;align-items:center;gap:5px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:4px 12px;font-size:12px;font-weight:700;font-family:var(--font-mono);}
  /* ---- Баннер турнира: шапка турнира, карточка в списке, превью в формах ---- */
  .tour-hero.has-banner{padding:0;flex-direction:column;gap:0;background:var(--bg-elev);}
  .tour-hero.has-banner::before{display:none;}
  .tour-hero-banner{display:block;width:100%;aspect-ratio:4/1;max-height:280px;object-fit:cover;background:var(--bg-elev-2);}
  .tour-hero-body{display:flex;gap:22px;align-items:flex-start;padding:0 24px 24px;width:100%;box-sizing:border-box;}
  .tour-hero.has-banner .tour-hero-icon{
    margin-top:-34px;
    background:linear-gradient(160deg, rgba(var(--accent-rgb),0.22), var(--bg-elev-2)), var(--bg-elev);
    border-width:2px;
  }
  .tour-hero.has-banner .tour-hero-body > div:last-child{padding-top:14px;min-width:0;}
  .tourn-cover{display:block;width:calc(100% + 32px);margin:-16px -16px 12px;aspect-ratio:16/5;object-fit:cover;background:var(--bg-elev-2);}
  .tn-banner-preview{aspect-ratio:4/1;margin-bottom:8px;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--bg-elev-2);display:flex;align-items:center;justify-content:center;}
  .tn-banner-preview img{width:100%;height:100%;object-fit:cover;display:block;}
  .tn-mvpphoto-preview{aspect-ratio:1/1;max-width:220px;margin-bottom:8px;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--bg-elev-2);display:flex;align-items:center;justify-content:center;}
  .tn-mvpphoto-preview img{width:100%;height:100%;object-fit:cover;display:block;}
  @media (max-width:640px){
    .tour-hero-banner{aspect-ratio:16/7;}
    .tour-hero-body{flex-direction:column;gap:12px;padding:0 16px 18px;}
    .tour-hero.has-banner .tour-hero-icon{margin-top:-28px;}
    .tour-hero.has-banner .tour-hero-body > div:last-child{padding-top:0;}
  }

  /* ---- Страница турнира изнутри: вкладки, плашка с данными, секции ---- */
  .tv-tabs{display:flex;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;overflow-x:auto;}
  .tv-tabs button{flex:1 1 0;min-width:max-content;background:none;border:0;border-right:1px solid var(--border);color:var(--muted);font:inherit;font-size:14px;font-weight:700;padding:12px 18px;cursor:pointer;white-space:nowrap;}
  .tv-tabs button:last-child{border-right:0;}
  .tv-tabs button:hover{color:var(--text);}
  .tv-tabs button.active{background:var(--bg-elev-2);color:var(--text);box-shadow:inset 0 -2px 0 var(--accent);}
  .tv-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
  .tv-info{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 18px;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:14px 18px;margin:10px 0 22px;}
  .tv-info > div{min-width:0;}
  .tv-info .k{display:block;font-size:12px;color:var(--muted);margin-bottom:3px;}
  .tv-info b{display:block;font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tv-info small{display:block;font-size:12px;color:var(--yellow);font-family:var(--font-mono);margin-top:1px;}
  .tv-sec{margin-bottom:22px;}
  .tv-h{font-size:15px;font-weight:700;color:var(--muted);margin:0 0 8px 2px;}
  .tv-panel{background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:14px;}
  .tv-panel h4{margin-top:0 !important;}
  .tv-sub{font-size:13px;font-weight:700;color:var(--muted);margin:0 0 10px;}
  .tv-sub:not(:first-child){margin-top:22px;}
  .tv-note{color:var(--muted);font-size:13.5px;padding:6px 2px;}
  .tv-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 18px;align-items:start;}
  .tv-prizes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
  .tv-prize{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-align:center;padding:16px 10px;background:var(--bg-elev-2);border:1px solid transparent;border-radius:4px;min-height:96px;}
  .tv-prize.top{grid-column:span 2;padding:24px 10px;}
  .tv-prize.p1{border-top:2px solid var(--yellow);}
  .tv-prize.p2{border-top:2px solid #B8C1CC;}
  .tv-prize.p3{border-top:2px solid #C98A56;}
  .tv-prize-place{font-size:14px;font-weight:700;}
  .tv-prize.top .tv-prize-place{font-size:16px;}
  .tv-prize-amt{font-family:var(--font-mono);font-size:15px;font-weight:700;color:var(--green);}
  .tv-prize.top .tv-prize-amt{font-size:18px;}
  .tv-prize-rp{font-family:var(--font-mono);font-size:11.5px;color:var(--yellow);}
  .tv-prize-team{display:inline-flex;align-items:center;gap:6px;margin-bottom:4px;font-size:13px;font-weight:700;cursor:pointer;}
  .tv-prize-team:hover{color:var(--accent-text);}
  .tv-teams{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
  .tv-team{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;min-height:158px;padding:14px 8px 12px;background:var(--bg-elev-2);border:1px solid transparent;border-radius:4px;text-align:center;cursor:pointer;color:var(--text);font:inherit;}
  .tv-team:hover{border-color:var(--accent);}
  .tv-team:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
  .tv-team-tag{font-size:13.5px;font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 34px;}
  .tv-team .team-badge{width:64px !important;height:64px !important;font-size:26px !important;border-radius:6px;margin:auto 0;object-fit:contain !important;background:transparent;}
  /* Крупный логотип в ячейке участника: картинка занимает почти всю ширину ячейки
     (логотипы бывают широкими — в квадрате 64×64 они выглядели мелко), без-логотипная
     плашка с тегом — квадрат покрупнее. */
  .tv-team{min-height:200px;}
  .tv-team img.team-badge{width:100% !important;max-width:200px;height:110px !important;padding:0;}
  .tv-team div.team-badge{width:96px !important;height:96px !important;font-size:40px !important;}
  @media (max-width:640px){ .tv-team{min-height:170px;} .tv-team img.team-badge{height:84px !important;} .tv-team div.team-badge{width:80px !important;height:80px !important;font-size:32px !important;} }
  .tv-team-sub{font-size:12px;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tv-team-rp{position:absolute;top:8px;right:8px;background:rgba(var(--accent-rgb),.16);color:var(--accent-text);border-radius:3px;font-family:var(--font-mono);font-size:10.5px;font-weight:700;padding:2px 6px;}
  .tv-team-fee{position:absolute;top:8px;left:8px;font-size:10px;}
  .tv-team.tbd{border:1px dashed var(--border);background:transparent;color:var(--muted);justify-content:center;font-weight:700;cursor:default;}
  .tv-team.tbd:hover{border-color:var(--border);}
  .tv-kv > div{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:9px 12px;background:var(--bg-elev-2);margin-bottom:2px;font-size:13.5px;}
  .tv-kv .k{color:var(--muted);}
  .tv-kv .v{font-weight:700;text-align:right;min-width:0;}
  .tv-kv .v small{display:block;color:var(--muted);font-weight:500;font-size:11.5px;}
  .tv-format-name{font-size:15px;font-weight:700;margin-bottom:6px;}
  .tv-format-hint{color:var(--muted);font-size:13.5px;line-height:1.5;}
  .tv-actions{margin-top:6px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
  .tv-hero-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;}
  @media (max-width:900px){ .tv-teams{grid-template-columns:repeat(3,minmax(0,1fr));} .tv-cols{grid-template-columns:minmax(0,1fr);} }
  @media (max-width:640px){
    .tv-info{grid-template-columns:repeat(2,minmax(0,1fr));}
    .tv-prizes,.tv-teams{grid-template-columns:repeat(2,minmax(0,1fr));}
    .tv-tabs button{padding:11px 14px;font-size:13px;}
  }

  /* ---- Календарь турниров (раздел «Турниры») ----
     12 месяцев сеткой, начиная с текущего: у каждого месяца своя колонка
     со списком турниров (логотип, название, даты). Глобал-турниры — золотистые,
     идущие сейчас — с красной меткой LIVE. */
  .tcal{margin:14px 0 24px;}
  .tcal-head{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin-bottom:14px;}
  .tcal-title{font-family:var(--font-display);font-size:30px;letter-spacing:.4px;line-height:1.1;margin:0;flex:1 1 auto;min-width:180px;}
  .tcal-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
  .tcal-seg{display:inline-flex;border:1px solid var(--border);border-radius:5px;overflow:hidden;background:var(--bg-elev);}
  .tcal-seg button{background:none;border:0;border-right:1px solid var(--border);color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;padding:6px 13px;cursor:pointer;}
  .tcal-seg button:last-child{border-right:0;}
  .tcal-seg button:hover{color:var(--text);}
  .tcal-seg button.active{background:var(--accent);color:var(--on-accent);}
  .tcal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 14px;}
  .tcal-month{min-width:0;display:flex;flex-direction:column;}
  .tcal-mname{font-size:15px;font-weight:700;margin:0 0 8px 2px;color:var(--muted);}
  .tcal-month.now .tcal-mname{color:var(--accent-text);}
  .tcal-panel{flex:1;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:8px;display:flex;flex-direction:column;gap:6px;min-height:150px;}
  .tcal-ev{display:flex;align-items:center;gap:9px;width:100%;min-width:0;padding:7px 9px;border:1px solid transparent;border-radius:4px;background:var(--bg-elev-2);color:var(--text);font:inherit;font-size:13px;font-weight:600;text-align:left;cursor:pointer;}
  .tcal-ev:hover{border-color:var(--accent);}
  .tcal-ev.g{background:rgba(255,201,60,.14);border-color:rgba(255,201,60,.34);}
  .tcal-ev.g:hover{border-color:var(--yellow);}
  .tcal-ev.past{opacity:.55;}
  .tcal-logo{width:22px;height:22px;flex:none;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1;overflow:hidden;background:var(--bg);}
  .tcal-logo img{width:100%;height:100%;object-fit:contain;display:block;}
  .tcal-logo img.cover{object-fit:cover;}
  .tcal-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tcal-when{flex:none;font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--muted);}
  .tcal-live{flex:none;background:var(--red);color:#fff;border-radius:3px;font-size:10.5px;font-weight:800;letter-spacing:.04em;padding:2px 6px;}
  .tcal-expand{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg-elev-2);color:var(--text);font:inherit;font-size:13px;font-weight:700;text-align:center;cursor:pointer;}
  .tcal-expand:hover{border-color:var(--accent);}
  .tcal-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:16px 8px;color:var(--muted);text-align:center;font-size:12.5px;font-weight:600;}
  .tcal-empty b{font-family:var(--font-mono);font-size:24px;opacity:.7;}
  .tcal-loadmore{display:block;width:100%;margin-top:22px;padding:13px 16px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:6px;color:var(--text);font:inherit;font-size:14px;font-weight:700;cursor:pointer;}
  .tcal-loadmore:hover{border-color:var(--accent);}
  .tcal button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
  @media (max-width:1000px){ .tcal-grid{grid-template-columns:repeat(3,minmax(0,1fr));} }
  @media (max-width:720px){ .tcal-grid{grid-template-columns:repeat(2,minmax(0,1fr));} .tcal-title{font-size:26px;} }
  @media (max-width:480px){ .tcal-grid{grid-template-columns:minmax(0,1fr);} .tcal-panel{min-height:0;} }
  /* ---- Профиль игрока: вкладки «Карты» и «Сетап» ---- */
  .pmap-wrap{overflow-x:auto;margin-top:14px;}
  .pmap-row{display:grid;grid-template-columns:minmax(96px,1.5fr) 54px 68px minmax(120px,2fr) 58px 58px;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);background:var(--bg-elev-2);border-radius:5px;margin-bottom:6px;min-width:480px;font-size:13.5px;}
  .pmap-row.head{background:none;border-color:transparent;color:var(--muted);font-size:11.5px;padding-top:0;padding-bottom:0;}
  .pmap-row .mono{font-family:var(--font-mono);}
  .pmap-name{font-weight:700;}
  .pmap-wr{display:flex;align-items:center;gap:8px;}
  .pmap-wr-track{flex:1;height:6px;border-radius:3px;background:var(--border);overflow:hidden;}
  .pmap-wr-fill{height:100%;border-radius:3px;}
  .pmap-wr b{font-family:var(--font-mono);font-size:12.5px;min-width:38px;text-align:right;}
  .pmap-note{color:var(--muted);font-size:12px;margin-top:10px;}
  .pst-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-top:14px;}
  .pst-item{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:5px;padding:12px 14px;min-width:0;}
  .pst-item span{display:block;font-size:11.5px;color:var(--muted);margin-bottom:4px;}
  .pst-item b{display:block;font-size:15px;font-weight:600;word-break:break-word;}
  .pst-item.wide{grid-column:1/-1;}
  .pst-code{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .pst-code code{font-family:var(--font-mono);font-size:13px;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:6px 10px;word-break:break-all;flex:1 1 220px;}
  /* ---- Опросы проекта (третья лента в разделе «Новости») ---- */
  .poll-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:14px;}
  .poll-card.closed{opacity:.9;}
  .poll-q{font-family:var(--font-display);font-size:23px;letter-spacing:.4px;line-height:1.15;margin:6px 0 12px;}
  .poll-opt{position:relative;display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:pointer;overflow:hidden;font-family:var(--font-body);font-size:14px;}
  .poll-opt:hover:not(:disabled){border-color:var(--accent);}
  .poll-opt.mine{border-color:var(--accent);}
  .poll-opt:disabled{cursor:default;}
  .poll-fill{position:absolute;left:0;top:0;bottom:0;background:rgba(var(--accent-rgb),.18);transition:width .35s ease;z-index:0;}
  .poll-opt.mine .poll-fill{background:rgba(var(--accent-rgb),.32);}
  .poll-txt,.poll-pct{position:relative;z-index:1;}
  .poll-pct{margin-left:auto;font-family:var(--font-mono);font-size:12.5px;color:var(--muted);white-space:nowrap;}
  .poll-foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:12.5px;}
  .tour-subnav{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto;}
  .tour-subnav button{background:none;border:none;color:var(--muted);font-weight:700;font-size:14px;padding:10px 16px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;transition:color .12s ease;}
  .tour-subnav button:hover{color:var(--text);}
  .tour-subnav button.active{color:var(--accent-text);border-bottom-color:var(--accent);}
  .round-chevron-header{color:var(--accent-text);font-weight:700;font-size:13px;margin:18px 0 10px;letter-spacing:.02em;}
  .round-chevron-header:first-child{margin-top:0;}

  /* Category pill filters on the tournaments list (distinct from the
     underline-style tour-subnav used inside a tournament's own page). */
  .tour-cat-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
  .tour-cat-tabs button{
    background:var(--bg-elev);border:1px solid var(--border);color:var(--muted);font-weight:700;font-size:12.5px;
    padding:8px 14px;border-radius:999px;cursor:pointer;transition:border-color .12s ease,color .12s ease,background .12s ease;
    font-family:var(--font-body);
  }
  .tour-cat-tabs button:hover{color:var(--text);border-color:var(--accent);}
  .tour-cat-tabs button.active{background:rgba(var(--accent-rgb),0.14);border-color:var(--accent);color:var(--accent-text);}

  /* Tournament grid card — colored left bar signals status at a glance,
     a slots progress bar shows fill level without reading the numbers. */
  .tourn-card{border-left:3px solid var(--border);transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;}
  .tourn-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
  .tourn-card.cat-open{border-left-color:var(--green);}
  .tourn-card.cat-upcoming{border-left-color:var(--yellow);}
  .tourn-card.cat-completed{border-left-color:var(--muted);}
  .tourn-card.cat-other{border-left-color:var(--accent-2);}
  .tourn-badges{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0;}
  .tourn-badge{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;font-family:var(--font-mono);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:3px 10px;}
  .tourn-progress-track{height:4px;border-radius:2px;background:var(--bg-elev-2);overflow:hidden;margin-top:10px;}
  .tourn-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .2s ease;}

  .participant-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;}
  .participant-cell{background:var(--bg-elev);border:1px dashed var(--border);border-radius:4px;padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--muted);font-size:12px;font-weight:700;min-height:64px;justify-content:center;}
  .participant-cell.filled{color:var(--text);cursor:pointer;border-style:solid;border-color:var(--bg-elev-2);background:var(--bg-elev);}
  .participant-cell.filled:hover{border-color:var(--accent);transform:translateY(-1px);}
  .participant-cell img,.participant-cell .avatar,.participant-cell .avatar-fallback{width:28px;height:28px;border-radius:3px;}

  .match-card-v2{background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;padding:10px 12px;margin-bottom:10px;width:100%;min-width:220px;}

  /* ---------- HLTV-style dense match list (Matches tab) ---------- */
  .matches-list{border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:14px;}
  .match-date-head{background:var(--bg-elev-2);color:var(--muted);font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:0.9px;padding:7px 14px;border-bottom:1px solid var(--border);}
  .match-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);border-left:3px solid transparent;background:var(--bg-elev);flex-wrap:wrap;transition:background .12s ease,border-left-color .12s ease;}
  .matches-list .match-row:last-child{border-bottom:none;}
  .match-row:hover{background:var(--hover-2);}
  .match-row.st-approved{border-left-color:var(--green);}
  .match-row.st-pending{border-left-color:var(--yellow);}
  .match-row.st-scheduled{border-left-color:var(--accent-2);}
  .match-row.st-rejected{border-left-color:var(--red);}
  .match-row.is-live{background:linear-gradient(90deg,rgba(255,77,94,0.07),transparent 60%);border-left-color:var(--red);}
  .mr-meta{font-size:11px;color:var(--muted);width:132px;flex-shrink:0;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mr-teams{display:flex;align-items:center;gap:10px;flex:1 1 260px;min-width:220px;justify-content:center;}
  .mr-team{display:flex;align-items:center;gap:6px;font-family:var(--font-display);font-size:18px;cursor:pointer;flex:1;min-width:0;color:var(--text);}
  .mr-team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mr-team.right{justify-content:flex-end;text-align:right;flex-direction:row-reverse;}
  .mr-center{min-width:64px;text-align:center;flex-shrink:0;}
  .mr-center .mono{background:var(--bg-elev-2);border-radius:999px;padding:3px 12px;display:inline-block;}
  .mr-status{width:118px;text-align:right;flex-shrink:0;}
  .mr-actions{display:none;gap:5px;flex-wrap:wrap;width:100%;justify-content:flex-end;margin-top:2px;padding-top:8px;border-top:1px dashed var(--border);}
  .match-row.expanded .mr-actions{display:flex;}
  .mr-expand-toggle{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px 4px;flex-shrink:0;}
  .mr-expand-toggle:hover{color:var(--accent-text);}
  .mr-maps-row{width:100%;display:flex;flex-wrap:wrap;gap:4px;order:5;}
  .mc-top{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px;margin-bottom:8px;}
  .mc-bo{background:var(--bg-elev-2);color:var(--text);font-weight:700;font-size:10px;padding:1px 6px;border-radius:2px;}
  .mc-row{display:flex;align-items:center;justify-content:space-between;gap:8px;}
  .mc-team{display:flex;align-items:center;gap:6px;font-weight:700;font-size:13px;flex:1;min-width:0;}
  .mc-team img,.mc-team .avatar,.mc-team .avatar-fallback{width:24px;height:24px;border-radius:2px;flex-shrink:0;}
  .mc-team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .mc-team.mc-lose{color:var(--red);}
  .mc-cross{color:var(--red);font-weight:700;flex-shrink:0;}

  /* ---------- HLTV-style match detail hero (Match tab) ---------- */
  .match-hero{background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;padding:26px 20px 20px;margin-top:14px;position:relative;overflow:hidden;}
  .match-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0%,rgba(var(--accent-rgb),0.09),transparent 60%);pointer-events:none;}
  .match-hero-top{display:flex;align-items:center;justify-content:center;gap:6vw;position:relative;flex-wrap:wrap;}
  .match-hero-team{display:flex;flex-direction:column;align-items:center;gap:10px;cursor:pointer;width:150px;text-align:center;}
  .match-hero-team .team-badge{width:64px;height:64px;font-size:26px;}
  .match-hero-team .mh-flag{opacity:0.85;}
  .match-hero-team .mh-name{font-family:var(--font-display);font-size:22px;line-height:1.05;}
  .match-hero-center{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:140px;}
  .match-hero-time{font-family:var(--font-display);font-size:44px;line-height:1;font-weight:700;}
  .match-hero-score{font-family:var(--font-mono);font-size:40px;font-weight:700;line-height:1;}
  .match-hero-event{color:var(--muted);font-size:13px;text-align:center;max-width:220px;}
  .match-hero-countdown{font-family:var(--font-mono);font-size:15px;color:var(--accent-text);letter-spacing:0.5px;margin-top:2px;}
  .match-hero-actions{display:flex;gap:8px;justify-content:center;margin-top:16px;flex-wrap:wrap;position:relative;}
  .match-maps-head{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg-elev-2);border:1px solid var(--border);border-bottom:none;border-radius:4px 4px 0 0;padding:9px 14px;margin-top:20px;}
  .match-maps-head .mm-title{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:0.9px;color:var(--muted);}
  .match-maps-head .mm-sub{font-size:12px;color:var(--muted);}
  .match-maps-list{border:1px solid var(--border);border-radius:0 0 4px 4px;overflow:hidden;}
  .match-map-card{display:flex;align-items:center;gap:12px;padding:11px 16px;background:var(--bg-elev);border-bottom:1px solid var(--border);transition:background .12s ease;}
  .match-map-card:hover{background:var(--hover-1);}
  .match-map-card:last-child{border-bottom:none;}
  .match-map-card .mm-num{font-family:var(--font-mono);font-size:11px;color:var(--muted);width:18px;flex-shrink:0;}
  .match-map-card .mm-name{font-family:var(--font-display);font-size:17px;flex:1;min-width:0;}
  .match-map-card.tba .mm-name{color:var(--muted);letter-spacing:1px;}
  .match-map-card .mm-score{font-family:var(--font-mono);font-size:14px;font-weight:700;flex-shrink:0;background:var(--bg-elev-2);border-radius:999px;padding:2px 12px;}
  .match-map-card .mm-link{flex-shrink:0;}
  .match-form-hero{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:16px;margin-bottom:18px;}
  .mfh-top{display:flex;align-items:center;justify-content:center;gap:18px;}
  .mfh-team{display:flex;flex-direction:column;align-items:center;gap:6px;width:110px;text-align:center;}
  .mfh-team .team-badge{width:44px;height:44px;font-size:18px;}
  .mfh-team .mfh-name{font-family:var(--font-display);font-size:16px;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px;}
  .mfh-vs{font-family:var(--font-mono);color:var(--muted);font-size:12px;flex-shrink:0;}
  .mfh-meta{text-align:center;margin-top:10px;font-family:var(--font-mono);font-size:12px;color:var(--muted);}

  /* ---------- Detailed match stats / MOTM / player H2H (match tab) ---------- */
  .stats-view-toggle{display:flex;gap:6px;margin-top:20px;}
  .stats-view-toggle button.active{background:var(--accent);border-color:var(--accent);color:#1a0e00;}
  .hltv-stats-table{width:100%;margin-top:10px;}
  .hltv-stats-table th{text-align:right;}
  .hltv-stats-table th:first-child,.hltv-stats-table td:first-child{text-align:left;}
  .hltv-stats-table td,.hltv-stats-table th{text-align:right;padding:7px 8px;}
  .hltv-stats-table .hs-player{display:flex;align-items:center;gap:8px;}
  .hltv-stats-table .hs-player img,.hltv-stats-table .hs-player .avatar-fallback{width:22px;height:22px;border-radius:2px;}
  .lineups-strip{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;}
  .lineup-card{flex:1;min-width:84px;text-align:center;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:10px 6px;cursor:pointer;}
  .lineup-card img,.lineup-card .avatar-fallback{width:100%;aspect-ratio:1/1;border-radius:3px;object-fit:cover;}
  .lineup-card .lc-nick{font-size:12px;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .lineup-card .lc-role{font-size:10px;color:var(--muted);}
  .motm-card{display:flex;gap:16px;margin-top:16px;background:linear-gradient(135deg, rgba(255,201,60,0.1), var(--bg-elev-2));border:1px solid var(--yellow);border-radius:6px;padding:14px;align-items:center;flex-wrap:wrap;}
  .motm-card .motm-photo{width:78px;height:78px;border-radius:4px;object-fit:cover;flex-shrink:0;}
  .motm-card .motm-photo.avatar-fallback{width:78px;height:78px;font-size:28px;}
  .motm-bars{display:flex;gap:16px;flex:1;flex-wrap:wrap;min-width:220px;}
  .motm-bar-col{display:flex;flex-direction:column;align-items:center;gap:4px;width:46px;}
  .motm-bar-track{width:20px;height:64px;background:var(--bg-elev);border-radius:3px;display:flex;align-items:flex-end;overflow:hidden;position:relative;}
  .motm-bar-track .motm-avg-line{position:absolute;left:0;right:0;height:1px;background:var(--muted);}
  .motm-bar-fill{width:100%;background:var(--accent-2);border-radius:3px 3px 0 0;}
  .motm-bar-val{font-family:var(--font-mono);font-size:12px;font-weight:700;}
  .motm-bar-label{font-size:10px;color:var(--muted);text-align:center;}
  .h2h-player-select-row{display:flex;align-items:center;gap:10px;margin-top:10px;}
  .h2h-player-select-row select{flex:1;}
  .h2h-player-compare{display:flex;align-items:stretch;gap:10px;margin-top:12px;flex-wrap:wrap;}
  .h2hp-side{flex:1;min-width:130px;text-align:center;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:12px 8px;}
  .h2hp-side img,.h2hp-side .avatar-fallback{width:64px;height:64px;border-radius:4px;object-fit:cover;margin:0 auto 8px;}
  .h2hp-side .h2hp-name{font-family:var(--font-display);font-size:16px;}
  .h2hp-side .h2hp-btn{margin-top:8px;}
  .h2hp-mid{flex:1.4;min-width:180px;display:flex;flex-direction:column;justify-content:center;gap:8px;}
  .h2hp-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;font-family:var(--font-mono);font-size:14px;}
  .h2hp-row .h2hp-v{font-weight:700;}
  .h2hp-row .h2hp-v.win{color:var(--green);}
  .h2hp-row .h2hp-label{text-align:center;color:var(--muted);font-family:var(--font-body);font-size:11px;text-transform:uppercase;letter-spacing:0.5px;}
  @media (max-width:640px){
    .match-hero-top{gap:16px;}
    .match-hero-team{width:auto;}
    .match-hero-time,.match-hero-score{font-size:32px;}
  }

  .swiss-columns{display:flex;gap:20px;overflow-x:auto;padding-bottom:8px;align-items:flex-start;}
  .swiss-day-col{flex:0 0 260px;width:260px;}

  .bracket-columns{display:flex;gap:32px;overflow-x:auto;padding-bottom:8px;align-items:stretch;}
  .bracket-col{flex:0 0 240px;width:240px;display:flex;flex-direction:column;justify-content:space-around;position:relative;}
  .bracket-col:not(:first-child){padding-left:20px;border-left:1px solid var(--border);}
  .bracket-col .match-card-v2{position:relative;}
  .bracket-col:not(:first-child) .match-card-v2::before{
    content:'';position:absolute;left:-21px;top:50%;width:20px;height:1px;background:var(--border);
  }

  .bracket-tree-wrap{overflow-x:auto;padding-bottom:12px;}
  .bracket-tree{position:relative;}
  .bt-round-label{position:absolute;top:0;color:var(--accent-text);font-weight:700;font-size:10.5px;text-align:center;letter-spacing:.04em;text-transform:uppercase;background:rgba(var(--accent-rgb),0.1);border-radius:999px;padding:3px 0;}
  .bt-card{position:absolute;background:var(--bg-elev);border:1px solid var(--border);border-radius:5px;padding:5px 8px;display:flex;flex-direction:column;justify-content:center;gap:3px;overflow:hidden;box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease;}
  .bt-card.bt-clickable{cursor:pointer;}
  .bt-card.bt-clickable:hover{border-color:var(--accent);box-shadow:0 3px 12px rgba(var(--accent-rgb),0.18);}
  .bt-row{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;color:var(--muted);border-radius:3px;padding:1px 3px;margin:0 -3px;}
  .bt-row.bt-win{color:var(--text);font-weight:700;}
  .bt-row.bt-win .bt-score{color:var(--green);}
  .bt-row.bt-lose{color:var(--red);background:rgba(var(--red-rgb,255,77,94),0.10);}
  .bt-row.bt-lose .bt-score{color:var(--red);}
  .bt-cross{color:var(--red);font-weight:700;margin-left:3px;}
  .bt-team{display:flex;align-items:center;gap:5px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;}
  .bt-team img,.bt-team .avatar,.bt-team .avatar-fallback{width:16px;height:16px;border-radius:2px;flex-shrink:0;}
  .bt-score{font-family:var(--font-mono);font-weight:700;flex-shrink:0;}
  .bt-line{position:absolute;}
  .bt-line-h{border-top:1px solid var(--border);}
  .bt-line-v{border-left:1px solid var(--border);}
  .bt-live{position:absolute;top:3px;right:5px;color:var(--red);font-size:9px;}
  .bt-champion{align-items:center;flex-direction:row;justify-content:center;gap:8px;border-color:var(--yellow);background:linear-gradient(135deg, rgba(255,201,60,0.16), var(--bg-elev));box-shadow:0 0 0 1px var(--yellow),0 6px 16px rgba(255,201,60,0.22);font-weight:700;}

  /* ---------- Game switcher (CSTV / OWTV) ---------- */
  .brand-block{display:flex;align-items:center;}
  .game-switcher{position:relative;margin-right:14px;}
  .game-switch-btn{display:flex;align-items:center;gap:4px;background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;padding:9px 10px;cursor:pointer;color:var(--text);}
  .game-switch-btn:hover{border-color:var(--accent);}
  .gs-chevron{color:var(--muted);flex-shrink:0;}
  .game-switch-menu{position:absolute;top:calc(100% + 8px);left:0;background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;padding:6px;min-width:200px;display:none;flex-direction:column;gap:2px;z-index:80;box-shadow:var(--shadow-md);}
  .game-switch-menu.open{display:flex;}
  .game-switch-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:3px;cursor:pointer;}
  .game-switch-item:hover{background:var(--bg-elev-2);}
  .game-switch-item.active{background:rgba(var(--accent-rgb),0.12);}
  .game-switch-item b{display:block;font-size:13px;font-family:'Dividente','Bebas Neue',var(--font-display);letter-spacing:0.5px;}
  .game-switch-item span{display:block;font-size:11px;color:var(--muted);}
  .lang-switcher{position:relative;flex-shrink:0;}
  .lang-switch-btn{display:flex;align-items:center;gap:4px;height:34px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:3px;padding:0 9px;cursor:pointer;color:var(--muted);font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:0.3px;}
  .lang-switch-btn:hover{color:var(--accent-text);border-color:var(--accent);}
  .lang-switch-menu{position:absolute;top:calc(100% + 8px);right:0;background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;padding:6px;min-width:150px;display:none;flex-direction:column;gap:2px;z-index:80;box-shadow:var(--shadow-md);}
  .lang-switch-menu.open{display:flex;}
  .lang-switch-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:3px;cursor:pointer;font-size:13.5px;color:var(--text);}
  .lang-switch-item:hover{background:var(--bg-elev-2);}
  .lang-switch-item.active{background:rgba(var(--accent-rgb),0.12);color:var(--accent-text);}
  @media (max-width:640px){ .lang-switch-btn{height:30px;padding:0 7px;font-size:11px;} }

  /* ---------- Favorites (избранное) ---------- */
  .fav-star-btn{background:none;border:none;cursor:pointer;font-size:18px;line-height:1;color:var(--border);padding:2px 4px;flex-shrink:0;transition:color .12s ease,transform .12s ease;}
  .fav-star-btn:hover{transform:scale(1.15);}
  .fav-star-btn.is-fav{color:var(--yellow);}
  .card .fav-star-btn{position:absolute;top:10px;right:10px;z-index:2;}
  .fav-section-title{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:0.8px;margin:26px 0 4px;}

  /* ---------- Trophy Room (кубки и медали команды) ---------- */
  .trophy-summary{display:flex;gap:14px;flex-wrap:wrap;margin:10px 0 16px;}
  .trophy-summary-item{display:flex;align-items:center;gap:8px;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:9px 16px;}
  .trophy-summary-item .medal{font-size:22px;line-height:1;}
  .trophy-summary-item .count{font-family:var(--font-display);font-size:22px;}
  .trophy-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;}
  .trophy-card{display:flex;gap:14px;align-items:center;background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:14px;cursor:pointer;transition:border-color .12s;}
  .trophy-card:hover{border-color:var(--accent);}
  .trophy-card .medal{font-size:40px;line-height:1;flex-shrink:0;width:56px;height:56px;display:flex;align-items:center;justify-content:center;background:var(--bg-elev-2);border-radius:8px;}
  .trophy-card .tc-icon-img{width:56px;height:56px;object-fit:contain;border-radius:8px;flex-shrink:0;background:var(--bg-elev-2);padding:6px;box-sizing:border-box;}
  .trophy-card .tc-medal-img{width:56px;height:56px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 2px 5px rgba(0,0,0,.45));}
  .trophy-card.gold{border-left:3px solid var(--yellow);}
  .trophy-card.silver{border-left:3px solid #C9CED6;}
  .trophy-card.bronze{border-left:3px solid #C87F4A;}
  .trophy-card.year{border-left:3px solid var(--accent);}
  /* Номинации года: плашки в шапках профилей команды/турнира */
  .award-pills{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
  .tour-pill.award-pill{border-color:var(--yellow);color:var(--yellow);background:rgba(255,201,60,0.08);}
  .trophy-card .tc-info{min-width:0;flex:1;}
  .trophy-card .tc-name{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .trophy-card .tc-meta{font-size:11.5px;color:var(--muted);margin-top:2px;}
  /* Статуэтки номинаций / «Игрок недели-месяца-сезона», медаль «Игрок матча» */
  .trophy-card .tc-statue-img{width:56px;height:72px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 2px 5px rgba(0,0,0,.45));}
  .trophy-card .tc-statue-img.tc-statue-sm{width:36px;height:46px;}
  .tour-pill.award-pill .pill-statue{height:20px;width:auto;flex-shrink:0;}
  .pop-statue{margin-left:auto;height:68px;width:auto;flex-shrink:0;filter:drop-shadow(0 2px 5px rgba(0,0,0,.45));}
  .motm-card .motm-medal{height:72px;width:auto;flex-shrink:0;margin-left:auto;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5));}
  .motm-medal-mini{height:16px;width:auto;vertical-align:-3px;}
  .tourney-mvp-card{display:flex;gap:16px;align-items:center;background:linear-gradient(135deg, rgba(255,201,60,0.12), var(--bg-elev-2));border:1px solid var(--yellow);border-radius:8px;padding:12px;cursor:pointer;transition:border-color .12s;flex-wrap:wrap;}
  .tourney-mvp-card:hover{border-color:var(--yellow);filter:brightness(1.05);}
  .tourney-mvp-photo{width:160px;height:160px;object-fit:cover;border-radius:6px;flex-shrink:0;order:2;}
  .tourney-mvp-info{min-width:160px;flex:1;order:1;}
  @media (max-width:520px){ .tourney-mvp-photo{width:110px;height:110px;} }

  /* ---------- Team profile v2 (HLTV-style overview) ----------
     Roster photo strip + stat-sheet header, boxed tab bar, stat cards,
     map win-rate bars, and a table-row take on the trophy list — all
     built from data the site already tracks (RP, peak rank, win streaks,
     CSTVR, player birth dates) rather than new fields. See
     renderTeamDetailModal() / teamRosterStripHtml() / teamInfoBarHtml(). */
  .tprofile-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;padding:18px 18px 4px;margin-top:14px;}
  .team-roster-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:16px;padding-bottom:18px;}
  .trs-item{display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;text-align:center;min-width:0;transition:transform .12s ease;}
  .trs-item:hover{transform:translateY(-3px);}
  .trs-item .trs-nick{font-size:14px;font-weight:700;color:var(--text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .trs-item:hover .trs-nick{color:var(--accent-text);}
  .trs-item .trs-role{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}

  .team-info-grid{border-top:1px solid var(--border);}
  .tig-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 4px;border-bottom:1px solid var(--border);}
  .tig-row:last-child{border-bottom:none;}
  .tig-label{color:var(--muted);font-size:13px;flex-shrink:0;}
  .tig-val{font-weight:700;font-size:14.5px;display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tig-val.mono{font-family:var(--font-mono);}
  .tig-val .avatar,.tig-val .avatar-fallback{width:22px;height:22px;flex-shrink:0;}

  .team-trophy-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:16px 4px;}
  .tts-icon{width:52px;height:52px;border-radius:8px;background:var(--bg-elev-2);display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0;border:1px solid var(--border);cursor:pointer;transition:transform .12s ease;}
  .tts-icon:hover{transform:translateY(-3px);}
  .tts-icon.gold{border-color:var(--yellow);}
  .tts-icon.silver{border-color:#C9CED6;}
  .tts-icon.bronze{border-color:#C87F4A;}
  .tts-icon img{width:100%;height:100%;object-fit:contain;border-radius:8px;}
  .tts-more{font-family:var(--font-mono);font-size:13px;color:var(--muted);}

  .team-tabs-box{display:flex;gap:2px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:9px;padding:4px;margin-top:18px;margin-bottom:0;overflow-x:auto;scrollbar-width:thin;}
  .team-tabs-box button{background:none;border:none;color:var(--muted);font-weight:700;font-size:13px;font-family:var(--font-body);padding:9px 15px;border-radius:6px;cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease;}
  .team-tabs-box button:hover{color:var(--text);}
  .team-tabs-box button.active{background:var(--accent);color:var(--on-accent);}

  .stat-card-row{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0 6px;}
  .stat-card{flex:1;min-width:150px;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:16px;text-align:center;}
  .stat-card .sc-val{font-family:var(--font-display);font-size:32px;line-height:1;}
  .stat-card .sc-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;margin-top:5px;}
  .stat-card .sc-sub{color:var(--muted);font-size:10.5px;margin-top:2px;}
  /* ---- Виртуальные банковские карты (вкладка «Банк»): чисто игровые
     карты в КС Коинах — не платёжный инструмент, номер и CVC генерируются
     детерминированно из uid, чтобы у каждого игрока были свои, но
     постоянные "реквизиты" для дебетовой и кредитной карты. ---- */
  .bank-cards-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:18px;}
  .bank-card{position:relative;width:100%;max-width:320px;aspect-ratio:1.586/1;border-radius:16px;padding:18px 20px;color:#fff;overflow:hidden;box-shadow:0 10px 24px rgba(0,0,0,0.35);display:flex;flex-direction:column;justify-content:space-between;font-family:var(--font-mono, monospace);}
  .bank-card.debit{background:linear-gradient(135deg,#1a3a6b,#0c1c33 70%);}
  .bank-card.credit{background:linear-gradient(135deg,#6b3f2a,#2a1810 70%);}
  .bank-card::after{content:'';position:absolute;right:-30px;top:-30px;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,0.10),transparent 70%);}
  .bank-card .bc-top{display:flex;align-items:flex-start;justify-content:space-between;font-family:var(--font-sans,inherit);}
  .bank-card .bc-label{font-size:11px;letter-spacing:0.08em;text-transform:uppercase;opacity:0.75;}
  .bank-card .bc-chip{width:36px;height:26px;border-radius:5px;background:linear-gradient(135deg,#e8d48a,#b8974f);}
  .bank-card .bc-number{font-size:17px;letter-spacing:0.12em;margin:10px 0;text-shadow:0 1px 3px rgba(0,0,0,0.4);}
  .bank-card .bc-bottom{display:flex;align-items:flex-end;justify-content:space-between;font-family:var(--font-sans,inherit);}
  .bank-card .bc-holder{font-size:11.5px;letter-spacing:0.04em;text-transform:uppercase;opacity:0.9;}
  .bank-card .bc-balance{font-size:20px;font-weight:700;}
  .bank-card .bc-exp{font-size:11px;opacity:0.75;}

  .roster-table-v2{width:100%;border-collapse:collapse;margin-top:14px;}
  .roster-table-v2 th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:600;padding:0 12px 8px;}
  .roster-table-v2 td{padding:11px 12px;border-top:1px solid var(--border);vertical-align:middle;}
  .roster-table-v2 tr.clickable-row{cursor:pointer;}
  .roster-table-v2 tr.clickable-row:hover td{background:var(--hover-1);}
  .rt-player{display:flex;align-items:center;gap:10px;}
  .rt-status{display:inline-block;font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.6px;padding:3px 8px;border-radius:3px;text-transform:uppercase;color:var(--green);background:rgba(57,255,136,0.1);border:1px solid var(--green);}
  .rt-rating{font-family:var(--font-mono);font-weight:700;}

  .map-bars{display:flex;flex-direction:column;gap:11px;margin-top:14px;}
  .map-bar-row{display:flex;align-items:center;gap:12px;}
  .map-bar-name{width:78px;flex-shrink:0;font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .map-bar-track{flex:1;height:8px;background:var(--bg-elev-2);border-radius:4px;overflow:hidden;}
  .map-bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,rgba(var(--accent-rgb),0.55),var(--accent));}
  .map-bar-pct{width:56px;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-weight:700;font-size:13px;}
  .map-bar-sub{width:74px;flex-shrink:0;color:var(--muted);font-size:11px;text-align:right;}

  .achv-list{margin-top:6px;border-top:1px solid var(--border);}
  .achv-row{display:flex;align-items:center;gap:14px;padding:12px 6px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s ease;}
  .achv-row:hover{background:var(--hover-1);}
  .achv-place{flex-shrink:0;width:30px;text-align:center;font-size:20px;line-height:1;}
  .achv-name{flex:1;font-weight:700;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .achv-meta{color:var(--muted);font-size:12px;flex-shrink:0;text-align:right;}

  .media-item{transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;}
  .media-item:hover{border-color:rgba(var(--accent-rgb),0.5);transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,0.25);}
  .media-item .media-type-badge{position:absolute;top:6px;left:6px;background:rgba(7,10,16,0.72);color:var(--text);font-size:10.5px;padding:2px 7px;border-radius:4px;font-family:var(--font-mono);letter-spacing:.4px;text-transform:uppercase;z-index:1;}
  @media (max-width:600px){
    .tprofile-card{padding:14px 14px 2px;}
    .tig-val{max-width:56%;}
  }

  /* =====================================================================
     MOBILE / PHONE-SPECIFIC LAYOUT
     A dedicated pass for narrow viewports: collapsible nav row, tighter
     spacing, smaller type scale, and horizontally-scrollable tables
     instead of squished columns.
     ===================================================================== */
  @media (max-width:760px){
    .app{padding:0 12px 64px;}
    .topbar-inner{padding:10px 12px;gap:8px;}
    .logo{font-size:24px;}
    .version-label{display:none;}
    .brand-block{gap:6px;}
    .game-switcher{margin-right:6px;}
    .game-switch-btn{padding:7px 8px;font-size:12.5px;}
    .theme-toggle-btn,.discord-link-btn,.telegram-link-btn{width:30px;height:30px;}
    nav{order:5;width:100%;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;gap:0;margin-top:2px;padding-bottom:2px;scrollbar-width:thin;}
    nav::-webkit-scrollbar{height:3px;}
    nav button{padding:9px 10px;font-size:14px;flex-shrink:0;white-space:nowrap;}
    .authbox{gap:6px;}
    .authbox .who{display:none;}
    .section-title{font-size:24px;margin:24px 0 4px;}
    .section-sub{font-size:12.5px;}
    .row-between{gap:10px;}
    .row-between .btn{font-size:12.5px;padding:9px 12px;}
    .toolbar > *{flex:1 1 100%;}
    .grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;}
    .card{padding:12px;}
    .team-name{font-size:18px;}
    .modal{padding:18px;max-width:100%;}
    .modal h3{font-size:21px;}
    .panels-row{gap:10px;}
    .pdet-banner{flex-direction:column;text-align:center;}
    .pdet-banner-info{width:100%;}
    .trophy-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));}
    .trophy-summary{gap:8px;}
    .trophy-summary-item{padding:7px 12px;}
    .match-hero-top{gap:10px;}
    .match-hero-team{width:100px;}
    .match-hero-team .mh-name{font-size:16px;}
    .swiss-day-col,.bracket-col{flex:0 0 200px;width:200px;}
    .tour-hero{flex-direction:column;align-items:flex-start;padding:18px 16px;gap:12px;}
    .tour-hero-icon{width:56px;height:56px;font-size:32px;}
    .tour-hero-title{font-size:22px;}
    .tour-cat-tabs button{padding:7px 11px;font-size:11.5px;}
    .tourn-badges{gap:6px;}
    .tourn-badge{font-size:11px;padding:3px 8px;}
    /* Tables: rather than squeeze every column, let the table keep a
       sane minimum width and scroll sideways inside its tab container. */
    table{min-width:600px;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;}
    .roster-strip{padding-left:20px;gap:12px;}
  }
  @media (max-width:480px){
    .tv-teams{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
    .up-team-name{font-size:15px;}
    .rk-title,.tv-hero-title,.tour-hero-title{font-size:20px;}
  }
  @media (max-width:420px){
    .logo{font-size:21px;}
    nav button{font-size:12.5px;padding:8px 8px;}
    .grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));}
  }

  /* ---------- Персонал (тренеры / менеджеры / президенты) ---------- */
  .stf-chips{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 4px;align-items:center;}
  .stf-chips input{background:var(--bg-elev);border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:3px;font:inherit;min-width:200px;}
  .stf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;margin-top:16px;}
  .stf-card{display:flex;gap:12px;align-items:center;}
  .stf-ava{flex:none;width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:24px;color:#fff;border:2px solid var(--border);text-shadow:0 1px 3px rgba(0,0,0,.6);}
  .stf-main{min-width:0;flex:1;}
  .stf-main b{display:block;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .stf-meta{color:var(--muted);font-size:12.5px;margin-top:2px;}
  .stf-score{font-family:var(--font-mono);text-align:center;min-width:44px;}
  .stf-score b{font-size:24px;display:block;line-height:1.1;}
  .stf-score span{font-size:11px;color:var(--muted);}
  .stf-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:24px;}
  .stf-head .stf-ava{width:84px;height:84px;font-size:38px;}
  .stf-head .stf-main{flex:1 1 240px;}
  .stf-name{margin:0;font-size:36px;font-family:var(--font-display);line-height:1.05;}
  .stf-head .stf-score b{font-size:44px;}
  .stf-link{cursor:pointer;color:var(--accent-text);}
  .stf-link:hover{text-decoration:underline;}
  .stf-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);cursor:pointer;}
  .stf-row .grow{flex:1;min-width:0;}
  .stf-val{color:var(--green);font-family:var(--font-mono);white-space:nowrap;}
  .stf-note{color:var(--muted);font-size:12px;margin-top:10px;}

  .loan-pill{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:3px;font-size:11px;background:rgba(var(--accent-2-rgb),.16);color:var(--accent-2-text);border:1px solid rgba(var(--accent-2-rgb),.4);white-space:nowrap;font-weight:500;}
  .loan-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
  .loan-form select,.loan-form input[type=date]{background:var(--bg-elev);border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:3px;font:inherit;}
  .loan-form select{flex:1;min-width:180px;}
  .loan-form input[type=text]{background:var(--bg-elev);border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:3px;font:inherit;flex:1;min-width:160px;}
/* ---- Шапки игроков с картинками ----
   Картинки лежат в assets.js как --asset-N: Новичок 13, Обычная 14, Элита 15, Global Elite 16,
   Легенда 17, Игрок сезона (осень–зима) 18, Ветеран 19, Контент-мейкер 20, Админ 21, Журналист 22,
   Игрок сезона (весна–лето) 25, Забанен 26, Свободный агент 27
   (если картинки нет, шапка остаётся тёмной без неё).
   У «Обычной» в картинке нарисованы рамка под фото слева и нижняя полоса под панель наград,
   поэтому она режется на две части: верх (фото + инфо) и низ (панель наград).
   У «Новичка», «Элиты» и девяти новых скинов рамок нет — это просто фон на всю шапку.
   «Global Elite» — отдельный случай: в картинке нарисованы рамка под фото и 6 плашек под
   строки профиля, поэтому на широком экране всё раскладывается строго по её сетке
   (см. блок «Global Elite» ниже). */
.hp-head.hps.hps-normal,
.hp-head.hps.hps-rookie,
.hp-head.hps.hps-elite,
.hp-head.hps.hps-legend,
.hp-head.hps.hps-season-aw,
.hp-head.hps.hps-veteran,
.hp-head.hps.hps-contentmaker,
.hp-head.hps.hps-adminskin,
.hp-head.hps.hps-journalist,
.hp-head.hps.hps-season-ss,
.hp-head.hps.hps-banned,
.hp-head.hps.hps-freeagent{ --hps-art:none; }
.hps-rookie{ --hps-img:var(--asset-13); }
.hps-normal{ --hps-img:var(--asset-14); --hps-cut:.8294; }
.hps-elite { --hps-img:var(--asset-15); }
.hps-legend{ --hps-img:var(--asset-17,none); }
.hps-season-aw{ --hps-img:var(--asset-18,none); }
.hps-veteran{ --hps-img:var(--asset-19,none); }
.hps-contentmaker{ --hps-img:var(--asset-20,none); }
.hps-adminskin{ --hps-img:var(--asset-21,none); }
.hps-journalist{ --hps-img:var(--asset-22,none); }
.hps-season-ss{ --hps-img:var(--asset-25,none); }
.hps-banned{ --hps-img:var(--asset-26,none); }
.hps-freeagent{ --hps-img:var(--asset-27,none); }

.hp-head.hps.hps-rookie,
.hp-head.hps.hps-elite,
.hp-head.hps.hps-legend,
.hp-head.hps.hps-season-aw,
.hp-head.hps.hps-veteran,
.hp-head.hps.hps-contentmaker,
.hp-head.hps.hps-adminskin,
.hp-head.hps.hps-journalist,
.hp-head.hps.hps-season-ss,
.hp-head.hps.hps-banned,
.hp-head.hps.hps-freeagent{
  background:
    var(--hps-img) center / cover no-repeat padding-box,
    linear-gradient(#050608,#050608) padding-box,
    var(--hps-frame) border-box;
}
.hp-head.hps.hps-normal{
  background:linear-gradient(#050608,#050608) padding-box, var(--hps-frame) border-box;
}
.hps-normal .hp-head-top{
  position:relative;
  background:var(--hps-img) 0 0 / 100% calc(100% / var(--hps-cut)) no-repeat;
}
.hps-normal .hp-awards-panel{
  background:var(--hps-img) 0 100% / 100% calc(100% / (1 - var(--hps-cut))) no-repeat;
  border-top:0;
}
.hps-rookie .hp-awards-panel,
.hps-elite .hp-awards-panel,
.hps-global .hp-awards-panel,
.hps-legend .hp-awards-panel,
.hps-season-aw .hp-awards-panel,
.hps-veteran .hp-awards-panel,
.hps-contentmaker .hp-awards-panel,
.hps-adminskin .hp-awards-panel,
.hps-journalist .hp-awards-panel,
.hps-season-ss .hp-awards-panel,
.hps-banned .hp-awards-panel,
.hps-freeagent .hp-awards-panel{
  background:rgba(0,0,0,.38);
  border-top:1px solid rgba(255,255,255,.10);
}
.hps-normal .hp-awards-panel,
.hps-rookie .hp-awards-panel,
.hps-elite .hp-awards-panel,
.hps-global .hp-awards-panel,
.hps-legend .hp-awards-panel,
.hps-season-aw .hp-awards-panel,
.hps-veteran .hp-awards-panel,
.hps-contentmaker .hp-awards-panel,
.hps-adminskin .hp-awards-panel,
.hps-journalist .hp-awards-panel,
.hps-season-ss .hp-awards-panel,
.hps-banned .hp-awards-panel,
.hps-freeagent .hp-awards-panel{ align-items:center; align-content:center; min-height:72px; padding:8px 22px 12px; }
.hps-normal .hp-awards-panel.hp-awards-empty,
.hps-rookie .hp-awards-panel.hp-awards-empty,
.hps-elite .hp-awards-panel.hp-awards-empty,
.hps-global .hp-awards-panel.hp-awards-empty,
.hps-legend .hp-awards-panel.hp-awards-empty,
.hps-season-aw .hp-awards-panel.hp-awards-empty,
.hps-veteran .hp-awards-panel.hp-awards-empty,
.hps-contentmaker .hp-awards-panel.hp-awards-empty,
.hps-adminskin .hp-awards-panel.hp-awards-empty,
.hps-journalist .hp-awards-panel.hp-awards-empty,
.hps-season-ss .hp-awards-panel.hp-awards-empty,
.hps-banned .hp-awards-panel.hp-awards-empty,
.hps-freeagent .hp-awards-panel.hp-awards-empty{ color:rgba(255,255,255,.55); }

/* мягкая подложка под текст, чтобы светлые пятна картинки не съедали буквы */
.hps-normal .hp-info::after,
.hps-rookie .hp-info::after,
.hps-elite .hp-info::after{
  background:
    linear-gradient(90deg, rgba(0,0,0,.30) 0%, rgba(0,0,0,.18) 45%, rgba(0,0,0,.30) 100%);
}
.hps-rookie .hp-info::after{
  background:
    linear-gradient(90deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.32) 50%, rgba(0,0,0,.5) 100%);
}
/* новые картинки ярче: подложка чуть плотнее */
.hps-legend .hp-info::after,
.hps-season-aw .hp-info::after,
.hps-veteran .hp-info::after,
.hps-contentmaker .hp-info::after,
.hps-adminskin .hp-info::after,
.hps-journalist .hp-info::after,
.hps-season-ss .hp-info::after,
.hps-banned .hp-info::after,
.hps-freeagent .hp-info::after{
  background:
    linear-gradient(90deg, rgba(0,0,0,.52) 0%, rgba(0,0,0,.36) 50%, rgba(0,0,0,.52) 100%);
}
.hps-legend .hp-info::after,
.hps-veteran .hp-info::after,
.hps-journalist .hp-info::after{
  background:
    linear-gradient(90deg, rgba(0,0,0,.42) 0%, rgba(0,0,0,.26) 50%, rgba(0,0,0,.42) 100%);
}
/* «Забанен» — очень яркий узор, «Свободный агент» — жёлтое пятно слева: подложка плотнее */
.hps-banned .hp-info::after{
  background:
    linear-gradient(90deg, rgba(0,0,0,.66) 0%, rgba(0,0,0,.52) 50%, rgba(0,0,0,.66) 100%);
}
.hps-freeagent .hp-info::after{
  background:
    linear-gradient(90deg, rgba(0,0,0,.74) 0%, rgba(0,0,0,.58) 45%, rgba(0,0,0,.34) 100%);
}
.hps-normal .hp-photo{ width:15.9%; min-width:150px; }
.hps-normal .hp-photo::after{ display:none; }
@media (max-width:640px){
  .hps-normal .hp-photo{ width:120px; min-width:0; }
}

/* ---- Global Elite ----
   Картинка 1280×641: сверху рамка под фото (x 32–360, y 64–518) и 6 плашек под строки
   (одна короткая + пять длинных), снизу — полоса под награды (с y = 532) с медальоном слева.
   Узкий экран: картинку не используем — обычная тёмная шапка с золотым узором (--hps-art).
   Широкий (шапка ≥ 880px): шапка становится контейнером, всё считается в cqw (1cqw = 1% ширины
   шапки, 1 px картинки = 0.078125cqw), поэтому плашки попадают под строки при любой ширине. */
.hp-head.hps.hps-global{ container-type:inline-size; }
@container (min-width: 880px){
  .hp-head.hps.hps-global{ --hps-art:none; }
  .hp-head.hps.hps-global .hp-head-top{
    position:relative;
    aspect-ratio:1280 / 532;
    background:var(--asset-16,none) 0 0 / 100% calc(100% * 641 / 532) no-repeat;
  }
  .hp-head.hps.hps-global .hp-awards-panel{
    min-height:8.52cqw;
    padding:.4cqw 4.06cqw 2.6cqw 9.9cqw;
    align-items:center; align-content:center;
    background:var(--asset-16,none) 0 100% / 100% calc(100% * 641 / 109) no-repeat;
    border-top:0;
  }
  .hp-head.hps.hps-global .hp-info::before,
  .hp-head.hps.hps-global .hp-info::after,
  .hp-head.hps.hps-global .hp-photo::after{ display:none; }

  /* фото — в золотую рамку */
  .hp-head.hps.hps-global .hp-photo{
    position:absolute; left:2.55cqw; top:5.08cqw; width:25.4cqw; height:35.3cqw; min-height:0;
    overflow:hidden;
  }
  .hp-head.hps.hps-global .hp-badges{ top:8px; }

  /* лента (Global Elite + значки) — в верхней полосе, правее нарисованной короны */
  .hp-head.hps.hps-global .hps-ribbon{
    top:1.05cqw; left:6.9cqw; height:2.9cqw; min-height:20px; padding:0;
    background:none; box-shadow:none; clip-path:none; border-radius:0;
    color:var(--hps-accent); font-size:clamp(10px,1.2cqw,15px);
  }
  .hp-head.hps.hps-global .hps-ribbon::after{ display:none; }

  /* информация — правее рамки с фото */
  .hp-head.hps.hps-global .hp-info{
    margin-left:31.4cqw; padding:5cqw 4.06cqw 0 0; overflow:visible;
  }
  .hp-head.hps.hps-global .hp-top{
    height:9.22cqw; flex-wrap:nowrap; gap:1.2cqw; align-items:flex-start;
  }
  .hp-head.hps.hps-global .hp-title{ flex:none; width:27cqw; }
  .hp-head.hps.hps-global .hp-nick{
    font-size:clamp(24px,3.1cqw,44px); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    line-height:1.08; padding-bottom:.08em;
  }
  .hp-head.hps.hps-global .hp-real{ font-size:clamp(10px,1.05cqw,14px); margin-top:.3cqw; }
  .hp-head.hps.hps-global .hp-stars{ margin-top:.5cqw; }
  .hp-head.hps.hps-global .hp-top-right{ flex:1; min-width:0; }
  .hp-head.hps.hps-global .hp-actions{ justify-content:flex-end; background:rgba(3,5,10,.5); padding:4px 6px; border-radius:10px; }
  .hp-head.hps.hps-global .hp-year-title{ background:rgba(3,5,10,.62); padding:2px 9px; border-radius:6px; }

  /* строки профиля — по плашкам: 1-я в короткую, остальные в пять длинных.
     Если строк 7 (есть «Лучшая позиция»), «Репутация» и «Лучшая позиция» делят одну плашку. */
  .hp-head.hps.hps-global .hp-rows{
    margin:.08cqw 0 0;
    display:grid; grid-template-columns:348fr 478fr;
    grid-auto-rows:3.09cqw; row-gap:1.38cqw;
  }
  .hp-head.hps.hps-global .hp-row{
    grid-column:1 / -1; min-width:0;
    padding:0 1.5cqw; border:0; flex-wrap:nowrap;
    font-size:clamp(11px,1.28cqw,16px);
  }
  .hp-head.hps.hps-global .hp-row::after{ display:none; }
  .hp-head.hps.hps-global .hp-row .v{ flex-wrap:nowrap; min-width:0; white-space:nowrap; }
  .hp-head.hps.hps-global .hp-row:nth-child(1){ grid-column:1; }
  .hp-head.hps.hps-global .hp-row:nth-child(5):nth-last-child(3){ grid-column:1; }
  .hp-head.hps.hps-global .hp-row:nth-child(6):nth-last-child(2){ grid-column:2; }
}


  /* ---------- Переключатель рейтингов и заглушка «ЖДИТЕ» ---------- */
  .rk-modes{display:inline-flex;gap:4px;padding:4px;margin-bottom:18px;border:1px solid var(--border);border-radius:999px;background:var(--bg-elev);}
  .rk-mode-btn{border:none;background:transparent;color:var(--muted);font-family:var(--font-display);font-size:16px;letter-spacing:.8px;padding:8px 20px;border-radius:999px;cursor:pointer;transition:background .15s,color .15s;}
  .rk-mode-btn:hover{color:var(--text);}
  .rk-mode-btn.active{background:var(--accent);color:#111;}
  .wait-card{text-align:center;padding:64px 22px;border:1px dashed rgba(var(--accent-rgb),.5);border-radius:14px;background:linear-gradient(120deg,rgba(var(--accent-rgb),.10),rgba(var(--accent-rgb),.02) 60%),var(--bg-elev);}
  .wait-card h2{font-family:var(--font-display);font-size:clamp(34px,7vw,64px);letter-spacing:1px;margin:0 0 26px;line-height:1.05;}
  .wait-card .ys-cd{max-width:460px;margin:0 auto;}

  /* ---------- Итоги года (ys-*) ---------- */
  .ys-hero{display:flex;align-items:center;justify-content:space-between;gap:18px 28px;flex-wrap:wrap;padding:20px 22px;margin-bottom:22px;border:1px solid rgba(var(--accent-rgb),.4);border-radius:12px;background:linear-gradient(120deg,rgba(var(--accent-rgb),.16),rgba(var(--accent-rgb),.04) 60%),var(--bg-elev);}
  .ys-kicker{font-family:var(--font-mono);font-size:11.5px;letter-spacing:2px;text-transform:uppercase;color:var(--accent-text);font-weight:700;}
  .ys-hero-title{font-size:22px;font-weight:800;margin-top:4px;}
  .ys-hero-date{color:var(--muted);font-size:14px;margin-top:4px;}
  .ys-hero-cd{display:flex;flex-direction:column;align-items:flex-end;gap:10px;}
  .ys-cd{display:grid;grid-template-columns:repeat(4,minmax(64px,1fr));gap:8px;}
  .ys-cd-box{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:8px 6px 7px;text-align:center;min-width:64px;}
  .ys-cd-box b{display:block;font-family:var(--font-display);font-size:38px;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);}
  .ys-cd-box span{display:block;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-top:3px;}
  .ys-live{display:flex;align-items:center;gap:9px;font-weight:800;font-size:18px;}
  .ys-live-dot{width:10px;height:10px;border-radius:50%;background:var(--red);box-shadow:0 0 0 0 rgba(255,77,94,.6);animation:ysPulse 1.4s infinite;}
  .ys-done .ys-live-dot{display:none;}
  @keyframes ysPulse{0%{box-shadow:0 0 0 0 rgba(255,77,94,.55);}70%{box-shadow:0 0 0 10px rgba(255,77,94,0);}100%{box-shadow:0 0 0 0 rgba(255,77,94,0);}}
  .ys-hero-link{text-decoration:none;}
  .ys-card-wrap{border-radius:14px;overflow:hidden;box-shadow:0 14px 40px rgba(0,0,0,.45);background:#05060a;}
  .ys-canvas{display:block;width:100%;height:auto;}
  .ys-actions{display:flex;gap:10px;margin-top:14px;}
  .ys-actions .btn{display:inline-flex;align-items:center;gap:8px;}
  .ys-actions .btn:disabled{opacity:.55;cursor:wait;}
  .ys-noms{display:flex;flex-wrap:wrap;gap:8px;}
  .ys-nom{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border:1px solid var(--border);border-radius:999px;background:var(--bg-elev);color:var(--text);text-decoration:none;font-size:13.5px;font-weight:600;transition:border-color .12s,transform .12s;}
  a.ys-nom:hover{border-color:var(--accent);transform:translateY(-1px);}
  .ys-nom.won{border-color:var(--yellow);background:rgba(255,201,60,.10);}
  .ys-nom-rank{font-family:var(--font-mono);font-size:11.5px;font-weight:800;color:var(--yellow);}
  @media (max-width:640px){
    .ys-hero{padding:16px;}
    .ys-hero-cd{align-items:stretch;width:100%;}
    .ys-cd-box b{font-size:30px;}
  }
  #overlayAuth{z-index:10000;}
  .rk-dual-legend{flex-basis:100%;color:var(--text);font-weight:600;}
  .rk-pts-dual{cursor:help;}
  .rk-cap-note{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);border:1px solid var(--border);background:var(--bg-elev);border-radius:999px;padding:4px 12px;margin:0 0 12px;}
  .rk-cap-note b{color:var(--text);font-family:var(--font-display);letter-spacing:.5px;}
  .pts-info{margin-top:22px;text-align:left;}
  .pts-info h3{font-family:var(--font-display);font-size:22px;letter-spacing:.8px;margin:0 0 12px;}
  .pts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  .pts-card{border:1px solid var(--border);background:var(--bg-elev);border-radius:12px;padding:16px 18px;}
  .pts-card.pulse{border-color:rgba(var(--accent-rgb),.55);background:linear-gradient(120deg,rgba(var(--accent-rgb),.10),rgba(var(--accent-rgb),.02) 60%),var(--bg-elev);}
  .pts-name{font-family:var(--font-display);font-size:20px;letter-spacing:.8px;}
  .pts-unit{color:var(--muted);font-size:13px;margin:2px 0 10px;}
  .pts-limit{font-family:var(--font-display);font-size:30px;line-height:1;font-variant-numeric:tabular-nums;}
  .pts-limit small{font-size:13px;color:var(--muted);font-family:var(--font-body);letter-spacing:0;margin-left:6px;}
  .pts-note{color:var(--muted);font-size:13px;line-height:1.55;margin-top:12px;}
  @media (max-width:640px){ .pts-grid{grid-template-columns:1fr;} }

  /* ---------- Логотипы рейтингов, региональные рейтинги, изменение места как на HLTV ---------- */
  .rk-mode-btn{display:inline-flex;align-items:center;gap:10px;}
  .rk-logo{display:inline-block;flex:none;}
  .rk-logo.rating{color:var(--accent-text);}
  .rk-logo.pulse{color:var(--accent-2,#FF7A1F);}
  .rk-mode-btn.active .rk-logo{color:#111;}
  .pts-name{display:flex;align-items:center;gap:10px;}
  .rk-scope{position:relative;display:flex;margin:22px 0 16px;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;}
  .rk-scope-wrap{flex:1 1 0;display:flex;min-width:0;}
  .rk-scope-tab{flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:9px;min-width:0;padding:14px 16px 11px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);font-family:var(--font-body);font-size:14.5px;font-weight:700;cursor:pointer;transition:background .15s,color .15s;}
  .rk-scope > .rk-scope-tab{border-radius:9px 0 0 9px;}
  .rk-scope-wrap .rk-scope-tab{border-radius:0 9px 9px 0;border-left:1px solid var(--border);}
  .rk-scope-tab:hover{color:var(--text);background:var(--hover-2,rgba(255,255,255,.04));}
  .rk-scope-tab.active{color:var(--text);background:var(--bg-elev-2);border-bottom-color:var(--accent);}
  .rk-scope-tab svg{flex:none;}
  .rk-scope-tab .rk-caret{transition:transform .15s;opacity:.7;}
  .rk-scope.open .rk-caret{transform:rotate(180deg);}
  .rk-scope-tab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .rk-scope-tab img{margin-right:0 !important;}
  .rk-region-panel{display:none;position:absolute;left:0;right:0;top:100%;z-index:60;box-sizing:border-box;padding:18px 24px 22px;background:var(--bg-elev-2);border:1px solid var(--border);border-top:0;border-radius:0 0 10px 10px;box-shadow:0 22px 44px rgba(0,0,0,.5);column-width:200px;column-gap:32px;}
  .rk-scope.open .rk-region-panel{display:block;}
  @media (hover:hover){
    .rk-scope-wrap:hover .rk-region-panel,.rk-scope-wrap:focus-within .rk-region-panel{display:block;}
    .rk-scope-wrap:hover .rk-caret,.rk-scope-wrap:focus-within .rk-caret{transform:rotate(180deg);}
  }
  .rk-reg-title{margin:0 0 6px;font-family:var(--font-display);font-size:23px;letter-spacing:.6px;color:var(--muted);break-after:avoid;}
  .rk-reg-title:not(:first-child){margin-top:18px;}
  .rk-reg-item{display:flex;align-items:center;gap:0;width:100%;box-sizing:border-box;margin:0;padding:5px 8px;border:0;border-radius:6px;background:transparent;color:var(--text);font-family:var(--font-body);font-size:14px;text-align:left;cursor:pointer;break-inside:avoid;}
  .rk-reg-item:hover{background:rgba(var(--accent-rgb),.14);color:var(--accent-text);}
  .rk-reg-item.active{background:rgba(var(--accent-rgb),.22);color:var(--accent-text);font-weight:700;}
  .rk-reg-item em{margin-left:auto;padding-left:10px;font-style:normal;font-family:var(--font-mono);font-size:11.5px;color:var(--muted);}
  .rk-reg-empty{color:var(--muted);font-size:13px;column-span:all;}
  .rk-world{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-size:11.5px;font-weight:600;}
  .rk-move{min-width:56px;font-size:16px;letter-spacing:.2px;}
  .rk-mv.new{font-size:11.5px;}
  @media (max-width:640px){
    .rk-scope-tab{padding:12px 8px 9px;font-size:13px;gap:6px;}
    .rk-region-panel{padding:14px 14px 18px;column-width:150px;column-gap:16px;}
    .rk-move{min-width:44px;font-size:14px;}
  }
  /* ---------- CSTV PULSE: континентальные рейтинги (как «Valve ranking» на HLTV) ---------- */
  .rk-scope-pulse{flex-direction:column;}
  .rk-scope-pulse .rk-scope-tabs{display:flex;}
  .rk-scope-pulse .rk-scope-tabs .rk-scope-tab{border-radius:0;}
  .rk-scope-pulse .rk-scope-tabs .rk-scope-tab:first-child{border-radius:9px 0 0 0;}
  .rk-scope-pulse .rk-scope-tabs .rk-scope-tab + .rk-scope-tab{border-radius:0 9px 0 0;border-left:1px solid var(--border);}
  .rk-scope-tab:disabled{opacity:.5;cursor:default;}
  .rk-cont-row{display:flex;gap:12px;padding:12px 14px 14px;background:var(--bg-elev-2);border-top:1px solid var(--border);border-radius:0 0 9px 9px;}
  .rk-cont-btn{flex:1 1 0;min-width:0;padding:11px 12px;border:0;border-radius:6px;background:var(--cont-c,#3D7FFF);color:#fff;font-family:var(--font-body);font-size:15px;font-weight:800;text-align:center;cursor:pointer;opacity:.72;box-shadow:inset 0 0 0 2px transparent;transition:opacity .15s,box-shadow .15s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .rk-cont-btn:hover{opacity:1;}
  .rk-cont-btn.active{opacity:1;box-shadow:inset 0 0 0 2px rgba(255,255,255,.85);}
  @media (max-width:640px){
    .rk-cont-row{flex-wrap:wrap;gap:8px;padding:10px;}
    .rk-cont-btn{flex:1 1 38%;font-size:14px;padding:10px 8px;}
  }
  /* Строки «Позиция» в инфо-блоке профиля команды: длинный текст переносится, а не обрезается */
  .tig-val.tig-pos{font-family:var(--font-body);font-size:14px;white-space:normal;overflow:visible;text-overflow:clip;justify-content:flex-end;text-align:right;line-height:1.35;}
  .tig-pos-n{color:var(--accent-2-text);font-family:var(--font-mono);}

  /* --- Казино: рулетка --- */
  .roulette-layout{display:flex;gap:26px;flex-wrap:wrap;align-items:center;}
  .roulette-wheel-outer{position:relative;width:230px;height:230px;flex:0 0 auto;margin:0 auto;}
  .roulette-pointer{position:absolute;top:-6px;left:50%;transform:translateX(-50%);font-size:20px;z-index:2;color:var(--text);filter:drop-shadow(0 2px 2px rgba(0,0,0,.5));}
  .roulette-wheel{position:relative;width:100%;height:100%;border-radius:50%;box-shadow:0 0 0 8px #2a2a2a, 0 6px 18px rgba(0,0,0,.5);transition:transform 4.2s cubic-bezier(.12,.72,.13,1);}
  .roulette-wheel .rw-num{position:absolute;top:50%;left:50%;font-size:9px;font-weight:700;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.6);}
  .roulette-hub{position:absolute;top:50%;left:50%;width:34px;height:34px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle at 35% 30%, #666, #111);box-shadow:0 0 0 3px #2a2a2a;}
  .roulette-controls{flex:1;min-width:240px;}
  .roulette-result-pill{display:inline-block;min-width:34px;text-align:center;padding:3px 8px;border-radius:8px;font-weight:700;color:#fff;margin-left:8px;}

  /* --- Казино: слоты --- */
  .slots-machine{display:flex;gap:10px;justify-content:center;margin-bottom:16px;}
  .slots-reel{width:64px;height:64px;overflow:hidden;border-radius:10px;background:var(--bg-elev-2);border:2px solid var(--border);position:relative;}
  .slots-reel-strip{display:flex;flex-direction:column;position:absolute;left:0;top:0;width:100%;}
  .slots-reel-strip .slot-sym{height:64px;display:flex;align-items:center;justify-content:center;font-size:34px;}
  .slots-reel::before,.slots-reel::after{content:'';position:absolute;left:0;right:0;height:18px;pointer-events:none;z-index:1;}
  .slots-reel::before{top:0;background:linear-gradient(var(--bg-elev-2), transparent);}
  .slots-reel::after{bottom:0;background:linear-gradient(transparent, var(--bg-elev-2));}

  /* --- Казино: монетка --- */
  .coinflip-layout{display:flex;gap:26px;flex-wrap:wrap;align-items:center;justify-content:center;text-align:center;}
  .coinflip-scene{perspective:600px;width:140px;height:140px;margin:0 auto 6px;}
  .coinflip-coin{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 1.9s cubic-bezier(.2,.7,.2,1);}
  .coinflip-face{position:absolute;inset:0;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:52px;backface-visibility:hidden;box-shadow:0 6px 18px rgba(0,0,0,.5), inset 0 0 0 4px rgba(255,255,255,.15);}
  .coinflip-face img{width:100%;height:100%;object-fit:cover;border-radius:50%;pointer-events:none;user-select:none;}
  .coinflip-face-heads{background:radial-gradient(circle at 35% 30%, #ffe9a8, #d4a017);color:#5a3d00;}
  .coinflip-face-tails{background:radial-gradient(circle at 35% 30%, #d9e4ee, #7c8b99);color:#2b3540;transform:rotateY(180deg);}
  .coinflip-controls{flex:1;min-width:240px;}

  /* --- Казино: выше-ниже (кубик-дуэль) --- */
  .highlow-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:center;margin-bottom:14px;}
  .highlow-table{display:flex;align-items:center;justify-content:center;gap:22px;flex-wrap:wrap;margin:0 auto 16px;}
  .hl-card{width:92px;height:132px;border-radius:12px;background:linear-gradient(160deg,#fff,#eef1f4);box-shadow:0 6px 16px rgba(0,0,0,.4);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800;position:relative;transition:transform .18s ease;}
  .hl-card.hl-flip{animation:hlFlip .38s ease;}
  @keyframes hlFlip{0%{transform:rotateY(90deg);}100%{transform:rotateY(0deg);}}
  .hl-card .hl-rank{font-size:30px;line-height:1;}
  .hl-card .hl-suit{font-size:24px;margin-top:4px;}
  .hl-card.hl-red{color:#c0303f;}
  .hl-card.hl-black{color:#1a1a1a;}
  .hl-card.hl-back{background:repeating-linear-gradient(45deg,rgba(var(--accent-rgb),.35),rgba(var(--accent-rgb),.35) 6px,rgba(var(--accent-rgb),.15) 6px,rgba(var(--accent-rgb),.15) 12px);border:2px solid rgba(var(--accent-rgb),.5);}
  .hl-arrow{font-size:26px;color:var(--muted);}
  .hl-history{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin:10px 0;}
  .hl-history .hl-mini{width:26px;height:36px;border-radius:5px;background:var(--bg-elev-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;}
  .hl-history .hl-mini.hl-red{color:#c0303f;}
  .hl-history .hl-mini.hl-black{color:var(--text);}

  /* --- Казино: краш --- */
  .crash-stage{position:relative;max-width:480px;margin:0 auto 16px;height:200px;border-radius:14px;overflow:hidden;background:linear-gradient(180deg,var(--bg-elev-2),var(--bg-elev-1));border:1px solid var(--border);}
  .crash-graph{position:absolute;inset:0;}
  .crash-mult{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;}
  .crash-mult-num{font-size:46px;font-weight:800;transition:color .15s ease;}
  .crash-mult-num.crash-live{color:#2ea049;}
  .crash-mult-num.crash-busted{color:var(--red);}
  .crash-mult-num.crash-waiting{color:var(--muted);font-size:30px;}
  .crash-sub{font-size:13px;color:var(--muted);margin-top:4px;}
  .crash-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:center;margin-bottom:10px;}
  .crash-bets-list{max-width:480px;margin:10px auto 0;font-size:13px;}
  .crash-bets-list .crash-bet-row{display:flex;justify-content:space-between;padding:4px 8px;border-bottom:1px solid var(--border);}
