/**
 * WSaaS storefront styles — Template Gallery + detail.
 *
 * Craft notes (apple-design):
 *  - Feedback lives on press (:active scale) and is instant.
 *  - Hover lift uses a short, near-critically-damped spring-ish easing; no bounce
 *    on elements that were not dragged.
 *  - Chrome (panel) is a translucent material with backdrop-filter; content reads under it.
 *  - Type tracking is size-specific: tighter on large headings, ~0 on body.
 *  - Motion, transparency and contrast preferences are all honoured at the end.
 *
 * All colours are theme tokens so the switcher can retint the detail surface live.
 */

.wsaas-gallery,
.wsaas-detail {
	--wsaas-radius: 16px;
	--wsaas-ease: cubic-bezier( 0.2, 0.8, 0.2, 1 );
	--wsaas-primary: #2563eb;
	--wsaas-secondary: #7c3aed;
	--wsaas-surface: #ffffff;
	--wsaas-ink: #111111;
	box-sizing: border-box;
}

.wsaas-gallery *,
.wsaas-detail * {
	box-sizing: inherit;
}

/* ---------- Gallery grid ---------- */

.wsaas-gallery {
	display: grid;
	grid-template-columns: repeat( var( --wsaas-cols, 3 ), minmax( 0, 1fr ) );
	gap: 22px;
	margin: 24px 0;
}

.wsaas-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid rgba( 0, 0, 0, 0.08 );
	border-radius: var( --wsaas-radius );
	overflow: hidden;
	transition: transform 260ms var( --wsaas-ease ), box-shadow 260ms var( --wsaas-ease );
	will-change: transform;
}

.wsaas-card:hover,
.wsaas-card:focus-within {
	transform: translateY( -6px );
	box-shadow: 0 18px 40px -18px rgba( 0, 0, 0, 0.35 );
}

.wsaas-card__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	background: linear-gradient( 135deg, #eef2ff, #faf5ff );
	overflow: hidden;
}

.wsaas-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 400ms var( --wsaas-ease );
}

.wsaas-card:hover .wsaas-card__media img {
	transform: scale( 1.04 );
}

.wsaas-card__placeholder {
	position: absolute;
	inset: 0;
	background:
		radial-gradient( 120px 120px at 30% 30%, rgba( 37, 99, 235, 0.18 ), transparent ),
		radial-gradient( 160px 160px at 75% 70%, rgba( 124, 58, 237, 0.18 ), transparent );
}

.wsaas-badge {
	position: absolute;
	top: 12px;
	left: 12px;
	padding: 4px 10px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.01em;
	color: #fff;
	background: rgba( 17, 17, 17, 0.72 );
	backdrop-filter: blur( 8px );
	border-radius: 999px;
}

.wsaas-badge--inline {
	position: static;
	display: inline-block;
	margin: 0 0 12px;
	background: rgba( 124, 58, 237, 0.12 );
	color: #6d28d9;
}

.wsaas-card__body {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 16px 18px 20px;
}

.wsaas-card__title {
	margin: 0;
	font-size: 1.15rem;
	line-height: 1.2;
	letter-spacing: -0.01em;
}

.wsaas-card__title a {
	text-decoration: none;
	color: inherit;
}

.wsaas-card__price {
	margin: 0;
	font-weight: 700;
	color: var( --wsaas-primary );
}

.wsaas-card__meta {
	margin: 0;
	font-size: 0.85rem;
	color: #6b7280;
}

.wsaas-swatches {
	display: flex;
	gap: 6px;
	margin: 4px 0 6px;
	padding: 0;
	list-style: none;
}

.wsaas-swatch {
	width: 18px;
	height: 18px;
	border-radius: 999px;
	box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.12 );
}

/* ---------- Buttons ---------- */

.wsaas-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 11px 18px;
	border-radius: 12px;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
	border: 1px solid transparent;
	transition: transform 120ms var( --wsaas-ease ), background 200ms var( --wsaas-ease ), box-shadow 200ms var( --wsaas-ease );
}

.wsaas-btn:active {
	transform: scale( 0.97 );
}

.wsaas-btn--primary {
	background: var( --wsaas-primary );
	color: #fff;
	box-shadow: 0 10px 24px -12px var( --wsaas-primary );
}

.wsaas-btn--primary:hover {
	box-shadow: 0 14px 30px -12px var( --wsaas-primary );
}

.wsaas-btn--ghost {
	align-self: flex-start;
	margin-top: 4px;
	background: rgba( 37, 99, 235, 0.08 );
	color: var( --wsaas-primary );
}

