/* SEASA primitives.
   Values here are the design contract, reproduced from components/<group>/*.jsx.
   Rules that hold across every component:
     · hover — primary darkens one step; secondary and ghost fill --blue-50 and
       take a sky border; cards lift 2px into --shadow-lg
     · press — scale(.98)
     · focus — the sky ring, always, never removed
     · disabled — 45% opacity, no colour change
     · opacity is never used as a hover effect */


/* =========================================================================
   Button
   ========================================================================= */

.seasa-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	border-radius: var(--radius-pill);
	font-family: var(--font-display);
	font-weight: var(--fw-semibold);
	letter-spacing: .01em;
	line-height: 1;
	text-decoration: none;
	cursor: pointer;
	white-space: nowrap;
	transition:
		background var(--dur-fast) var(--ease-out),
		border-color var(--dur-fast) var(--ease-out),
		transform var(--dur-fast) var(--ease-out),
		box-shadow var(--dur-base) var(--ease-out);
}

.seasa-button:active:not(:disabled) { transform: scale(.98); }

.seasa-button:disabled,
.seasa-button[aria-disabled="true"] {
	opacity: .45;
	cursor: not-allowed;
}

/* Sizes — 36 / 44 / 52, the last two clear the 44px tap minimum. */
.seasa-button--sm { min-height: 36px; height: 36px; padding: 0 14px; gap: 6px; font-size: var(--fs-caption); }
.seasa-button--md { min-height: 44px; height: 44px; padding: 0 20px; gap: 8px; font-size: var(--fs-body-sm); }
.seasa-button--lg { min-height: 52px; height: 52px; padding: 0 26px; gap: 10px; font-size: var(--fs-body-lg); }

.seasa-button--full { display: flex; width: 100%; }

/* Variants */
.seasa-button--primary {
	background: var(--brand-primary);
	color: var(--text-on-brand);
	border: 1px solid var(--brand-primary);
	box-shadow: var(--shadow-sm);
}
.seasa-button--primary:hover:not(:disabled) {
	background: var(--brand-primary-hover);
	border-color: var(--brand-primary-hover);
	color: var(--text-on-brand);
}
.seasa-button--primary:active:not(:disabled) {
	background: var(--brand-primary-active);
	border-color: var(--brand-primary-active);
}

.seasa-button--secondary {
	background: var(--white);
	color: var(--brand-primary);
	border: 1px solid var(--border-brand);
	box-shadow: var(--shadow-xs);
}
.seasa-button--secondary:hover:not(:disabled) {
	background: var(--blue-50);
	border-color: var(--blue-300);
	color: var(--brand-primary);
}

.seasa-button--ghost {
	background: transparent;
	color: var(--brand-primary);
	border: 1px solid transparent;
	box-shadow: none;
}
.seasa-button--ghost:hover:not(:disabled) { background: var(--blue-50); color: var(--brand-primary); }

/* onBrand — a white button sitting on the wave gradient or a photo. */
.seasa-button--on-brand {
	background: var(--white);
	color: var(--brand-primary);
	border: 1px solid var(--white);
	box-shadow: var(--shadow-md);
}
.seasa-button--on-brand:hover:not(:disabled) { background: var(--blue-50); color: var(--brand-primary); }

/* Core Button block style variations map onto the same looks. */
.wp-block-button.is-style-seasa-secondary .wp-block-button__link {
	background: var(--white);
	color: var(--brand-primary);
	border: 1px solid var(--border-brand);
	box-shadow: var(--shadow-xs);
}
.wp-block-button.is-style-seasa-secondary .wp-block-button__link:hover {
	background: var(--blue-50);
	border-color: var(--blue-300);
}
.wp-block-button.is-style-seasa-ghost .wp-block-button__link {
	background: transparent;
	color: var(--brand-primary);
	border: 1px solid transparent;
}
.wp-block-button.is-style-seasa-ghost .wp-block-button__link:hover { background: var(--blue-50); }
.wp-block-button.is-style-seasa-on-brand .wp-block-button__link {
	background: var(--white);
	color: var(--brand-primary);
	box-shadow: var(--shadow-md);
}
.wp-block-button .wp-block-button__link {
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: var(--transition-base);
}
.wp-block-button .wp-block-button__link:active { transform: scale(.98); }


