/* ==========================================================================
   Aitosairaala – Asiantuntijat, frontend-tyylit
   ========================================================================== */

.asp-directory,
.asp-carousel,
.asp-profile-wrap,
.asp-table-wrap {
	/* Jaetut muuttujat kaikille plugin-näkymille (mm. .asp-btn karusellissa). */
	--asp-accent: #133256;
	--asp-accent-dark: #0d2440;
	--asp-bg: #fcf7e2;
	--asp-border: #6b8a95;
	--asp-gold: #bd8c5e;
	--asp-nav-border: #cbb489;
	--asp-radius: 14px;
	--asp-serif: Georgia, 'Times New Roman', serif;
	font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.asp-directory {
	max-width: 100%; /* täyttää Elementorin containerin (esim. 1140px) */
	margin: 0 auto;
}

/* --- Kehysmoodi (bg="yellow") -------------------------------------------- */
/* Koko lista saa taustavärin; suodattimet sulautuvat ja Nimi-kenttä alkaa
   samalta tasolta kuin kortit (ei omaa laatikkoa/vaakapaddingia). */
.asp-directory--framed {
	padding: 28px;
	border-radius: 18px;
}

.asp-directory--framed .asp-filters {
	background: transparent;
	padding: 0;
	border-radius: 0;
}

/* --- Suodattimet --------------------------------------------------------- */
.asp-filters {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr;
	gap: 16px;
	background: var(--asp-bg);
	padding: 18px;
	border-radius: var(--asp-radius);
	margin-bottom: 28px;
}

.asp-filter__label {
	display: block;
	font-size: 20px;
	font-weight: 600;
	margin-bottom: 6px;
	color: #133256;
}

.asp-search {
	position: relative;
}

/* Hakukuvake: search.svg maskina, väri teeman sininen (--asp-accent). */
.asp-search__icon {
	position: absolute;
	left: 12px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px;
	height: 16px;
	background-color: var(--asp-accent, #133256);
	-webkit-mask: url(../icons/search.svg) no-repeat center / contain;
	mask: url(../icons/search.svg) no-repeat center / contain;
	pointer-events: none;
}

.asp-directory .asp-search input,
.asp-directory .asp-filter select {
	width: 100%;
	box-sizing: border-box;
	padding: 11px 14px;
	border: none;
	border-radius: 10px;
	background: #fff;
	font-size: 15px;
	line-height: 1.3;
	color: #24302e;
}

.asp-directory .asp-search input {
	padding-left: 36px;
}

.asp-directory .asp-search input:focus,
.asp-directory .asp-filter select:focus {
	outline: none;
	box-shadow: none;
}

/* --- Kortit -------------------------------------------------------------- */
.asp-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr); /* 4 vierekkäin desktopilla */
	gap: 22px;
}

/* Tabletti: 2 vierekkäin */
@media (max-width: 1024px) {
	.asp-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* Mobiili: 1 kortti */
@media (max-width: 600px) {
	.asp-grid {
		grid-template-columns: 1fr;
	}
}

/* Suodattimen piilottama kortti (kumoaa .asp-card display:flex). */
[data-asp-item][hidden] {
	display: none !important;
}

.asp-card {
	background: transparent; /* aina sama kuin sivun/kehyksen tausta */
	overflow: visible;
	text-align: left;
	display: flex;
	flex-direction: column;
	transition: transform 0.15s ease;
}

.asp-card:hover {
	transform: translateY(-2px);
}

.asp-card__media {
	display: block;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: #f1f5f4;
	border-radius: 12px;
}

.asp-card__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top center; /* kuva alkaa yläkeskeltä */
	display: block;
}

.asp-card__img--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 64px;
	color: #b7c4c1;
	width: 100%;
	height: 100%;
}

.asp-card__body {
	padding: 16px 2px 4px;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	flex: 1;
}

