/* =========================================================================
   Funky — островной дизайн (Island design system)
   Извлечено из design/wireframes_island.html. Базовые токены + компоненты,
   переиспользуемые на всех страницах. Фаза 0: база + пилоты (auth, cabinet).
   ========================================================================= */

/* ============================ ТОКЕНЫ ============================ */
:root{
  --bg:#eef1f6;
  --island:#ffffff;
  --ink:#2b3240;
  --muted:#8a93a5;
  --line:#e4e8ef;
  --ph:#e2e6ee;
  --ph2:#edf0f5;
  --accent:#e8912d;
  --accent-dark:#cf7d1f;
  --accent-soft:#fdeed8;
  --green:#3aa06b;
  --green-soft:#e2f3ea;
  --red:#d8604f;
  --red-dark:#c24c3c;
  --red-soft:#fae7e4;
  --blue:#4a7fd4;
  --blue-soft:#e6eefb;
  --menubar:#dfe5ee;

  --radius:16px;
  --radius-sm:10px;
  --shadow:0 8px 24px rgba(43,50,64,.08), 0 1px 3px rgba(43,50,64,.05);
  --shadow-sm:0 2px 6px rgba(43,50,64,.10);

  --font:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  --mono:ui-monospace,"JetBrains Mono",Consolas,monospace;
}

/* ============================ RESET / БАЗА ============================ */
*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}

html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg);
  color:var(--ink);
  font:15px/1.55 var(--font);
  min-height:100vh;
}
img{max-width:100%;display:block}
a{color:var(--accent-dark);text-decoration:none}
a:hover{text-decoration:underline}

