/**
 * ChessPairings WP plugin — frontend styles.
 * Tema-neutri: usano variabili CSS che si auto-adattano se il tema le definisce.
 * Tutti i selettori prefissati con .cp- per evitare collisioni.
 */

.cp-block {
	--cp-border: rgba(0, 0, 0, 0.08);
	--cp-border-strong: rgba(0, 0, 0, 0.16);
	--cp-bg-alt: rgba(0, 0, 0, 0.03);
	--cp-bg-hover: rgba(0, 0, 0, 0.05);
	--cp-accent: #1d6cf2;
	--cp-success: #1e7e34;
	--cp-warning: #b8860b;
	--cp-danger: #b32d2e;
	--cp-muted: #6c757d;
	--cp-radius: 6px;
	margin: 1.25em 0;
	font-size: 0.95em;
	line-height: 1.5;
}

/* Tabelle */
.cp-table {
	width: 100%;
	border-collapse: collapse;
	margin: 0.75em 0;
	font-size: inherit;
}
.cp-table thead th {
	background: var(--cp-bg-alt);
	border-bottom: 2px solid var(--cp-border-strong);
	padding: 0.5em 0.6em;
	text-align: left;
	font-weight: 600;
	white-space: nowrap;
	position: sticky;
	top: 0;
	z-index: 1;
}
.cp-table tbody td {
	padding: 0.45em 0.6em;
	border-bottom: 1px solid var(--cp-border);
	vertical-align: middle;
}
.cp-table tbody tr:nth-child(even) td { background: var(--cp-bg-alt); }
.cp-table tbody tr:hover td { background: var(--cp-bg-hover); }

.cp-col-pos, .cp-col-tav, .cp-col-num { width: 3em; text-align: center; font-variant-numeric: tabular-nums; }
.cp-col-tit { width: 3em; text-align: center; font-weight: 600; }
.cp-col-fed, .cp-col-sex, .cp-col-cat { width: 4em; text-align: center; }
.cp-col-rtg, .cp-col-rtg-b, .cp-col-rtg-n, .cp-col-anno { width: 4.5em; text-align: right; font-variant-numeric: tabular-nums; }
.cp-col-pts { width: 3.5em; text-align: center; font-variant-numeric: tabular-nums; }
.cp-col-sp { width: 4em; text-align: right; font-variant-numeric: tabular-nums; }
.cp-col-risultato { width: 6em; text-align: center; font-weight: 600; font-variant-numeric: tabular-nums; }

/* Header torneo */
.cp-torneo-header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1em;
	flex-wrap: wrap;
	border-bottom: 1px solid var(--cp-border);
	padding-bottom: 0.5em;
	margin-bottom: 1em;
}
.cp-torneo-titolo { margin: 0; }
.cp-link-esterno {
	color: var(--cp-muted);
	text-decoration: none;
	font-size: 0.65em;
	vertical-align: super;
	margin-left: 0.3em;
	opacity: 0.6;
}
.cp-link-esterno:hover { opacity: 1; color: var(--cp-accent); }

/* Stato badges */
.cp-stato {
	display: inline-block;
	padding: 0.2em 0.7em;
	border-radius: 999px;
	font-size: 0.8em;
	font-weight: 600;
	white-space: nowrap;
}
.cp-stato-iscrizioni { background: rgba(30, 126, 52, 0.15); color: var(--cp-success); }
.cp-stato-in_corso { background: rgba(29, 108, 242, 0.15); color: var(--cp-accent); }
.cp-stato-concluso { background: rgba(108, 117, 125, 0.15); color: var(--cp-muted); }

.cp-badge {
	display: inline-block;
	padding: 0.15em 0.55em;
	border-radius: 4px;
	font-size: 0.75em;
	font-weight: 600;
	background: var(--cp-bg-alt);
	margin-left: 0.4em;
	vertical-align: middle;
}
.cp-badge-squadre { background: rgba(29, 108, 242, 0.12); color: var(--cp-accent); }