/* =========================================================================
   IconButton — always circular
   ========================================================================= */

.seasa-iconbutton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--radius-circle);
	cursor: pointer;
	transition: var(--transition-base);
}

.seasa-iconbutton:active:not(:disabled) { transform: scale(.98); }
.seasa-iconbutton:disabled { opacity: .45; cursor: not-allowed; }

.seasa-iconbutton--sm { width: 36px; height: 36px; }
.seasa-iconbutton--md { width: 44px; height: 44px; }
.seasa-iconbutton--lg { width: 52px; height: 52px; }

.seasa-iconbutton--primary {
	background: var(--brand-primary);
	color: var(--text-on-brand);
	border: 1px solid var(--brand-primary);
}
.seasa-iconbutton--primary:hover:not(:disabled) { background: var(--brand-primary-hover); }

.seasa-iconbutton--secondary {
	background: var(--white);
	color: var(--brand-primary);
	border: 1px solid var(--border-brand);
}
.seasa-iconbutton--secondary:hover:not(:disabled) { background: var(--blue-50); border-color: var(--blue-300); }

.seasa-iconbutton--ghost {
	background: transparent;
	color: var(--brand-primary);
	border: 1px solid transparent;
}
.seasa-iconbutton--ghost:hover:not(:disabled) { background: var(--blue-50); }

/* glass — over photography only. */
.seasa-iconbutton--glass {
	background: rgba(255, 255, 255, .18);
	color: var(--white);
	border: 1px solid rgba(255, 255, 255, .4);
	-webkit-backdrop-filter: var(--blur-glass);
	backdrop-filter: var(--blur-glass);
}
.seasa-iconbutton--glass:hover:not(:disabled) { background: rgba(255, 255, 255, .3); }


/* =========================================================================
   Badge — uppercase status pill
   ========================================================================= */

.seasa-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 10px;
	border-radius: var(--radius-pill);
	font-family: var(--font-display);
	font-size: var(--fs-label);
	font-weight: var(--fw-semibold);
	letter-spacing: .04em;
	text-transform: uppercase;
	line-height: 1.4;
	white-space: nowrap;
}
.seasa-badge:lang(th) { text-transform: none; letter-spacing: 0; }

.seasa-badge__dot {
	width: 6px;
	height: 6px;
	border-radius: var(--radius-circle);
	background: currentColor;
	flex: 0 0 auto;
}

.seasa-badge--brand   { background: var(--blue-100); color: var(--blue-900); }
/* Text tones are the darker pairs the Notice component already uses for the
   same states. The lighter --status-* values are 2.7–3.9:1 on their own tints,
   which fails WCAG AA at the 12px badge size; these are 5.1–6.3:1. */
