:root { --header-h: 56px; }
:root{
  --bp-sm: 600px;
  --bp-md: 768px;   /* już używasz */
  --bp-lg: 1024px;
  --bp-xl: 1280px;
  
  --gm-row-h: 32px;
  
  --board-max-desktop: 480px;
  --board-min-desktop: 320px;
  --evalbar-w: 18px;   /* szerokość pionowego paska oceny */
  --board-gap: 8px;    /* odstęp między planszą a paskiem */ 
  
  /* responsywna typografia – przykład */
  --fs-h2: clamp(20px, 2.5vw, 28px);
  --fs-body: clamp(14px, 1.4vw, 16px);
  
  --active-border: #68b345;
  --active-glow: 0 0 0 2px rgba(104,179,69,0.18);
  
  --board-size: clamp(300px, 55vh, 520px);
  --evalbar-w: 18px;
}

/* helpery widoczności */
.only-mobile  { display: inline; }
.only-desktop { display: none;}

@media (min-width: 768px) {
  .only-mobile  { display: none !important; }
  .only-desktop { display: inline !important; transition: transform 0.3s ease, box-shadow 0.3s ease;}
  
  .only-desktop:hover {
	filter: drop-shadow(0 3px 6px rgba(0, 200, 0, 0.4));
	transform: translateY(-3px);
	transition: 0.3s ease;
  }
}

/* DESKTOP (≥1024): kolumna lewa + prawa */
@media (min-width: 1024px){
  .main-layout{
    grid-template-columns: 220px 1fr;
    grid-template-areas:
      "sidebar content";
    align-items: start;
  }
  .sidebar{
    display: block;
    grid-area: sidebar;
    width: 100%;        /* szerokość kontroluje siatka */
    margin: 0;          /* siatka trzyma odstępy 'gap' */
    position: sticky;   /* żeby „trzymał się” przy scrollu */
    top: var(--header-h); 
  }
  .content{
    grid-area: content;
  }
}



/* globalna responsywna typografia (opcjonalnie) */
h2 { font-size: var(--fs-h2); }
body { font-size: var(--fs-body); }


html,
body {
	font-family: 'Poppins', sans-serif;
	height: 100%;
}

body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
button,
input,
select,
textarea {
	font-family: 'Poppins', sans-serif;
}

.header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	height: var(--header-h);
	background-color: #2c3e50;
	box-sizing: border-box;
}

/* Hidden utility class */
.hidden {
	display: none !important;
}

/* Główne elementy */
body {
	font-family: 'Poppins', sans-serif;
	background-color: #fafafa;
	margin: 0;
	padding: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

/* marka (możesz podmienić na obrazek) */
.brand {
  color: #ecf0f1; text-decoration: none; font-weight: 600; letter-spacing: .2px;
}

.brand img {
  height: calc(var(--header-h) - 10px);  /* zapas na oddech */
  width: auto;
  display: block;
}

/* przycisk hamburger */
.nav-toggle{
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  width: 36px; height: 36px;
  border: 0; background: transparent; color: #ecf0f1; cursor: pointer;
}
.nav-toggle__bar{
  display:block; width: 22px; height: 2px; background: #ecf0f1; border-radius: 1px;
  transition: transform .2s ease, opacity .2s ease;
}

/* animacja na stanie otwartym */
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1){ transform: translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2){ opacity: 0; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3){ transform: translateY(-6px) rotate(-45deg); }

/* panel nawigacji – MOBILE FIRST: off-canvas pod belką */
.site-nav{
  position: fixed;
  left: 0; right: 0; top: var(--header-h);
  background: #ffffff; color: #2c3e50;
  transform: translateY(-8px); /* ukryte tuż pod headerem */
  opacity: 0; pointer-events: none;
  transition: transform .2s ease, opacity .2s ease;
  box-shadow: 0 8px 20px rgba(0,0,0,.15);
  z-index: 999;
  padding: 12px 16px;
}

/* stan otwarty nadpisujemy klasą z JS */
.site-nav.is-open{
  transform: translateY(0);
  opacity: 1; pointer-events: auto;
}