.wsaas-btn--ghost:hover {
	background: rgba( 37, 99, 235, 0.14 );
}

/* ---------- Language switch (EN | العربية) ---------- */

.wsaas-langswitch {
	display: inline-flex;
	gap: 2px;
	padding: 3px;
	border-radius: 999px;
	background: #eef0f7;
	border: 1px solid rgba( 20, 20, 40, 0.08 );
	margin: 0 0 16px;
}
.wsaas-langswitch__opt {
	padding: 6px 15px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 0.9rem;
	line-height: 1.4;
	text-decoration: none;
	color: #5b6070;
	transition: background 0.2s ease, color 0.2s ease, transform 0.12s ease;
}
.wsaas-langswitch__opt:active { transform: scale( 0.97 ); }
.wsaas-langswitch__opt.is-active {
	background: #fff;
	color: #1d2330;
	box-shadow: 0 1px 3px rgba( 20, 20, 40, 0.14 );
}
@media ( prefers-reduced-motion: reduce ) {
	.wsaas-langswitch__opt { transition: none; }
}
@media ( prefers-contrast: more ) {
	.wsaas-langswitch { border-color: #111; }
}
/* When shown above the My-Account navigation. */
.wsaas-langswitch-nav { margin: 0 0 14px; }

/* ---------- Detail view ---------- */

.wsaas-detail {
	display: grid;
	grid-template-columns: minmax( 0, 1.6fr ) minmax( 260px, 1fr );
	gap: 26px;
	margin: 28px 0;
	color: var( --wsaas-ink );
}

.wsaas-detail__preview {
	border-radius: var( --wsaas-radius );
	overflow: hidden;
	background: var( --wsaas-surface );
	box-shadow: 0 24px 60px -30px rgba( 0, 0, 0, 0.4 );
}

.wsaas-frame {
	position: relative;
	aspect-ratio: 16 / 10;
	background: var( --wsaas-surface );
}

.wsaas-frame iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

/* Mock preview when no live URL is set. */
.wsaas-frame--mock {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 22px;
}

.wsaas-mock-bar {
	height: 14px;
	width: 40%;
	border-radius: 6px;
	background: var( --wsaas-primary );
	opacity: 0.85;
}

.wsaas-mock-hero {
	height: 44%;
	border-radius: 12px;
	background: linear-gradient( 135deg, var( --wsaas-primary ), var( --wsaas-secondary ) );
	opacity: 0.9;
}

.wsaas-mock-line {
	height: 12px;
	border-radius: 6px;
	background: rgba( 0, 0, 0, 0.12 );
}

.wsaas-mock-line.short {
	width: 60%;
}

.wsaas-detail__panel {
	position: sticky;
	top: 24px;
	align-self: start;
	padding: 20px;
	border-radius: var( --wsaas-radius );
	background: rgba( 255, 255, 255, 0.62 );
	backdrop-filter: blur( 20px ) saturate( 180% );
	border: 1px solid rgba( 255, 255, 255, 0.5 );
	box-shadow: 0 20px 50px -30px rgba( 0, 0, 0, 0.4 );
}

.wsaas-detail__price {
	margin: 0 0 16px;
	font-size: 1.4rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var( --wsaas-primary );
}

.wsaas-switch {
	margin: 0 0 18px;
}

.wsaas-switch__label {
	margin: 0 0 8px;
	font-size: 0.8rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: #6b7280;
}

.wsaas-switch__options {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.wsaas-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 12px;
	border-radius: 999px;
	border: 1px solid rgba( 0, 0, 0, 0.12 );
	background: #fff;
	font-size: 0.85rem;
	font-weight: 600;
	color: #374151;
	cursor: pointer;
	transition: transform 120ms var( --wsaas-ease ), border-color 160ms var( --wsaas-ease ), box-shadow 160ms var( --wsaas-ease );
}

.wsaas-chip:active {
	transform: scale( 0.96 );
}

.wsaas-chip.is-active {
	border-color: var( --wsaas-primary );
	box-shadow: 0 0 0 2px rgba( 37, 99, 235, 0.18 );
}

.wsaas-chip:focus-visible {
	outline: 2px solid var( --wsaas-primary );
	outline-offset: 2px;
}

.wsaas-chip__dot {
	width: 16px;
	height: 16px;
	border-radius: 999px;
	box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 );
}

.wsaas-features ul {
	margin: 0 0 18px;
	padding-left: 18px;
}