.seasa-badge--live    { background: var(--status-live-bg); color: #983227; }
.seasa-badge--ok      { background: var(--status-ok-bg); color: #126746; }
.seasa-badge--warn    { background: var(--status-warn-bg); color: #8A5D06; }
.seasa-badge--info    { background: var(--status-info-bg); color: var(--blue-800); }
.seasa-badge--neutral { background: var(--ink-100); color: var(--ink-700); }
.seasa-badge--solid   { background: var(--brand-primary); color: var(--white); }


/* =========================================================================
   Tag — filter chip
   ========================================================================= */

.seasa-tag {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 36px;
	padding: 0 14px;
	border-radius: var(--radius-pill);
	background: var(--white);
	color: var(--blue-800);
	border: 1px solid var(--border-brand);
	font-family: var(--font-sans);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-medium);
	text-decoration: none;
	cursor: pointer;
	white-space: nowrap;
	transition: var(--transition-base);
}

.seasa-tag:hover { background: var(--blue-50); color: var(--blue-800); }

.seasa-tag.is-selected,
.seasa-tag[aria-pressed="true"],
.seasa-tag[aria-current="true"] {
	background: var(--brand-primary);
	color: var(--white);
	border-color: var(--brand-primary);
}

.seasa-tag.is-selected:hover,
.seasa-tag[aria-pressed="true"]:hover,
.seasa-tag[aria-current="true"]:hover {
	background: var(--brand-primary-hover);
	color: var(--white);
}

/* Chip rows scroll sideways on a phone rather than wrapping into a wall. */
.seasa-tag-row {
	display: flex;
	gap: var(--space-2);
	overflow-x: auto;
	scrollbar-width: none;
	padding-bottom: var(--space-1);
	-webkit-overflow-scrolling: touch;
}
.seasa-tag-row::-webkit-scrollbar { display: none; }


/* =========================================================================
   Card
   ========================================================================= */

.seasa-card {
	display: block;
	overflow: hidden;
	box-shadow: var(--shadow-sm);
	text-decoration: none;
	color: inherit;
	transition:
		box-shadow var(--dur-base) var(--ease-out),
		transform var(--dur-base) var(--ease-out);
}

.seasa-card--radius-sm { border-radius: var(--radius-sm); }
.seasa-card--radius-md { border-radius: var(--radius-md); }
.seasa-card--radius-lg { border-radius: var(--radius-lg); }
.seasa-card--radius-xl { border-radius: var(--radius-xl); }

.seasa-card--pad-none { padding: 0; }
.seasa-card--pad-sm   { padding: var(--space-4); }
.seasa-card--pad-md   { padding: var(--space-5); }
.seasa-card--pad-lg   { padding: var(--space-8); }

.seasa-card--white   { background: var(--surface-card); border: 1px solid var(--border-subtle); }
.seasa-card--tint    { background: var(--surface-sunken); border: 1px solid var(--blue-100); }
.seasa-card--outline { background: transparent; border: 1px solid var(--border-brand); }

.seasa-card--brand {
	background: var(--grad-wave);
	border: 1px solid transparent;
	color: var(--white);
}
.seasa-card--brand :is(h1, h2, h3, h4) { color: var(--white); }
.seasa-card--brand a { color: var(--white); }

.seasa-card--interactive { cursor: pointer; }
.seasa-card--interactive:hover {
	box-shadow: var(--shadow-lg);
	transform: translateY(-2px);
}

/* Inner gaps inside a card are 12px. */
.seasa-card__body { display: grid; gap: var(--space-3); }

/* Core Group block style variations. */
.wp-block-group.is-style-seasa-card,
.wp-block-group.is-style-seasa-card-tint,
.wp-block-group.is-style-seasa-card-brand,
.wp-block-group.is-style-seasa-card-outline {
	border-radius: var(--radius-lg);
	padding: var(--space-5);
	box-shadow: var(--shadow-sm);
}
.wp-block-group.is-style-seasa-card { background: var(--surface-card); border: 1px solid var(--border-subtle); }
.wp-block-group.is-style-seasa-card-tint { background: var(--surface-sunken); border: 1px solid var(--blue-100); }
.wp-block-group.is-style-seasa-card-outline { background: transparent; border: 1px solid var(--border-brand); }
.wp-block-group.is-style-seasa-card-brand {
	background: var(--grad-wave);
	color: var(--white);
	border: 1px solid transparent;
}
.wp-block-group.is-style-seasa-card-brand :is(h1, h2, h3, h4, a) { color: var(--white); }


/* =========================================================================
   PhotoFrame — fixed-ratio rounded image well
   ========================================================================= */

.seasa-photo {
	position: relative;
	width: 100%;
	aspect-ratio: var(--seasa-photo-aspect, 16 / 9);
	/* The ratio is the point of the component: never let a stretching grid or
	   flex row set its height instead. */
	align-self: start;
	overflow: hidden;
	background: var(--blue-100);
}

.seasa-photo--radius-sm { border-radius: var(--radius-sm); }
.seasa-photo--radius-md { border-radius: var(--radius-md); }
.seasa-photo--radius-lg { border-radius: var(--radius-lg); }
.seasa-photo--radius-xl { border-radius: var(--radius-xl); }
.seasa-photo--radius-2xl { border-radius: var(--radius-2xl); }

.seasa-photo > img,
.seasa-photo > figure > img,
.seasa-photo .wp-block-image img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.seasa-photo--empty {
	background: var(--grad-sky);
	border: 1px dashed var(--blue-200);
}

.seasa-photo__placeholder {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	align-content: center;
	gap: var(--space-2);
	padding: var(--space-4);
	text-align: center;
	color: var(--brand-secondary);
}
.seasa-photo__placeholder > span {
	font-size: var(--fs-caption);
	color: var(--text-muted);
}

.seasa-photo__scrim {
	position: absolute;
	inset: 0;
	background: var(--grad-protect);
	pointer-events: none;
}

.seasa-photo__inner {
	position: absolute;
	inset: 0;
	padding: var(--space-5);
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	color: var(--white);
}

.seasa-figure { margin: 0; display: grid; gap: var(--space-2); }
/* Photographers are credited in a 13px caption. */
.seasa-figure figcaption { font-size: var(--fs-caption); color: var(--text-muted); }

.wp-block-image.is-style-seasa-photo img { border-radius: var(--radius-lg); }
.wp-block-image.is-style-seasa-photo-scrim { position: relative; }
.wp-block-image.is-style-seasa-photo-scrim img { border-radius: var(--radius-lg); }
.wp-block-image.is-style-seasa-photo-scrim::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: var(--radius-lg);
	background: var(--grad-protect);
	pointer-events: none;
}


/* =========================================================================
   CountryBadge — three-letter circle, never a flag
   ========================================================================= */

.seasa-country {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3);
}

