/* TopSmash — componenti
   ------------------------------------------------------------------ */

/* ── Pulsanti ─────────────────────────────────────────────────────── */
.ts-btn {
	--ts-btn-bg: var(--ts-lime);
	--ts-btn-fg: var(--ts-on-accent);
	position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
	min-height: 50px; padding: 0 1.5rem; border: 0; border-radius: var(--ts-radius-pill);
	background: var(--ts-btn-bg); color: var(--ts-btn-fg);
	font-weight: 700; font-size: .95rem; letter-spacing: -.01em; cursor: pointer;
	overflow: hidden; isolation: isolate;
	transition: transform .25s var(--ts-ease), box-shadow .25s var(--ts-ease), color .25s var(--ts-ease);
}
.ts-btn::after {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background: var(--ts-grad); opacity: 0; transition: opacity .3s var(--ts-ease);
}
.ts-btn:hover { transform: translateY(-2px); box-shadow: 0 14px 30px -14px color-mix(in srgb, var(--ts-lime) 70%, transparent); }
.ts-btn:active { transform: translateY(0); }
.ts-btn .ts-icon { transition: transform .25s var(--ts-ease); }
.ts-btn:hover .ts-icon { transform: translateX(3px); }

.ts-btn--ghost { --ts-btn-bg: transparent; --ts-btn-fg: var(--ts-text); border: 1px solid var(--ts-line-strong); }
.ts-btn--ghost:hover { box-shadow: none; border-color: var(--ts-text); }
.ts-btn--grad { --ts-btn-bg: transparent; --ts-btn-fg: #fff; }
.ts-btn--grad::after { opacity: 1; }
.ts-btn--sm { min-height: 42px; padding: 0 1.1rem; font-size: .86rem; }
.ts-btn--block { width: 100%; }

/* ── Pill e badge ─────────────────────────────────────────────────── */
.ts-pill {
	display: inline-flex; align-items: center; gap: .35rem;
	padding: .25rem .7rem; border-radius: var(--ts-radius-pill);
	background: var(--ts-elev); border: 1px solid var(--ts-line);
	font-size: .74rem; font-weight: 600; letter-spacing: .02em;
}
.ts-pill--accent { background: color-mix(in srgb, var(--ts-green) 20%, transparent); border-color: color-mix(in srgb, var(--ts-green) 45%, transparent); color: var(--ts-text); }
.ts-pill--lime { background: var(--ts-lime); color: var(--ts-on-accent); border-color: transparent; }
.ts-pill--live { color: #ff6b6b; border-color: rgba(255, 107, 107, .4); }
.ts-pill--live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; animation: ts-pulse 1.6s ease-in-out infinite; }

/* ── Card ─────────────────────────────────────────────────────────── */
.ts-card {
	position: relative; display: flex; flex-direction: column;
	background: var(--ts-surface); border: 1px solid var(--ts-line);
	border-radius: var(--ts-radius-lg); overflow: hidden;
	transition: transform .4s var(--ts-ease), border-color .4s var(--ts-ease), box-shadow .4s var(--ts-ease);
	transform-style: preserve-3d;
}
.ts-card:hover { border-color: var(--ts-line-strong); box-shadow: var(--ts-shadow); }
.ts-card__media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--ts-bg-2); }
.ts-card__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 25%; transition: transform .8s var(--ts-ease); }
.ts-card:hover .ts-card__media img { transform: scale(1.07); }
.ts-card__court { position: absolute; inset: 0; background:
	repeating-linear-gradient(90deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	repeating-linear-gradient(0deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	var(--ts-grad); opacity: .9; }
.ts-card__body { display: flex; flex-direction: column; gap: .7rem; padding: 1.2rem 1.3rem 1.4rem; flex: 1 1 auto; }
.ts-card__meta { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: 0; font-size: .76rem; color: var(--ts-muted); text-transform: uppercase; letter-spacing: .08em; }
.ts-card__title { margin: 0; font-size: var(--ts-step-1); }
.ts-card__excerpt { margin: 0; color: var(--ts-muted); font-size: .92rem; }
.ts-card__more { margin-top: auto; display: inline-flex; align-items: center; gap: .4rem; font-weight: 650; font-size: .88rem; color: var(--ts-accent-ink); }
.ts-card:hover .ts-card__more .ts-icon { transform: translateX(4px); }
.ts-card__more .ts-icon { transition: transform .3s var(--ts-ease); }

/* Card con bordo luminoso che segue il puntatore */
.ts-card--glow::before {
	content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
	background: radial-gradient(260px circle at var(--ts-mx, 50%) var(--ts-my, 0%), color-mix(in srgb, var(--ts-sky) 26%, transparent), transparent 70%);
	opacity: 0; transition: opacity .35s var(--ts-ease);
}
.ts-card--glow:hover::before { opacity: 1; }

/* ── Campo (scheda campo da gioco) ───────────────────────────────── */
.ts-court {
	position: relative; padding: 1.2rem 1.3rem; border-radius: var(--ts-radius);
	background: linear-gradient(160deg, var(--ts-surface), color-mix(in srgb, var(--ts-green) 10%, var(--ts-surface)));
	border: 1px solid var(--ts-line); display: grid; gap: .55rem;
}
.ts-court__name { display: flex; align-items: center; gap: .5rem; font-family: var(--ts-font-display); font-weight: 700; font-size: 1.05rem; }
.ts-court__tags { display: flex; flex-wrap: wrap; gap: .35rem; }
.ts-court__price { font-family: var(--ts-font-display); font-size: 1.5rem; font-weight: 800; }
.ts-court__price small { font-size: .7rem; font-weight: 500; color: var(--ts-muted); }

/* ── Numeri ───────────────────────────────────────────────────────── */
.ts-stat { display: grid; gap: .1rem; padding: 1rem 1.1rem; border-radius: var(--ts-radius); background: var(--ts-elev); border: 1px solid var(--ts-line); }
.ts-stat__value { font-family: var(--ts-font-display); font-size: clamp(1.7rem, 1.2rem + 1.6vw, 2.6rem); font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; background: var(--ts-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ts-stat__suffix { font-family: var(--ts-font-display); font-weight: 800; color: var(--ts-accent-ink); }
.ts-stat__label { font-size: .76rem; color: var(--ts-muted); text-transform: uppercase; letter-spacing: .1em; }

/* ── Marquee ──────────────────────────────────────────────────────── */
.ts-marquee { position: relative; overflow: hidden; border-block: 1px solid var(--ts-line); padding-block: .9rem; background: var(--ts-bg-2); }
.ts-marquee__track { display: flex; gap: 2.5rem; width: max-content; animation: ts-marquee 28s linear infinite; }
.ts-marquee:hover .ts-marquee__track { animation-play-state: paused; }
.ts-marquee span { display: inline-flex; align-items: center; gap: .6rem; font-family: var(--ts-font-display); font-weight: 700; font-size: 1rem; letter-spacing: -.01em; color: var(--ts-muted); white-space: nowrap; }
.ts-marquee span::after { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ts-lime); }

/* ── Tabelle ──────────────────────────────────────────────────────── */
.ts-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: var(--ts-radius); border: 1px solid var(--ts-line); }
table.ts-table { width: 100%; border-collapse: collapse; font-size: .92rem; margin: 0; }
.ts-table th, .ts-table td { padding: .75rem .9rem; text-align: left; border-bottom: 1px solid var(--ts-line); }
.ts-table th { font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; color: var(--ts-muted); font-weight: 650; background: var(--ts-elev); }
.ts-table tbody tr { transition: background .2s var(--ts-ease); }
.ts-table tbody tr:hover { background: var(--ts-elev); }
.ts-table tbody tr:last-child td { border-bottom: 0; }

/* ── Form ─────────────────────────────────────────────────────────── */
input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="search"],
input[type="number"], input[type="date"], input[type="time"], input[type="password"], select, textarea {
	width: 100%; min-height: 48px; padding: .7rem .9rem;
	background: var(--ts-surface); color: var(--ts-text);
	border: 1px solid var(--ts-line); border-radius: 12px;
	transition: border-color .2s var(--ts-ease), box-shadow .2s var(--ts-ease);
}
textarea { min-height: 140px; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--ts-green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ts-green) 22%, transparent); outline: none; }
label { display: block; font-size: .85rem; font-weight: 550; margin-bottom: .35rem; }