/* układ pionowy na mobile */
.site-nav .navigation{
  display: flex; flex-direction: column; gap: 8px; list-style: none; margin: 0; padding: 0;
}
.site-nav .navigation a{
  display: block; padding: 10px 6px; border-radius: 6px; color: #2c3e50; text-decoration: none;
}
.site-nav .navigation a:hover{ background: #f3f6ef; }

/* sekcja dodatków (język + logowanie) też pionowo */
.site-nav .nav-aux{
  display: grid; gap: 10px; align-items: center;
}

/* blokada przewijania tła, gdy panel otwarty */
body.nav-open { overflow: hidden; }

/* DESKTOP (>=768 px): klasyczny pasek bez burgera i bez panelu */
@media (min-width: 768px){
  .nav-toggle{ display: none; }
  .site-nav{
    position: static; transform: none; opacity: 1; pointer-events: auto;
    background: transparent; box-shadow: none; padding: 0;
	display:grid; grid-template-columns: 1fr auto;  align-items:center;
  }
  .site-nav[hidden]{ display: flex; } /* nadpisz atrybut hidden po inicjalizacji */

  .site-nav .navigation{
    flex-direction: row; gap: 16px; justify-content:start;
  }
  .site-nav .navigation a{ color: #ecf0f1; padding: 4px 8px; }
  .site-nav .navigation a:hover{ background: transparent; color: #8DC63F; }

  .site-nav .nav-aux{
    display:inline-flex; gap:14px; justify-self:end;
  }
  .navigation li {
  	margin-right: 15px;
  }

  .navigation a {
  	color: #ecf0f1;
  	text-decoration: none;
  	font-size: 18px;
  	transition: color 0.3s;
  }

  .navigation a:hover {
  	color: #8DC63F;
  }
}

.top-bar {
	height: 100%;
	display: flex;
	align-items: center;
	background-color: #2c3e50;
	padding: 8px 20px;
	color: white;
}
.top-bar .container {
  min-height: var(--header-h);
  display: flex;
  align-items: center;
  background-color: #2c3e50;
  padding: 0px 20px;
  color: white;
}

.menu-options {
	flex-grow: 1;
	display: flex;
	justify-content: center;
}

/*.navigation {
	display: flex;
	list-style-type: none;
	padding: 0;
	margin: 0;
}*/

.login-button {
	display: flex;
	align-items: center;
}

.btn-login {
	color: white;
	background-color: #8DC63F;
	padding: 4px 12px;
	text-decoration: none;
	border-radius: 5px;
	transition: background-color 0.3s;
}

.btn-login:hover {
	background-color: #74b52e;
}

/* Layout główny */
.main-layout {
	padding-top: var(--header-h);
	margin-left: 20px;	
	margin-right: 20px;
	display: grid;
	grid-template-columns: 1fr;
	  grid-template-areas:
	    "content";   /* na mobile nie pokazujemy lewego pasa jako kolumny */
	  gap: 20px;
	  flex: 1 0 auto; /* zostawiam to co masz, ale grid i tak wystarczy */
}

.sidebar {
	display: none;
	width: 160px;
	flex-shrink: 0;
	margin-right: 20px;
}

.logo {
	width: 100%;
	height: auto;
}

@media (min-width: 768px) {
	.logo-svg {
	  padding: 0;
	  transition: transform 0.3s ease, filter 0.3s ease;
	  height: calc(var(--header-h) - 10px);
	  width: auto;
	  min-width: 180px;
	  display: block;
	  max-width: 100%;
	}

	.logo-svg:hover {
	  transform: translateY(-3px);
	  filter: drop-shadow(0 0 6px #8bc34a);
	}
}

.content {
	opacity: 1;
	transition: opacity 0.3s ease;
	/* <- tutaj, nie w klasach .fade-leave/.fade-enter */
	flex-grow: 1;
	background-color: white;
	border-radius: 8px;
	box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
	padding: 20px;
}

/* Animacja przejścia */
/* fade-out – tylko obniżamy opacity, ale transition jest w bazie */
.content.fade-leave {
	opacity: 0;
}

/* fade-enter – chcemy, aby begin state był opacity: 0, przejście do 1 odbyło się automatycznie */
.content.fade-enter {
	opacity: 1;
	/* transition i tak dziedziczy z .content */
}

/* Stopka */
.footer {
	background-color: #2c3e50;
	color: #ecf0f1;
	height: 60px;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	margin-top: 0;
	position: relative;
}

/* Responsywność */
@media (max-width: 768px) {
	.main-layout {
		flex-direction: column;
	}

	.sidebar {
		margin-bottom: 20px;
	}
	.filter-grid{
	  grid-template-columns: 1fr !important;
	}
	.filter-item,
	.filter-item .choices,
	.filter-item select,
	.filter-item input{
	  width: 100%;
	}
}

/* Tournament table styling */
.tournament-cards{ display:none; }

.tournaments-layout{
	display: grid;
	grid-template-columns: 280px 1fr;
	gap: 16px;
}
/* Desktop – dwa pasy: 280px + reszta */
@media (min-width: 768px) {
  .tournaments-layout{
    grid-template-columns: 280px 1fr;
    align-items: start;
  }
  .t-filters{
    position: sticky;
    top: calc(var(--header-h) - 60px); /* ładne przyklejenie pod headerem */
	align-self: start;
	
	max-height: calc(100vh - var(--header-h) - 12px); /* 12px top */
	   overflow-y: auto;
	   -webkit-overflow-scrolling: touch;     /* płynny scroll na iOS */
	   overscroll-behavior: contain;          /* nie „przeskakuj” na stronę gdy panel na górze/dole */
	   padding-right: 4px;
  }
}

.tournament-table-wrapper {
	width: 100%;
	overflow-x: auto;
}

/* Wyłącz dolną linię w pierwszym wierszu */
.tournament-header td {
	border-bottom: none;
	padding-bottom: 4px;
}

/* Połączone podświetlenie dwóch wierszy */
.tournament-block:hover {
	background-color: rgb(192, 192, 192);
}

/* Usuń hover z pojedynczego <tr>, który był wcześniej */
.tournament-table tbody tr:hover {
	background-color: inherit;
}

.tournament-table {
	min-width: unset;
	width: 100%;
	table-layout: auto;
	border-collapse: collapse;
	margin-top: 20px;
	background-color: #ffffff;
	box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
	border-radius: 8px;
	overflow: visible;
}

.tournament-table th.col-id,
.tournament-table td.col-id {
	width: 2%;
	text-align: center;
	white-space: nowrap;
}

.tournament-table thead {
	background-color: #2c3e50;
	color: #ffffff;
	font-size: 18px;
	font-weight: bold;
	text-transform: uppercase;
	height: 60px;
	/* wyższy nagłówek */
	padding: 0 20px;
	/* poziomy padding */
	vertical-align: middle;
	/* wyśrodkowanie pionowe */
	text-align: center;
	/* wyśrodkowanie poziome */
}

.tournament-table thead th[colspan] {
    text-align: center !important;      /* wymuś centrowanie */
    vertical-align: middle;
    font-size: 20px;
    height: 60px;
    line-height: 60px;                  /* wyśrodkowanie tekstu w pionie */
    padding: 0;
}

.tournament-table th.col-name,
.tournament-table td.col-name {
	width: 25%;
}

.tournament-table th.col-location,
.tournament-table td.col-location {
	width: 12%;
}

.tournament-table th.col-date,
.tournament-table td.col-date {
	width: 10%;
}

.tournament-table th.col-tempo,
.tournament-table td.col-tempo {
	width: 8%;
}

.tournament-table th.col-category,
.tournament-table td.col-category {
	width: 10%;
}

.tournament-table th.col-type,
.tournament-table td.col-type {
	width: 10%;
}

.tournament-table th.col-organizer,
.tournament-table td.col-organizer {
	width: 12%;
}

.tournament-table th.col-platform,
.tournament-table td.col-platform {
	width: 10%;
}

.tournament-table th,
.tournament-table td {
	padding: 4px 4px;
	text-align: left;
	border-bottom: 1px solid #e0e0e0;
}

.tournament-table th {
	text-transform: uppercase;
	font-size: 14px;
	letter-spacing: 0.03em;
}

.tournament-table tr:last-child td {
	border-bottom: none;
}

.tournament-table td a {
	color: #3498db;
	text-decoration: none;
}

.tournament-table .pagination a,
.tournament-table .pagination a:visited {
  color: #fff !important;
  background-color: #8BC34A;   /* jak u Ciebie */
  border-color: #8BC34A;
}

.tournament-entry {
	padding: 8px 8px;
	border-radius: 6px;
	border: 1px solid #b5d9a5;
	transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.3s;
	position: relative;
	z-index: 0;
}

.tournament-entry:hover {
	background-color: rgba(141, 198, 63, 0.15);
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(0,0,0,0.1);
	z-index: 15;
}

.tournament-title {
	font-weight: 600;
	font-size: 1.1em;
	margin-bottom: 6px;
}

.tournament-title a {
	color: #2c3e50;
	text-decoration: none;
}

.tournament-details {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	font-size: 0.95em;
	color: #333;
}

.tournament-details span {
	display: flex;
	align-items: center;
	gap: 6px;
}

.tournament-details i {
	min-width: 16px;
	text-align: center;
	color: #666;
}

.tournament-details .detail-location {
  margin-left: auto;         /* wypchnij w prawo */
  text-align: right;         /* tekst też wyrównany */
}

.tournament-cell {
	padding: 0;
	border-bottom: none;
}

.tournament-link {
	display: block;
	max-width: 100%;
	overflow: visible;
	text-overflow: ellipsis;
}

/* MOBILE: pokazujemy karty, chowamy tabelę */
@media (max-width: 767.98px){
  .tournament-table-wrapper{ display:none; }
  .tournament-cards{
    display:grid;
    grid-template-columns: 1fr;
    gap: 12px;
  }

  /* 2 kolumny na większych telefonach – opcjonalnie */
  @media (min-width: 480px){
    .tournament-cards{ grid-template-columns: repeat(2, 1fr); }
  }

  .t-card{
	border: 1px solid #d0d0d0;
    background:#fff;
    border-radius:12px;
    box-shadow:0 2px 10px rgba(0,0,0,.06);
    overflow:hidden;
  }
  .t-card__link{ display:block; padding:12px 14px; color:inherit; text-decoration:none; }

  .t-card__header{
    display:flex; align-items:flex-start; justify-content:space-between;
    gap:8px; margin-bottom:6px;
  }
  .t-card__title{
    font-size:1rem; line-height:1.2; margin:0; font-weight:600;
    display: block;  overflow: visible; white-space: normal; color:#2196f3;
  }
  .t-card__status{ white-space:nowrap; font-size:.85rem; color:#4a4a4a; display:flex; gap:6px; align-items:center; }

  .t-card__meta{ display:grid; gap:6px; font-size:.9rem; color:#555; }
  .t-meta{ display:flex; gap:8px; align-items:center; min-height:22px; }
  .t-meta i{ width:16px; text-align:center; opacity:.8; }
  .t-meta.t-meta--row{
    display:flex;
    justify-content:space-between;
    align-items:center;
  }

  .t-meta__left{ display:flex; gap:6px; align-items:center; }
  .t-meta__right{ font-size:.85rem; color:#444; display:flex; gap:6px; align-items:center; }
  .t-meta__right i{ width:14px; text-align:center; }
  .t-meta__right span{
    white-space:nowrap;
  }
  /* bezpieczeństwo – nie pozwól wyjść poza viewport */
  .t-results{ overflow-x:hidden; }
}

/* Stylizacja kontenera paginacji */
.pagination {
	margin-top: 6px;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

/* Stylizacja linków paginacji jak przycisków */
.pagination a {
	text-decoration: none;
	font-size: 14px;
	padding: 6px 12px;
	border: 1px solid #8BC34A;
	border-radius: 6px;
	background-color: #8BC34A;
	color: white;
	transition: background-color 0.3s ease;
}

/* Hover efekt */
.pagination a:hover {
	background-color: #7CB342;
	border-color: #7CB342;
	color: white;
}

/* Stylizacja selecta z ilością wyników */
.pagination select {
	font-size: 14px;
	padding: 6px 12px;
	border: 1px solid #8BC34A;
	border-radius: 6px;
	background-color: #8BC34A;
	color: white;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	transition: background-color 0.3s ease;
}

.pagination select:hover {
	background-color: #7CB342;
	border-color: #7CB342;
}

/* Quick-search dropdown */
.search-container {
	position: relative;
	margin-bottom: 15px;
	z-index: auto;
}

#suggestions {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	background: #fff;
	border: 1px solid #ccc;
	border-top: none;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
	z-index: 500;
	max-height: 200px;
	overflow-y: auto;
	list-style: none;
	margin: 0;
	padding: 0;

	/* monospace, żeby ch = szerokość jednego znaku */
	font-family: "Poppins", Courier, monospace;
}

#suggestions li {
	white-space: nowrap;
	/* nie łamiemy wierszy, wszystkie span-y siedzą w jednej linii */
	margin: 0;
	padding: 2px 8px;
	/* minimalne odstępy między wierszami */
	cursor: pointer;
}

#suggestions li:hover {
	background: #f5f5f5;
}

.stats-table td:last-child,
.stats-table td:last-child .btn {
	white-space: nowrap;
	padding: 8px 16px;
}


.suggestion-header {
	font-weight: bold;
	background: #efefef;
}

/* ==== Global adjustments ==== */
.text-center {
	text-align: center;
	margin-bottom: 10px;
	margin-top: 5px;
}

.section-description {
	text-align: center;
	margin: 0 auto 30px;
	font-style: italic;
	color: #555;
	max-width: 700px;
}

/* ==== Section styling ==== */
.section {
	border: 1px solid #ddd;
	border-radius: 6px;
	margin-bottom: 30px;
	margin-top: 20px;
	overflow: visible;
	/* pozwól listom wychodzić poza ramkę */
	background-color: #fafafa;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.section-header {
	background-color: #e0e0e0;
	padding: 10px 15px;
	position: relative;
}

.section-header h3 {
	margin: 0;
	font-size: 1.2em;
	color: #333;
}

.section-body {
	padding: 5px 10px 10px;
	/* top right/left bottom */
	background-color: #fff;
	overflow: visible;
	/* zapewnij pełną widoczność dropdownu */
}

/* ==== Color choice alignment ==== */
.color-choice {
	display: flex;
	gap: 20px;
	margin-bottom: 15px;
}

/* === Przygotowanie: stała maks. szerokość sekcji === */
#preparation-wrapper {
  --prep-max: 1100px;
  padding-inline: 8px;
}

/* Nagłówek H2, opis pod nim i WSZYSTKIE sekcje na tej podstronie
   mają ograniczoną szerokość i są wyśrodkowane */
#preparation-wrapper > h2,
#preparation-wrapper > .section-description,
#preparation-wrapper > .section {
  max-width: var(--prep-max);
  margin-inline: auto;             /* centrowanie w poziomie */
}

/* Minimalne wyrównanie paddingów w środku sekcji (opcjonalnie) */
#preparation-wrapper .section-body {
  padding-inline: 16px;
}

/* ==== Button style ==== */
.btn {
	display: inline-block;
	background-color: #8DC63F;
	color: #fff;
	border: none;
	padding: 8px 16px;
	border-radius: 4px;
	font-size: 1em;
	cursor: pointer;
	transition: background-color 0.3s;
	text-decoration: none;
	box-sizing: border-box;
}

.btn:hover {
	background-color: #74b52e;
}

.player-info {
	display: grid;
	grid-template-columns: 150px 1fr;
	row-gap: 10px;
	column-gap: 20px;
	margin-bottom: 20px;
}

.player-info dt {
	font-weight: bold;
	text-align: right;
}

.player-info dd {
	margin: 0;
}

.prepare-result {
	margin-top: 15px;
	padding: 10px;
	background: #eef;
	border: 1px solid #aac;
	border-radius: 4px;
}

.stats-table {
	width: 100%;
	border-collapse: collapse;
	margin-top: 10px;
}

.stats-table th,
.stats-table td {
	padding: 8px;
	border: 1px solid #ccc;
	text-align: center;
}

.stats-table thead {
	background-color: #f0f0f0;
}

/* węższe kolumny procentów i roku */
.stats-table td.col-move {
	width: 9ch;
	text-align: center;
	padding-right: 0.5em;
}

/* węższe kolumny procentów i roku */
.stats-table td.col-total {
	width: 3ch;
	/* albo inna wartość w ch/px/em wedle uznania */
	text-align: center;
	padding-right: 0.5em;
}

/* węższe kolumny procentów i roku */
.stats-table td.col-percent {
	width: 3ch;
	/* albo inna wartość w ch/px/em wedle uznania */
	text-align: center;
	padding-right: 0.5em;
}

.stats-table td.col-year {
	width: 4ch;
	text-align: center;
	padding-right: 0.5em;
}

/* Highlight row on hover in opening table */
#openingTable tbody tr:hover {
	background-color: #f0f0f0;
}

/* kontener paska */
.result-bar {
	display: flex;
	height: 16px;
	background: #eee;
	border-radius: 8px;
	overflow: hidden;
	position: relative;
	margin-top: 4px;

	border: 1px solid #000;
}

/* segmenty */
.result-bar .bar {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 10px;
	color: #000;
	white-space: nowrap;
}

/* biały segment */
.result-bar .bar.white {
	background: #fff;
	color: #333;
}

/* remisowy */
.result-bar .bar.draw {
	background: #ccc;
	color: #333;
}

/* czarny */
.result-bar .bar.black {
	background: #000;
	color: #fff;
}

.loader {
	width: 30px;
	height: 30px;
	border: 4px solid rgba(0, 0, 0, 0.1);
	border-top-color: #3498db;
	border-radius: 50%;
	animation: spin 0.8s linear infinite;
	margin: 0 auto;
	/* centruj wewnątrz rodzica */
}

@keyframes spin {
	to {
		transform: rotate(360deg);
	}
}

/* Loader overlay tylko dla sekcji turniejów */
#tournaments-wrapper { position: relative; }

.t-loader {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.6);
  backdrop-filter: blur(1px);
  z-index: 1000; /* upewnij się, że jest nad wszystkim */
  width: 100%;
  height: 100%;
}

.t-loader.hidden { display: none; }

/* Prosty spinner */
.t-spinner {
  width: 42px;
  height: 42px;
  border: 4px solid rgba(0,0,0,0.15);
  border-top-color: #4CAF50; /* zielony akcent serwisu */
  border-radius: 50%;
  animation: t-spin 0.9s linear infinite;
}

@keyframes t-spin {
  to { transform: rotate(360deg); }
}

.language-select {
	margin-right: 20px;
	position: relative;
}

.language-select ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.language-select .dropdown-toggle {
	cursor: pointer;
	text-decoration: none;
	font-size: 18px;
}

.language-select .dropdown-menu {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	background-color: white;
	border: 1px solid #ccc;
	padding: 5px 0;
	z-index: 100;
}

.dropdown-menu {
  display: none;
  position: absolute;
  background-color: white;
  padding: 4px 0;
  border: 1px solid #ccc;
  border-radius: 4px;
  z-index: 1000;
}

.dropdown-menu.is-open {
  display: block;
}

.language-select .dropdown-menu li {
	padding: 5px 20px;
}

.language-select .dropdown-menu li a {
	text-decoration: none;
	color: #333;
}