.seasa-country__marker {
	width: var(--seasa-country-size, 40px);
	height: var(--seasa-country-size, 40px);
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--radius-circle);
	font-family: var(--font-display);
	font-weight: var(--fw-semibold);
	font-size: var(--seasa-country-font, 13px);
	letter-spacing: .02em;
}

.seasa-country--solid .seasa-country__marker {
	background: var(--brand-primary);
	color: var(--white);
	border: 1px solid var(--brand-primary);
}
.seasa-country--tint .seasa-country__marker {
	background: var(--blue-100);
	color: var(--blue-900);
	border: 1px solid var(--blue-200);
}
.seasa-country--outline .seasa-country__marker {
	background: var(--white);
	color: var(--brand-primary);
	border: 1px solid var(--border-brand);
}

/* Flag variant: the flag fills the circle. `slice` on the SVG crops the 4:3
   flag to the circle rather than distorting it — a squashed flag is a misdrawn
   flag. On white the ring is a brand hairline; on the footer gradient it turns
   white so the six read as one set. */
.seasa-country--flag .seasa-country__marker {
	padding: 0;
	overflow: hidden;
	background: var(--white);
	border: 2px solid var(--border-brand);
	box-shadow: var(--shadow-xs);
}
.seasa-country--flag.seasa-country--on-brand .seasa-country__marker {
	border-color: rgba(255, 255, 255, .9);
	box-shadow: 0 1px 3px rgba(10, 58, 99, .28);
}
.seasa-country--flag .seasa-country__marker svg {
	width: 100%;
	height: 100%;
	display: block;
	border-radius: var(--radius-circle);
}

/* On the footer gradient the outline marker reads as a white ring. */
.seasa-country--on-brand.seasa-country--outline .seasa-country__marker {
	background: rgba(255, 255, 255, .12);
	color: var(--white);
	border-color: rgba(255, 255, 255, .55);
}

.seasa-country__name {
	font-family: var(--font-sans);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-medium);
	color: var(--text-strong);
}


/* =========================================================================
   Avatar
   ========================================================================= */

