/**
 * Sans Souci Base theme styles.
 * Visual Composer friendly: minimal global styling + scoped fallback components.
 */

:root {
	--ss-bg: #ffffff;
	--ss-bg-alt: #fcfcfc;
	--ss-surface: #ffffff;
	--ss-text: #5f6670;
	--ss-text-strong: #30343a;
	--ss-muted: #8f96a3;
	--ss-border: #e7e9ee;
	--ss-primary: #8fa9d8;
	--ss-primary-dark: #597ebd;
	--ss-accent: #ee3f4d;
	--ss-header: #2d2f33;
	--ss-font-body: Lato, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	--ss-font-heading: Rubik, Lato, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	--ss-container: min(1180px, calc(100vw - 32px));
	--ss-container-wide: min(1360px, calc(100vw - 32px));
	--ss-radius: 4px;
	--ss-radius-lg: 10px;
	--ss-shadow: 0 12px 32px rgba(25, 31, 38, .12);
	--ss-shadow-soft: 0 8px 22px rgba(25, 31, 38, .08);
	--ss-focus: 0 0 0 3px rgba(143, 169, 216, .45);
}

/* Reset only the essentials; do not override Visual Composer layout internals. */
html {
	box-sizing: border-box;
	scroll-behavior: smooth;
	-webkit-text-size-adjust: 100%;
}

*,
*::before,
*::after {
	box-sizing: inherit;
}

body.sans-souci-base {
	margin: 0;
	background: var(--ss-bg);
	color: var(--ss-text);
	font-family: var(--ss-font-body);
	font-size: 16px;
	line-height: 1.7;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
}

body.sans-souci-base img,
body.sans-souci-base svg,
body.sans-souci-base video,
body.sans-souci-base canvas {
	max-width: 100%;
	height: auto;
}

body.sans-souci-base a {
	color: var(--ss-primary-dark);
	text-decoration-thickness: .08em;
	text-underline-offset: .18em;
	transition: color .18s ease, opacity .18s ease, border-color .18s ease, background-color .18s ease;
}

body.sans-souci-base a:hover {
	color: var(--ss-accent);
}

body.sans-souci-base :focus-visible {
	outline: none;
	box-shadow: var(--ss-focus);
}

body.sans-souci-base h1,
body.sans-souci-base h2,
body.sans-souci-base h3,
body.sans-souci-base h4,
body.sans-souci-base h5,
body.sans-souci-base h6 {
	margin: 0 0 .75em;
	color: var(--ss-text-strong);
	font-family: var(--ss-font-heading);
	font-weight: 400;
	line-height: 1.18;
	letter-spacing: .015em;
}

body.sans-souci-base p {
	margin: 0 0 1.1em;
}

body.sans-souci-base input,
body.sans-souci-base textarea,
body.sans-souci-base select,
body.sans-souci-base button {
	font: inherit;
}

body.sans-souci-base input,
body.sans-souci-base textarea,
body.sans-souci-base select {
	border: 1px solid #cfd3da;
	border-radius: 0;
	background: #fff;
	color: var(--ss-text-strong);
	min-height: 38px;
	padding: 8px 10px;
}

body.sans-souci-base textarea {
	min-height: 140px;
	resize: vertical;
}

body.sans-souci-base button,
body.sans-souci-base input[type="button"],
body.sans-souci-base input[type="reset"],
body.sans-souci-base input[type="submit"],
body.sans-souci-base .ss-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 38px;
	padding: 9px 18px;
	border: 1px solid var(--ss-accent);
	border-radius: 999px;
	background: var(--ss-accent);
	color: #fff;
	font-family: var(--ss-font-heading);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: .05em;
	line-height: 1;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
}

body.sans-souci-base button:hover,
body.sans-souci-base input[type="button"]:hover,
body.sans-souci-base input[type="reset"]:hover,
body.sans-souci-base input[type="submit"]:hover,
body.sans-souci-base .ss-button:hover {
	background: #d73340;
	border-color: #d73340;
	color: #fff;
}