.language-select .dropdown-menu li:hover {
	background-color: #f5f5f5;
}

.chart-wrapper {
	display: flex;
	justify-content: center;
	/* poziomo */
	align-items: center;
	/* pionowo */
	height: 100%;
	/* aby wrapper wypełnił wysokość komórki */
}

.filter-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 12px;
	align-items: flex-end;
	margin-bottom: 6px;
}

.filter-item {
	display: flex;
	flex-direction: column;
}

.filter-item label {
	font-weight: bold;
	margin-bottom: 2px;
	font-size: 13px;
	color: #333;
}

.filter-item input {
	padding: 4px 8px;
	font-size: 13px;
	border: 1px solid #ccc;
	border-radius: 4px;
}

.filter-item select {
	background-color: rgba(141, 198, 63, 0.15);
	/* jasnozielone półprzezroczyste */
	border: 1px solid #8DC63F;
	color: #333;
	font-weight: 500;
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolygon points='70,100 40,60 100,60' fill='%23333'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 10px center;
	background-size: 10px;

	padding: 6px 10px;
	/* identycznie jak input */
	padding-right: 25px;
	/* zachowaj miejsce na strzałkę */
	font-size: 14px;
	border-radius: 4px;
	height: auto;
	/* usuń jeśli było coś wymuszone */
	box-sizing: border-box;
	/* ważne dla pełnej wysokości */
}

/*.filter-item select:focus {
	outline: none;
	box-shadow: 0 0 0 2px rgba(141, 198, 63, 0.3);
}*/

.facebook-box {
	display: flex;
	justify-content: center;
	align-items: center;
	margin: 20px auto;
	width: 100%;
}

.fb-page-placeholder {
	display: none;
	opacity: 0;
	transition: opacity 0.3s ease-in;
}

.fb-page-placeholder.visible {
	display: block;
	opacity: 1;
}

/* Switch container */
.switch {
	position: relative;
	display: inline-block;
	width: 44px;
	height: 24px;
	margin-left: 10px;
	vertical-align: middle;
}

/* Hide default checkbox */
.switch input {
	opacity: 0;
	width: 0;
	height: 0;
}

/* Slider */
.slider {
	position: absolute;
	cursor: pointer;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: #ccc;
	transition: .3s;
	border-radius: 24px;
}

.slider:before {
	position: absolute;
	content: "";
	height: 18px;
	width: 18px;
	left: 3px;
	bottom: 3px;
	background-color: white;
	transition: .3s;
	border-radius: 50%;
}

input:checked + .slider {
	background-color: #4CAF50;
}

input:checked + .slider:before {
	transform: translateX(20px);
}

.input-with-clear {
  position: relative;
  width: 100%;
}

.input-with-clear input {
  width: 100%;
  padding-right: 24px;
  box-sizing: border-box;
}

.clear-btn{
  position: absolute;
  right: 2px;
  top: 50%;
  transform: translateY(-50%);
  width: 24px;                 /* min. 24–28px dla dotyku */
  height: 24px;
  border-radius: 50%;
  border: 1px solid #cfcfcf;   /* neutralna ramka */
  background: #fff;            /* tło jak input */
  color: #666;                 /* szary znak × */
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
}

.clear-btn:hover{
  background: #f2f2f2;
  border-color: #bdbdbd;
  color: #333;
}
/* Board + eval bar sklejone bez przerwy */
.board-wrap {
  display: flex;
  gap: 8px;               /* brak odstępu */
  align-items: stretch; /* równe wysokości */
}

/* pionowy pasek */
.evalbar {
  width: 18px;
  height: 400px;        /* dopasuj do boardu, patrz JS sync niżej */
  border-radius: 10px;
  overflow: hidden;
  position: relative;
  box-shadow: 0 0 0 1px rgba(0,0,0,.25) inset;
  user-select: none;
  display: flex;
  flex-direction: column;  /* czarny u góry, biały na dole */
}

/* płynne przesuwanie (opcjonalnie) */
.evalbar-white, .evalbar-black {
  width: 100%;
  height: 50%;
  transition: height .25s linear;
}
.evalbar-black { background:#333; }
.evalbar-white { background:#eee; }

/* OPASKA na środku (znacznik równej pozycji) */
.evalbar-midline {
  position: absolute;
  left: 0; right: 0;
  top: 50%; transform: translateY(-50%);
  height: 6px;
  pointer-events: none;
  /* subtelny wzorek, możesz uprościć do jednolitej linii */
  background: repeating-linear-gradient(
    90deg,
    rgba(0,0,0,.35) 0 6px,
    rgba(255,255,255,.35) 6px 12px
  );
  box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset;
}

/* Prawy panel: nagłówek silnika jak na lichess */
.engine-box{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.engine-row{display:flex;align-items:center;gap:10px;min-height:28px;min-width: 0}
.engine-row .switch{transform:scale(.9)} /* używasz już tego stylu na turniejach */
.eval-number{font-size:26px;font-weight:700;line-height:1;min-width:64px;text-align:right}
.engine-meta{font-size:12px;color:#8a8a8a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/*.pv-line{font-family:monospace;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}*/
.engine-status{font-size:12px;color:#666}

/* szerokość PV – ustaw tu “czerwoną kreskę” */
:root { --pv-max-width: 520px; }  /* dostosuj do swojego layoutu */

/* kontener PV – tu przyklejamy dymek */
.pv-line{
  position: relative;
  display: block;
  width: var(--pv-max-width);
  max-width: var(--pv-max-width);
  cursor: help;
  /* ważne: NIE ukrywamy overflow tutaj, aby dymek nie był obcinany */
}

/* rzeczywiste ścinanie tekstu robimy w wewnętrznym spanie */
.pv-clip{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-break: normal;
  font-size: 13px;
}

/* DYMek – treść */
.pv-line[data-tooltip]::after{
  content: attr(data-tooltip);
  position: absolute;
  left: 0;                 /* start pod PV */
  top: 100%;               /* pod wierszem PV */
  margin-top: 8px;
  padding: 8px 10px;
  background: #111;
  color: #fff;
  line-height: 1.25;
  border-radius: 6px;
  box-shadow: 0 6px 18px rgba(0,0,0,.25);
  white-space: normal;     /* wielolinijkowo */
  max-width: min(70vw, 720px);
  z-index: 1000;
  opacity: 0;
  transform: translateY(6px);
  pointer-events: none;
  transition: opacity .15s ease, transform .15s ease;
}

/* strzałka dymka */
.pv-line[data-tooltip]::before{
  content: "";
  position: absolute;
  left: 14px;
  top: calc(100% + 2px);
  border: 6px solid transparent;
  border-bottom-color: #111;
  opacity: 0;
  transition: opacity .15s ease;
}

/* pokazuj dymek przy hover/focus */
.pv-line:hover::after,
.pv-line:focus::after,
.pv-line:hover::before,
.pv-line:focus::before{
  opacity: 1;
  transform: translateY(0);
}

.engine-box .engine-meta{
  color:#777;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.engine-box .engine-meta .sep{ margin:0 4px; }

.pagination .page-btn{
  flex: 0 0 auto;         /* nie rozciągaj w poziomie */
  display: inline-flex;   /* lepsze centrowanie ikon/tekstu */
  align-items: center;
  justify-content: center;
  min-width: 60px;       /* desktop */
  height: 20px;
  line-height: 1;
}

/* Zielony stan nieaktywny (spójny z .btn-success, ale „sprany”) */
.pagination .btn.is-disabled,
.pagination .btn[aria-disabled="true"] {
  background-color: #cfe8b2;
  border-color: #cfe8b2;
  color: #ffffffcc;
  cursor: not-allowed;
  opacity: 0.85;
  pointer-events: none; /* obok JS mamy też CSS-ową blokadę */
  box-shadow: none;
}

/* Brak hoverów dla disabled */
.pagination .btn.is-disabled:hover,
.pagination .btn[aria-disabled="true"]:hover {
  background-color: #cfe8b2;
  border-color: #cfe8b2;
  color: #ffffffcc;
}
.pagination .page-size{
  margin-left: 20px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

@media (max-width: 767.98px){
  .pagination{
    gap: 8px;
  }
  .pagination .page-btn{
    min-width: 40px;      /* było 120px */
    height: 30px;         /* zalecane minimum dla palca */
    padding: 0 12px;      /* mniejsze boki */
    font-size: 18px;      /* duży, czytelny symbol « » */
    border-radius: 10px;
  }
  /* Zmniejsz i „uspokój” select */
  .pagination label{
    width: 100%;
    display: flex;
    justify-content: center;
    margin-top: 6px;      /* osobna linia pod przyciskami */
  }
  .pagination select{
    font-size: 16px;
    height: 44px;         /* ta sama wysokość co przyciski */
    padding: 0 10px;
  }
  .pagination .page-size{
    width: 100%;
    margin: 6px 0 0;
    display: flex;
    flex-direction: row;   /* obok siebie */
    justify-content: center;  /* wyśrodkuj całość */
    align-items: center;      /* wyśrodkuj w pionie */
    gap: 8px;                 /* odstęp między "Ilość:" a selectem */
  }
  .pagination .page-size > span{
    text-align: center;
  }
}
/* mniejsza wysokość, zgodna z Twoimi inputami */
/*.cf-choices-inner { min-height: 40px; }*/

/* aby całość była zbliżona do pozostałych pól */
.choices { width: 100%; }

.choices__list--multiple .choices__item {
  background-color: #2e7d32;   /* ciemnozielony */
  border: none;
  color: #fff;
  font-weight: 500;
}

/* Krzyżyk (x) do usuwania */
.choices__list--multiple .choices__item .choices__button {
  border-left: 1px solid rgba(255,255,255,0.4);
  color: #fff;
}

/* Lista opcji po rozwinięciu */
/*.choices__list--dropdown,
.choices__list[aria-expanded] {
  background-color: #e8f5e9;    jasnozielony 
  border: 1px solid #a5d6a7;    opcjonalnie jaśniejsza ramka 
}*/

/* Hover na opcji */
/*.choices__list--dropdown .choices__item--selectable.is-highlighted {
  background-color: #c8e6c9;    troszkę ciemniejszy zielony 
  color: #000;
}*/

/* Samo pole "Wybierz..." (input select) */
/*.choices__inner {
  border: 1px solid #ccc;
  border-radius: 4px;
  min-height: 40px;
  background-color: #fff;  jak reszta inputów 
}*/

/* Tekst placeholdera */
.choices__placeholder {
  color: #999;
}
/*.filter-item .choices__inner {
  border:1px solid #A5D06A !important;
  border-radius:6px !important;
  min-height:40px !important;
  background:#EEF6E2 !important;    solid odpowiednik rgba(141,198,63,.15) 
}*/
/*
.filter-item .choices__list--multiple .choices__item { background:#2e7d32 !important; color:#fff !important; border:none !important; }
.filter-item .choices__list--multiple .choices__item .choices__button { color:#fff !important; border-left:1px solid rgba(255,255,255,.4) !important; }

.filter-item .choices__list--dropdown,
.filter-item .choices__list[aria-expanded] { background:#e8f5e9 !important; border:1px solid #a5d6a7 !important; }
.filter-item .choices__list--dropdown .choices__item--selectable.is-highlighted { background:#c8e6c9 !important; color:#000 !important; }

.filter-item .choices__inner { border:1px solid #ccc !important; border-radius:4px !important; min-height:40px !important; background:#fff !important; }
.filter-item .choices { width:100% !important; }*/

/* === Przygotowanie debiutowe: mobile-first === */
.prep-layout{
  display: grid;
  gap: 12px;
  grid-template-areas:
  "engine"
  "board"
  "back"
  "table"
  "games";
}

/* panel silnika – dwie linie */
.prep-engine{ grid-area: engine; display: grid; gap: 6px; }
.prep-engine .engine-row{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; }

/* plansza + pasek ocen */
.prep-board{ grid-area: board; width:100%; max-width:640px; margin:0 auto; }
#board.board-responsive{ 
	flex: 1 1 0;
	width: auto;            /* szerokość nada rodzic (flex) */
	aspect-ratio: 1 / 1;    /* kwadrat */
	min-width: 0;           /* pozwól się „ściśniać” w flexie */
}

#evalBar{ height:12px; margin-top:6px; }

.prep-board .board-wrap #board.board-responsive{
  flex: 1 1 0;      /* zajmij całą możliwą szerokość */
  width: auto;      /* nie 100%, żeby nie wypychało paska */
  aspect-ratio: 1/1;
}

/* Wróć pośrodku (między planszą a tabelą) */
.prep-back{ grid-area: back; display:flex; justify-content:center; }
.prep-back .btn{ min-width:160px; }


/* tabela ruchów pod planszą */
/*#openingTable{ grid-area: table; }
#moveGamesTable{ grid-area: games; }*/

/* >=768px: dwie kolumny (plansza lewo, reszta prawo) */
@media (min-width: 768px){
  .prep-layout{
    grid-template-columns: minmax(var(--board-min-desktop), var(--board-max-desktop)) 1fr;
    grid-template-areas:
	"board side"   /* wiersz 1: board | [engine + tabele] */
	"back  side";  /* wiersz 2: zapis  | [ciąg dalszy prawej kolumny] */
    column-gap: 20px;
    align-items: start;
  }
  .prep-back{ justify-content:flex-start; }
  /* „kotwica” minimalnej szerokości, żeby auto-kolumna nigdy nie miała 0px */
  .prep-board{ min-width: var(--board-min-desktop); max-width: var(--board-max-desktop); }
}

/* === Desktop: nawigacja wyśrodkowana w headerze === */
@media (min-width: 768px){
  /* 1) Pasek nagłówka jako 3-kolumnowy grid */
  .top-bar .container {
    display: grid;
    grid-template-columns: auto 1fr auto;   /* [logo] [nawigacja-środek] [prawa strona] */
    align-items: center;
    justify-items: stretch;                 /* środkowa kolumna ma się rozciągać */
  }

  /* 2) Logo z lewej, bez zmian */
  .brand{ justify-self: start; }

  /* 3) Nav w środkowej kolumnie, na pełną szerokość */
  .site-nav{
    grid-column: 2;                         /* środkowa kolumna */
    width: 100%;                            /* rozciągnij nav */
    display: grid;
    grid-template-columns: 1fr auto;        /* [lista linków] [prawy blok] */
    align-items: center;
    background: transparent;
    box-shadow: none;
    padding: 0;
    transform: none; opacity: 1; pointer-events: auto;
  }
  .site-nav[hidden]{ display: grid; }       /* nadpisanie atrybutu hidden po inicjalizacji */

  /* 4) Linki menu idealnie na środku */
  .site-nav .navigation{
    display: flex;
    justify-content: center;                /* ŚRODEK */
    gap: 16px;
	align-items: center;
  }
  /* 5) Prawy blok (język + Zaloguj) do prawej */
  .site-nav .nav-aux{
    justify-self: end;
    display: inline-flex;
    gap: 14px;
    margin-left: 12px;
	align-items: center;
  }
}

/* --- MOBILE: player-info w jednej kolumnie i łamanie długich pól --- */
@media (max-width: 768px){
  .player-info{                  /* teraz: grid 150px 1fr → na mobile 1 kolumna */
    grid-template-columns: 1fr 1fr;  /* było 150px 1fr (desktop) */
    row-gap: 2px;
    column-gap: 12px;
  }
  .player-info dt{
    text-align: left;            /* etykiety nad wartościami */
    font-weight: 600;
    margin-top: 2px;
  }
  .player-info dd{
    margin: 0 0 8px 0;
  }
  /* długie nazwiska, kluby, itp. – bez wyjeżdżania poza ekran */
  .player-info dd,
  .player-info dd a{
    overflow-wrap: anywhere;     /* łamie bardzo długie słowa/ID */
    word-break: break-word;
    white-space: normal;
  }
}

/* --- MOBILE: stats-table jako karty/pionowo --- */
@media (max-width: 768px){
	/* DOTYCZY WYŁĄCZNIE dwch sekcji statystyk */
	  #statsSection .stats-table,
	  #statsGamesSection .stats-table{
	    display: block;
	    box-sizing: border-box;
	    width: 100%;
	    margin: 0 auto;
	    padding-inline: 6px;
	    overflow-x: hidden;
	  }
	  #statsSection .stats-table thead,
	  #statsGamesSection .stats-table thead{
	    display: none;
	  }
	  #statsSection .stats-table tbody,
	  #statsGamesSection .stats-table tbody,
	  #statsSection .stats-table tr,
	  #statsGamesSection .stats-table tr{
	    display: block;
	    width: 100%;
	  }
	  #statsSection .stats-table tr,
	  #statsGamesSection .stats-table tr{
	    border: 1px solid #ddd;
	    border-radius: 10px;
	    padding: 12px;
	    margin: 10px 0;
	    background: #fff;
	  }
	  #statsSection .stats-table td,
	  #statsGamesSection .stats-table td{
	    display: block;
	    width: 100%;
	    text-align: left;
	    border: 0;
	    padding: 6px 0;
	  }

	  #statsSection .stats-table td:last-child,
	  #statsGamesSection .stats-table td:last-child{
	    padding: 6px 0 !important;
	    white-space: normal !important;
	  }

	  #statsSection .chart-wrapper,
	  #statsGamesSection .chart-wrapper{ justify-content:center; }
	  #statsSection .chart-wrapper canvas,
	  #statsGamesSection .chart-wrapper canvas{
	    width: min(100%, 320px) !important;
	    height: auto !important;
	  }

	  #statsSection .stats-table td[data-label]::before,
	  #statsGamesSection .stats-table td[data-label]::before{
	    content: attr(data-label) ": ";
	    font-weight: 600;
	    margin-right: 6px;
	  }

	  /* kolejność pól w kartach */
	  #statsSection .stats-table td:nth-child(1),
	  #statsGamesSection .stats-table td:nth-child(1){ order: 1; } /* plik */
	  #statsSection .stats-table td:nth-child(3),
	  #statsSection .stats-table td:nth-child(4),
	  #statsGamesSection .stats-table td:nth-child(3),
	  #statsGamesSection .stats-table td:nth-child(4){
	    order: 2; display: inline-flex; width: auto; gap: 6px;
	    margin-right: 16px; align-items: baseline; font-weight: 600;
	  }
	  #statsSection .stats-table td:nth-child(2),
	  #statsGamesSection .stats-table td:nth-child(2){ order: 3; } /* wykres */

  /* Canvas węższy i elastyczny */
  .chart-wrapper{
    justify-content: center;
  }
  .chart-wrapper canvas{
    width: min(100%, 320px) !important;  /* bez sztywnego 260px, dopasuj do ekranu */
    height: auto !important;
  }
}