.seasa-avatar {
	position: relative;
	display: inline-block;
	width: var(--seasa-avatar-size, 56px);
	height: var(--seasa-avatar-size, 56px);
	flex: 0 0 auto;
}

.seasa-avatar__face {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	border-radius: var(--radius-circle);
	overflow: hidden;
	background: var(--blue-100);
	color: var(--blue-800);
	font-family: var(--font-display);
	font-weight: var(--fw-semibold);
	font-size: var(--seasa-avatar-font, 19px);
}

.seasa-avatar__face img { width: 100%; height: 100%; object-fit: cover; }

.seasa-avatar--ring .seasa-avatar__face {
	box-shadow: 0 0 0 2px var(--white), 0 0 0 4px var(--blue-200);
}

.seasa-avatar__badge {
	position: absolute;
	right: -2px;
	bottom: -2px;
	border-radius: var(--radius-circle);
	box-shadow: 0 0 0 2px var(--white);
}


/* =========================================================================
   StatBlock
   ========================================================================= */

.seasa-stat { display: grid; gap: 2px; }

.seasa-stat--start  { justify-items: start; text-align: left; }
.seasa-stat--center { justify-items: center; text-align: center; }

.seasa-stat__value {
	font-family: var(--font-display);
	font-weight: var(--fw-bold);
	font-size: var(--fs-display-2);
	line-height: 1.05;
	letter-spacing: var(--ls-display);
	color: var(--brand-primary);
	font-variant-numeric: tabular-nums;
}

.seasa-stat__label {
	font-family: var(--font-sans);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-semibold);
	color: var(--text-strong);
}

.seasa-stat__sublabel { font-size: var(--fs-caption); color: var(--text-muted); }

.seasa-stat--brand .seasa-stat__value    { color: var(--white); }
.seasa-stat--brand .seasa-stat__label    { color: rgba(255, 255, 255, .92); }
.seasa-stat--brand .seasa-stat__sublabel { color: rgba(255, 255, 255, .72); }

/* The 4-up quick-facts strip on the home page. */
.seasa-stat-strip {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--space-6);
	padding-top: var(--space-6);
	border-top: 1px solid var(--border-subtle);
}
@media (min-width: 700px) {
	.seasa-stat-strip { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}


/* =========================================================================
   Notice
   ========================================================================= */

.seasa-notice {
	display: flex;
	gap: var(--space-3);
	padding: var(--space-4);
	border-radius: var(--radius-md);
	border: 1px solid transparent;
}

.seasa-notice__icon { margin-top: 2px; }
.seasa-notice__body { flex: 1; display: grid; gap: 2px; min-width: 0; }

.seasa-notice__title {
	font-family: var(--font-display);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-semibold);
}

.seasa-notice__text { font-size: var(--fs-body-sm); line-height: var(--lh-body); }
.seasa-notice__text > :last-child { margin-bottom: 0; }
.seasa-notice__text a { color: inherit; }

.seasa-notice__dismiss {
	border: none;
	background: transparent;
	cursor: pointer;
	color: inherit;
	display: flex;
	align-items: flex-start;
	height: 20px;
	padding: 0;
}

