/*
Theme Name: Lorin Labs
Theme URI: https://github.com/Kaisarbi1/lorin-labs
Author: Lorin Labs
Description: Custom WooCommerce theme for LorinLabs — clean white aesthetic, slate-blue accents, Oswald wordmark. Matches the LorinLabs brand kit.
Version: 1.2.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: lorin-labs
Tags: woocommerce, custom-colors, light
*/

/* ==========================================================================
   Brand tokens — see LorinLabs brand kit
   ========================================================================== */

:root {
	/* Surfaces */
	--ll-bg: #ffffff;
	--ll-surface: #ffffff;
	--ll-surface-alt: #f6f8fb;      /* mist */
	--ll-surface-muted: #eef1f6;
	--ll-border: #e6eaf0;           /* hairline */
	--ll-border-subtle: #eef1f6;

	/* Brand blue (slate blue) */
	--ll-accent: #4b6fa6;
	--ll-accent-hover: #3c5a87;
	--ll-accent-deep: #2f4767;
	--ll-accent-tint: #eaeef4;
	--ll-accent-soft: #d8e0ec;
	--ll-accent-text: #4b6fa6;

	/* Text */
	--ll-foreground: #0f1b2a;       /* slate */
	--ll-muted: #4a5a6b;            /* body */
	--ll-muted-dim: #6b7a8b;
	--ll-muted-faint: #8393a5;      /* muted / labels */

	/* Logo banner */
	--ll-black: #000000;
	--ll-platinum: #e3e5e6;
	--ll-nav: #cfd6de;              /* nav links on black banner */

	/* Layout */
	--ll-max-width: 1400px;
	--ll-max-width-narrow: 1300px;
	--ll-radius: 12px;
	--ll-radius-sm: 8px;

	/* Type */
	--ll-font: Helvetica, Arial, sans-serif;
	--ll-font-logo: 'Oswald', Helvetica, Arial, sans-serif;
	--ll-font-mono: 'IBM Plex Mono', monospace;
}

/* ==========================================================================
   Base
   ========================================================================== */

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

body {
	margin: 0;
	background: var(--ll-bg);
	background-image:
		linear-gradient(180deg, #ffffff 0%, #f7f9fc 55%, #ffffff 100%),
		radial-gradient(60% 40% at 88% -5%, rgba(75, 111, 166, 0.10), transparent 70%);
	background-attachment: fixed;
	font-family: var(--ll-font);
	font-weight: 500;
	color: var(--ll-foreground);
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
	font-family: var(--ll-font);
	font-weight: 700;
	letter-spacing: -0.01em;
}

a {
	color: var(--ll-accent-text);
	text-decoration: none;
}

a:hover {
	color: var(--ll-accent-hover);
}

img {
	max-width: 100%;
	height: auto;
	display: block;
}

.mono {
	font-family: var(--ll-font-mono);
}

/* ==========================================================================
   Buttons
   ========================================================================== */

.btn,
.button,
button.btn,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
	background: var(--ll-accent) !important;
	color: #ffffff !important;
	font-weight: 700;
	padding: 13px 24px;
	border-radius: var(--ll-radius-sm);
	font-size: 14px;
	display: inline-block;
	border: none;
	cursor: pointer;
	font-family: var(--ll-font);
	text-decoration: none;
	line-height: 1.4;
	transition: background 0.15s ease, transform 0.15s ease;
}

.btn:hover,
.button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover {
	background: var(--ll-accent-hover) !important;
	color: #ffffff !important;
}

.btn-outline {
	border: 1px solid var(--ll-accent);
	color: var(--ll-accent);
	padding: 13px 24px;
	border-radius: var(--ll-radius-sm);
	font-size: 14px;
	font-weight: 700;
	display: inline-block;
	background: transparent;
	transition: background 0.15s ease, color 0.15s ease;
}

.btn-outline:hover {
	background: var(--ll-accent-tint);
	color: var(--ll-accent-hover);
}

