/*
 * Orleno cards.css — card + grid styles (M3).
 * Elementor sources: 275 / 391 / 898 (product), 356 / 1269 (ulasan), 796 (post).
 * Exact values from assets/css/generated/{product-card,small-product-card,
 * product-loop-item,review-card,review-loop-item,blog-archive-loop-item}.css.
 * All colors via base.css :root tokens — no hex re-declared here.
 */

/* ============ 1. Grid (1147/1294/882 loop-grids: 3/2/1 columns, 24px gap) ============ */
.orleno-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--sp-4);
}

@media (min-width: 768px) {
	.orleno-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: var(--sp-4);
	}
}

@media (min-width: 1025px) {
	.orleno-grid--2 { grid-template-columns: repeat(2, 1fr); }
	.orleno-grid--3 { grid-template-columns: repeat(3, 1fr); }
	.orleno-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

.orleno-grid__empty {
	color: var(--text-secondary);
	font-size: 14px;
	padding: var(--sp-5) var(--sp-3);
	text-align: center;
}

/* ============ 2. Card base ============ */
.card {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: var(--surface);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-4xl);
	transition: border-color var(--ease-state), transform var(--ease-state), box-shadow var(--ease-state);
}

/* 898/1269/796: hover border rgba(255,255,255,0.2) only — no lift */
.card:hover {
	border-color: var(--border-hover);
}

.card__link {
	display: flex;
	flex-direction: column;
	flex: 1;
	min-width: 0;
	height: 100%;
	color: inherit;
}

.card__link:hover {
	color: inherit;
}

/* ============ 3b. Product card (898) ============ */
/* 898 Product Card: padding 24px, column gap 24px, radius 32px, border #FFFFFF0D */
.card--product .card__link {
	padding: var(--sp-4);
	gap: var(--sp-4);
}

/* ============ 3a. Product card — hero (275) ============ */
/* Same overlay anatomy as the 356 review card: absolute image + bottom
   scrim + content top, hover-reveal bottom CTA. Placed after 3b so the
   275 padding/gap (32px / space-between) wins over 898's 24px row-gap. */
.card--product.card--hero {
	min-height: 520px;
	border: 0;
}

.card--product.card--hero .card__link {
	padding: var(--sp-5);
	gap: 0;
	justify-content: space-between;
}

@media (max-width: 767px) {
	.card--product.card--hero .card__link {
		padding: var(--sp-4);
	}
}

.card--product.card--hero .card__media {
	position: absolute;
	inset: 0;
	z-index: 0;
	aspect-ratio: auto;
	border-radius: 0;
	background: var(--image-well);
}

.card--product.card--hero .card__media img {
	opacity: 0.8;
	/* Full-bleed background: cover so the well is always filled. */
	object-fit: cover;
	object-position: center;
}

.card--product.card--hero:hover .card__media img {
	transform: scale(1.05);
}

.card--product.card--hero .card__link::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(to top, #00000099 0%, #00000000 60%);
}

.card--product.card--hero .card__top,
.card--product.card--hero .card__bottom-area {
	position: relative;
	z-index: 2;
}

/* 275 eyebrow: Inter 14px/500 uppercase lh 16px ls 0.2em */
.card--product.card--hero .card__eyebrow {
	margin: 0 0 var(--sp-1);
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0.2em;
	line-height: 16px;
	color: var(--text-secondary);
}

/* 275 title: Inter 24px/600 uppercase lh 1.2 ls .05em word-spacing 1px (16px mobile) */
.card--product.card--hero .card__title {
	font-family: var(--font-body);
	font-size: 24px;
	font-weight: 600;
	text-transform: uppercase;
	line-height: 1.2;
	letter-spacing: 0.05em;
	word-spacing: 1px;
	-webkit-line-clamp: 2;
}

@media (max-width: 767px) {
	.card--product.card--hero .card__title {
		font-size: 16px;
	}
}

/* Image well: #111111, radius 24px, aspect 4/3 per design 1147/898,
   image COVER — fills the well, no blank bars (matches the HTML design). */
.card--product .card__media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--image-well);
	border-radius: var(--radius-3xl);
	margin: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