@media (max-width: 767.98px){
  #prepareButton,
  #downloadAllGamesBtn{
    display: block;
    width: 100%;
  }
  #downloadAllGamesBtn{
    margin-top: 8px;     /* odstęp pod 1. przyciskiem */
  }
}

/* Na mobile – ocena mniejsza, opis może się zawijać w 2 linie */
@media (max-width: 767.98px){
  .eval-number{ font-size:22px; min-width:52px; }
  .engine-meta{
    font-size:12px;
    line-height:1.2;
    white-space: normal;      /* pozwól się zawijać */
    flex: 1 1 auto;           /* zajmij resztę wiersza */
    min-width: 0;
  }
}

/* Na mobile PV ma iść do wielu linii i nie przekraczać szerokości */
@media (max-width: 767.98px){
  .pv-line{ width:100%; max-width:100%; }    /* zamiast sztywnego --pv-max-width */
}

/* Eval bar ma mieć dokładnie wysokość planszy (flex-stretch) */
.prep-board .board-wrap { 
	display: flex;
	align-items: stretch;   /* evalbar = dokładnie wysokość planszy */
	gap: 8px; /* ważne: jednostka px */
	width: 100%;               
 }
 .prep-board #board.board-responsive{
   width: calc(100% - (var(--evalbar-w) + var(--board-gap)));
   max-width: 640px;
   flex: 1 1 auto;
   min-width: 0;          /* pozwól się „ściśniać” w flexie */
 }
 
.prep-board #evalBar { height: auto !important; margin-top: 0 !important; }
.evalbar { height: auto; width: var(--evalbar-w);}

/* === Opening table – zawsze klasyczna tabela === */
/*#openingTable{ display: table; width: 100%; border-collapse: collapse; table-layout: auto; }
#openingTable thead{ display: table-header-group; }
#openingTable tbody{ display: table-row-group; }
#openingTable tr{ display: table-row; }
#openingTable th, #openingTable td{
  display: table-cell;
  border: 1px solid #ccc;
  padding: 6px 8px;
  text-align: left;
  vertical-align: middle;
}*/

/* węższe kolumny jak wcześniej */
/*#openingTable td.col-move{ width: 9ch; text-align: left; padding-right:.5em; }
#openingTable td.col-total{ width: 3ch; text-align: center; padding-right:.5em; }
#openingTable td.col-percent{ width: 3ch; text-align: center; padding-right:.5em; }
#openingTable td.col-year{ width: 4ch; text-align: center; padding-right:.5em; }*/

/* pasek wyników – jak w dawnym wyglądzie */
/*#openingTable .result-bar{ height:14px; border:1px solid #d0d0d0; }
#openingTable .result-bar .bar{ font-size:10px; }*/

#openingTable abbr{ text-decoration:none; border-bottom:1px dotted #999; cursor:help; }

/* Skróty w nagłówkach (działa na mobile: tap = focus) */
#openingTable th { position: relative; }           /* kotwica dla absolutu */
.abbr-tip{
  text-decoration: none;
  border-bottom: 1px dotted #999;
  cursor: help;
  display: inline-block;
  line-height: 1;
}
.abbr-tip:focus::after,
.abbr-tip:active::after {
  content: attr(data-tip);
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 125%;
  background: #333;
  color: #fff;
  padding: 4px 6px;
  border-radius: 4px;
  font-size: 12px;
  white-space: normal;
  word-wrap: break-word;
  max-width: min(80vw, 300px);
  text-align: center;
  line-height: 1.3;
  z-index: 10;
}
.abbr-tip:focus::before,
.abbr-tip:active::before {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 118%;
  border: 6px solid transparent;
  border-top-color: #333;
}
/* PV: zawsze jedna linia z wielokropkiem, pełny tekst w dymku */
.pv-line{
  position: relative;
  display: block;
  width: var(--pv-max-width);
  max-width: var(--pv-max-width);
  cursor: help;
}
.pv-clip{
  display: block;              /* ważne dla ellipsis */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-break: normal;
}

/* DESKTOP: przyciski obok siebie z odstępem */
@media (min-width: 768px){
  #prepareButton, #downloadAllGamesBtn{
    display: inline-block;
    vertical-align: middle;
  }
  /* działa nawet jeśli coś wstrzyknie się między nimi */
  #prepareButton ~ #downloadAllGamesBtn{
    margin-left: 12px;
  }
}


/* Mobile: szerokość elastyczna, ale nadal jedna linia */
@media (max-width: 767.98px){
  .pv-line{ width:100%; max-width:100%; }
  .pv-clip{ white-space: nowrap; }  /* nadpisuje starą regułę łamania wierszy */
}

