/*
  Pride Picks global foundation
  Shared theme, responsive shell, spacing, card, button, nav, and auth-state rules.
  This file is intentionally foundation-first: page-specific designs should opt into
  these utilities as each screen is rebuilt.
*/

:root {
  --pp-bg: #05030a;
  --pp-surface: #0b0812;
  --pp-card: rgba(12, 9, 18, 0.86);
  --pp-card-strong: rgba(18, 14, 25, 0.92);
  --pp-gold: #d8a941;
  --pp-gold-soft: #f4d47c;
  --pp-pink: #ff2fa7;
  --pp-purple: #8b35ff;
  --pp-text: #f7f3ea;
  --pp-muted: #b8b4c7;
  --pp-border-gold: rgba(216, 169, 65, 0.35);
  --pp-border-pink: rgba(255, 47, 167, 0.35);
  --pp-border-card: rgba(216, 169, 65, 0.28);
  --pp-shadow-card: 0 18px 42px rgba(0, 0, 0, 0.42);
  --pp-glow-pink: 0 0 24px rgba(255, 47, 167, 0.2);
  --pp-glow-gold: 0 0 22px rgba(216, 169, 65, 0.18);

  --pp-font-display: "Cinzel", "Cormorant Garamond", "Playfair Display", Georgia, serif;
  --pp-font-ui: "Inter", "Montserrat", "Poppins", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --pp-font-button: "Montserrat", "Poppins", system-ui, sans-serif;

  --pp-space-1: 4px;
  --pp-space-2: 8px;
  --pp-space-3: 12px;
  --pp-space-4: 14px;
  --pp-space-5: 16px;
  --pp-space-6: 20px;
  --pp-space-7: 24px;
  --pp-space-8: 32px;
  --pp-space-9: 40px;
  --pp-space-10: 48px;
  --pp-space-11: 64px;
  --pp-space-12: 80px;

  --pp-mobile-min: 375px;
  --pp-mobile-ideal: 393px;
  --pp-mobile-max: 430px;
  --pp-tablet-max: 760px;
  --pp-website-max: 1200px;
  --pp-website-wide: 1280px;

  --pp-page-pad-mobile: 14px;
  --pp-page-pad-tablet: 24px;
  --pp-page-pad-desktop: 32px;
  --pp-nav-height: 78px;
  --pp-bottom-nav-clearance: calc(96px + env(safe-area-inset-bottom));
  --pp-auth-shell-mobile-max: 740px;
  --pp-auth-shell-desktop-max: 1180px;
  --pp-auth-shell-desktop-gutter: 48px;
  --pp-auth-shell-desktop-top: 32px;
  --pp-auth-content-max: 1120px;
  --pp-auth-compact-content-max: 430px;
  --pp-auth-bottom-nav-height: 74px;
  --pp-auth-bottom-clearance: calc(104px + env(safe-area-inset-bottom));

  --pp-radius-card-mobile: 20px;
  --pp-radius-card: 22px;
  --pp-radius-button: 16px;
}

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

html {
  min-width: var(--pp-mobile-min);
  background: var(--pp-bg);
}

body {
  color: var(--pp-text);
  background:
    radial-gradient(circle at 12% 6%, rgba(255, 47, 167, 0.14), transparent 22rem),
    radial-gradient(circle at 88% 4%, rgba(139, 53, 255, 0.14), transparent 28rem),
    var(--pp-bg);
  font-family: var(--pp-font-ui);
}

img,
video,
canvas,
svg {
  max-width: 100%;
}

button,
input,
select,
textarea {
  font: inherit;
}

button,
a,
[role="button"] {
  -webkit-tap-highlight-color: transparent;
}

button {
  min-height: 44px;
}

.app-shell-mobile {
  width: min(100vw, var(--pp-mobile-max));
  min-height: 100dvh;
  margin: 0 auto;
  background: var(--pp-bg);
  overflow-x: hidden;
}

.app-shell-tablet {
  width: min(100vw, var(--pp-tablet-max));
  min-height: 100dvh;
  margin: 0 auto;
  background: var(--pp-bg);
  overflow-x: hidden;
}

.website-shell {
  width: 100%;
  min-height: 100dvh;
  background: var(--pp-bg);
  overflow-x: hidden;
}

.website-container {
  width: min(calc(100% - 32px), var(--pp-website-max));
  margin: 0 auto;
}

.pp-page {
  width: 100%;
  padding: var(--pp-page-pad-mobile);
}

