/**
 * ============================================================================
 * Copyright (c) 2026 BAWASLU-M FH ULM. All Rights Reserved.
 * Badan Pengawas Pemilihan Umum Mahasiswa
 * Fakultas Hukum, Universitas Lambung Mangkurat
 *
 * PROPRIETARY & CONFIDENTIAL SOURCE CODE
 * ----------------------------------------------------------------------------
 * This software, web application, source code, scripts, styles, architecture,
 * and associated assets are the exclusive intellectual property of BAWASLU-M FH ULM.
 *
 * Any unauthorized copying, reproduction, distribution, scraping, decompilation,
 * reverse engineering, modification, or appropriation of this source code,
 * in whole or in part, is strictly prohibited and deemed highly unethical under
 * institutional, academic, and applicable intellectual property legal frameworks.
 * ============================================================================
 */

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400;1,600&family=Space+Grotesk:wght@500;600;700;800;900&family=Special+Elite&family=Londrina+Sketch&display=swap');

body {
  font-family: var(--font-body);
  color: var(--ink-primary);
  font-size: var(--text-base);
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  color: var(--ink-primary);
  line-height: 1.15;
  font-weight: 800;
  letter-spacing: -0.02em;
}

h1 {
  font-size: clamp(2rem, 5vw, 3.5rem);
}

h2 {
  font-size: clamp(1.6rem, 3.5vw, 2.4rem);
}

h3 {
  font-size: clamp(1.25rem, 2.5vw, 1.75rem);
}

h4 {
  font-size: var(--text-xl);
}

p {
  color: var(--ink-secondary);
  line-height: 1.68;
}

.typewriter {
  font-family: var(--font-typewriter);
  letter-spacing: 0.04em;
  line-height: 1.5;
}

.case-file-stamp {
  font-family: var(--font-typewriter);
  color: var(--stamp-red);
  text-transform: uppercase;
  font-weight: 900;
  letter-spacing: 0.15em;
  border: 2px dashed var(--stamp-red);
  padding: 0.25rem 0.65rem;
  display: inline-block;
  transform: rotate(-3deg);
  border-radius: var(--radius-xs);
  user-select: none;
}

.badge-tag {
  font-family: var(--font-display);
  font-size: var(--text-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 0.3rem 0.75rem;
  border-radius: var(--radius-full);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border: var(--border-ink-thin);
}

.badge-sage {
  background: var(--brand-sage-soft);
  color: var(--brand-sage-dark);
}

[data-theme="dark"] .badge-sage {
  background: var(--brand-sage-soft);
  color: #FCE4ED;
  border-color: #8A2244;
}

.badge-red {
  background: var(--stamp-red-soft);
  color: var(--stamp-red-dark);
}

[data-theme="dark"] .badge-red {
  color: #FFB3B3;
  border-color: #6E2A2A;
}

.badge-yellow {
  background: #FFF5D6;
  color: #7A5700;
}

[data-theme="dark"] .badge-yellow {
  background: #3B3215;
  color: #FFE699;
  border-color: #665420;
}

.text-muted {
  color: var(--ink-muted);
}

.legal-citation {
  font-family: var(--font-typewriter);
  font-size: var(--text-xs);
  color: var(--ink-secondary);
  background: rgba(0, 0, 0, 0.04);
  padding: 0.2rem 0.5rem;
  border-left: 3px solid var(--brand-sage);
  border-radius: 0 var(--radius-xs) var(--radius-xs) 0;
  display: inline-block;
}

.shiny-text {
  background: var(--shiny-title-gradient);
  background-size: 260% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shinyGlossSweep 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;
  filter: var(--shiny-title-shadow);
  display: inline-block;
  transition: filter 0.3s ease;
}

.shiny-text:hover {
  filter: brightness(1.2) var(--shiny-title-shadow);
}

.shiny-motto {
  background: var(--shiny-motto-gradient);
  background-size: 260% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shinyGlossSweep 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;
  animation-delay: 0.15s;
  filter: var(--shiny-motto-shadow);
  display: inline-block;
  transition: filter 0.3s ease;
}

@keyframes shinyGlossSweep {
  0% {
    background-position: 135% 0;
  }
  80% {
    background-position: -35% 0;
  }
  100% {
    background-position: -35% 0;
  }
}