.ts-search { display: flex; gap: .5rem; }
.ts-search input { flex: 1 1 auto; }

/* ── Prose (contenuti articolo/pagina) ───────────────────────────── */
.ts-prose { max-width: var(--ts-narrow); }
.ts-prose > * + * { margin-top: 1.1em; }
.ts-prose h2 { margin-top: 2.2em; }
.ts-prose h3 { margin-top: 1.8em; }
.ts-prose img, .ts-prose figure { border-radius: var(--ts-radius); overflow: hidden; }
.ts-prose figcaption { font-size: .82rem; color: var(--ts-muted); margin-top: .5rem; }
.ts-prose ul, .ts-prose ol { padding-left: 1.3rem; }
.ts-prose li + li { margin-top: .35rem; }
.ts-prose .wp-block-image { margin-block: 2rem; }
.alignwide { width: min(100%, var(--ts-content)); margin-inline: auto; }
.alignfull { width: 100vw; margin-left: 50%; transform: translateX(-50%); }

/* ── Pagina: intestazioni, crumbs, paginazione ───────────────────── */
.ts-pagehead { padding-block: clamp(2.4rem, 6vw, 4.4rem) clamp(1.4rem, 3vw, 2.4rem); position: relative; }
.ts-pagehead__title { font-size: var(--ts-step-3); margin: 0; }
/* Su desktop i titoli delle pagine (e cio' che sta loro intorno) sono sempre al centro */
@media (min-width: 861px) {
	.ts-pagehead .ts-wrap { text-align: center; }
	.ts-pagehead .ts-crumbs, .ts-pagehead .ts-card__meta, .ts-pagehead__top { justify-content: center; }
	.ts-pagehead .ts-contacts { justify-content: center; }
	.ts-pagehead .ts-sechead__text { margin-inline: auto; }
}
.ts-crumbs { display: flex; align-items: center; gap: .4rem; font-size: .8rem; color: var(--ts-muted); margin-bottom: 1rem; }
.ts-crumbs a:hover { color: var(--ts-text); }

