/* ==========================================================================
   Agrivencia — buttons, cards, forms, tables, pills, floating furniture
   ========================================================================== */

/* --- Buttons --------------------------------------------------------- */
.agv-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
	min-height: 44px; padding: 0 1.15rem;
	border: 1px solid transparent; border-radius: var(--agv-r-sm);
	font-size: var(--agv-t-sm); font-weight: 620; line-height: 1;
	text-decoration: none; white-space: nowrap;
	transition: background var(--agv-fast) var(--agv-ease),
	            border-color var(--agv-fast),
	            transform var(--agv-fast) var(--agv-ease),
	            box-shadow var(--agv-fast);
}
.agv-btn:active { transform: translateY(1px); }
.agv-btn .agv-icon { width: 16px; height: 16px; }

.agv-btn--primary {
	background: var(--agv-mod-base); color: var(--agv-mod-on);
	box-shadow: var(--agv-sh-1);
}
.agv-btn--primary:hover { background: var(--agv-mod-shade); color: var(--agv-mod-on); box-shadow: var(--agv-sh-2); }

.agv-btn--ghost {
	background: transparent; color: var(--agv-ink);
	border-color: var(--agv-line);
}
.agv-btn--ghost:hover { background: var(--agv-surface-2); border-color: var(--agv-mod-base); color: var(--agv-ink); }

.agv-btn--on {
	background: #fff; color: var(--agv-mod-deep);
	box-shadow: var(--agv-sh-2);
}
.agv-btn--on:hover { background: var(--agv-mod-tint); color: var(--agv-mod-deep); }

.agv-btn--outline {
	background: transparent; color: inherit;
	border-color: currentColor; opacity: .9;
}
.agv-btn--outline:hover { background: rgba(255,255,255,.14); opacity: 1; color: inherit; }

.agv-btn--sm { min-height: 32px; padding: 0 .7rem; font-size: var(--agv-t-xs); }
.agv-btn--lg { min-height: 52px; padding: 0 1.6rem; font-size: var(--agv-t-base); }
.agv-btn--block { width: 100%; }

/* --- Pills ----------------------------------------------------------- */
.agv-pill {
	display: inline-flex; align-items: center; gap: .3rem;
	padding: .22rem .6rem;
	background: var(--agv-mod-tint); color: var(--agv-mod-deep);
	border-radius: var(--agv-r-pill);
	font-size: var(--agv-t-xs); font-weight: 600;
	white-space: nowrap;
}
.agv-pill--on { background: rgba(255,255,255,.18); color: inherit; }
.agv-pill--muted { background: var(--agv-surface-3); color: var(--agv-ink-4); }

/* --- Cards ----------------------------------------------------------- */
.agv-card {
	position: relative;
	display: flex; flex-direction: column; gap: .4rem;
	padding: var(--agv-s4);
	background: var(--agv-surface);
	border: 1px solid var(--agv-line-2);
	border-radius: var(--agv-r);
	text-decoration: none; color: var(--agv-ink);
	overflow: hidden;
	transition: transform var(--agv-fast) var(--agv-ease),
	            box-shadow var(--agv-fast),
	            border-color var(--agv-fast);
}
.agv-card::before {
	content: ""; position: absolute; inset: 0 auto 0 0;
	width: 3px; background: var(--card-colour, var(--agv-mod-base));
	transition: width var(--agv-fast) var(--agv-ease);
}
.agv-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--agv-sh-3);
	border-color: var(--card-colour, var(--agv-mod-base));
	color: var(--agv-ink);
}
.agv-card:hover::before { width: 5px; }

