@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Inter:wght@300;400;500;600;700&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;600;700&display=swap");

/* ---- Theme tokens (mirrors @dashtag/ui/theme.css) ---- */
:root {
  --background: oklch(1 0 0);
  --foreground: oklch(0.141 0.005 285.823);
  --card: oklch(1 0 0);
  --card-foreground: oklch(0.141 0.005 285.823);
  --popover: oklch(1 0 0);
  --popover-foreground: oklch(0.141 0.005 285.823);
  --primary: oklch(0.852 0.199 91.936);
  --primary-foreground: oklch(0.421 0.095 57.708);
  --secondary: oklch(0.967 0.001 286.375);
  --secondary-foreground: oklch(0.21 0.006 285.885);
  --muted: oklch(0.967 0.001 286.375);
  --muted-foreground: oklch(0.552 0.016 285.938);
  --accent: oklch(0.967 0.001 286.375);
  --accent-foreground: oklch(0.21 0.006 285.885);
  --destructive: oklch(0.577 0.245 27.325);
  --border: oklch(0.92 0.004 286.32);
  --input: oklch(0.92 0.004 286.32);
  --ring: oklch(0.705 0.015 286.067);
}

.dark {
  --background: oklch(0.141 0.005 285.823);
  --foreground: oklch(0.985 0 0);
  --card: oklch(0.21 0.006 285.885);
  --card-foreground: oklch(0.985 0 0);
  --popover: oklch(0.21 0.006 285.885);
  --popover-foreground: oklch(0.985 0 0);
  --primary: oklch(0.795 0.184 86.047);
  --primary-foreground: oklch(0.421 0.095 57.708);
  --secondary: oklch(0.274 0.006 286.033);
  --secondary-foreground: oklch(0.985 0 0);
  --muted: oklch(0.274 0.006 286.033);
  --muted-foreground: oklch(0.705 0.015 286.067);
  --accent: oklch(0.274 0.006 286.033);
  --accent-foreground: oklch(0.985 0 0);
  --destructive: oklch(0.704 0.191 22.216);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 15%);
  --ring: oklch(0.552 0.016 285.938);
}

* {
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}
html {
  scroll-behavior: smooth;
}
body {
  font-family: "Roboto", "Inter", system-ui, sans-serif;
  color: var(--foreground);
}

/* ---- Light mode text overrides ---- */
html:not(.dark) .text-white {
  color: var(--foreground);
}
html:not(.dark) .hover\:text-white:hover {
  color: var(--foreground);
}

/* Keep white text on primary/orange backgrounds */
html:not(.dark) [class*="bg-dashtag-orange"] .text-white,
html:not(.dark) [class*="bg-dashtag-orange"].text-white,
html:not(.dark) .bg-dashtag-orange .text-white,
html:not(.dark) .bg-dashtag-orange.text-white {
  color: #ffffff !important;
}

html:not(.dark) .text-neutral-500 {
  color: oklch(0.552 0.016 285.938);
}
html:not(.dark) .text-neutral-600 {
  color: oklch(0.421 0.095 57.708);
}

/* ---- Logo visibility ---- */
.logo-light {
  display: none;
}
.logo-dark {
  display: inline;
}
html:not(.dark) .logo-light {
  display: inline;
}
html:not(.dark) .logo-dark {
  display: none;
}

/* ---- Theme transition ---- */
*,
*::before,
*::after {
  transition:
    background-color 0.3s ease,
    color 0.3s ease,
    border-color 0.3s ease,
    box-shadow 0.3s ease;
}

/* ---- Mockup controls always readable (stays dark) ---- */
.mockup-controls {
  background: oklch(0.21 0.006 285.885 / 90%) !important;
  border-color: oklch(1 0 0 / 10%) !important;
  color: oklch(0.985 0 0);
}
.mockup-controls .text-white {
  color: oklch(0.985 0 0) !important;
}
.mockup-controls .text-dashtag-dark-muted {
  color: oklch(0.705 0.015 286.067) !important;
}
.mockup-controls .hover\:text-white:hover {
  color: oklch(0.985 0 0) !important;
}

/* ---- Gradients ---- */
.dark .gradient-fade {
  background: linear-gradient(
    to bottom,
    transparent 0%,
    oklch(0.141 0.005 285.823 / 80%) 60%,
    oklch(0.141 0.005 285.823) 100%
  );
}
html:not(.dark) .gradient-fade {
  background: linear-gradient(
    to bottom,
    transparent 0%,
    oklch(1 0 0 / 80%) 60%,
    oklch(1 0 0) 100%
  );
}
.dark .gradient-fade-right {
  background: linear-gradient(
    to right,
    transparent 0%,
    oklch(0.141 0.005 285.823) 100%
  );
}
html:not(.dark) .gradient-fade-right {
  background: linear-gradient(to right, transparent 0%, oklch(1 0 0) 100%);
}
.dark .hero-gradient {
  background: linear-gradient(
    135deg,
    oklch(0.141 0.005 285.823) 0%,
    oklch(0.21 0.006 285.885) 50%,
    oklch(0.141 0.005 285.823) 100%
  );
}
html:not(.dark) .hero-gradient {
  background: linear-gradient(
    135deg,
    oklch(1 0 0) 0%,
    oklch(0.967 0.001 286.375) 50%,
    oklch(1 0 0) 100%
  );
}

