/* Shared look of the Dreams Media "particle space" pages (home and course details): black space, a fixed canvas
   behind everything (space.js), big type, a top bar with one glowing button, and lists of big link names. */
:root {
  --bg: #030308;
  --ink: #f5f6fb;
  --muted: #9aa0b8;
  --line: rgba(255, 255, 255, .12);
  --blue: #5b9dff;
  --amber: #ffb347;
  --hot: #ff7a1a;
  --wa: #25d366;
  --font-display: "Anton", "Readex Pro", sans-serif;
  --font-title: "Readex Pro", "IBM Plex Sans Arabic", sans-serif;
  --font-thin: "Outfit", "Readex Pro", sans-serif;
  --font-body: "IBM Plex Sans Arabic", "Segoe UI", Tahoma, sans-serif;
  --pad: clamp(18px, 5vw, 64px);
  --ease: cubic-bezier(.16, 1, .3, 1);
  color-scheme: dark;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--font-body); font-size: 17px; line-height: 1.7; overflow-x: hidden; }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--amber); outline-offset: 4px; border-radius: 6px; }
.en { direction: ltr; unicode-bidi: isolate; }
#space { position: fixed; inset: 0; width: 100%; height: 100%; display: block; z-index: 0; touch-action: pan-y; }
main, .nav, footer { position: relative; z-index: 1; }

/* ---------- top bar ---------- */
.nav { position: fixed; top: 0; inset-inline: 0; z-index: 10; display: flex; align-items: center; gap: 22px; padding: calc(14px + env(safe-area-inset-top, 0px)) var(--pad) 14px; transition: background .3s, backdrop-filter .3s; }
.nav.solid { background: rgba(3, 3, 8, .72); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; font-family: var(--font-display); font-size: 1.25rem; letter-spacing: .04em; white-space: nowrap; }
.brand svg { width: 22px; height: 22px; color: var(--amber); filter: drop-shadow(0 0 8px rgba(255, 179, 71, .7)); }
.nav .links { display: flex; gap: 22px; margin-inline-start: auto; font-size: .92rem; color: var(--muted); }
.nav .links a { text-decoration: none; transition: color .2s; }
.nav .links a:hover { color: var(--ink); }
/* ---------- buttons: every button is a glowing gradient pill with a shine sweeping across it ----------
   glow-btn  orange → pink → violet (the main action)
   alt-btn   blue → violet → cyan
   ghost     indigo → purple; WhatsApp ones ([data-wa]) green → teal
   soon-btn  dusk grey-violet, "coming soon": it only shakes */