.pp-page.has-bottom-nav {
  padding-bottom: var(--pp-bottom-nav-clearance);
}

.pp-section-stack {
  display: grid;
  gap: var(--pp-space-6);
}

.pp-card-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--pp-space-3);
}

.pp-card {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--pp-border-card);
  border-radius: var(--pp-radius-card-mobile);
  background: linear-gradient(180deg, rgba(18, 14, 25, 0.92), rgba(5, 3, 10, 0.96));
  box-shadow: var(--pp-shadow-card), var(--pp-glow-gold);
  color: var(--pp-text);
}

.pp-card.is-active {
  border-color: rgba(255, 47, 167, 0.45);
  box-shadow: var(--pp-shadow-card), var(--pp-glow-pink);
}

.pp-photo-card {
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.08), rgba(5, 3, 10, 0.84)),
    var(--pp-photo, linear-gradient(135deg, rgba(216, 169, 65, 0.18), rgba(139, 53, 255, 0.14))),
    var(--pp-card);
  background-position: center;
  background-size: cover;
}

.pp-photo-card::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(5, 3, 10, 0.08), rgba(5, 3, 10, 0.78));
}

.pp-photo-card > * {
  position: relative;
  z-index: 1;
}

.pp-display-title {
  color: var(--pp-text);
  font-family: var(--pp-font-display);
  font-weight: 800;
  letter-spacing: 0;
  line-height: 0.95;
}

.pp-hero-word {
  font-family: var(--pp-font-display);
  font-size: clamp(48px, 12vw, 72px);
  font-weight: 800;
  line-height: 0.88;
}

.pp-page-title {
  font-family: var(--pp-font-display);
  font-size: clamp(34px, 9vw, 48px);
  line-height: 1;
}

.pp-section-title {
  font-family: var(--pp-font-display);
  font-size: clamp(18px, 5.2vw, 24px);
  line-height: 1.05;
}

.pp-card-title {
  font-family: var(--pp-font-display);
  font-size: clamp(16px, 4.8vw, 22px);
  line-height: 1.05;
}

.pp-body-text {
  color: var(--pp-text);
  font-family: var(--pp-font-ui);
  font-size: clamp(14px, 3.8vw, 16px);
  line-height: 1.45;
}

.pp-meta-text {
  color: var(--pp-muted);
  font-size: clamp(11px, 3vw, 13px);
  line-height: 1.35;
}

.pp-button {
  min-height: 52px;
  display: inline-grid;
  place-items: center;
  gap: var(--pp-space-2);
  padding: 0 var(--pp-space-6);
  border: 1px solid transparent;
  border-radius: var(--pp-radius-button);
  font-family: var(--pp-font-button);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
}

.pp-button-primary {
  color: #070308;
  border-color: rgba(255, 246, 198, 0.72);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.56), rgba(255, 255, 255, 0.04)),
    linear-gradient(94deg, #8b5d12 0%, #f4d47c 22%, #d8a941 48%, #fff2b3 68%, #ff2fa7 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.66), 0 12px 28px rgba(0, 0, 0, 0.38), var(--pp-glow-gold);
}

.pp-button-secondary {
  color: var(--pp-gold-soft);
  border-color: var(--pp-border-gold);
  background:
    linear-gradient(90deg, rgba(255, 47, 167, 0.1), rgba(139, 53, 255, 0.08)),
    rgba(5, 3, 10, 0.74);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04), var(--pp-glow-pink);
}

.pp-button:disabled,
.pp-button[aria-disabled="true"],
.pp-button.is-disabled {
  cursor: not-allowed;
  opacity: 0.56;
  filter: saturate(0.7);
}

