@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap');

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

:root {
	/* Spacing */
	--spacing1: 4px;
	--spacing2: 8px;
	--spacing3: 16px;
	--spacing4: 20px;
	--spacing5: 40px;
	--spacing6: 80px;
	--spacing7: 160px;

	/* Radius */
	--radius: 1rem;
	--radius-sm: 0.5rem;
	--radius-lg: 1.25rem;

	/* Typography */
	--ff: "Outfit", sans-serif;
	--h1: var(--fw-bold) clamp(2.25rem, 6vw, 4rem) / 1.05em var(--ff);
	--h2: var(--fw-bold) clamp(1.6rem, 4vw, 3rem) / 1.15em var(--ff);
	--h3: var(--fw-bold) 1.65rem / 1.2em var(--ff);
	--h4: var(--fw-bold) 1.5rem / 1.6em var(--ff);
	--big: var(--fw-medium) 1.25rem / 1.6em var(--ff);
	--p: var(--fw-regular) 1rem / 1.6em var(--ff);
	--small: 0.75rem / 1.8em var(--ff);

	--h1ui: var(--fw-bold) 1.65rem / 1.2em var(--ff);
	--h2ui: var(--fw-bold) 2.5rem / 1.2em var(--ff);
	--h3ui: var(--fw-bold) 1.65rem / 1.2em var(--ff);
	--h4ui: var(--fw-bold) 1.25rem / 1.6em var(--ff);
	--bigui: var(--fw-medium) 1.1rem / 1.6em var(--ff);
	--pui: var(--fw-regular) 0.9rem / 1.6em var(--ff);
	--smallui: 0.85rem / 1.8em var(--ff);

	/* Font Weights */
	--fw-bold: 700;
	--fw-semi-bold: 600;
	--fw-medium: 500;
	--fw-regular: 400;
	--fw-light: 300;

	/* Dark mode colors */
	--bg-dark: oklch(0.1 0.01 72);
	--bg: oklch(0.2 0.01 72);
	--bg-light: oklch(0.3 0.01 72);
	--text: oklch(0.96 0.02 72);
	--text-muted: oklch(0.76 0.02 72);
	--highlight: oklch(59.421% 0.02087 75.154);
	--border: oklch(0.4 0.02 72);
	--border-muted: oklch(0.3 0.02 72);
	--primary: oklch(0.76 0.1 72);
	--primary-hover: oklch(0.76 0.1 52);
	--primary-soft: oklch(0.76 0.1 72 / 0.12);
	--secondary: oklch(0.76 0.1 252);
	--danger: oklch(0.7 0.05 30);
	--warning: oklch(0.7 0.05 100);
	--success: oklch(0.7 0.05 160);
	--info: oklch(0.7 0.05 260);

	--gradient: linear-gradient(160deg, var(--bg-light) 0%, var(--bg) 55%, var(--bg-dark) 100%);
	--surface: oklch(0.22 0.012 72 / 0.72);
	--shadow-sm: 0 4px 16px oklch(0.05 0.01 72 / 0.35);
	--shadow-md: 0 12px 40px oklch(0.05 0.01 72 / 0.45);
	--shadow-glow: 0 0 0 1px oklch(0.76 0.1 72 / 0.15), 0 20px 60px oklch(0.76 0.1 72 / 0.08);
	--nav-height: 4rem;
	--content-width: min(1120px, 92vw);
	--transition: 220ms ease;
}

/* Light mode */
.lightmode {
	--bg-dark: oklch(0.92 0.01 72);
	--bg: oklch(0.96 0.01 72);
	--bg-light: oklch(1 0.01 72);
	--text: oklch(0.15 0.02 72);
	--text-muted: oklch(0.4 0.02 72);
	--highlight: oklch(1 0.02 72);
	--border: oklch(90.59% 0.00969 72.469);
	--border-muted: oklch(0.7 0.02 72);
	--primary: oklch(56.736% 0.1241 65.75);
	--primary-hover: oklch(50% 0.1241 65.75);
	--primary-soft: oklch(56.736% 0.1241 65.75 / 0.14);
	--secondary: oklch(0.4 0.1 252);
	--danger: oklch(0.5 0.05 30);
	--warning: oklch(0.5 0.05 100);
	--success: oklch(0.5 0.05 160);
	--info: oklch(0.5 0.05 260);

	--gradient: linear-gradient(160deg, var(--bg-light) 0%, var(--bg) 55%, var(--bg-dark) 100%);
	--surface: oklch(1 0.01 72 / 0.78);
	--shadow-sm: 0 4px 16px oklch(0.2 0.01 72 / 0.08);
	--shadow-md: 0 12px 40px oklch(0.2 0.01 72 / 0.12);
	--shadow-glow: 0 0 0 1px oklch(56.736% 0.1241 65.75 / 0.2), 0 20px 60px oklch(56.736% 0.1241 65.75 / 0.1);
}

html {
	scroll-behavior: smooth;
}

