

:root {
  --orange: #f97316;
  --amber:  #fbbf24;
  --green:  #22c55e;
  --red:    #ef4444;
  --ts:     #a1a1aa;
  --tm:     #71717a;
}



/* ── Keyframes ── */
@keyframes tapPulse   { 0%{transform:scale(0);opacity:.7} 60%{transform:scale(1.8);opacity:.3} 100%{transform:scale(2.5);opacity:0} }
@keyframes orbDrift1  { 0%{transform:translate(0,0) scale(1)} 33%{transform:translate(5%,-8%) scale(1.06)} 66%{transform:translate(-4%,6%) scale(.97)} 100%{transform:translate(8%,-4%) scale(1.03)} }
@keyframes orbDrift2  { 0%{transform:translate(0,0) scale(1)} 33%{transform:translate(8%,-6%) scale(1.04)} 66%{transform:translate(-5%,9%) scale(.96)} 100%{transform:translate(6%,3%) scale(1.07)} }
@keyframes orbDrift3  { 0%{transform:translate(0,0) scale(1)} 50%{transform:translate(-10%,8%) scale(1.08)} 100%{transform:translate(4%,-6%) scale(.94)} }
@keyframes conceptClear {
  0%   { box-shadow: 0 0 0 0 rgba(34,197,94,0); background: rgba(249,115,22,.06); border-color: rgba(249,115,22,.18); }
  30%  { box-shadow: 0 0 0 6px rgba(34,197,94,.25); background: rgba(34,197,94,.18); border-color: rgba(34,197,94,.6); }
  60%  { box-shadow: 0 0 0 10px rgba(34,197,94,.08); }
  100% { box-shadow: 0 0 0 0 rgba(34,197,94,0); background: rgba(34,197,94,.06); border-color: rgba(34,197,94,.2); }
}
@keyframes iconPop {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.5); }
  70%  { transform: scale(.9); }
  100% { transform: scale(1); }
}
@keyframes cardGlow {
  0%   { box-shadow: 0 12px 40px rgba(0,0,0,.5), 0 0 0 1px rgba(249,115,22,.06); }
  40%  { box-shadow: 0 12px 40px rgba(0,0,0,.5), 0 0 0 2px rgba(34,197,94,.5), 0 0 24px rgba(34,197,94,.15); }
  100% { box-shadow: 0 12px 40px rgba(0,0,0,.5), 0 0 0 1px rgba(249,115,22,.06); }
}
@keyframes progPulse {
  0%   { opacity: 1; }
  50%  { opacity: .5; }
  100% { opacity: 1; }
}

/* ── Stage ── */
.sk-stage {
  position: relative;
  width: 100%; height: 100vh;
  overflow: hidden;
  background: #09090d;
}

/* ── Orbs ── */
.hh-orb {
  position: absolute; border-radius: 50%;
  filter: blur(60px); pointer-events: none; z-index: 0;
  will-change: transform;
}
.hh-orb-1 {
  width: 70%; height: 60%; top: -15%; left: 15%;
  background: radial-gradient(ellipse at 50% 50%, rgba(249,115,22,.26) 0%, transparent 70%);
  animation: orbDrift1 18s ease-in-out infinite alternate;
}
.hh-orb-2 {
  width: 55%; height: 55%; bottom: -10%; left: -10%;
  background: radial-gradient(ellipse at 60% 40%, rgba(194,65,12,.18) 0%, transparent 70%);
  animation: orbDrift2 22s ease-in-out infinite alternate;
}
.hh-orb-3 {
  width: 40%; height: 45%; top: 30%; right: -5%;
  background: radial-gradient(ellipse at 40% 60%, rgba(251,191,36,.10) 0%, transparent 65%);
  animation: orbDrift3 15s ease-in-out infinite alternate;
}
.hh-grid {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background-image:
    linear-gradient(rgba(249,115,22,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(249,115,22,.035) 1px, transparent 1px);
  background-size: 32px 32px;
  mask-image: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.4) 0%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.4) 0%, transparent 75%);
}

/* ── Phone ── */
.hh-phone-wrap {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  z-index: 10;
}
/* On mobile: shift phone left so phone+card reads as one centered unit */
@media (max-width: 1023px) {
  .hh-phone-wrap { left: calc(50% - 44px); }
}
.hh-phone {
  width: min(52vw, 190px);
  height: min(78vh, 420px);
  border-radius: 26px;
  border: 2px solid rgba(255,255,255,.12);
  background: #0a0a0f;
  position: relative; overflow: hidden; z-index: 1;
  box-shadow: 0 20px 60px rgba(0,0,0,.7), 0 0 0 1px rgba(255,255,255,.06), 0 0 80px rgba(249,115,22,.08);
}
.hh-phone::before {
  content: ''; position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 54px; height: 15px; background: #0a0a0f;
  border-radius: 0 0 11px 11px; z-index: 30;
  border: 1px solid rgba(255,255,255,.06); border-top: none;
}