.ts-pagination { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; margin-top: 2.5rem; }
.ts-pagination .page-numbers {
	display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 .7rem;
	border: 1px solid var(--ts-line); border-radius: var(--ts-radius-pill); font-size: .9rem; color: var(--ts-muted);
}
.ts-pagination .page-numbers:hover { color: var(--ts-text); border-color: var(--ts-line-strong); }
.ts-pagination .current { background: var(--ts-lime); color: var(--ts-on-accent); border-color: transparent; font-weight: 700; }
.ts-pagination .is-prev { transform: rotate(180deg); }

/* ── Avvisi ───────────────────────────────────────────────────────── */
.ts-note { padding: 1rem 1.2rem; border-radius: var(--ts-radius); border: 1px dashed var(--ts-line-strong); color: var(--ts-muted); font-size: .9rem; }

/* ── Contatti ─────────────────────────────────────────────────────── */
.ts-contacts { display: grid; gap: .7rem; }
.ts-contacts a, .ts-contacts span { display: inline-flex; align-items: center; gap: .6rem; color: var(--ts-muted); }
.ts-contacts .ts-icon { color: var(--ts-accent-ink); flex: 0 0 auto; }

.ts-socials { display: flex; gap: .5rem; }
.ts-socials a { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--ts-line); border-radius: 50%; transition: background .2s var(--ts-ease), color .2s var(--ts-ease); }
.ts-socials a:hover { background: var(--ts-lime); color: var(--ts-on-accent); border-color: transparent; }

