/* ═══════════════════════════════════════════════════════════════════
   Ukurra — Design System
   Tema terang: biru muda & putih. Animasi seperlunya saja.
   ═══════════════════════════════════════════════════════════════════ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  /* ── surface ── */
  --bg:#F2F6FB;
  --surface:#FFFFFF;
  --surface-2:#F7FAFD;
  --surface-3:#E9F1F9;
  --line:#DCE6F2;
  --line-2:#BFD3E8;

  /* ── ink ── */
  --text:#17293C;
  --dim:#64788F;
  --dim-2:#8A9BB0;

  /* ── accent ── */
  --accent:#0EA5E9;
  --accent-d:#0284C7;
  --accent-soft:#7DD3FC;
  --accent-wash:#EFF8FE;
  --blue:#3B82F6;

  /* ── semantic ── */
  --ok:#10B981;
  --warn:#F59E0B;
  --danger:#EF4444;

  /* ── mission colors ── */
  --poly:#0EA5E9;
  --path:#F59E0B;

  /* ── shape ── */
  --r-sm:8px;
  --r-md:12px;
  --r-lg:16px;
  --r-xl:22px;
  --r-pill:999px;

  --shadow-sm:0 1px 3px rgba(23,41,60,.07), 0 1px 2px rgba(23,41,60,.04);
  --shadow-md:0 4px 14px rgba(23,41,60,.08);
  --shadow-lg:0 12px 36px rgba(23,41,60,.13);

  --ease:cubic-bezier(.22,1,.36,1);

  --font:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --mono:'JetBrains Mono','SF Mono',ui-monospace,monospace;

  --sat:env(safe-area-inset-top,0px);
  --sab:env(safe-area-inset-bottom,0px);
}

html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--font);
  background:var(--bg);
  color:var(--text);
  font-size:14px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}

::selection{background:rgba(14,165,233,.18)}

a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
img,svg{display:block;max-width:100%}

*::-webkit-scrollbar{width:6px;height:6px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}

:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}

/* ═══ PRIMITIVES ═══════════════════════════════════════════════════ */

.mono-label{
  font-family:var(--mono);
  font-size:11px;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent-d);
}

.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
}

/* ── buttons ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 22px;border-radius:var(--r-pill);
  font-size:14px;font-weight:700;
  white-space:nowrap;
  transition:background .18s, border-color .18s, color .18s, box-shadow .18s;
}
.btn:active{transform:translateY(1px)}
.btn svg{flex-shrink:0}

.btn-accent{background:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(14,165,233,.25)}
.btn-accent:hover{background:var(--accent-d);box-shadow:0 4px 14px rgba(14,165,233,.32)}

.btn-ghost{background:var(--surface);border:1.5px solid var(--line-2);color:var(--text)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent-d);background:var(--accent-wash)}

.btn-sm{padding:9px 16px;font-size:12.5px}
.btn-lg{padding:14px 28px;font-size:15px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}

/* ── chip / badge ── */
.chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 12px;border-radius:var(--r-pill);
  background:var(--surface);border:1px solid var(--line);
  font-size:11.5px;font-weight:600;color:var(--dim);
}
.chip-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0}
a.chip,button.chip{cursor:pointer;transition:border-color .18s, color .18s}
a.chip:hover,button.chip:hover{border-color:var(--accent);color:var(--accent-d)}

.badge{
  display:inline-flex;align-items:center;
  padding:3px 8px;border-radius:6px;
  font-family:var(--mono);font-size:10px;font-weight:600;
}
.badge-kmz{background:var(--accent-wash);color:var(--accent-d)}
.badge-json{background:#ECFDF5;color:#047857}
.badge-soon{background:#FFFBEB;color:#B45309}

/* ═══ ANIMATION ════════════════════════════════════════════════════
   Hanya satu: muncul perlahan saat masuk layar. Sekali jalan.
   ═══════════════════════════════════════════════════════════════════ */
[data-reveal]{
  opacity:0;transform:translateY(14px);
  transition:opacity .5s var(--ease), transform .5s var(--ease);
  transition-delay:var(--rd,0ms);
}
[data-reveal].in{opacity:1;transform:none}

@keyframes spin{to{transform:rotate(360deg)}}
.spin{animation:spin .8s linear infinite}

@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ═══ MODAL ════════════════════════════════════════════════════════ */
.modal-scrim{
  position:fixed;inset:0;z-index:4000;
  background:rgba(23,41,60,.42);
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  opacity:0;pointer-events:none;
  transition:opacity .22s ease;
}
.modal-scrim.open{opacity:1;pointer-events:auto}
.modal-card{
  position:relative;
  width:100%;max-width:400px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r-xl);
  padding:28px 26px 24px;
  box-shadow:var(--shadow-lg);
  max-height:calc(100dvh - 40px);
  overflow-y:auto;
}
.modal-x{
  position:absolute;top:14px;right:14px;
  width:30px;height:30px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--dim-2);background:var(--surface-3);
  transition:color .18s, background .18s;
}
.modal-x:hover{background:var(--line);color:var(--text)}

