/**
 * iSolar Development — компоненти.
 * 04 — кнопки та поля · 05 — картки, метрики, етапи.
 * Тіней немає: глибина будується контуром 1 px і золотою лінією зверху.
 */

/* ===============================================================
 * Кнопки
 * =============================================================== */

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-1);
	padding: var(--space-3) var(--space-5);
	border: var(--border-width) solid transparent;
	border-radius: var(--radius);
	font-family: var(--font-display);
	font-size: var(--fs-small);
	font-weight: var(--fw-bold);
	line-height: 1.25;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--dur) var(--ease), color var(--dur) var(--ease),
		border-color var(--dur) var(--ease);
}

.btn--lg {
	padding: var(--space-4) var(--space-6);
	font-size: var(--fs-body);
}

.btn--sm {
	padding: var(--space-2) var(--space-4);
	font-size: var(--fs-overline);
	letter-spacing: 0.04em;
}

.btn--block {
	width: 100%;
}

.btn[disabled],
.btn.is-disabled {
	opacity: 0.5;
	pointer-events: none;
}

/* — На світлому тлі — */

/* Первинна: суцільна зелень */
.btn--primary {
	background-color: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--c-white);
}

.btn--primary:hover,
.btn--primary:focus-visible {
	background-color: var(--color-primary-hover);
	border-color: var(--color-primary-hover);
	color: var(--c-white);
}

/* Вторинна: контур */
.btn--outline {
	background-color: transparent;
	border-color: var(--color-primary);
	color: var(--color-primary);
}

.btn--outline:hover,
.btn--outline:focus-visible {
	background-color: var(--color-primary);
	color: var(--c-white);
}

/* Третинна: текст із золотою лінією */
.btn--link {
	padding-inline: 0;
	padding-bottom: var(--space-2);
	background: none;
	border: 0;
	border-bottom: 2px solid var(--color-accent);
	color: var(--color-accent-ink);
}

.btn--link:hover,
.btn--link:focus-visible {
	color: var(--color-primary);
	border-bottom-color: var(--color-primary);
}

/* — На зеленому тлі — */

/* Первинна: золото */
.btn--gold {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--c-green-900);
}

.btn--gold:hover,
.btn--gold:focus-visible {
	background-color: var(--c-gold-700);
	border-color: var(--c-gold-700);
	color: var(--c-white);
}

/* Вторинна: білий контур */
.btn--ghost {
	background-color: transparent;
	border-color: var(--c-white);
	color: var(--c-white);
}

.btn--ghost:hover,
.btn--ghost:focus-visible {
	background-color: var(--c-white);
	color: var(--color-primary);
}

/* ===============================================================
 * Картки
 * =============================================================== */

.card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	padding: var(--space-5);
	background-color: var(--surface-card);
	border: var(--border-width) solid var(--border-color);
	border-radius: var(--radius);
}

.card__title {
	margin: 0;
	font-size: var(--fs-h3);
	line-height: var(--lh-h3);
}

.card__text {
	margin: 0;
	color: var(--text-muted);
}

.card__footer {
	margin-top: auto;
	padding-top: var(--space-4);
}

/* Картка напряму — біла, із золотою лінією зверху */
.card--line {
	border-top: 3px solid var(--color-accent);
}

/* Акцентна картка — виділяє ключовий напрям у сітці */
.card--accent {
	background-color: var(--surface-dark);
	border-color: var(--surface-dark);
	border-top-color: var(--color-accent);
	color: var(--text-on-dark);
}

.card--accent .card__title {
	color: var(--color-accent);
}

.card--accent .card__text {
	color: var(--text-on-dark-muted);
}

/* Картка на зеленому тлі секції */
.card--dark {
	background-color: var(--c-green-800);
	border-color: var(--border-color-dark);
	color: var(--text-on-dark);
}

.card--dark .card__title {
	color: var(--text-on-dark);
}

.card--dark .card__text {
	color: var(--text-on-dark-muted);
}

/* Клікабельна картка */
a.card {
	text-decoration: none;
	color: inherit;
	transition: border-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}

a.card:hover {
	border-color: var(--color-accent);
	transform: translateY(-2px);
}

.card__icon {
	width: var(--icon-size);
	height: var(--icon-size);
	color: var(--color-accent);
}

.card__media img {
	width: 100%;
	object-fit: cover;
	aspect-ratio: 16 / 10;
}

/* ===============================================================
 * Метрики
 * =============================================================== */

.metrics {
	display: grid;
	gap: 0;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
	padding: var(--space-6) var(--space-5);
	background-color: var(--surface-dark);
	color: var(--text-on-dark);
}

.metric {
	padding-inline: var(--space-5);
	border-left: var(--border-width) solid var(--border-color-dark);
}

.metric:first-child {
	border-left: 0;
}

.metric__value {
	display: block;
	color: var(--color-accent);
	font-family: var(--font-display);
	font-size: var(--fs-metric);
	font-weight: var(--fw-black);
	line-height: var(--lh-metric);
	letter-spacing: -0.015em;
	font-variant-numeric: tabular-nums;
}