.agv-card__mark {
	display: grid; place-items: center;
	width: 34px; height: 34px; border-radius: var(--agv-r-sm);
	background: var(--card-tint, var(--agv-mod-tint));
	color: var(--card-colour, var(--agv-mod-base));
	margin-bottom: .2rem;
}
.agv-card__mark .agv-icon { width: 18px; height: 18px; }
.agv-card__vertical {
	font-family: var(--agv-mono); font-size: 9.5px;
	letter-spacing: .06em; text-transform: uppercase;
	color: var(--agv-ink-4);
}
.agv-card__title { font-family: var(--agv-display); font-size: var(--agv-t-md); font-weight: 600; line-height: 1.25; }
.agv-card__blurb { font-size: var(--agv-t-sm); color: var(--agv-ink-4); line-height: 1.45; }
.agv-card__flag {
	position: absolute; top: .6rem; right: .6rem;
	font-size: 8.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
	background: var(--card-colour, var(--agv-mod-base)); color: var(--card-on, #fff);
	padding: 2px 5px; border-radius: 3px;
}
.agv-card.is-hidden { display: none; }

/* --- Vertical cards -------------------------------------------------- */
.agv-vcard {
	position: relative;
	display: flex; flex-direction: column; gap: .5rem;
	padding: var(--agv-s5);
	background: var(--agv-surface);
	border: 1px solid var(--agv-line-2);
	border-top: 4px solid var(--v-colour);
	border-radius: var(--agv-r);
	text-decoration: none; color: var(--agv-ink);
	transition: transform var(--agv-fast), box-shadow var(--agv-fast);
}
.agv-vcard:hover { transform: translateY(-3px); box-shadow: var(--agv-sh-3); color: var(--agv-ink); }
.agv-vcard__icon {
	display: grid; place-items: center; width: 42px; height: 42px;
	border-radius: var(--agv-r-sm);
	background: var(--v-tint); color: var(--v-deep);
}
.agv-vcard__icon .agv-icon { width: 22px; height: 22px; }
.agv-vcard__name { font-size: var(--agv-t-lg); margin: 0; }
.agv-vcard__promise { font-weight: 600; color: var(--v-deep); margin: 0; font-size: var(--agv-t-sm); }
.agv-vcard__blurb { font-size: var(--agv-t-sm); color: var(--agv-ink-4); margin: 0; line-height: 1.5; }
.agv-vcard__count {
	display: inline-flex; align-items: center; gap: .3rem;
	margin-top: auto; padding-top: var(--agv-s3);
	font-family: var(--agv-mono); font-size: var(--agv-t-xs);
	color: var(--v-colour); font-weight: 600;
}
.agv-vcard__count .agv-icon { width: 14px; height: 14px; transition: transform var(--agv-fast); }
.agv-vcard:hover .agv-vcard__count .agv-icon { transform: translateX(3px); }

/* --- Forms ----------------------------------------------------------- */
.agv-field { display: flex; flex-direction: column; gap: .3rem; margin-bottom: var(--agv-s4); }
.agv-field--half { grid-column: span 1; }
.agv-field--full { grid-column: 1 / -1; }

.agv-field__label {
	font-size: var(--agv-t-sm); font-weight: 600; color: var(--agv-ink-2);
	display: flex; align-items: baseline; gap: .4rem;
}
.agv-field__unit {
	font-family: var(--agv-mono); font-size: var(--agv-t-xs);
	font-weight: 400; color: var(--agv-mute);
}
.agv-field__help { font-size: var(--agv-t-xs); color: var(--agv-ink-4); line-height: 1.45; }
.agv-field__error { font-size: var(--agv-t-xs); color: var(--agv-bad); font-weight: 600; }
.agv-field__error:empty { display: none; }

.agv-field input:not([type="checkbox"]),
.agv-field select,
.agv-field textarea {
	width: 100%;
	min-height: 46px; padding: .55rem .75rem;
	background: var(--agv-surface);
	border: 1.5px solid var(--agv-line);
	border-radius: var(--agv-r-sm);
	font-size: var(--agv-t-base);
	transition: border-color var(--agv-fast), box-shadow var(--agv-fast);
}
.agv-field textarea { min-height: 110px; resize: vertical; }
.agv-field input:focus, .agv-field select:focus, .agv-field textarea:focus {
	outline: 0;
	border-color: var(--agv-mod-base);
	box-shadow: 0 0 0 3px var(--agv-mod-ring);
}
.agv-field.has-error input, .agv-field.has-error select, .agv-field.has-error textarea {
	border-color: var(--agv-bad);
}

.agv-check { display: flex; align-items: flex-start; gap: .5rem; font-size: var(--agv-t-sm); cursor: pointer; }
.agv-check input { width: 20px; height: 20px; margin-top: 1px; accent-color: var(--agv-mod-base); flex: none; }
.agv-checkgroup { border: 0; margin: 0; padding: 0; display: grid; gap: .4rem; }
.agv-checkgroup legend { font-size: var(--agv-t-sm); font-weight: 600; margin-bottom: .3rem; padding: 0; }

/* --- Multi-step form ------------------------------------------------- */
.agv-form {
	background: var(--agv-surface);
	border: 1px solid var(--agv-line);
	border-radius: var(--agv-r-lg);
	padding: var(--agv-s6);
	box-shadow: var(--agv-sh-2);
}
.agv-form__progress {
	display: flex; gap: var(--agv-s2); margin-bottom: var(--agv-s5);
	padding-bottom: var(--agv-s4); border-bottom: 1px solid var(--agv-line-2);
	overflow-x: auto;
}
.agv-form__pip {
	flex: 1; min-width: 90px;
	padding-top: .5rem;
	border-top: 3px solid var(--agv-line);
	font-size: var(--agv-t-xs); font-weight: 600; color: var(--agv-mute);
	transition: border-color var(--agv-fast), color var(--agv-fast);
}
.agv-form__pip.is-current { border-top-color: var(--agv-mod-base); color: var(--agv-mod-shade); }
.agv-form__pip.is-done { border-top-color: var(--agv-good); color: var(--agv-good); }

.agv-form__step { border: 0; margin: 0; padding: 0; display: none; }
.agv-form__step.is-current { display: block; animation: agv-fade var(--agv-base) var(--agv-ease-out); }
.agv-form__step legend {
	font-family: var(--agv-display); font-size: var(--agv-t-lg); font-weight: 600;
	padding: 0; margin-bottom: .3rem;
}
.agv-form__blurb { font-size: var(--agv-t-sm); color: var(--agv-ink-4); margin-bottom: var(--agv-s4); }
.agv-form__fields { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 var(--agv-s4); }
.agv-form__fields > .agv-field--full,
.agv-form__fields > .agv-field--textarea,
.agv-form__fields > .agv-field--checkbox,
.agv-form__fields > .agv-field--checkboxes { grid-column: 1 / -1; }

.agv-form__actions {
	display: flex; gap: var(--agv-s3); align-items: center;
	margin-top: var(--agv-s5); padding-top: var(--agv-s4);
	border-top: 1px solid var(--agv-line-2);
}
.agv-form__actions [data-form-back] { margin-right: auto; }
.agv-form__result { margin-top: var(--agv-s4); }
.agv-form__result:empty { display: none; }

.agv-msg {
	padding: var(--agv-s4);
	border-radius: var(--agv-r-sm);
	font-size: var(--agv-t-sm);
	display: flex; gap: .5rem; align-items: flex-start;
}
.agv-msg--ok { background: var(--agv-good-tint); color: #1b4d1d; border-left: 3px solid var(--agv-good); }
.agv-msg--err { background: var(--agv-bad-tint); color: #7a1912; border-left: 3px solid var(--agv-bad); }

@keyframes agv-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* --- Subscribe ------------------------------------------------------- */
.agv-subscribe__row { display: flex; gap: var(--agv-s2); }
.agv-subscribe__row input {
	flex: 1; min-width: 0; min-height: 46px; padding: 0 .8rem;
	background: var(--agv-surface); color: var(--agv-ink);
	border: 1.5px solid var(--agv-line); border-radius: var(--agv-r-sm);
}
.agv-subscribe__row input:focus { outline: 0; border-color: var(--agv-mod-base); box-shadow: 0 0 0 3px var(--agv-mod-ring); }
.agv-subscribe__result:empty { display: none; }

/* --- Tables ---------------------------------------------------------- */
.agv-table-wrap { overflow-x: auto; border-radius: var(--agv-r); border: 1px solid var(--agv-line); }
.agv-table { font-size: var(--agv-t-sm); background: var(--agv-surface); }
.agv-table th, .agv-table td {
	padding: .7rem .9rem; text-align: left; vertical-align: top;
	border-bottom: 1px solid var(--agv-line-2);
}
.agv-table thead th {
	background: var(--agv-surface-3); font-weight: 640;
	font-size: var(--agv-t-xs); letter-spacing: .03em; text-transform: uppercase;
	color: var(--agv-ink-3); white-space: nowrap;
}
.agv-table tbody tr:last-child th, .agv-table tbody tr:last-child td { border-bottom: 0; }
.agv-table tbody th { font-weight: 600; color: var(--agv-ink); }
.agv-table--spec tbody th { width: 34%; background: var(--agv-surface-2); }
.agv-table--compare .is-us { background: var(--agv-mod-tint); font-weight: 600; color: var(--agv-mod-ink); }
.agv-table--compare thead .is-us { background: var(--agv-mod-base); color: var(--agv-mod-on); }

/* --- Ticks ----------------------------------------------------------- */
.agv-ticks { list-style: none; margin: 0 0 var(--agv-s4); padding: 0; display: grid; gap: .5rem; }
.agv-ticks li {
	display: flex; gap: .5rem; align-items: flex-start;
	margin: 0; font-size: var(--agv-t-sm); line-height: 1.5;
}
.agv-ticks .agv-icon { width: 16px; height: 16px; color: var(--agv-mod-base); margin-top: 2px; flex: none; }
.agv-ticks--on .agv-icon { color: currentColor; opacity: .7; }

/* --- Floating furniture ---------------------------------------------- */
.agv-progress {
	position: fixed; top: 0; left: 0; right: 0; height: 3px;
	z-index: calc(var(--agv-z-header) + 1);
	background: transparent; pointer-events: none;
}
.agv-progress span {
	display: block; height: 100%; width: 0;
	background: linear-gradient(90deg, var(--agv-mod-base), var(--agv-mod-glow));
	transition: width 80ms linear;
}

.agv-float {
	position: fixed; right: var(--agv-s4); bottom: var(--agv-s6);
	z-index: var(--agv-z-float);
	display: flex; flex-direction: column; gap: .4rem;
}
.agv-float__btn {
	position: relative;
	display: flex; align-items: center; gap: 0;
	width: 46px; height: 46px; padding: 0;
	background: var(--agv-surface); color: var(--agv-ink-2);
	border: 1px solid var(--agv-line);
	border-radius: var(--agv-r-pill);
	box-shadow: var(--agv-sh-2);
	overflow: hidden;
	transition: width var(--agv-base) var(--agv-ease-out),
	            background var(--agv-fast), color var(--agv-fast),
	            box-shadow var(--agv-fast);
}
.agv-float__btn .agv-icon { width: 20px; height: 20px; margin-left: 12px; flex: none; }
.agv-float__label {
	white-space: nowrap; font-size: var(--agv-t-sm); font-weight: 600;
	opacity: 0; padding-left: .5rem; padding-right: 1rem;
	transition: opacity var(--agv-fast);
}
.agv-float__btn:hover {
	width: auto; min-width: 46px;
	background: var(--agv-mod-base); color: var(--agv-mod-on);
	border-color: var(--agv-mod-base);
	box-shadow: var(--agv-sh-3);
}
.agv-float__btn:hover .agv-float__label { opacity: 1; }
.agv-float__btn--primary { background: var(--agv-mod-base); color: var(--agv-mod-on); border-color: var(--agv-mod-base); }
.agv-float__btn--top[hidden] { display: none; }

.agv-drawer {
	position: fixed; top: 0; right: 0; bottom: 0;
	width: min(440px, 92vw);
	z-index: var(--agv-z-drawer);
	background: var(--agv-surface);
	box-shadow: var(--agv-sh-4);
	display: flex; flex-direction: column;
	animation: agv-drawer-in var(--agv-base) var(--agv-ease-out);
}
.agv-drawer[hidden] { display: none; }
@keyframes agv-drawer-in { from { transform: translateX(100%); } to { transform: none; } }
.agv-drawer__head {
	display: flex; align-items: center; justify-content: space-between;
	padding: var(--agv-s4) var(--agv-s5);
	border-bottom: 1px solid var(--agv-line);
}
.agv-drawer__title { margin: 0; font-size: var(--agv-t-lg); }
.agv-drawer__close {
	width: 36px; height: 36px; display: grid; place-items: center;
	background: var(--agv-surface-2); border: 0; border-radius: var(--agv-r-sm); color: inherit;
}
.agv-drawer__body { flex: 1; overflow-y: auto; padding: var(--agv-s5); }

.agv-ticker {
	position: fixed; left: 0; right: 0; bottom: 0;
	z-index: calc(var(--agv-z-float) - 1);
	display: flex; align-items: center; gap: var(--agv-s3);
	padding: .4rem var(--agv-gutter);
	background: var(--agv-brand-dark); color: #dfe8da;
	font-size: var(--agv-t-xs);
	border-top: 1px solid rgba(255,255,255,.1);
}
.agv-ticker.is-hidden { display: none; }
.agv-ticker__label {
	display: inline-flex; align-items: center; gap: .3rem;
	font-family: var(--agv-mono); font-weight: 600;
	color: var(--agv-corn); white-space: nowrap; flex: none;
}
.agv-ticker__label .agv-icon { width: 13px; height: 13px; }
.agv-ticker__track {
	flex: 1; overflow: hidden; display: flex; gap: var(--agv-s6);
	white-space: nowrap;
	mask-image: linear-gradient(90deg, transparent, #000 3%, #000 92%, transparent);
	animation: agv-marquee 46s linear infinite;
}
.agv-ticker:hover .agv-ticker__track { animation-play-state: paused; }
@keyframes agv-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.agv-ticker__item strong { color: var(--agv-brand-glow); }
.agv-ticker__close {
	background: transparent; border: 0; color: inherit; opacity: .6;
	width: 24px; height: 24px; display: grid; place-items: center; flex: none;
}
.agv-ticker__close:hover { opacity: 1; }

.agv-consent {
	position: fixed; left: var(--agv-s4); bottom: var(--agv-s4);
	z-index: var(--agv-z-modal);
	max-width: 460px;
	background: var(--agv-surface); border: 1px solid var(--agv-line);
	border-radius: var(--agv-r-lg); box-shadow: var(--agv-sh-4);
	padding: var(--agv-s5);
	font-size: var(--agv-t-sm);
}
.agv-consent[hidden] { display: none; }
.agv-consent__actions { display: flex; gap: var(--agv-s2); align-items: center; margin-top: var(--agv-s3); flex-wrap: wrap; }
.agv-consent__link { font-size: var(--agv-t-xs); margin-left: auto; }

@media (max-width: 720px) {
	.agv-float { right: var(--agv-s2); bottom: 56px; }
	.agv-float__btn:nth-child(n+5) { display: none; }
	.agv-form__fields { grid-template-columns: 1fr; }
	.agv-form { padding: var(--agv-s4); }
	.agv-ticker__label { display: none; }
}

/* --- Empty states, pagination, results ------------------------------- */
.agv-empty { text-align: center; padding-block: var(--agv-s9); max-width: 60ch; margin-inline: auto; }
.agv-empty__links { display: flex; gap: var(--agv-s2); justify-content: center; flex-wrap: wrap; margin-top: var(--agv-s5); }
.agv-empty-inline { text-align: center; color: var(--agv-ink-4); padding: var(--agv-s6) 0; }

.agv-pagination { margin-top: var(--agv-s7); }
.agv-pagination .nav-links { display: flex; gap: var(--agv-s2); justify-content: center; flex-wrap: wrap; }
.agv-pagination .page-numbers {
	display: grid; place-items: center; min-width: 42px; height: 42px; padding: 0 .6rem;
	background: var(--agv-surface); border: 1px solid var(--agv-line);
	border-radius: var(--agv-r-sm); text-decoration: none; color: var(--agv-ink);
	font-size: var(--agv-t-sm); font-weight: 600;
}
.agv-pagination .page-numbers.current { background: var(--agv-mod-base); color: var(--agv-mod-on); border-color: var(--agv-mod-base); }

.agv-results { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--agv-s3); }
.agv-result { margin: 0; }
.agv-result__link {
	display: grid; gap: .2rem; padding: var(--agv-s4);
	background: var(--agv-surface); border: 1px solid var(--agv-line-2);
	border-radius: var(--agv-r); text-decoration: none; color: var(--agv-ink);
	transition: border-color var(--agv-fast), box-shadow var(--agv-fast);
}
.agv-result__link:hover { border-color: var(--agv-mod-base); box-shadow: var(--agv-sh-2); color: var(--agv-ink); }
.agv-result__type {
	font-family: var(--agv-mono); font-size: 10px; text-transform: uppercase;
	letter-spacing: .06em; color: var(--agv-mod-base);
}
.agv-result__title { font-family: var(--agv-display); font-size: var(--agv-t-md); font-weight: 600; }
.agv-result__excerpt { font-size: var(--agv-t-sm); color: var(--agv-ink-4); }

/* --- Footer ---------------------------------------------------------- */
.agv-footer {
	background: var(--agv-brand-dark);
	color: #cfdac8;
	padding-block: var(--agv-s8) var(--agv-s6);
	margin-top: auto;
	font-size: var(--agv-t-sm);
}
.agv-footer h2, .agv-footer h3 { color: #fff; }
.agv-footer a { color: #cfdac8; text-decoration: none; }
.agv-footer a:hover { color: var(--agv-brand-glow); text-decoration: underline; }

.agv-footer__top {
	display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--agv-s7);
	padding-bottom: var(--agv-s7); border-bottom: 1px solid rgba(255,255,255,.1);
}
.agv-footer__promise { max-width: 52ch; margin: var(--agv-s4) 0; color: #9fae96; }
.agv-footer__badges { display: flex; gap: var(--agv-s2); flex-wrap: wrap; }
.agv-footer__badges .agv-pill { background: rgba(255,255,255,.09); color: #cfdac8; }
.agv-footer__title { font-size: var(--agv-t-sm); font-weight: 640; letter-spacing: .04em; text-transform: uppercase; margin-bottom: var(--agv-s3); }
.agv-footer__subscribe p { color: #9fae96; }
.agv-footer__subscribe .agv-subscribe__row input { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.16); color: #fff; }
.agv-footer__subscribe .agv-note { background: transparent; border: 0; padding: 0; color: #7d8c74; }

.agv-footer__cols {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	gap: var(--agv-s6); padding-block: var(--agv-s7);
}
.agv-footer__col ul { list-style: none; margin: 0 0 var(--agv-s5); padding: 0; }
.agv-footer__col li { margin-bottom: .35rem; }
.agv-footer__col a { display: flex; align-items: center; gap: .45rem; font-size: var(--agv-t-sm); }
.agv-footer__col a::before {
	content: ""; width: 6px; height: 6px; border-radius: 50%;
	background: var(--dot, rgba(255,255,255,.25)); flex: none;
}

.agv-footer__legal {
	display: flex; justify-content: space-between; gap: var(--agv-s5);
	flex-wrap: wrap; padding-top: var(--agv-s5);
	border-top: 1px solid rgba(255,255,255,.1);
}
.agv-footer__copy { max-width: 60ch; color: #8d9c85; font-size: var(--agv-t-xs); }
.agv-footer__legal-links { display: flex; gap: var(--agv-s4); flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.agv-footer__legal-links li { margin: 0; }
.agv-footer__legal-links a { font-size: var(--agv-t-xs); }
.agv-footer__disclaimer {
	margin-top: var(--agv-s5); padding-top: var(--agv-s4);
	border-top: 1px solid rgba(255,255,255,.06);
	font-size: var(--agv-t-xs); color: #7d8c74; max-width: 100ch; line-height: 1.6;
}

@media (max-width: 860px) {
	.agv-footer__top { grid-template-columns: 1fr; gap: var(--agv-s6); }
}