@media (max-width: 767.98px){
  /* oba przyciski w kolumnie, pełna szerokość kontenera */
  #prepareButton,
  #downloadAllGamesBtn{
    display: block;
    width: 100%;
  }
  /* <- ważne: nadpisuje regułę desktopową (ta sama specyficzność) */
  #prepareButton ~ #downloadAllGamesBtn{
    margin-left: 0;
    margin-top: 8px;
  }

  #downloadAllGamesBtn{ margin-top: 8px; } /* odstęp pionowy między nimi */
}
/* Ukryta etykieta wersji w stopce */
.footer .deploy-ver{
  position: absolute;           /* przyklejone do okna, nie do kontenera */
  right: 8px;
  bottom: 6px;
  font-size: 10px;
  line-height: 1;
  letter-spacing: .3px;

  /* kolor tła – PODSTAW tutaj kolor swojej stopki.
     Jeżeli masz zmienną CSS dla tła stopki, użyj jej zamiast stałej */
  color: var(--footer-bg, #2c3e50);

  opacity: 1;                /* ważne: tekst ma normalną alfa, “znika” przez kolor */
  user-select: text;          
}

.footer .footer-note {
  position: absolute;
  left: 8px;
  bottom: 6px;
  font-size: 10px;
  line-height: 1;
  letter-spacing: .3px;
  color: #2c3e50;
  user-select: text;
  cursor: text;
}

/* Gdy zaznaczysz myszką, będzie kontrastowy podkład */
.footer .deploy-ver::selection{
  background: rgba(255,255,0,.35);
}

.brand img{height:58px;width:auto}
@media (max-width: 767.98px) {
  .top-bar .container {
		display: flex;
	    align-items: center;
	    justify-content: space-between;
	    padding: 0 6px;               
	    min-height: var(--header-h);
  }

  .top-bar .brand {
    margin: 0 auto; /* dodatkowe upewnienie, że będzie na środku */
  }

  .top-bar .brand img {
    height: 46px; /* dostosuj wielkość logo na mobile */
    width: auto;
  }
}
/*
@media (min-width: 768px) {
  .top-bar {
	padding: 0 24px;
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 1rem;
	align-items: center;
	overflow: hidden;
  }
  .top-bar .brand {
    justify-self: center;
    margin-right: auto;
    display: flex;
    align-items: center;
  }
  .top-bar .brand img {
    height: 58px;
    width: auto;
  }
}
*/
.container {
  max-width: 1200px;      /* lub inna stała szerokość */
  margin: 0 auto;
  width: 100%;
  padding: 0 20px;         /* mały margines wewnętrzny dla małych ekranów */
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;               /* dodatkowy dystans między logo a menu */
}

/* --- FOTO | PZSzach | FIDE: szerzej 1. kolumna --- */
.player-basic-grid{
  display: grid;
  grid-template-columns: 260px 1fr 1fr;   /* było 180px */
  gap: 24px;
  align-items: stretch;
}

/* wyśrodkuj kolumnę ze zdjęciem góra–dół względem sąsiednich */
.player-photo{ align-self: center; }

/* ramka na zdjęcie – zostaje 3:4, ale szersza przez kolumnę 260px */
.player-photo__box{
  width: 100%;
  aspect-ratio: 3 / 4;
  background: #f3f3f3;
  border: 1px solid #ddd;
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  align-items: center;      /* wyśrodkuj pionowo */
  justify-content: center;  /* wyśrodkuj poziomo */
  padding: 6px;             /* delikatny „oddech” */
}

/* nie rozciągaj małych zdjęć – pokaż w oryginalnym rozmiarze, wyśrodkuj */
.player-photo__box img{
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;   /* bezpieczeństwo, gdyby nadano width/height gdzie indziej */
  display: block;
}

/* Podsekcje (jak mini-„section” w środku) */
.subsection{
	height: 100%;
	display: flex;
	flex-direction: column;
  border: 1px solid #e6e6e6;
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
}
.subsection-header{
  background: #f1f1f1;
  padding: 8px 12px;
  border-bottom: 1px solid #e6e6e6;
}
.subsection-header h4{
  margin: 0;
  font-size: 1.05em;
  color: #333;
}
.subsection-body{
  padding: 10px 12px;
}

/* żeby siatka etykieta:wartość trzymała odstępy w podsekcji */
.subsection .player-info{
  margin: 0;
}

/* Mobile: pionowo jeden pod drugim (jak było) */
@media (max-width: 768px){
  .player-basic-grid{
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .player-photo__box{ max-width: 200px; margin: 0 auto; }
}

/* Date range on tournaments view */
.t-filters .date-range .range-row{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 6px;
}

/* żeby przycisk „×” był poprawnie wyrównany, jeśli wcześniej nie był */
.t-filters .input-with-clear{
  position: relative;
}
.t-filters .input-with-clear .clear-btn{
  position: absolute;
  right: 2px;
  top: 50%;
  transform: translateY(-50%);
}
/* 1) Wyłącz poświatę/obramowanie na wrapperze */
.input-with-clear.filter-active{
  outline: none !important;
  box-shadow: none !important;
  border: 0 !important;
  background: transparent !important;
  padding: 0; /* żeby nie powstawał zielony „kartonik” wokół inputa */
}

.filter-item select.filter-active {
    border-color: var(--active-border) !important;
    box-shadow: var(--active-glow), 0 1px 2px rgba(0,0,0,.04);
}
.filter-item.filter-active select {
    border-color: var(--active-border) !important;
    box-shadow: var(--active-glow), 0 1px 2px rgba(0,0,0,.04);
}

/* 2) Poświata tylko na input – respektuje border-radius */
.input-with-clear.filter-active input{
	border-color: var(--active-border) !important;
	box-shadow: var(--active-glow), 0 1px 2px rgba(0,0,0,.04);
}

/* (opcjonalnie) gdy masz globalne outline na :focus-within – wyłącz na tych polach */
.input-with-clear:focus-within{
  outline: none;
}
.choices.filter-active{
  border-color: var(--active-border) !important;
  box-shadow: var(--active-glow), 0 1px 2px rgba(0,0,0,.04); /* miękka obwódka */
  border-radius: 6px; /* tak jak u Ciebie na .choices */
}

.choices.filter-active .choices__inner{
  box-shadow: none; /* zostawiamy czysto, bo ramkę masz na .choices */
}
.inline-location {
  display: flex;
  align-items: stretch;     /* oba elementy równej wysokości */
  gap: 0px;                 /* mały odstęp między inputem a selectem */
}

.inline-location .input-with-clear {
  flex: 1 1 auto;           /* input zajmuje resztę szerokości */
  display: flex;            /* pozwala przyciskowi × ustawić się prawidłowo */
  align-items: center;
  position: relative;
}
/* Styl dla wiersza "Brak wyników" – wersja z pełnym centrowaniem */
.t-empty {
  background-color: #DDEEC5;      /* delikatne zielone tło */
  color: #4CAF50;                 /* ciemnozielony tekst */
  font-weight: 700;
  font-size: 1.5rem;
  letter-spacing: 0.5px;

  /* pełne centrowanie */
  display: flex;
  justify-content: center;        /* poziomo */
  align-items: center;            /* pionowo */
  
  height: 90px;                   /* wysokość wiersza */
  text-align: center;
  border: none;
  border-radius: 4px;
}

/* usuń obramowanie z tabeli w tym wierszu */
.tournament-table .t-empty td {
  border: none;
  padding: 0;
}
.status-planned {
  color: #e53935; /* czerwony */
}

.status-inprogress {
  color: #43a047; /* zielony */
}

.status-finished {
  color: #555;    /* neutralny szary */
}

.tournament-title-with-icon {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
}

.tournament-title {
  flex: 1 1 auto;
  min-width: 0;
}

.tournament-icon {
  margin-left: auto;
  flex: 0 0 auto;
}

.tournament-icon img {
  width: 22px;
  height: 22px;
  object-fit: contain;
  opacity: 0.85;
}

/* Ustawienie dwóch kontrolek (input + select) w jednym rzędzie */
.inline-tempo{
  display: flex;
  align-items: stretch;
  gap: 8px;
}

.inline-tempo .input-with-clear {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  position: relative;
}

/* input dokładnie jak w lokalizacji */
.inline-tempo .input-with-clear input {
  width: 100%;
  padding-right: 24px;
  box-sizing: border-box;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 14px;
  height: auto;
}

.tournament-table td.tournament-cell {
  border-bottom: none !important;
}
.tournaments-center-wrapper {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 16px;
	width: 100%;
	box-sizing: border-box;
	overflow-x: hidden;
	display: grid;
	align-items: start;
}
@media (max-width: 1023px) {
  .tournaments-layout {
    display: block;
    width: 100%;
  }

  .t-filters,
  .t-results {
    width: 100%;
  }
}
@media (max-width: 768px) {
  .tournaments-center-wrapper {
    padding-left: 2px;
    padding-right: 2px;
    box-sizing: border-box;
  }

  .tournaments-layout {
    display: block;
    width: 100%;
  }

  .t-filters,
  .t-results {
    width: 100%;
  }
}

.tournament-title-with-icon {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}

.tournament-icon img {
  width: 22px;
  height: 22px;
  object-fit: contain;
  opacity: 0.85;
}
/* ===== Scrollowalne tabele w sekcji przygotowania ===== */
.prep-table{
  /* aby thead i tbody miały identyczny układ kolumn */
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 0;
  overflow-x: hidden; 
  /* parametry wiersza – możesz dostroić */
  --row-h: 44px;      /* docelowa wysokość jednego wiersza body */
  --head-h: 44px;     /* wysokość nagłówka */
}

/* klejony nagłówek */
.prep-table thead th{
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f0f0f0;     /* tło jak w Twoim stylu */
}

/* trik z display: table + block, żeby zgrać szerokości kolumn */
.prep-table thead,
.prep-table tbody tr{
  display: table;
  width: 100%;
  table-layout: fixed;
}

/* tylko body się przewija */
.prep-table tbody{
  display: block;
  overflow-y: auto;
  scrollbar-gutter: stable;
}

/* 4 widoczne wiersze – klasa scroll-4 ustawia wysokość body */
.prep-table.scroll-4 tbody{
  max-height: calc(var(--row-h) * 4);
  min-height: calc(var(--row-h) * 4);
}

/* Standaryzacja wysokości wierszy body (żeby 4 = równo 4) */
.prep-table tbody tr{
  height: var(--row-h);
}

/* delikatna optymalizacja wyglądu w komórkach */
.prep-table th, .prep-table td{
  padding: 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Wyrównanie szerokości kolumn w tabelach z ruchami i partiami */
#openingTable,
#moveGamesTable {
  table-layout: fixed;
  width: 100%;
  border-collapse: collapse;
}

#openingTable th,
#openingTable td,
#moveGamesTable th,
#moveGamesTable td {
  text-align: center;
  padding: 6px 8px;
  border: 1px solid #ccc;
  white-space: normal !important;
  word-break: break-word;
  overflow: visible !important; 
  text-overflow: unset !important;
}

#moveGamesTable tbody tr:hover {
  background-color: #f0f0f0;
}

/* Zachowaj wspólne szerokości kolumn */
#openingTable th:nth-child(1),
#openingTable td:nth-child(1) { width: 21%; } /* ruch */
#openingTable th:nth-child(2),
#openingTable td:nth-child(2) { width: 10%; } /* liczba partii */
#openingTable th:nth-child(3),
#openingTable td:nth-child(3) { width: 14%; } /* procent */
#openingTable th:nth-child(4),
#openingTable td:nth-child(4) { width: 14%; } /* rok */
#openingTable th:nth-child(5),
#openingTable td:nth-child(5) { width: 41%; } /* wyniki */

/* Analogicznie dla tabeli partii */
#moveGamesTable th:nth-child(1),
#moveGamesTable td:nth-child(1) { width: 30%; } /* białe */
#moveGamesTable th:nth-child(2),
#moveGamesTable td:nth-child(2) { width: 15%; } /* wynik */
#moveGamesTable th:nth-child(3),
#moveGamesTable td:nth-child(3) { width: 30%; } /* czarne */
#moveGamesTable th:nth-child(4),
#moveGamesTable td:nth-child(4) { width: 25%; } /* data */

