@charset "UTF-8";
/* ==========================================================================
   SMP Kristen Ende — sistem desain
   Satu-satunya stylesheet situs publik. Tanpa Bootstrap/jQuery.

   Arah visual (sesuai brief): minimalis, bersih, berenergi teknologi.
   Aturan warna 60-30-10:
     60%  latar   putih #FFFFFF + abu terang #F8FAFC
     30%  struktur biru digital #2563EB, teks utama #0F172A
     10%  aksen   kuning #FACC15 — EKSKLUSIF untuk tombol aksi penting
   Mobile-first: semua aturan dasar untuk layar kecil, media query menaik.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Token
   -------------------------------------------------------------------------- */
:root {
  /* 60% — latar */
  --putih:      #FFFFFF;
  --kabut:      #F8FAFC;   /* latar section selang-seling */
  --kabut-2:    #F1F5F9;   /* permukaan lebih dalam */

  /* 30% — struktur & teks */
  --biru:       #2563EB;
  --biru-tua:   #1D4ED8;
  --biru-muda:  #DBEAFE;
  --biru-kabut: #EFF6FF;
  --tinta:      #0F172A;   /* teks utama & judul */
  --abu:        #475569;   /* paragraf — 7,5:1 di atas putih */
  --abu-muda:   #64748B;   /* meta, caption */
  --garis:      #E2E8F0;

  /* 10% — aksen, hanya untuk CTA */
  --kuning:     #FACC15;
  --kuning-tua: #EAB308;

  /* status */
  --hijau:      #15803D;
  --hijau-muda: #DCFCE7;
  --merah:      #B91C1C;
  --merah-muda: #FEE2E2;

  --f-teks: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;

  --t--1: 0.8125rem;
  --t-0:  1rem;
  --t-1:  1.125rem;
  --t-2:  clamp(1.25rem, 1.12rem + 0.6vw, 1.5rem);
  --t-3:  clamp(1.5rem,  1.28rem + 1.1vw, 2.1rem);
  --t-4:  clamp(2rem,    1.55rem + 2.3vw, 3.4rem);

  --s-1: 4px;   --s-2: 8px;   --s-3: 12px;  --s-4: 16px;
  --s-5: 24px;  --s-6: 32px;  --s-7: 48px;  --s-8: 64px;  --s-9: 88px;

  --lebar: 1200px;
  --lebar-baca: 68ch;

  --r:    12px;   /* kartu — sesuai brief */
  --r-sm: 10px;   /* tombol & isian */

  --bayang:   0 1px 2px rgba(15, 23, 42, .04), 0 4px 12px rgba(15, 23, 42, .06);
  --bayang-2: 0 4px 10px rgba(15, 23, 42, .06), 0 16px 32px rgba(15, 23, 42, .09);
  --bayang-kuning: 0 4px 14px rgba(250, 204, 21, .38);

  --gerak: 180ms cubic-bezier(.2, .6, .3, 1);
}

/* --------------------------------------------------------------------------
   2. Reset
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--putih);
  color: var(--abu);
  font-family: var(--f-teks);
  font-size: var(--t-0);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

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

h1, h2, h3, h4 {
  font-family: var(--f-teks);
  color: var(--tinta);
  line-height: 1.2;
  letter-spacing: -0.02em;
  margin: 0 0 var(--s-3);
  text-wrap: balance;
}
h1 { font-size: var(--t-4); font-weight: 800; letter-spacing: -0.033em; }
h2 { font-size: var(--t-3); font-weight: 800; }
h3 { font-size: var(--t-2); font-weight: 700; }
h4 { font-size: var(--t-1); font-weight: 700; }

p  { margin: 0 0 var(--s-4); text-wrap: pretty; }
ul, ol { margin: 0 0 var(--s-4); padding-left: 1.25em; }

/* Nomor surat sekolah ("073/421.2/SMP.KRIST/VI/2023") adalah satu token panjang
   tanpa spasi; tanpa aturan ini token seperti itu melubangi tata letak ponsel. */
p, h1, h2, h3, h4, li, td, th, dd, figcaption { overflow-wrap: break-word; }

a { color: var(--biru); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--biru-tua); }

time, .angka, table td, table th { font-variant-numeric: tabular-nums; }
hr { border: 0; border-top: 1px solid var(--garis); margin: var(--s-6) 0; }

/* --------------------------------------------------------------------------
   3. Fokus — indikator wajib terlihat (WCAG 2.4.7)
   Cincin selalu biru: kuning di atas putih hanya 1,5:1, tak terlihat.
   -------------------------------------------------------------------------- */
:focus-visible { outline: 3px solid var(--biru); outline-offset: 2px; border-radius: 4px; }
.pada-gelap :focus-visible { outline-color: var(--kuning); }