.seasa-notice--info  { background: var(--status-info-bg); border-color: var(--blue-200); color: var(--blue-900); }
.seasa-notice--ok    { background: var(--status-ok-bg);   border-color: #BEE7D6; color: #126746; }
.seasa-notice--warn  { background: var(--status-warn-bg); border-color: #F2DCAE; color: #8A5D06; }
.seasa-notice--alert { background: var(--status-live-bg); border-color: #F3C7C1; color: #983227; }


/* =========================================================================
   DownloadItem — format · size · languages
   ========================================================================= */

.seasa-download {
	display: flex;
	align-items: center;
	gap: var(--space-4);
	min-height: 64px;
	padding: var(--space-3) var(--space-4);
	border-radius: var(--radius-md);
	border: 1px solid var(--border-subtle);
	background: var(--white);
	text-decoration: none;
	transition: var(--transition-base);
}

.seasa-download:hover {
	border-color: var(--blue-300);
	background: var(--blue-50);
}

.seasa-download__well {
	width: 40px;
	height: 40px;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	border-radius: var(--radius-circle);
	background: var(--blue-100);
	color: var(--blue-800);
}

.seasa-download__text { flex: 1; display: grid; gap: 2px; min-width: 0; }

.seasa-download__title {
	font-family: var(--font-sans);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-semibold);
	color: var(--text-strong);
}

.seasa-download__meta { font-size: var(--fs-caption); color: var(--text-muted); }

.seasa-download__arrow { color: var(--brand-primary); }


/* =========================================================================
   Icon wells — the 42px circular wells behind "what we do" icons
   ========================================================================= */

.seasa-iconwell {
	width: 42px;
	height: 42px;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	border-radius: var(--radius-circle);
	background: var(--blue-100);
	color: var(--blue-800);
}
.seasa-iconwell--sm { width: 40px; height: 40px; }
.seasa-iconwell--lg { width: 46px; height: 46px; }


/* =========================================================================
   Paragraph block style variations
   ========================================================================= */

.wp-block-paragraph.is-style-seasa-eyebrow {
	font-family: var(--font-display);
	font-size: var(--fs-label);
	font-weight: var(--fw-semibold);
	letter-spacing: var(--ls-label);
	text-transform: uppercase;
	color: var(--blue-700);
	margin-bottom: var(--space-2);
}
.wp-block-paragraph.is-style-seasa-eyebrow:lang(th) { text-transform: none; letter-spacing: 0; }

.wp-block-paragraph.is-style-seasa-lead {
	font-size: var(--fs-body-lg);
	max-width: 56ch;
}

.wp-block-paragraph.is-style-seasa-note {
	font-size: var(--fs-caption);
	color: var(--text-muted);
}


/* =========================================================================
   EmptyState — filtered-empty results, search misses, 404
   ========================================================================= */

.seasa-empty {
	display: grid;
	justify-items: center;
	gap: var(--space-3);
	padding: var(--space-12) var(--space-5);
	border: 1px dashed var(--blue-200);
	border-radius: var(--radius-lg);
	background: var(--grad-sky);
	text-align: center;
}

.seasa-empty__well {
	width: 46px;
	height: 46px;
	display: grid;
	place-items: center;
	border-radius: var(--radius-circle);
	background: var(--blue-100);
	color: var(--blue-800);
}

.seasa-empty h2,
.seasa-empty h3 { margin: 0; }

.seasa-empty p {
	margin: 0;
	max-width: 46ch;
	color: var(--text-muted);
	font-size: var(--fs-body-sm);
}


/* =========================================================================
   Tabs — underline (default) and pill/segmented
   ========================================================================= */

.seasa-tabs {
	display: flex;
	gap: var(--space-5);
	overflow-x: auto;
	scrollbar-width: none;
	border-bottom: 1px solid var(--border-subtle);
}
.seasa-tabs::-webkit-scrollbar { display: none; }

.seasa-tabs__tab {
	flex: 0 0 auto;
	white-space: nowrap;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	padding: 0 2px;
	border: none;
	background: transparent;
	border-bottom: 2px solid transparent;
	font-family: var(--font-display);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-semibold);
	color: var(--text-muted);
	text-decoration: none;
	cursor: pointer;
	transition: var(--transition-base);
}
.seasa-tabs__tab:hover { color: var(--brand-primary); }
.seasa-tabs__tab[aria-selected="true"],
.seasa-tabs__tab.is-active {
	color: var(--brand-primary);
	border-bottom-color: var(--brand-primary);
}

.seasa-tabs--pill {
	gap: var(--space-2);
	padding: 4px;
	background: var(--surface-sunken);
	border-radius: var(--radius-pill);
	border-bottom: none;
}
.seasa-tabs--pill .seasa-tabs__tab {
	flex: 1;
	justify-content: center;
	min-height: 40px;
	padding: 0 16px;
	border-radius: var(--radius-pill);
	border-bottom: none;
}
.seasa-tabs--pill .seasa-tabs__tab[aria-selected="true"],
.seasa-tabs--pill .seasa-tabs__tab.is-active {
	background: var(--white);
	box-shadow: var(--shadow-sm);
}


/* =========================================================================
   Form fields
   ========================================================================= */

.seasa-field { display: grid; gap: var(--space-2); }

.seasa-label {
	font-family: var(--font-display);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-semibold);
	color: var(--text-strong);
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--space-2);
}
.seasa-input,
.seasa-select,
.seasa-textarea {
	width: 100%;
	min-height: 48px;
	padding: 0 var(--space-4);
	border: 1px solid var(--border-default);
	border-radius: var(--radius-md);
	background: var(--white);
	color: var(--text-body);
	font-family: var(--font-sans);
	font-size: var(--fs-body);
	transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
}
.seasa-textarea { min-height: 132px; padding: var(--space-3) var(--space-4); line-height: var(--lh-body); resize: vertical; }