.prep-table thead,
.prep-table tbody,
.prep-table tbody tr,
.prep-table th,
.prep-table td{
  box-sizing: border-box;             /* borders/padding nie powiększą szerokości */
}

.prep-table tbody{
  overflow-y: auto;
  overflow-x: hidden;                 /* pewne ucięcie w osi X */
  scrollbar-gutter: stable both-edges;/* zarezerwuj stałą szer. na scrollbar */
}

#openingTable td .result-bar{
  width: 100%;
  box-sizing: border-box;
  max-width: 100%;
}
/* Na bardzo wąskich ekranach zredukuj minimalnie wysokość wiersza */
@media (max-width: 420px){
  .prep-table{ --row-h: 40px; --head-h: 40px; }
}
/* Stopka pod deską: zapis + Wróć (obszar grid: back – już zdefiniowany w .prep-layout) */
.prep-footer{
  grid-area: back;
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin-top: 6px;
}

.move-notation{
  flex: 1 1 auto;
  min-height: 36px;               /* aby miejsce na pierwszy ruch było od razu */
  line-height: 1.6;
  white-space: normal;            /* łamanie do kolejnych wierszy */
  word-break: break-word;
}

/* przycisk po prawej, stała szerokość */
.prep-footer .btn{ 
  flex: 0 0 auto;
  align-self: flex-start;
}

/* Na wąskich ekranach przycisk pod zapisem (czytelniej) */
@media (max-width: 767.98px){
  .prep-footer{ 
    flex-direction: column;
    align-items: stretch;
  }
  .prep-footer .btn{ width: 100%; }
}

.prep-side{
  grid-area: side;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
@media (max-width: 767.98px){
  .prep-side{
    display: contents;   /* dzieci .prep-side trafiają bezpośrednio do siatki */
    grid-area: unset;    /* nie próbuj zajmować nieistniejącego 'side' */
  }
  #openingTable{   grid-area: table; }
  #moveGamesTable{ grid-area: games; }
}
@media (max-width: 767.98px){
  .prep-table.scroll-4 tbody{
    min-height: auto !important; /* usuwa sztuczną przestrzeń */
  }
}
/* === MOBILE: zmniejszenie odstępów na stronie Przygotowanie === */
@media (max-width: 767.98px) {

  /* zmniejszamy marginesy boczne głównego layoutu */
  .main-layout {
    margin-left: 2px;
    margin-right: 2px;
    gap: 12px; /* mniejszy odstęp między sekcjami */
  }

  /* mniej paddingu wewnątrz głównego contentu */
  .content {
    padding: 10px;
  }

  /* ciaśniej w wrapperze przygotowania */
  #preparation-wrapper {
    padding-inline: 2px;
  }

  /* sekcje (ramki) — mniejsze marginesy zewnętrzne i wewnętrzne */
  #preparation-wrapper .section {
    margin-top: 6px;
    margin-bottom: 8px;
  }

  #preparation-wrapper .section-header {
    padding: 6px 10px;
  }

  #preparation-wrapper .section-body {
    padding: 4px 8px 8px;
  }

  /* opis sekcji pod nagłówkiem – ciaśniejszy */
  #preparation-wrapper > .section-description {
    margin-bottom: 16px;
    max-width: 100%;
    padding-inline: 4px;
  }
  
  #openingTable th:nth-child(1),
  #openingTable td:nth-child(1) { width: 20%; } /* ruch */
  #openingTable th:nth-child(2),
  #openingTable td:nth-child(2) { width: 12%; } /* liczba partii */
  #openingTable th:nth-child(3),
  #openingTable td:nth-child(3) { width: 18%; } /* procent */
  #openingTable th:nth-child(4),
  #openingTable td:nth-child(4) { width: 18%; } /* rok */
  #openingTable th:nth-child(5),
  #openingTable td:nth-child(5) { width: 32%; } /* wyniki */
}
#openingTable th { 
  overflow: visible;              /* żeby nic nie było obcinane */
}

#openingTable th .abbr-tip{
  position: relative;             /* kotwica dla ::after/::before */
}

/* Tooltip w tabeli z ruchami: szeroki, nad nagłówkiem, bez poziomego scrolla */
#openingTable th { position: relative; overflow: visible; }

#openingTable th .abbr-tip {
  position: relative; /* kotwica */
}

/* Dymek */
#openingTable th .abbr-tip:focus::after,
#openingTable th .abbr-tip:active::after {
  position: absolute;
  left: 50%;
  bottom: 100%;                     /* nad komórką */
  transform: translateX(-50%) translateY(-20px);
  z-index: 999999;                     /* > thead (masz z-index:1), nie dziala... */
  max-width: min(92vw, 320px);      /* nie wyjdzie poza ekran */
  width: max-content;               /* dopasuj do treści */
  white-space: normal;
  word-break: normal;
  overflow-wrap: anywhere;          /* łam bardzo długie ID/słowa */
  padding: 6px 10px;
  background: #111;
  color: #fff;
  border-radius: 6px;
  font-size: 12px;
  line-height: 1.3;
  text-align: center;
}

/* Strzałka dymka */
#openingTable th .abbr-tip:focus::before,
#openingTable th .abbr-tip:active::before {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 14px);
  transform: translateX(-50%);
  content: "";
  border: 6px solid transparent;
  border-top-color: #111;
  z-index: 101;
}
/* MOBILE: zawężenie dymka nad "Wynik" – zawinie się w ~4 linie */
@media (max-width: 767.98px){
  #openingTable th.col-results .abbr-tip:focus::after,
  #openingTable th.col-results .abbr-tip:active::after{
    width: 34vw;          /* węższy = więcej linii */
    max-width: 34vw;      /* twardy limit na mobile */
  }
}
/* Zapobiegaj poziomemu scrollowi od dymków na mobile */
@media (max-width: 767.98px){
  #preparation-wrapper { overflow-x: hidden; }
}
.tournament-details .detail-status i {
  color: currentColor;
}
/* to make suggestions visible */
.section,
.section-body,
.content {
  transform: none !important;   /* gdyby gdzieś kiedyś się pojawił transform */
  will-change: auto !important;
  /* overflow już masz na visible dla section-body; zostawiamy */
}

@media (max-width: 768px) {
  .search-container { position: static; }  /* niepotrzebny relative */
  #suggestions {
    position: fixed;
    left: 12px;
    right: 12px;
    top: calc(var(--header-h) + 320px); /* ~pod paskiem i pod polem – dostrój */
    z-index: 6000;
    max-height: 50vh;   /* wygodny scroll */
  }
}

.modal.hidden { display: none; }
.modal { position: fixed; inset: 0; z-index: 9999; }
.modal__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.6); }
.modal__dialog { position: relative; margin: 4vh auto; max-width: 1100px; background: #fff;
  border-radius: 10px; padding: 16px 16px 12px; }
.modal__close { position: absolute; right: 10px; top: 8px; font-size: 28px; line-height: 1; background: none; border: 0; cursor: pointer; }
.game-body { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 900px) { .game-body { grid-template-columns: 1fr; } }
.board { aspect-ratio: 1 / 1; }
.evalbar { height: 14px; margin-bottom: 6px; }
.moves-list { max-height: 55vh; overflow: auto; padding-left: 18px; }
.game-row { cursor: pointer; }
/* Modal: board + evalbar obok siebie, równa wysokość */
#gameModal .board-wrap { display: flex;
flex-direction: row;       /* na desktopie */
align-items: stretch !important;   /* <-- klucz */
gap: 8px; }

/* Rozmiar planszy w modalu (elastycznie) */
#gm-board { width: var(--board-size);
aspect-ratio: 1 / 1;
flex: 0 0 auto; }

/* Szerokość paska oceny w modalu (spójna z globalną zmienną) */
#gm-evalbar { width: var(--evalbar-w, 18px); }
/* === SZACHOWNICA W MODALU === */
#gameModal .board-wrap {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  justify-content: flex-start;
}

/* Ustalony rozmiar szachownicy */
#gm-board {
  width: clamp(300px, 55vh, 520px); /* elastycznie: nie mniej niż 300px, nie więcej niż 520px */
  aspect-ratio: 1 / 1;              /* kwadrat */
  flex-shrink: 0;                   /* nie ściska się przy flex */
}

/* Pasek oceny obok planszy */
#gm-evalbar {
	width: var(--evalbar-w);
	height: var(--board-size);        /* <-- gwarantuje taką samą wysokość jak plansza */
	flex: 0 0 auto;
	display: flex;                    /* NIE tylko w media-query */
	flex-direction: column;
	position: relative;               /* jeśli masz kreskę środkową w absolut */
}

/* Lista ruchów po prawej — pozwala się przewijać */
#gm-moves {
  max-height: 70vh;
  overflow-y: auto;
  font-size: 15px;
  line-height: 1.4;
}

/* Dla mniejszych ekranów — plansza na całą szerokość */
@media (max-width: 900px) {
  #gameModal .board-wrap {
    flex-direction: column;
    align-items: center;
  }
  #gm-board {
    width: 90vw;
  }
  #gm-evalbar {
    width: 100%;
    height: 14px;
    display: flex;
    flex-direction: row;
  }
}
/* Animacja figur w modalu – niezależnie od jQuery.animate */
#gameModal .board .piece-417db {
  transition: left .20s linear, top .20s linear;  /* dopasowane do moveSpeed: 200ms */
  will-change: left, top;
}

/* (opcjonalnie) trochę wolniej – np. jak w głównym widoku */
@media (prefers-reduced-motion: no-preference) {
  #gameModal .board .piece-417db {
    transition-duration: .25s;
  }
}
/* Plansza + eval bar obok siebie, bar po PRAWEJ i równej wysokości */
#gameModal .board-wrap{
  display:flex;
  align-items:stretch;
  gap: var(--board-gap, 8px);
  justify-content:flex-start;
}
#gm-board{
  width: clamp(300px, 55vh, 520px);
  aspect-ratio: 1 / 1;
  flex-shrink: 0;
}
#gm-evalbar{
  width: var(--evalbar-w, 18px);
/*  height: 100%;*/
  flex-shrink: 0;
}

/* Kontrolki pod planszą */
.gm-controls{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:8px;
  flex-wrap:wrap;
}
.gm-controls .btn{
  padding: 6px 10px;      /* mniejsze, ale jak Twoje .btn */
  line-height: 1;
}

/* Slider „Silnik” tak jak na przygotowaniu */
.gm-engine-toggle{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:8px;
}

/* Zapis w jednej linii */
.moves-inline{
  margin-top:10px;
  font-size:15px;
  line-height:1.5;
  white-space: normal;
  word-break: normal;
}
.moves-inline b{ font-weight:600; }

/* (ważne) NIE zmieniaj układu na kolumnę na małych ekranach – chcemy bar po prawej także na mobile */
@media (max-width: 900px){
  #gameModal .board-wrap{
    flex-direction: row;           /* było column – nadpisujemy */
  }
  #gm-board{ width: min(90vw, 520px); }
  #gm-evalbar{
    width: var(--evalbar-w, 18px);
    height: auto;
    display:flex;
    flex-direction: column;
  }
}

/* Delikatne wygładzenie animacji figur (jak na widoku głównym) */
#gameModal .board .piece-417db{
  transition: left .20s linear, top .20s linear;
  will-change: left, top;
}
/* === Layout modala: 2 kolumny na desktop; na mobile jedna kolumna === */
.gm-layout{
  display:grid;
  grid-template-columns: minmax(var(--board-min-desktop), var(--board-max-desktop)) 1fr;
  gap: 20px;
  align-items: start;
}
.gm-left{ display:block; }
.gm-side{
  min-width: 280px;
  display:flex;
  flex-direction: column;
  gap: 10px;
}