/* Design 1147/898: image COVER — the well is always filled edge to edge. */
.card--product .card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	opacity: 0.85;

	transform: scale(1);
	transition: transform 0.8s ease;
}

.card--product:hover .card__media img {
	transform: scale(1.08);
	opacity: 1;
}

.card--product .card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	gap: 4px;
}

/* 898 Content > name margin-bottom 12px then auto-pinned bottom row */
.card--product .card__title {
	margin-bottom: var(--sp-2);
}

/* Price + SPECS row: border-top #FFFFFF1A, padding-top 16px, margin-top auto */
.card--product .card__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--sp-2);
	margin-top: auto;
	padding-top: var(--sp-3);
	border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.card__price {
	font-family: var(--font-head);
	font-size: 18px;
	font-weight: 700;
	letter-spacing: 0;
	color: var(--text-primary);
	line-height: 1;
}

.card__price--empty {
	display: none;
}

/* SPECS link: Inter 12px/500 uppercase ls 1px, accent, arrow, hover white */
.card__specs {
	display: flex;
	align-items: center;
	gap: 4px;
	font-family: var(--font-body);
	font-size: 12px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--accent-text);
	transition: color 0.2s ease;
}

.card--product:hover .card__specs {
	color: var(--text-primary);
}

/* Small variant (391): min-height 280px, radius 24px, gap 10px, image 200px */
.card--sm {
	min-height: 280px;
	border-radius: var(--radius-3xl);
}

.card--sm .card__link {
	padding: var(--sp-2);
	gap: 10px;
}

.card--sm .card__media {
	aspect-ratio: 4 / 3;
	height: auto;
	min-height: 0;
	margin: var(--sp-2) 0 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.card--sm .card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.card--sm .card__body {
	gap: 0;
}

/* 391 Product Name: Inter 14px/500 uppercase, margin 0 0 4px */
.card--sm .card__title {
	font-size: 14px;
	text-transform: uppercase;
	letter-spacing: 0;
	margin-bottom: 4px;
}

/* 391 Category: Inter 12px/400 uppercase, margin 0 0 12px */
.card__category {
	margin: 0 0 var(--sp-3);
	font-size: 12px;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 0;
	color: var(--text-secondary);
}

.card--sm .card__footer {
	margin-top: auto;
	padding-top: 0;
	border-top: 0;
}

/* 391 Cek Produk button: accent text, transparent bg, padding 4px 8px */
.card--sm .card__specs {
	border-radius: var(--radius-pill);
	margin-right: -8px;
	padding: 4px 8px;
	transition: color 0.2s ease;
}

/* 391 button has no arrow icon */
.card--sm .card__specs svg {
	display: none;
}

/* ============ 4. Ulasan card — default (356) ============ */
.card--ulasan {
	min-height: 520px;
	overflow: hidden;
	border-radius: var(--radius-4xl);
}

.card--ulasan .card__link {
	padding: var(--sp-5);
	justify-content: space-between;
}

@media (max-width: 767px) {
	.card--ulasan .card__link {
		padding: var(--sp-4);
	}
}

/* Full-bleed vertical_image behind the scrim (356 custom CSS) */
.card--ulasan .card__media {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
}

.card--ulasan .card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	opacity: 0.8;

	transition: transform 0.8s ease;
}

.card--ulasan:hover .card__media img {
	transform: scale(1.05);
	opacity: 1;
}

/* Content above the photo */
.card--ulasan .card__head,
.card--ulasan .card__bottom-area {
	position: relative;
	z-index: 2;
}

/* Scrim rising from the bottom (356 --overlay-color-b #00000099) */
.card--ulasan .card__link::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(to top, #00000099 0%, #00000000 60%);
}

/* 356 head: column (badges row above the title/score row) */
.card--ulasan .card__head {
	display: flex;
	flex-direction: column;
	gap: var(--sp-3);
}

/* 356 Top Area: row, space-between, center, gap 20px */
.card--ulasan .card__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
}

.card--ulasan .card__titlewrap {
	display: flex;
	flex-direction: column;
	gap: var(--sp-1);
	min-width: 0;
}

