/* ============================================================
   twop — design system
   Светлый интерфейс: серый фон, белые карточки с большим скруглением,
   один фиолетовый акцент + сочные цвета игр там, где нужен характер.
   ============================================================ */

/* ---------- Шрифт: Golos Text (вариативный, self-hosted) ---------- */
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400 900;font-display:swap;src:url("../fonts/golos-cyrillic-ext.woff2") format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400 900;font-display:swap;src:url("../fonts/golos-cyrillic.woff2") format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400 900;font-display:swap;src:url("../fonts/golos-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400 900;font-display:swap;src:url("../fonts/golos-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ---------- Токены ---------- */
:root{
  --font:"Golos Text","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
  --bg:#f0f2f5;
  --surface:#fff;
  --surface-2:#f5f6f8;
  --surface-3:#eceef2;
  --line:#e5e8ee;
  --line-strong:#d3d8e2;
  --ink:#1c2030;
  --text:#414859;
  --muted:#6e7686;
  --faint:#9aa2b1;

  --accent:#6e4ff5;
  --accent-strong:#5b3ee3;
  --accent-soft:#ece7ff;
  --accent-softer:#f5f2ff;
  --accent-ink:#4a2fd6;

  --coral:#ff6b57;   --coral-soft:#ffe7e2;  --coral-ink:#c8452f;
  --lime:#b9ef4b;    --lime-soft:#eefbd3;   --lime-ink:#4b7a05;
  --sky:#3aa6ff;     --sky-soft:#e2f2ff;    --sky-ink:#1663b6;
  --mint:#25c98a;    --mint-soft:#dcf7ea;   --mint-ink:#17795a;
  --amber:#ffb01f;   --amber-soft:#fff1d3;  --amber-ink:#9a6100;
  --ocean:#1b6be0;   --ocean-deep:#0e3f8f;
  --green:#2fb36a;   --green-soft:#e0f6e9;  --green-ink:#1e7a45;
  --red:#e5484d;

  --r-xl:28px; --r-lg:22px; --r:16px; --r-sm:12px; --r-pill:999px;
  --shadow-sm:0 1px 2px rgba(22,27,45,.04),0 2px 10px rgba(22,27,45,.04);
  --shadow-md:0 8px 24px rgba(22,27,45,.08);
  --shadow-lg:0 24px 64px rgba(22,27,45,.16);
  --shell:1200px;
}

/* ---------- База ---------- */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:400 15px/1.55 var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button,input,select{font:inherit}
button,a{color:inherit}
img{max-width:100%}
h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.02em;line-height:1.15}
p{margin:0}
.hidden{display:none!important}
.shell{width:min(var(--shell),calc(100% - 48px));margin-inline:auto}
::selection{background:var(--accent-soft);color:var(--accent-ink)}
:focus-visible{outline:3px solid rgba(110,79,245,.35);outline-offset:2px}