.gm-engine .engine-row{ display:flex; align-items:center; gap:10px; }
.gm-engine .engine-meta{ font-size:14px; color:#666; display:flex; align-items:center; gap:6px; }
.eval-number{ font-weight:700; font-size:22px; min-width:64px; text-align:right; }

/* zapis partii w prawej kolumnie */
.moves-inline{ margin-top:6px; font-size:15px; line-height:1.5; }

/* mobile: panel silnika nad planszą */
@media (max-width: 900px){
  .gm-side{ order: -1; }    /* przenieś panel nad planszę */
}

/* Plansza i pasek obok siebie */
.gm-left .board-wrap {
  display: flex;
  align-items: stretch;
  gap: 8px;
}

.gm-left #gm-board {
  width: 100%;
  aspect-ratio: 1 / 1;
  flex: 1 1 auto;
}

.gm-left #gm-evalbar {
  width: var(--evalbar-w);
  align-self: stretch;
}

/* Prawa kolumna (silnik + zapis) */
.gm-side {
  display: flex;
  flex-direction: column;
  gap: 12px;
  height: 100%;
}

/* tabela ruchów w kolumnie, przewijana */
.moves-table-wrap {
  flex: 1 1 auto;
  overflow-y: auto;
  max-height: calc(var(--board-size) - var(--gm-row-h)) !important;
  border: 1px solid #ccc;
  border-radius: 6px;
  background: #fafafa;
}

.moves-table {
  width: 100%;
  border-collapse: collapse;
}

.moves-table tr {
  border-bottom: 1px solid #ddd;
  height: 32px;
}

.moves-table td {
  padding: 4px 8px;
  text-align: left;
  font-size: 15px;
  line-height: 1.4;
}

.moves-table tr.active {
  background: #d8f0c8;
  font-weight: 600;
}

/* MOBILE: jedna kolumna – rozłóż .gm-side na dzieci, żeby silnik był NAD, a tabela ruchów POD szachownicą */
@media (max-width: 900px){
  .gm-layout{
    grid-template-columns: 1fr;   /* jedna kolumna */
    /* opcjonalnie: gwarantuj naturalną wysokość wierszy */
    grid-auto-rows: auto;
  }

  /* klucz: dzieci .gm-side stają się bezpośrednimi elementami gridu */
  .gm-side{
    display: contents;    /* zamiast order:-1 przenosimy JEJ DZIECI do siatki */
  }

  /* ułóż kolejność: meta (już jest pełna szerokość) → silnik → szachownica (gm-left) → moves */
  .gm-engine{
    grid-column: 1;       /* blok z przełącznikiem, oceną i PV – idzie zaraz po meta */
  }

  .gm-left{
    grid-column: 1;       /* szachownica + evalbar + przyciski pod nią */
  }

  .moves-table-wrap{
    grid-column: 1;       /* tabela ruchów – na samym dole */
    max-height: none;     /* pełna wysokość na mobile */
  }
  
  #gameModal .modal__dialog {
    max-height: 100vh;       /* nie wykraczaj poza wysokość ekranu */
    overflow-y: auto;        /* włącz pionowy scroll */
    -webkit-overflow-scrolling: touch; /* płynny scroll na iOS */
  }
  
}

.gm-meta{
  text-align: center;
  font-weight: 700;
  margin: 4px 0 8px;
}
.gm-meta a { color: #2b6cb0; text-decoration: underline; }
/* 2 linie PV z wielokropkiem – stabilna wysokość */
.pv-2rows { 
  line-height: 1.35;
  min-height: calc(2 * 1.35em);
  max-height: calc(2 * 1.35em);
  display: block;
}
.pv-2rows .pv-clip{
  white-space: normal;                  /* pozwól łamać */
  display: -webkit-box;                 /* line-clamp */
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
/* META nad siatką – na CAŁĄ szerokość */
.gm-layout > .gm-meta{
  grid-column: 1 / -1 !important;  /* <- kluczowe */
  text-align: center;
  font-weight: 700;
  margin: 2px 0 4px;
}
/*.moves-table tr:hover {
  background-color: #e8f9e5;  jasnozielony 
  cursor: pointer;
}*/
/* jawnie przypisz kolumny dla pewności */
.gm-layout > .gm-left{ grid-column: 1; }
.gm-layout > .gm-side{ grid-column: 2; }

/* moves table (modal) – interaktywne komórki */
#gm-notation td.move-white,
#gm-notation td.move-black {
  cursor: pointer;
}

#gm-notation td.move-white:hover,
#gm-notation td.move-black:hover {
  background: #E8F5E1;          /* jasna zieleń */
}

#gm-notation td.is-current {
  background: #DDF0CC;          /* trochę mocniej dla aktywnego */
  font-weight: 700;
}

/* ===== Landing: sekcja modułów, partnerów, sponsorów ===== */
#landing-wrapper{
  --landing-max: 1100px;
  max-width: var(--landing-max);
  margin-inline: auto;
}

.landing-section-title{
  margin: 24px 0 10px;
  font-size: clamp(18px, 2.2vw, 24px);
  color: #2c3e50;
  text-align: center;
}

/* Lista modułów */
.modules-list{
  display: grid;
  gap: 22px;
}

/* Pojedynczy wiersz modułu: mobile-first = kolumna */
.module-row{
  display: grid;
  gap: 14px;
  align-items: center;
}

/* Na >=768px: 2 kolumny, obrazek ↔ opis naprzemiennie */
@media (min-width: 768px){
  .module-row{
    grid-template-columns: 1fr 1fr;
    column-gap: 22px;
  }
  .module-row:nth-child(even) .module-media{ order: 2; }
  .module-row:nth-child(even) .module-copy { order: 1; text-align: right; }
}

/* Obrazek modułu (klikalny) */
.module-media{
  display: block;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(0,0,0,.08);
  transition: transform .25s ease, box-shadow .25s ease;
}
.module-media img{
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}
.module-media:hover{
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(0,0,0,.12);
}

/* Tekst po prawej/lewej */
.module-copy .module-title{
  margin: 0 0 6px;
  font-size: clamp(18px, 2vw, 22px);
  line-height: 1.2;
}
.module-copy .module-title a{
  color: #2c3e50;
  text-decoration: none;
  /*border-bottom: 2px solid transparent;*/
}
.module-copy .module-title a:hover{
  color: #8DC63F;
  border-bottom-color: #8DC63F;
}
.module-copy .module-desc{
  margin: 0;
  color: #444;
  font-size: clamp(14px, 1.6vw, 16px);
}

/* Naprzemienne tła delikatnie odcinające rzędy (opcjonalne) */
.module-row:nth-child(odd)  { background: #E3F0D0;       border-radius: 10px; padding: 8px; }
.module-row:nth-child(even) { background: #f9fbf6;    border-radius: 10px; padding: 8px; }

/* Siatka partnerów/sponsorów */
.brand-grid{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 16px;
  margin: 10px 0 30px;
}

/* Karta logo + nazwa – CAŁA klikalna (logo i nazwa są w <a>) */
.brand-card{
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 8px;
  text-decoration: none;
  background: #fff;
  border: 1px solid #e6e6e6;
  border-radius: 12px;
  padding: 14px;
  box-shadow: 0 1px 6px rgba(0,0,0,.06);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
  color: #2c3e50;
}
.brand-card:hover{
  transform: translateY(-2px);
  box-shadow: 0 6px 14px rgba(0,0,0,.10);
  border-color: #cfe8b2;
}
.brand-card img{
  max-width: 120px;
  max-height: 48px;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
  filter: saturate(1.05);
}
.brand-card .brand-name{
  font-size: 14px;
  font-weight: 600;
  text-align: center;
  color: #2c3e50;
  display: block;
  margin-top: 0.5rem;
}

.brand-desc {
  text-align: center;
  margin-top: 0.4rem;
}

/* Drobne doszlifowanie mobilne */
@media (max-width: 767.98px){
  .module-row:nth-child(even) .module-copy { text-align: left; } /* na mobile wszystko w 1 kolumnie */
  .brand-card img{ max-width: 100px; max-height: 40px; }
}
/* 1) Ustalona wysokość obrazka przez proporcje – dzięki temu prawa kolumna
      będzie miała tę samą wysokość co zdjęcie */
.module-row{
  align-items: stretch;         /* obie kolumny równej wysokości */
  overflow: visible;
}
.module-media{
  aspect-ratio: 16 / 10;       /* można zmienić na 16/9 lub 4/3 według zdjęć */
  display: block;
}
.module-media img{
  width: 100%;
  height: 100%;
  object-fit: cover;            /* ładne wypełnienie bez zniekształceń */
  display: block;
}

/* 2) Prawa kolumna – równomierne wypełnienie wysokości (tytuł i opis) */
.module-copy{
	height: 100%;
	display: flex;
	flex-direction: column;
	justify-content: center;   /* środek w pionie */
	align-items: center;
	gap: 18px;                 /* odstęp tytuł–opis */
	padding: 8px 10px 16px;    /* +16px na dole, żeby pigułka nie stykała krawędzi */
	transform: none;           /* <-- usuń wcześniejsze translateY(-6%) */
	overflow: visible;         /* pewność: nic nie przytnie cienia/zaokrągleń */
}

/* 3) Pigułka (klikany tytuł z zielonym tłem i mocno zaokrąglonymi rogami) */
.module-title{
  margin: 0;
}
.module-pill{
  display: inline-block;
  text-decoration: none;
  color: #2c3e50;
  background: rgba(141,198,63,0.12);   /* lekko zielone tło */
  border: 2px solid #8DC63F;
  border-radius: 9999px;               /* „pigułka” */
  padding: 14px 24px;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  cursor: pointer;
}
.module-pill:hover{
  transform: translateY(-2px);
  background: rgba(141,198,63,0.18);
  box-shadow: 0 8px 18px rgba(0,0,0,.10);
}

/* 4) Opis – wyjustowany tekst, lepsze łamanie długich słów */
.module-desc{
  margin: 0;
  text-align: justify;     /* wyjustowanie */
  text-justify: inter-word;
  hyphens: auto;
  -webkit-hyphens: auto;
  -ms-hyphens: auto;
  max-width: 60ch;         /* wygodna szerokość czytania; dopasuj wg gustu */
}

/* 5) Nawigacja naprzemienna przy układzie 2 kolumn bez zmiany Twojej logiki */
@media (min-width: 768px){
  .module-row{
    grid-template-columns: 1fr 1fr;
  }
  .module-row:nth-child(even) .module-media{ order: 2; }
  .module-row:nth-child(even) .module-copy { order: 1; }
}

/* 6) Mobile – naturalny przepływ, bez sztucznego „rozpychania” */
@media (max-width: 767.98px){
  .module-copy{
    justify-content: flex-start; /* brak rozciągania na pełną wysokość na mobile */
    align-items: center;
    gap: 8px;
  }
  .module-title{
    display: flex;
    justify-content: center;
    width: 100%;
    text-align: center;               /* na wszelki wypadek */
  }
  
  .module-desc{
	text-align: justify;
    max-width: none;
    width: 100%;
  }
}

/* === ABOUT + GALLERY === */

/* Zacieśnij nieco odstępy jak na landing */
#about-wrapper > h2 { margin-top: 8px; }
#about-wrapper .section-description { margin-bottom: 18px; }

/* Reużywamy .module-row/.module-media/.module-copy z landing – spójny look */

/* Galeria: griddy */
.gallery {
  display: grid;
  gap: 10px;
  margin: 8px auto 20px;
  width: 100%;
  max-width: 1100px; /* zbieżne z landing max */
}

/* ~5 miniaturek w rzędzie (desktop) */
.gallery.grid-5 {
  grid-template-columns: repeat(5, 1fr);
}

/* ~3 miniaturek w rzędzie (GM) */
.gallery.grid-3 {
  grid-template-columns: repeat(3, 1fr);
}

/* Responsywnie zawężaj */
@media (max-width: 1024px){
  .gallery.grid-5 { grid-template-columns: repeat(4, 1fr); }
  .gallery.grid-3 { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px){
  .gallery.grid-5 { grid-template-columns: repeat(3, 1fr); }
  .gallery.grid-3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px){
  .gallery.grid-5 { grid-template-columns: repeat(2, 1fr); }
  .gallery.grid-3 { grid-template-columns: repeat(1, 1fr); }
}

.gallery__item {
  position: relative;
  display: block;
  border-radius: 10px;
  overflow: hidden;
  background: #fff;
  border: 1px solid #e6e6e6;
  box-shadow: 0 1px 6px rgba(0,0,0,.06);
}

.gallery__item img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform .25s ease;
}
.gallery__item:hover img { transform: scale(1.03); }

.gallery__caption {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 13px;
  padding: 6px 8px;
  background: #f6f8f3;
  border-top: 1px solid #e6e6e6;
}
/* jeśli masz wrapper na miniaturę */
.gallery__thumb { 
  line-height: 0;        /* bezpiecznik – kasuje ewentualną przestrzeń po baseline */
}
.gallery__caption .gm-name { font-weight: 600; color:#2c3e50; }
.gallery__caption .gm-elo  { color:#444; }

/* ---------- LIGHTBOX ---------- */
.lightbox.hidden { display: none !important; }

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;              /* ponad headerem/menu */
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;       /* wyłącz globalnie, włączamy na elementach aktywnych */
}

.lightbox__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.7);
  pointer-events: auto;       /* overlay klikalny (zamyka) */
}

.lightbox__dialog {
  position: relative;
  max-width: min(96vw, 1200px);
  max-height: 92vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px 56px;         /* miejsce na strzałki */
  box-sizing: border-box;
  pointer-events: none;       /* przyciski włączą własne */
  box-shadow: 0 12px 32px rgba(0,0,0,0.35);
}

.lightbox__img {
  max-width: 100%;
  max-height: 84vh;
  display: block;
  border-radius: 14px;
  box-shadow: 0 12px 40px rgba(0,0,0,.35);
  pointer-events: auto;       /* pozwala np. na context menu */
}

.lightbox__caption {
  position: absolute;
  left: 12px; right: 12px; bottom: 10px;
  text-align: center;
  color: #fff;
  font-size: 14px;
  line-height: 1.35;
  padding: 6px 10px;
  border-radius: 10px;
  background: rgba(0,0,0,.35);
  backdrop-filter: blur(2px);
  pointer-events: none;
}

/* Przyciski sterujące */
.lightbox__prev,
.lightbox__next,
.lightbox__close {
  position: absolute;
  border: 0;
  outline: 0;
  cursor: pointer;
  pointer-events: auto;       /* te elementy muszą być klikalne */
  background: rgba(0,0,0,.55);
  color: #fff;
  transition: transform .15s ease, background .15s ease;
  box-shadow: 0 6px 18px rgba(0,0,0,.35);
}

/* Strzałki */
.lightbox__prev,
.lightbox__next {
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border-radius: 50%;
  font-size: 28px;
  line-height: 46px;
  text-align: center;
}

.lightbox__prev { left: 12px; }
.lightbox__next { right: 12px; }

.lightbox__prev:hover,
.lightbox__next:hover {
  background: rgba(0,0,0,.75);
  transform: translateY(-50%) scale(1.04);
}

/* Zamknij */
.lightbox__close {
  top: 10px;
  right: 10px;
  width: 40px;
  height: 40px;
  border-radius: 10px;
  font-size: 22px;
  line-height: 40px;
  text-align: center;
}
.lightbox__close:hover {
  background: rgba(0,0,0,.75);
  transform: scale(1.04);
}

/* ---------- GALERIA (podpisy, żeby były widoczne) ---------- */
.gallery {
  --gap: 16px;
  display: grid;
  gap: var(--gap);
}

.gallery.grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gallery__item {
  display: block;
  flex-direction: column;
  gap: 8px;
}

.gallery__item img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 12px;
}

