<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--sand: #F5F0E8;
--sand-2: #EDE7D8;
--ink: #1A1714;
--ink-soft: #5A5550;
--moss: #2D4A32;
--moss-lt: #4D7A54;
--gold: #C89B3C;
--gold-lt: #F0C870;
--cream: #FFFDF8;
--nav-h: 72px;
--r: 14px;
--r-lg: 22px;
}
html { scroll-behavior: smooth; }
body {
font-family: 'DM Sans', sans-serif;
background: var(--cream);
color: var(--ink);
font-size: 16px;
line-height: 1.6;
overflow-x: hidden;
}
/* ─── NAV ─── */
nav {
position: fixed;
top: 0; left: 0; right: 0;
height: var(--nav-h);
background: rgba(255,253,248,0.88);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(90,85,80,0.12);
display: flex;
align-items: center;
padding: 0 5vw;
z-index: 100;
gap: 2rem;
}
.logo {
display: flex;
align-items: center;
gap: 10px;
text-decoration: none;
flex-shrink: 0;
}
.logo-mark {
width: 36px;
height: 36px;
background: var(--moss);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
}
.logo-mark::before {
content: '';
position: absolute;
width: 18px; height: 14px;
border: 2px solid #fff;
border-radius: 2px;
top: 9px; left: 9px;
}
.logo-mark::after {
content: '';
position: absolute;
width: 10px; height: 10px;
background: var(--gold);
border-radius: 2px;
bottom: 7px; right: 7px;
}
.logo-text {
font-family: 'Fraunces', serif;
font-size: 1.3rem;
font-weight: 600;
color: var(--ink);
letter-spacing: -0.02em;
}
.logo-text span { color: var(--moss); }
.nav-links {
display: flex;
align-items: center;
gap: 2rem;
list-style: none;
margin-left: auto;
}
.nav-links a {
font-size: 0.875rem;
font-weight: 400;
color: var(--ink-soft);
text-decoration: none;
letter-spacing: 0.01em;
transition: color 0.2s;
}
.nav-links a:hover { color: var(--ink); }
.btn-nav {
background: var(--moss);
color: #fff !important;
padding: 8px 20px;
border-radius: 8px;
font-weight: 500 !important;
transition: background 0.2s, transform 0.15s !important;
}
.btn-nav:hover {
background: var(--moss-lt) !important;
color: #fff !important;
transform: translateY(-1px);
}
.hamburger {
display: none;
flex-direction: column;
gap: 5px;
cursor: pointer;
background: none;
border: none;
padding: 4px;
}
.hamburger span {
display: block;
width: 24px; height: 2px;
background: var(--ink);
border-radius: 2px;
transition: all 0.3s;
}
/* ─── HERO ─── */
.hero {
min-height: 100svh;
padding: calc(var(--nav-h) + 4rem) 5vw 5rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
width: 700px; height: 700px;
border-radius: 50%;
background: radial-gradient(circle, rgba(45,74,50,0.08) 0%, transparent 70%);
top: -200px; right: -200px;
pointer-events: none;
}
.hero-eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
background: rgba(45,74,50,0.1);
color: var(--moss);
font-size: 0.78rem;
font-weight: 500;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 6px 14px;
border-radius: 100px;
margin-bottom: 1.5rem;
}
.hero-eyebrow::before {
content: '';
width: 6px; height: 6px;
border-radius: 50%;
background: var(--moss);
flex-shrink: 0;
}
.hero-title {
font-family: 'Fraunces', serif;
font-size: clamp(2.4rem, 5vw, 4rem);
font-weight: 700;
line-height: 1.1;
letter-spacing: -0.03em;
color: var(--ink);
margin-bottom: 1.5rem;
}
.hero-title em {
font-style: italic;
color: var(--moss);
font-weight: 300;
}
.hero-desc {
font-size: 1.05rem;
color: var(--ink-soft);
line-height: 1.75;
max-width: 480px;
margin-bottom: 2.5rem;
font-weight: 300;
}
.hero-cta {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
}
.btn-primary {
background: var(--moss);
color: #fff;
padding: 14px 28px;
border-radius: 10px;
font-size: 0.95rem;
font-weight: 500;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 8px;
transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
letter-spacing: 0.01em;
}
.btn-primary:hover {
background: var(--moss-lt);
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(45,74,50,0.25);
}
.btn-primary svg { transition: transform 0.2s; }
.btn-primary:hover svg { transform: translateX(3px); }
.btn-ghost {
color: var(--ink);
font-size: 0.95rem;
font-weight: 400;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 6px;
opacity: 0.7;
transition: opacity 0.2s;
}
.btn-ghost:hover { opacity: 1; }
.hero-stats {
display: flex;
gap: 2rem;
margin-top: 3rem;
padding-top: 2rem;
border-top: 1px solid rgba(90,85,80,0.15);
}
.stat-num {
font-family: 'Fraunces', serif;
font-size: 1.8rem;
font-weight: 600;
color: var(--ink);
line-height: 1;
margin-bottom: 4px;
}
.stat-label {
font-size: 0.78rem;
color: var(--ink-soft);
font-weight: 300;
letter-spacing: 0.02em;
}
/* Hero visual */
.hero-visual {
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.mockup-shell {
width: 100%;
max-width: 480px;
background: var(--sand);
border-radius: var(--r-lg);
border: 1px solid rgba(90,85,80,0.15);
padding: 1.5rem;
position: relative;
box-shadow: 0 24px 64px rgba(26,23,20,0.1), 0 4px 16px rgba(26,23,20,0.06);
}
.mockup-topbar {
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 1.25rem;
}
.dot { width: 10px; height: 10px; border-radius: 50%; }
.dot-r { background: #F08080; }
.dot-y { background: var(--gold); }
.dot-g { background: var(--moss-lt); }
.mockup-search {
flex: 1;
background: rgba(255,253,248,0.8);
border: 1px solid rgba(90,85,80,0.15);
border-radius: 8px;
height: 28px;
margin-left: 0.5rem;
display: flex;
align-items: center;
padding: 0 10px;
gap: 6px;
}
.mockup-search-dot {
width: 8px; height: 8px;
border-radius: 50%;
background: rgba(90,85,80,0.3);
}
.mockup-search-bar {
height: 6px;
flex: 1;
background: rgba(90,85,80,0.12);
border-radius: 3px;
}
.mockup-course {
background: #fff;
border-radius: var(--r);
padding: 1.25rem;
margin-bottom: 0.75rem;
border: 1px solid rgba(90,85,80,0.1);
display: flex;
gap: 1rem;