/* ==========================================================================
swansimage / custom.css
--------------------------------------------------------------------------
Tambahan style yang tidak ada di design-system.
Semua nilai wajib pakai token design-system — tidak boleh hardcode.

ATURAN:
✓  var(--size-400)          → spacing
✓  var(--radius-full)       → border radius
✓  var(--shadow-lg)         → shadow
✗  16px, #fff, 9999px       → hardcode — jangan

EXCEPTION yang boleh hardcode:
- hsla() untuk glassmorphism (token DS adalah nilai solid, tidak ada
opacity variant)
- clamp() untuk responsive typography (tidak bisa jadi token statis)
- font-weight: 800 (DS hanya sampai 700, lihat --font-weight-extrabold)
- Gradient warna klien (bukan bagian dari token DS)
========================================================================== */


/* ==========================================================================
1. CUSTOM TOKENS KLIEN
--------------------------------------------------------------------------
Token tambahan yang tidak ada di design-system. Didefinisikan di sini
supaya nilai terpusat dan mudah diubah.
========================================================================== */

:root {
	/* Font weight ekstrabold — DS hanya sampai --font-weight-bold: 700 */
	--font-weight-extrabold: 800;

	/* Warna accent klien untuk gradient hero title */
	--hero-gradient-accent: hsl(280, 70%, 55%);

	/* Durasi animasi dekoratif — di luar skala DS */
	--duration-decorative: 2s;
}


/* ==========================================================================
2. HERO — Full screen
--------------------------------------------------------------------------
Hero section setinggi viewport penuh. Konten di-center secara vertikal.
Pakai min-height bukan height supaya tetap bisa scroll kalau konten
lebih panjang dari viewport (mis. di mobile).
========================================================================== */

.hero-fullscreen {
	min-height:      100svh;   /* svh = small viewport height — akurat di mobile */
	display:         flex;
	flex-direction:  column;
	align-items:     center;
	justify-content: center;
	position:        relative;
	overflow:        hidden;
	padding:         var(--size-1600) var(--size-400);

	/* Gradient background klien */
	background: linear-gradient(
		135deg,
		hsl(220, 90%, 96%) 0%,
		hsl(260, 80%, 95%) 50%,
		hsl(300, 60%, 96%) 100%
	);
}

/* Dark mode */
[data-theme="dark"] .hero-fullscreen {
	background: linear-gradient(
		135deg,
		hsl(220, 40%, 8%)  0%,
		hsl(260, 35%, 10%) 50%,
		hsl(280, 30%, 9%)  100%
	);
}

/* Dekorasi radial glow di background */
.hero-fullscreen::before {
content:        '';
position:       absolute;
inset:          0;
pointer-events: none;
background:
	radial-gradient(circle at 20% 30%, hsla(220, 80%, 70%, 0.20) 0%, transparent 50%),
	radial-gradient(circle at 80% 70%, hsla(280, 70%, 70%, 0.15) 0%, transparent 50%);
}

/* Fallback untuk browser lama yang tidak support svh */
@supports not (min-height: 100svh) {
.hero-fullscreen {
	min-height: 100vh;
}
}

/* ── Hero konten ── */
.hero-content {
text-align: center;
position:   relative;
z-index:    1;
}

.hero-eyebrow {
display:        inline-block;
font-size:      var(--text-caption-size);     /* 0.8rem ≈ 12.8px */
font-weight:    var(--font-weight-semibold);
letter-spacing: var(--tracking-wider);        /* 0.05em */
text-transform: uppercase;
color:          var(--color-text-secondary);
margin-bottom:  var(--size-400);
}

.hero-title {
font-size:      clamp(2rem, 6vw, 3.75rem);   /* responsive — tidak bisa token statis */
font-weight:    var(--font-weight-extrabold); /* 800 — custom token di atas */
line-height:    1.1;                          /* lebih tight dari --leading-tight (1.25) */
letter-spacing: var(--tracking-tight);        /* -0.025em — cukup dekat dengan -0.03em */
color:          var(--color-text-primary);
margin-bottom:  var(--size-500);
max-width:      14ch;
margin-inline:  auto;
}

/* Gradient text pada span di dalam .hero-title */
.hero-title span {
background:              linear-gradient(135deg, var(--brand-500), var(--hero-gradient-accent));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip:         text;
}

.hero-subtitle {
font-size:     var(--font-size-350);          /* 1.125rem — 18px */
color:         var(--color-text-secondary);
max-width:     44ch;
margin-inline: auto;
margin-bottom: var(--size-800);
line-height:   var(--leading-relaxed);        /* 1.625 */
}

/* ── Scroll hint ── */
.hero-scroll-hint {
display:     inline-flex;
align-items: center;
gap:         var(--size-200);
font-size:   var(--text-label-size);
color:       var(--color-text-secondary);
opacity:     0.7;
animation:   hero-bounce var(--duration-decorative) var(--ease-in-out) infinite;
}

@keyframes hero-bounce {
0%, 100% { transform: translateY(0); }
50%       { transform: translateY(6px); }
}

/* Hormati preferensi reduced motion */
@media (prefers-reduced-motion: reduce) {
.hero-scroll-hint {
	animation: none;
}
}

/* ==========================================================================
4. PAGE BODY — Kompensasi cek-navbar fixed
--------------------------------------------------------------------------
Karena cek-navbar sekarang fixed (bukan sticky), konten halaman perlu
padding-top supaya tidak tertutup di belakang cek-navbar.

Nilai: tinggi cek-navbar + jarak atas cek-navbar + buffer
	--cek-navbar-height-md (60px) + --size-400 (16px) + --size-400 (16px) = 92px
========================================================================== */

.page-body {
padding-top: calc(var(--cek-navbar-height-md) + var(--size-400) + var(--size-400));
}

/* Hero fullscreen tidak butuh padding-top — cek-navbar mengambang di atasnya */
.page-body-hero {
padding-top: 0;
}


/* ==========================================================================
5. RESPONSIVE
--------------------------------------------------------------------------
Di layar kecil, jarak kiri-kanan dikurangi supaya cek-navbar tidak terlalu
sempit.
========================================================================== */

@media (max-width: 767px) {
.cek-navbar {
	left:  var(--size-300);   /* 12px di mobile */
	right: var(--size-300);
	top:   var(--size-300);
}

.page-body {
	padding-top: calc(var(--cek-navbar-height-md) + var(--size-300) + var(--size-300));
}

.hero-fullscreen {
	padding: var(--size-1200) var(--size-400);
}
}