.gallery__caption {
  display: block;
  flex-direction: column;
  gap: 2px;
  text-align: center;
}

.gallery__caption .gm-name {
  font-weight: 600;
}

.gallery__caption .gm-elo {
  opacity: .85;
  font-size: .95em;
}

/* Responsywność dla wąskich ekranów */
@media (max-width: 768px) {
  .gallery.grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lightbox__dialog { padding: 12px 48px; }
  .lightbox__prev, .lightbox__next { width: 42px; height: 42px; line-height: 42px; }
}

/* ==== ABOUT (O nas): statyczny content ==== */

/* Wyłącz animacje/hover dla pigułki i obrazka na tej stronie */
#about-wrapper .module-pill {
  cursor: default;
  transition: none;
}
#about-wrapper .module-pill:hover {
  transform: none;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);   /* jak stan bazowy */
  background: rgba(141,198,63,0.12);
}

/* .module-media na O nas nie jest linkiem i nie ma hovera */
#about-wrapper .module-media {
  transition: none;
}
#about-wrapper .module-media:hover {
  transform: none;
  box-shadow: 0 2px 10px rgba(0,0,0,.08);  /* jak bazowy, bez podbicia */
}

/* ==== Portrety (pionowe zdjęcia) – pełne, wyśrodkowane, bez „giganta” ==== */
/* Kontener obrazka: pionowy format, stała proporcja i sensowna maks. wysokość */
#about-wrapper .about-media {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: none;
	/* lekko cień + zaokrąglenie jak dotąd */
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(0,0,0,.08);
	/* pionowy format */
	aspect-ratio: 3 / 4;
	max-height: 460px;
	/* wycentrowanie w kolumnie */
	margin-inline: auto;     /* <-- kluczowe: środek horyzontalnie */
	overflow: hidden;        /* żeby rogi zdjęcia były „ścięte” */
}

/* Sam obraz: pokaż CAŁOŚĆ bez przycinania */
#about-wrapper .about-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;        /* <-- wypełnij całą ramkę */
  object-position: center;  /* <-- środek zdjęcia */
  display: block;
}

/* Równa wysokość obu kolumn w wierszu (jak na landing), ale bez rozpychania na mobile */
@media (min-width: 768px) {
  #about-wrapper .module-row { align-items: stretch; }
}
@media (max-width: 767.98px) {
  #about-wrapper .module-row { align-items: center; }
}

/* Opcjonalnie: trochę ciaśniejszy opis na O nas (portrety są wyższe) */
#about-wrapper .module-desc {
  max-width: 60ch;           /* czytelna szerokość akapitu */
  text-align: justify;
}
#about-wrapper {
  max-width: 1100px;           /* szerokość głównej siatki */
  margin: 0 auto;              /* wyśrodkuj */
  padding: 0 20px;             /* lekki margines po bokach na małych ekranach */
  box-sizing: border-box;
}

/* Kafelki (zielone tła) – zachowaj promień i cień */
#about-wrapper .module-row {
  border-radius: 12px;
  margin-bottom: 32px;          /* odstęp między kafelkami */
}

/* płynne przejście obrazka */
.lightbox .lightbox__img {
  transition: opacity 200ms ease, filter 200ms ease;
  opacity: 1;
  filter: none;
  max-width: 100%;
  height: auto;
  display: block;
  /* anty-skok layoutu: respektuj aspect-ratio jeśli JS je ustawi */
  object-fit: contain;
}

/* subtelny stan ładowania – lekkie przyciemnienie i blur */
.lightbox.is-loading .lightbox__img,
.lightbox .lightbox__img.is-fading-out {
  opacity: 0.4;
  filter: blur(2px);
}

/* gdy nowe zdjęcie już gotowe – delikatne wprowadzenie */
.lightbox .lightbox__img.is-fading-in {
  opacity: 1;
  filter: none;
}
/* =======================
   WSPARCIE — layout & karty
   ======================= */
.support-section {
  padding: clamp(1rem, 2vw, 2rem);
}

.support-header {
  max-width: 960px;
  margin: 0 auto 1.5rem auto;
  text-align: center;
}

.support-title {
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  line-height: 1.2;
  margin: 0 0 .75rem 0;
}

.support-lead {
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  color: var(--text-muted, #555);
  max-width: 900px;
  text-align: justify;     /* wyrównanie do obu krawędzi */
  margin: 0 auto 2rem auto; /* wyśrodkowanie + odstęp dolny */
}

.support-grid-wrap {
  max-width: 1100px;
  margin: 1.5rem auto 0 auto;
}

#support-platforms-title {
  display: block;
  text-align: center;
  font-weight: 700;
  font-size: 1.5rem;
  margin-bottom: 1rem;
}

.alert-success{
  display:none;
  border:1px solid #2e7d32;
  background: rgba(46,125,50,.06);
  border-radius:8px;
  padding:10px 12px;
  margin:0 0 12px 0;
  font-weight:500;
}
.alert-success.show{ display:block; }
.alert-success i{ margin-right:8px; }
/* Styl błędów walidacji w formularzach */
.text-error {
  color: #d32f2f;          /* intensywna czerwień (material red 700) */
  font-size: 0.9rem;       /* nieco mniejsza czcionka */
  margin-top: 4px;
  display: block;          /* każdy błąd w nowej linii pod polem */
}

/* (opcjonalnie) czerwony obrys inputa z błędem */
input.error,
select.error,
textarea.error {
  border: 1px solid #d32f2f !important;
  background-color: #fff5f5;
}

.contact-grid{
  display: grid;
  grid-template-columns: 1fr;      /* domyślnie jedna kolumna */
  gap: 12px 16px;
  align-items: start;
}

.contact-item--full{
  grid-column: 1 / -1;
}

/* węższe pola tekstowe (Imię, Email, Temat) — ta sama szerokość */
.field-narrow input,
.field-narrow select{
  width: 100%;
  max-width: 460px;   /* dostosuj do gustu, np. 420–520px */
}

#contact-wrapper textarea{
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/* (opcjonalnie) wyrównanie captcha, aby nie wypychała layoutu */
#contact-wrapper #captcha{
  max-width: 300px;
}

/* CALCULATOR CSS START */
/* === Kalkulator norm (dodatki) === */
.seg { display:inline-flex; gap:6px; }
.seg.seg-s .seg-btn{ padding: 2px 8px; }
.seg.seg-4 .seg-btn{ min-width: 34px; }
.seg-btn{
  border:1px solid #bdbdbd;
  background:#fff;
  padding: 4px 10px;
  border-radius: 6px;
  cursor: pointer;
}
.seg-btn.is-active{
  background: rgba(141,198,63,.15);
  border-color: #8DC63F;
  box-shadow: 0 0 0 2px rgba(141,198,63,.18);
}

.rounds-table .inp, #playerCategory, #playersSelect { width: 100%; }

.mr-8{ margin-right: 8px; }
.mt-6{ margin-top: 6px; }
.mt-8{ margin-top: 8px; }

.abbr-tip{
  display: inline-block; margin-left: 6px; border-bottom: 1px dotted #888; cursor: help;
}
.abbr-tip:hover::after{
  content: attr(data-tip);
  position: absolute; background:#111; color:#fff; padding:6px 8px; border-radius:6px;
  transform: translateX(6px); white-space: nowrap; font-size: 12px;
}
/* CALCULATOR CSS END */

/* === ABOUT + GALLERY END === */
/*@media (max-width: 767.98px){
  body::after{
    content:"MOBILE"; position:fixed; right:6px; bottom:6px; background:#000; color:#fff; padding:2px 6px; font:12px/1 monospace; z-index:99999;
  }
}*/