.wsaas-features li {
	margin: 2px 0;
}

.wsaas-hint {
	font-size: 0.85rem;
	color: #6b7280;
}

.wsaas-empty {
	padding: 24px;
	text-align: center;
	color: #6b7280;
}

/* ---------- Responsive ---------- */

@media ( max-width: 900px ) {
	.wsaas-gallery {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	}
	.wsaas-detail {
		grid-template-columns: 1fr;
	}
	.wsaas-detail__panel {
		position: static;
	}
}

@media ( max-width: 560px ) {
	.wsaas-gallery {
		grid-template-columns: 1fr;
		gap: 16px;
	}
}

/* ---------- Accessibility preferences ---------- */

@media ( prefers-reduced-motion: reduce ) {
	.wsaas-card,
	.wsaas-card__media img,
	.wsaas-btn,
	.wsaas-chip {
		transition: none;
	}
	.wsaas-card:hover,
	.wsaas-card:focus-within {
		transform: none;
	}
	.wsaas-card:hover .wsaas-card__media img {
		transform: none;
	}
}

@media ( prefers-reduced-transparency: reduce ) {
	.wsaas-detail__panel {
		background: #fff;
		backdrop-filter: none;
	}
	.wsaas-badge {
		background: #111;
		backdrop-filter: none;
	}
}

@media ( prefers-contrast: more ) {
	.wsaas-card,
	.wsaas-chip {
		border-color: #111;
	}
	.wsaas-detail__panel {
		background: #fff;
		border-color: #111;
	}
}

/* =====================================================================
   Phase 2 — Configurator
   ===================================================================== */

.wsaas-configure {
	--wsaas-radius: 16px;
	--wsaas-ease: cubic-bezier( 0.2, 0.8, 0.2, 1 );
	--wsaas-primary: #2563eb;
	display: grid;
	grid-template-columns: minmax( 0, 1.7fr ) minmax( 300px, 1fr );
	gap: 26px;
	margin: 24px 0;
	box-sizing: border-box;
}

.wsaas-configure * { box-sizing: border-box; }

.wsaas-back {
	display: inline-block;
	margin: 0 0 12px;
	color: var( --wsaas-primary );
	font-weight: 600;
	text-decoration: none;
}

.wsaas-chosen {
	display: flex;
	gap: 16px;
	align-items: center;
	padding: 14px;
	border: 1px solid rgba( 0, 0, 0, 0.08 );
	border-radius: var( --wsaas-radius );
	background: #fff;
	margin-bottom: 22px;
}

.wsaas-chosen__thumb img {
	width: 96px;
	height: 68px;
	object-fit: cover;
	border-radius: 10px;
	display: block;
}

.wsaas-chosen__title { margin: 0 0 6px; font-size: 1.2rem; letter-spacing: -0.01em; }
.wsaas-chosen__meta { margin: 0; display: flex; gap: 6px; flex-wrap: wrap; }

.wsaas-tag {
	display: inline-block;
	padding: 3px 10px;
	font-size: 0.78rem;
	font-weight: 600;
	color: #4b5563;
	background: rgba( 0, 0, 0, 0.05 );
	border-radius: 999px;
}

.wsaas-group { border: 0; margin: 0 0 24px; padding: 0; }
.wsaas-group legend { font-size: 1.05rem; font-weight: 700; letter-spacing: -0.01em; margin-bottom: 12px; padding: 0; }

/* Plan cards */
.wsaas-plans { display: grid; grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); gap: 12px; }

.wsaas-plan {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 16px;
	border: 1px solid rgba( 0, 0, 0, 0.12 );
	border-radius: var( --wsaas-radius );
	background: #fff;
	cursor: pointer;
	transition: transform 140ms var( --wsaas-ease ), border-color 160ms var( --wsaas-ease ), box-shadow 160ms var( --wsaas-ease );
}

.wsaas-plan:active { transform: scale( 0.985 ); }
.wsaas-plan.is-active { border-color: var( --wsaas-primary ); box-shadow: 0 0 0 2px rgba( 37, 99, 235, 0.18 ); }
.wsaas-plan input { position: absolute; opacity: 0; pointer-events: none; }
.wsaas-plan:focus-within { outline: 2px solid var( --wsaas-primary ); outline-offset: 2px; }