/* Tabs */
.cp-tabs {
	display: flex;
	gap: 0;
	flex-wrap: wrap;
	border-bottom: 2px solid var(--cp-border);
	margin-bottom: 1em;
}
.cp-tab {
	padding: 0.6em 1em;
	color: inherit;
	text-decoration: none;
	border-bottom: 2px solid transparent;
	margin-bottom: -2px;
}
.cp-tab:hover { background: var(--cp-bg-hover); }
.cp-tab-active {
	border-bottom-color: var(--cp-accent);
	font-weight: 600;
}

/* Turni nav */
.cp-turni-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 0.3em;
	margin: 0.75em 0;
}
.cp-turno-link {
	display: inline-block;
	min-width: 2.5em;
	padding: 0.3em 0.6em;
	text-align: center;
	text-decoration: none;
	border: 1px solid var(--cp-border-strong);
	border-radius: var(--cp-radius);
	color: inherit;
	font-size: 0.9em;
}
.cp-turno-link:hover { background: var(--cp-bg-hover); }
.cp-turno-link-active {
	background: var(--cp-accent);
	color: #fff;
	border-color: var(--cp-accent);
}

/* Meta dl */
.cp-meta {
	display: grid;
	grid-template-columns: max-content 1fr;
	gap: 0.3em 1em;
	margin: 0.5em 0 1em;
}
.cp-meta dt { font-weight: 600; color: var(--cp-muted); }
.cp-meta dd { margin: 0; }

/* Buttons */
.cp-button {
	display: inline-block;
	padding: 0.5em 1em;
	border-radius: var(--cp-radius);
	border: 1px solid var(--cp-border-strong);
	background: var(--cp-bg-alt);
	color: inherit;
	text-decoration: none;
	font-size: 0.95em;
	cursor: pointer;
}
.cp-button:hover { background: var(--cp-bg-hover); }
.cp-button-primary {
	background: var(--cp-accent);
	color: #fff;
	border-color: var(--cp-accent);
}
.cp-button-primary:hover { filter: brightness(0.95); }
.cp-button-sm { padding: 0.3em 0.7em; font-size: 0.85em; }
.cp-actions { display: flex; gap: 0.5em; flex-wrap: wrap; margin: 1em 0; }

/* Strumenti progressivi */
.cp-tools {
	display: flex;
	align-items: center;
	gap: 0.5em;
	flex-wrap: wrap;
	margin: 0.75em 0;
}
.cp-search-label { flex: 1 1 16em; }
.cp-search {
	box-sizing: border-box;
	width: 100%;
	min-height: 2.2em;
	padding: 0.4em 0.65em;
	border: 1px solid var(--cp-border-strong);
	border-radius: var(--cp-radius);
	background: transparent;
	color: inherit;
}
.cp-sort-button {
	all: unset;
	display: inline-flex;
	align-items: center;
	gap: 0.25em;
	cursor: pointer;
	font: inherit;
	font-weight: inherit;
}
th[aria-sort="ascending"] .cp-sort-button::after { content: "\2191"; }
th[aria-sort="descending"] .cp-sort-button::after { content: "\2193"; }
.cp-no-results {
	padding: 0.75em;
	margin: 0.5em 0;
	color: var(--cp-muted);
	border: 1px dashed var(--cp-border-strong);
	border-radius: var(--cp-radius);
}
.cp-stale-notice {
	padding: 0.65em 0.8em;
	margin: 0.75em 0;
	border-left: 3px solid var(--cp-warning);
	background: rgba(184, 134, 11, 0.08);
	color: inherit;
	font-size: 0.9em;
}
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Programma turni */
.cp-round-schedule {
	list-style: none;
	padding: 0;
	margin: 0.75em 0;
}
.cp-round-item {
	display: grid;
	grid-template-columns: minmax(8em, 0.7fr) 2fr;
	gap: 1em;
	align-items: center;
	padding: 0.7em 0.8em;
	border-bottom: 1px solid var(--cp-border);
}
.cp-round-current {
	border-left: 3px solid var(--cp-accent);
	background: var(--cp-bg-alt);
}
.cp-round-number { font-weight: 600; }
.cp-round-meta { display: flex; gap: 1em; align-items: center; flex-wrap: wrap; color: var(--cp-muted); }
.cp-round-meta progress { width: min(12em, 100%); accent-color: var(--cp-accent); }

