:root {
        --bg: #f7f7f4;
        --surface: #ffffff;
        --surface-2: #eff1ec;
        --ink: #182420;
        --ink-soft: #47564f;
        --ink-faint: #71807a;
        --line: #e0e4de;
        --green: #065f46;
        --green-deep: #04382a;
        --green-ink: #ffffff;
        --green-soft: #e4f0ea;
        --grad-green: linear-gradient(120deg, #0c8a5f 0%, #065f46 55%, #04382a 100%);
        --grad-green-hover: linear-gradient(120deg, #065f46 0%, #032e21 100%);
        --grad-panel: linear-gradient(145deg, #07684a 0%, #04382a 78%);
        --gold: #9a7b1e;
        --gold-soft: #f7f0da;
        --header-bg: rgba(255, 255, 255, 0.94);
        --shadow: 0 18px 40px -18px rgba(20, 34, 28, 0.22);
        --radius: 18px;
        color-scheme: light;
      }
      :root[data-theme="dark"] {
        --bg: #0d110f;
        --surface: #151b18;
        --surface-2: #1c2420;
        --ink: #ecf1ed;
        --ink-soft: #b6c2ba;
        --ink-faint: #87968c;
        --line: #26312b;
        --green: #3bb57c;
        --green-deep: #0a2a1e;
        --green-ink: #07120d;
        --green-soft: #1b2d23;
        --grad-green: linear-gradient(120deg, #57cf92 0%, #3bb57c 55%, #2fa065 100%);
        --grad-green-hover: linear-gradient(120deg, #3bb57c 0%, #248554 100%);
        --grad-panel: linear-gradient(145deg, #16402c 0%, #0a2a1e 78%);
        --gold: #d2a944;
        --gold-soft: #2b2512;
        --header-bg: rgba(13, 17, 15, 0.94);
        --shadow: 0 18px 40px -18px rgba(0, 0, 0, 0.6);
        color-scheme: dark;
      }
      * { box-sizing: border-box; }
      html { scroll-behavior: smooth; }
      body {
        margin: 0;
        font-family: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
        background: var(--bg);
        color: var(--ink);
        line-height: 1.65;
        -webkit-font-smoothing: antialiased;
      }
      img { max-width: 100%; display: block; }
      a { color: var(--green); }
      .wrap { max-width: 1180px; margin: 0 auto; padding: 0 20px; }
      section { padding: 76px 0 8px; scroll-margin-top: 84px; }
      h1, h2, h3 { line-height: 1.2; margin: 0; letter-spacing: -0.01em; }
      h2 { font-size: clamp(1.65rem, 3.4vw, 2.3rem); font-weight: 800; }
      h3 { font-size: 1.12rem; font-weight: 700; }
      p { margin: 0; }
      .sec-head { max-width: 720px; margin-bottom: 34px; }
      .sec-head p { color: var(--ink-soft); margin-top: 10px; font-size: 1.03rem; }
      .rule { width: 46px; height: 4px; border-radius: 2px; background: var(--grad-green); margin-bottom: 16px; }

      /* ---------- Header ---------- */
      header.site {
        position: sticky; top: 0; z-index: 50;
        background: var(--header-bg);
        backdrop-filter: blur(10px);
        border-bottom: 1px solid var(--line);
      }
      .header-in { display: flex; align-items: center; gap: 10px; padding: 10px 0; }
      .brand { display: flex; align-items: center; gap: 11px; text-decoration: none; color: var(--ink); margin-right: auto; flex: none; }
      .brand-mark {
        width: 42px; height: 42px; flex: none; border-radius: 11px;
        background: var(--grad-green); display: grid; place-items: center;
      }
      .brand-mark svg { width: 24px; height: 24px; }
      .brand-name { font-weight: 800; font-size: 1.08rem; line-height: 1.15; white-space: nowrap; }
      .brand-sub { font-size: 0.72rem; color: var(--ink-faint); font-weight: 600; white-space: nowrap; }
      nav.main { display: flex; align-items: center; gap: 2px; }
      nav.main a {
        text-decoration: none; color: var(--ink-soft); font-weight: 600; font-size: 0.89rem;
        padding: 8px 7px; border-radius: 10px; white-space: nowrap;
      }
      nav.main a:hover { color: var(--green); background: var(--green-soft); }
      nav.main a.active { color: var(--green); background: var(--green-soft); }
      nav.main a.btn { color: var(--green-ink); }
      nav.main a.btn:hover { color: #fff; background: var(--grad-green-hover); }
      .btn {
        display: inline-flex; align-items: center; gap: 8px;
        background: var(--grad-green); color: var(--green-ink);
        font-weight: 700; font-size: 0.93rem; text-decoration: none;
        padding: 11px 20px; border-radius: 12px; border: 0; cursor: pointer; white-space: nowrap;
        transition: transform 0.15s ease, background 0.15s ease;
      }
      .btn:hover { background: var(--grad-green-hover); color: #fff; }
      .btn.ghost {
        background: transparent; color: var(--green);
        box-shadow: inset 0 0 0 1.5px var(--green);
      }
      .btn.ghost:hover { background: var(--green-soft); color: var(--green); }
      .btn svg { width: 16px; height: 16px; }
      .nav-ppdb { margin-left: 10px; }
      .burger {
        display: none; background: none; border: 0; cursor: pointer; padding: 10px;
        color: var(--ink); border-radius: 10px;
      }
      .burger svg { width: 24px; height: 24px; display: block; }
      @media (max-width: 1200px) {
        nav.main {
          display: none; position: absolute; left: 0; right: 0; top: 100%;
          flex-direction: column; align-items: stretch; gap: 2px;
          background: var(--surface); border-bottom: 1px solid var(--line);
          padding: 12px 20px 18px; box-shadow: var(--shadow);
        }
        nav.main.open { display: flex; }
        nav.main a { padding: 12px 14px; }
        .nav-ppdb { margin: 8px 0 0; justify-content: center; }
        .burger { display: block; }
        .brand-sub { display: none; }
      }

      /* ---------- Hero ---------- */
      .hero { padding: 54px 0 10px; }
      .hero-grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: 44px; align-items: center; }
      @media (max-width: 920px) { .hero-grid { grid-template-columns: 1fr; gap: 30px; } }
      .hero-badge {
        display: inline-flex; align-items: center; gap: 8px;
        background: var(--green-soft); color: var(--green);
        font-weight: 700; font-size: 0.82rem; padding: 7px 14px; border-radius: 999px;
        margin-bottom: 20px;
      }
      .hero-badge .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green); }
      .hero h1 { font-size: clamp(2.1rem, 5vw, 3.4rem); font-weight: 800; }
      .hero h1 em {
        font-style: normal; color: var(--green);
        background: var(--grad-green);
        -webkit-background-clip: text; background-clip: text;
        -webkit-text-fill-color: transparent;
      }
      .hero .lead { color: var(--ink-soft); font-size: 1.08rem; margin: 18px 0 28px; max-width: 540px; }
      .hero-cta { display: flex; flex-wrap: wrap; gap: 12px; }
      .hero-fig {
        background: var(--surface); border: 1px solid var(--line); border-radius: 22px;
        padding: 14px; box-shadow: var(--shadow);
      }
      .hero-fig img { border-radius: 14px; background: var(--surface-2); }
      .hero-fig figcaption {
        display: flex; gap: 8px; align-items: baseline; padding: 12px 6px 4px;
        font-size: 0.88rem; color: var(--ink-soft);
      }
      .hero-fig figcaption strong { color: var(--ink); }
      .stats {
        display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 46px;
      }
      @media (max-width: 720px) { .stats { grid-template-columns: repeat(2, 1fr); } }
      .stat {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 20px 22px;
      }
      .stat b { display: block; font-size: 1.9rem; font-weight: 800; color: var(--green); line-height: 1.1; }
      .stat span { font-size: 0.88rem; color: var(--ink-soft); font-weight: 600; }

      /* ---------- Sambutan ---------- */
      .sambutan {
        margin-top: 76px; background: var(--grad-panel); color: #eaf5ee;
        border-radius: 26px; padding: clamp(28px, 5vw, 52px);
        display: grid; grid-template-columns: auto 1fr; gap: clamp(20px, 4vw, 44px); align-items: start;
      }
      @media (max-width: 720px) { .sambutan { grid-template-columns: 1fr; } }
      .sambutan .quote-mark { font-size: 4.2rem; line-height: 0.8; font-weight: 800; color: #4cb187; }
      .sambutan blockquote { margin: 0; font-size: clamp(1.05rem, 2vw, 1.28rem); line-height: 1.6; font-weight: 500; }
      .sambutan .who { margin-top: 22px; }
      .sambutan .who b { display: block; font-size: 1.02rem; }
      .sambutan .who span { color: #a7c8b4; font-size: 0.9rem; }

      /* ---------- Profil ---------- */
      .profil-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
      @media (max-width: 920px) { .profil-grid { grid-template-columns: 1fr; } }
      .profil-text p { color: var(--ink-soft); margin-bottom: 14px; }
      .profil-text p strong { color: var(--ink); }
      .identitas {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden;
      }
      .identitas h3 { padding: 18px 22px 4px; }
      .identitas dl { margin: 0; padding: 8px 22px 14px; }
      .identitas .row {
        display: grid; grid-template-columns: 150px 1fr; gap: 14px;
        padding: 10px 0; border-bottom: 1px dashed var(--line);
      }
      .identitas .row:last-child { border-bottom: 0; }
      .identitas dt { color: var(--ink-faint); font-size: 0.88rem; font-weight: 600; }
      .identitas dd { margin: 0; font-weight: 600; font-size: 0.95rem; }
      @media (max-width: 480px) { .identitas .row { grid-template-columns: 1fr; gap: 2px; } }

      /* ---------- Visi misi ---------- */
      .visi-band {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: clamp(24px, 4vw, 40px); text-align: center; margin-bottom: 22px;
      }
      .visi-band .lbl { font-size: 0.82rem; font-weight: 800; letter-spacing: 0.14em; color: var(--gold); }
      .visi-band p { font-size: clamp(1.25rem, 2.8vw, 1.8rem); font-weight: 800; line-height: 1.4; margin-top: 12px; }
      .misi-list { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; counter-reset: misi; }
      @media (max-width: 720px) { .misi-list { grid-template-columns: 1fr; } }
      .misi-item {
        display: flex; gap: 16px; background: var(--surface); border: 1px solid var(--line);
        border-radius: var(--radius); padding: 18px 20px; align-items: flex-start;
      }
      .misi-item .no {
        flex: none; width: 34px; height: 34px; border-radius: 10px;
        background: var(--green-soft); color: var(--green);
        display: grid; place-items: center; font-weight: 800; font-size: 0.95rem;
      }
      .misi-item p { color: var(--ink-soft); font-size: 0.97rem; }
      .misi-item p b { color: var(--ink); }

      /* ---------- Program ---------- */
      .program-umum {
        background: var(--surface); border: 1px solid var(--line); border-radius: 22px;
        padding: clamp(26px, 4.5vw, 44px); box-shadow: var(--shadow); margin-bottom: 22px;
      }
      .program-umum .tag {
        display: inline-block; background: var(--grad-green); color: #fff; font-weight: 700;
        font-size: 0.8rem; padding: 6px 13px; border-radius: 999px; margin-bottom: 16px;
      }
      :root[data-theme="dark"] .program-umum .tag { color: #08130c; }
      .program-umum h3 { font-size: clamp(1.35rem, 2.6vw, 1.7rem); font-weight: 800; margin-bottom: 12px; }
      .program-umum > p { color: var(--ink-soft); max-width: 820px; }
      .mapel-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; margin-top: 26px; }
      @media (max-width: 720px) { .mapel-grid { grid-template-columns: 1fr; } }
      .mapel h4 { margin: 0 0 12px; font-size: 0.95rem; font-weight: 800; color: var(--green); }
      .chips { display: flex; flex-wrap: wrap; gap: 8px; }
      .chips span {
        background: var(--surface-2); border: 1px solid var(--line); color: var(--ink-soft);
        font-size: 0.86rem; font-weight: 600; padding: 6px 12px; border-radius: 999px;
      }
      .keterampilan-head { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; margin: 38px 0 18px; }
      .keterampilan-head h3 { font-size: 1.4rem; font-weight: 800; }
      .keterampilan-head p { color: var(--ink-soft); }
      .skill-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
      @media (max-width: 1020px) { .skill-grid { grid-template-columns: repeat(2, 1fr); } }
      @media (max-width: 540px) { .skill-grid { grid-template-columns: 1fr; } }
      .skill {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 24px 22px;
      }
      .skill .ic {
        width: 48px; height: 48px; border-radius: 13px; background: var(--green-soft);
        display: grid; place-items: center; margin-bottom: 16px;
      }
      .skill .ic svg { width: 25px; height: 25px; stroke: var(--green); fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
      .skill h4 { margin: 0 0 4px; font-size: 1.05rem; font-weight: 800; }
      .skill .abbr { color: var(--gold); font-weight: 800; font-size: 0.8rem; letter-spacing: 0.06em; }
      .skill p { color: var(--ink-soft); font-size: 0.92rem; margin-top: 8px; }

      /* ---------- Layanan digital ---------- */
      .layanan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
      @media (max-width: 820px) { .layanan-grid { grid-template-columns: 1fr; } }
      .layanan {
        background: var(--surface); border: 1px solid var(--line); border-radius: 22px;
        padding: clamp(26px, 4vw, 38px); display: flex; flex-direction: column; gap: 12px;
      }
      .layanan .ic {
        width: 56px; height: 56px; border-radius: 16px; background: var(--green-soft);
        display: grid; place-items: center;
      }
      .layanan .ic svg { width: 29px; height: 29px; stroke: var(--green); fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
      .layanan h3 { font-size: 1.35rem; font-weight: 800; }
      .layanan p { color: var(--ink-soft); font-size: 0.98rem; }
      .layanan .url {
        align-self: flex-start; background: var(--surface-2); border: 1px solid var(--line);
        color: var(--ink-soft); font-size: 0.84rem; font-weight: 700;
        padding: 5px 12px; border-radius: 999px;
      }
      .layanan ul { list-style: none; margin: 2px 0 6px; padding: 0; display: grid; gap: 7px; }
      .layanan ul li { display: flex; gap: 10px; align-items: flex-start; color: var(--ink-soft); font-size: 0.93rem; }
      .layanan ul svg { width: 17px; height: 17px; flex: none; stroke: var(--green); fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; margin-top: 4px; }
      .layanan .btn { margin-top: auto; align-self: flex-start; }

      /* ---------- Fasilitas ---------- */
      .fasilitas-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 40px; align-items: start; }
      @media (max-width: 920px) { .fasilitas-grid { grid-template-columns: 1fr; } }
      .denah-fig {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 12px;
      }
      .denah-fig img { border-radius: 10px; background: var(--surface-2); }
      .denah-fig figcaption { font-size: 0.85rem; color: var(--ink-faint); padding: 10px 6px 2px; }
      .fasilitas-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
      .fasilitas-list li {
        display: flex; gap: 13px; align-items: flex-start; padding: 11px 4px;
        border-bottom: 1px dashed var(--line);
      }
      .fasilitas-list li:last-child { border-bottom: 0; }
      .fasilitas-list svg { width: 20px; height: 20px; flex: none; stroke: var(--green); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; margin-top: 3px; }
      .fasilitas-list b { display: block; font-size: 0.98rem; }
      .fasilitas-list span { color: var(--ink-soft); font-size: 0.9rem; }
      .badge-rencana {
        display: inline-block; background: var(--gold-soft); color: var(--gold);
        font-size: 0.72rem; font-weight: 800; padding: 2px 9px; border-radius: 999px; margin-left: 8px;
        vertical-align: 2px;
      }

      /* ---------- Data & diagram ---------- */
      .data-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 16px; align-items: start; }
      @media (max-width: 920px) { .data-grid { grid-template-columns: 1fr; } }
      .chart-card, .data-card {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 24px 22px;
      }
      .chart-card h3, .data-card h3 { font-size: 1.05rem; margin-bottom: 4px; }
      .chart-card .sub, .data-card .sub { color: var(--ink-faint); font-size: 0.86rem; margin-bottom: 14px; }
      .chart-card svg { width: 100%; height: auto; }
      .chart-card .bar-l { fill: var(--green); }
      .chart-card .bar-p { fill: var(--gold); }
      .chart-card .grid { stroke: var(--line); stroke-width: 1; }
      .chart-card .axis-lbl { fill: var(--ink-faint); font-size: 11px; font-weight: 600; }
      .chart-card .val { fill: var(--ink-soft); font-size: 11px; font-weight: 700; }
      .chart-card .yr { fill: var(--ink); font-size: 12px; font-weight: 700; }
      .chart-card .tot { fill: var(--ink-faint); font-size: 11px; font-weight: 600; }
      .chart-card .lg { fill: var(--ink-soft); font-size: 12px; font-weight: 700; }
      .insight-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
      .insight-row span {
        background: var(--green-soft); color: var(--green); font-size: 0.84rem; font-weight: 700;
        padding: 6px 13px; border-radius: 999px;
      }
      table.data-table { width: 100%; border-collapse: collapse; font-size: 0.93rem; }
      table.data-table th, table.data-table td { padding: 9px 8px; text-align: right; border-bottom: 1px solid var(--line); }
      table.data-table th:first-child, table.data-table td:first-child { text-align: left; }
      table.data-table thead th { color: var(--ink-faint); font-size: 0.8rem; font-weight: 700; }
      table.data-table tr.total td { font-weight: 800; color: var(--green); border-bottom: 0; }
      .data-mini { list-style: none; margin: 16px 0 0; padding: 14px 0 0; border-top: 1px dashed var(--line); display: grid; gap: 9px; }
      .data-mini li { display: flex; justify-content: space-between; gap: 12px; font-size: 0.92rem; color: var(--ink-soft); }
      .data-mini li b { color: var(--ink); }
      .src-note { color: var(--ink-faint); font-size: 0.8rem; margin-top: 14px; }

      /* ---------- Berita ---------- */
      .news-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
      @media (max-width: 920px) { .news-grid { grid-template-columns: 1fr; } }
      .news {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 24px 22px; display: flex; flex-direction: column; gap: 10px;
      }
      .news .meta { display: flex; align-items: center; gap: 8px; color: var(--ink-faint); font-size: 0.83rem; font-weight: 600; }
      .news .meta svg { width: 15px; height: 15px; stroke: var(--ink-faint); fill: none; stroke-width: 2; stroke-linecap: round; }
      .news .cat {
        align-self: flex-start; background: var(--green-soft); color: var(--green);
        font-size: 0.74rem; font-weight: 800; padding: 4px 11px; border-radius: 999px;
      }
      .news h3 { font-size: 1.06rem; line-height: 1.4; }
      .news p { color: var(--ink-soft); font-size: 0.93rem; }
      .news .thumb {
        display: block; margin: -24px -22px 4px; aspect-ratio: 16 / 10; overflow: hidden;
        border-radius: var(--radius) var(--radius) 0 0; background: var(--line);
      }
      .news .thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
      .news-hero { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--radius); margin: 0 0 1.2rem; }
      .agenda {
        margin-top: 14px; background: var(--gold-soft); border: 1px solid var(--line);
        border-radius: var(--radius); padding: 20px 24px;
        display: flex; gap: 20px; align-items: center; flex-wrap: wrap;
      }
      .agenda .datebox {
        flex: none; text-align: center; background: var(--surface); border: 1px solid var(--line);
        border-radius: 14px; padding: 10px 18px;
      }
      .agenda .datebox b { display: block; font-size: 1.55rem; line-height: 1; color: var(--gold); }
      .agenda .datebox span { font-size: 0.78rem; font-weight: 700; color: var(--ink-soft); }
      .agenda h3 { font-size: 1.05rem; }
      .agenda p { color: var(--ink-soft); font-size: 0.93rem; }

      /* ---------- Tombol tema ---------- */
      .theme-toggle {
        flex: none; width: 42px; height: 42px; border-radius: 12px; margin-left: 8px;
        border: 1px solid var(--line); background: var(--surface); color: var(--ink-soft);
        display: grid; place-items: center; cursor: pointer;
      }
      .theme-toggle:hover { color: var(--green); background: var(--green-soft); }
      .theme-toggle svg { width: 20px; height: 20px; }
      .theme-toggle .ic-sun { display: none; }
      :root[data-theme="dark"] .theme-toggle .ic-sun { display: block; }
      :root[data-theme="dark"] .theme-toggle .ic-moon { display: none; }

      /* ---------- Perpustakaan ---------- */
      .perpus-grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: 40px; align-items: start; }
      @media (max-width: 920px) { .perpus-grid { grid-template-columns: 1fr; } }
      .perpus-fig {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 12px; margin: 0;
      }
      .perpus-fig img { border-radius: 10px; width: 100%; }
      .perpus-fig figcaption { font-size: 0.85rem; color: var(--ink-faint); padding: 10px 6px 2px; }
      .perpus-body h3 { font-size: 1.3rem; font-weight: 800; margin-bottom: 10px; }
      .perpus-body > p { color: var(--ink-soft); margin-bottom: 14px; }
      .perpus-body ul { list-style: none; margin: 4px 0 20px; padding: 0; display: grid; gap: 8px; }
      .perpus-body ul li { display: flex; gap: 10px; align-items: flex-start; color: var(--ink-soft); font-size: 0.95rem; }
      .perpus-body ul svg { width: 17px; height: 17px; flex: none; stroke: var(--green); fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; margin-top: 4px; }
      .perpus-cta {
        background: var(--green-soft); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 20px 22px; display: flex; flex-wrap: wrap; gap: 14px; align-items: center;
      }
      .perpus-cta .txt { flex: 1 1 240px; }
      .perpus-cta .txt b { display: block; font-size: 1rem; }
      .perpus-cta .txt span { color: var(--ink-soft); font-size: 0.9rem; }
      .perpus-note { color: var(--ink-faint); font-size: 0.86rem; margin-top: 16px; }

      /* ---------- Galeri ---------- */
      .gal-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
      @media (max-width: 920px) { .gal-grid { grid-template-columns: repeat(2, 1fr); } }
      @media (max-width: 540px) { .gal-grid { grid-template-columns: 1fr; } }
      .gal-item {
        padding: 0; font: inherit; color: inherit; text-align: left; cursor: pointer;
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        overflow: hidden; display: block; width: 100%;
      }
      .gal-item:hover { border-color: var(--green); }
      .gal-item:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
      .gal-item img { width: 100%; height: 232px; object-fit: cover; background: var(--surface-2); }
      @media (max-width: 540px) { .gal-item img { height: 210px; } }
      .gal-cap { display: block; padding: 14px 16px 16px; }
      .gal-cap b { display: block; font-size: 0.98rem; margin-bottom: 2px; }
      .gal-cap small { color: var(--ink-soft); font-size: 0.86rem; line-height: 1.5; display: block; }

      /* ---------- Lightbox galeri ---------- */
      .lightbox {
        position: fixed; inset: 0; z-index: 200; padding: 22px;
        background: rgba(7, 17, 11, 0.93);
        display: flex; align-items: center; justify-content: center;
      }
      .lightbox[hidden] { display: none; }
      .lightbox figure { margin: 0; max-width: 920px; width: 100%; text-align: center; }
      .lightbox img {
        max-width: 100%; max-height: 76vh; width: auto; margin: 0 auto;
        border-radius: 12px; background: #12241a;
      }
      .lightbox figcaption { color: #dcefe2; font-size: 0.95rem; margin-top: 14px; }
      .lightbox figcaption b { display: block; font-size: 1.05rem; color: #ffffff; }
      .lb-btn {
        position: absolute; border: 0; cursor: pointer; color: #ffffff;
        background: rgba(255, 255, 255, 0.12); border-radius: 50%;
        width: 46px; height: 46px; display: grid; place-items: center;
      }
      .lb-btn:hover { background: rgba(255, 255, 255, 0.24); }
      .lb-btn svg { width: 22px; height: 22px; }
      .lb-close { top: 18px; right: 18px; }
      .lb-prev { left: 14px; top: 50%; transform: translateY(-50%); }
      .lb-next { right: 14px; top: 50%; transform: translateY(-50%); }
      @media (max-width: 540px) { .lb-prev { left: 6px; } .lb-next { right: 6px; } }

      /* ---------- PPDB & aduan ---------- */
      .ppdb-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
      @media (max-width: 820px) { .ppdb-grid { grid-template-columns: 1fr; } }
      .panel {
        background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
        padding: 26px 24px;
      }
      .panel h3 { font-size: 1.1rem; margin-bottom: 16px; }
      ol.steps { list-style: none; counter-reset: step; margin: 0; padding: 0; display: grid; gap: 16px; }
      ol.steps li { display: flex; gap: 14px; counter-increment: step; }
      ol.steps li::before {
        content: counter(step); flex: none; width: 30px; height: 30px; border-radius: 50%;
        background: var(--grad-green); color: #fff; font-weight: 800; font-size: 0.9rem;
        display: grid; place-items: center;
      }
      :root[data-theme="dark"] ol.steps li::before { color: #08130c; }
      ol.steps b { display: block; font-size: 0.97rem; }
      ol.steps span { color: var(--ink-soft); font-size: 0.9rem; }
      ul.berkas { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
      ul.berkas li { display: flex; gap: 11px; align-items: flex-start; color: var(--ink-soft); font-size: 0.94rem; }
      ul.berkas svg { width: 18px; height: 18px; flex: none; stroke: var(--green); fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; margin-top: 3px; }
      .aduan-grid { display: grid; grid-template-columns: 1fr 1.25fr; gap: 40px; align-items: start; }
      @media (max-width: 920px) { .aduan-grid { grid-template-columns: 1fr; } }
      .aduan-info p { color: var(--ink-soft); margin-bottom: 14px; }
      .aduan-info ul { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 12px; }
      .aduan-info li { display: flex; gap: 12px; align-items: flex-start; color: var(--ink-soft); font-size: 0.95rem; }
      .aduan-info li svg { width: 20px; height: 20px; flex: none; stroke: var(--green); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; margin-top: 2px; }
      .aduan-info li b { color: var(--ink); }
      .form-card {
        background: var(--surface); border: 1px solid var(--line); border-radius: 22px;
        padding: clamp(24px, 4vw, 34px); box-shadow: var(--shadow);
      }
      .form-card h3 { font-size: 1.15rem; margin-bottom: 18px; }
      .field { margin-bottom: 15px; }
      .field label { display: block; font-weight: 700; font-size: 0.9rem; margin-bottom: 6px; }
      .field input, .field select, .field textarea {
        width: 100%; font: inherit; font-size: 0.95rem; color: var(--ink);
        background: var(--bg); border: 1px solid var(--line); border-radius: 11px;
        padding: 11px 13px;
      }
      .field textarea { min-height: 110px; resize: vertical; }
      .field input:focus, .field select:focus, .field textarea:focus {
        outline: 2px solid var(--green); outline-offset: 1px; border-color: transparent;
      }
      .form-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
      .form-status { margin-top: 14px; font-size: 0.9rem; color: var(--green); font-weight: 600; display: none; }
      .form-status.show { display: block; }

      /* ---------- PPDB & footer ---------- */
      .ppdb {
        background: var(--grad-panel); color: #eaf5ee; border-radius: 26px;
        padding: clamp(30px, 5vw, 52px); display: flex; gap: 26px; align-items: center;
        justify-content: space-between; flex-wrap: wrap;
      }
      .ppdb h2 { color: #fff; }
      .ppdb p { color: #d2ecdd; margin-top: 8px; max-width: 560px; }
      .ppdb .btn { background: #fff; color: var(--green-deep); flex: none; }
      .ppdb .btn:hover { background: var(--gold-soft); color: var(--green-deep); }
      footer.site { margin-top: 76px; border-top: 1px solid var(--line); background: var(--surface); }
      .footer-grid { display: grid; grid-template-columns: 1.35fr 1fr 1fr 1fr; gap: 34px; padding: 46px 0 34px; }
      @media (max-width: 1020px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
      @media (max-width: 540px) { .footer-grid { grid-template-columns: 1fr; } }
      footer.site h4 { margin: 0 0 14px; font-size: 0.95rem; font-weight: 800; }
      footer.site p, footer.site li { color: var(--ink-soft); font-size: 0.92rem; }
      footer.site ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
      footer.site a { color: var(--ink-soft); text-decoration: none; font-weight: 600; }
      footer.site a:hover { color: var(--green); }
      .footer-brand { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 14px; }
      .copyright {
        border-top: 1px solid var(--line); padding: 16px 0 20px;
        display: flex; flex-wrap: wrap; gap: 6px 20px; justify-content: space-between;
        color: var(--ink-faint); font-size: 0.82rem;
      }
      .reveal { opacity: 0; transform: translateY(14px); transition: opacity 0.55s ease, transform 0.55s ease; }
      .reveal.in { opacity: 1; transform: none; }
      @media (prefers-reduced-motion: reduce) {
        html { scroll-behavior: auto; }
        .reveal { opacity: 1; transform: none; transition: none; }
      }