.metric__label {
	display: block;
	margin-top: var(--space-2);
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-weight: var(--fw-bold);
	line-height: var(--lh-h3);
}

.metric__note {
	display: block;
	margin-top: var(--space-1);
	color: var(--text-on-dark-muted);
	font-size: var(--fs-small);
}

@media (max-width: 768px) {
	.metric {
		padding-inline: 0;
		padding-block: var(--space-4);
		border-left: 0;
		border-top: var(--border-width) solid var(--border-color-dark);
	}

	.metric:first-child {
		border-top: 0;
		padding-top: 0;
	}
}

/* Компактна плашка-метрика для hero */
.metric-chip {
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
	padding: var(--space-4);
	border: var(--border-width) solid var(--border-color-dark);
}

.metric-chip__value {
	color: var(--color-accent);
	font-family: var(--font-display);
	font-size: clamp(1.75rem, 3vw, 2.25rem);
	font-weight: var(--fw-black);
	line-height: 1.1;
}

.metric-chip__label {
	color: var(--text-on-dark-muted);
	font-size: var(--fs-small);
}

/* ===============================================================
 * Етапи процесу
 * =============================================================== */

.steps {
	display: grid;
	gap: var(--space-5) var(--space-6);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}

.step {
	padding-top: var(--space-4);
	border-top: var(--border-width) solid var(--color-accent);
}

.step__num {
	display: block;
	margin-bottom: var(--space-2);
	color: var(--color-accent-ink);
	font-family: var(--font-display);
	font-size: var(--fs-overline);
	font-weight: var(--fw-bold);
	letter-spacing: var(--ls-overline);
}

.step__title {
	margin: 0 0 var(--space-2);
	font-size: var(--fs-h3);
	line-height: var(--lh-h3);
}

.step__text {
	margin: 0;
	color: var(--text-muted);
}

.step__price {
	display: block;
	margin-top: var(--space-3);
	color: var(--color-accent-ink);
	font-family: var(--font-display);
	font-size: 1.5rem;
	font-weight: var(--fw-bold);
	font-variant-numeric: tabular-nums;
}

.on-dark .step,
.section--green .step,
.section--green-deep .step {
	border-top-color: var(--border-color-dark);
}

.on-dark .step__num,
.on-dark .step__price {
	color: var(--color-accent);
}

.on-dark .step__text {
	color: var(--text-on-dark-muted);
}

/* ===============================================================
 * Список-таблиця
 * =============================================================== */

.table-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

table {
	width: 100%;
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
}

th,
td {
	padding: var(--space-3) var(--space-2);
	text-align: left;
	border-bottom: var(--border-width) solid var(--border-color);
}

th {
	font-family: var(--font-display);
	font-size: var(--fs-overline);
	font-weight: var(--fw-bold);
	letter-spacing: var(--ls-overline);
	text-transform: uppercase;
	color: var(--color-accent-ink);
}

/* Таблиця на зеленому — як у макеті */
.table--dark {
	padding: var(--space-6) var(--space-5);
	background-color: var(--surface-dark);
	color: var(--text-on-dark);
}

.table--dark table {
	color: inherit;
}

.table--dark th {
	color: var(--text-on-dark-muted);
	border-bottom-color: var(--border-color-dark);
}

.table--dark td {
	border-bottom-color: var(--border-color-dark);
}

.table--dark .col-num {
	width: 6rem;
	color: var(--color-accent);
	font-family: var(--font-display);
	font-weight: var(--fw-bold);
}

.table--dark .col-price {
	text-align: right;
	white-space: nowrap;
}

/* ===============================================================
 * Форми
 * =============================================================== */

.form-grid {
	display: grid;
	gap: var(--space-4);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
}

.field {
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
}

.field--full {
	grid-column: 1 / -1;
}

label,
.field__label {
	font-family: var(--font-body);
	font-size: var(--fs-small);
	font-weight: var(--fw-semibold);
	color: var(--text-heading);
}

.field__hint {
	font-size: var(--fs-overline);
	color: var(--text-muted);
}

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="url"],
input[type="number"],
input[type="search"],
input[type="password"],
input[type="date"],
select,
textarea {
	width: 100%;
	padding: var(--space-3);
	background-color: var(--surface-field);
	border: var(--border-width) solid var(--border-color);
	border-radius: var(--radius);
	color: var(--text-body);
	font-family: var(--font-body);
	font-size: var(--fs-body);
	line-height: 1.5;
	transition: border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);
}

textarea {
	min-height: 8rem;
	resize: vertical;
}

select {
	appearance: none;
	padding-right: var(--space-6);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%230E3D2B' stroke-width='1.5' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--space-3) center;
}

::placeholder {
	color: var(--text-muted);
	opacity: 1;
}

input:focus,
select:focus,
textarea:focus {
	outline: 0;
	border-color: var(--color-accent);
	background-color: var(--c-white);
}