.ss-container {
	width: var(--ss-container);
	margin-right: auto;
	margin-left: auto;
}

.ss-container--wide {
	width: var(--ss-container-wide);
}

.ss-site-main {
	min-height: 50vh;
}

.ss-site-main--index,
.ss-site-main--single,
.ss-site-main--archive,
.ss-site-main--search,
.ss-site-main--404,
.ss-site-main--woocommerce {
	padding: clamp(32px, 6vw, 80px) 0;
}

.ss-site-main--page,
.ss-site-main--full-width,
.ss-site-main--canvas {
	padding: 0;
}

/* Accessibility helpers. */
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.screen-reader-text:focus,
.skip-link:focus {
	position: fixed !important;
	top: 12px;
	left: 12px;
	z-index: 100000;
	width: auto;
	height: auto;
	padding: 10px 14px;
	clip: auto;
	background: var(--ss-accent);
	color: #fff;
	border-radius: 4px;
	box-shadow: var(--ss-shadow);
	text-decoration: none;
}

/* Fallback header/footer, disabled by default in Customizer. */
.ss-site-header {
	background: var(--ss-header);
	color: #fff;
	box-shadow: 0 8px 24px rgba(0, 0, 0, .16);
}

.ss-site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	min-height: 68px;
}

.ss-brand a,
.ss-brand__name {
	color: #fff;
	font-family: var(--ss-font-heading);
	font-size: 22px;
	letter-spacing: .08em;
	text-decoration: none;
	text-transform: uppercase;
}

.ss-brand .custom-logo {
	display: block;
	max-height: 52px;
	width: auto;
}

.ss-primary-nav__list,
.ss-footer-nav__list {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 22px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ss-primary-nav a {
	color: #fff;
	font-family: var(--ss-font-heading);
	font-size: 13px;
	font-weight: 500;
	text-decoration: none;
}

.ss-primary-nav a:hover {
	color: var(--ss-primary);
}

.ss-site-footer {
	padding: 44px 0;
	background: var(--ss-bg-alt);
	border-top: 1px solid var(--ss-border);
	color: var(--ss-text);
}

.ss-site-footer__inner {
	display: grid;
	gap: 28px;
	text-align: center;
}

.ss-footer-nav__list {
	justify-content: center;
}

.ss-site-footer__copy {
	margin: 0;
	color: var(--ss-muted);
	font-size: 13px;
}

/* Default WP content fallback. */
.ss-content--narrow {
	max-width: 860px;
}

.ss-entry-header,
.ss-archive-header {
	margin-bottom: clamp(24px, 4vw, 48px);
	text-align: center;
}

.ss-entry-title,
.ss-archive-title {
	font-size: clamp(30px, 4vw, 52px);
	text-transform: uppercase;
	text-shadow: 0 2px 2px rgba(0, 0, 0, .14);
}

.ss-entry-meta,
.ss-post-card__date,
.ss-eyebrow {
	color: var(--ss-muted);
	font-family: var(--ss-font-heading);
	font-size: 12px;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.ss-entry-media {
	margin: 0 0 32px;
}

.ss-entry-media img {
	display: block;
	width: 100%;
}

.ss-entry-content > *:last-child,
.ss-page-entry > *:last-child {
	margin-bottom: 0;
}

.ss-post-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 24px;
}

.ss-post-card {
	overflow: hidden;
	background: var(--ss-surface);
	border: 1px solid var(--ss-border);
	box-shadow: var(--ss-shadow-soft);
}

.ss-post-card__media {
	display: block;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--ss-bg-alt);
}

.ss-post-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .25s ease;
}

.ss-post-card__media:hover img {
	transform: scale(1.035);
}

.ss-post-card__body {
	padding: 22px;
}

.ss-post-card__title {
	font-size: 21px;
}

.ss-post-card__title a {
	color: var(--ss-text-strong);
	text-decoration: none;
}

.ss-post-card__excerpt {
	color: var(--ss-text);
	font-size: 15px;
}