/* ==========================================================================
   Disclaimer bar (top, on black banner)
   ========================================================================== */

.disclaimer {
	background: var(--ll-black);
	text-align: center;
	padding: 7px 16px;
	font-size: 11px;
	letter-spacing: 0.08em;
	color: #9aa3ad;
}

/* ==========================================================================
   Header — official black banner
   ========================================================================== */

.site-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 16px 56px;
	background: var(--ll-black);
}

.site-header .wm {
	font-family: var(--ll-font-logo);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.01em;
	font-size: 26px;
	line-height: 1;
	display: inline-flex;
}

.site-header .wm .lorin { color: var(--ll-platinum); }
.site-header .wm .labs,
.site-header .wm .accent { color: var(--ll-accent); }

.site-header nav {
	display: flex;
	gap: 34px;
	font-size: 14px;
	font-weight: 600;
	color: var(--ll-nav);
}

.site-header nav a { color: var(--ll-nav); }
.site-header nav a:hover { color: #ffffff; }

.site-header .btn {
	padding: 11px 22px;
}

/* ==========================================================================
   Ticker banner — continuous scroll
   ========================================================================== */

.ticker {
	background: var(--ll-accent);
	color: #ffffff;
	overflow: hidden;
	white-space: nowrap;
	padding: 11px 0;
}

.ticker__track {
	display: inline-block;
	white-space: nowrap;
	will-change: transform;
	animation: ll-ticker 32s linear infinite;
	font-family: var(--ll-font-mono);
	font-size: 12px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.ticker__track span {
	padding: 0 10px;
}

.ticker .dot { opacity: 0.7; }

.ticker:hover .ticker__track { animation-play-state: paused; }

@keyframes ll-ticker {
	0%   { transform: translateX(0); }
	100% { transform: translateX(-50%); }
}

/* ==========================================================================
   Hero region (homepage) — light gradient
   ========================================================================== */

.hero-region {
	position: relative;
	overflow: hidden;
}

.hero {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	gap: 56px;
	padding: 84px 56px;
	align-items: center;
	max-width: var(--ll-max-width);
	margin: 0 auto;
}

/* Full-bleed background hero (image behind the copy) */
.hero-region--image .hero-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.hero-region--image .hero-bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 68% 28%;
}

.hero-region--image .hero-bg-scrim {
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		linear-gradient(90deg,
			rgba(255, 255, 255, 0.96) 0%,
			rgba(255, 255, 255, 0.90) 30%,
			rgba(255, 255, 255, 0.55) 52%,
			rgba(255, 255, 255, 0.10) 72%,
			rgba(255, 255, 255, 0) 100%),
		linear-gradient(180deg,
			rgba(255, 255, 255, 0.20) 0%,
			rgba(255, 255, 255, 0) 30%,
			rgba(255, 255, 255, 0) 75%,
			rgba(255, 255, 255, 0.30) 100%);
}

.hero--overlay {
	position: relative;
	z-index: 2;
	display: block;
	min-height: clamp(480px, 46vw, 700px);
	align-content: center;
	padding-top: 64px;
	padding-bottom: 64px;
}

.hero-copy {
	max-width: 560px;
}

.eyebrow {
	font-size: 12px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--ll-accent);
	margin-bottom: 16px;
}

.hero h1 {
	font-size: 60px;
	line-height: 1.04;
	margin: 0 0 20px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--ll-foreground);
}

.lede {
	font-size: 17px;
	line-height: 1.6;
	color: var(--ll-muted);
	max-width: 480px;
	margin-bottom: 32px;
}

.hero-actions {
	display: flex;
	gap: 14px;
	flex-wrap: wrap;
	margin-bottom: 28px;
}

.hero-media img,
.hero-media .image-placeholder {
	width: 100%;
	height: 460px;
	object-fit: cover;
	border-radius: 16px;
	box-shadow: 0 30px 60px rgba(15, 27, 42, 0.12);
}