input[aria-invalid="true"],
.field.has-error input,
.field.has-error select,
.field.has-error textarea {
	border-color: #b23b2e;
}

.field__error {
	font-size: var(--fs-overline);
	color: #b23b2e;
}

/* Чекбокси й радіо */
.choice {
	display: flex;
	align-items: flex-start;
	gap: var(--space-2);
	font-weight: var(--fw-regular);
}

.choice input {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	margin-top: 0.2em;
	accent-color: var(--color-primary);
}

/* Форма на зеленому тлі */
.on-dark label,
.on-dark .field__label,
.section--green label,
.section--green-deep label {
	color: var(--text-on-dark);
}

.on-dark .field__hint,
.section--green .field__hint {
	color: var(--text-on-dark-muted);
}

.on-dark input,
.on-dark select,
.on-dark textarea,
.section--green input,
.section--green select,
.section--green textarea {
	background-color: rgba(255, 255, 255, 0.06);
	border-color: var(--border-color-dark);
	color: var(--text-on-dark);
}

.on-dark ::placeholder,
.section--green ::placeholder {
	color: var(--text-on-dark-muted);
}

.on-dark input:focus,
.section--green input:focus,
.on-dark select:focus,
.on-dark textarea:focus,
.section--green textarea:focus {
	background-color: rgba(255, 255, 255, 0.1);
	border-color: var(--color-accent);
}

/* ===============================================================
 * Акордеон (FAQ)
 * =============================================================== */

.accordion {
	border-top: var(--border-width) solid var(--border-color);
}

.accordion__item {
	border-bottom: var(--border-width) solid var(--border-color);
}

.accordion__trigger {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--space-4);
	width: 100%;
	padding: var(--space-4) 0;
	background: none;
	border: 0;
	color: var(--text-heading);
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-weight: var(--fw-bold);
	line-height: var(--lh-h3);
	text-align: left;
	cursor: pointer;
}

.accordion__trigger:hover {
	color: var(--color-accent-ink);
}

.accordion__icon {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	margin-top: 0.3em;
	position: relative;
}

.accordion__icon::before,
.accordion__icon::after {
	content: "";
	position: absolute;
	inset: 50% 0 auto 0;
	height: 2px;
	background-color: var(--color-accent);
	transition: transform var(--dur) var(--ease);
}

.accordion__icon::after {
	transform: rotate(90deg);
}

.accordion__trigger[aria-expanded="true"] .accordion__icon::after {
	transform: rotate(0deg);
}

.accordion__panel {
	padding-bottom: var(--space-4);
	color: var(--text-muted);
	max-width: 72ch;
}

.accordion__panel[hidden] {
	display: none;
}

/* ===============================================================
 * Ейбрау-мітка / бейдж
 * =============================================================== */

.badge {
	display: inline-flex;
	align-items: center;
	padding: var(--space-1) var(--space-3);
	border: var(--border-width) solid var(--color-accent);
	color: var(--color-accent-ink);
	font-family: var(--font-display);
	font-size: var(--fs-overline);
	font-weight: var(--fw-bold);
	letter-spacing: var(--ls-overline);
	text-transform: uppercase;
}

.on-dark .badge,
.section--green .badge {
	color: var(--color-accent);
}

.badge--solid {
	background-color: var(--color-accent);
	color: var(--c-green-900);
}

/* ===============================================================
 * Модальне вікно
 * =============================================================== */

.modal {
	border: 0;
	padding: 0;
	max-width: min(640px, 92vw);
	background-color: var(--c-white);
	color: var(--text-body);
}

.modal::backdrop {
	background-color: rgba(8, 32, 23, 0.72);
}

.modal__inner {
	padding: var(--space-6);
	border-top: 3px solid var(--color-accent);
}

.modal__close {
	position: absolute;
	top: var(--space-3);
	right: var(--space-3);
	width: 40px;
	height: 40px;
	background: none;
	border: 0;
	color: var(--text-muted);
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
}

.modal__close:hover {
	color: var(--color-primary);
}

/* ===============================================================
 * Медіа з діагональним зрізом
 * =============================================================== */

.media-cut {
	position: relative;
	overflow: hidden;
	background-color: var(--c-green-800);
}

.media-cut img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ===============================================================
 * Пагінація / навігація постів
 * =============================================================== */

.pagination {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-1);
	margin-top: var(--space-6);
}

.pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 44px;
	height: 44px;
	padding-inline: var(--space-2);
	border: var(--border-width) solid var(--border-color);
	color: var(--text-heading);
	font-family: var(--font-display);
	font-weight: var(--fw-bold);
	text-decoration: none;
}

.pagination .page-numbers:hover {
	border-color: var(--color-accent);
}

.pagination .page-numbers.current {
	background-color: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--c-white);
}

.post-nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--space-4);
	margin-top: var(--space-6);
	padding-top: var(--space-4);
	border-top: var(--border-width) solid var(--border-color);
}