.lewati {
  position: absolute; left: var(--s-4); top: -100px; z-index: 999;
  background: var(--biru); color: var(--putih);
  padding: var(--s-3) var(--s-5); border-radius: 0 0 var(--r-sm) var(--r-sm);
  font-weight: 700; text-decoration: none; transition: top var(--gerak);
}
.lewati:focus { top: 0; color: var(--putih); }

.pita-atas { height: 4px; background: var(--biru); }

.khusus-pembaca-layar {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

/* --------------------------------------------------------------------------
   4. Tata letak
   -------------------------------------------------------------------------- */
.wadah { width: 100%; max-width: var(--lebar); margin-inline: auto; padding-inline: var(--s-4); }
@media (min-width: 768px) { .wadah { padding-inline: var(--s-5); } }

.bagian { padding-block: var(--s-7); }
@media (min-width: 768px) { .bagian { padding-block: var(--s-8); } }
.bagian--kabut { background: var(--kabut); }
.bagian--biru  { background: var(--biru); color: #E8F0FF; }

.petak { display: grid; gap: var(--s-4); }
@media (min-width: 600px)  { .petak--2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px)  { .petak--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 600px)  { .petak--4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .petak--4 { grid-template-columns: repeat(4, 1fr); } }

.kepala-bagian { margin-bottom: var(--s-5); }
.kepala-bagian__baris { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--s-3); }
.kepala-bagian h2 { margin: 0; }
.kepala-bagian p { margin: var(--s-2) 0 0; max-width: 58ch; }

.mata {
  display: inline-block; font-size: var(--t--1); font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--biru);
  margin-bottom: var(--s-2);
}

/* --------------------------------------------------------------------------
   5. Kepala situs
   -------------------------------------------------------------------------- */
.bar-atas { background: var(--kabut); border-bottom: 1px solid var(--garis); font-size: var(--t--1); color: var(--abu-muda); }
.bar-atas__isi { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-2) var(--s-5); min-height: 38px; padding-block: 6px; }
.bar-atas__fakta { display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-4); margin: 0; }
.bar-atas__fakta b { font-weight: 700; color: var(--tinta); }
.bar-atas a { color: var(--abu); }
.bar-atas__tautan { display: flex; gap: var(--s-4); list-style: none; margin: 0; padding: 0; }
.bar-atas__tautan a { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; text-decoration: none; font-weight: 600; }
.bar-atas__tautan a:hover { color: var(--biru); }
.bar-atas__tautan svg { width: 14px; height: 14px; color: var(--biru); }

.kepala { position: sticky; top: 0; z-index: 60; background: var(--putih); border-bottom: 1px solid var(--garis); }
.kepala__isi { display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); min-height: 66px; }
.kepala__kanan { display: flex; align-items: center; gap: var(--s-3); }

.lambang { display: flex; align-items: center; text-decoration: none; min-width: 0; }
.lambang img { height: 40px; width: auto; max-width: min(249px, 52vw); object-fit: contain; }

/* Di layar sempit logo, CTA, dan tombol menu berebut satu baris. Ketiganya
   dikecilkan; label "Menu" disembunyikan tapi tetap ada untuk pembaca layar. */
@media (max-width: 600px) {
  .kepala__isi { gap: var(--s-2); min-height: 60px; }
  .kepala__kanan { gap: var(--s-2); }
  .lambang img { height: 32px; max-width: 40vw; }
  .kepala .tbl--aksi { min-height: 38px; padding-inline: var(--s-3); font-size: 0.8125rem; }
  .tombol-menu { padding-inline: var(--s-3); gap: 0; }
  .tombol-menu__teks { display: none; }
}

/* --------------------------------------------------------------------------
   6. Navigasi — dapat diakses keyboard, tanpa ketergantungan hover
   -------------------------------------------------------------------------- */
.tombol-menu {
  display: inline-flex; align-items: center; gap: var(--s-2);
  min-height: 44px; padding: var(--s-2) var(--s-3);
  background: none; border: 1px solid var(--garis); border-radius: var(--r-sm);
  font: inherit; font-weight: 700; color: var(--tinta); cursor: pointer;
}
.tombol-menu__garis { display: block; width: 18px; height: 2px; background: currentColor; box-shadow: 0 6px 0 currentColor, 0 -6px 0 currentColor; }
@media (min-width: 1024px) { .tombol-menu { display: none; } }

.menu__daftar { list-style: none; margin: 0; padding: 0; }
.menu__tautan, .menu__pemicu {
  display: flex; align-items: center; gap: var(--s-2);
  width: 100%; min-height: 44px; padding: var(--s-2) var(--s-3);
  font: inherit; font-size: 0.9375rem; font-weight: 600; color: var(--tinta);
  background: none; border: 0; border-radius: var(--r-sm);
  text-decoration: none; cursor: pointer; text-align: left;
  transition: background var(--gerak), color var(--gerak);
}
.menu__tautan:hover, .menu__pemicu:hover { background: var(--biru-kabut); color: var(--biru); }
.menu__tautan[aria-current="page"] { color: var(--biru); background: var(--biru-kabut); }
.menu__item[data-cabang-aktif] > .menu__pemicu { color: var(--biru); background: var(--biru-kabut); }
.menu__panah { width: 10px; height: 10px; flex: none; transition: transform var(--gerak); }
.menu__pemicu[aria-expanded="true"] .menu__panah { transform: rotate(180deg); }