/* Trust line under hero actions */
.trustline {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 13px;
	color: var(--ll-muted-dim);
}

.trustline .stars {
	color: var(--ll-accent);
	letter-spacing: 2px;
	font-size: 14px;
}

/* ==========================================================================
   Trust bar (icons row)
   ========================================================================== */

.trustbar {
	display: flex;
	justify-content: center;
	gap: 56px;
	padding: 28px 56px;
	flex-wrap: wrap;
	max-width: var(--ll-max-width);
	margin: 0 auto;
}

.trust-item {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 13px;
	color: var(--ll-muted);
	font-family: var(--ll-font-mono);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.hex-sm {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
}

/* ==========================================================================
   Sections
   ========================================================================== */

.ll-section {
	max-width: var(--ll-max-width);
	margin: 0 auto;
	padding: 80px 56px;
}

.ll-section--band {
	max-width: none;
	background:
		linear-gradient(180deg, #ffffff 0%, #f4f7fb 100%);
}

.ll-section--band > .sec-head,
.ll-section--band > .grid3 {
	max-width: var(--ll-max-width);
	margin-left: auto;
	margin-right: auto;
}

.sec-head {
	text-align: center;
	margin-bottom: 48px;
}

.sec-head h2 {
	font-size: 34px;
	margin: 0 0 12px;
	font-weight: 700;
	color: var(--ll-foreground);
}

.sec-head p {
	color: var(--ll-muted-dim);
	font-size: 15px;
	margin: 0;
}

/* ==========================================================================
   Product cards (homepage grid)
   ========================================================================== */

.grid3 {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}

.card {
	background: var(--ll-surface);
	border: 1px solid var(--ll-border);
	border-radius: var(--ll-radius);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	box-shadow: 0 1px 2px rgba(15, 27, 42, 0.04);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.card:hover {
	transform: translateY(-3px);
	box-shadow: 0 18px 40px rgba(15, 27, 42, 0.10);
}

.card-body {
	padding: 22px 24px 24px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1;
}

.card-badge {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--ll-accent-tint);
	border: 1px solid var(--ll-accent-soft);
	color: var(--ll-accent-deep);
	font-family: var(--ll-font-mono);
	font-size: 11px;
	padding: 4px 10px;
	border-radius: 999px;
	margin-bottom: 4px;
}

.card-title {
	font-size: 18px;
	font-weight: 700;
}

.card-title a { color: var(--ll-foreground); }
.card-title a:hover { color: var(--ll-accent); }

.card-spec {
	font-size: 12px;
	color: var(--ll-muted-faint);
}

.price,
.woocommerce .price {
	font-size: 20px;
	font-weight: 700;
	color: var(--ll-accent);
	margin-top: 6px;
}

.card .btn-outline {
	text-align: center;
	margin-top: 10px;
}

.card-image {
	width: 100%;
	height: 220px;
	object-fit: cover;
	background: var(--ll-surface-alt);
}

/* ==========================================================================
   COA section
   ========================================================================== */

.coa {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
	background: var(--ll-surface-alt);
	border: 1px solid var(--ll-border);
	border-radius: var(--ll-radius);
	padding: 56px;
}

.coa h2 {
	font-size: 30px;
	margin: 0 0 16px;
	font-weight: 700;
	color: var(--ll-foreground);
}

/* ==========================================================================
   Footer — black banner bookend
   ========================================================================== */

.site-footer {
	background: var(--ll-black);
	color: #b7bec6;
	padding: 64px 56px 40px;
	margin-top: 80px;
}

.site-footer .foot-inner {
	max-width: var(--ll-max-width);
	margin: 0 auto;
}

.foot-grid {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr 1fr;
	gap: 40px;
	margin-bottom: 40px;
}

.site-footer .wm {
	font-family: var(--ll-font-logo);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.01em;
	font-size: 24px;
	line-height: 1;
}

.site-footer .wm .lorin { color: var(--ll-platinum); }
.site-footer .wm .labs,
.site-footer .wm .accent { color: var(--ll-accent); }

.foot-col h4 {
	font-size: 12px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #7c8590;
	margin: 0 0 16px;
	font-family: var(--ll-font-mono);
}

.foot-col a {
	display: block;
	font-size: 13px;
	color: #b7bec6;
	margin-bottom: 10px;
}

.foot-col a:hover { color: #ffffff; }

.foot-legal {
	font-size: 11px;
	color: #7c8590;
	line-height: 1.7;
	border-top: 1px solid #1c2229;
	padding-top: 24px;
	max-width: var(--ll-max-width);
	margin: 0 auto;
}

/* ==========================================================================
   Product page (PDP)
   ========================================================================== */

.crumbs {
	max-width: var(--ll-max-width-narrow);
	margin: 0 auto;
	padding: 24px 56px 0;
	font-size: 12px;
	color: var(--ll-muted-faint);
	font-family: var(--ll-font-mono);
}

.crumbs a { color: var(--ll-muted-faint); }
.crumbs a:hover { color: var(--ll-accent); }

.pdp {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	max-width: var(--ll-max-width-narrow);
	margin: 0 auto;
	padding: 32px 56px 80px;
}

.badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--ll-accent-tint);
	border: 1px solid var(--ll-accent-soft);
	padding: 6px 14px;
	border-radius: 999px;
	font-size: 11px;
	font-family: var(--ll-font-mono);
	color: var(--ll-accent-deep);
	margin-bottom: 16px;
}

.pdp h1.product_title {
	font-size: 36px;
	margin: 0 0 8px;
	font-weight: 700;
	color: var(--ll-foreground);
}

.subtitle {
	color: var(--ll-muted-faint);
	font-size: 14px;
	margin-bottom: 20px;
	font-family: var(--ll-font-mono);
}

.pdp .price {
	font-size: 30px;
	font-weight: 700;
	color: var(--ll-accent);
	margin-bottom: 24px;
}

.pdp .price del { opacity: 0.5; font-size: 20px; }
.pdp .price ins { text-decoration: none; }

/* Variation swatches */
.variations_form .variations { margin-bottom: 24px; }

.variations_form .variations td {
	padding: 0;
	border: none;
	vertical-align: middle;
}

.variations_form .variations label { display: none; }

.variations_form .variations select,
.variations_form .variations .variable-items-wrapper {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

.variations_form select {
	background: #ffffff;
	border: 1px solid var(--ll-border);
	padding: 11px 18px;
	border-radius: var(--ll-radius-sm);
	font-size: 13px;
	font-family: var(--ll-font-mono);
	color: var(--ll-foreground);
}

.single_add_to_cart_button {
	width: 100%;
	padding: 16px !important;
	font-size: 15px !important;
}

.specs {
	border-top: 1px solid var(--ll-border);
	margin-top: 32px;
	padding-top: 24px;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
	font-size: 13px;
	color: var(--ll-foreground);
}

.specs div span {
	display: block;
	color: var(--ll-muted-faint);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin-bottom: 4px;
	font-family: var(--ll-font-mono);
}

/* Product gallery */
.woocommerce-product-gallery { margin-bottom: 0; }

.woocommerce-product-gallery__wrapper img {
	border-radius: var(--ll-radius);
	width: 100%;
	height: 520px;
	object-fit: cover;
}

.woocommerce-product-gallery__trigger { display: none; }

/* Overview section */
.ll-section-narrow {
	max-width: var(--ll-max-width-narrow);
	margin: 0 auto;
	padding: 56px;
}

.ll-section-narrow .sec-head { text-align: left; }

.ll-section-narrow .sec-head h2 {
	font-size: 26px;
	margin: 0 0 20px;
	font-weight: 700;
}

.desc p {
	color: var(--ll-muted);
	font-size: 15px;
	line-height: 1.7;
	max-width: 760px;
}

.bullets {
	list-style: none;
	padding: 0;
	margin: 20px 0 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
	max-width: 760px;
}

.bullets li {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	font-size: 14px;
	color: var(--ll-muted);
}

.bullets svg { flex-shrink: 0; margin-top: 2px; }

/* Reviews */
.stars {
	color: var(--ll-accent);
	font-size: 13px;
	letter-spacing: 2px;
}

.reviews {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

.rcard {
	background: var(--ll-surface);
	border: 1px solid var(--ll-border);
	border-radius: var(--ll-radius);
	padding: 24px;
	box-shadow: 0 1px 2px rgba(15, 27, 42, 0.04);
}

.rcard .name { font-size: 13px; font-weight: 700; margin-top: 12px; }

.rcard .verified {
	font-size: 11px;
	color: var(--ll-accent);
	font-family: var(--ll-font-mono);
	margin-bottom: 8px;
}

.rcard p,
.rcard .description {
	font-size: 13px;
	color: var(--ll-muted);
	line-height: 1.6;
	margin: 8px 0 0;
}

/* WooCommerce reviews override */
#reviews .woocommerce-Reviews-title {
	font-size: 26px;
	font-weight: 700;
	margin-bottom: 20px;
}

#reviews .commentlist {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	list-style: none;
	padding: 0;
	margin: 0;
}

#reviews .commentlist li {
	background: var(--ll-surface);
	border: 1px solid var(--ll-border);
	border-radius: var(--ll-radius);
	padding: 24px;
}