.wsaas-plan__head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.wsaas-plan__name { font-weight: 700; }
.wsaas-plan__price { font-weight: 700; color: var( --wsaas-primary ); white-space: nowrap; }
.wsaas-plan__blurb { font-size: 0.85rem; color: #6b7280; }
.wsaas-plan__specs { display: flex; gap: 10px; flex-wrap: wrap; font-size: 0.8rem; color: #374151; margin-top: auto; }
.wsaas-plan__specs span { background: rgba( 0, 0, 0, 0.04 ); padding: 3px 8px; border-radius: 6px; }

/* Domain + generic radios */
.wsaas-domain { display: grid; gap: 10px; }

.wsaas-radio {
	display: block;
	padding: 14px 16px;
	border: 1px solid rgba( 0, 0, 0, 0.12 );
	border-radius: var( --wsaas-radius );
	background: #fff;
	cursor: pointer;
	transition: border-color 160ms var( --wsaas-ease ), box-shadow 160ms var( --wsaas-ease );
}

.wsaas-radio.is-active { border-color: var( --wsaas-primary ); box-shadow: 0 0 0 2px rgba( 37, 99, 235, 0.18 ); }
.wsaas-radio input { position: absolute; opacity: 0; pointer-events: none; }
.wsaas-radio:focus-within { outline: 2px solid var( --wsaas-primary ); outline-offset: 2px; }
.wsaas-radio__title { display: flex; align-items: center; gap: 10px; font-weight: 600; }
.wsaas-radio__hint { display: block; margin-top: 4px; font-size: 0.85rem; color: #6b7280; }
.wsaas-free { font-size: 0.72rem; font-weight: 700; color: #047857; background: rgba( 5, 150, 105, 0.12 ); padding: 2px 8px; border-radius: 999px; }
.wsaas-plus { font-size: 0.85rem; font-weight: 700; color: var( --wsaas-primary ); }

.wsaas-subdomain { display: inline-flex; align-items: center; margin-top: 10px; border: 1px solid rgba( 0, 0, 0, 0.15 ); border-radius: 10px; overflow: hidden; }
.wsaas-subdomain input { border: 0; padding: 8px 10px; font: inherit; outline: none; width: 140px; }
.wsaas-subdomain__host { padding: 8px 10px; background: rgba( 0, 0, 0, 0.05 ); color: #4b5563; font-size: 0.9rem; }

/* Stepper */
.wsaas-stepper { display: flex; align-items: center; gap: 10px; }
.wsaas-step {
	width: 40px; height: 40px; border-radius: 10px; border: 1px solid rgba( 0, 0, 0, 0.15 );
	background: #fff; font-size: 1.2rem; line-height: 1; cursor: pointer; color: #111;
	transition: transform 120ms var( --wsaas-ease ), background 160ms var( --wsaas-ease );
}
.wsaas-step:active { transform: scale( 0.92 ); background: rgba( 37, 99, 235, 0.08 ); }
.wsaas-stepper input { width: 64px; height: 40px; text-align: center; border: 1px solid rgba( 0, 0, 0, 0.15 ); border-radius: 10px; font: inherit; }
.wsaas-stepper__hint { font-size: 0.85rem; color: #6b7280; }

/* Summary */
.wsaas-summary {
	position: sticky;
	top: 24px;
	align-self: start;
	padding: 20px;
	border-radius: var( --wsaas-radius );
	background: rgba( 255, 255, 255, 0.66 );
	backdrop-filter: blur( 20px ) saturate( 180% );
	border: 1px solid rgba( 255, 255, 255, 0.5 );
	box-shadow: 0 20px 50px -30px rgba( 0, 0, 0, 0.4 );
}

.wsaas-summary__title { margin: 0 0 14px; font-size: 1.05rem; letter-spacing: -0.01em; }
.wsaas-summary__lines { list-style: none; margin: 0 0 14px; padding: 0; }
.wsaas-summary__lines li { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid rgba( 0, 0, 0, 0.06 ); font-size: 0.92rem; }
.wsaas-summary__lines li span:last-child { font-weight: 600; white-space: nowrap; }
.wsaas-summary__total { display: flex; justify-content: space-between; align-items: baseline; margin: 6px 0 16px; font-weight: 700; }
.wsaas-total { font-size: 1.5rem; letter-spacing: -0.01em; color: var( --wsaas-primary ); font-variant-numeric: tabular-nums; }
.wsaas-summary__cta { width: 100%; }
.wsaas-summary__note { margin: 10px 0 0; font-size: 0.8rem; color: #6b7280; }

/* Responsive: summary becomes a bottom sheet on small screens */
@media ( max-width: 860px ) {
	.wsaas-configure { grid-template-columns: 1fr; }
	.wsaas-plans { grid-template-columns: 1fr; }
	.wsaas-summary {
		position: fixed;
		left: 0; right: 0; bottom: 0;
		top: auto;
		border-radius: 18px 18px 0 0;
		box-shadow: 0 -18px 50px -24px rgba( 0, 0, 0, 0.45 );
		z-index: 40;
	}
	.wsaas-summary__lines { display: none; }
	.wsaas-configure__main { padding-bottom: 180px; }
}

@media ( prefers-reduced-motion: reduce ) {
	.wsaas-plan, .wsaas-radio, .wsaas-step { transition: none; }
	.wsaas-plan:active, .wsaas-step:active { transform: none; }
}

@media ( prefers-reduced-transparency: reduce ) {
	.wsaas-summary { background: #fff; backdrop-filter: none; }
}

@media ( prefers-contrast: more ) {
	.wsaas-plan, .wsaas-radio, .wsaas-summary { border-color: #111; }
}

/* ============================================================= *
 *  Phase 4 — Client dashboard (My Account → My Sites / CR)
 * ============================================================= */

.wsaas-dash {
	--wsaas-ease: cubic-bezier( 0.2, 0.8, 0.2, 1 );
	box-sizing: border-box;
}
.wsaas-dash * { box-sizing: inherit; }

.wsaas-dash-grid {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 260px, 1fr ) );
	gap: 18px;
	margin: 4px 0 20px;
}

.wsaas-site-card {
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: #fff;
	border: 1px solid rgba( 20, 20, 40, 0.08 );
	border-radius: 16px;
	padding: 18px;
	box-shadow: 0 12px 30px -20px rgba( 20, 20, 40, 0.4 );
	transition: transform 260ms var( --wsaas-ease ), box-shadow 260ms var( --wsaas-ease );
	will-change: transform;
}
.wsaas-site-card:hover,
.wsaas-site-card:focus-within {
	transform: translateY( -4px );
	box-shadow: 0 20px 44px -22px rgba( 20, 20, 40, 0.45 );
}

.wsaas-site-card__top {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}

.wsaas-dash-badge {
	display: inline-block;
	padding: 3px 11px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.7;
}
.wsaas-dash-badge--live     { background: #e3f6e8; color: #137333; }
.wsaas-dash-badge--building { background: #fff4d6; color: #8a5a00; }
.wsaas-dash-badge--failed   { background: #fdecec; color: #b3261e; }
.wsaas-dash-badge--queued   { background: #eef0f7; color: #33405c; }

.wsaas-dash-chip {
	display: inline-block;
	padding: 3px 11px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	background: #f2f4fa;
	color: #4a5168;
}

.wsaas-site-card__title {
	margin: 2px 0 0;
	font-size: 1.15rem;
	letter-spacing: -0.01em;
	line-height: 1.2;
}
.wsaas-site-card__url {
	color: #2563eb;
	text-decoration: none;
	font-size: 0.92rem;
	word-break: break-all;
}
.wsaas-site-card__url:hover { text-decoration: underline; }

.wsaas-site-card__meta {
	display: flex;
	gap: 20px;
	margin: 4px 0 0;
}
.wsaas-site-card__meta div { margin: 0; }
.wsaas-site-card__meta dt {
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: #8a90a2;
	margin: 0;
}
.wsaas-site-card__meta dd { margin: 2px 0 0; font-weight: 600; font-size: 0.9rem; }

.wsaas-dash-flag {
	display: inline-block;
	background: #fff7e6;
	color: #8a5a00;
	border-radius: 10px;
	padding: 8px 12px;
	font-size: 0.85rem;
	font-weight: 600;
	text-decoration: none;
}
.wsaas-dash-flag:hover { background: #ffefcc; }

.wsaas-site-card__actions {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-top: auto;
	padding-top: 6px;
}
.wsaas-site-card__note {
	margin: 0;
	color: #6b7080;
	font-size: 0.9rem;
}

.wsaas-dash-foot {
	color: #6b7080;
	font-size: 0.9rem;
}

/* Empty states */
.wsaas-dash-empty {
	text-align: center;
	padding: 40px 20px;
	background: #fff;
	border: 1px solid rgba( 20, 20, 40, 0.07 );
	border-radius: 16px;
}
.wsaas-dash-empty__mark { font-size: 34px; }
.wsaas-dash-empty h3 { margin: 8px 0 4px; }
.wsaas-dash-empty p { color: #6b7080; max-width: 46ch; margin: 0 auto 16px; }

/* CR tab */
.wsaas-cr-intro {
	background: linear-gradient( 180deg, #f7f9ff, #ffffff );
	border: 1px solid rgba( 20, 20, 40, 0.07 );
	border-radius: 16px;
	padding: 20px;
	margin-bottom: 18px;
}
.wsaas-cr-intro h3 { margin: 0 0 6px; }
.wsaas-cr-intro p { color: #4a5168; margin: 0 0 8px; }
.wsaas-cr-mail { font-size: 1.02rem; }
.wsaas-cr-mail a { color: #2563eb; text-decoration: none; }

.wsaas-cr-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.wsaas-cr-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	background: #fff;
	border: 1px solid rgba( 20, 20, 40, 0.08 );
	border-radius: 12px;
	padding: 14px 16px;
}
.wsaas-cr-item__title { font-weight: 600; display: block; }
.wsaas-cr-item__url { color: #8a90a2; font-size: 0.85rem; }

/* Staggered entrance (added by wsaas-dashboard.js when motion is allowed) */
.wsaas-dash-grid.is-js .wsaas-site-card {
	opacity: 0;
	transform: translateY( 10px );
	animation: wsaasRise 0.5s var( --wsaas-ease ) forwards;
	animation-delay: calc( var( --wsaas-i, 0 ) * 60ms );
}
@keyframes wsaasRise {
	to { opacity: 1; transform: none; }
}

@media ( max-width: 560px ) {
	.wsaas-site-card__actions .wsaas-btn { flex: 1 1 100%; text-align: center; }
}

@media ( prefers-reduced-motion: reduce ) {
	.wsaas-site-card { transition: none; }
	.wsaas-dash-grid.is-js .wsaas-site-card { opacity: 1; transform: none; animation: none; }
}
@media ( prefers-reduced-transparency: reduce ) {
	.wsaas-cr-intro { background: #f5f7fb; }
}
@media ( prefers-contrast: more ) {
	.wsaas-site-card, .wsaas-cr-item, .wsaas-dash-empty { border-color: #111; }
}

/* ============================================================= *
 *  Phase 6b — Secure CR upload
 * ============================================================= */

/* The account-area buttons use the primary token; the dashboard scope only
   defined --wsaas-ease, so name the colour here too (used by the CR + site
   cards' primary buttons). */
.wsaas-dash {
	--wsaas-primary: #2563eb;
}

/* Status banner after an upload attempt. */
.wsaas-cr-banner {
	border-radius: 12px;
	padding: 12px 16px;
	margin-bottom: 14px;
	font-weight: 500;
}
.wsaas-cr-banner--ok  { background: #e3f6e8; color: #10633a; border: 1px solid rgba( 19, 115, 51, 0.2 ); }
.wsaas-cr-banner--err { background: #fdecec; color: #a51e15; border: 1px solid rgba( 179, 38, 30, 0.2 ); }

/* Each CR site becomes a stacked card: header row + its control below. */
.wsaas-cr-item {
	flex-direction: column;
	align-items: stretch;
}
.wsaas-cr-item__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

/* The upload form. */
.wsaas-cr-upload {
	margin-top: 6px;
	padding-top: 12px;
	border-top: 1px dashed rgba( 20, 20, 40, 0.12 );
}
.wsaas-cr-upload__row {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

/* The real file input is hidden; its <label> is the button. */
.wsaas-cr-file {
	position: relative;
	overflow: hidden;
}
.wsaas-cr-file input[type="file"] {
	position: absolute;
	inset: 0;
	opacity: 0;
	cursor: pointer;
	font-size: 0;
}
.wsaas-cr-file__chosen {
	font-size: 0.9rem;
	color: #8a90a2;
}
.wsaas-cr-file__chosen::before {
	content: attr( data-empty );
}
.wsaas-cr-file__chosen.is-set {
	color: #1d2330;
	font-weight: 600;
}
.wsaas-cr-file__chosen.is-set::before {
	content: "";
}
.wsaas-cr-hint {
	margin: 10px 0 0;
	font-size: 0.85rem;
	color: #8a90a2;
}
.wsaas-cr-hint a { color: #2563eb; text-decoration: none; }

/* "Under review" state. */
.wsaas-cr-review {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin-top: 8px;
	background: #fff8e8;
	border: 1px solid rgba( 138, 90, 0, 0.18 );
	border-radius: 12px;
	padding: 12px 14px;
}
.wsaas-cr-review__tick {
	flex: none;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: #8a5a00;
	color: #fff;
	font-size: 15px;
	line-height: 26px;
	text-align: center;
	font-weight: 700;
}
.wsaas-cr-review strong { display: block; color: #7a4f00; }
.wsaas-cr-review p { margin: 3px 0 0; color: #6b5220; font-size: 0.9rem; }
.wsaas-cr-review + .wsaas-cr-upload--replace {
	border-top: none;
	padding-top: 8px;
}

@media ( max-width: 560px ) {
	.wsaas-cr-upload__row .wsaas-btn { flex: 1 1 100%; text-align: center; justify-content: center; }
}
@media ( prefers-reduced-transparency: reduce ) {
	.wsaas-cr-review { background: #fff3d6; }
}
@media ( prefers-contrast: more ) {
	.wsaas-cr-banner, .wsaas-cr-review, .wsaas-cr-upload { border-color: #111; }
}

/* ============================================================= *
 *  Phase 6c — Support messaging
 * ============================================================= */

.wsaas-support-card {
	background: #fff;
	border: 1px solid rgba( 20, 20, 40, 0.08 );
	border-radius: 16px;
	padding: 18px;
	margin-bottom: 14px;
}
.wsaas-support-card__head {
	display: flex;
	align-items: baseline;
	gap: 10px;
	flex-wrap: wrap;
	padding-bottom: 10px;
	border-bottom: 1px solid rgba( 20, 20, 40, 0.08 );
}

.wsaas-support-log {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 14px 0;
}
.wsaas-support-msg {
	max-width: 82%;
	padding: 10px 14px;
	border-radius: 14px;
	line-height: 1.5;
}
.wsaas-support-msg .who {
	display: block;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.02em;
	margin-bottom: 2px;
	opacity: 0.7;
}
.wsaas-support-msg .at {
	display: block;
	font-size: 11px;
	opacity: 0.6;
	margin-top: 4px;
}
.wsaas-support-msg.me {
	align-self: flex-end;
	background: var( --wsaas-primary );
	color: #fff;
	border-bottom-right-radius: 4px;
}
.wsaas-support-msg.op {
	align-self: flex-start;
	background: #eef0f5;
	color: #1d2330;
	border-bottom-left-radius: 4px;
}
.wsaas-support-empty { color: #8a90a2; margin: 14px 0; }

.wsaas-support-reply {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-top: 6px;
}
.wsaas-support-reply textarea {
	width: 100%;
	min-height: 84px;
	resize: vertical;
	border-radius: 12px;
	padding: 11px 13px;
	border: 1px solid rgba( 20, 20, 40, 0.16 );
	font: inherit;
}
.wsaas-support-reply textarea:focus {
	outline: none;
	border-color: var( --wsaas-primary );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.12 );
}
.wsaas-support-reply .wsaas-btn { align-self: flex-start; }

@media ( prefers-contrast: more ) {
	.wsaas-support-card, .wsaas-support-reply textarea { border-color: #111; }
}

/* ============================================================= *
 *  Phase 6a — Custom-request wizard
 * ============================================================= */

.wsaas-request {
	--wsaas-ease: cubic-bezier( 0.2, 0.8, 0.2, 1 );
	--wsaas-primary: #2563eb;
	max-width: 620px;
	margin: 20px auto;
	box-sizing: border-box;
}
.wsaas-request * { box-sizing: inherit; }

/* Honeypot — hidden from people, present for bots. */
.wsaas-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px; height: 1px; overflow: hidden;
}

.wsaas-form-error {
	background: #fdecec; color: #b3261e; border-radius: 10px; padding: 10px 14px; font-weight: 600;
}

/* Step indicator */
.wsaas-steps-nav {
	display: flex; gap: 6px; list-style: none; margin: 0 0 10px; padding: 0;
}
.wsaas-steps-nav li {
	display: flex; align-items: center; gap: 7px; flex: 1; min-width: 0; color: #8a90a2; font-size: .82rem;
}
.wsaas-steps-nav .dot {
	width: 24px; height: 24px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center;
	background: #e7e9f0; color: #666; font-weight: 700; font-size: .8rem;
	transition: background .3s var( --wsaas-ease ), color .3s var( --wsaas-ease );
}
.wsaas-steps-nav .lbl { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wsaas-steps-nav li.on .dot { background: var( --wsaas-primary ); color: #fff; }
.wsaas-steps-nav li.on { color: #1d2330; font-weight: 600; }
.wsaas-steps-nav li.done .dot { background: #137333; color: #fff; }

/* Progress bar */
.wsaas-progress {
	height: 6px; border-radius: 999px; background: #eef0f5; overflow: hidden; margin: 0 0 18px;
}
.wsaas-progress > i {
	display: block; height: 100%; width: 25%; border-radius: 999px;
	background: linear-gradient( 90deg, #2563eb, #137333 );
	transition: width .4s var( --wsaas-ease );
}

/* Steps */
.wsaas-step {
	border: 0; margin: 0; padding: 0 0 8px; min-inline-size: auto;
}
.wsaas-step > legend {
	font-size: 1.2rem; font-weight: 700; letter-spacing: -.01em; padding: 0; margin-bottom: 10px;
}
/* With JS, one step at a time; without JS, all steps show. */
.wsaas-request.is-js .wsaas-step { display: none; }
.wsaas-request.is-js .wsaas-step.is-active {
	display: block;
	animation: wsaasStepIn .4s var( --wsaas-ease );
}
@keyframes wsaasStepIn {
	from { opacity: 0; transform: translateX( calc( var( --wsaas-dir, 1 ) * 22px ) ); }
	to   { opacity: 1; transform: none; }
}

/* Fields */
.wsaas-request .wsaas-field { margin: 0 0 14px; }
.wsaas-request .wsaas-field > label { display: block; font-weight: 600; margin-bottom: 5px; }
.wsaas-request .wsaas-req { color: #b3261e; }
.wsaas-request input[type="text"],
.wsaas-request input[type="email"],
.wsaas-request textarea {
	width: 100%; padding: 11px 13px; border: 1px solid #d3d7e0; border-radius: 11px;
	font: inherit; background: #fff; transition: border-color .2s ease, box-shadow .2s ease;
}
.wsaas-request input:focus,
.wsaas-request textarea:focus {
	outline: none; border-color: var( --wsaas-primary ); box-shadow: 0 0 0 3px rgba( 37, 99, 235, .15 );
}
.wsaas-request .wsaas-check { display: flex; align-items: center; gap: 9px; font-weight: 600; }
.wsaas-request .wsaas-check input { width: 18px; height: 18px; }
.wsaas-request .wsaas-field.has-error input,
.wsaas-request .wsaas-field.has-error textarea { border-color: #b3261e; }
.wsaas-field__err { color: #b3261e; font-size: .85rem; margin: 5px 0 0; }

/* Nav */
.wsaas-request__nav {
	display: flex; gap: 10px; align-items: center; margin-top: 8px;
}
.wsaas-request__nav [data-wsaas-back] { margin-right: auto; }

/* Thank-you */
.wsaas-req-thanks {
	max-width: 520px; margin: 30px auto; text-align: center; background: linear-gradient( 180deg, #f2fbf5, #fff );
	border: 1px solid #e3f6e8; border-radius: 18px; padding: 34px 24px;
	box-shadow: 0 18px 44px -24px rgba( 20, 20, 40, .4 );
}
.wsaas-req-thanks__tick {
	width: 60px; height: 60px; border-radius: 50%; background: #137333; color: #fff; font-size: 32px;
	display: grid; place-items: center; margin: 0 auto 8px;
}
.wsaas-req-thanks h3 { margin: .3em 0 .2em; font-size: 1.35rem; }
.wsaas-req-thanks p { color: #555; max-width: 42ch; margin: .3em auto; }

@media ( prefers-reduced-motion: reduce ) {
	.wsaas-request.is-js .wsaas-step.is-active { animation: none; }
	.wsaas-progress > i { transition: none; }
}
@media ( prefers-contrast: more ) {
	.wsaas-request input, .wsaas-request textarea { border-color: #111; }
}

/* "Need something custom?" CTA under the gallery */
.wsaas-custom-cta {
	display: flex; align-items: center; gap: 18px; flex-wrap: wrap; justify-content: space-between;
	margin: 26px 0; padding: 22px 24px; border-radius: 16px;
	background: linear-gradient( 135deg, #eef2ff, #eafaf1 );
	border: 1px solid rgba( 20, 20, 40, .06 );
}
.wsaas-custom-cta h3 { margin: 0 0 4px; font-size: 1.15rem; letter-spacing: -.01em; }
.wsaas-custom-cta p { margin: 0; color: #55596b; }
@media ( prefers-reduced-transparency: reduce ) {
	.wsaas-custom-cta { background: #eef2ff; }
}