.submenu { list-style: none; margin: 0; padding: 0; }
.submenu a { display: block; min-height: 44px; padding: 11px var(--s-3); font-size: 0.9375rem; color: var(--tinta); text-decoration: none; border-radius: var(--r-sm); }
.submenu a:hover { background: var(--biru-kabut); color: var(--biru); }
.submenu a[aria-current="page"] { color: var(--biru); font-weight: 700; }

@media (max-width: 1023px) {
  .menu {
    display: none; position: absolute; left: 0; right: 0; top: 100%;
    background: var(--putih); border-top: 1px solid var(--garis);
    box-shadow: var(--bayang-2); padding: var(--s-3) var(--s-4) var(--s-5);
    max-height: calc(100vh - 110px); overflow-y: auto;
  }
  .menu.terbuka { display: block; }
  .menu__item { border-bottom: 1px solid var(--garis); }
  .menu__item:last-child { border-bottom: 0; }
  .submenu { display: none; padding: 0 0 var(--s-2) var(--s-4); }
  .menu__pemicu[aria-expanded="true"] + .submenu { display: block; }
}

@media (min-width: 1024px) {
  .menu { display: block !important; }
  .menu__daftar { display: flex; align-items: center; gap: 2px; }
  .menu__item { position: relative; }
  .submenu {
    position: absolute; left: 0; top: calc(100% + 8px); min-width: 232px; padding: var(--s-2);
    background: var(--putih); border: 1px solid var(--garis);
    border-radius: var(--r); box-shadow: var(--bayang-2);
    opacity: 0; visibility: hidden; transform: translateY(-6px);
    transition: opacity var(--gerak), transform var(--gerak), visibility var(--gerak);
  }
  .menu__item:hover > .submenu,
  .menu__item:focus-within > .submenu,
  .menu__pemicu[aria-expanded="true"] + .submenu { opacity: 1; visibility: visible; transform: translateY(0); }
}

/* --------------------------------------------------------------------------
   7. Tombol — kuning hanya untuk aksi penting (10%)
   -------------------------------------------------------------------------- */
.tbl {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2);
  min-height: 48px; padding: var(--s-3) var(--s-5);
  font-family: var(--f-teks); font-size: 0.9375rem; font-weight: 700;
  border-radius: var(--r-sm); border: 1px solid transparent;
  text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: background var(--gerak), border-color var(--gerak), color var(--gerak), transform var(--gerak), box-shadow var(--gerak);
}
.tbl:hover { transform: translateY(-1px); }
.tbl svg { width: 17px; height: 17px; flex: none; }

/* Aksen 10% — CTA utama */
.tbl--aksi { background: var(--kuning); color: var(--tinta); box-shadow: var(--bayang-kuning); }
.tbl--aksi:hover { background: var(--kuning-tua); color: var(--tinta); }

.tbl--utama { background: var(--biru); color: var(--putih); }
.tbl--utama:hover { background: var(--biru-tua); color: var(--putih); }

.tbl--garis { background: var(--putih); border-color: var(--garis); color: var(--tinta); }
.tbl--garis:hover { border-color: var(--biru); color: var(--biru); background: var(--biru-kabut); }

.tbl--putih { background: var(--putih); color: var(--biru); }
.tbl--putih:hover { background: var(--biru-kabut); color: var(--biru-tua); }

.tbl--kecil { min-height: 40px; padding: var(--s-2) var(--s-4); font-size: 0.875rem; }
.tbl--blok { width: 100%; }

/* --------------------------------------------------------------------------
   8. Hero
   -------------------------------------------------------------------------- */
.hero { background: var(--putih); padding-block: var(--s-7) var(--s-8); overflow: hidden; }
.hero__petak { display: grid; gap: var(--s-6); align-items: center; }
@media (min-width: 960px) {
  /* Dipakai varian hero (rasio 1,5:1), bukan varian lebar 2,08:1 — yang
     terakhir terlalu pendek untuk kolom ini, dan melimpahkannya ke tepi
     viewport justru memotong kartu ikon di sisi kanan. */
  .hero__petak { grid-template-columns: minmax(0, 1fr) minmax(0, 1.06fr); gap: var(--s-7); }
}

.hero__lencana {
  display: inline-flex; align-items: center; gap: var(--s-2);
  padding: 6px var(--s-3); border-radius: 999px;
  background: var(--biru-kabut); color: var(--biru);
  font-size: var(--t--1); font-weight: 700; margin-bottom: var(--s-4);
}
.hero__lencana svg { width: 15px; height: 15px; }
.hero h1 { margin: 0 0 var(--s-4); }
.hero h1 .sorot { color: var(--biru); }
.hero__teks { font-size: 1.0625rem; max-width: 52ch; margin-bottom: var(--s-5); }
.hero__aksi { display: flex; flex-wrap: wrap; gap: var(--s-3); margin-bottom: var(--s-6); }

