:root{
  --bg:#ffffff;
  --text:#0f172a;         /* slate-900 */
  --muted:#64748b;        /* slate-500 */
  --border:#e5e7eb;       /* gray-200 */
  --panel:#ffffff;
  --primary:#2563eb;      /* blue-600 */
  --primary-600:#1d4ed8;  /* blue-700 */
  --accent:#14b8a6;       /* teal-500 */
  --badge:#f8fafc;        /* slate-50 */
  --shadow:0 10px 30px rgba(2,6,23,.08);
  --radius:16px;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  color:var(--text);
  background:var(--bg);
  line-height:1.6;
}

/* Containers */
.container{
  width:min(1200px, 92vw);
  margin-inline:auto;
}

/* Buttons */
.btn{
  display:inline-block; border:1px solid transparent; border-radius:12px;
  padding:12px 16px; font-weight:700; text-decoration:none; transition:.2s ease;
}
.btn-primary{ background:var(--primary); color:#fff; }
.btn-primary:hover{ background:var(--primary-600); }
.btn-ghost{ background:#fff; border-color:var(--border); color:var(--text); }
.btn-lg{ padding:14px 22px; font-size:18px; }

/* Header */
.site-header{
  position:sticky; top:0; z-index:50; background:#fff; border-bottom:1px solid var(--border);
  backdrop-filter:saturate(160%) blur(6px);
}
.nav{ display:flex; align-items:center; justify-content:space-between; padding:12px 0; }
.brand{ display:flex; align-items:center; gap:10px; color:inherit; text-decoration:none; }
.brand-logo{ font-size:28px; }
.brand-text small{ display:block; color:var(--muted); margin-top:-2px; }

.nav-links{ display:flex; gap:18px; align-items:center; }
.nav-links a{ color:inherit; text-decoration:none; font-weight:600; }
.nav-toggle{ display:none; background:none; border:0; font-size:22px; }

@media (max-width: 820px){
  .nav-toggle{ display:block; }
  .nav-links{
    position:absolute; right:16px; top:58px; background:#fff; border:1px solid var(--border);
    border-radius:12px; box-shadow:var(--shadow); padding:10px; display:none; flex-direction:column; gap:10px;
    min-width:180px;
  }
  .nav-links.open{ display:flex; }
}

/* Hero */
.hero{
  background: radial-gradient(1200px 600px at 10% -10%, rgba(20,184,166,.15), transparent 50%),
              radial-gradient(1000px 500px at 110% -20%, rgba(37,99,235,.18), transparent 50%);
  padding:56px 0 36px;
}
.hero-grid{ display:grid; grid-template-columns: 1.15fr .85fr; gap:28px; align-items:center; }
@media (max-width: 980px){ .hero-grid{ grid-template-columns: 1fr; } }

.hero h1{ font-size: clamp(28px, 4.2vw, 48px); line-height:1.1; margin:0 0 10px; }
.grad{ background: linear-gradient(135deg, var(--primary), var(--accent)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.lead{ color:var(--muted); margin:0 0 16px; font-size: clamp(16px, 2.3vw, 18px); }
.hero-cta{ display:flex; gap:10px; margin:8px 0 10px; }
.hero-bullets{ margin:12px 0 0; padding-left:20px; color:var(--muted); }

/* Rotator card */
.hero-rotator{
  display:flex;
  flex-direction:column;       /* ← ini yang bikin dot di bawah */
  align-items:center;
  justify-content:center;
  gap:10px;
}
@media (max-width: 980px){
  .hero-grid{ grid-template-columns: 1fr; }  /* jaga layout mobile */
  .rotator-card{ max-width:520px; }          /* nafas lebih lega di HP */
}
.rotator-card{
  width:100%; margin:0 auto;max-width:460px; background:#fff; border:1px solid var(--border); border-radius:var(--radius);
  box-shadow: var(--shadow); padding:18px; min-height:220px; position:relative; overflow:hidden;
}
.rotator-icon{ font-size:36px; margin-bottom:10px; }
.rotator-title{ font-weight:800; font-size:22px; margin-bottom:6px; }
.rotator-desc{ color:var(--muted); }
.rotator-card.fade{ animation: fade .5s ease; }
@keyframes fade{ from{opacity:.3; transform:translateY(4px)} to{opacity:1; transform:none} }

.rotator-dots{ display:flex; gap:6px; margin-top:6px; justify-content:center; }
.rotator-dots button{
  width:9px; height:9px; border-radius:50%; border:0; background:#e2e8f0; cursor:pointer;
}
.rotator-dots button.active{ background:linear-gradient(135deg,var(--primary),var(--accent)); }

/* Sections */
.section{ padding:54px 0; }
.section.alt{ background: #f8fafc; }
.section-title{ margin:0 0 6px; font-size: clamp(22px, 3.4vw, 32px); }
.section-sub{ color:var(--muted); margin:0 0 20px; }

.features-grid{
  display:grid; gap:14px;
  grid-template-columns: repeat(4, 1fr);
}
@media (max-width: 1100px){ .features-grid{ grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 780px){ .features-grid{ grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px){ .features-grid{ grid-template-columns: 1fr; } }

.feature{
  background:var(--panel); border:1px solid var(--border); border-radius:14px; padding:16px;
  box-shadow:0 3px 10px rgba(2,6,23,.04);
}
.feature-ico{ font-size:28px; }
.feature h3{ margin:8px 0 6px; }

/* About */
.about{ display:grid; gap:28px; grid-template-columns: 1.2fr .8fr; align-items:center; }
@media (max-width: 980px){ .about{ grid-template-columns: 1fr; } }
.about-copy .ticks{ margin:14px 0 18px; padding-left:20px; }
.about-card{
  background:#fff; border:1px solid var(--border); border-radius:16px; padding:16px; display:grid; gap:12px;
  grid-template-columns: repeat(3, 1fr); text-align:center; box-shadow: var(--shadow);
}
.stat-num{ font-weight:800; font-size:28px; }
.stat-label{ color:var(--muted); }

/* CTA */
.cta{ text-align:center; background:
      linear-gradient(135deg, rgba(37,99,235,.06), rgba(20,184,166,.06)); }
.cta-wrap{ max-width:800px; margin:auto; }
.cta h2{ margin:0 0 8px; font-size: clamp(22px, 3.2vw, 34px); }
.cta p{ margin:0 0 14px; color:var(--muted); }

/* Footer */
.site-footer{ border-top:1px solid var(--border); padding:22px 0; background:#fff; }
.footer-grid{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.brand-min{ display:flex; align-items:center; gap:8px; }
.muted{ color:var(--muted); }

/* Utilities */
.ticks li{ list-style: disc; }

/* ===== Modal ===== */
.modal{
  position:fixed; inset:0; background:rgba(2,6,23,.45);
  display:none; align-items:center; justify-content:center; padding:18px; z-index:60;
}
.modal.show{ display:flex; }
.modal-card{
  width:min(760px, 96vw); background:#fff; border:1px solid var(--border);
  border-radius:16px; box-shadow: var(--shadow);
}
.modal-header{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 16px; border-bottom:1px solid var(--border);
}
.modal-header h3{ margin:0; font-size:20px; }
.modal-close{
  border:0; background:transparent; font-size:24px; line-height:1; cursor:pointer;
}

.modal-body{ padding:16px; }
.form-grid{
  display:grid; gap:12px; grid-template-columns: 1fr 1fr;
}
.form-full{ grid-column: 1 / -1; }
@media (max-width: 720px){ .form-grid{ grid-template-columns: 1fr; } }

.form-field label{ display:block; font-weight:600; margin-bottom:6px; }
.form-field .req{ color:#ef4444; }
.form-field input,
.form-field textarea,
.form-field select{
  width:100%; border:1px solid var(--border); border-radius:10px;
  padding:10px 12px; font-size:16px; background:#fff;
}
.form-field textarea{ resize:vertical; }

.modal-actions{
  display:flex; gap:10px; justify-content:flex-end; padding:12px 16px; border-top:1px solid var(--border);
}

/* feedback form */
.form-msg{ margin:8px 0; font-weight:600; }
.form-msg.ok{ color:#16a34a; }     /* green-600 */
.form-msg.err{ color:#dc2626; }    /* red-600 */

/* ==== Daftar Sekolah / Domain ==== */
.domain-section{
  margin-top: 1.5rem;
  padding: 1rem 1.2rem;
  border-radius: 16px;
  background: #f9fafb;
  border: 1px solid rgba(148,163,184,.4);
}
.domain-section h3{
  margin: 0 0 .5rem;
  font-size: 1rem;
}
.domain-options{
  display: grid;
  gap: .5rem;
  margin: .5rem 0 1rem;
}
.domain-options label{
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .9rem;
}
.domain-options input[type="radio"]{
  accent-color: #2563eb;
}
.domain-group{
  margin-top: .5rem;
}
.domain-group label{
  display: block;
  font-weight: 600;
  margin-bottom: .25rem;
  font-size: .9rem;
}
.domain-group input{
  width: 100%;
  border-radius: 10px;
  border: 1px solid #d1d5db;
  padding: .5rem .7rem;
  font-size: .9rem;
}
.domain-preview{
  margin-top: .25rem;
  font-family: monospace;
  font-size: .85rem;
  color: #4b5563;
}
.domain-status{
  margin-top: .1rem;
  font-size: .8rem;
}
.domain-status.ok{
  color: #16a34a;
}
.domain-status.bad{
  color: #dc2626;
}
.domain-hint{
  margin-top: .4rem;
  font-size: .8rem;
  color: #6b7280;
}
/* ===== Alert global (success / error) ===== */
.alert {
  border-radius: 12px;
  padding: 12px 14px;
  margin: 1rem 0 1.25rem;
  font-size: 0.9rem;
  line-height: 1.5;
  border: 1px solid transparent;
  background: #eff6ff;
  color: #1d4ed8;
}

.alert strong {
  font-weight: 600;
  display: block;
  margin-bottom: 4px;
}

/* alert sukses (hijau) */
.alert.success {
  background: #ecfdf3;
  border-color: #22c55e55;
  color: #166534;
}

/* alert error (merah) */
.alert.error {
  background: #fef2f2;
  border-color: #ef444455;
  color: #991b1b;
}

/* error kecil di bawah field */
.field-error {
  margin-top: 4px;
  font-size: 0.78rem;
  color: #b91c1c;
}

/* ========== Modal Global ========== */
.modal {
  position: fixed;
  inset: 0;
  display: none;
  align-items: flex-start;     /* modal mulai dari atas, bukan center */
  justify-content: center;
  padding: 16px 0;             /* jarak atas-bawah biar nggak nempel */
  z-index: 50;
  overflow-y: auto;            /* penting: bisa scroll kalau konten tinggi */
}

.modal.show {
  display: flex;
}

.modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(2px);
}

.modal-dialog {
  position: relative;
  background: #ffffff;
  border-radius: 18px;
  max-width: 840px;
  width: 100%;
  margin: 16px;
  padding: 22px 22px 18px;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.18);
}

.modal-demo-dialog {
  max-width: 880px;
}

.modal-close {
  position: absolute;
  top: 10px;
  right: 12px;
  border: none;
  background: transparent;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  color: #64748b;
}

.modal-close:hover {
  color: #0f172a;
}

/* ========== Demo Modal Content ========== */
.demo-modal-title {
  font-size: 22px;
  font-weight: 800;
  margin: 0 0 4px;
  color: #0f172a;
}

.demo-modal-sub {
  margin: 0 0 18px;
  font-size: 14px;
  color: #64748b;
}

.demo-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}

@media (min-width: 640px) {
  .demo-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.demo-card {
  background: #f9fafb;
  border-radius: 14px;
  border: 1px solid #e2e8f0;
  padding: 14px 14px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.demo-label {
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #64748b;
}

.demo-title {
  font-size: 16px;
  font-weight: 700;
  color: #0f172a;
}

.demo-url {
  font-size: 13px;
  color: #2563eb;
  word-break: break-all;
  margin-top: 2px;
  margin-bottom: 4px;
}

.demo-cred {
  font-size: 12px;
  color: #475569;
  line-height: 1.5;
}

.demo-cred code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 12px;
  padding: 2px 4px;
  border-radius: 4px;
  background: #e2e8f0;
}

.demo-actions {
  margin-top: 8px;
}

.btn-sm {
  font-size: 13px;
  padding: 6px 10px;
  border-radius: 999px;
}