.ss-empty {
	padding: clamp(28px, 5vw, 56px);
	background: var(--ss-bg-alt);
	border: 1px solid var(--ss-border);
	text-align: center;
}

.ss-search-form,
.ss-form,
.post-password-form {
	display: grid;
	gap: 12px;
	max-width: 520px;
	margin: 24px auto 0;
}

.ss-inline-form {
	display: grid;
	gap: 10px;
}

/* Medical Event Manager compatibility: token-level, scoped and low-specificity. */
body.sans-souci-base .mem-events,
body.sans-souci-base .mem-slider,
body.sans-souci-base .mem-register,
body.sans-souci-base .mem-dashboard,
body.sans-souci-base .mem-auth-grid,
body.sans-souci-base .mem-recommended,
body.sans-souci-base .mem-archive,
body.sans-souci-base .mem-single {
	--mem-primary: var(--ss-primary);
	--mem-primary-strong: var(--ss-primary-dark);
	--mem-accent: var(--ss-accent);
	--mem-bg: var(--ss-bg-alt);
	--mem-surface: var(--ss-surface);
	--mem-surface-2: var(--ss-bg-alt);
	--mem-text: var(--ss-text-strong);
	--mem-muted: var(--ss-text);
	--mem-border: var(--ss-border);
	--mem-radius: 8px;
	--mem-radius-sm: 4px;
	--mem-shadow: var(--ss-shadow);
	--mem-shadow-soft: var(--ss-shadow-soft);
	font-family: var(--ss-font-body);
}

body.sans-souci-base .mem-card,
body.sans-souci-base .mem-filters,
body.sans-souci-base .mem-ticket-card,
body.sans-souci-base .mem-extra-card,
body.sans-souci-base .mem-form-section,
body.sans-souci-base .mem-dashboard-item {
	background-image: none;
}

body.sans-souci-base .mem-card__title,
body.sans-souci-base .mem-hero h1,
body.sans-souci-base .mem-form-section h2,
body.sans-souci-base .mem-dashboard h2,
body.sans-souci-base .mem-register h2 {
	font-family: var(--ss-font-heading);
	font-weight: 400;
	letter-spacing: .02em;
}

body.sans-souci-base .mem-btn {
	border-radius: 999px;
	font-family: var(--ss-font-heading);
	font-size: 12px;
	letter-spacing: .05em;
	text-transform: uppercase;
}

body.sans-souci-base .mem-chip {
	border-radius: 999px;
}

/* Visual Composer pages should remain free to control their own rows. */
body.sans-souci-base .vcv-layouts,
body.sans-souci-base .vc_row,
body.sans-souci-base .vce-row-container {
	max-width: none;
}

/* Small utility that can be used from Visual Composer custom class fields. */
.ss-section {
	padding: clamp(48px, 8vw, 96px) 0;
	background: var(--ss-bg);
}

.ss-section--alt {
	background: var(--ss-bg-alt);
}

.ss-section-title {
	margin-bottom: 8px;
	text-align: center;
	text-transform: uppercase;
}

.ss-section-subtitle {
	max-width: 760px;
	margin: 0 auto 28px;
	color: var(--ss-muted);
	text-align: center;
}

.ss-wave-before,
.ss-wave-after {
	position: relative;
}

.ss-wave-before::before,
.ss-wave-after::after {
	content: "";
	display: block;
	height: 22px;
	background:
		radial-gradient(16px 12px at 16px 0, transparent 15px, var(--ss-bg-alt) 16px) repeat-x;
	background-size: 32px 22px;
}

@media (min-width: 700px) {
	.ss-post-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ss-inline-form {
		grid-template-columns: 1fr auto;
		align-items: end;
	}
}

@media (min-width: 1024px) {
	.ss-post-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 760px) {
	.ss-site-header__inner {
		align-items: flex-start;
		flex-direction: column;
		padding-top: 14px;
		padding-bottom: 14px;
	}

	.ss-primary-nav__list {
		gap: 10px 16px;
	}

	body.sans-souci-base {
		font-size: 15px;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: .001ms !important;
	}
}