/* ═══ TOAST ════════════════════════════════════════════════════════ */
#toast{
  position:fixed;left:50%;bottom:calc(26px + var(--sab));
  transform:translateX(-50%) translateY(14px);
  max-width:min(92vw,420px);
  padding:12px 20px;border-radius:var(--r-pill);
  background:var(--text);color:#fff;
  box-shadow:var(--shadow-lg);
  font-size:13px;font-weight:600;
  opacity:0;pointer-events:none;z-index:9000;
  transition:opacity .22s ease, transform .22s var(--ease);
}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.ok{background:#047857}
#toast.warn{background:#B45309}
#toast.err{background:#B91C1C}

/* ═══ OAUTH BUTTONS ════════════════════════════════════════════════ */
.oauth-btn{
  display:flex;align-items:center;justify-content:center;gap:11px;
  width:100%;padding:12px 18px;
  border-radius:var(--r-md);
  border:1.5px solid var(--line-2);
  background:var(--surface);
  font-size:14px;font-weight:700;color:var(--text);
  transition:background .18s, border-color .18s;
}
.oauth-btn:hover{background:var(--surface-2);border-color:var(--accent)}
.oauth-btn img,.oauth-btn svg{width:19px;height:19px}


/* ═══ KARTU PAKET LANGGANAN ════════════════════════════════════════ */
.up-plans{display:flex;flex-direction:column;gap:8px}
.up-plan{
  display:block;width:100%;text-align:left;
  padding:13px 15px;border-radius:var(--r-md);
  background:var(--surface-2);border:1.5px solid var(--line);
  transition:background .16s, border-color .16s;
}
.up-plan:hover{border-color:var(--line-2)}
.up-plan.active{background:var(--accent-wash);border-color:var(--accent)}
.up-nama{
  display:flex;align-items:center;gap:8px;
  font-size:12.5px;font-weight:700;color:var(--dim);
}
.up-plan.active .up-nama{color:var(--accent-d)}
.up-nama em{
  font-style:normal;font-size:10px;font-weight:700;
  padding:2px 7px;border-radius:5px;
  background:var(--ok);color:#fff;
}
.up-harga{display:block;font-size:19px;font-weight:800;margin-top:4px}
.up-per{display:block;font-size:11.5px;color:var(--dim-2)}

.up-manfaat{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:7px}
.up-manfaat li{
  display:flex;align-items:flex-start;gap:9px;
  font-size:12.5px;line-height:1.5;color:var(--dim);
}
.up-manfaat svg{color:var(--ok);flex-shrink:0;margin-top:3px}

/* ═══ REDUCED MOTION ═══════════════════════════════════════════════ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    transition-duration:.01ms!important;
  }
  [data-reveal]{opacity:1;transform:none}
}

/* ═══ SAKELAR BAHASA ═══════════════════════════════════════════════ */
.lang-switch{
  display:inline-flex;align-items:center;flex-shrink:0;
  padding:2px;border-radius:var(--r-pill);
  background:var(--surface-2);border:1px solid var(--line);
}
.lang-switch button{
  padding:4px 10px;border-radius:var(--r-pill);
  font-family:var(--mono);font-size:11px;font-weight:600;
  letter-spacing:.04em;color:var(--dim-2);
  transition:background .16s, color .16s;
}
.lang-switch button:hover{color:var(--text)}
.lang-switch button.active{
  background:var(--surface);color:var(--accent-d);
  box-shadow:var(--shadow-sm);
}