.seasa-input:hover,
.seasa-select:hover,
.seasa-textarea:hover { border-color: var(--blue-300); }

.seasa-input::placeholder,
.seasa-textarea::placeholder { color: var(--text-faint); }

.seasa-field--error .seasa-input,
.seasa-field--error .seasa-select,
.seasa-field--error .seasa-textarea { border-color: var(--status-live); }

.seasa-field__hint { font-size: var(--fs-caption); color: var(--text-muted); }
.seasa-field__error { font-size: var(--fs-caption); color: var(--status-live); }

/* Native select plus our own chevron — no custom dropdown. */
.seasa-select-wrap { position: relative; display: block; }
.seasa-select {
	appearance: none;
	-webkit-appearance: none;
	padding-right: var(--space-10);
	cursor: pointer;
}
.seasa-select-wrap .seasa-icon {
	position: absolute;
	right: var(--space-4);
	top: 50%;
	transform: translateY(-50%);
	pointer-events: none;
	color: var(--text-faint);
}

/* SearchField — pill, icon inset left */
.seasa-search { position: relative; display: block; }
.seasa-search .seasa-input {
	border-radius: var(--radius-pill);
	padding-left: var(--space-12);
}
.seasa-search__icon {
	position: absolute;
	left: var(--space-5);
	top: 50%;
	transform: translateY(-50%);
	pointer-events: none;
	color: var(--text-faint);
}

.seasa-checkbox {
	display: flex;
	align-items: flex-start;
	gap: var(--space-3);
	min-height: var(--tap-min);
	padding-block: 10px;
	cursor: pointer;
	font-size: var(--fs-body-sm);
}
.seasa-checkbox input {
	appearance: none;
	-webkit-appearance: none;
	width: 24px;
	min-width: 24px;
	height: 24px;
	flex: 0 0 24px;
	margin: 0;
	border: 1px solid var(--border-default);
	border-radius: var(--radius-xs);
	background: var(--white);
	cursor: pointer;
	transition: var(--transition-base);
	display: grid;
	place-items: center;
}
.seasa-checkbox input:hover { border-color: var(--blue-300); }
.seasa-checkbox input:checked {
	background: var(--brand-primary);
	border-color: var(--brand-primary);
}
.seasa-checkbox input:checked::after {
	content: "";
	width: 12px;
	height: 7px;
	border-left: 2px solid var(--white);
	border-bottom: 2px solid var(--white);
	transform: rotate(-45deg) translate(1px, -1px);
}


/* =========================================================================
   EventCard
   ========================================================================= */

.seasa-event { display: block; position: relative; }
.seasa-event .seasa-photo { border-radius: 0; }
.seasa-event__media { position: relative; }
.seasa-event__status { position: absolute; top: var(--space-3); left: var(--space-3); }
.seasa-event__body {
	padding: var(--space-5);
	display: grid;
	gap: 6px;
	align-content: start;
}
.seasa-event__title {
	margin: 0;
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-weight: var(--fw-bold);
	color: var(--text-heading);
}
.seasa-event__meta {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: var(--fs-body-sm);
	color: var(--text-body);
}
.seasa-event__meta--muted { color: var(--text-muted); }
.seasa-event__meta .seasa-icon { color: var(--brand-secondary); }
.seasa-event__nation { margin-top: 4px; }