.glow-btn, .alt-btn, .ghost, .soon-btn {
  --g: linear-gradient(100deg, #ff7a1a, #ff4f8b 55%, #7c5cff); --glow-a: rgba(255, 90, 90, .35); --glow-b: rgba(124, 92, 255, .35);
  position: relative; display: inline-flex; align-items: center; gap: 10px; text-decoration: none; font-family: var(--font-title); font-weight: 700; font-size: 1rem; color: #fff;
  width: 210px; height: 52px; justify-content: center; padding: 0 16px; border: 0; border-radius: 999px; white-space: nowrap; cursor: pointer; isolation: isolate; overflow: hidden; background: var(--g);
  box-shadow: 0 0 0 1px rgba(255,255,255,.25) inset, 0 10px 30px var(--glow-a), 0 0 40px var(--glow-b); transition: transform .3s var(--ease), box-shadow .3s;
}
.glow-btn::after, .alt-btn::after, .ghost::after, .soon-btn::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(100deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%); transform: translateX(-120%); animation: shine 3.2s ease-in-out infinite; }
.glow-btn:hover, .alt-btn:hover, .ghost:hover, .soon-btn:hover { transform: translateY(-2px) scale(1.03); }
.glow-btn svg, .alt-btn svg, .ghost svg, .soon-btn svg { width: 18px; height: 18px; color: #fff; }
.glow-btn .ping, .alt-btn .ping { position: absolute; inset-inline-end: 10px; top: 8px; width: 8px; height: 8px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 0 rgba(255,255,255,.7); animation: ping 1.8s ease-out infinite; }
/* one size for every button: only the colours and the words differ */
.alt-btn { --g: linear-gradient(100deg, #2f7bff, #7c5cff 55%, #22d3ee); --glow-a: rgba(59, 130, 246, .35); --glow-b: rgba(34, 211, 238, .3); }
.alt-btn::after { animation-delay: .8s; }
.ghost { --g: linear-gradient(100deg, #4f46e5, #a855f7 55%, #ec4899); --glow-a: rgba(99, 102, 241, .35); --glow-b: rgba(168, 85, 247, .3); }
.ghost::after { animation-delay: 1.6s; }
.ghost[data-wa] { --g: linear-gradient(100deg, #25d366, #10b981 55%, #0ea5e9); --glow-a: rgba(37, 211, 102, .35); --glow-b: rgba(14, 165, 233, .3); }
.soon-btn { --g: linear-gradient(100deg, #3b3355, #5b4b8a 55%, #2a2f45); --glow-a: rgba(91, 75, 138, .3); --glow-b: rgba(91, 157, 255, .15); color: #e4e6f5; direction: ltr; }
.soon-btn::after { animation-delay: 2.2s; }
.soon-btn.nope { animation: nope .45s ease; }
@media (max-width: 760px) {
  .nav { gap: 8px; }
  .nav .links { display: none; }
  .nav .glow-btn, .nav .alt-btn { margin-inline-start: auto; }
  .nav .alt-btn + .glow-btn { margin-inline-start: 0; }
  /* phones: still one size for all, a little smaller and without the icons so two fit beside the logo */
  .glow-btn, .alt-btn, .ghost, .soon-btn { width: 144px; height: 44px; padding: 0 8px; font-size: .88rem; gap: 6px; }
  .glow-btn svg, .alt-btn svg, .ghost svg, .soon-btn svg { display: none; }
}

@media (max-width: 440px) { .brand .word { display: none; } }
/* ---------- sections ---------- */
main > section { position: relative; min-height: 100vh; min-height: 100svh; padding: 110px var(--pad) 60px; display: flex; flex-direction: column; }
.label { font-family: var(--font-thin); font-weight: 500; font-size: .78rem; letter-spacing: .32em; text-transform: uppercase; color: var(--muted); direction: ltr; }
.rv { opacity: 0; transform: translateY(28px); transition: opacity 1s var(--ease), transform 1.1s var(--ease); transition-delay: var(--d, 0s); }
.rv.in { opacity: 1; transform: none; }
.hint { position: absolute; bottom: calc(22px + env(safe-area-inset-bottom, 0px)); inset-inline-start: 50%; transform: translateX(50%); display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: .78rem; color: var(--muted); text-decoration: none; }
.hint i { width: 1px; height: 46px; background: linear-gradient(var(--muted), transparent); animation: drop 1.8s ease-in-out infinite; transform-origin: top; }
.try { position: absolute; top: 120px; inset-inline-end: var(--pad); font-size: .8rem; color: var(--muted); display: flex; align-items: center; gap: 8px; }
.try svg { width: 18px; height: 18px; animation: wiggle 2.4s ease-in-out infinite; }
@media (max-width: 760px) { .try { display: none; } }
.sec-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 24px; }
.sec-head h2 { margin: 0; font-family: var(--font-title); font-weight: 700; font-size: clamp(2.4rem, 1.4rem + 4vw, 5rem); line-height: 1.05; }
.sec-head p { margin: 0; color: var(--muted); max-width: 24em; }

/* ---------- big link names, like a team list ---------- */
.names { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--line); }
.names li { border-bottom: 1px solid var(--line); }
.names li:not(:nth-child(3n)) { border-inline-end: 1px solid var(--line); }
.name { position: relative; display: flex; flex-direction: column; gap: 2px; padding: 26px 22px 24px; text-decoration: none; overflow: hidden; height: 100%; }
a.name::before { content: ""; position: absolute; inset: 0; background: radial-gradient(400px circle at var(--mx, 50%) var(--my, 50%), rgba(91, 157, 255, .16), transparent 45%); opacity: 0; transition: opacity .3s; }
a.name:hover::before { opacity: 1; }
.name b { position: relative; font-family: var(--font-title); font-weight: 700; font-size: clamp(1.7rem, 1.1rem + 1.9vw, 2.9rem); line-height: 1.15; transition: color .3s, transform .4s var(--ease); }
a.name:hover b { background: linear-gradient(90deg, var(--blue), var(--amber)); -webkit-background-clip: text; background-clip: text; color: transparent; transform: translateX(-6px); }
.name small { position: relative; color: var(--muted); font-size: .88rem; }
.name .go { position: absolute; top: 22px; inset-inline-end: 20px; width: 22px; height: 22px; color: var(--muted); transition: transform .4s var(--ease), color .3s; }
a.name:hover .go { transform: translate(-4px, -4px); color: var(--amber); }
.name .tag { position: relative; align-self: flex-start; margin-top: 8px; font-family: var(--font-thin); font-size: .72rem; letter-spacing: .2em; color: var(--amber); direction: ltr; }
@media (max-width: 900px) { .names { grid-template-columns: repeat(2, minmax(0, 1fr)); } .names li:not(:nth-child(3n)) { border-inline-end: 0; } .names li:nth-child(odd) { border-inline-end: 1px solid var(--line); } }
/* phones: two tidy columns of smaller names instead of one long list */
@media (max-width: 560px) {
  .name { padding: 18px 12px 16px; }
  .name b { font-size: 1.22rem; line-height: 1.35; }
  .name small { font-size: .76rem; line-height: 1.5; }
  .name .go { top: 14px; inset-inline-end: 10px; width: 16px; height: 16px; }
  .name .tag { font-size: .62rem; margin-top: 6px; }
}

/* ---------- the music button (music.js), round, in the corner ---------- */
.music-btn { position: fixed; z-index: 30; left: max(16px, env(safe-area-inset-left, 0px)); bottom: calc(16px + env(safe-area-inset-bottom, 0px)); width: 50px; height: 50px; border-radius: 50%; display: grid; place-items: center; padding: 0; cursor: pointer; color: #fff; border: 1px solid transparent; background: linear-gradient(rgba(10, 10, 22, .85), rgba(10, 10, 22, .85)) padding-box, linear-gradient(135deg, var(--blue), #b9a6ff, var(--amber)) border-box; box-shadow: 0 8px 24px rgba(0,0,0,.45), 0 0 22px rgba(124, 92, 255, .3); transition: transform .3s var(--ease); }
.music-btn:hover { transform: scale(1.08); }
.music-btn .note { width: 20px; height: 20px; opacity: .55; }
.music-btn .eq { display: none; align-items: flex-end; gap: 3px; height: 18px; }
.music-btn .eq i { width: 3px; border-radius: 2px; background: linear-gradient(var(--amber), var(--blue)); animation: eq 1.1s ease-in-out infinite; }
.music-btn .eq i:nth-child(2) { animation-delay: -.35s; }
.music-btn .eq i:nth-child(3) { animation-delay: -.7s; }
.music-btn .eq i:nth-child(4) { animation-delay: -.2s; }
.music-btn.on .note { display: none; }
.music-btn.on .eq { display: flex; }
@keyframes eq { 0%, 100% { height: 4px; } 50% { height: 18px; } }

/* ---------- a huge thin number or line, and the page footer ---------- */
.big-num { display: inline-block; margin-top: 12px; font-family: var(--font-thin); font-weight: 200; font-size: clamp(2.8rem, 1rem + 9vw, 9rem); line-height: 1; letter-spacing: -.02em; text-decoration: none; direction: ltr; transition: color .3s; }
a.big-num:hover { color: var(--amber); }
.foot { position: relative; z-index: 1; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; padding: 22px var(--pad) calc(26px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--line); color: var(--muted); font-size: .85rem; }
.foot a { color: var(--ink); text-decoration: none; }
.foot a:hover { color: var(--amber); }
.foot nav { display: flex; flex-wrap: wrap; gap: 18px; }

@keyframes shine { 0%, 55% { transform: translateX(-120%); } 85%, 100% { transform: translateX(120%); } }
@keyframes ping { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,.7); } 100% { box-shadow: 0 0 0 10px rgba(255,255,255,0); } }
@keyframes drop { 0% { transform: scaleY(0); } 50% { transform: scaleY(1); } 100% { transform: scaleY(1); opacity: 0; } }
@keyframes nope { 20% { transform: translateX(-8px); } 40% { transform: translateX(7px); } 60% { transform: translateX(-5px); } 80% { transform: translateX(3px); } }
@keyframes wiggle { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(-6px, 3px); } 75% { transform: translate(6px, -3px); } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } html { scroll-behavior: auto; } .rv { opacity: 1; transform: none; } }

/* ---------- phones (kept last so it wins over the rules above) ----------
   text sits on top of the points, so it gets a dark halo; the scroll hint goes; the corner music button is a bit
   smaller and the page ends with room for it */
@media (max-width: 760px) {
  main p, main small, .label { text-shadow: 0 0 14px rgba(3, 3, 8, .95), 0 1px 3px rgba(3, 3, 8, .9); }
  .hint { display: none; }
  .music-btn { width: 44px; height: 44px; left: 12px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }
  body { padding-bottom: 64px; }
}