/* 356 title: Inter 24px/600 uppercase lh 1.2 ls .05em; 16px mobile; 2-line clamp */
.card--ulasan .card__title {
	font-family: var(--font-body);
	font-size: 24px;
	font-weight: 600;
	text-transform: uppercase;
	line-height: 1.2;
	letter-spacing: 0.05em;
	word-spacing: 1px;
	-webkit-line-clamp: 2;
}

@media (max-width: 767px) {
	.card--ulasan .card__top {
		flex-wrap: wrap;
	}

	.card--ulasan .card__titlewrap {
		width: 55%;
	}

	.card--ulasan .card__score {
		width: 35%;
	}

	.card--ulasan .card__title {
		font-size: 16px;
	}
}

/* Big score: Space Grotesk 700 48px desktop / 36px mobile, white; /10 suffix 20px, lifted, 0.7 opacity (356) */
.card__score {
	display: flex;
	align-items: flex-start;
	margin: 0;
	white-space: nowrap;
}

.card__score-num {
	font-family: var(--font-head);
	font-weight: 700;
	font-size: 48px;
	line-height: 1;
	color: var(--text-primary);
}

.card__score-suffix {
	font-family: var(--font-body);
	font-weight: 500;
	font-size: 20px;
	line-height: 1;
	color: var(--text-primary);
	margin-left: 2px;
	transform: translateY(-5px);
	opacity: 0.7;
}

@media (max-width: 767px) {
	.card__score-num {
		font-size: 36px;
	}
}

/* Hover-reveal CTA (356 bottom-area) */
.card__bottom-area {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.3s ease, transform 0.3s ease;
	text-align: center;
}

.card:hover .card__bottom-area {
	opacity: 1;
	transform: translateY(0);
}

.card__cta {
	margin-inline: auto;
}

.card__cta--sm {
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	padding: 8px 24px;
	background: var(--accent);
	border: 0;
	box-shadow: var(--glow);
}

.card__cta--sm:hover,
.card__cta--sm:focus-visible {
	background: var(--accent-hover);
	box-shadow: var(--glow-hover);
}

/* ============ 5. Ulasan card — compact (1269 archive) ============ */
.card--compact {
	border-radius: var(--radius-4xl);
	min-height: 200px;
	overflow: hidden;
}

.card--compact .card__link {
	padding: var(--sp-5);
	justify-content: space-between;
}

@media (max-width: 1024px) {
	.card--compact .card__link {
		padding: var(--sp-3); /* 24px (1269 tablet) */
	}
}

@media (max-width: 767px) {
	.card--compact .card__link {
		padding: 20px;
	}
}

/* Faded featured-image background, content above (1269: opacity .6, left scrim 0.9 → 0) */
.card--compact .card__media {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
}

.card--compact .card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	opacity: 0.6;

	transform: scale(1);
	transition: transform 0.8s ease;
}

.card--compact:hover .card__media img {
	transform: scale(1.05);
	opacity: 0.85;
}

.card--compact .card__link::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(90deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);
}

.card--compact .card__top,
.card--compact .card__bottom {
	position: relative;
	z-index: 2;
}

/* 1269 Top Row: row, space-between, flex-start, gap 16px */
.card--compact .card__top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--sp-3);
	margin-bottom: auto;
}

/* Score pill "9.X/10" (1269: Space Grotesk 14px/700 accent, #0A0A0AE6 pill, subtle border, 6px 12px) */
.card__score-pill {
	display: inline-block;
	margin: 0;
	padding: 6px 12px;
	background: rgba(10, 10, 10, 0.9);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-pill);
	font-family: var(--font-head);
	font-size: 14px;
	font-weight: 700;
	color: var(--accent-text);
	line-height: 1;
	white-space: nowrap;
}

/* 1269 Category: Inter 10px/400 uppercase ls 0.1em secondary */
.card--compact .card__meta {
	margin: 0;
	font-size: 10px;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--text-secondary);
}

/* 1269 Bottom Content: column, flex-start, gap 8px */
.card--compact .card__bottom {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--sp-1);
}

/* 1269 Title: Inter 20px/500 uppercase ls .05em lh 1.3; 18px ≤1024; 16px mobile; 1 line */
.card--compact .card__title {
	font-size: 20px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	line-height: 1.3;
}