.asp-card__name {
	font-size: 26px;
	font-weight: 700;
	margin: 0;
	line-height: 1.15;
	color: var(--asp-accent, #133256);
}

/* !important + font:inherit estää Elementorin globaaleja linkkityylejä
   muuttamasta nimen fonttia, väriä tai alleviivausta. */
.asp-card__name a,
.asp-card__name a:link,
.asp-card__name a:visited,
.asp-card__name a:hover,
.asp-card__name a:focus {
	color: var(--asp-accent, #133256) !important;
	font: inherit !important;
	text-decoration: none !important;
	box-shadow: none !important;
}

.asp-card__title {
	font-size: 16px;
	color: var(--asp-accent, #133256);
	margin: 0;
	line-height: 1.4;
}

/* Tekstinappi nuolella (ei reunaa). margin-top:auto pitää napit aina kortin
   alareunassa samalla tasolla, vaikka tittelit/palvelut ovat eri mittaisia.
   !important pakottaa värit teeman/Elementorin oletuslinkkivärin ylitse. */
.asp-btn,
.asp-btn:link,
.asp-btn:visited {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	align-self: flex-start;
	margin-top: auto;
	padding-top: 12px;
	background: transparent !important;
	color: var(--asp-accent, #133256) !important;
	border: none;
	text-decoration: none;
	font-size: 16px;
	font-weight: 600;
	transition: color 0.15s ease;
}

.asp-btn__arrow {
	font-size: 1.1em;
	line-height: 1;
}

.asp-btn:hover,
.asp-btn:focus {
	background: transparent !important;
	color: var(--asp-accent-dark, #0d2440) !important;
	text-decoration: underline;
}

.asp-no-results {
	text-align: center;
	padding: 32px;
	color: #6b7a77;
	font-size: 15px;
}

/* --- Karuselli (4 kerrallaan työpöydällä, ei suodattimia) ----------------- */
.asp-carousel {
	--asp-per-view: 5;
	--asp-gap: 22px;
	--asp-peek: 60px; /* kuinka leveä vilaus seuraavasta kortista jää näkyviin */
	position: relative;
	max-width: 1100px;
	margin: 0 auto;
}

/* Otsikkorivi: otsikko vasemmalla, laskuri + nuolinapit oikealla. */
.asp-carousel__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 28px;
}

.asp-carousel__title {
	font-family: var(--asp-serif);
	font-size: 56px;
	font-weight: 400;
	line-height: 1.1;
	margin: 0;
	color: var(--asp-accent, #133256);
}

.asp-carousel__controls {
	display: flex;
	align-items: center;
	gap: 12px;
	/* Pidä nuolet aina oikealla myös ilman otsikkoa (space-between jättäisi yksin vasemmalle). */
	margin-left: auto;
}

.asp-carousel__count {
	font-size: 16px;
	color: var(--asp-accent, #133256);
	min-width: 2.5em;
	text-align: right;
}

.asp-carousel__viewport {
	overflow: hidden;
	min-width: 0;
}

/* Viimeisen näkyvän kortin päälle tasainen vaalennus (JS lisää luokan) –
   vihje siitä, että kortteja on lisää selattavana. */
.asp-carousel__slide--peek {
	opacity: 0.4;
	transition: opacity 0.3s ease;
}

.asp-carousel__track {
	display: flex;
	flex-wrap: nowrap; /* estä 5. kortin tippuminen omalle rivilleen */
	gap: var(--asp-gap);
	will-change: transform;
	cursor: grab;
	touch-action: pan-y;
}

.asp-carousel__track:active {
	cursor: grabbing;
}

/* Estä kuvien/tekstin natiiviraahaus ja -valinta vedon aikana. */
.asp-carousel__track img,
.asp-carousel__track a {
	-webkit-user-drag: none;
	user-select: none;
	-webkit-user-select: none;
}

.asp-carousel__slide {
	/* perView täyttä korttia + peek-vilaus seuraavasta (perView väliä). */
	flex: 0 0 calc((100% - var(--asp-per-view) * var(--asp-gap) - var(--asp-peek)) / var(--asp-per-view));
	box-sizing: border-box;
}

.asp-carousel__slide .asp-card {
	height: 100%;
}

/* Korkea tarkkuus + !important, jotta Elementorin globaalit button-tyylit
   (tausta, reunat, varjot, koko) eivät aja näiden yli. */
.asp-carousel .asp-carousel__controls button.asp-carousel__nav {
	flex: 0 0 auto;
	box-sizing: border-box;
	width: 46px !important;
	height: 42px !important;
	min-width: 0 !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border-radius: 8px !important;
	border: 1px solid var(--asp-nav-border, #cbb489) !important;
	background: transparent !important;
	background-image: none !important;
	color: var(--asp-accent, #133256) !important;
	font-size: 20px !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	box-shadow: none !important;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.asp-carousel .asp-carousel__controls button.asp-carousel__nav:hover,
.asp-carousel .asp-carousel__controls button.asp-carousel__nav:focus {
	background: var(--asp-accent, #133256) !important;
	background-image: none !important;
	border-color: var(--asp-accent, #133256) !important;
	color: #fff !important;
	box-shadow: none !important;
}

@media (max-width: 1024px) {
	.asp-carousel__slide {
		flex-basis: calc((100% - 2 * var(--asp-gap) - var(--asp-peek)) / 2); /* 2 + vilaus tabletti */
	}
}

@media (max-width: 600px) {
	.asp-carousel__slide {
		flex-basis: calc(100% - var(--asp-gap) - var(--asp-peek)); /* 1 + vilaus mobiili */
	}
}

/* --- Hinnastotaulukko (x-scrollattava mobiilissa) ------------------------ */
.asp-table-wrap {
	width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border: 1px solid var(--asp-border, #e2e8e6);
	border-radius: 12px;
}

.asp-price-table {
	width: 100%;
	min-width: 560px;
	border-collapse: collapse;
	font-size: 15px;
	background: #fff;
	color: #133256; /* taulukon tekstin väri */
}

.asp-price-table--combined {
	min-width: 620px;
}

.asp-price-table th,
.asp-price-table td {
	padding: 12px 16px;
	text-align: left;
	border-bottom: 1px solid #eef2f1;
	white-space: nowrap;
	color: #133256;
}

.asp-price-table thead th {
	background: #f4f8f7;
	font-weight: 700;
	color: #133256;
	position: sticky;
	top: 0;
}

.asp-price-table .asp-num {
	text-align: right;
}

.asp-price-table tbody tr:hover {
	background: #fafcfb;
}

/* Kategoriaotsikkorivi */
.asp-cat-row td {
	font-weight: 700;
	color: #133256;
	text-transform: uppercase;
	font-size: 13px;
	letter-spacing: 0.03em;
}

/* "alk." – edullisin hinta */
.asp-alk {
	font-size: 12px;
	font-weight: 400;
	color: #6b8a95;
	margin-right: 2px;
}

.asp-total-cell {
	color: #bd8c5e; /* yhteishinnan väri */
}

.asp-total-cell strong {
	color: #bd8c5e;
}

.asp-expert a {
	font-weight: 600;
	color: #1f2a28;
	text-decoration: none;
}

.asp-price-note {
	font-size: 13px;
	color: #6b7a77;
	margin: 10px 2px 0;
}

.asp-empty {
	padding: 18px;
	color: #6b7a77;
}

/* --- Profiilisivu -------------------------------------------------------- */
.asp-profile-wrap {
	max-width: 900px;
	margin: 40px auto;
	padding: 0 16px;
}

.asp-profile__header {
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 28px;
	align-items: start;
	margin-bottom: 32px;
}

.asp-profile__img {
	width: 100%;
	border-radius: 14px;
	object-fit: cover;
	object-position: top center;
	aspect-ratio: 1 / 1;
}

.asp-profile__name {
	margin: 0 0 6px;
	font-size: 30px;
}

.asp-profile__title {
	font-size: 17px;
	color: #6b7a77;
	margin: 0 0 16px;
}

.asp-pills {
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.asp-tags {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-bottom: 10px;
}

.asp-pills .asp-tags {
	margin-bottom: 0;
}

.asp-tags__label {
	font-size: 13px;
	font-weight: 600;
	color: #133256;
}

/* Erikoisala-pill */
.asp-tag {
	display: inline-block;
	background: #b1e5d5;
	color: #133256;
	padding: 4px 12px;
	border-radius: 999px;
	font-size: 13px;
}

/* Palvelu-pill */
.asp-tag--alt {
	background: #bd8c5e;
	color: #ffffff;
}

/* Linkitetty pilli (palvelu → sivu). !important suojaa Elementorin linkkityyleiltä. */
a.asp-tag--link,
a.asp-tag--link:link,
a.asp-tag--link:visited,
a.asp-tag--link:hover,
a.asp-tag--link:focus {
	text-decoration: none !important;
	cursor: pointer;
	color: #ffffff !important; /* asp-tag--alt = valkoinen teksti */
	box-shadow: none !important;
	transition: opacity 0.15s ease, box-shadow 0.15s ease;
}

a.asp-tag--link:hover,
a.asp-tag--link:focus {
	opacity: 0.88;
	box-shadow: 0 2px 8px rgba(19, 50, 86, 0.18) !important;
}

.asp-profile__desc,
.asp-profile__pricing {
	margin-top: 28px;
}

.asp-profile__desc h2,
.asp-profile__pricing h2 {
	font-size: 22px;
	margin-bottom: 14px;
}

/* --- Responsiivisuus ----------------------------------------------------- */
@media (max-width: 782px) {
	.asp-filters {
		grid-template-columns: 1fr;
	}
	.asp-filter__label {
		font-size: 14px; /* mobiili */
	}
	.asp-profile__header {
		grid-template-columns: 1fr;
	}
	.asp-profile__photo {
		max-width: 260px;
	}
	/* Otsikko ja nuolet pysyvät samalla rivillä myös mobiilissa. */
	.asp-carousel__head {
		flex-wrap: nowrap;
		gap: 10px;
		margin-bottom: 20px;
	}
	.asp-carousel__title {
		font-size: 24px;
		min-width: 0; /* saa kutistua, jottei riko riviä */
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	.asp-carousel__controls {
		flex-shrink: 0; /* nuolet + laskuri pitävät kokonsa */
	}
}

/* ==========================================================================
   Ajankohtaista ([ajankohtaista])
   ========================================================================== */
.asp-news {
	font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	max-width: 100%;
	margin: 0 auto;
}

.asp-news__search {
	position: relative;
	max-width: 420px;
	margin: 0 0 24px;
}

.asp-news__search input {
	width: 100%;
	box-sizing: border-box;
	padding: 11px 14px 11px 36px;
	border: 1px solid #6b8a95;
	border-radius: 10px;
	background: #fff;
	font-size: 15px;
	color: #133256;
}

.asp-news__search input:focus {
	outline: none;
	box-shadow: none;
}

.asp-news-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr); /* 3 vierekkäin desktopilla */
	gap: 24px;
}

.asp-news-card {
	display: flex;
	flex-direction: column;
	background: #b1e5d5;
	border-radius: 8px;
	padding: 28px;
	color: #133256;
	transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.asp-news-card:hover {
	box-shadow: 0 8px 24px rgba(19, 50, 86, 0.18);
	transform: scale(1.02);
}

/* Tähdet oikeaan ylänurkkaan, hieman isommat. */
.asp-news-card__icon {
	align-self: flex-end;
	width: 30px;
	height: auto;
	margin-bottom: 15px;
}

.asp-news-card__title {
	font-size: 32px;       /* DM Sans Medium 32/120 */
	line-height: 1.2;
	font-weight: 500;
	margin: 0 0 14px;
	color: #133256;
}

/* !important + font:inherit estää Elementorin globaaleja linkkityylejä
   muuttamasta otsikon fonttia, väriä tai alleviivausta. */
.asp-news-card__title a,
.asp-news-card__title a:link,
.asp-news-card__title a:visited,
.asp-news-card__title a:focus {
	color: #133256 !important;
	font: inherit !important;
	text-decoration: none !important;
	box-shadow: none !important;
}

.asp-news-card__title a:hover {
	color: #133256 !important;
	text-decoration: underline !important;
}

/* Ote: kiinteä 4 riviä (varaa aina saman tilan → rivit eivät heitä). */
.asp-news-card__excerpt {
	font-size: 15px;
	line-height: 1.5;
	margin: 0 0 20px; /* 20px otteen ja linkin väliin */
	color: #133256;
	display: -webkit-box;
	-webkit-line-clamp: 4;
	line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
	min-height: 6em; /* 4 riviä × 1.5 line-height */
}

/* Tekstinappi nuolella (ei reunaa).
   !important pakottaa värin Elementorin/teeman linkkivärin ylitse. */
.asp-news-card__link,
.asp-news-card__link:link,
.asp-news-card__link:visited {
	margin-top: auto; /* linkki kiinnitetty kortin pohjaan */
	display: inline-flex;
	align-items: center;
	gap: 8px;
	align-self: flex-start;
	font-weight: 600;
	color: #133256 !important;
	text-decoration: none;
	transition: color 0.15s ease;
}

.asp-news-card__link span {
	color: inherit !important;
	font-size: 1.1em;
	line-height: 1;
}

.asp-news-card__link:hover,
.asp-news-card__link:focus {
	color: #133256 !important;
	text-decoration: underline;
}

.asp-news-empty {
	padding: 24px 0;
	color: #6b7a77;
}

/* --- Sivutus (Ajankohtaista) -------------------------------------------- */
.asp-pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 8px;
	margin-top: 32px;
}

.asp-pagination[hidden] {
	display: none;
}

/* Korkea tarkkuus + !important suojaa Elementorin globaaleilta button-tyyleiltä. */
.asp-pagination button.asp-page {
	box-sizing: border-box !important;
	min-width: 42px !important;
	height: 42px !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 12px !important;
	border: 1px solid #133256 !important;
	border-radius: 8px !important;
	background: transparent !important;
	background-image: none !important;
	color: #133256 !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	box-shadow: none !important;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background 0.15s ease, color 0.15s ease;
}

.asp-pagination button.asp-page:hover:not(:disabled),
.asp-pagination button.asp-page.is-active {
	background: #133256 !important;
	background-image: none !important;
	color: #fff !important;
}

.asp-pagination button.asp-page:disabled {
	opacity: 0.4 !important;
	cursor: default;
}

/* Tabletti: 2 vierekkäin */
@media (max-width: 1024px) {
	.asp-news-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.asp-news-card__title {
		font-size: 26px;
	}
}

/* Mobiili: 1 kortti */
@media (max-width: 600px) {
	.asp-news-grid {
		grid-template-columns: 1fr;
	}
}