body {
	min-height: 100vh;
	font: var(--p);
	color: var(--text);
	background:
		radial-gradient(circle at 15% 10%, oklch(0.76 0.1 72 / 0.08), transparent 28%),
		radial-gradient(circle at 85% 20%, oklch(0.76 0.1 72 / 0.05), transparent 24%),
		linear-gradient(180deg, var(--bg-dark) 0%, var(--bg) 100%);
	text-wrap: balance;
}

h1 {
	font: var(--h1);
	letter-spacing: -0.02em;
}

h2 {
	font: var(--h2);
	letter-spacing: -0.02em;
}

h3 {
	font: var(--h3);
}

p {
	margin: var(--spacing2) 0;
}

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

a:hover {
	color: var(--primary-hover);
}

a:focus-visible,
.btn:focus-visible,
.site-nav__links a:focus-visible,
.link-card:focus-visible {
	outline: 2px solid var(--primary);
	outline-offset: 3px;
}

.text-accent {
	color: var(--primary);
}

.btn,
button {
	all: unset;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-top: var(--spacing3);
	padding: 0.7rem 1.1rem;
	background: var(--primary);
	color: var(--bg-dark);
	border-radius: 999px;
	font: var(--pui);
	font-weight: var(--fw-semi-bold);
	cursor: pointer;
	transition:
		background var(--transition),
		transform var(--transition),
		box-shadow var(--transition);
	box-shadow: 0 1px 0 oklch(0.76 0.1 52 / 0.35) inset;
}

.btn:hover,
button:hover {
	background: var(--primary-hover);
	color: var(--bg-dark);
	transform: translateY(-1px);
	box-shadow: var(--shadow-glow);
}

[data-animate] {
	opacity: 1;
	transform: none;
	transition: opacity 1000ms ease, transform 1000ms ease;
	will-change: opacity, transform;
}

[data-animate]:not(.is-visible) {
	opacity: 0;
	transform: translateY(18px);
}

.scroll-wrapper {
	overflow-y: auto;
	height: 100vh;
	scroll-snap-type: y proximity;
	-webkit-overflow-scrolling: touch;
}

/* Navigation */
.site-nav {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: var(--nav-height);
	padding: 0 max(4vw, var(--spacing3));
	background: oklch(0.12 0.01 72 / 0.72);
	border-bottom: 1px solid oklch(0.76 0.1 72 / 0.08);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
}

.site-nav__brand {
	font: var(--fw-bold) 1rem / 1 var(--ff);
	letter-spacing: 0.08em;
	color: var(--text);
}

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

.site-nav__links {
	display: flex;
	gap: var(--spacing4);
	list-style: none;
}

.site-nav__links a {
	font: var(--fw-medium) 0.9rem / 1 var(--ff);
	color: var(--text-muted);
	transition: color var(--transition);
}

.site-nav__links a:hover {
	color: var(--primary);
}

/* Hero */
.hero {
	min-height: 100vh;
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: calc(var(--nav-height) + var(--spacing5)) var(--spacing4) var(--spacing5);
	text-align: center;
}

.section__eyebrow {
	font: var(--fw-medium) 0.8rem / 1 var(--ff);
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--primary);
}

.hero__tagline {
	max-width: 34rem;
	font: var(--big);
	color: var(--text-muted);
	margin: var(--spacing3) auto var(--spacing4);
}

.hero__roles {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--spacing2);
	margin-bottom: var(--spacing5);
}

.pill {
	display: inline-flex;
	align-items: center;
	padding: 0.35rem 0.75rem;
	border-radius: 999px;
	border: 1px solid oklch(0.76 0.1 72 / 0.35);
	background: var(--primary-soft);
	color: var(--primary);
	font: var(--fw-medium) 0.82rem / 1 var(--ff);
}

.pill--muted {
	border-color: var(--border);
	background: oklch(0.25 0.01 72 / 0.55);
	color: var(--text-muted);
}

.arrow-container {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	gap: var(--spacing2);
	margin-top: var(--spacing3);
	font: var(--fw-medium) 0.85rem / 1.4 var(--ff);
	color: var(--text-muted);
	transition: color var(--transition);
}

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

@keyframes float {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(8px); }
}

.arrow {
	display: inline-block;
	font-size: 1.1rem;
	color: var(--primary);
	animation: float 1.8s ease-in-out infinite;
}

/* Sections */
.section {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 100%;
	padding: var(--spacing6) var(--spacing4);
}

.section__header {
	width: var(--content-width);
	margin-bottom: var(--spacing5);
	text-align: center;
}

.section__header h2 {
	margin-top: var(--spacing2);
}

#featured,
#latest-project {
	min-height: 100vh;
}

.featured-wrapper {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--spacing4);
	width: var(--content-width);
	margin-bottom: var(--spacing5);
}

.featured-wrapper--single {
	grid-template-columns: minmax(0, 560px);
	justify-content: center;
}

.featured-item {
    display: grid;
    grid-template-areas: "stack";
    overflow: hidden;
    border: 1px solid oklch(0.76 0.1 72 / 0.12);
    border-radius: var(--radius-lg);
    background: var(--surface);
    box-shadow: var(--shadow-sm);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition:
        transform var(--transition),
        box-shadow var(--transition),
        border-color var(--transition);
}