/* ── 404 ──────────────────────────────────────────────────────────── */
.ts-404 { text-align: center; padding-block: clamp(3rem, 10vw, 7rem); }
.ts-404__code { font-family: var(--ts-font-display); font-size: clamp(5rem, 22vw, 12rem); font-weight: 800; line-height: .9; background: var(--ts-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }

@media (max-width: 640px) {
	.ts-btn { width: 100%; }
	.ts-hero__cta .ts-btn { width: auto; flex: 1 1 auto; }
	.ts-card__body { padding: 1rem 1.05rem 1.2rem; }
	table.ts-table { font-size: .85rem; }
}

/* ── Campo isometrico dell'hero ──────────────────────────────────── */
.ts-hero__court { position: relative; min-height: 360px; }
.ts-hero__stage { position: relative; }
.ts-iso { width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 40px 60px rgba(0, 0, 0, .45)); }
.ts-iso__floor { fill: url(#ts-iso-floor); }
.ts-iso__side { fill: #0b2e4f; }
.ts-iso__side--front { fill: #0a2440; }
.ts-iso__glass { fill: url(#ts-iso-glass); stroke: rgba(255, 255, 255, .45); stroke-width: 1; }
.ts-iso__glass--front { fill: rgba(255, 255, 255, .05); stroke: rgba(255, 255, 255, .28); }
.ts-iso__fence { fill: url(#ts-iso-fence); stroke: rgba(255, 255, 255, .3); stroke-width: 1; }
.ts-iso__lines { fill: none; stroke: rgba(255, 255, 255, .9); stroke-width: 1.6; stroke-linejoin: round; stroke-dasharray: 1400; stroke-dashoffset: 1400; animation: ts-draw 2.6s var(--ts-ease) .3s forwards; }
.ts-iso__net { fill: rgba(6, 12, 34, .35); stroke: rgba(255, 255, 255, .7); stroke-width: 1; }
.ts-iso__mesh { stroke: rgba(255, 255, 255, .35); stroke-width: .8; }
.ts-iso__netband { stroke: #fff; stroke-width: 2.4; stroke-linecap: round; }
.ts-iso__trail { fill: none; stroke: var(--ts-lime); stroke-width: 1.4; stroke-dasharray: 2 7; stroke-linecap: round; opacity: .55; }
.ts-iso__ball { offset-distance: 0%; offset-rotate: 0deg; animation: ts-ball-run 2.8s cubic-bezier(.45, .05, .55, .95) infinite alternate; filter: drop-shadow(0 0 8px color-mix(in srgb, var(--ts-lime) 80%, transparent)); }
.ts-iso__shadow { fill: rgba(0, 0, 0, .45); offset-distance: 0%; offset-rotate: 0deg; animation: ts-ball-run 2.8s cubic-bezier(.45, .05, .55, .95) infinite alternate; }

.ts-float {
	position: absolute; z-index: 2; display: grid; gap: .35rem;
	padding: .85rem 1rem; border-radius: 18px;
	background: color-mix(in srgb, var(--ts-surface) 72%, transparent);
	border: 1px solid var(--ts-line-strong);
	backdrop-filter: blur(16px) saturate(140%);
	box-shadow: var(--ts-shadow-lg);
	animation: ts-bob 6s ease-in-out infinite;
}
.ts-float--tie { left: -6%; bottom: -6%; min-width: 250px; transition: border-color .25s var(--ts-ease); }
.ts-float--tie:hover { border-color: var(--ts-lime); }
.ts-float--slots { right: 2%; top: 2%; animation-delay: -3s; text-align: right; }
.ts-float__label { display: flex; }
.ts-float__teams { display: flex; align-items: center; gap: .6rem; }
.ts-float__vs { font-family: var(--ts-font-display); font-weight: 800; color: var(--ts-muted); font-size: .8rem; text-transform: uppercase; }
.ts-float__names { font-weight: 650; font-size: .86rem; max-width: 30ch; }
.ts-float__meta { display: inline-flex; align-items: center; gap: .35rem; font-size: .76rem; color: var(--ts-muted); }
.ts-float__big { font-family: var(--ts-font-display); font-size: 2.2rem; font-weight: 800; line-height: 1; color: var(--ts-accent-ink); }
@keyframes ts-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }

/* Numeri dell'hero: valore e suffisso sulla stessa riga */
.ts-stat { grid-template-columns: auto 1fr; align-items: baseline; column-gap: .15rem; }
.ts-stat__label { grid-column: 1 / -1; }

/* ── Tipologie di competizione ───────────────────────────────────── */
.ts-types { display: grid; gap: .9rem; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); margin-bottom: clamp(1.8rem, 4vw, 3rem); }
.ts-type {
	position: relative; display: grid; gap: .3rem; align-content: start;
	padding: 1.15rem 1.15rem 1.3rem; min-height: 158px;
	border-radius: var(--ts-radius-lg); border: 1px solid var(--ts-line);
	background: linear-gradient(160deg, var(--ts-surface), color-mix(in srgb, var(--ts-green) 8%, var(--ts-surface)));
	overflow: hidden; isolation: isolate;
	transition: transform .35s var(--ts-ease), border-color .35s var(--ts-ease);
}
.ts-type:hover { transform: translateY(-4px); border-color: color-mix(in srgb, var(--ts-lime) 50%, transparent); }
.ts-type__icon { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 14px; background: var(--ts-grad); color: #fff; margin-bottom: .55rem; box-shadow: 0 10px 24px -12px var(--ts-green); }
.ts-type__name { font-family: var(--ts-font-display); font-weight: 700; font-size: 1.05rem; line-height: 1.2; letter-spacing: -.01em; }
.ts-type__count { font-size: .74rem; color: var(--ts-muted); text-transform: uppercase; letter-spacing: .08em; }
.ts-type__go { position: absolute; right: 1rem; bottom: 1rem; color: var(--ts-accent-ink); opacity: 0; transform: translateX(-6px); transition: opacity .3s var(--ts-ease), transform .3s var(--ts-ease); }
.ts-type:hover .ts-type__go { opacity: 1; transform: none; }

/* Copertina generata delle competizioni senza immagine */
.ts-card__court { display: grid; place-items: center; }
.ts-card__court--campionati { background:
	repeating-linear-gradient(90deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	repeating-linear-gradient(0deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	linear-gradient(135deg, #1b6ef3, var(--ts-sky)); }
.ts-card__court--americani { background:
	repeating-linear-gradient(90deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	repeating-linear-gradient(0deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	linear-gradient(135deg, #8e44ad, #e4572e); }
.ts-card__court--eventi { background:
	repeating-linear-gradient(90deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	repeating-linear-gradient(0deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	linear-gradient(135deg, #d4a017, #ef6c00); }
.ts-card__court--circuiti { background:
	repeating-linear-gradient(90deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	repeating-linear-gradient(0deg, rgba(255,255,255,.07) 0 1px, transparent 1px 48px),
	linear-gradient(135deg, #0a1845, var(--ts-green)); }
.ts-card__glyph { width: 30%; height: auto; color: rgba(255, 255, 255, .9); stroke-width: 1.1; filter: drop-shadow(0 10px 20px rgba(0,0,0,.25)); transition: transform .8s var(--ts-ease); }
.ts-card:hover .ts-card__glyph { transform: scale(1.1) rotate(-6deg); }
.ts-card__court::after { content: ""; position: absolute; left: 50%; top: 0; bottom: 0; width: 2px; background: rgba(255,255,255,.35); transform: translateX(-50%); }

.ts-datebadge {
	position: absolute; left: 14px; top: 14px; z-index: 1;
	display: grid; justify-items: center; min-width: 58px; padding: .45rem .55rem .4rem;
	border-radius: 14px; background: var(--ts-lime); color: var(--ts-on-accent);
	box-shadow: 0 10px 24px -12px rgba(0,0,0,.6); line-height: 1;
}
.ts-datebadge strong { font-family: var(--ts-font-display); font-size: 1.45rem; font-weight: 800; }
.ts-datebadge span { font-size: .66rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; margin-top: .2rem; }

/* ── Campi: mini mappa e altezze allineate ───────────────────────── */
.ts-court { display: flex; flex-direction: column; gap: .7rem; transition: transform .35s var(--ts-ease), border-color .35s var(--ts-ease); }
.ts-court:hover { transform: translateY(-4px); border-color: var(--ts-line-strong); }
.ts-court__map { width: 100%; height: auto; border-radius: 10px; }
.ts-court__surface { fill: #1590c9; }
.ts-court.is-outdoor .ts-court__surface { fill: var(--ts-green); }
.ts-court__lines { fill: none; stroke: rgba(255,255,255,.85); stroke-width: 1.4; }
.ts-court__netline { stroke: #fff; stroke-width: 2.6; }
.ts-court__dot { fill: var(--ts-lime); transition: transform .9s var(--ts-ease); transform-box: fill-box; }
.ts-court:hover .ts-court__dot { transform: translate(84px, 32px); }
.ts-court__price { margin: auto 0 0; }
.ts-court__cta { margin-top: .2rem; }

/* Classifica in vetrina: podio */
.ts-rank { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 9px; font-weight: 700; font-variant-numeric: tabular-nums; background: var(--ts-elev); }
.ts-table tr.is-top .ts-rank { background: var(--ts-lime); color: var(--ts-on-accent); }

@media (max-width: 1024px) {
	.ts-hero__court { min-height: 0; margin-inline: auto; width: 100%; }
	.ts-float--tie { left: 0; bottom: -6%; }
}

@media (max-width: 640px) {
	.ts-header__cta { display: none; }
	.ts-float { padding: .65rem .8rem; border-radius: 14px; }
	.ts-float--tie { position: relative; left: auto; bottom: auto; margin-top: -1.2rem; min-width: 0; }
	.ts-float--slots { display: none; }
	.ts-types { grid-template-columns: repeat(2, 1fr); }
	.ts-type { min-height: 132px; padding: 1rem; }
	.ts-type__go { opacity: 1; transform: none; }
}
.ts-card__meta > span, .ts-card__meta > time { display: inline-flex; align-items: center; gap: .3rem; }
.ts-icon { display: inline-block; flex: 0 0 auto; vertical-align: middle; }

/* ── Il circolo ───────────────────────────────────────────────────── */
.ts-club__photo { position: relative; margin: 0; border-radius: var(--ts-radius-lg); overflow: hidden; aspect-ratio: 4 / 3; box-shadow: var(--ts-shadow-lg); }
.ts-club__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ts-ease); }
.ts-club__photo:hover img { transform: scale(1.05); }
.ts-club__badge { position: absolute; left: 16px; bottom: 16px; display: inline-flex; align-items: center; gap: .45rem; padding: .55rem .9rem; border-radius: var(--ts-radius-pill); background: var(--ts-lime); color: var(--ts-on-accent); font-weight: 700; font-size: .84rem; z-index: 2; }
.ts-club__points { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.ts-club__points li { display: flex; gap: .9rem; align-items: flex-start; color: var(--ts-muted); }
.ts-club__points strong { color: var(--ts-text); font-family: var(--ts-font-display); }
.ts-club__points .ts-type__icon { flex: 0 0 auto; margin: 0; }
.ts-todo { border-left: 3px solid #e5b52f; padding: .5rem .9rem; background: rgba(255,196,61,.1); border-radius: 0 10px 10px 0; font-size: .92rem; }

/* ── Titoli delle pagine come in home: maiuscolo, pieno ─────────────── */
.ts-pagehead__title { font-family: var(--ts-font-display); font-size: clamp(2rem, 1.25rem + 3vw, 3.7rem); line-height: 1; letter-spacing: -.04em; text-transform: uppercase; font-weight: 800; text-wrap: balance; }

/* ── Fascia fotografica delle pagine interne ───────────────────────── */
.ts-pagehead--photo {
	--ts-text: #fff;
	--ts-muted: rgba(255, 255, 255, .8);
	--ts-line: rgba(255, 255, 255, .22);
	--ts-line-strong: rgba(255, 255, 255, .36);
	--ts-elev: rgba(255, 255, 255, .1);
	--ts-accent-ink: var(--ts-lime);
	color: #fff;
	isolation: isolate; overflow: hidden;
	margin-top: calc(-1 * var(--ts-header-h));
	min-height: clamp(320px, 34vw, 460px);
	display: flex; flex-direction: column; justify-content: flex-end;
	padding: calc(var(--ts-header-h) + clamp(3.6rem, 7vw, 5.6rem)) 0 clamp(2.8rem, 5vw, 4.2rem);
}
.ts-pagehead--photo > .ts-wrap { position: relative; width: 100%; text-align: center; }
.ts-pagehead--photo .ts-crumbs, .ts-pagehead--photo .ts-card__meta, .ts-pagehead--photo .ts-pagehead__top, .ts-pagehead--photo .ts-contacts { justify-content: center; }
.ts-pagehead--photo .ts-pagehead__title { text-shadow: 0 8px 34px rgba(0, 0, 0, .45); }
.ts-pagehead--photo .ts-kicker { color: var(--ts-lime); }
.ts-pagehead--photo .ts-back { background: rgba(6, 12, 34, .35); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.ts-pagehead__bg {
	position: absolute; inset: 0; z-index: -1; background: #060c22;
	-webkit-mask-image: linear-gradient(180deg, #000 0, #000 calc(100% - 64px), transparent 100%);
	mask-image: linear-gradient(180deg, #000 0, #000 calc(100% - 64px), transparent 100%);
}
.ts-pagehead__bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 32%; animation: ts-pagehead-zoom 16s cubic-bezier(.25, .1, .25, 1) both; }
.ts-pagehead__bg::after {
	content: ""; position: absolute; inset: 0;
	background:
		radial-gradient(ellipse 70% 60% at 50% 70%, rgba(6, 12, 34, .55), transparent 75%),
		linear-gradient(180deg, rgba(6, 12, 34, .78) 0%, rgba(6, 12, 34, .42) 38%, rgba(6, 12, 34, .62) 72%, rgba(6, 12, 34, .9) 100%);
}
@keyframes ts-pagehead-zoom { from { transform: scale(1.08); } to { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) { .ts-pagehead__bg img { animation: none; } }
/* Le pagine del plugin hanno il contenuto subito sotto: un po' di respiro in più */
.ts-pagehead--photo.ts-pagehead--view { padding-bottom: clamp(2.4rem, 4vw, 3.4rem); }
.ts-pagehead--photo + .ts-section { padding-top: clamp(1.6rem, 3vw, 2.4rem) !important; }
@media (max-width: 640px) {
	.ts-pagehead--photo { min-height: 280px; padding-top: calc(var(--ts-header-h) + 3.2rem); }
}

/* ── Home: competizioni in arrivo, card grandi ─────────────────────── */
.ts-upcoming .ts-card__media { aspect-ratio: 4 / 3; }
.ts-upcoming .ts-card__title { font-size: var(--ts-step-1); }
.ts-upcoming__more { display: flex; justify-content: center; margin: clamp(1.8rem, 4vw, 2.6rem) 0 0; }

/* ── Il circolo: icone lineari arancio, senza riquadro ─────────────── */
.ts-club__points .ts-type__icon { width: auto; height: auto; background: none; box-shadow: none; border-radius: 0; color: var(--ts-accent-ink); padding-top: .1rem; }
.ts-club__points li { padding-bottom: 1rem; border-bottom: 1px solid var(--ts-line); }
.ts-club__points li:last-child { border-bottom: 0; padding-bottom: 0; }

/* ── Mobile: i campi in carosello da scorrere col dito ─────────────── */
@media (max-width: 640px) {
	#campi .ts-grid { display: flex; gap: .8rem; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; margin-inline: calc(-1 * var(--ts-gutter)); padding: .2rem var(--ts-gutter) .8rem; scroll-padding-inline: var(--ts-gutter); }
	#campi .ts-grid::-webkit-scrollbar { display: none; }
	#campi .ts-grid > * { flex: 0 0 84%; scroll-snap-align: start; min-width: 0; }
}

/* ── Contatti: recapiti e mappa accanto al modulo ──────────────────── */
.ts-contactpage { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(1.6rem, 4vw, 3.4rem); align-items: start; }
.ts-contactpage .ts-prose { max-width: none; margin: 0; }
.ts-contactinfo { position: sticky; top: calc(var(--ts-header-h) + 1.2rem); display: grid; gap: 1.2rem; padding: clamp(1.3rem, 3vw, 2rem); border: 1px solid var(--ts-line); border-radius: var(--ts-radius-lg); background: color-mix(in srgb, var(--ts-surface) 70%, transparent); }
.ts-contactinfo__title { margin: 0; font-family: var(--ts-font-display); font-size: var(--ts-step-2); letter-spacing: -.03em; text-transform: uppercase; font-weight: 800; }
.ts-contactinfo__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; }
.ts-contactinfo__list li { display: flex; gap: .85rem; align-items: flex-start; }
.ts-contactinfo__icon { display: grid; place-items: center; flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--ts-line-strong); color: var(--ts-accent-ink); }
.ts-contactinfo__list small { display: block; font-size: .74rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ts-muted); }
.ts-contactinfo__list a, .ts-contactinfo__list strong { color: var(--ts-text); font-weight: 600; }
.ts-contactinfo__list a:hover { color: var(--ts-accent-ink); }
.ts-contactinfo__todo { margin: 0; padding: .8rem 1rem; border: 1px dashed var(--ts-line-strong); border-radius: 14px; font-size: .88rem; color: var(--ts-muted); }
.ts-map { display: grid; place-items: center; gap: .5rem; min-height: 220px; padding: 1rem; text-align: center; border-radius: var(--ts-radius); overflow: hidden; background: radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--ts-lime) 16%, transparent), transparent 60%), var(--ts-elev); border: 1px solid var(--ts-line); }
.ts-map__note { margin: 0; font-size: .78rem; color: var(--ts-muted); }
.ts-map.is-loaded { padding: 0; }
.ts-map iframe { width: 100%; height: 300px; border: 0; display: block; }
@media (max-width: 860px) {
	.ts-contactpage { grid-template-columns: 1fr; }
	.ts-contactinfo { position: static; }
}
/* Il promemoria della pagina demo e' gia' nel riquadro dei recapiti */
.ts-contactpage .ts-todo { display: none; }
/* Pastiglie sopra il titolo e date sotto: mai attaccate al titolo */
.ts-pagehead .ts-card__meta:has(+ .ts-pagehead__title) { margin: 0 0 clamp(.9rem, 1.6vw, 1.3rem); }
.ts-pagehead__title + .ts-card__meta, .ts-pagehead__title + .ts-contacts { margin-top: clamp(.9rem, 1.6vw, 1.3rem); }
/* Scheda giocatore: senza titolo nella fascia (il nome e' nella card), fascia piu' bassa */
.padel-view--player .ts-pagehead--photo { min-height: clamp(220px, 22vw, 300px); }
/* Scheda giocatore: meta' spazio tra "Indietro · Giocatore" e la card */
.padel-view--player .ts-pagehead--photo.ts-pagehead--view,
.padel-view--tie .ts-pagehead--photo.ts-pagehead--view { padding-bottom: 14px; }
.padel-view--player .ts-pagehead--photo + .ts-section,
.padel-view--tie .ts-pagehead--photo + .ts-section { padding-top: 10px !important; }
.padel-view--tie .ts-pagehead--photo { min-height: clamp(220px, 22vw, 300px); }

/* ── Articolo: titolo più in basso nella foto, condivisione ───────── */
.ts-pagehead--photo.ts-pagehead--article { min-height: clamp(440px, 46vw, 640px); padding-bottom: clamp(1.4rem, 2.4vw, 2rem); }
.ts-pagehead--photo.ts-pagehead--article + .ts-section { padding-top: clamp(1.8rem, 3.4vw, 2.6rem) !important; }
.ts-postnav__next { text-align: right; grid-column: -2 / -1; align-items: flex-end; }
.ts-postnav__next .ts-card__meta { justify-content: flex-end; }
.ts-share { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .7rem 1rem; max-width: var(--ts-narrow); margin: clamp(2rem, 4vw, 2.8rem) auto 0; padding-top: 1.4rem; border-top: 1px solid var(--ts-line); }
.ts-share__label { display: inline-flex; align-items: center; gap: .45rem; font-weight: 700; font-size: .95rem; }
.ts-share__list { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; }
.ts-share__btn { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--ts-line); border-radius: 50%; background: transparent; color: inherit; cursor: pointer; transition: background .2s var(--ts-ease), color .2s var(--ts-ease), border-color .2s var(--ts-ease); }
.ts-share__btn:hover, .ts-share__btn:focus-visible { background: var(--ts-lime); color: var(--ts-on-accent); border-color: transparent; }
.ts-share__btn[hidden] { display: none; }
.ts-share__done { flex-basis: 100%; text-align: center; font-size: .85rem; color: var(--ts-muted); min-height: 1.2em; }