.seasa-event--row { display: flex; gap: var(--space-4); align-items: stretch; }
.seasa-event--row .seasa-event__media { width: 120px; flex: 0 0 auto; }
.seasa-event--row .seasa-event__body { padding: var(--space-4) var(--space-4) var(--space-4) 0; flex: 1; }


/* =========================================================================
   NewsCard
   ========================================================================= */

.seasa-news { display: block; }
.seasa-news .seasa-photo { border-radius: 0; }
.seasa-news__body { padding: var(--space-5); display: grid; gap: 8px; align-content: start; }
.seasa-news__head { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
.seasa-news__date { font-size: var(--fs-caption); color: var(--text-muted); }
.seasa-news__title {
	margin: 0;
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-weight: var(--fw-bold);
	color: var(--text-heading);
	line-height: var(--lh-heading);
}
.seasa-news__excerpt { margin: 0; font-size: var(--fs-body-sm); color: var(--text-body); }


/* =========================================================================
   MemberCard
   ========================================================================= */

.seasa-member { display: grid; gap: var(--space-3); }
.seasa-member__head { display: flex; align-items: center; gap: var(--space-3); }
.seasa-member__names { display: grid; gap: 2px; min-width: 0; }
.seasa-member__name {
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	color: var(--text-heading);
}
.seasa-member__local { font-size: var(--fs-caption); color: var(--text-muted); }
.seasa-member__facts {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-4);
	font-size: var(--fs-caption);
	color: var(--text-body);
}
.seasa-member__fact { display: flex; align-items: center; gap: 6px; }
.seasa-member__fact .seasa-icon { color: var(--brand-secondary); }


/* =========================================================================
   ResultTable — card-like on phones, never a wide HTML table
   ========================================================================= */

.seasa-results {
	background: var(--surface-card);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-lg);
	overflow: hidden;
	box-shadow: var(--shadow-sm);
}

.seasa-results__caption {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-3);
	padding: var(--space-4) var(--space-5);
	background: var(--surface-sunken);
	border-bottom: 1px solid var(--blue-100);
}
.seasa-results__title {
	font-family: var(--font-display);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-semibold);
	color: var(--text-strong);
}
.seasa-results__score-label {
	font-size: var(--fs-label);
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--text-muted);
}
.seasa-results__score-label:lang(th) { text-transform: none; letter-spacing: 0; }

.seasa-results__list { list-style: none; margin: 0; padding: 0; }

.seasa-results__row {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	padding: var(--space-3) var(--space-5);
	border-top: 1px solid var(--border-subtle);
}
.seasa-results__row:first-child { border-top: none; }
.seasa-results__row.is-highlight { background: var(--blue-50); }

.seasa-results__place {
	width: 28px;
	height: 28px;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	border-radius: var(--radius-circle);
	font-family: var(--font-display);
	font-size: var(--fs-caption);
	font-weight: var(--fw-bold);
	background: var(--ink-100);
	color: var(--blue-900);
}
.seasa-results__place--1 { background: var(--brand-primary); color: var(--white); }
.seasa-results__place--podium { background: var(--blue-200); color: var(--blue-900); }

.seasa-results__who { flex: 1; min-width: 0; display: grid; gap: 1px; }
.seasa-results__name {
	font-family: var(--font-sans);
	font-size: var(--fs-body-sm);
	font-weight: var(--fw-semibold);
	color: var(--text-strong);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.seasa-results__club { font-size: var(--fs-caption); color: var(--text-muted); }

.seasa-results__score {
	font-family: var(--font-mono);
	font-size: var(--fs-body-sm);
	font-weight: 500;
	color: var(--blue-900);
	min-width: 52px;
	text-align: right;
	font-variant-numeric: tabular-nums;
}