/* Calendario */
.cp-calendario-list { list-style: none; padding: 0; margin: 0; }
.cp-calendario-item {
	display: grid;
	grid-template-columns: 10em 1fr auto;
	gap: 1em;
	align-items: center;
	padding: 0.75em;
	border: 1px solid var(--cp-border);
	border-radius: var(--cp-radius);
	margin-bottom: 0.5em;
}
.cp-cal-data { font-weight: 600; font-variant-numeric: tabular-nums; }
.cp-cal-titolo { margin: 0 0 0.2em; font-size: 1.05em; }
.cp-cal-titolo a { color: inherit; }
.cp-cal-meta {
	display: flex;
	gap: 0.6em;
	flex-wrap: wrap;
	font-size: 0.85em;
	color: var(--cp-muted);
}
.cp-cal-stato { font-weight: 600; }
.cp-fed-badge {
	background: var(--cp-bg-alt);
	padding: 0.15em 0.5em;
	border-radius: var(--cp-radius);
	font-size: 0.85em;
	font-weight: 600;
}

/* Match squadre */
.cp-match {
	border: 1px solid var(--cp-border);
	border-radius: var(--cp-radius);
	margin: 0.75em 0;
	padding: 0.75em;
}
.cp-match-bye { opacity: 0.7; font-style: italic; }
.cp-match-header {
	display: grid;
	grid-template-columns: 4em 1fr 3em 1fr;
	gap: 0.5em;
	align-items: center;
	margin-bottom: 0.5em;
	font-size: 1.05em;
}
.cp-match-tav { font-weight: 600; color: var(--cp-muted); }
.cp-match-team { display: flex; align-items: center; gap: 0.4em; }
.cp-team-osp { justify-content: flex-end; }
.cp-match-punti { font-variant-numeric: tabular-nums; font-weight: 700; }
.cp-match-vs { text-align: center; font-weight: 600; }
.cp-table-board { margin-top: 0.4em; font-size: 0.9em; }

/* Squadre */
.cp-squadra { margin: 0.5em 0; border: 1px solid var(--cp-border); border-radius: var(--cp-radius); padding: 0.5em 0.75em; }
.cp-squadra-summary { cursor: pointer; }
.cp-squadra-cap { color: var(--cp-muted); margin-left: 0.6em; font-size: 0.9em; }
.cp-squadra-count { color: var(--cp-muted); font-size: 0.85em; margin-left: 0.4em; }
.cp-table-roster { margin-top: 0.5em; }

/* Risultato */
.cp-risultato-pendente { color: var(--cp-muted); }
.cp-titolo { font-weight: 700; color: var(--cp-accent); margin-right: 0.2em; }
.cp-punti-pre { color: var(--cp-muted); font-size: 0.85em; font-variant-numeric: tabular-nums; }
.cp-bye-label { color: var(--cp-warning); font-weight: 600; }
.cp-bye-text { color: var(--cp-muted); }

/* Stati riga */
.cp-row-ritirato td, .cp-row-cancellato td { opacity: 0.55; text-decoration: line-through; }

/* Empty / errore */
.cp-empty, .cp-error {
	padding: 1em;
	border-radius: var(--cp-radius);
	border: 1px solid var(--cp-border);
	background: var(--cp-bg-alt);
	text-align: center;
	color: var(--cp-muted);
}
.cp-error {
	color: var(--cp-danger);
	background: rgba(179, 45, 46, 0.05);
	border-color: rgba(179, 45, 46, 0.3);
}