h1,h2,h3{line-height:1.2;font-weight:800;color:var(--ink)}
h1{font-size:26px;letter-spacing:-.4px;color:#6f6f6f;padding:0 0 20px;text-align: center}
h2{font-size:19px}

/* Утилиты, на которые завязан JS */
.hidden{display:none !important}
.text-success{color:#237a4c;font-weight:600}
.text-error{color:#b03e2e;font-weight:600}

/* Микро-подпись (как во фрейме): моно, верхний регистр, приглушённый цвет */
.micro{font:600 14px/1.4 var(--mono);letter-spacing:.4px;text-transform:uppercase;color:#9aa2b3}

/* ============================ КОНТЕЙНЕРЫ ============================ */
.container{max-width:1500px;margin:0 auto;padding:0 20px 80px}
.container--narrow{max-width:660px}

/* Островок-карточка */
.island{
  background:var(--island);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:22px;
  margin-bottom: 18px;
}
.island.dashed{background:transparent;box-shadow:none;border:1.5px dashed #c9cfda}
.island+.island{/*margin-top:18px*/}

.island-title{
  font:700 14px/1 var(--font);
  letter-spacing:.6px;text-transform:uppercase;
  color:var(--muted);
  margin-bottom:12px;
}

/* Заголовок-секция с акцентным подчёркиванием */
.section-title{
  display:inline-block;
  font:800 17px/1.2 var(--font);
  color:var(--ink);
  padding-bottom:8px;
  border-bottom:3px solid var(--accent);
  margin-bottom:16px;
}

.note{font-size:14px;color:var(--muted)}
.note b,.note strong{color:var(--ink)}

/* Флекс-утилиты (из вайрфрейма) */
.row{display:flex;align-items:center;gap:10px}
.row.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:10px}

/* ============================ ГЛАВНАЯ ШАПКА / ЛОГО ============================ */
.brand-head{text-align:center;margin-bottom:28px}
.img_h1{display:block;/*height:60px;*/width:auto;max-width:100%;margin: 0 auto 14px;opacity: 0.7;}
.h1_main{
  display:inline-block;vertical-align:middle;
  font-size:20px;font-weight:800;letter-spacing:-.4px;
  padding:0;
}

/* ============================ НАВИГАЦИЯ (nav.php) ============================ */
/* Полноширинная шапка: логотип слева, «Вы вошли как…» справа */
.site-header{
  max-width:1500px;
  /*background:#fff;*/
  border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 32px;
  margin:0 auto;
}
.site-logo{display:inline-flex;align-items:center;flex:none}
.site-logo img{height:90px;width:auto;opacity: 0.7;}
.site-account{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.site-user{font-size:14px;color:var(--muted);white-space:nowrap;text-align:right}
.site-user strong{color:var(--ink)}

/* Полноширинная полоса меню (по центру) */
.site-menu{
  width:100%;
  background:var(--menubar);
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;
  padding:8px 0;
  margin-bottom:28px;
}
.nav-toggle{display:none}
.nav-hamburger{
  display:none;width:40px;height:40px;border-radius:10px;
  border:1.5px solid #c3cad6;background:#fff;
  cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:4px;flex:none;
}
.nav-hamburger span{width:18px;height:2px;border-radius:2px;background:#7a8296}

/* Пункты по центру, «Выйти» — справа (как во фрейме).
   1fr | auto | 1fr: боковые колонки равны, центральная группа не смещается. */
.nav-links{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;max-width:1500px;margin:0 auto;padding:0 32px}
.nav-group{grid-column:2;display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:center}
.nav-links a.nav-exit{grid-column:3;justify-self:end;color:var(--red)}
.nav-links a.nav-exit:hover{color:var(--red-dark);background:transparent}
.nav-links a{
  font:700 14px/1 var(--font);letter-spacing:.3px;color:#5d6678;
  padding:10px 16px;border-radius:999px;text-decoration:none;
  transition:background .15s,color .15s,box-shadow .15s;
}
.nav-group a:hover,
.nav-group a.active{background:rgba(255,255,255,.6);text-decoration:none}

@media(max-width:760px){
  /* Компактная шапка: логотип + гамбургер в одной строке, «Вы вошли как» — под ними */
  .site-header{padding:10px 16px;gap:6px 12px;flex-wrap:wrap;align-items:center}
  .site-logo{order:1}
  .site-logo img{height:auto;max-width:250px}
  .nav-hamburger{display:flex;order:2;margin-left:auto}
  .site-account{order:3;flex-basis:100%;align-items:flex-start;min-width:0}
  .site-user{overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:left}
  /* Полоса меню без гамбургера: не занимает высоту, пока меню закрыто */
  .site-menu{padding:0;background:transparent;margin-bottom:0}
  .nav-links{display:none;width:100%;max-width:none;padding:0;grid-template-columns:1fr;flex-direction:column;align-items:stretch}
  .nav-toggle:checked ~ .nav-links{display:flex;background:var(--menubar);padding:8px 16px}
  .nav-group{grid-column:1;flex-direction:column;align-items:stretch;width:100%}
  .nav-exit{grid-column:1;justify-self:stretch}
}

/* ============================ КНОПКИ ============================ */
button,
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--accent);color:#fff;
  border:none;border-radius:999px;
  height:42px;padding:0 24px;min-width:120px;
  font:700 15px/1 var(--font);letter-spacing:.2px;
  cursor:pointer;
  transition:background .15s,transform .05s,box-shadow .15s;
}
button:hover,.btn:hover{background:var(--accent-dark);text-decoration:none}
button:active,.btn:active{transform:translateY(1px)}
button:disabled,.btn:disabled{background:#c9cfda;cursor:not-allowed}

.btn-ghost,button.ghost{
  background:transparent;color:var(--ink);
  border:1.5px solid #c3cad6;
}
.btn-ghost:hover,button.ghost:hover{background:#fff;border-color:#aab2c0}

.btn-danger,button.danger{background:var(--red)}
.btn-danger:hover,button.danger:hover{background:var(--red-dark)}

.btn-success,button.success{background:var(--green)}
.btn-success:hover,button.success:hover{background:#2f8a59}

.btn-sm{height:34px;padding:0 16px;min-width:96px;font-size:14px}
.btn-block{width:100%}

/* ============================ ЧЕКБОКСЫ ============================ */
/* Активный чекбокс — сплошной оранжевый квадрат без галочки */
input[type="checkbox"]{
  appearance:none;-webkit-appearance:none;
  width:18px;height:18px;flex:none;vertical-align:middle;
  border:1.5px solid #c0c7d4;border-radius:5px;background:#fff;
  cursor:pointer;transition:background .12s,border-color .12s;
}
input[type="checkbox"]:checked{background:var(--accent);border-color:var(--accent)}
input[type="checkbox"]:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}

/* ============================ ПОЛЯ ФОРМ ============================ */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="date"],
input[type="datetime-local"],
input[type="search"],
select,
textarea{
  width:100%;
  height:44px;
  border-radius:var(--radius-sm);
  background:var(--island);
  border:1px solid var(--line);
  padding:0 14px;
  font:15px/1 var(--font);color:var(--ink);
  transition:border-color .15s,box-shadow .15s;
}
textarea{height:auto;min-height:96px;padding:12px 14px;line-height:1.5}
input::placeholder,textarea::placeholder{color:#a7aebd}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 3px var(--accent-soft);
}
select{
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238a93a5' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
  padding-right:36px;cursor:pointer;
}

/* Строка поля / стек полей */
.field,.input-row{margin-bottom:14px}
.field:last-child,.input-row:last-child{margin-bottom:0}

label{font-size:14px;color:var(--ink)}

/* Поле пароля с кнопкой-глазом */
.password-field{position:relative}
.password-field input{padding-right:46px}
.password-toggle{
  position:absolute;top:0;right:0;
  height:44px;width:44px;min-width:0;padding:0;
  background:transparent;border:none;color:#8a93a5;
  font-size:17px;line-height:1;cursor:pointer;
}
.password-toggle:hover{background:transparent;color:var(--ink)}

/* Тумблер (переключатель уведомлений) */
.switch{
  display:flex;align-items:center;gap:12px;
  padding:12px 0;cursor:pointer;
}
.switch+.switch{border-top:1px solid var(--ph2)}
.switch input{position:absolute;opacity:0;width:0;height:0}
.switch .slider{
  position:relative;width:42px;height:24px;border-radius:999px;
  background:#cfd5e0;flex:none;transition:background .15s;
}
.switch .slider::after{
  content:"";position:absolute;top:3px;left:3px;
  width:18px;height:18px;border-radius:50%;background:#fff;
  transition:left .15s;box-shadow:0 1px 2px rgba(0,0,0,.2);
}
.switch input:checked+.slider{background:var(--green)}
.switch input:checked+.slider::after{left:21px}
.switch input:focus-visible+.slider{box-shadow:0 0 0 3px var(--green-soft)}
.switch .switch-label{font-size:14px;color:var(--ink)}

/* ============================ ЧИПЫ / БЕЙДЖИ ============================ */
.chip{
  display:inline-block;
  font:600 13px/1 var(--mono);letter-spacing:.4px;text-transform:uppercase;
  padding:6px 11px;border-radius:999px;white-space:nowrap;
}
.chip.gray{background:var(--ph2);color:#6b7385}
.chip.need,.chip.accent{background:var(--accent-soft);color:#b06a14}
.chip.done,.chip.win{background:var(--green-soft);color:#237a4c}
.chip.live{background:var(--blue-soft);color:#2f5da8}
.chip.loss{background:var(--red-soft);color:#b03e2e}
.chip.draw{background:var(--ph2);color:#6b7385}

/* ============================ АВТОРИЗАЦИЯ (гостевой экран) ============================ */
.auth-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:24px;
  max-width:920px;margin:0 auto;align-items:stretch;
}
.auth-grid .island-title{font-size:16px;margin-bottom:20px}
.auth-grid input{height:52px}
.auth-actions{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:4px}
.auth-actions button{min-width:150px}
.forgot-link{font-size:14px;color:var(--muted)}
.forgot-link:hover{color:var(--accent-dark)}
/* Форма восстановления пароля. На десктопе — по центру под «Вход»/«Регистрация»,
   шириной в одну колонку. Порядок и полная ширина на мобиле — см. адаптив. */
.restore-box{margin:0}
.auth-grid #restorePasswordForm{grid-column:1/-1;max-width:calc((100% - 24px)/2);margin-inline:auto}
#restorePasswordForm .note{margin:0 0 5px}
#restorePasswordForm button[type="submit"]{display:flex;width:fit-content;margin:8px auto 0}
#authResult,#registerSuccessMessage{max-width:920px;margin:16px auto 0;text-align:center}
#registerSuccessMessage:not(.hidden){
  background:var(--green-soft);border-radius:var(--radius-sm);
  padding:14px 16px;color:#237a4c;
}

/* Register island: кнопка по контенту, по центру */
.auth-register button[type="submit"]{display:flex;width:fit-content;margin:8px auto 0}

/* ============================ ЛИЧНЫЙ КАБИНЕТ ============================ */
.user-card{
  display:flex;flex-wrap:wrap;gap:6px 28px;
  background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:20px 22px;margin-bottom:18px;
}
.user-card p{font-size:15px;color:var(--ink)}
.user-card p strong{color:var(--muted);font-weight:600;margin-right:4px}

/* Карточка профиля (фрейм 15): аватар · имя+почта · чипы ролей */
.cabinet-profile{display:flex;align-items:center;gap:16px}
.cabinet-avatar{width:52px;height:52px;border-radius:50%;flex:none;background:var(--ph2);color:#aab2c2;display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
.cabinet-avatar svg{width:38px;height:38px;display:block}
.cabinet-profile-info{display:flex;flex-direction:column;gap:3px;min-width:0}
.cabinet-name{font:800 18px/1.2 var(--font);color:var(--ink);overflow:hidden;text-overflow:ellipsis}
.cabinet-email{font:600 13px/1.3 var(--mono);letter-spacing:.2px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.cabinet-roles{display:flex;flex-direction:column;align-items:flex-end;gap:6px;margin-left:auto}
.chip.role-player{background:var(--blue-soft);color:#2f5da8}
.chip.role-capitan{background:#fdf3bf;color:#8a6a12}
.chip.role-admin{background:var(--red-soft);color:#b03e2e}
@media(max-width:600px){
  /* мобильный: имя и почта на всю ширину, чипы ролей — строкой под почтой */
  .cabinet-profile{flex-wrap:wrap}
  .cabinet-profile-info{flex:1 1 auto;min-width:0}
  .cabinet-roles{order:3;width:100%;flex-direction:row;align-items:center;flex-wrap:wrap;justify-content:flex-start;margin-left:0;gap:8px}
}

/* Тумблер уведомлений строкой: подпись слева, переключатель справа */
.switch--row{justify-content:space-between;gap:16px}
.switch--row .switch-label{margin-right:auto}

/* В кабинете формы-острова со своими действиями */
.cabinet-block button[type="submit"]{margin-top:6px}

/* ============================ ГЛАВНАЯ / ПРОГНОЗЫ ============================ */
/* Вкладки-острова по центру */
.tabs{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-bottom:22px}
.tab-button{
  background:#fff;color:var(--muted);
  border:1.5px solid transparent;border-radius:999px;box-shadow:var(--shadow);
  height:auto;min-width:0;padding:12px 24px;
  font:700 15px/1 var(--font);letter-spacing:.3px;cursor:pointer;
  transition:background .15s,color .15s,box-shadow .15s,border-color .15s;
}
.tab-button:hover{background:#fff;color:var(--ink)}
.tab-button.active{background:var(--accent-soft);border-color:var(--accent);color:#b06a14;box-shadow:none}

.tab-content{display:none}
.tab-content.active{display:block}
.tab-content>h2,.tab-content>h3,.tab-content>h4{color:var(--ink)}
.tab-content>h2{font-size:20px;margin:6px 0 16px}
.tab-content>h3{font-size:17px;margin:20px 0 12px}

/* Форма-фильтр (турнир/тур) */
.filter-form{
  display:flex;flex-wrap:wrap;gap:16px 24px;
  background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:18px 22px;margin-bottom:22px;
}
.filter-form>div{display:flex;flex-direction:column;gap:6px;flex:1;min-width:230px}
.filter-form label{font:600 13px/1 var(--font);letter-spacing:.4px;text-transform:uppercase;color:#7a8296}
.filter-form label strong{font-weight:600}
.filter-form p{font-size:13px;color:var(--muted);margin-top:2px}
.filter-form p span{color:var(--ink)}

/* Инлайн-селектор (турнир/тур одной строкой с чипами) — как во фрейме 01 */
.filter-form.filter-inline{align-items:center;gap:14px 20px;padding:16px 20px}
.filter-inline .fld-inline{display:flex;flex-direction:row;align-items:center;gap:12px;flex:1;min-width:280px}
.filter-inline .fld-inline .micro{flex:none}
.filter-inline .fld-inline select{flex:1;min-width:0;height:40px}
.filter-inline>.chip{flex:none;align-self:center}
/* Порядок на десктопе: турнир(1) · тур(2) · статус(3) на первой строке,
   чекбокс(4) переносится на вторую строку под выбор турнира. */
.filter-inline{flex-wrap:wrap}
.filter-inline .fld-inline{order:2}
.filter-inline .fld-tournament{order:1}
.filter-inline .filter-status{order:3}
.filter-inline .finished-toggle{order:4;flex:0 0 100%;display:flex;align-items:center;gap:8px;font:600 12px/1.3 var(--mono);letter-spacing:.4px;text-transform:uppercase;color:#9aa2b3;cursor:pointer;user-select:none}
.filter-inline .finished-toggle input[type="checkbox"]{flex:none;width:16px;height:16px;margin:0;cursor:pointer}
/* Чекбокс «Завершенные турниры» в панели капитана — под каждым выбором турнира. */
.tab-content .fld .finished-toggle{display:flex;align-items:center;gap:8px;margin-top:2px;font:600 12px/1.3 var(--mono);letter-spacing:.4px;text-transform:uppercase;color:#9aa2b3;cursor:pointer;user-select:none}
.tab-content .fld .finished-toggle input[type="checkbox"]{width:18px;height:18px;flex:none;margin:0}
/* Статус турнира + дедлайн/онлайн — вместе, на мобильных уходят на третью строку */
.filter-inline .filter-status{display:flex;flex-direction:row;align-items:center;gap:8px;flex:none;min-width:0;flex-wrap:wrap}

/* Блок «Твоя пара в туре» */
.your-pair-row{align-items:center;gap:12px;padding:2px 0}
.your-pair-name{flex:1;font-weight:700;color:var(--ink)}
/* Имена прижаты к счёту в центре: левое — вправо, правое — влево */
.your-pair-name:first-of-type{text-align:right}
.your-pair-name:last-of-type{text-align:left}
.your-pair-score{background:#797e89;color:#fff;font:800 16px/1 var(--mono);letter-spacing:1px;padding:8px 14px;border-radius:999px;flex:none;white-space:nowrap}
.your-pair-foot{align-items:center;flex-wrap:wrap;gap:8px}
.divider{height:1px;background:var(--line);margin:14px 0}

/* «Мои игры» — карточки как во фрейме 01 (заполняют ряд, «hot» — пунктиром) */
.carousel-wrapper{margin-bottom:-4px}
/* Внутренний отступ вмещает тень карточек целиком (blur 24 + offset 8 = 32px вниз),
   чтобы overflow-x не срезал её; отрицательный margin у обёртки сохраняет отступ. */
.quick-tours-container{display:flex;justify-content:flex-start;gap:12px;overflow-x:auto;padding:16px 18px 32px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.quick-tours-container::-webkit-scrollbar{display:none}
.tour-card{
  flex:0 0 auto;
  width:min(250px,100%);
  max-width:250px;
  background:var(--island);border-radius:14px;box-shadow:var(--shadow);
  border:1.5px solid transparent;
  padding:14px;text-decoration:none;color:var(--ink);
  display:flex;flex-direction:column;gap:8px;
  transition:transform .1s,box-shadow .15s;
}
.tour-card:hover{transform:translateY(-2px);text-decoration:none;box-shadow:0 12px 28px rgba(43,50,64,.12)}
.tour-card-tournament{font:600 14px/1.3 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tour-card-name{font:800 16px/1.2 var(--font);color:var(--ink)}
/* пара соперников: вы — соперник, прижата влево, не растянута */
.tour-card-pair{display:flex;align-items:center;justify-content:flex-start;gap:6px;max-width:100%;font:600 14px/1.2 var(--font);color:var(--ink)}
.tour-card-pair .tc-player{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tour-card-pair .tc-player:first-child{flex:none}
.tour-card-pair .tc-dash{flex:none;color:var(--muted)}
/* нижняя строка: дедлайн/счёт слева, чип статуса справа */
.tour-card-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px}
.tour-card-meta{display:flex;flex-direction:column;font:600 14px/1.2 var(--mono);letter-spacing:.2px;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.tour-card-foot .chip{flex:none}
/* «hot» — нужен прогноз: пунктирная акцентная рамка, прозрачный фон */
.tour-card.not-predicted{border:1.5px dashed var(--accent);box-shadow:none;background:transparent}
.tour-card.result-loss{opacity:.6}
.tour-card.result-skip{opacity:.7}

/* Сравнение пар тура — единый остров с заголовком внутри */
.pairs-compare{margin-bottom:18px}
.pairs-compare .pairs-list{background:transparent;box-shadow:none;padding:0;margin:0}
.pairs-compare .pairs-list+.pairs-list,
.pairs-compare h4+.pairs-list{margin-top:0}
.pairs-compare h4{text-align:center;margin:14px 0 6px;font-size:14px;color:var(--muted)}

/* Пары на тур */
.pairs-list{background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px 18px;margin-bottom:18px}
.pair-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:12px 4px;margin:0}
.pair-row+.pair-row{border-top:1px solid var(--ph2)}
/* Пара с текущим игроком — выделение */
.pair-row.me{background:var(--accent-soft);border-radius:10px;border-top-color:transparent;padding-left:12px;padding-right:12px}
.pair-row.me+.pair-row{border-top-color:transparent}
.user_w_l{text-align:right}
.user_w_r{text-align:left}
.pair-row .score{
  justify-self:center;background:#797e89;color:#fff;
  font:800 14px/1 var(--mono);letter-spacing:1px;
  padding:8px 14px;border-radius:999px;white-space:nowrap;
}
.pair-row .score.clickable{cursor:pointer}
.pair-row .score.clickable:hover{background:#3a4152}

/* Таблица сравнения прогнозов */
.comparison-content{margin:2px 0 12px;overflow-x:auto}
.table_compare_results{width:100%;border-collapse:collapse;border:1.5px solid var(--line);border-radius:12px;overflow:hidden;font-size:14px}
.table_compare_results th{background:#797e88;color:#fff;font:700 12px/1.2 var(--font);text-transform:uppercase;letter-spacing:.3px;padding:10px 12px;text-align:left}
.table_compare_results td{padding:9px 12px;text-align:left;border-top:1px solid var(--ph2)}
/* Прогнозы игроков (2-й и 4-й столбцы; результат — 3-й, посередине) — в одну строку с иконкой мяча */
.table_compare_results th:nth-child(2),
.table_compare_results th:nth-child(4),
.table_compare_results td:nth-child(2),
.table_compare_results td:nth-child(4){white-space:nowrap}
/* Результат — жёлтая пилюля, по центру своего столбца */
.table_compare_results td:nth-child(3){text-align:center;white-space:nowrap}
.table_compare_results th:nth-child(3){text-align:center}
/* Столбцы со ставками игроков и результатом — одинаковой ширины на десктопе */
.table_compare_results th:nth-child(2),
.table_compare_results th:nth-child(3),
.table_compare_results th:nth-child(4),
.table_compare_results td:nth-child(2),
.table_compare_results td:nth-child(3),
.table_compare_results td:nth-child(4){width:20%}
.table_compare_results tbody tr:nth-child(odd){background:var(--ph2)}
/* Короткие метки прогнозов (1/X/2…) — только на мобильных, чтобы таблица влезала без прокрутки */
.table_compare_results .cmp-short{display:none}
.correct-prediction{color:#44ae76;font-weight:700}
.incorrect-prediction{color:#c76051;font-weight:700}
/* Иконка мяча после исхода — в строку, нормального размера */
.goal-icon{width:14px;height:14px;vertical-align:middle;display:inline-block;margin-left:2px}

/* Форма прогноза / виртуальные прогнозы */
#predictionForm{
  background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:20px 22px;margin-bottom:20px;
}
.match-row{display:grid;grid-template-columns:1fr 200px;align-items:center;gap:14px;padding:10px 0}
/* Прогноз кнопками-пилюлями (1/X/2/1X/X2/12) */
.match-row.has-pick{grid-template-columns:1fr auto;gap:16px}
.pick-hidden-select{display:none}
.pick{display:flex;gap:6px}
.pick i{min-width:40px;height:30px;padding:0 6px;border-radius:8px;border:1.5px solid #ccd2de;background:#fff;font:700 14px/28px var(--font);text-align:center;font-style:normal;color:#8a93a5;cursor:pointer;transition:background .12s,border-color .12s,color .12s;user-select:none;white-space:nowrap}
.pick i:hover{border-color:#aab2c0;color:var(--ink)}
.pick i.on{background:var(--accent);border-color:var(--accent);color:#fff}
.pick i.disabled{opacity:.4;cursor:not-allowed;background:var(--ph2)}
.pick i.disabled:hover{border-color:#ccd2de;color:#8a93a5}
.match-row+.match-row{border-top:1px solid var(--ph2)}
.match-name{font-size:15px;color:var(--ink)}
.match-row select{height:42px}
/* Фора — круглый бейдж рядом с названием матча */
.fora{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:26px;
  height:26px;
  border-radius:50%;
  font:700 13px/1 var(--font);
  color:#fff;
  vertical-align:middle;
  margin:0 3px;
}
.table_compare_results .fora{
  width:22px;
  height:22px;
  font-size:11px;
}
.fora.fora-neg{background:var(--red)}
.fora.fora-pos{background:var(--green)}
/* Заголовок острова с прогнозом + дедлайн (как во фрейме) */
.predict-head{margin-bottom:12px}
/* Инфо про двойные прогнозы — чипами в новом стиле */
.doubles-info{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0}
/* Нижняя строка формы: кнопка + подпись */
.form-actions{gap:14px}
.form-actions button{margin-top:0}
.virtual_access{margin-top:12px;font-size:14px;color:var(--muted)}
#result{margin-top:14px}
/* Правая колонка «Виртуальные»: острова «Счёт пар» и «Виртуальная таблица» (фрейм 03) */
#virtual-scores-output{display:flex;flex-direction:column;gap:16px}
#virtual-scores-output .pairs-list{background:transparent;box-shadow:none;padding:0;margin:0}
#virtual-scores-output h4{text-align:center;margin:6px 0 4px;font-size:14px;color:var(--muted)}

/* Подтабы групп / плей-офф */
.group-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.group-tab-button{
  background:#fff;color:var(--muted);border-radius:999px;box-shadow:var(--shadow);
  padding:10px 18px;font:700 14px/1 var(--font);letter-spacing:.3px;text-decoration:none;border:1.5px solid transparent;
  transition:background .15s,color .15s;
}
.group-tab-button:hover{text-decoration:none;color:var(--ink)}
.group-tab-button.active{background:var(--accent-soft);border:1.5px solid var(--accent);color:#b06a14;box-shadow:none}

/* Таблица результатов (турнирная) */
.table_rezult{
  width:100%;border-collapse:collapse;
  background:var(--island);border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow);margin-bottom:22px;font-size:14px;
}
.table_rezult thead th{
  background:#797e88;color:#fff;
  font:700 12px/1.2 var(--font);letter-spacing:.3px;
  padding:11px 6px;text-align:center;white-space:nowrap;
}
.table_rezult tbody td{padding:10px 6px;text-align:center;border-top:1px solid var(--ph2);color:#5d6678}
.table_rezult tbody td:nth-child(2){text-align:left;color:var(--ink);font-weight:600}
.table_rezult tbody td.pts-col{color:var(--ink);font-weight:800}
.table_rezult tbody tr:nth-child(odd) td{background:var(--ph2)}
/* Строка текущего игрока — выделение как во фрейме 02 */
.table_rezult tbody tr.me-row td{background:var(--accent-soft)}
.table_rezult tbody tr.me-row td:nth-child(2){color:#b06a14}

/* Сетка плей-офф */
.pb-wrap{overflow-x:auto;padding-bottom:10px}
.pb-bracket{display:flex;gap:20px;min-width:min-content}
/* Заголовок и пары идут вместе (заголовок над первой парой), вся группа центрируется */
.pb-stage{display:flex;flex-direction:column;gap:12px;min-width:200px;justify-content:center}
/* Названия стадий — как во фрейме: серый моношрифт по центру, без подчёркивания */
.pb-stage-title{font:600 13px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.4px;color:#9aa2b3;text-align:center}
.pb-stage-title.pb-stage-live{color:#b06a14}
/* Пары идут вплотную (gap как в первой стадии), без растягивания по высоте */
.pb-stage-matches{display:flex;flex-direction:column;gap:12px}
.pb-match{background:var(--island);border-radius:12px;box-shadow:var(--shadow);border:1px solid var(--line);overflow:hidden}
.pb-game{display:flex;flex-direction:column}
.pb-player{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;font-size:14px;color:var(--ink)}
.pb-player+.pb-player{border-top:1px solid var(--ph2)}
.pb-player-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-score{font:800 14px/1 var(--mono);color:var(--ink);flex:none}
.pb-score-live{color:var(--accent)}
.pb-player-winner{background:var(--green-soft)}
.pb-player-winner .pb-player-name{font-weight:700;color:#237a4c}
.pb-player-loser{color:#9aa2b3}
.pb-player-tbd{color:#9aa2b3}
.pb-player-preview{color:#7a8296}
.pb-preview-label{font-size:11px;color:#9aa2b3;text-align:center;padding:4px;text-transform:uppercase;letter-spacing:.4px}

/* Две колонки: игры слева, таблицы справа (фрейм 01) */
.main-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:16px;align-items:start}
.col-stack{display:flex;flex-direction:column;gap:16px;min-width:0}
.main-grid .col-stack>*{margin-bottom:0}

/* Компактная турнирная таблица (строки-острова) */
.trow{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--ph2)}
.trow:last-child{border-bottom:none}
.trow.me{background:var(--accent-soft);border-radius:8px;border-bottom-color:transparent}
.pos{width:26px;font:700 14px/1 var(--mono);color:#9aa2b3;text-align:center;flex:none}
.cell{width:32px;text-align:center;font:600 14px/1 var(--mono);color:#6b7385;flex:none}
.cell.pts{color:var(--ink);font-weight:800}
.cell.micro,.pos.micro{color:#9aa2b3}
.grow,.micro.grow{flex:1;min-width:0}
/* Имя игрока в компактной таблице: одна строка, при нехватке места — многоточие */
.tname{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detailed-link{margin-left:auto;color:var(--accent-dark);font-weight:700;font-size:14px}
/* Пилюли-переключатели групп в мини-таблице и виртуальной таблице (без перезагрузки) */
.pred-group-tab,.virt-group-tab{cursor:pointer;user-select:none;text-decoration:none}
.pred-standings-group[hidden]{display:none}
/* Мини-сетка плей-офф в правой колонке — компактнее */
.col-stack .pb-bracket{gap:14px}
.col-stack .pb-stage{min-width:150px}

/* Пустые состояния */
.tab-content>p{color:var(--muted);padding:12px 2px}

/* ==================== СТАТИСТИКА: «Моя статистика» ==================== */
.stat-my-title{margin:4px 4px 10px}
.stat-my-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}
.stat-tile{
  background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:16px 18px;display:flex;flex-direction:column;gap:8px;
}
.stat-tile-label{font:600 13px/1.3 var(--mono);letter-spacing:.4px;text-transform:uppercase;color:#9aa2b3}
.stat-tile-value{font:800 24px/1.1 var(--font);color:var(--ink)}
.stat-tile-sub{font:600 14px/1 var(--font);color:var(--muted)}
.stat-tile-bar{height:8px;border-radius:6px;background:var(--ph2);overflow:hidden}
.stat-tile-bar i{display:block;height:100%;border-radius:6px;background:var(--accent)}
@media (max-width:900px){.stat-my-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.stat-my-grid{grid-template-columns:1fr}}

/* ============================ КАЛЕНДАРЬ ============================ */
.calend-selector{
  background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:18px 22px;
  display:flex;flex-direction:column;gap:8px;max-width:520px;
  margin: 0 auto 22px;
}
.calend-selector label{font:600 13px/1 var(--font);letter-spacing:.4px;text-transform:uppercase;color:#7a8296}
/* туры от первого к последнему, в 2 колонки */
.calend-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.calend-block{background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}
.calend-block--live{border:1.5px solid var(--accent)}
.calend-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.calend-round-title{font:700 14px/1.2 var(--font);letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin:0}
.calend-round-title--playoff{color:var(--blue)}
.calend-deadline{font:600 13px/1.4 var(--mono);letter-spacing:.3px;color:var(--muted);margin-bottom:12px}
.calend-deadline--live{color:#b06a14}
.calend-no-pairs,.calend-empty{color:var(--muted);padding:8px 0}
.calend-table{width:100%;border-collapse:collapse;border:1.5px solid var(--line);border-radius:12px;overflow:hidden;font-size:14px;margin-top:8px}
.calend-table thead th{background:#797e88;color:#fff;font:700 12px/1.2 var(--font);text-transform:uppercase;letter-spacing:.3px;padding:9px 12px;text-align:left}
.calend-table thead th:last-child{text-align:center}
.calend-table tbody td{padding:9px 12px;border-top:1px solid var(--ph2);color:var(--ink)}
.calend-table tbody td.calend-group{color:#9aa2b3;white-space:nowrap;width:1%}
.calend-match{color:var(--ink)}
.calend-table tbody tr.calend-match-row--me td{background: var(--accent-soft);}
.calend-table tbody tr.calend-match-row--me .calend-match{font-weight:700}
/* плей-офф — всегда с новой строки, отдельной секцией */
.calend-grid-break{grid-column:1/-1;display:flex;align-items:center;gap:14px;margin:8px 2px 0}
.calend-grid-break span{font:800 14px/1 var(--font);letter-spacing:.8px;text-transform:uppercase;color:var(--blue)}
.calend-grid-break:after{content:"";flex:1;height:2px;border-radius:2px;background:var(--blue-soft)}
.calend-score{white-space:nowrap;width:1%;text-align:center}
.calend-score-pill{display:inline-block;font:800 14px/1 var(--mono);color:var(--ink);padding:5px 9px;border-radius:8px}
.calend-score-pill--tbd{background:var(--ph2);color:#6b7385;font-weight:700}
.calend-game-num{color:var(--muted);font-size:12px;font-weight:600}
@media (max-width:720px){.calend-grid{grid-template-columns:1fr}}

/* ============================ АДМИН-ПАНЕЛЬ ============================ */
.container>h2{margin:28px 0 16px;font-size:20px;color:var(--ink)}

/* Пользователи и роли — строками, без шапки таблицы (фрейм 14) */
.admin-user-list{gap:0}
.admin-user-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--ph2)}
.admin-user-row:first-child{border-top:none}
.admin-user-info{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;min-width:150px}
.admin-user-name{font:700 15px/1.2 var(--font);color:var(--ink)}
.admin-user-email{font:400 13px/1.3 var(--mono);color:var(--muted)}
.admin-user-reg{font:400 13px/1.3 var(--mono);letter-spacing:.3px;color:#9aa2b3;white-space:nowrap}
.admin-user-roles{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-left:auto}
.admin-user-row .btn-sm{flex:none}

/* Кастомный чекбокс роли — как во фрейме (акцентный квадрат при выборе) */
.admin-role{position:relative;display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--ink);white-space:nowrap;cursor:pointer;user-select:none}
.admin-role input{position:absolute;opacity:0;width:0;height:0}
.admin-check{width:18px;height:18px;border-radius:5px;border:1.5px solid #c0c7d4;background:#fff;flex:none;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}
.admin-role input:checked + .admin-check{background:var(--accent);border-color:var(--accent)}
.admin-role input:focus-visible + .admin-check{box-shadow:0 0 0 3px var(--accent-soft)}

@media(max-width:600px){
  /* Мобильный вид: вся информация друг под другом, роли — на всю ширину */
  .admin-user-row{flex-direction:column;align-items:stretch;gap:12px}
  .admin-user-info{flex-direction:column;gap:3px}
  .admin-user-roles{margin-left:0;width:100%;flex-wrap:nowrap;justify-content:space-between;gap:8px}
  .admin-user-row .btn-sm{width:100%}
}

/* Опасная зона */
.admin-danger-island{border:1.5px solid #ecc7c0;background:#fdf7f6}
.admin-danger-island .island-title{color:#b03e2e}
.admin-danger-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.admin-danger-row{display:flex;align-items:center;gap:10px}
.admin-danger-row select{flex:1;min-width:0;margin:0}
.admin-danger-row .btn-danger{flex:none}
@media(max-width:760px){.admin-danger-grid{grid-template-columns:1fr}}
.admin-delete-forms{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:26px}
.delete-form-section{background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px}
.delete-form-section h3{font-size:16px;color:var(--ink);margin-bottom:14px}
.delete-form-section label{display:block;font:600 13px/1 var(--font);letter-spacing:.4px;text-transform:uppercase;color:#7a8296;margin-bottom:6px}
.delete-form-section select{margin-bottom:14px}
.admin-users td,.admin-users th{text-align:left}
.roles-edit{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}
.roles-edit label{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--ink);white-space:nowrap}
.roles-edit input[type="checkbox"]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
.btn-compact{height:34px;padding:0 16px;min-width:0;font-size:14px}

/* ============================ КАПИТАН / ПЛЕЙ-ОФФ ============================ */
/* Раскладка вкладки: слева меню блоков, справа острова (фреймы 09–12) */
.side-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px;align-items:start}
.side-nav{display:flex;flex-direction:column;gap:6px;position:sticky;top:16px}
.side-label{font:700 13px/1 var(--font);letter-spacing:.4px;color:#9aa2b3;text-transform:uppercase;margin:2px 4px 4px}
.side-item{min-height:38px;border-radius:10px;background:#eef0f4;display:flex;align-items:center;padding:8px 14px;font:600 14px/1.3 var(--font);color:#6b7385;box-shadow:var(--shadow-sm);cursor:pointer;transition:background .12s,color .12s}
.side-item:hover{color:var(--ink)}
.side-item.on{background:#d4d9e2;border:1.5px solid #aab2c0;color:var(--ink);box-shadow:none}
.col-stack{display:flex;flex-direction:column;gap:16px;min-width:0}
.col-stack>.block{margin-bottom:0}
.block-title{font:800 16px/1.2 var(--font);color:var(--ink);padding-bottom:8px;border-bottom:3px solid var(--accent);margin-bottom:14px;display:inline-block}
.divider{height:1px;background:var(--line);margin:14px 0}
@media(max-width:900px){
  /* мобильный: меню островов — горизонтальная лента пилюль (фрейм 13) */
  .side-layout{grid-template-columns:1fr}
  .side-nav{position:static;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:8px;padding:2px 2px 6px;scrollbar-width:none}
  .side-nav::-webkit-scrollbar{display:none}
  .side-label{display:none}
  .side-item{flex:none;white-space:nowrap;min-height:0;padding:8px 14px;border-radius:999px;background:#eef0f4;box-shadow:var(--shadow-sm)}
  .side-item.on{background:#d4d9e2;border:1.5px solid #aab2c0;box-shadow:none}
}

/* Блок-секция вкладки */
.block{background:var(--island);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:18px}
.block .block{background:#f7f8fb;box-shadow:none;border:1px solid var(--line);margin-top:16px}
.block>h2{font-size:18px;color:var(--ink);margin-bottom:16px;padding-bottom:8px;border-bottom:3px solid var(--accent);display:inline-block}
.block h3{font-size:15px;color:var(--ink);margin:16px 0 10px}
.block hr{border:none;border-top:1.5px dashed #d5dae4;margin:18px 0}

/* Поля форм внутри блоков */
.block form>label{display:block;margin:14px 0 6px;font:600 14px/1.3 var(--font);color:#5d6678}
.block form>label:first-of-type{margin-top:0}
.block form input,.block form select{margin-bottom:2px}
.block form>button,.block form p>button{margin:14px 10px 0 0}
.block p{font-size:14px;color:var(--muted)}
.block p strong{color:var(--ink)}
.block p.small{font-size:13px}

/* Итоги матчей: выбор турнира и тура — выделенная панель, в одну строку (десктоп) */
.results-selectors{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;align-items:start;background:var(--ph2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:16px 18px;margin-bottom:18px}
.results-selectors .fld{display:flex;flex-direction:column;gap:6px}
.results-selectors .fld label{margin:0;font:600 13px/1 var(--font);letter-spacing:.4px;text-transform:uppercase;color:#7a8296}
.results-selectors .fld select{margin:0;width:100%}
@media(max-width:720px){.results-selectors{grid-template-columns:1fr}}

/* «Создать тур»: префикс «Групповой этап. Тур» слева от поля ввода номера */
.create-tour-name-row{display:flex;align-items:center;gap:8px}
.create-tour-name-row #create-tour-prefix-wrapper{flex:none;white-space:nowrap;color:var(--muted);font-size:14px}
.create-tour-name-row input{flex:1;min-width:0}

/* Двухколоночная сетка полей в блоках капитанки (фреймы 10–12) */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px;align-items:start}
.block .fld{display:flex;flex-direction:column;gap:6px;margin:0}
.block .fld>label{display:block;margin:0;font:600 13px/1.2 var(--font);letter-spacing:.3px;text-transform:none;color:#7a8296}
.block .fld input,.block .fld select{margin:0;width:100%}
.tour-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.tour-actions button{margin:0}

/* Уже добавленные матчи — строка матча с инструментами и inline-редактированием */
.existing-match-item{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:3px 0;list-style:none}
.existing-match-tools{display:inline-flex;align-items:center;flex-shrink:0}
.existing-match-edit{align-items:center;gap:6px}
input.existing-match-edit-input{width:220px;height:36px;padding:0 10px}
@media(max-width:640px){
  .existing-match-edit{flex-basis:100%;margin-top:4px}
  input.existing-match-edit-input{width:auto;flex:1;min-width:0}
}
/* Круглые иконочные кнопки строки матча */
.match-icon-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;min-width:0;padding:0;margin-left:8px;
  border:none;border-radius:50%;
  font:15px/1 var(--font);cursor:pointer;
  transition:filter .15s,opacity .15s;
}
.match-icon-btn:hover{filter:brightness(.94)}
.match-icon-btn:disabled{opacity:.5;cursor:not-allowed}
.match-icon-btn.match-icon-btn--delete{background:var(--red-soft);color:#c0392b}
.match-icon-btn.match-icon-btn--edit{background:var(--blue-soft);color:#2c7bb6}
.match-icon-btn.match-icon-btn--save{background:var(--green-soft);color:#27ae60}
.match-icon-btn.match-icon-btn--cancel{background:#edf0f5;color:#888}
.tour-status-chips{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px;padding-top: 10px;}
.groups-names-title{margin:18px 0 10px}
@media(max-width:720px){.form-grid{grid-template-columns:1fr}}

/* Пары для сравнения — два острова рядом (фрейм 11) */
.pair-compare-grid{align-items:start}
.pair-compare-grid .island{margin-bottom:0;box-shadow:none}
.pair-compare-grid .island.dashed{background:transparent;border:1.5px dashed #c9cfda}
.pair-compare-grid .pair-existing{border:1px solid var(--line)}
/* «Добавить новую пару»: два селекта в ряд с «vs» (фрейм 11) */
.pair-add-row{gap:10px}
.pair-add-row .grow{min-width:0}
.pair-add-vs{flex:none}
@media(max-width:600px){
  /* мобильный: селекты игроков друг под другом, «vs» по центру.
     flex:1 в колонке схлопывает высоту (basis:0) — отключаем рост. */
  .pair-add-row{flex-direction:column;align-items:stretch}
  .pair-add-row .grow{flex:0 0 auto}
  .pair-add-vs{align-self:center}
}
/* «Существующие пары»: компактные строки, одинаковые минимальные отступы */
.pair-list{gap:0}
.pair-list-row{padding:5px 0;border-bottom:1px solid var(--ph2)}
.pair-list-row:first-child{padding-top:0}
.pair-list-row:last-child{border-bottom:none;padding-bottom:0}
.pair-list-row form{display:flex;margin:0}
/* уникальный селектор, чтобы перебить .block form>button{margin:14px} и не задеть другие кнопки */
.pair-existing .pair-list-row .pair-del-btn{margin:0}

/* Блок «Закрыть/открыть тур» — красный остров снизу (фрейм 09) */
.block--danger{background:#fdf7f6;border:1.5px solid #ecc7c0}
.block--danger>h2{color:#b03e2e;border-bottom-color:#e6b9b1}
.block--danger .close-tour-row{flex-wrap:wrap;gap:12px}
.block--danger .close-tour-row .note{flex:1;min-width:200px}
.block--danger .close-tour-row button{margin:0}

/* Красная кнопка удаления */
.delete-button{background:var(--red)}
.delete-button:hover{background:var(--red-dark)}

/* Критерии сортировки (drag&drop) */
#sortable-criteria{list-style:none;margin:10px 0 16px;padding:0;display:flex;flex-direction:column;gap:6px}
#sortable-criteria li{background:var(--ph2);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-size:14px;color:var(--ink);cursor:grab;display:flex;align-items:center;gap:10px}
#sortable-criteria li::before{content:"⋮⋮";color:#aab2c2;letter-spacing:-2px;flex:none}
#sortable-criteria li:hover{background:#e6e9f0}

/* Выбор состава (roster) */
.roster-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:12px 0}
.roster-search{flex:1;min-width:180px}
.roster-select-all,.roster-deselect-all{height:38px;padding:0 14px;min-width:0;font-size:14px;background:transparent;color:var(--ink);border:1.5px solid #c3cad6}
.roster-select-all:hover,.roster-deselect-all:hover{background:#fff;border-color:#aab2c0}

/* Список игроков с чекбоксами */
/* Списки игроков — сетка колонок (фрейм 10/13): 4 → 3 → 2 по мере сужения */
.user-list,.user-access-list{max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--island);padding:6px;margin:8px 0;display:grid;grid-template-columns:repeat(4,1fr);gap:0 10px}
.user-list label,.user-access-list label{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;font-size:14px;color:var(--ink);cursor:pointer;margin:0;min-width:0}
.user-list label .user-label-name,.user-list label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-list label:hover,.user-access-list label:hover{background:var(--ph2)}
.user-list input[type="checkbox"],.user-access-list input[type="checkbox"]{width:16px;height:16px;flex:none}
@media(max-width:1000px){.user-list,.user-access-list{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.user-list,.user-access-list{grid-template-columns:repeat(2,1fr)}}
.user-group-badge{color:var(--muted)}
.group-count-line{margin-top:10px}
.group-count{color:var(--ink);font-weight:700}
.access-group-section{margin-top:20px}
.access-group-section>strong{display:inline-block;color:var(--ink);margin-bottom:4px}

/* Добавление матчей — в одну строку на десктопе (фрейм 11) */
.add-match-row{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;margin-bottom:10px}
.add-match-row .match-team1,.add-match-row .match-team2{flex:1;min-width:0}
.add-match-row .match-fora{width:130px;flex:none}
.match-separator{color:var(--muted);font-weight:700;flex:none}
@media(max-width:600px){
  /* мобильный (фрейм 13): «Команда 1 + Фора» в строке, «Команда 2» — под ними */
  .add-match-row{flex-wrap:wrap;align-items:center;gap:8px}
  .add-match-row .match-team1{flex:1 1 0;min-width:0;width:auto}
  .add-match-row .match-fora{flex:0 0 auto;width:auto;min-width:100px}
  .add-match-row .match-separator{display:none}
  .add-match-row .match-team2{flex:1 1 100%;min-width:0}
  .add-match-row .match-team1,.add-match-row .match-team2,.add-match-row .match-fora{height:44px}
}

/* Пары на тур (капитан — без счёта) */
.pairs-list p:not(.pair-row){display:flex;justify-content:center;align-items:center;gap:10px;text-align:center;padding:11px 4px;margin:0;font-weight:600}
.pairs-list p:not(.pair-row)+p{border-top:1px solid var(--ph2)}

/* Настройки плей-офф в форме создания */
#playoff_settings_container{background:#efe9d6;border-radius:var(--radius-sm);padding:14px 16px;margin:12px 0}
#playoff_settings_container input{background:#fff}

/* Карточки стадий плей-офф — по 3 в ряд, адаптивно, без жёлтого (фрейм 12) */
.playoff-blocks-container{display:flex;flex-direction:column;gap:0}
#playoff-round-matches-settings{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.playoff-stage-block{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0}
.playoff-stage-name{font:700 14px/1.2 var(--font);color:var(--ink);margin-bottom:10px}
.playoff-stage-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px}
.playoff-stage-field{display:flex;flex-direction:column;gap:5px}
.playoff-stage-field label{font-size:12px;color:#7a8296;margin:0}
.playoff-stage-field input{background:#fff}
.playoff-stage-auto-grid{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font-size:13px;color:var(--ink)}
.playoff-pair-results{margin-top:1rem}
@media(max-width:1000px){#playoff-round-matches-settings{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){#playoff-round-matches-settings{grid-template-columns:1fr}}

/* «Создать плей-офф»: турнир + стадия в одной панели (display:contents) */
.ps-contents{display:contents}

/* «Доступ участников» + «Результаты группы» — рядом; на мобиле друг под другом */
.playoff-access-grid{align-items:start}
.playoff-access-grid>.block{margin-bottom:0}

/* «Все стадии»: дедлайн и лимиты — в одну строку на десктопе, без жёлтого */
.all-stages-actions{display:flex;flex-wrap:wrap;gap:14px 28px;align-items:flex-end;margin-top:14px}
.all-stages-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:0}
.all-stages-form .fld{margin:0}
.all-stages-form button{margin:0}
.po-dead-but {margin: 0 0 5px!important;}
@media(max-width:700px){
  /* формы (дедлайн / лимиты) друг под другом; внутри — поля в строке,
     двойники хоз/гос в одну строку, кнопки по содержимому (не на всю ширину) */
  .all-stages-actions{flex-direction:column;align-items:stretch;gap:16px}
  .all-stages-form{align-items:flex-end}
  .all-stages-form .fld[style*="min-width:220px"]{flex:1 1 100%}
}

/* Групповые результаты для посева плей-офф */
.standings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-top:10px}
.standings-group-title{font:800 15px/1.2 var(--font);color:var(--ink);margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid var(--accent);display:inline-block}

/* ============================ АДАПТИВ ============================ */
@media(max-width:720px){
  .auth-grid{grid-template-columns:1fr}
  /* На мобиле форма восстановления пароля всплывает сразу после «Вход»,
     а не в самом конце: #loginForm(0) → restore(1) → register(2) */
  .auth-grid #restorePasswordForm{order:1;max-width:none;margin-inline: initial;}
  .auth-grid .auth-register{order:2}
  .container{padding:24px 16px 64px}
  .match-row{grid-template-columns:1fr;gap:8px}
  .match-row.has-pick{grid-template-columns:1fr}
  /* Кнопки исходов — одинаковой ширины, во всю строку, с равными промежутками */
  .match-row.has-pick .pick{justify-content:stretch}
  .match-row.has-pick .pick i{flex:1;min-width:0}
  .match-row select{width:100%}
  .filter-form>div,.filter-inline .fld-inline{min-width:100%}
  .filter-inline .fld-inline select{flex:1}
  /* На мобиле: турнир(1) · тур(2) · чекбокс(3) · статус(4) — каждый на своей строке */
  .filter-inline .finished-toggle{order:3}
  /* Статус + дедлайн/онлайн — последняя строка, в одну строку */
  .filter-inline .filter-status{order:4;min-width:100%;flex-wrap:nowrap}
  .table_rezult{display:block;overflow-x:auto;white-space:nowrap}
  /* Таблица сравнения пар на мобильных — карточками, без горизонтальной прокрутки:
     короткие метки прогнозов (1/X/2…), матч на своей строке, прогнозы и результат
     на следующей строке в три равные колонки. */
  .table_compare_results .cmp-full{display:none}
  .table_compare_results .cmp-short{display:inline}
  .table_compare_results,.table_compare_results thead,.table_compare_results tbody{display:block;width:100%}
  .table_compare_results thead tr{display:flex;gap:8px;padding:8px 12px}
  .table_compare_results thead th{display:block;background:transparent;padding:0;font-size:10px;line-height:1.3;flex:1;min-width:0;text-align:center;white-space:normal}
  .table_compare_results thead th:first-child{display:none}
  .table_compare_results tbody tr{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;border-top:1px solid var(--ph2)}
  .table_compare_results tbody tr:first-child{border-top:none}
  .table_compare_results td{display:block;padding:0;border-top:none}
  .table_compare_results td:first-child{flex:0 0 100%;font-weight:600;color:var(--ink);text-align:center;white-space:normal;overflow-wrap:break-word;word-break:normal}
  .table_compare_results td:nth-child(2),
  .table_compare_results td:nth-child(3),
  .table_compare_results td:nth-child(4){flex:1;min-width:0;text-align:center}
  /* Мини-таблица и виртуальная таблица: имя игрока целиком (не сжимается), а столбцы
     показателей — резиновые (от 10 до 32px), чтобы всё умещалось на экране без скролла;
     если даже при 10px не влезает (очень длинное имя) — горизонтальный скролл. */
  .pred-standings-island .pred-standings-group,
  .virt-standings-island .virt-standings-group{overflow-x:auto}
  .pred-standings-island .trow,.pred-standings-island .trow-head,
  .virt-standings-island .trow,.virt-standings-island .trow-head{min-width:100%;width:max-content;max-width:100%}
  /* Имя игрока: фиксированная ширина (одинаковая во всех строках), чтобы столбцы
     показателей были выровнены. Запас +2ch — жирная кириллица шире, чем ch-оценка;
     если имя всё же длиннее — обрезаем многоточием, а не ломаем выравнивание. */
  .pred-standings-island .grow.tname,
  .virt-standings-island .grow.tname{flex:0 0 calc(var(--tname-w,120px) + 2ch);width:calc(var(--tname-w,120px) + 2ch);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pred-standings-island .micro.grow,
  .virt-standings-island .micro.grow{flex:0 0 calc(var(--tname-w,120px) + 2ch);width:calc(var(--tname-w,120px) + 2ch);min-width:0}
  .pred-standings-island .cell,.pred-standings-island .cell.micro,
  .virt-standings-island .cell,.virt-standings-island .cell.micro{width:auto;flex:0 1 32px;min-width:10px;max-width:32px}
  /* padding даёт место тени кнопок (overflow-x иначе срезает её в резкую линию),
     отрицательный margin-top компенсирует его, чтобы отступ сверху не вырос */
  .tabs{gap:8px;flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:16px 4px 32px;margin-top:-16px;margin-bottom:-10px}
  .tabs::-webkit-scrollbar{display:none}
  .tab-button{padding:10px 16px;font-size:13px;flex:none;white-space:nowrap}
  .admin-delete-forms{grid-template-columns:1fr}
}
@media(max-width:900px){
  .main-grid{grid-template-columns:1fr}
}