.card-glow:hover {
  box-shadow: 0 0 30px oklch(0.795 0.184 86.047 / 10%);
}
.passport-ring {
  box-shadow:
    0 0 0 2px oklch(0.795 0.184 86.047 / 30%),
    0 0 20px oklch(0.795 0.184 86.047 / 10%);
}
.stat-glow {
  background: linear-gradient(
    135deg,
    oklch(0.795 0.184 86.047 / 8%) 0%,
    transparent 100%
  );
}

.scroll-container {
  overflow-x: auto;
  -ms-overflow-style: none;
  scrollbar-width: none;
}
.scroll-container::-webkit-scrollbar {
  display: none;
}

@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}
.shimmer {
  background: linear-gradient(
    90deg,
    transparent,
    oklch(0.795 0.184 86.047 / 5%),
    transparent
  );
  background-size: 200% 100%;
  animation: shimmer 3s ease-in-out infinite;
}

@keyframes float-subtle {
  0%,
  100% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-4px);
  }
}
.float-subtle {
  animation: float-subtle 4s ease-in-out infinite;
}

@keyframes pulse-ring {
  0% {
    box-shadow: 0 0 0 0 oklch(0.795 0.184 86.047 / 30%);
  }
  70% {
    box-shadow: 0 0 0 8px oklch(0.795 0.184 86.047 / 0%);
  }
  100% {
    box-shadow: 0 0 0 0 oklch(0.795 0.184 86.047 / 0%);
  }
}
.pulse-ring {
  animation: pulse-ring 2s ease-out infinite;
}

.progress-bar {
  transition: width 1s ease-out;
}

/* Smooth transition for view toggle */
.view-transition {
  transition:
    opacity 0.3s ease,
    transform 0.3s ease;
}

/* ---- Site Navigation (auto-injected by mockup.js) ---- */
.sn {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  height: 36px;
  background: oklch(0.12 0.005 285.823);
  border-bottom: 1px solid oklch(1 0 0 / 8%);
  font-size: 12px;
  color: oklch(0.705 0.015 286.067);
}
.sn-inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1.5rem;
  height: 100%;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.sn-logo {
  display: flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  color: oklch(0.985 0 0);
  margin-right: 1rem;
  flex-shrink: 0;
}
.sn-logo-img {
  height: 14px;
}
.sn-logo-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  opacity: 0.5;
}
.sn-links {
  display: flex;
  align-items: center;
  gap: 2px;
  flex: 1;
}
.sn-group {
  position: relative;
  padding-bottom: 4px;
  margin-bottom: -4px;
}
.sn-trigger {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 4px 10px;
  border-radius: 6px;
  color: oklch(0.705 0.015 286.067);
  cursor: pointer;
  background: none;
  border: none;
  font-size: 12px;
  font-family: inherit;
  white-space: nowrap;
  transition:
    color 0.15s,
    background-color 0.15s;
}
.sn-trigger:hover,
.sn-trigger--active {
  color: oklch(0.985 0 0);
  background: oklch(1 0 0 / 6%);
}
.sn-chevron {
  width: 12px;
  height: 12px;
  opacity: 0.5;
}
.sn-dropdown {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 180px;
  background: oklch(0.16 0.005 285.823);
  border: 1px solid oklch(1 0 0 / 10%);
  border-radius: 10px;
  padding: 4px;
  box-shadow: 0 8px 32px oklch(0 0 0 / 50%);
}
.sn-group:hover .sn-dropdown {
  display: block;
}
.sn-item {
  display: block;
  padding: 7px 12px;
  border-radius: 6px;
  color: oklch(0.705 0.015 286.067);
  text-decoration: none;
  transition:
    color 0.15s,
    background-color 0.15s;
  white-space: nowrap;
}
.sn-item:hover {
  color: oklch(0.985 0 0);
  background: oklch(1 0 0 / 6%);
}
.sn-item--active {
  color: oklch(0.985 0 0);
  background: oklch(1 0 0 / 10%);
}
.sn-actions {
  display: flex;
  align-items: center;
  margin-left: auto;
  flex-shrink: 0;
}
.sn-theme {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: none;
  border: none;
  color: oklch(0.705 0.015 286.067);
  cursor: pointer;
  transition: color 0.15s;
}
.sn-theme:hover {
  color: oklch(0.985 0 0);
}

/* Site nav always stays dark regardless of theme */
.sn,
.sn * {
  transition: none !important;
}
.sn .icon-sun,
.sn .icon-moon {
  display: inline;
}
.sn .icon-sun.hidden,
.sn .icon-moon.hidden {
  display: none;
}
html:not(.dark) .sn .text-white,
html:not(.dark) .sn .hover\:text-white:hover {
  color: inherit;
}