.cp-num-iscritti, .cp-turno-label { color: var(--cp-muted); font-weight: normal; }
.cp-legend { color: var(--cp-muted); margin-top: 0.4em; }
.cp-descrizione { margin: 1em 0; }

/* Tornei cards */
.cp-tornei-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 1em;
}
.cp-torneo-card {
	border: 1px solid var(--cp-border);
	border-radius: var(--cp-radius);
	padding: 1em;
	display: flex;
	flex-direction: column;
}
.cp-card-header {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 0.5em;
	margin-bottom: 0.75em;
}
.cp-card-titolo { margin: 0; font-size: 1.05em; }
.cp-card-titolo a { color: inherit; text-decoration: none; }
.cp-card-titolo a:hover { text-decoration: underline; }
.cp-card-badges { display: flex; gap: 0.3em; flex-shrink: 0; flex-wrap: wrap; }
.cp-card-body { flex: 1; margin-bottom: 0.75em; }
.cp-card-meta-item {
	display: flex;
	align-items: center;
	gap: 0.4em;
	font-size: 0.9em;
	color: var(--cp-muted);
	margin-bottom: 0.25em;
}
.cp-card-icon { flex-shrink: 0; width: 1.2em; text-align: center; }
.cp-card-actions { display: flex; gap: 0.5em; flex-wrap: wrap; }
.cp-tornei-list { display: flex; flex-direction: column; gap: 0.75em; }
.cp-tornei-list .cp-torneo-card { flex-direction: row; align-items: center; }
.cp-tornei-list .cp-card-header { flex: 1; }
.cp-tornei-list .cp-card-body { flex: 2; margin-bottom: 0; }
.cp-tornei-list .cp-card-actions { flex-shrink: 0; }
.cp-stato-iscrizioni .cp-torneo-card, .cp-torneo-card.cp-stato-iscrizioni { border-left: 3px solid var(--cp-success); }
.cp-torneo-card.cp-stato-in_corso { border-left: 3px solid var(--cp-accent); }

/* Responsive */
@media (max-width: 600px) {
	.cp-table { font-size: 0.85em; }
	.cp-table thead th, .cp-table tbody td { padding: 0.35em 0.4em; }
	.cp-calendario-item { grid-template-columns: 1fr; }
	.cp-cal-data { font-size: 0.9em; }
	.cp-match-header { grid-template-columns: 1fr; gap: 0.2em; text-align: center; }
	.cp-team-osp { justify-content: center; }
	.cp-meta { grid-template-columns: 1fr; }
	.cp-meta dt { margin-top: 0.4em; }
	.cp-round-item { grid-template-columns: 1fr; gap: 0.25em; }
	.cp-tools .cp-button { flex: 0 0 auto; }
}

/* Print */
@media print {
	.cp-tabs, .cp-turni-nav, .cp-actions, .cp-button, .cp-tools { display: none; }
	.cp-block { break-inside: avoid; }
	.cp-table { font-size: 9pt; }
	body.cp-print-mode * { visibility: hidden; }
	body.cp-print-mode .cp-print-target,
	body.cp-print-mode .cp-print-target * { visibility: visible; }
	body.cp-print-mode .cp-print-target { position: absolute; inset: 0 auto auto 0; width: 100%; }
}

/* Dark theme — eredita se il tema usa color-scheme dark */
@media (prefers-color-scheme: dark) {
	.cp-block {
		--cp-border: rgba(255, 255, 255, 0.12);
		--cp-border-strong: rgba(255, 255, 255, 0.24);
		--cp-bg-alt: rgba(255, 255, 255, 0.05);
		--cp-bg-hover: rgba(255, 255, 255, 0.08);
		--cp-muted: #9aa0a6;
	}
}