/* ── Scroll strip ── */
.sk-scroll {
  position: absolute; inset: 0;
  transition: transform 0.8s cubic-bezier(0.16,1,0.3,1);
}
.sk-screen { width: 100%; flex-shrink: 0; overflow: hidden; position: relative; }

/* ── Video screens ── */
.sk-vid-screen { background: #0a0808; }
.sk-vid-screen.v2 { background: #080a12; }
/* LPM thumbnail fallback — always rendered, video covers it when playing */
.sk-vid-thumb {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
  z-index: 0;
}
.sk-vid-screen video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
  z-index: 1;
}
/* v2 video - same rules as v1 */

.sk-vid-badge {
  position: absolute; top: 20px; left: 12px; z-index: 3;
  font-family: 'JetBrains Mono', monospace;
  font-size: .38rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: 1px;
  color: var(--orange); background: rgba(249,115,22,.14);
  border: 1px solid rgba(249,115,22,.25);
  padding: 3px 7px; border-radius: 20px;
}
.sk-vid-actions {
  position: absolute; right: 9px; bottom: 52px; z-index: 3;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.sk-vid-act {
  width: 28px; height: 28px; border-radius: 50%;
  background: rgba(255,255,255,.1);
  display: flex; align-items: center; justify-content: center; font-size: .65rem;
}
.sk-vid-overlay {
  position: absolute; inset: 0; z-index: 2;
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 12px;
  background: linear-gradient(to top, rgba(0,0,0,.75) 0%, transparent 50%);
}
.sk-vid-title  { font-size:.62rem; font-weight:600; color:#fff; text-shadow:0 1px 4px rgba(0,0,0,.6); margin-bottom:5px; }
.sk-vid-prog   { height:2.5px; background:rgba(255,255,255,.15); border-radius:2px; overflow:hidden; }
.sk-vid-prog-fill { height:100%; width:0%; background:var(--orange); border-radius:2px; transition:width 3.5s linear; }

/* ── Quiz screens ── */
.sk-quiz-screen {
  background: linear-gradient(180deg,#1a1a1f 0%,#0e0e12 100%);
  display: flex; flex-direction: column;
  padding: 40px 14px 14px;
}
.sk-quiz-label {
  font-family:'JetBrains Mono',monospace;
  font-size:.46rem; text-transform:uppercase; letter-spacing:1.5px;
  color:var(--orange); margin-bottom:8px;
}
.sk-quiz-q { font-size:.78rem; font-weight:600; color:#fff; line-height:1.45; margin-bottom:16px; }
.sk-quiz-opts { display:flex; flex-direction:column; gap:7px; flex:1; justify-content:center; }
.sk-opt {
  padding:10px 12px; border-radius:9px;
  font-size:.68rem; color:rgba(255,255,255,.55);
  border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03);
  display:flex; justify-content:space-between; align-items:center;
  transition:all .4s ease;
}
.sk-opt .sk-check { opacity:0; transition:opacity .3s; font-size:.68rem; }
.sk-opt.correct   { border-color:rgba(34,197,94,.4); background:rgba(34,197,94,.1); color:var(--green); font-weight:600; }
.sk-opt.correct .sk-check { opacity:1; color:var(--green); }
.sk-opt.wrong     { border-color:rgba(239,68,68,.25); background:rgba(239,68,68,.05); color:rgba(255,255,255,.25); }
.sk-opt.wrong .sk-check   { opacity:1; color:var(--red); }

/* ── Floating concept card ── */
.sk-float {
  position: absolute;
  z-index: 25;
  width: 148px;
  background: rgba(10,10,18,.90);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.08);
  padding: 12px 12px 10px;
  box-shadow: 0 12px 40px rgba(0,0,0,.5), 0 0 0 1px rgba(249,115,22,.06);
  transition: box-shadow .6s ease;
}
@media (max-width:1023px) {
  .sk-float { left: calc(50% + min(26vw,95px) - 60px); top: 50%; transform: translateY(-50%); }
}
@media (min-width:1024px) {
  .sk-float { left: calc(50% + 108px); top: 50%; transform: translateY(-50%); }
}

.sk-float-course {
  font-family:'JetBrains Mono',monospace;
  font-size:.3rem; font-weight:600; text-transform:uppercase;
  letter-spacing:1.2px; color:rgba(249,115,22,.5); margin-bottom:2px;
}
.sk-float-track {
  font-family:'Sora',sans-serif;
  font-size:.6rem; font-weight:700; color:#fff; margin-bottom:9px;
}
.sk-float-divider { height:1px; background:rgba(255,255,255,.06); margin-bottom:9px; }
.sk-float-concepts { display:flex; flex-direction:column; gap:5px; }

.sk-float-concept {
  display:flex; align-items:center; gap:6px;
  padding:6px 7px; border-radius:8px;
  background:rgba(255,255,255,.02);
  border:1px solid transparent;
  transition: background .5s ease, border-color .5s ease, box-shadow .5s ease;
}
.sk-float-concept.done {
  background:rgba(34,197,94,.05);
  border-color:rgba(34,197,94,.14);
}
.sk-float-concept.active {
  background:rgba(249,115,22,.06);
  border-color:rgba(249,115,22,.18);
}
.sk-float-concept.locked { opacity:.5; }

/* The &quot;cleared&quot; flash animation applied via JS */
.sk-float-concept.clearing {
  animation: conceptClear 0.9s ease forwards;
}
.sk-float.card-glow {
  animation: cardGlow 1s ease forwards;
}

.sk-float-icon {
  width:16px; height:16px; border-radius:5px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center; font-size:.5rem;
  background:rgba(255,255,255,.04); color:rgba(255,255,255,.2);
  transition: background .5s ease, color .5s ease;
}
.sk-float-concept.done   .sk-float-icon { background:rgba(34,197,94,.14); color:var(--green); }
.sk-float-concept.active .sk-float-icon { background:rgba(249,115,22,.14); color:var(--orange); }

.sk-float-icon.popping { animation: iconPop .5s ease; }

.sk-float-label {
  font-size:.52rem; color:rgba(255,255,255,.3); line-height:1.3;
  transition:color .5s ease; flex:1;
}
.sk-float-concept.done   .sk-float-label { color:rgba(255,255,255,.45); }
.sk-float-concept.active .sk-float-label { color:#fff; font-weight:600; }
.sk-float-concept.locked .sk-float-label { color:rgba(255,255,255,.2); }

.sk-float-prog-row {
  margin-top:9px; padding-top:8px;
  border-top:1px solid rgba(255,255,255,.05);
  display:flex; align-items:center; justify-content:space-between; gap:6px;
}
.sk-float-prog-bar { flex:1; height:3px; border-radius:2px; background:rgba(255,255,255,.06); overflow:hidden; }
.sk-float-prog-fill {
  height:100%; border-radius:2px;
  background:linear-gradient(90deg,var(--orange),var(--amber));
  transition:width 1s ease;
  width:50%;
}
.sk-float-prog-label {
  font-family:'Sora',sans-serif;
  font-size:.48rem; font-weight:700; color:var(--orange); flex-shrink:0;
}

/* ── Tap ripple ── */
.tap-ripple {
  position:absolute; width:30px; height:30px; border-radius:50%;
  background:rgba(249,115,22,.35);
  animation:tapPulse .7s ease-out forwards;
  pointer-events:none; z-index:100;
}

/* ── Swipe gesture pill ── */
@keyframes swipeUp {
  0%   { transform: translateX(-50%) translateY(0);   opacity: 0; }
  12%  { opacity: .75; }
  80%  { opacity: .55; }
  100% { transform: translateX(-50%) translateY(-80px); opacity: 0; }
}
.sk-swipe-gesture {
  position: absolute;
  left: 50%; bottom: 22%;
  transform: translateX(-50%);
  width: 28px; height: 48px;
  border-radius: 20px;
  background: rgba(255,255,255,.28);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  pointer-events: none;
  z-index: 50;
  opacity: 0;
  animation: swipeUp 0.75s cubic-bezier(0.25,0.46,0.45,0.94) forwards;
}

/* ── Swipe gesture pill (dynamically spawned via JS) ── */

/* ── Restart btn ── */
.sk-restart {
  position:absolute; bottom:10px; left:10px; z-index:20;
  width:28px; height:28px; border-radius:50%;
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.1);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; transition:background .2s, transform .3s;
  color:rgba(255,255,255,.3);
}
.sk-restart:hover { background:rgba(255,255,255,.12); color:rgba(255,255,255,.6); transform:rotate(-45deg); }
.sk-restart svg { width:14px; height:14px; }

video::-webkit-media-controls,
video::-webkit-media-controls-enclosure,
video::-webkit-media-controls-panel,
video::-webkit-media-controls-start-playback-button { display:none !important; }