@font-face {
  font-family: "Vazirmatn";
  src: url("/fonts/Vazirmatn-Light.woff2") format("woff2");
  font-weight: 300;
  font-display: swap;
}
@font-face {
  font-family: "Vazirmatn";
  src: url("/fonts/Vazirmatn-Regular.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}

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

html, body {
  margin: 0;
  height: 100%;
  background: #000;
  color: #cfe3ff;
  overflow: hidden;
  font-family: "Vazirmatn", system-ui, sans-serif;
  -webkit-tap-highlight-color: transparent;
  overscroll-behavior: none;
}

#globe {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  cursor: grab;
  touch-action: none;
  outline: none;
  opacity: 0;
  transition: opacity 1.6s ease;
}
#globe.ready { opacity: 1; }
#globe.dragging { cursor: grabbing; }

#loader {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: #000;
  transition: opacity 1.2s ease, visibility 1.2s;
  z-index: 5;
}
#loader.done { opacity: 0; visibility: hidden; pointer-events: none; }
#loader .ring {
  width: 74px;
  height: 74px;
  border-radius: 50%;
  border: 1px solid rgba(120, 180, 255, 0.14);
  border-top-color: rgba(140, 200, 255, 0.9);
  animation: spin 1.1s linear infinite;
  grid-area: 1 / 1;
}
#loader .pct {
  grid-area: 1 / 1;
  font-weight: 300;
  font-size: 15px;
  letter-spacing: 0.04em;
  color: rgba(190, 220, 255, 0.85);
  font-variant-numeric: tabular-nums;
  direction: ltr;
}
@keyframes spin { to { transform: rotate(360deg); } }

#hint {
  position: fixed;
  left: 50%;
  bottom: max(28px, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 9px 20px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 300;
  color: rgba(200, 225, 255, 0.82);
  background: rgba(8, 14, 28, 0.42);
  border: 1px solid rgba(140, 190, 255, 0.12);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 1s ease;
  z-index: 4;
}
#hint.show { opacity: 1; }
#hint i {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(150, 200, 255, 0.6);
}

.nojs { position: fixed; inset: 0; margin: 0; display: grid; place-items: center; }

#credit {
  position: fixed;
  right: 14px;
  bottom: max(10px, env(safe-area-inset-bottom));
  font-size: 10px;
  letter-spacing: 0.03em;
  color: rgba(170, 200, 240, 0.38);
  direction: ltr;
  pointer-events: none;
  z-index: 3;
}