@media (max-width: 1024px) {
	.card--compact .card__title {
		font-size: 18px;
	}
}

@media (max-width: 767px) {
	.card--compact .card__title {
		font-size: 16px;
	}
}

/* 1269 Excerpt: Inter 14px/400 lh 1.5 secondary, 1 line; 12px mobile */
.card--compact .card__excerpt {
	display: -webkit-box;
	-webkit-line-clamp: 1;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin: 0;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.5;
	color: var(--text-secondary);
}

@media (max-width: 767px) {
	.card--compact .card__excerpt {
		font-size: 12px;
	}
}

/* 1269 CTA lives in the left-aligned bottom content — undo the centered 356 CTA */
.card--compact .card__bottom-area {
	margin-top: var(--sp-1);
	text-align: left;
}

.card--compact .card__cta {
	margin-inline: 0;
}

/* ============ 6. Post card (796) ============ */
.card--post .card__link {
	padding: 0;
}

/* Image well: #111111, min-height 240px, image cover/luminosity .8, hover scale(1.05) */
.card__media--post {
	position: relative;
	min-height: 240px;
	overflow: hidden;
	background: var(--image-well);
}

.card__media--post img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	opacity: 0.8;

	transition: transform 0.8s ease;
}

.card--post:hover .card__media--post img {
	transform: scale(1.05);
	opacity: 1;
}

/* 796 overlay: surface → transparent, 90deg (image well gradient) */
.card__media--post::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, var(--surface) 0%, rgba(23, 23, 23, 0) 70%);
}

/* 796 Content: surface bg, margin-top -16px, padding 24px 32px 32px 32px, gap 12px */
.card__body--post {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: var(--sp-2);
	margin: -16px 0 0;
	padding: var(--sp-3) var(--sp-4) var(--sp-4);
	background: var(--surface);
}

/* 796 Category: Inter 10px/400 uppercase ls 1px secondary */
.card--post .card__eyebrow {
	margin: 0;
}

/* 796 Title: Inter 18px/500 lh 1.3, hover accent */
.card__title--post {
	font-size: 18px;
	font-weight: 500;
	line-height: 1.3;
	text-transform: none;
	letter-spacing: 0;
	margin-bottom: 0;
	transition: color 0.2s ease;
}

.card--post:hover .card__title--post {
	color: var(--accent-text);
}

/* 796 Excerpt: Inter 14px/400 lh 1.625 secondary */
.card--post .card__excerpt {
	margin: 0;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.625;
	color: var(--text-secondary);
}

/* 796 meta row: gap 8px, padding-top 20px, date • read time at 12px secondary */
.card--post .card__meta {
	display: flex;
	align-items: center;
	gap: var(--sp-1);
	margin: 0;
	padding-top: var(--sp-3);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0;
	color: var(--text-secondary);
}

/* ============ 7. Shared card text bits ============ */
.card__eyebrow {
	margin: 0;
	font-size: 10px;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--text-secondary);
}

.card__title {
	font-family: var(--font-body);
	font-size: 16px;
	font-weight: 500;
	line-height: 1.3;
	text-transform: none;
	letter-spacing: 0;
	color: var(--text-primary);
	margin: 0;
	display: -webkit-box;
	-webkit-line-clamp: 1;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.card__meta {
	margin: 0;
	font-size: 12px;
	color: var(--text-secondary);
}

/* ============ 8. Badges (898 badge wrap: #0A0A0A/.8, blur 8px, radius pill, 4px 12px, Inter 10px/500 uppercase ls 1px) ============ */
.badge {
	display: inline-block;
	padding: 4px 12px;
	background: var(--bg-80);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-pill);
	font-size: 10px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 1px;
	line-height: 1.4;
	color: var(--text-primary);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}

.badge--editors,
.badge--recommend {
	background: var(--accent);
	border-color: var(--accent);
	color: var(--text-primary);
}

.card__badges {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-1);
	margin-bottom: var(--sp-3);
}

/* Chip over product image (898: absolute top-left 16px) */
.card--product .badge {
	position: absolute;
	top: 16px;
	left: 16px;
	z-index: 2;
	width: fit-content;
}