.featured-item:hover {
	transform: translateY(-4px);
	border-color: oklch(0.76 0.1 72 / 0.28);
	box-shadow: var(--shadow-glow);
}

.featured-item__media {
    grid-area: stack;
    position: relative;
    height: 100%;
    width: 100%;
    overflow: hidden;
    background: var(--bg-dark);
	z-index: 2;
}

.featured-item__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    offset: 0px -80px;
	mask-image: linear-gradient(to top, transparent 10%, black);
    display: block;
    transition: transform 400ms ease;
}

.featured-item:hover .featured-item__media img {
	transform: scale(1.05);
}

.featured-item__media--placeholder {
	display: grid;
	place-items: center;
	background:
		radial-gradient(circle at center, oklch(0.76 0.1 72 / 0.18), transparent 65%),
		var(--bg-dark);
}

.featured-item__media--placeholder span {
	font: var(--fw-bold) 2.5rem / 1 var(--ff);
	color: var(--primary);
	letter-spacing: 0.06em;
}

.featured-item__body {
    grid-area: stack; /* Assign to the same stack to overlay */
    z-index: 2; /* Sit on top of the gradient overlay */
    display: flex;
    flex-direction: column;
    justify-content: flex-end; /* Pushes the text to the bottom of the card */
    padding: var(--spacing4);
    pointer-events: none; /* Allows hover states to pass through to the image underneath */
}

.featured-item__body .btn {
    pointer-events: auto;
}

.featured-item h3 {
    font: var(--h3ui);
    margin: var(--spacing2) 0 var(--spacing1);
    color: oklch(0.96 0.02 72); /* Force light text for readability */
}

.featured-item p {
    font: var(--pui);
    color: oklch(0.76 0.02 72); /* Force light-muted text */
    flex: unset; /* Remove the flex: 1 from previous styles */
    margin-bottom: var(--spacing3);
}

.tag-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--spacing2);
}

/* Links */
.links-section {
	min-height: 100vh;
	padding-bottom: var(--spacing4);
}

.links-wrapper {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	flex: 1;
	width: 100%;
}

.link-cards {
	display: grid;
	grid-template-columns: repeat(1, minmax(0, 1fr));
	gap: var(--spacing3);
	width: var(--content-width);
	list-style: none;
}

.link-card {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: var(--spacing3);
	padding: var(--spacing4);
	border: 1px solid var(--border-muted);
	border-radius: var(--radius);
	background: var(--surface);
	text-align: left;
	transition:
		transform var(--transition),
		border-color var(--transition),
		box-shadow var(--transition);
}

.link-card__content {
	display: flex;
	flex-direction: column;
	gap: var(--spacing1);
	flex: 1;
	min-width: 0;
}

.link-card__icon {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: var(--radius-sm);
	background: var(--primary-soft);
	color: var(--primary);
	transition:
		background var(--transition),
		color var(--transition),
		transform var(--transition);
}

.link-card__icon svg {
	width: 1.4rem;
	height: 1.4rem;
}

.link-card:hover {
	color: inherit;
	transform: translateY(-3px);
	border-color: oklch(0.76 0.1 72 / 0.35);
	box-shadow: var(--shadow-sm);
}

.link-card:hover .link-card__icon {
	background: var(--primary);
	color: var(--bg-dark);
	transform: scale(1.05);
}

.link-card__label {
	font: var(--fw-medium) 0.75rem / 1 var(--ff);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--primary);
}

.link-card__title {
	font: var(--fw-semi-bold) 1.15rem / 1.3 var(--ff);
	color: var(--text);
}

.link-card__meta {
	font: var(--pui);
	color: var(--text-muted);
}

.site-footer {
	width: var(--content-width);
	margin-top: var(--spacing6);
	padding-top: var(--spacing4);
	border-top: 1px solid var(--border-muted);
	font: var(--small);
	color: var(--text-muted);
	text-align: center;
}

.footer-info {
	margin-top: var(--spacing2);
}

/* Utilities */
.background {
	background-color: var(--bg);
}

.background-dark {
	background-color: var(--bg-dark);
}

.text-center {
	text-align: center;
}

.hidden {
	display: none;
}

@media (max-width: 720px) {
	.site-nav__links {
		gap: var(--spacing3);
	}

	.site-nav__links a {
		font-size: 0.82rem;
	}

	.hero,
	.section {
		padding-left: var(--spacing3);
		padding-right: var(--spacing3);
	}

	.featured-item__body,
	.link-card {
		padding: var(--spacing3);
	}

	.featured-wrapper {
		grid-template-columns: repeat(1, minmax(0, 1fr));
	}
}

@media (max-width: 1000px) {
	.scroll-wrapper {
		scroll-snap-type: none;
	}
}

@media (max-width: 370px) {


	.separator {
		display: none;
	}

	.site-nav__brand {
		font-size: 0.9rem;
	}
}

::-webkit-scrollbar {
	width: 0.55rem;
}

::-webkit-scrollbar-thumb {
	background: var(--border);
	border-radius: 999px;
}

::-webkit-scrollbar-thumb:hover {
	background: var(--primary);
}