#reviews .commentlist li .comment-text { border: none; padding: 0; margin: 0; }
#reviews .star-rating { color: var(--ll-accent); }
#reviews .woocommerce-review__author { font-size: 13px; font-weight: 700; }
#reviews .woocommerce-review__published-date { display: none; }

/* ==========================================================================
   Image placeholders — swap via WP Media Library / Customizer
   ========================================================================== */

.image-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--ll-surface-alt);
	border: 1px dashed var(--ll-accent-soft);
	color: var(--ll-muted-faint);
	font-size: 12px;
	font-family: var(--ll-font-mono);
	text-align: center;
	padding: 24px;
}

.image-placeholder--hero { height: 460px; border-radius: 16px; }
.image-placeholder--card { height: 220px; }
.image-placeholder--coa { height: 320px; border-radius: var(--ll-radius); }
.image-placeholder--pdp { height: 520px; border-radius: var(--ll-radius); }

/* ==========================================================================
   WooCommerce general overrides
   ========================================================================== */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	background: var(--ll-surface-alt);
	border-top-color: var(--ll-accent);
	color: var(--ll-foreground);
}

.woocommerce table.shop_table {
	background: var(--ll-surface);
	border: 1px solid var(--ll-border);
	border-radius: var(--ll-radius);
	color: var(--ll-foreground);
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td { border-color: var(--ll-border); }

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 1024px) {
	.hero,
	.pdp,
	.coa,
	.grid3,
	.foot-grid,
	.bullets,
	.reviews,
	#reviews .commentlist {
		grid-template-columns: 1fr;
	}

	.hero h1 { font-size: 40px; }

	.hero-media img,
	.hero-media .image-placeholder { height: 340px; }

	.hero-region--image .hero-bg img { object-position: 62% 28%; }

	.hero-region--image .hero-bg-scrim {
		background: linear-gradient(180deg,
			rgba(255, 255, 255, 0.92) 0%,
			rgba(255, 255, 255, 0.72) 45%,
			rgba(255, 255, 255, 0.55) 100%);
	}

	.hero--overlay { min-height: 440px; }

	.site-header {
		flex-wrap: wrap;
		gap: 16px;
		padding: 14px 24px;
	}

	.site-header nav { gap: 20px; }

	.trustbar { gap: 24px; }

	.ll-section,
	.ll-section-narrow,
	.hero,
	.trustbar,
	.crumbs,
	.pdp,
	.site-header,
	.site-footer,
	.foot-legal { padding-left: 24px; padding-right: 24px; }
}