/* ---------- Шапка ---------- */
.site-header{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.header-inner{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.logo{display:inline-flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink)}
.logo-mark{width:34px;height:34px;flex:0 0 auto;display:inline-block}
.logo-mark svg{width:100%;height:100%;display:block}
.logo-text{font-size:21px;font-weight:800;letter-spacing:-.035em;line-height:1}
.logo-text b{color:var(--accent);font-weight:800}
.site-footer .logo-mark{width:28px;height:28px}
.site-footer .logo-text{font-size:18px}
.site-nav{display:flex;gap:2px;padding:4px;border-radius:var(--r-pill);background:var(--surface-2)}
.site-nav a{padding:8px 14px;border-radius:var(--r-pill);color:var(--text);text-decoration:none;font-size:14px;font-weight:500;transition:background .15s,color .15s,box-shadow .15s}
.site-nav a:hover{background:#fff;color:var(--ink);box-shadow:var(--shadow-sm)}
.header-actions{display:flex;align-items:center;gap:10px}
.live-dot{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:0;border-radius:var(--r-pill);background:var(--green-soft);color:var(--green-ink);font-size:13px;font-weight:600;white-space:nowrap}
.live-dot i,.updated i,.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(47,179,106,.18);animation:pulse 2s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 6px rgba(47,179,106,.08)}}
.online-players-button{cursor:pointer;transition:background .15s}
.online-players-button:hover{background:#cff0dc}
.header-cta{min-height:40px;padding:0 16px;border-radius:var(--r-pill)}

/* ---------- Кнопки ---------- */
.primary-link{min-height:44px;padding:0 18px;border:0;border-radius:var(--r-sm);background:var(--accent);color:#fff;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 6px 16px rgba(110,79,245,.22);transition:transform .15s,background .15s,box-shadow .15s;white-space:nowrap}
.primary-link:hover{background:var(--accent-strong);transform:translateY(-1px);box-shadow:0 10px 22px rgba(110,79,245,.28)}
.primary-link:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.primary-link>span{width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.2);font-size:12px}
.bright-play-button{min-height:56px;padding:0 24px;border-radius:var(--r);font-size:16px;font-weight:700;background:linear-gradient(120deg,#6e4ff5 0%,#9257f5 55%,#ff6b57 150%);box-shadow:0 12px 28px rgba(110,79,245,.3)}
.bright-play-button:hover{background:linear-gradient(120deg,#5f40ea 0%,#8546ef 55%,#ff5a44 150%);box-shadow:0 16px 34px rgba(110,79,245,.36);transform:translateY(-2px)}
.bright-play-button>span{width:28px;height:28px;font-size:14px}
.ghost-button{height:40px;padding:0 16px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:#fff;display:inline-flex;align-items:center;text-decoration:none;font-size:14px;font-weight:600;color:var(--ink);transition:border-color .15s,background .15s}
.ghost-button:hover{border-color:var(--ink)}
.under-link{border:0;background:none;padding:0;color:var(--muted);font-size:14px;font-weight:500;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:5px;cursor:pointer;transition:color .15s}
.under-link:hover{color:var(--ink);text-decoration-color:var(--ink)}
.text-action{height:40px;padding:0 12px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}
.text-action:hover{background:var(--surface-2);color:var(--ink)}

/* ---------- Заголовки секций ---------- */
.section-label{margin:0 0 10px;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.section-label.light-label{color:var(--accent)}
.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}
.section-heading h2,.rating h2,.match-flow h2{font-size:clamp(26px,3vw,34px)}
.section-heading>p{max-width:380px;color:var(--muted);font-size:14px;line-height:1.5;text-align:right}
.games-section,.popular,.rating-section,.how,.rules{padding-block:32px}

/* ---------- Hero ---------- */
.hero{padding-top:24px}
.hero-card{display:grid;grid-template-columns:1.05fr .95fr;gap:36px;align-items:center;padding:44px;border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow-sm)}
.hero h1{font-size:clamp(34px,4.2vw,52px);line-height:1.06;letter-spacing:-.035em}
.hero h1 span{color:var(--accent);white-space:nowrap}
.hero-copy>p:not(.section-label){max-width:540px;margin:18px 0 26px;color:var(--muted);font-size:16px;line-height:1.6}
.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:20px}
.hero-trust{display:flex;align-items:center;gap:14px;margin-top:32px;padding-top:24px;border-top:1px solid var(--line)}
.avatar-stack{display:flex;align-items:center}
.avatar-stack span{width:34px;height:34px;margin-left:-8px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--ink)}
.avatar-stack span:first-child{margin:0;background:var(--coral-soft)}
.avatar-stack span:nth-child(2){background:var(--accent-soft)}
.avatar-stack span:nth-child(3){background:var(--lime-soft)}
.avatar-stack b{margin-left:10px;color:var(--muted);font-size:13px;font-weight:600}
.hero-trust p{color:var(--muted);font-size:13px;line-height:1.4}
.hero-trust strong{color:var(--ink);font-size:14px}

.hero-board{position:relative;display:flex;flex-direction:column;gap:14px;min-height:400px;padding:20px;border-radius:var(--r-lg);background:linear-gradient(160deg,#ece7ff 0%,#e3f1ff 100%)}
.hero-scene{flex:1;width:100%;min-height:0;display:block}
.hero-board-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:13px;font-weight:600}
.status-pill{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:var(--r-pill);background:#fff;color:var(--ink);white-space:nowrap;box-shadow:var(--shadow-sm)}
.status-pill i{width:7px;height:7px;border-radius:50%;background:var(--green)}

/* ---------- Каталог игр ---------- */
.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.game-grid .game-card{height:320px}
.game-card{position:relative;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--r-lg);background:var(--surface);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .2s}
.game-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}

/* ---------- Карусель игр ---------- */
.games-carousel{position:relative}
/* Лента листается штатной прокруткой: пальцем на телефоне, трекпадом на ноутбуке.
   Отступы сверху и снизу оставлены под подъём карточки и её тень при наведении. */
.carousel-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:6px 2px 18px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.carousel-track::-webkit-scrollbar{display:none}
.carousel-track .game-card{flex:0 0 264px;height:320px;scroll-snap-align:start}
/* Стрелка висит по центру карточек: сдвиг на 6px компенсирует разные
   вертикальные отступы ленты (6px сверху и 18px снизу). */
.carousel-arrow{position:absolute;z-index:3;top:calc(50% - 6px);transform:translateY(-50%);width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);font-size:24px;line-height:1;cursor:pointer;box-shadow:var(--shadow-md);transition:opacity .2s,transform .2s}
.carousel-arrow:hover:not(:disabled){transform:translateY(-50%) scale(1.08)}
.carousel-prev{left:-14px}
.carousel-next{right:-14px}
.carousel-arrow:disabled{opacity:0;pointer-events:none}
/* Когда игры помещаются целиком, стрелки не нужны вовсе. */
.carousel-static .carousel-arrow{display:none}
.catalog-action{margin-top:18px;display:flex;justify-content:center}
.game-cover{position:relative;flex:1;min-height:0;display:grid;place-items:center;overflow:hidden;background:var(--surface-2)}
.cover-lavender{background:var(--accent-soft)}
.cover-lime{background:var(--lime-soft)}
.cover-sky{background:var(--sky-soft)}
.cover-coral{background:var(--coral-soft)}
.cover-purple{background:#e7e0ff}
.cover-ice{background:#dff3ff}
.cover-neon{background:#eefcc6}
.cover-green{background:var(--mint-soft)}
.cover-sand{background:var(--amber-soft)}
/* Карточка мафии: тёмная витрина с масками */
.cover-night{background:radial-gradient(ellipse at 50% 42%,#3b3163 0,#241f42 60%,#161328 100%)}
.game-card-mafia .mini-status{background:rgba(255,255,255,.16);color:#fff}
.cover-vault{background:linear-gradient(160deg,#3b3163,#1b1830)}
.bunker-mini{position:relative;display:grid;place-items:center;width:110px;height:110px}
.bunker-mini i{position:absolute;inset:0;border:8px solid #6a5f9c;border-radius:50%;background:radial-gradient(circle at 35% 30%,#565083,#2b2650);box-shadow:inset 0 0 0 6px rgba(255,255,255,.08),0 10px 20px rgba(0,0,0,.35)}
.bunker-mini i:after{content:"";position:absolute;left:50%;top:50%;width:74px;height:10px;border-radius:5px;background:#8b82c4;transform:translate(-50%,-50%) rotate(38deg);box-shadow:0 0 0 0 transparent,0 22px 0 -22px transparent}
.bunker-mini b{position:relative;z-index:2;color:#fff;font-size:34px;font-weight:800;text-shadow:0 3px 8px rgba(0,0,0,.5)}
.cover-felt{background:radial-gradient(circle at 50% 40%,#e8f5ec,#c6e3d1)}
.durak-mini{display:flex}
.durak-mini i{display:grid;place-items:center;width:54px;height:76px;margin-left:-16px;border:1px solid #d8d2c6;border-radius:8px;background:linear-gradient(160deg,#fff,#f7f4ee);color:#1c2030;font-size:17px;font-style:normal;font-weight:800;box-shadow:0 6px 12px rgba(28,32,48,.2)}
.durak-mini i:first-child{margin-left:0;transform:rotate(-10deg) translateY(6px)}
.durak-mini i:last-child{transform:rotate(10deg) translateY(6px)}
.durak-mini i.red{color:#d5343a}
.cover-wood{background:linear-gradient(150deg,#efe2ce,#cbb192)}
.chess-mini{display:flex;align-items:flex-end;gap:6px}
.chess-mini i{font-size:52px;font-style:normal;line-height:1}
.chess-mini i.w{color:#fff;text-shadow:0 0 1px #2a2a2a,0 1px 0 #2a2a2a,1px 0 0 #2a2a2a,-1px 0 0 #2a2a2a,0 -1px 0 #2a2a2a,0 4px 6px rgba(0,0,0,.25)}
.chess-mini i.b{color:#1d1d22;font-size:64px;text-shadow:0 4px 6px rgba(0,0,0,.25)}
.cover-amber{background:var(--amber-soft)}
.cities-mini{display:flex;align-items:center;gap:10px}
.cities-mini i{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:#fff;color:var(--accent);font-size:24px;font-weight:800;font-style:normal;box-shadow:var(--shadow-sm)}
.cities-mini i:nth-child(2){transform:translateY(-10px) rotate(-6deg);background:var(--accent);color:#fff}
.cities-mini i:nth-child(3){transform:rotate(5deg)}
.mafia-mini{display:flex;align-items:center;justify-content:center}
.mafia-mini i{width:62px;height:62px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.08);border:2px solid rgba(255,255,255,.16)}
.mafia-mini i:nth-child(1){transform:rotate(-10deg) translateX(14px)}
.mafia-mini i:nth-child(2){width:76px;height:76px;position:relative;border-color:rgba(255,107,87,.7);background:rgba(255,107,87,.14)}
.mafia-mini i:nth-child(3){transform:rotate(10deg) translateX(-14px)}
.mafia-mini svg{width:44px;height:44px}
.mafia-mini i:nth-child(2) svg{width:54px;height:54px}
.mini-status{position:absolute;z-index:2;left:14px;top:14px;padding:5px 10px;border-radius:var(--r-pill);background:rgba(255,255,255,.88);color:var(--text);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.game-info{padding:16px 18px 18px}
.game-info h3{font-size:18px}
.game-info p{margin-top:4px;color:var(--muted);font-size:13px;line-height:1.45}
.hands-cluster{position:absolute;inset:0}
.hands-cluster img{position:absolute;filter:drop-shadow(0 18px 22px rgba(74,47,214,.18))}
.hands-cluster img:first-child{left:9%;bottom:-6%;width:27%;transform:rotate(-18deg)}
.hands-cluster img:nth-child(2){right:8%;bottom:-4%;width:27%;transform:scaleX(-1) rotate(-15deg)}
.hands-cluster img:nth-child(3){left:38%;top:8%;width:23%;transform:rotate(4deg)}

/* Мини-иллюстрации игр */
.tic-board,.sea-board{display:grid}
.tic-board{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:5px}
.tic-board i{display:grid;place-items:center;border-radius:10px;background:#fff;color:var(--accent);font-size:26px;font-weight:700;font-style:normal;box-shadow:var(--shadow-sm)}
.tic-board i:nth-child(3),.tic-board i:nth-child(4){color:var(--coral)}
.sea-board{grid-template-columns:repeat(4,34px);gap:5px}
.sea-board i{height:34px;border-radius:8px;background:#fff;box-shadow:var(--shadow-sm)}
.sea-board i.hit{background:var(--coral);box-shadow:inset 0 0 0 9px #fff}
.sea-board i.ship{background:var(--ocean)}
.checkers{display:grid;grid-template-columns:repeat(3,46px);gap:10px}
.checkers i{height:46px;border-radius:50%;background:var(--ink);box-shadow:inset 0 0 0 6px #2f3549,0 6px 10px rgba(28,32,48,.18)}
.checkers i:nth-child(n+4){background:#fff;box-shadow:inset 0 0 0 6px var(--coral-soft),0 6px 10px rgba(28,32,48,.12)}
.arcade-mini{position:relative}
.connect-mini{width:160px;height:92px;padding:14px;display:flex;align-items:flex-end;gap:8px;border-radius:16px;background:linear-gradient(150deg,#8b6ff2,#5b3ee3);box-shadow:0 12px 0 #3f2f9a}
.connect-mini i{width:28px;height:28px;border-radius:50%;background:var(--coral);box-shadow:0 -30px var(--lime)}
.hockey-mini,.pong-mini{width:180px;height:88px;padding:16px;display:flex;align-items:center;justify-content:space-between;border-radius:44px;background:#fff;box-shadow:var(--shadow-sm)}
.hockey-mini i,.pong-mini i{width:34px;height:34px;border-radius:50%;background:var(--coral);box-shadow:0 6px 8px rgba(28,32,48,.16)}
.hockey-mini i:last-child,.pong-mini i:last-child{background:var(--accent)}
.hockey-mini b,.pong-mini b{width:18px;height:18px;border-radius:50%;background:var(--ink)}
.pong-mini{background:var(--ink)}
.pong-mini i{width:9px;height:50px;border-radius:5px}
.pong-mini i:last-child{background:var(--lime)}
.pong-mini b{background:#fff}
.billiard-mini{width:170px;height:96px;border:9px solid #7a4b30;border-radius:16px;background:#1f8a6b}
.billiard-mini i{position:absolute;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:inset -4px -5px 8px rgba(0,0,0,.2)}
.billiard-mini i:nth-child(1){left:22px;top:24px}
.billiard-mini i:nth-child(2){right:38px;top:9px;background:#ffd85a}
.billiard-mini i:nth-child(3){right:16px;top:26px;background:var(--accent)}
.billiard-mini i:nth-child(4){right:40px;bottom:8px;background:var(--coral)}
.billiard-mini i:nth-child(5){right:64px;top:26px;background:var(--ink)}
.dice-mini{display:flex;gap:14px}
.dice-mini i{width:58px;height:58px;border-radius:14px;background-color:#fff;background-repeat:no-repeat;box-shadow:0 8px 0 #f0d4a6,0 12px 16px rgba(28,32,48,.12)}
.dice-mini i:last-child{transform:rotate(12deg);background-color:var(--amber);box-shadow:0 8px 0 #c98a1b,0 12px 16px rgba(28,32,48,.14)}
.die-5{background-image:radial-gradient(circle at 26% 26%,var(--ink) 5px,transparent 6px),radial-gradient(circle at 74% 26%,var(--ink) 5px,transparent 6px),radial-gradient(circle at 50% 50%,var(--ink) 5px,transparent 6px),radial-gradient(circle at 26% 74%,var(--ink) 5px,transparent 6px),radial-gradient(circle at 74% 74%,var(--ink) 5px,transparent 6px)}
.die-2{background-image:radial-gradient(circle at 28% 28%,#fff 5px,transparent 6px),radial-gradient(circle at 72% 72%,#fff 5px,transparent 6px)}

/* ---------- Страница каталога ---------- */
.catalog-hero{padding-top:32px}
.catalog-hero h1{font-size:clamp(30px,4vw,44px)}
.catalog-lead{margin-top:12px;max-width:640px;color:var(--muted);font-size:16px;line-height:1.55}
.catalog-table{padding-block:32px}
.catalog-table h2{margin-bottom:18px;font-size:clamp(22px,2.4vw,28px)}
.catalog-list{overflow:hidden;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm)}
.catalog-row{display:grid;grid-template-columns:1.4fr 1fr 1fr auto 24px;align-items:center;gap:16px;padding:16px 20px;color:var(--text);text-decoration:none;font-size:14px;transition:background .15s}
.catalog-row+.catalog-row{border-top:1px solid var(--line)}
.catalog-row:hover{background:var(--surface-2)}
.catalog-row strong{color:var(--ink);font-size:16px}
.catalog-row i{color:var(--accent);font-style:normal;text-align:right}
.catalog-genre{color:var(--muted)}

/* ---------- Популярное ---------- */
.updated{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:500}
.popular-row{padding:6px 24px;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm)}
.popular-row article{display:grid;grid-template-columns:32px 48px 1fr 180px 64px;gap:18px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}
.popular-row article:last-child{border:0}
.rank{color:var(--faint);font-size:13px;font-weight:700}
.popular-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;font-size:18px;font-weight:700}
.popular-icon.lavender{background:var(--accent-soft);color:var(--accent-ink)}
.popular-icon.lime{background:var(--lime-soft);color:var(--lime-ink)}
.popular-icon.sky{background:var(--sky-soft);color:var(--sky-ink)}
.popular-icon.night{background:#241f42;color:#fff}
.popular-row h3{font-size:15px}
.popular-row h3 a{color:inherit;text-decoration:none}
.popular-row h3 a:hover{color:var(--accent)}
.popular-row p{margin-top:2px;color:var(--muted);font-size:13px}
.popular-bar{height:8px;border-radius:4px;background:var(--surface-3);overflow:hidden}
.popular-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--accent),#9b7cff)}
.popular-row article>strong{font-size:16px;font-weight:700;text-align:right}

/* ---------- Рейтинг ---------- */
.rating{display:grid;grid-template-columns:.8fr 1.2fr;gap:44px;padding:36px;border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow-sm)}
.rating-copy>p:not(.section-label){margin-top:14px;color:var(--muted);font-size:14px;line-height:1.6}
.rating-tabs{display:inline-flex;flex-wrap:wrap;gap:2px;margin:20px 0 0;padding:4px;border-radius:14px;background:var(--surface-2)}
.rating-tabs button{padding:8px 12px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}
.rating-tabs button:hover{color:var(--ink)}
.rating-tabs button.active{background:#fff;color:var(--ink);box-shadow:var(--shadow-sm)}
.season{display:flex;justify-content:space-between;margin-top:28px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:13px;font-weight:600}
.season strong{color:var(--ink)}
.leaderboard{display:flex;flex-direction:column;gap:8px;transition:opacity .2s}
.leaderboard.loading{opacity:.5}
.leader{min-height:72px;padding:12px 18px;display:grid;grid-template-columns:28px 44px 1fr auto;align-items:center;gap:14px;border-radius:var(--r);background:var(--surface-2);transition:transform .2s}
.leader:hover{transform:translateX(4px)}
.leader-first{background:var(--accent-soft)}
.place{color:var(--faint);font-size:14px;font-weight:700}
.leader-first .place{color:var(--accent)}
.player-avatar{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ink);font-size:14px;font-weight:700}
.player-avatar.peach{background:#ffd2c7}
.player-avatar.blue{background:#cfe6ff}
.player-avatar.yellow{background:#ffe8a3}
.player-avatar.mint{background:#c9f2dc}
.leader div{display:flex;flex-direction:column;gap:2px}
.leader div strong{font-size:15px}
.leader div small{color:var(--muted);font-size:13px}
.leader>b{font-size:18px;font-weight:800}

/* ---------- Как это работает ---------- */
.how{padding-bottom:48px}
.how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.how-grid article{padding:28px;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm)}
.how-grid article>span{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent);font-size:14px;font-weight:800}
.how-grid h3{margin:22px 0 8px;font-size:18px}
.how-grid p{color:var(--muted);font-size:14px;line-height:1.55}

/* ---------- Подвал ---------- */
.site-footer{margin-top:24px;padding:28px 0 40px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--muted);font-size:13px}
.site-footer .logo{font-size:18px}

/* ---------- Страница игры (общее) ---------- */
.detail-hero{margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:center;padding:44px;border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow-sm)}
.breadcrumb{display:inline-flex;align-items:center;gap:6px;margin-bottom:20px;color:var(--muted);text-decoration:none;font-size:14px;font-weight:600;transition:color .15s}
.breadcrumb:hover{color:var(--ink)}
.detail-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.detail-meta span{display:inline-flex;align-items:center;padding:6px 10px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.detail-meta span:first-child{background:var(--accent-soft);color:var(--accent-ink)}
.detail-meta i{width:6px;height:6px;margin-right:7px;border-radius:50%;background:var(--green)}
.detail-copy h1{font-size:clamp(34px,4.2vw,52px);line-height:1.08;letter-spacing:-.035em}
.detail-copy h1 span{color:var(--accent)}
.detail-copy>p{max-width:520px;margin:20px 0 26px;color:var(--muted);font-size:16px;line-height:1.6}
.detail-actions{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px}
.quick-join{display:flex;flex-direction:column;gap:6px;min-width:290px}
.quick-join>label{padding-left:4px;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.quick-join>div{height:56px;padding:4px;display:flex;border:1px solid var(--line-strong);border-radius:var(--r);background:#fff;transition:border-color .15s,box-shadow .15s}
.quick-join>div:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.quick-join input{flex:1;min-width:0;width:150px;padding:0 14px;border:0;outline:0;background:transparent;color:var(--ink);font-size:16px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.quick-join input::placeholder{color:var(--faint);letter-spacing:.14em}
.quick-join button{min-width:100px;border:0;border-radius:12px;background:var(--ink);color:#fff;font-size:14px;font-weight:700;cursor:pointer;transition:background .15s}
.quick-join button:hover{background:#2c3145}
.quick-join button span{margin-left:6px;color:var(--lime)}
.detail-facts{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:24px;color:var(--muted);font-size:13px;font-weight:600}
.rules{padding-top:40px}
.rule-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.rule-grid article{padding:16px 16px 24px;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm)}
.rule-image{height:220px;margin-bottom:18px;display:grid;place-items:center;border-radius:var(--r)}
.rule-image img{width:170px;filter:drop-shadow(0 16px 18px rgba(28,32,48,.16))}
.coral-bg{background:var(--coral-soft)}
.violet-bg{background:var(--accent-soft)}
.lime-bg{background:var(--lime-soft)}
.rule-glyph{width:72px;height:72px;margin:8px 0 18px;display:grid;place-items:center;border-radius:20px;background:var(--accent-soft);color:var(--accent);font-size:34px;font-weight:700}
.rule-glyph.sky{background:var(--sky-soft);color:var(--ocean)}
.rule-glyph.coral{background:var(--coral-soft);color:var(--coral)}
.rule-glyph.lime{background:var(--lime-soft);color:var(--lime-ink)}
.rule-grid article>span{color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.06em}
.rule-grid h3{margin:8px 0 6px;font-size:18px}
.rule-grid p{color:var(--muted);font-size:14px;line-height:1.55}
.match-flow{margin-block:40px 48px;display:grid;grid-template-columns:.8fr 1.2fr;gap:44px;align-items:center;padding:40px;border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow-sm)}
.match-flow>div>p:not(.section-label){margin-top:14px;color:var(--muted);font-size:14px;line-height:1.6}
.flow-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.flow-steps article{min-height:140px;padding:18px;display:flex;flex-direction:column;justify-content:flex-end;border-radius:18px;background:var(--surface-2);transition:background .15s}
.flow-steps article:hover{background:var(--accent-soft)}
.flow-steps b{color:var(--accent);font-size:34px;font-weight:800;line-height:1}
.flow-steps span{margin-top:6px;font-size:14px;font-weight:700}
.flow-steps small{margin-top:2px;color:var(--muted);font-size:12px}

/* ---------- Суефа: витрина на странице игры ---------- */
.detail-visual{position:relative;min-height:440px;overflow:hidden;border-radius:var(--r-lg);background:linear-gradient(160deg,#ece7ff 0%,#e3f1ff 100%)}
.detail-visual>img{position:absolute;width:210px;filter:drop-shadow(0 20px 22px rgba(74,47,214,.18))}
.detail-rock{left:16px;bottom:40px;transform:rotate(-19deg)}
.detail-scissors{right:10px;bottom:34px;transform:scaleX(-1) rotate(-18deg)}
.detail-paper{left:35%;top:26px;transform:rotate(5deg)}
.visual-chip{position:absolute;z-index:2;padding:6px 12px;border-radius:var(--r-pill);background:#fff;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;box-shadow:var(--shadow-sm)}
.chip-rock{left:22px;top:26px}
.chip-scissors{right:24px;top:56px}
.chip-paper{left:50%;top:190px}
.visual-score{position:absolute;z-index:3;left:50%;bottom:20px;transform:translateX(-50%);min-width:150px;padding:12px 20px;display:flex;flex-direction:column;align-items:center;border-radius:var(--r);background:#fff;box-shadow:var(--shadow-md)}
.visual-score small{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.visual-score strong{font-size:26px;font-weight:800}
.visual-score strong i{color:var(--faint);font-style:normal}
.visual-score span{color:var(--muted);font-size:12px}
@media(max-width:640px){.detail-visual{min-height:360px}.detail-visual>img{width:160px}.chip-paper{left:44%}}

/* ---------- Диалоги и формы ---------- */
.light-modal{width:min(520px,calc(100% - 28px));padding:32px;border:0;border-radius:var(--r-xl);background:#fff;color:var(--ink);box-shadow:var(--shadow-lg)}
.light-modal::backdrop{background:rgba(28,32,48,.45);backdrop-filter:blur(6px)}
.light-modal h2{margin:0 0 8px;font-size:24px}
.light-modal>p:not(.section-label){margin:0 0 20px;color:var(--muted);font-size:14px;line-height:1.55}
.modal-x{position:absolute;right:16px;top:16px;width:36px;height:36px;border:0;border-radius:50%;background:var(--surface-2);color:var(--muted);font-size:20px;line-height:1;cursor:pointer;transition:background .15s,color .15s}
.modal-x:hover{background:var(--surface-3);color:var(--ink)}
.light-modal form{display:flex;flex-direction:column;gap:16px}
.field-label{display:flex;flex-direction:column;gap:6px;color:var(--text);font-size:13px;font-weight:600}
.field-label input,.code-input{height:48px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink);font-size:15px;outline:0;transition:border-color .15s,background .15s,box-shadow .15s}
.field-label input:focus,.code-input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 4px var(--accent-soft)}
fieldset{margin:0;padding:0;border:0}
legend{margin-bottom:8px;color:var(--text);font-size:13px;font-weight:600}
.target-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.target-options label{position:relative}
.target-options input{position:absolute;opacity:0;pointer-events:none}
.target-options span{height:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.target-options span:hover{border-color:var(--line-strong)}
.target-options b{font-size:20px;font-weight:800}
.target-options small{color:var(--muted);font-size:12px}
.target-options input:checked+span{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.target-options input:checked+span small{color:var(--accent-ink)}
.target-options input:focus-visible+span{box-shadow:0 0 0 4px var(--accent-soft)}
.modal-submit{width:100%;min-height:50px}
.modal-error{color:var(--red);font-size:13px;font-weight:500}
.compact-modal{width:min(440px,calc(100% - 28px))}
.code-input{text-align:center;text-transform:uppercase;font-size:20px;font-weight:700;letter-spacing:.3em}
.modal-tabs{display:grid;grid-template-columns:1fr 1fr;gap:2px;margin:20px 0;padding:4px;border-radius:12px;background:var(--surface-2)}
.modal-tabs button{padding:10px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}
.modal-tabs button.active{background:#fff;color:var(--ink);box-shadow:var(--shadow-sm)}
.guest-button{display:block;margin:16px auto 0;padding:0;border:0;background:none;color:var(--muted);font-size:14px;font-weight:500;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.guest-button:hover{color:var(--ink)}
.tic-swap-option{position:relative;display:block}
.tic-swap-option input{position:absolute;opacity:0;pointer-events:none}
.tic-swap-option>span{min-height:64px;padding:12px 14px;display:grid;grid-template-columns:28px 1fr;column-gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);cursor:pointer;transition:border-color .15s,background .15s}
.tic-swap-option i{grid-row:1/3;width:24px;height:24px;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:7px;background:#fff;color:transparent;font-size:13px;font-style:normal;font-weight:800}
.tic-swap-option b{font-size:14px}
.tic-swap-option small{color:var(--muted);font-size:12px}
.tic-swap-option input:checked+span{border-color:var(--accent);background:var(--accent-soft)}
.tic-swap-option input:checked+span i{border-color:var(--accent);background:var(--accent);color:#fff}
.toast{position:fixed;z-index:200;left:50%;bottom:24px;transform:translate(-50%,120px);max-width:calc(100% - 28px);padding:12px 18px;border-radius:12px;background:var(--ink);color:#fff;font-size:14px;font-weight:600;box-shadow:var(--shadow-lg);transition:transform .3s}
.toast.show{transform:translate(-50%,0)}

/* ---------- Панель «Игроки онлайн» ---------- */
.community-backdrop{position:fixed;inset:0;z-index:80;background:rgba(28,32,48,.35);backdrop-filter:blur(3px)}
.community-panel{position:fixed;z-index:81;top:12px;right:12px;bottom:12px;width:min(420px,calc(100% - 24px));display:flex;flex-direction:column;padding:24px;overflow:hidden;border-radius:var(--r-xl);background:#fff;box-shadow:var(--shadow-lg);transform:translateX(calc(100% + 24px));transition:transform .32s ease}
.community-panel.open{transform:translateX(0)}
.community-panel>header{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:16px;border-bottom:1px solid var(--line)}
.community-panel h2{font-size:22px}
.community-panel>header button,.room-chat-panel>header button{width:36px;height:36px;border:0;border-radius:50%;background:var(--surface-2);color:var(--muted);font-size:20px;line-height:1;cursor:pointer}
.community-profile{display:flex;align-items:center;gap:12px;margin:16px 0;padding:12px 14px;border-radius:var(--r);background:var(--accent-soft)}
.community-profile>span,.direct-person>span,.online-user-avatar{width:40px;height:40px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:#fff;color:var(--accent-ink);font-size:14px;font-weight:700}
.community-profile div{display:flex;flex:1;flex-direction:column}
.community-profile small{color:var(--accent-ink);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.community-profile strong{font-size:15px}
.community-profile i,.direct-person i{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(47,179,106,.18)}
.online-view,.direct-view{min-height:0;flex:1;display:flex;flex-direction:column}
.community-hint{margin:0 0 12px;color:var(--muted);font-size:13px;line-height:1.5}
.online-users{min-height:0;display:flex;flex-direction:column;gap:8px;overflow:auto;padding-right:2px}
.online-empty{padding:40px 20px;color:var(--muted);font-size:14px;line-height:1.5;text-align:center}
.online-user{display:grid;grid-template-columns:40px 1fr;gap:12px;padding:12px;border-radius:var(--r);background:var(--surface-2)}
.online-user-main{display:flex;align-items:center;justify-content:space-between;gap:8px}
.online-user-name{display:flex;flex-direction:column;gap:2px}
.online-user-name strong{font-size:14px}
.online-user-name small{color:var(--green-ink);font-size:11px;font-weight:700;letter-spacing:.06em}
.online-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.3fr;gap:6px}
.online-actions button,.invite-game-select{height:36px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);font-size:13px;font-weight:600;cursor:pointer;outline:0}
.online-actions button:first-child{border-color:var(--accent);background:var(--accent);color:#fff}
.invite-game-select{padding:0 10px}
.back-online{align-self:flex-start;margin:0 0 12px;padding:0;border:0;background:none;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer}
.direct-person{display:flex;align-items:center;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.direct-person strong{flex:1;font-size:15px}
.direct-messages,.room-chat-messages{min-height:0;flex:1;display:flex;flex-direction:column;gap:8px;overflow:auto;padding:14px 2px}
.direct-message,.room-chat-message{align-self:flex-start;max-width:82%;padding:10px 12px;border-radius:14px 14px 14px 4px;background:var(--surface-2);color:var(--ink);font-size:14px;line-height:1.45}
.direct-message.mine,.room-chat-message.mine{align-self:flex-end;border-radius:14px 14px 4px 14px;background:var(--accent);color:#fff}
.direct-message small,.room-chat-message small{display:block;margin-top:4px;color:var(--faint);font-size:11px}
.direct-message.mine small,.room-chat-message.mine small{color:rgba(255,255,255,.7)}
.direct-empty,.room-chat-empty{margin:auto;max-width:240px;color:var(--muted);font-size:14px;line-height:1.5;text-align:center}
.direct-form,.room-chat-form{display:grid;grid-template-columns:1fr 44px;gap:8px;padding-top:12px;border-top:1px solid var(--line)}
.direct-form input,.room-chat-form input{height:44px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);outline:0;transition:border-color .15s,box-shadow .15s}
.direct-form input:focus,.room-chat-form input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 4px var(--accent-soft)}
.direct-form button,.room-chat-form button{border:0;border-radius:12px;background:var(--accent);color:#fff;font-size:18px;cursor:pointer}
.room-chat-form button:disabled,.room-chat-form input:disabled{opacity:.45;cursor:not-allowed}

/* ---------- Приглашение ---------- */
.invite-notice{position:fixed;z-index:90;left:50%;bottom:24px;transform:translateX(-50%);width:min(600px,calc(100% - 28px));display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-lg)}
.invite-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:var(--lime-soft);color:var(--lime-ink);font-size:18px}
.invite-notice div{display:flex;min-width:0;flex-direction:column}
.invite-notice small{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.invite-notice strong{font-size:15px}
.invite-notice p{margin-top:2px;color:var(--muted);font-size:13px}
.invite-notice>a{padding:10px 14px;border-radius:10px;background:var(--accent);color:#fff;text-decoration:none;font-size:13px;font-weight:700}
.invite-close{position:absolute;right:-8px;top:-8px;width:26px;height:26px;border:0;border-radius:50%;background:var(--ink);color:#fff;font-size:14px;line-height:1;cursor:pointer}

/* ---------- Чат комнаты ---------- */
.room-chat-button{position:relative;height:40px;display:inline-flex;align-items:center;gap:8px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:#fff;color:var(--ink);font-size:14px;font-weight:600;cursor:pointer;transition:border-color .15s}
.room-chat-button:hover:not(:disabled){border-color:var(--ink)}
.room-chat-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.room-chat-button:disabled{opacity:.45;cursor:not-allowed}
.room-chat-button>b{position:absolute;right:-6px;top:-7px;min-width:20px;height:20px;padding:0 6px;display:grid;place-items:center;border:2px solid #fff;border-radius:10px;background:var(--coral);color:#fff;font-size:11px}
.room-chat-panel{position:fixed;z-index:75;right:16px;bottom:16px;width:min(380px,calc(100% - 24px));height:min(560px,calc(100vh - 32px));display:flex;flex-direction:column;padding:20px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:var(--shadow-lg);transform:translateY(calc(100% + 32px));opacity:0;pointer-events:none;transition:transform .3s ease,opacity .3s}
.room-chat-panel.open{transform:translateY(0);opacity:1;pointer-events:auto}
.room-chat-panel>header{display:flex;align-items:center;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid var(--line)}
.room-chat-panel>header div{display:flex;flex-direction:column;gap:2px}
.room-chat-panel>header small{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.room-chat-panel>header strong{font-size:15px}
.room-chat-message strong{display:block;margin-bottom:2px;font-size:12px;opacity:.75}

/* ---------- Игровые страницы (общее) ---------- */
.play-nav{display:flex;align-items:center;gap:14px}
.play-nav a{color:var(--muted);text-decoration:none;font-size:14px;font-weight:600;transition:color .15s}
.play-nav a:hover{color:var(--ink)}
.profile-pill{display:inline-flex;align-items:center;gap:8px;padding:4px 14px 4px 4px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;cursor:pointer;transition:border-color .15s}
.profile-pill:hover{border-color:var(--line-strong)}
.profile-pill>span{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);font-size:13px;font-weight:700}
.profile-pill b,.profile-pill strong{font-size:14px;font-weight:600}
.play-page{padding:28px 0 60px}
.play-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}
.play-title-row h1{font-size:clamp(26px,3vw,36px)}
.play-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.small-primary{min-height:40px;border-radius:var(--r-pill)}
.play-shell{overflow:hidden;border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow-sm)}
.room-bar{min-height:60px;padding:10px 18px;display:flex;flex-wrap:wrap;align-items:center;gap:12px;border-bottom:1px solid var(--line)}
.room-bar-group{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.room-bar>.room-bar-group,.room-bar>.goal-chip{margin-left:auto}
.room-chip-card{padding:6px 8px 6px 16px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff}
.room-chip{display:flex;align-items:center;gap:10px}
.room-chip>span,.goal-chip{color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.room-chip strong{font-size:16px;font-weight:800;letter-spacing:.14em}
.room-chip button,.copy-link-button{height:36px;display:inline-flex;align-items:center;gap:8px;padding:0 14px;border:0;border-radius:10px;background:var(--ink);color:#fff;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s}
.room-chip button:hover,.copy-link-button:hover{background:#2c3145}
.copy-link-button svg{width:16px;height:16px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round}
.copy-label-short{display:none}
/* Меню на аватарке игровой комнаты: регистрация для гостя, профиль для своих. */
.profile-menu-host{position:relative;display:inline-flex}
.profile-menu-host .profile-pill{cursor:pointer}
.profile-menu{position:absolute;z-index:60;right:0;top:calc(100% + 10px);width:264px;padding:14px;border:1px solid var(--line);border-radius:var(--r);background:#fff;box-shadow:var(--shadow-lg)}
.profile-menu-head{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.profile-menu-head div{display:flex;min-width:0;flex-direction:column}
.profile-menu-head small{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.profile-menu-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}
.profile-menu-hint{margin:10px 0 12px;color:var(--muted);font-size:12px;line-height:1.45}
.profile-menu-item{width:100%;min-height:40px;margin-top:6px;padding:0 12px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--ink);text-decoration:none;font-size:14px;font-weight:600;cursor:pointer;transition:border-color .15s,background .15s}
.profile-menu-item:hover{border-color:var(--ink)}
.profile-menu-item.primary{border-color:transparent;background:var(--accent);color:#fff;box-shadow:0 6px 16px rgba(110,79,245,.22)}
.profile-menu-item.primary:hover{background:var(--accent-strong)}
/* Кнопка-переключатель с иконкой и подписью (звук). */
.icon-toggle{height:40px;display:inline-flex;align-items:center;gap:8px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:#fff;color:var(--ink);font-size:14px;font-weight:600;cursor:pointer;transition:border-color .15s,color .15s}
.icon-toggle:hover{border-color:var(--ink)}
.icon-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon-toggle .sound-off{display:none}
.icon-toggle.off{color:var(--faint)}
.icon-toggle.off .sound-wave{display:none}
.icon-toggle.off .sound-off{display:block}
/* Экран конца матча: поверх арены, с реваншем и выходом. */
.match-over .waiting-card{gap:0}
.match-over-label{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.match-over strong{margin:10px 0 4px;font-size:24px}
.match-over-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:16px;margin-top:22px}
/* В суефе кнопка вынесена из плашки кода и прижата к правому краю строки. */
.room-bar>.room-bar-copy{margin-left:auto}
.goal-chip{padding:8px 14px;border-radius:var(--r-pill);background:var(--surface-2)}
.goal-chip strong{color:var(--ink);font-size:14px}
.player-card{z-index:3;display:flex;align-items:center;gap:10px;min-width:180px;padding:10px 14px;border-radius:var(--r);background:#fff;box-shadow:var(--shadow-md)}
.player-card div{display:flex;flex:1;flex-direction:column;min-width:0}
.player-card small{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.player-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.player-card>b{font-size:26px;font-weight:800}
.player-right div{text-align:right}
.mini-avatar{width:36px;height:36px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;color:var(--ink);font-size:13px;font-weight:700}
.mini-avatar.coral{background:var(--coral-soft)}
.mini-avatar.violet{background:var(--accent-soft)}
.play-help{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:14px 6px;color:var(--faint);font-size:13px}
.result-card{padding:20px 28px;border-radius:var(--r-lg);background:#fff;text-align:center;box-shadow:var(--shadow-lg)}
.result-card small{display:block;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.result-card strong{display:block;margin:6px 0 2px;color:var(--accent);font-size:28px;font-weight:800;letter-spacing:-.02em}
.result-card span{display:block;color:var(--muted);font-size:13px}

/* ---------- Ошибка ---------- */
.error-page{padding:80px 0;text-align:center}
.error-page h1{font-size:clamp(32px,4vw,44px)}
.error-page p{margin:12px auto 24px;max-width:520px;color:var(--muted)}

/* ---------- Адаптив ---------- */
@media(max-width:900px){
  .site-nav{display:none}
  .hero-card,.detail-hero,.rating,.match-flow{grid-template-columns:1fr}
  .hero-card,.detail-hero{padding:28px}
  .hero-board{min-height:0}
  .section-heading{align-items:flex-start;flex-direction:column;gap:8px}
  .section-heading>p{text-align:left}
  .popular-row article{grid-template-columns:28px 44px 1fr 64px}
  .popular-bar{display:none}
  .how-grid,.rule-grid{grid-template-columns:1fr}
  .flow-steps{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:640px){
  .shell{width:min(100% - 28px,var(--shell))}
  .header-inner{min-height:60px}
  .header-actions .live-dot{display:none}
  .header-cta{padding:0 14px;font-size:13px}
  .hero-card,.detail-hero,.rating,.match-flow{padding:20px;border-radius:var(--r-lg)}
  .hero h1{font-size:36px}
  .hero-copy>p:not(.section-label){font-size:15px}
  .catalog-row{grid-template-columns:1fr auto;gap:6px 12px;padding:14px 16px}
  .catalog-row .catalog-genre{grid-column:1/-1;font-size:13px}
  .catalog-row i{display:none}
  .carousel-arrow{display:none}
  .popular-row{padding:4px 16px}
  .popular-row article{grid-template-columns:24px 40px 1fr auto;gap:12px}
  .leader{grid-template-columns:20px 40px 1fr auto;padding:10px 12px}
  .rating-tabs{display:flex}
  .detail-actions{align-items:stretch;flex-direction:column}
  .bright-play-button,.quick-join{width:100%;min-width:0}
  .quick-join input{width:auto}
  .target-options{grid-template-columns:repeat(2,1fr)}
  .light-modal{padding:24px}
  .site-footer{flex-direction:column;align-items:flex-start}
  .play-title-row{align-items:flex-start;flex-direction:column;gap:14px}
  .play-title-row .text-action{display:none}
  .community-panel{top:8px;right:8px;bottom:8px;width:calc(100% - 16px);padding:18px}
  .invite-notice{grid-template-columns:40px 1fr}
  .invite-notice>a{grid-column:1/-1;text-align:center}
  /* Код комнаты и кнопка копирования должны умещаться в одну строку
     даже на экране 320px — поджимаем кегль и отступы. */
  .room-bar{padding:8px 12px;gap:8px}
  .room-chip{gap:6px}
  .room-chip>span{font-size:10px;letter-spacing:.04em}
  .room-chip strong{font-size:13px;letter-spacing:.08em}
  .room-chip button,.copy-link-button{height:32px;gap:6px;padding:0 10px;font-size:12px}
  .copy-link-button svg{width:14px;height:14px}
  /* На узком экране полная подпись не оставляет места коду комнаты. */
  .copy-label-full{display:none}
  .copy-label-short{display:inline}
  /* Карточки игроков расходятся по углам арены и на 320px наезжают друг
     на друга — ужимаем их до ширины, при которой они расходятся. */
  .arena .player-card{min-width:0;max-width:calc(50% - 14px);padding:8px 10px;gap:7px}
  .arena .player-card>b{font-size:20px}
  .arena .player-card small{font-size:9px}
  .arena .player-card strong{font-size:12px}
  .arena .mini-avatar{width:28px;height:28px;font-size:11px}
  .room-chat-panel{right:8px;bottom:8px;width:calc(100% - 16px);height:min(600px,calc(100vh - 16px))}
}

/* ---------- Текстовые блоки страниц игр (описание, вопросы, перелинковка) ---------- */
.game-article,.game-faq,.other-games{padding-block:32px}
.article-body{max-width:780px;display:flex;flex-direction:column;gap:16px}
.article-body p{color:var(--text);font-size:16px;line-height:1.7}
.faq-list{display:flex;flex-direction:column;gap:10px;max-width:860px}
.faq-item{border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;cursor:pointer;list-style:none}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary h3{font-size:17px;font-weight:600}
.faq-item summary i{position:relative;flex:0 0 auto;width:20px;height:20px}
.faq-item summary i::before,.faq-item summary i::after{content:"";position:absolute;left:50%;top:50%;background:var(--muted);border-radius:2px;transition:transform .2s}
.faq-item summary i::before{width:14px;height:2px;transform:translate(-50%,-50%)}
.faq-item summary i::after{width:2px;height:14px;transform:translate(-50%,-50%)}
.faq-item[open] summary i::after{transform:translate(-50%,-50%) scaleY(0)}
.faq-item[open] summary h3{color:var(--accent)}
.faq-item>p{padding:0 22px 20px;max-width:720px;color:var(--muted);font-size:15px;line-height:1.65}
.other-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.other-card{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-sm);text-decoration:none;transition:transform .15s,box-shadow .15s}
.other-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.other-card strong{font-size:16px}
.other-card span{color:var(--muted);font-size:13px}
@media(max-width:640px){
  .article-body p{font-size:15px}
  .faq-item summary{padding:14px 16px}
  .faq-item summary h3{font-size:15px}
  .faq-item>p{padding:0 16px 16px;font-size:14px}
}

/* ---------- Голосовой чат в играх на двоих ---------- */
.voice-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid var(--line)}
.talk-button{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:0 20px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:#fff;color:var(--ink);font-size:15px;font-weight:600;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;transition:background .12s,border-color .12s,color .12s,transform .12s}
.talk-button:hover:not(:disabled){border-color:var(--ink)}
.talk-button:disabled{opacity:.45;cursor:not-allowed}
/* Пока идёт передача — кнопка «горит» */
.talk-button.live{border-color:var(--green);background:var(--green);color:#fff;transform:scale(.98)}
.talk-button.live .talk-icon{animation:talk-pulse 1s ease-in-out infinite}
@keyframes talk-pulse{50%{opacity:.55}}
.talk-icon{width:18px;height:18px;flex:0 0 auto}
.voice-level{width:56px;height:8px;border-radius:4px;background:var(--surface-3);overflow:hidden}
.voice-level i{display:block;height:100%;width:var(--level,0%);background:var(--green);transition:width .1s}
.voice-status{color:var(--muted);font-size:13px}
.voice-status.live{color:var(--green-ink);font-weight:600}
.voice-toggle{margin-left:auto;display:inline-flex;align-items:center;gap:9px;cursor:pointer;color:var(--muted);font-size:14px;user-select:none}
.voice-toggle input{position:absolute;opacity:0;pointer-events:none}
.voice-toggle i{position:relative;width:38px;height:22px;flex:0 0 auto;border-radius:11px;background:var(--line-strong);transition:background .15s}
.voice-toggle i::after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}
.voice-toggle input:checked+i{background:var(--green)}
.voice-toggle input:checked+i::after{transform:translateX(16px)}
.voice-toggle input:checked~span{color:var(--ink)}
.voice-bar-footer{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.voice-hint{margin-top:2px;color:var(--faint);font-size:12px}
.voice-bar-footer .goal-chip{margin-left:auto}
@media(max-width:640px){
  .voice-bar{padding:10px 12px;gap:8px}
  .talk-button{flex:1;justify-content:center;padding:0 14px}
  .voice-toggle span{display:none}
  .voice-hint{display:none}
}
/* Имя игрока подсвечивается, пока он говорит */
.speaking{color:var(--green-ink)!important;position:relative}
.speaking::after{content:"";display:inline-block;width:7px;height:7px;margin-left:7px;border-radius:50%;background:var(--green);animation:pulse 1.2s ease-in-out infinite}