.pp-bottom-nav {
  position: fixed;
  left: 50%;
  right: auto;
  bottom: 0;
  z-index: 50;
  width: min(100vw, var(--pp-mobile-max));
  min-height: calc(var(--pp-nav-height) + env(safe-area-inset-bottom));
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0;
  padding: 7px 8px calc(8px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(0, 0, 0, 0.98);
  box-shadow: 0 -18px 42px rgba(0, 0, 0, 0.82);
  backdrop-filter: blur(18px);
}

.pp-bottom-nav button,
.pp-bottom-nav a {
  min-width: 0;
  min-height: 58px;
  display: grid;
  place-items: center;
  color: rgba(247, 243, 234, 0.62);
  text-align: center;
  text-decoration: none;
}

.pp-bottom-nav .is-active,
.pp-bottom-nav [aria-current="page"] {
  color: var(--pp-pink);
  text-shadow: 0 0 14px rgba(255, 47, 167, 0.46);
}

/* Authenticated app shell owner
   This section owns the existing live shell classes used by Categories,
   Houses, Court (#live), Leaderboard (#board), and Profile. */
html,
body {
  height: auto !important;
  min-height: 100% !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
}

.shell {
  width: 100% !important;
  height: auto !important;
  min-height: 100dvh !important;
  display: block !important;
  overflow: visible !important;
}

.phone:not(.auth-modal-open):not(.signup-success-open) {
  width: min(100%, var(--pp-auth-shell-mobile-max)) !important;
  max-width: var(--pp-auth-shell-mobile-max) !important;
  height: auto !important;
  min-height: 100dvh !important;
  margin: 0 auto !important;
  overflow-x: clip !important;
  overflow-y: visible !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: auto !important;
  scrollbar-gutter: stable both-edges;
}

.phone .site-footer {
  display: none;
}

.phone:not(.auth-modal-open):not(.signup-success-open) .topbar {
  margin-bottom: var(--pp-space-4);
}

.phone:not(.auth-modal-open):not(.signup-success-open) .screen {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  padding-bottom: var(--pp-auth-bottom-clearance);
  overflow-x: clip !important;
  overflow-y: visible !important;
}

.phone .tab-row,
.phone.locked .tab-row,
.phone:not(.locked) .tab-row {
  position: fixed;
  left: 50%;
  right: auto;
  bottom: 0;
  top: auto;
  z-index: 9999;
  width: min(100vw, var(--pp-auth-shell-mobile-max));
  max-width: var(--pp-auth-shell-mobile-max);
  height: calc(var(--pp-auth-bottom-nav-height) + env(safe-area-inset-bottom));
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  padding: 6px max(8px, env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-right));
  transform: translateX(-50%);
  overflow: hidden;
  border: 0;
  border-top: 1px solid rgba(246, 215, 122, 0.2);
  border-radius: 0;
  background: rgba(0, 0, 0, 0.98);
  box-shadow: 0 -18px 42px rgba(0, 0, 0, 0.82), 0 0 20px rgba(255, 45, 170, 0.1);
  backdrop-filter: blur(18px);
}

.phone .tab-row .tab,
.phone.locked .tab-row .tab,
.phone:not(.locked) .tab-row .tab {
  min-width: 0;
  width: auto;
  min-height: 58px;
  height: 58px;
  display: grid;
  grid-template-rows: 1fr;
  place-items: center;
  align-content: center;
  justify-items: center;
  gap: 3px;
  padding: 4px 1px;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  color: transparent;
  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.98) 0%,
      rgba(246, 215, 122, 0.9) 18%,
      rgba(255, 79, 216, 0.66) 34%,
      rgba(255, 255, 255, 0.9) 58%,
      rgba(0, 212, 255, 0.54) 74%,
      rgba(246, 215, 122, 0.95) 100%
    ),
    linear-gradient(105deg, #d4af37 0%, #fff5c8 18%, #ff4fd8 36%, #7a3cff 50%, #00d4ff 68%, #ffffff 82%, #f6d77a 100%);
  background-blend-mode: screen, normal;
  background-size: 100% 100%, 240% 100%;
  background-position: center, 0% 50%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-stroke: 0.2px rgba(255, 244, 206, 0.28);
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.82)) drop-shadow(0 0 8px rgba(255, 79, 216, 0.18));
  font-family: "Bodoni Moda", "Bodoni 72 Poster", Didot, "Playfair Display", Georgia, serif;
  font-size: clamp(0.58rem, 2.35vw, 0.72rem);
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0;
  text-align: center;
  text-transform: none;
  white-space: nowrap;
}

.phone .tab-row .tab::before,
.phone .tab-row .tab::after,
.phone.locked .tab-row .tab::before,
.phone.locked .tab-row .tab::after,
.phone:not(.locked) .tab-row .tab::before,
.phone:not(.locked) .tab-row .tab::after {
  content: none;
  display: none;
}

.phone .tab-row .tab.active,
.phone.locked .tab-row .tab.active,
.phone:not(.locked) .tab-row .tab.active {
  color: transparent;
  background-position: center, 78% 50%;
  text-shadow: 0 0 14px rgba(255, 45, 170, 0.46);
  filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.88)) drop-shadow(0 0 12px rgba(255, 79, 216, 0.34));
}