.hero__angka { display: flex; flex-wrap: wrap; gap: var(--s-5) var(--s-7); border-top: 1px solid var(--garis); padding-top: var(--s-5); }
.hero__angka div { min-width: 84px; }
.hero__angka b { display: block; font-size: 1.6rem; font-weight: 800; color: var(--tinta); line-height: 1.1; }
.hero__angka span { font-size: var(--t--1); color: var(--abu-muda); font-weight: 600; }

.hero__media { position: relative; }
.hero__foto {
  width: 100%; aspect-ratio: 4 / 3; object-fit: cover;
  border-radius: var(--r); box-shadow: var(--bayang-2); background: var(--kabut-2);
}
/* Bila cadangan ilustrasi vektor yang dipakai, jangan dipotong seperti foto. */
.hero__foto[src$=".svg"] { aspect-ratio: auto; object-fit: contain; box-shadow: none; background: none; }
/* Kartu info mengambang — "energi teknologi" tanpa ornamen berlebihan */
/* Baris agenda ringkas di kolom teks */
.hero__agenda {
  display: flex; align-items: flex-start; gap: var(--s-3);
  margin: 0 0 var(--s-6); padding: var(--s-3) var(--s-4);
  background: var(--biru-kabut); border-radius: var(--r-sm);
  font-size: 0.9375rem; color: var(--abu); max-width: 52ch;
}
.hero__agenda svg { width: 17px; height: 17px; flex: none; margin-top: 3px; color: var(--biru); }
.hero__agenda b { color: var(--tinta); font-weight: 700; }
.hero__agenda a { font-weight: 600; }

/* --------------------------------------------------------------------------
   9. Akses cepat
   -------------------------------------------------------------------------- */
.akses__daftar { display: grid; gap: var(--s-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); list-style: none; margin: 0; padding: 0; }
.akses__tautan {
  display: flex; align-items: center; gap: var(--s-3);
  min-height: 68px; padding: var(--s-4);
  background: var(--putih); border: 1px solid var(--garis); border-radius: var(--r);
  text-decoration: none; color: var(--tinta); font-weight: 700;
  transition: border-color var(--gerak), box-shadow var(--gerak), transform var(--gerak);
}
.akses__tautan:hover { border-color: var(--biru); box-shadow: var(--bayang); transform: translateY(-2px); color: var(--biru); }
.akses__ikon {
  flex: none; width: 40px; height: 40px; padding: 9px; border-radius: 10px;
  background: var(--biru-kabut); color: var(--biru);
}
.akses__sub { display: block; font-size: var(--t--1); font-weight: 500; color: var(--abu-muda); }

/* --------------------------------------------------------------------------
   10. Kartu
   -------------------------------------------------------------------------- */
.kartu {
  position: relative; display: flex; flex-direction: column;
  background: var(--putih); border: 1px solid var(--garis);
  border-radius: var(--r); overflow: hidden;
  transition: border-color var(--gerak), box-shadow var(--gerak), transform var(--gerak);
}
.kartu:hover { border-color: #CBD5E1; box-shadow: var(--bayang-2); transform: translateY(-3px); }
.kartu__gambar { aspect-ratio: 16 / 10; width: 100%; object-fit: cover; background: var(--kabut-2); }
.kartu__isi { padding: var(--s-4); display: flex; flex-direction: column; gap: var(--s-2); flex: 1; }
.kartu__judul { font-size: 1.0625rem; font-weight: 700; margin: 0; line-height: 1.35; }
.kartu__judul a { color: inherit; text-decoration: none; }
.kartu__judul a::after { content: ""; position: absolute; inset: 0; }
.kartu__judul a:hover { color: var(--biru); }
.kartu__ringkas { color: var(--abu); font-size: 0.9375rem; margin: 0; }
.kartu__kaki { margin-top: auto; padding-top: var(--s-3); display: flex; flex-wrap: wrap; gap: var(--s-3); font-size: var(--t--1); color: var(--abu-muda); }
.kartu__kaki svg { width: 14px; height: 14px; vertical-align: -2px; }

/* Kartu fitur (kurikulum / fasilitas) */
.fitur { padding: var(--s-5); }
.fitur__ikon { width: 46px; height: 46px; padding: 11px; border-radius: 12px; background: var(--biru-kabut); color: var(--biru); margin-bottom: var(--s-4); }
.fitur h3 { font-size: 1.0625rem; margin: 0 0 var(--s-2); }
.fitur p { font-size: 0.9375rem; margin: 0 0 var(--s-3); }
.fitur a.fitur__tautan { font-size: 0.9375rem; font-weight: 700; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
.fitur a.fitur__tautan svg { width: 15px; height: 15px; }
.fitur a.fitur__tautan:hover { text-decoration: underline; }

.label {
  display: inline-block; align-self: flex-start;
  font-size: 0.6875rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  padding: 4px 10px; border-radius: 999px; background: var(--biru-kabut); color: var(--biru);
}
.label--baru { background: var(--merah-muda); color: var(--merah); }
.label--agenda { background: var(--hijau-muda); color: var(--hijau); }

/* --------------------------------------------------------------------------
   11. Daftar bertanggal (agenda & pengumuman)
   -------------------------------------------------------------------------- */
.linimasa { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-3); }
.entri {
  position: relative; display: grid; gap: var(--s-4);
  grid-template-columns: 62px 1fr; align-items: start;
  padding: var(--s-4); background: var(--putih);
  border: 1px solid var(--garis); border-radius: var(--r);
  transition: border-color var(--gerak), box-shadow var(--gerak);
}
.entri:hover { border-color: #CBD5E1; box-shadow: var(--bayang); }
.entri__tanggal {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: var(--s-2) var(--s-1); background: var(--biru-kabut); color: var(--biru);
  border-radius: 10px; text-align: center;
}
.entri__tgl { font-size: 1.4rem; font-weight: 800; line-height: 1; }
.entri__bln { font-size: 0.6875rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; margin-top: 3px; }
.entri__thn { font-size: 0.625rem; color: var(--abu-muda); }
.entri__judul { font-size: 1.0625rem; font-weight: 700; margin: 0 0 var(--s-1); line-height: 1.35; }
.entri__judul a { color: inherit; text-decoration: none; }
.entri__judul a::after { content: ""; position: absolute; inset: 0; }
.entri__judul a:hover { color: var(--biru); }
.entri__teks { color: var(--abu); font-size: 0.9375rem; margin: 0; }
.entri__meta { display: flex; flex-wrap: wrap; gap: var(--s-4); margin: var(--s-2) 0 0; font-size: var(--t--1); color: var(--abu-muda); }
.entri__meta span { display: inline-flex; align-items: center; gap: 5px; }
.entri__meta svg { width: 14px; height: 14px; flex: none; }

/* --------------------------------------------------------------------------
   12. Pita ajakan (CTA) & angka
   -------------------------------------------------------------------------- */
.ajakan { background: var(--biru); border-radius: var(--r); padding: var(--s-7) var(--s-5); text-align: center; }
.ajakan h2 { color: var(--putih); margin: 0 auto var(--s-3); max-width: 22ch; }
/* #BFDBFE hanya 3,64:1 di atas biru — di bawah ambang AA. */
.ajakan p { color: #E8F0FF; margin: 0 auto var(--s-5); max-width: 52ch; }
.ajakan__aksi { display: flex; flex-wrap: wrap; gap: var(--s-3); justify-content: center; }

.angka-petak { display: grid; gap: var(--s-3); grid-template-columns: repeat(2, 1fr); }
@media (min-width: 768px) { .angka-petak { grid-template-columns: repeat(4, 1fr); } }
.angka-sel { background: var(--putih); border: 1px solid var(--garis); border-radius: var(--r); padding: var(--s-5) var(--s-4); text-align: center; }
.angka-sel__nilai { font-size: 2.1rem; font-weight: 800; line-height: 1; color: var(--biru); }
.angka-sel__label { display: block; margin-top: var(--s-2); font-size: var(--t--1); color: var(--abu-muda); font-weight: 600; }

/* --------------------------------------------------------------------------
   13. Guru
   -------------------------------------------------------------------------- */
.guru-kartu { text-align: center; background: var(--putih); border: 1px solid var(--garis); border-radius: var(--r); padding: var(--s-5) var(--s-4); transition: border-color var(--gerak), box-shadow var(--gerak); }
.guru-kartu:hover { border-color: #CBD5E1; box-shadow: var(--bayang); }
.guru-kartu img { width: 104px; height: 104px; border-radius: 50%; object-fit: cover; margin: 0 auto var(--s-4); background: var(--kabut-2); border: 3px solid var(--biru-kabut); }
.guru-kartu h2, .guru-kartu h3 { font-size: 1rem; font-weight: 700; margin: 0 0 var(--s-1); }
.guru-kartu p { margin: 0; font-size: 0.875rem; color: var(--abu-muda); }

/* --------------------------------------------------------------------------
   14. Galeri
   -------------------------------------------------------------------------- */
.galeri { display: grid; gap: var(--s-3); grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); }
.galeri__butir { position: relative; margin: 0; }
.galeri__tombol { display: block; width: 100%; padding: 0; border: 0; cursor: pointer; background: var(--kabut-2); border-radius: var(--r); overflow: hidden; }
.galeri__tombol img { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; transition: transform 320ms cubic-bezier(.2, .6, .3, 1); }
.galeri__tombol:hover img { transform: scale(1.05); }
.galeri__ket { font-size: var(--t--1); color: var(--abu-muda); margin-top: var(--s-2); }

dialog.lampu { border: 0; padding: 0; background: transparent; max-width: min(1100px, 94vw); max-height: 94vh; }
dialog.lampu::backdrop { background: rgba(15, 23, 42, .9); }
.lampu__isi { position: relative; background: var(--tinta); border-radius: var(--r); overflow: hidden; }
.lampu__isi img { width: 100%; max-height: 82vh; object-fit: contain; }
.lampu__ket { color: #CBD5E1; padding: var(--s-3) var(--s-4); margin: 0; font-size: 0.9375rem; }
.lampu__tutup {
  position: absolute; top: var(--s-3); right: var(--s-3);
  width: 44px; height: 44px; border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, .72); color: var(--putih); border: 1px solid rgba(255, 255, 255, .3);
}
.lampu__tutup svg { width: 20px; height: 20px; }
.lampu__tutup:hover { background: var(--biru); }

/* --------------------------------------------------------------------------
   15. Tabel
   -------------------------------------------------------------------------- */
.tabel-bungkus { overflow-x: auto; border: 1px solid var(--garis); border-radius: var(--r); background: var(--putih); }
table.tabel { width: 100%; border-collapse: collapse; min-width: 620px; }
table.tabel caption { text-align: left; padding: var(--s-4); color: var(--abu-muda); font-size: var(--t--1); border-bottom: 1px solid var(--garis); }
table.tabel th, table.tabel td { padding: var(--s-3) var(--s-4); text-align: left; border-bottom: 1px solid var(--garis); vertical-align: middle; }
table.tabel thead th { background: var(--kabut); font-size: var(--t--1); letter-spacing: .04em; text-transform: uppercase; color: var(--abu); font-weight: 700; white-space: nowrap; }
table.tabel tbody tr:last-child td { border-bottom: 0; }
table.tabel tbody tr:hover { background: var(--kabut); }
.sel-nomor { width: 54px; color: var(--abu-muda); }
.sel-aksi { text-align: right; white-space: nowrap; }
.berkas__nama { font-weight: 700; color: var(--tinta); display: block; }
.berkas__ket { font-size: var(--t--1); color: var(--abu-muda); }

.saring { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--s-3); margin-bottom: var(--s-4); }
.saring__lapangan { flex: 1 1 280px; }
.saring__hitung { font-size: var(--t--1); color: var(--abu-muda); margin: 0; padding-bottom: 12px; }

/* --------------------------------------------------------------------------
   16. Formulir
   -------------------------------------------------------------------------- */
.lapangan { margin-bottom: var(--s-4); }
.lapangan label { display: block; font-weight: 700; font-size: 0.9375rem; color: var(--tinta); margin-bottom: 6px; }
.wajib { color: var(--merah); }
.opsional { font-weight: 500; color: var(--abu-muda); }
.bantuan { display: block; font-size: var(--t--1); color: var(--abu-muda); margin-top: 5px; }

.isian, .pilihan, textarea.isian {
  width: 100%; min-height: 48px; padding: var(--s-3) var(--s-4);
  font: inherit; font-size: 1rem; color: var(--tinta); background: var(--putih);
  border: 1px solid var(--garis); border-radius: var(--r-sm);
  transition: border-color var(--gerak), box-shadow var(--gerak);
}
textarea.isian { min-height: 148px; resize: vertical; }
.isian:hover, .pilihan:hover { border-color: #CBD5E1; }
.isian:focus, .pilihan:focus {
  border-color: var(--biru); box-shadow: 0 0 0 4px var(--biru-kabut);
  outline: 2px solid transparent; outline-offset: 2px;
}
.isian:focus-visible, .pilihan:focus-visible { outline-color: var(--biru); }
.isian::placeholder { color: #94A3B8; }
.isian[aria-invalid="true"] { border-color: var(--merah); }
.galat-lapangan { display: block; font-size: var(--t--1); color: var(--merah); font-weight: 600; margin-top: 5px; }
.cari-bungkus { display: flex; gap: var(--s-2); }
.cari-bungkus .isian { flex: 1; }

/* --------------------------------------------------------------------------
   17. Pesan & keadaan kosong
   -------------------------------------------------------------------------- */
.pesan { display: flex; gap: var(--s-3); padding: var(--s-4); border-radius: var(--r); border: 1px solid; margin-bottom: var(--s-5); }
.pesan svg { width: 20px; height: 20px; flex: none; margin-top: 2px; }
.pesan p { margin: 0; }
.pesan--info { background: var(--biru-kabut); border-color: #BFDBFE; color: #1E3A8A; }
.pesan--sukses { background: var(--hijau-muda); border-color: #BBF7D0; color: #14532D; }
.pesan--galat { background: var(--merah-muda); border-color: #FECACA; color: #7F1D1D; }

.kosong { text-align: center; padding: var(--s-8) var(--s-5); border: 1px dashed var(--garis); border-radius: var(--r); background: var(--kabut); }
.kosong svg { width: 40px; height: 40px; color: #CBD5E1; margin-bottom: var(--s-3); }
.kosong h3 { font-size: var(--t-1); margin: 0 0 var(--s-2); }
.kosong p { margin: 0 auto; max-width: 46ch; }
.kosong .tbl { margin-top: var(--s-5); }

/* --------------------------------------------------------------------------
   18. Kepala halaman dalam & remah
   -------------------------------------------------------------------------- */
.kepala-halaman { background: var(--kabut); border-bottom: 1px solid var(--garis); padding-block: var(--s-6) var(--s-7); }
.kepala-halaman h1 { margin: 0; max-width: 22ch; font-size: var(--t-3); }
.kepala-halaman p { margin: var(--s-3) 0 0; max-width: 60ch; }

.remah { font-size: var(--t--1); margin-bottom: var(--s-4); }
.remah ol { display: flex; flex-wrap: wrap; gap: var(--s-2); list-style: none; margin: 0; padding: 0; }
.remah li::after { content: "/"; margin-left: var(--s-2); color: #CBD5E1; }
.remah li:last-child::after { content: ""; }
.remah a { color: var(--abu); text-decoration: none; }
.remah a:hover { color: var(--biru); text-decoration: underline; }
.remah [aria-current="page"] { color: var(--tinta); font-weight: 700; }

/* --------------------------------------------------------------------------
   19. Artikel
   -------------------------------------------------------------------------- */
.tata-artikel { display: grid; gap: var(--s-7); }
@media (min-width: 992px) { .tata-artikel { grid-template-columns: minmax(0, 1fr) 320px; gap: var(--s-8); } }

.artikel { max-width: var(--lebar-baca); font-size: 1.0625rem; line-height: 1.75; }
.artikel h2 { font-size: var(--t-2); margin-top: var(--s-7); }
.artikel h3 { font-size: var(--t-1); margin-top: var(--s-6); }
.artikel img { border-radius: var(--r); margin-block: var(--s-5); }
.artikel blockquote { margin: var(--s-5) 0; padding: var(--s-2) 0 var(--s-2) var(--s-5); border-left: 4px solid var(--kuning); font-size: 1.15rem; color: var(--tinta); }
.artikel__utama { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--r); margin-bottom: var(--s-5); }
.artikel__meta { display: flex; flex-wrap: wrap; gap: var(--s-4); font-size: 0.9375rem; color: var(--abu-muda); margin-bottom: var(--s-5); padding-bottom: var(--s-4); border-bottom: 1px solid var(--garis); }
.artikel__meta span { display: inline-flex; align-items: center; gap: 6px; }
.artikel__meta svg { width: 15px; height: 15px; }

.sisi { display: flex; flex-direction: column; gap: var(--s-5); }
.sisi__blok { background: var(--putih); border: 1px solid var(--garis); border-radius: var(--r); padding: var(--s-5); }
.sisi__judul { font-size: 1rem; font-weight: 700; margin: 0 0 var(--s-4); padding-bottom: var(--s-3); border-bottom: 2px solid var(--biru-muda); }
.sisi__daftar { list-style: none; margin: 0; padding: 0; }
.sisi__daftar li + li { border-top: 1px solid var(--garis); }
.sisi__daftar a { display: flex; justify-content: space-between; gap: var(--s-3); padding: 11px 0; text-decoration: none; color: var(--tinta); font-weight: 600; font-size: 0.9375rem; }
.sisi__daftar a:hover { color: var(--biru); }
.sisi__jumlah { color: var(--abu-muda); font-size: var(--t--1); font-weight: 500; }

.pos-mini { display: grid; grid-template-columns: 72px 1fr; gap: var(--s-3); position: relative; padding-block: var(--s-3); }
.pos-mini + .pos-mini { border-top: 1px solid var(--garis); }
.pos-mini img { width: 72px; height: 58px; object-fit: cover; border-radius: 8px; background: var(--kabut-2); }
.pos-mini__kosong { display: block; width: 72px; height: 58px; background: var(--kabut-2); border-radius: 8px; }
.pos-mini h3 { font-size: 0.9375rem; line-height: 1.35; margin: 0 0 3px; font-weight: 700; }
.pos-mini h3 a { color: inherit; text-decoration: none; }
.pos-mini h3 a::after { content: ""; position: absolute; inset: 0; }
.pos-mini h3 a:hover { color: var(--biru); }
.pos-mini time { font-size: var(--t--1); color: var(--abu-muda); }

/* Komentar */
.komentar { margin-top: var(--s-8); padding-top: var(--s-6); border-top: 1px solid var(--garis); max-width: var(--lebar-baca); }
.komentar__daftar { list-style: none; margin: 0 0 var(--s-6); padding: 0; display: flex; flex-direction: column; gap: var(--s-3); }
.komentar__butir { background: var(--kabut); border-radius: var(--r); padding: var(--s-4); }
.komentar__nama { font-weight: 700; color: var(--tinta); margin: 0 0 var(--s-1); }
.komentar__isi p:last-child { margin-bottom: 0; }
.komentar__form { margin-top: var(--s-6); padding: var(--s-5); background: var(--putih); border: 1px solid var(--garis); border-radius: var(--r); }
.komentar__form h3 { margin-top: 0; }

/* --------------------------------------------------------------------------
   20. Paginasi
   -------------------------------------------------------------------------- */
.paginasi { margin-top: var(--s-7); }
.paginasi ul { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--s-2); list-style: none; margin: 0; padding: 0; }
.paginasi a, .paginasi strong {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; min-height: 44px; padding: 0 var(--s-3);
  border: 1px solid var(--garis); border-radius: var(--r-sm);
  text-decoration: none; color: var(--tinta); font-weight: 700; background: var(--putih);
}
.paginasi a:hover { border-color: var(--biru); color: var(--biru); background: var(--biru-kabut); }
.paginasi strong { background: var(--biru); border-color: var(--biru); color: var(--putih); }

/* --------------------------------------------------------------------------
   21. Kaki situs
   -------------------------------------------------------------------------- */
.kaki { background: var(--tinta); color: #94A3B8; margin-top: var(--s-8); }
.kaki__petak { display: grid; gap: var(--s-6); padding-block: var(--s-7) var(--s-5); }
@media (min-width: 640px) { .kaki__petak { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 992px) { .kaki__petak { grid-template-columns: 1.6fr 1fr 1fr 1.4fr; gap: var(--s-7); } }
.kaki h2 { font-size: var(--t--1); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--putih); margin: 0 0 var(--s-4); }
.kaki ul { list-style: none; margin: 0; padding: 0; }
.kaki li + li { margin-top: 10px; }
.kaki a { color: #CBD5E1; text-decoration: none; font-size: 0.9375rem; }
.kaki a:hover { color: var(--putih); text-decoration: underline; }
.kaki p { color: #94A3B8; font-size: 0.9375rem; }
.kaki__logo { display: flex; align-items: center; gap: var(--s-3); margin-bottom: var(--s-4); }
.kaki__logo img { height: 48px; width: auto; }
.kaki__nama { font-size: 1.05rem; font-weight: 800; color: var(--putih); line-height: 1.2; }
.kaki__kontak { list-style: none; margin: 0 0 var(--s-4); padding: 0; }
.kaki__kontak li { display: flex; gap: var(--s-3); align-items: flex-start; margin-bottom: var(--s-3); }
.kaki__kontak svg { width: 17px; height: 17px; flex: none; margin-top: 4px; color: var(--kuning); }
.kaki__kontak > li > div { color: #CBD5E1; font-size: 0.9375rem; }
.kaki__label { display: block; font-size: var(--t--1); color: #64748B; }
.kaki__bawah { border-top: 1px solid rgba(255, 255, 255, .1); padding-block: var(--s-5); display: flex; flex-wrap: wrap; gap: var(--s-3); justify-content: space-between; font-size: var(--t--1); }
.kaki__bawah p { margin: 0; font-size: var(--t--1); }

.ke-atas {
  position: fixed; right: var(--s-4); bottom: var(--s-4); z-index: 50;
  width: 46px; height: 46px; border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  background: var(--biru); color: var(--putih); border: 0; box-shadow: var(--bayang-2);
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: opacity var(--gerak), transform var(--gerak), visibility var(--gerak), background var(--gerak);
}
.ke-atas.tampak { opacity: 1; visibility: visible; transform: translateY(0); }
.ke-atas:hover { background: var(--biru-tua); }
.ke-atas svg { width: 20px; height: 20px; }

/* --------------------------------------------------------------------------
   22. Peta
   -------------------------------------------------------------------------- */
.peta { border: 1px solid var(--garis); border-radius: var(--r); overflow: hidden; background: var(--kabut-2); }
.peta iframe { display: block; width: 100%; height: 420px; border: 0; }

/* --------------------------------------------------------------------------
   23. Gerak & cetak
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important; animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  .kartu:hover, .entri:hover, .akses__tautan:hover, .tbl:hover { transform: none; }
  .galeri__tombol:hover img { transform: none; }
}

@media print {
  /* Orang tua sering mencetak pengumuman dan jadwal. */
  .bar-atas, .kepala, .kaki, .ke-atas, .lewati, .paginasi, .sisi, .akses, .saring, .ajakan, .hero__aksi { display: none !important; }
  body { background: #fff; color: #000; font-size: 12pt; }
  .kepala-halaman { background: none; padding-block: 0 var(--s-4); border-bottom: 2px solid #000; }
  .entri, .kartu, .tabel-bungkus { border: 1px solid #999; box-shadow: none; break-inside: avoid; }
  .entri__tanggal { background: none; color: #000; border: 1px solid #999; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #555; }
  .bagian { padding-block: var(--s-4); }
}