.categories-shell {
  width: min(100%, var(--pp-auth-content-max));
  margin-inline: auto;
}

.houses-shell,
.leaderboard-shell,
.profile-screen-shell {
  width: min(100%, var(--pp-auth-compact-content-max));
  margin-inline: auto;
}

.phone.on-houses {
  height: auto !important;
  min-height: 100dvh !important;
  max-height: none !important;
  overflow-x: clip !important;
  overflow-y: visible !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: auto !important;
}

.phone.on-houses .houses-screen.active {
  height: auto !important;
  min-height: 100dvh !important;
  max-height: none !important;
  overflow-x: clip !important;
  overflow-y: visible !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: auto !important;
}

.phone.auth-modal-open .tab-row {
  display: none;
}

@media (min-width: 960px) {
  body {
    background:
      radial-gradient(circle at 10% 20%, rgba(255, 43, 189, 0.2), transparent 28rem),
      radial-gradient(circle at 88% 12%, rgba(82, 62, 255, 0.18), transparent 28rem),
      linear-gradient(135deg, #050006, #11051e 52%, #020104);
  }

  .shell {
    padding: var(--pp-auth-shell-desktop-top) 24px 0;
  }

  .phone:not(.auth-modal-open):not(.signup-success-open) {
    width: min(calc(100vw - var(--pp-auth-shell-desktop-gutter)), var(--pp-auth-shell-desktop-max));
    max-width: var(--pp-auth-shell-desktop-max);
    min-height: calc(100dvh - var(--pp-auth-shell-desktop-top));
    border-radius: 26px 26px 0 0;
  }

  .phone .tab-row,
  .phone.locked .tab-row,
  .phone:not(.locked) .tab-row {
    width: min(calc(100vw - var(--pp-auth-shell-desktop-gutter)), var(--pp-auth-shell-desktop-max));
    max-width: var(--pp-auth-shell-desktop-max);
  }

  .phone .screen.active,
  .phone .login-splash-content,
  .phone .social-home {
    max-width: 100%;
  }

  .phone .login-live-stats,
  .phone .app-live-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.pp-auth-prompt {
  display: grid;
  gap: var(--pp-space-4);
  padding: var(--pp-space-6);
  border: 1px solid var(--pp-border-pink);
  border-radius: var(--pp-radius-card);
  background:
    radial-gradient(circle at 18% 10%, rgba(255, 47, 167, 0.16), transparent 10rem),
    linear-gradient(180deg, rgba(18, 14, 25, 0.94), rgba(5, 3, 10, 0.96));
  box-shadow: var(--pp-shadow-card), var(--pp-glow-pink);
}

.pp-auth-prompt p {
  margin: 0;
  color: var(--pp-text);
}

.pp-auth-actions {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--pp-space-3);
}

.pp-logged-out-only {
  display: block;
}

.pp-logged-in-only {
  display: none;
}

.is-authenticated .pp-logged-out-only {
  display: none;
}

.is-authenticated .pp-logged-in-only {
  display: block;
}

@media (min-width: 768px) {
  .pp-page {
    padding: var(--pp-page-pad-tablet);
  }

  .pp-page.has-bottom-nav {
    padding-bottom: 110px;
  }

  .pp-card-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--pp-space-5);
  }

  .pp-auth-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .pp-bottom-nav {
    width: min(100vw, var(--pp-tablet-max));
  }
}

@media (min-width: 1024px) {
  .website-container {
    width: min(calc(100% - 64px), var(--pp-website-max));
  }

  .pp-page {
    padding: var(--pp-page-pad-desktop);
  }

  .pp-page.pp-website-page {
    padding-top: var(--pp-space-10);
    padding-bottom: var(--pp-space-10);
  }

  .pp-section-stack {
    gap: var(--pp-space-10);
  }

  .pp-card-grid {
    gap: var(--pp-space-6);
  }

  .pp-bottom-nav {
    width: min(calc(100vw - 48px), var(--pp-tablet-max));
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

/*
  Foundation route and access contract for upcoming page rebuilds:
  - Logged out: /, /login, /join, /landing.
  - Logged in starts at /categories.
  - /picks and old Home should route to /categories after login.
  - Logged-in bottom nav labels: Categories, Houses, Court, Leaderboard, Profile.
  - Logged-out protected actions should show:
    "Join Pride Picks to make your pick before the category closes."
*/
