@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-Bold.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

:root {
  --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.card {
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
}

.huge,
.stat,
.section-title,
.badge,
[data-animate="number"] {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}

.panels{height:100vh;overflow-y:auto;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch}
.panel{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:3rem 1.5rem;scroll-snap-align:start}
.panel .card{max-width:920px;width:100%;display:grid;grid-template-columns:1fr 320px;gap:1.25rem;align-items:center}

.card, .section-title, .huge{overflow-wrap:anywhere;word-break:break-word} 
.panel.hero .card{grid-template-columns:1fr 320px}
.panel.hero .meta{align-self:flex-start}

.card.hero-card{position:relative;overflow:hidden}
.card.hero-card::before{content:'';position:absolute;inset:0;background-image:var(--bg-url);background-size:cover;background-position:center;filter:blur(4px) saturate(1.55);opacity:0;transition:opacity .28s ease;pointer-events:none;z-index:0;transform:scale(1.03)}
.card.hero-card::after{content:'';position:absolute;inset:0;background:rgba(3,6,20,0.18);opacity:0;transition:opacity .28s ease;pointer-events:none;z-index:0}
.card.hero-card.has-bg::before{opacity:.14}
.card.hero-card.has-bg::after{opacity:1}
.card.hero-card > *{position:relative;z-index:1}
.huge{font-size:clamp(2.25rem,6vw,4.25rem);font-weight:700;margin:0;color:#E6F9FF}
.lead{font-size:1.05rem;color:var(--muted);margin:.5rem 0 1rem}
.stat{font-size:2.25rem;font-weight:700;color:#EAF6FF}
.small{font-size:.95rem;color:rgba(230,238,248,0.7)}
.card .image{width:320px;height:320px;border-radius:12px;overflow:hidden;box-shadow:0 20px 40px rgba(2,6,23,0.55);border:2px solid rgba(0,0,0,0.7)}
.card .image img{width:100%;height:100%;object-fit:cover;display:block}
.list{display:flex;flex-direction:column;gap:.45rem}
.list .item{display:flex;gap:.75rem;align-items:center}
.list .item img{width:64px;height:64px;border-radius:8px;object-fit:cover}
.cta-row{display:flex;gap:.75rem;align-items:center;margin-top:1rem}
.selector{display:flex;gap:.6rem;align-items:center}
.selector .options{display:flex;gap:.5rem;flex-wrap:wrap}
.selector button.option{background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.04);padding:.5rem .8rem;border-radius:8px;color:var(--muted);cursor:pointer;transition:transform .12s ease, box-shadow .12s ease;white-space:normal;overflow-wrap:break-word} 
.selector button.option:hover{transform:translateY(-3px)}
.selector button.option.correct{background:rgba(34,197,94,0.12);border-color:rgba(34,197,94,0.18);color:#eaffef;box-shadow:0 12px 24px rgba(34,197,94,0.06)}
.selector button.option.wrong{background:rgba(255,72,72,0.12);border-color:rgba(255,72,72,0.17);color:#ffdddd}
.selector select{background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.04);padding:.5rem .7rem;border-radius:8px;color:var(--muted)}

.reveal{opacity:0;transform:translateY(6px);transition:opacity .18s ease, transform .18s ease;max-height:0;overflow:hidden}
.reveal.revealed{opacity:1;transform:none;max-height:1000px}

.confetti-layer{position:fixed;inset:0;pointer-events:none;overflow:visible;z-index:9999;}
.confetti-piece{position:absolute;display:block;border-radius:2px;opacity:0.95;transform-origin:center;will-change:transform,opacity;mix-blend-mode:screen}
@keyframes confetti-explode{
  0%{transform:translate(0,0) rotate(0deg) scale(1);opacity:1}
  60%{transform:translate(calc(var(--dx) * 0.95), calc(var(--dy) * 0.95)) rotate(calc(var(--rot)));opacity:0.6}
  100%{transform:translate(calc(var(--dx)), calc(var(--dy))) rotate(calc(var(--rot)));opacity:0}
} 

.confetti-layer{pointer-events:none}

.list .fav-item .fav-details{
  position:absolute;left:80px;top:-6px;transform:translateY(10px) scale(.98);
  width:360px;min-width:360px;box-sizing:border-box;
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  padding:1rem;border-radius:12px;box-shadow:0 20px 40px rgba(2,6,23,0.55);opacity:0;visibility:hidden;transition:opacity .18s ease, transform .18s ease, left .08s linear, top .08s linear, visibility .18s, background .18s ease;border:1px solid rgba(255,255,255,0.04)}
.badge{background:linear-gradient(90deg,var(--accent1),var(--accent2));padding:.25rem .5rem;border-radius:8px;color:#04102a;font-weight:700}
.section-title{font-size:1.15rem;font-weight:700;margin-bottom:.5rem}
.panel.alt{background:linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0.006));}

.list .fav-item{display:flex;gap:.75rem;align-items:center;position:relative}
.list .fav-item .fav-details{position:absolute;left:80px;top:-6px;transform:translateY(10px) scale(.98);width:360px;min-width:360px;box-sizing:border-box;padding:1rem;border-radius:12px;box-shadow:0 20px 40px rgba(2,6,23,0.55);opacity:0;visibility:hidden;transition:opacity .18s ease, transform .18s ease, left .08s linear, top .08s linear, visibility .18s}
.list .fav-item:hover .fav-details, .list .fav-item.open .fav-details{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.list .fav-item .fav-details.revealed{opacity:1;visibility:visible;transform:translateY(0) scale(1)}

.notfound{height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.75rem}
.notfound h2{font-size:2rem;margin:0}
@media (max-width:980px){
  .card{grid-template-columns:1fr}
  .card .image{width:100%;height:260px}
  .panel{padding:2rem}
  .list .fav-item .fav-details{left:0;top:auto;transform:none;position:static;opacity:1;visibility:visible}
}

.panel.welcome {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: 3rem 1.5rem;
  background: linear-gradient(180deg, rgba(4,8,16,0.5), rgba(6,10,20,0.6));
  text-align: left;
}

.panel.welcome .full-welcome {
  max-width: none;
  width: 100%;
  padding: 2.5rem;
}

.panel.welcome .huge{font-size:clamp(2.75rem,8vw,5rem);margin-bottom:.25rem}
.panel.welcome .lead{font-size:1.05rem;color:var(--muted);margin-bottom:1rem}
.panel.welcome .welcome-start{padding:.85rem 1.25rem;font-size:1rem;border-radius:12px}
@media(max-width:520px){.panel.welcome .huge{font-size:2rem;margin-bottom:.5rem}.panel.welcome .full-welcome{padding:1.25rem}}

.card.fav-showcase{position:relative;overflow:hidden;padding:2.5rem 2.25rem}
.card.fav-showcase .showcase-inner{position:relative;min-height:360px;display:flex;align-items:center;justify-content:center}
.card.fav-showcase .back-note{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:clamp(2rem,6vw,6rem);font-weight:800;color:rgba(255,255,255,0.06);text-transform:uppercase;letter-spacing:.08em;pointer-events:none;opacity:0;transform:scale(1.02);transition:opacity .28s ease, transform .6s ease}
.panel.alt .card.fav-showcase.revealed .back-note{opacity:1;transform:scale(1)}
.card.fav-showcase{--marquee-speed: 12s}.showcase-stage{display:flex;gap:1.2rem;align-items:center;justify-content:center;z-index:2;position:relative;padding:0 120px}
.showcase-item{width:clamp(140px,18vw,200px);flex-shrink:0;transform-origin:center center;transition:transform .6s cubic-bezier(.2,.9,.25,1), opacity .5s ease;opacity:0;filter:drop-shadow(0 30px 40px rgba(2,6,23,0.6));position:relative;--side-offset:clamp(64px,6vw,74px)}
.showcase-item .img-wrap{width:100%;aspect-ratio:10/14;overflow:hidden;border-radius:12px;background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));box-shadow:0 18px 40px rgba(2,6,23,0.6);border:1px solid rgba(255,255,255,0.03);transform-style:preserve-3d}
.showcase-item img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.02)}
.showcase-item .rank-badge{position:absolute;left:12px;top:12px;background:linear-gradient(90deg,var(--accent1),var(--accent2));color:#04102a;padding:.35rem .55rem;border-radius:8px;font-weight:700;z-index:4}
.pos-left{transform:translateX(calc(-1 * var(--side-offset))) rotate(-5deg) scale(.92)}
.pos-center{transform:translateY(0) scale(1.03)}
.pos-right{transform:translateX(var(--side-offset)) rotate(5deg) scale(.92)}
.panel.alt .card.fav-showcase.revealed .showcase-item{opacity:1;transform:translateY(0) scale(1)}
.panel.alt .card.fav-showcase.revealed .pos-left{transform:translateX(calc(-1 * var(--side-offset))) rotate(-4deg) scale(.98);opacity:1}
.panel.alt .card.fav-showcase.revealed .pos-center{transform:translateY(-8px) scale(1.08);opacity:1}
.panel.alt .card.fav-showcase.revealed .pos-right{transform:translateX(var(--side-offset)) rotate(4deg) scale(.98);opacity:1}
.sc-title{margin-top:.6rem;font-weight:700;text-align:center}

.card.fav-showcase{--marquee-speed: 12s}
.card.fav-showcase .back-note{opacity:0;pointer-events:none}
.card.fav-showcase .back-note .marquee{display:inline-block;white-space:nowrap;font-weight:800;font-size:clamp(1.6rem,3.5vw,4.2rem);color:rgba(255,255,255,0.06);transform:translateX(0);will-change:transform,opacity;opacity:0;transition:opacity .32s ease}
.card.fav-showcase .back-note .marquee{animation: marquee var(--marquee-speed) linear infinite;animation-play-state:paused}
.card.fav-showcase.pre-reveal .back-note .marquee{animation-play-state:running;opacity:1;color:rgba(255,255,255,0.12)}
@keyframes marquee{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

.card.fav-showcase::before{
  content:'';
  position:fixed;
  inset:0;
  background:rgba(2,4,8,0.0);
  opacity:0;
  transition:opacity .5s ease;
  z-index:998;
  pointer-events:none;
}
.card.fav-showcase::after{
  content:'';
  position:fixed;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at var(--spot-x,50vw) var(--spot-y,50vh), rgba(255,255,255,0.06) 0%, rgba(255,255,255,0.02) 12%, rgba(0,0,0,0.85) 40%);
  opacity:0;
  transform:scale(2.6);
  transition:opacity .6s ease, transform .9s cubic-bezier(.2,.9,.25,1);
  z-index:999;
}

.card.fav-showcase.pre-reveal::before{ background:rgba(2,4,8,0.64); opacity:1; }
.card.fav-showcase.pre-reveal .back-note{opacity:1}
.card.fav-showcase.pre-reveal .back-note .marquee{animation-play-state:running}
.card.fav-showcase.spotlight::before{ opacity:0; transition: opacity .6s ease .05s; }
.card.fav-showcase.spotlight::after{ opacity:1; transform:scale(1); }

.card.fav-showcase.spotlight-expand::after{
  opacity:1;
  transform:scale(6);
  transition:transform .9s cubic-bezier(.2,.9,.25,1), opacity .45s ease .12s;
}
.card.fav-showcase.spotlight-expand::before{
  opacity:0; transition:opacity .6s ease .05s;
}

.card.fav-showcase .back-note{z-index:1;overflow:hidden}
.card.fav-showcase .back-note .marquee{z-index:1}
.card.fav-showcase .showcase-stage{z-index:3}
.card.fav-showcase .showcase-item{z-index:4}

.showcase-item .img-wrap{display:flex;align-items:center;justify-content:center}
.showcase-item img{object-position:center center}
.showcase-item.revealed{opacity:1;transform:translateY(0) scale(1)}
.showcase-stage{display:flex;gap:1.2rem;align-items:center;justify-content:center;z-index:2;position:relative;padding-block:0;padding-inline:clamp(24px,8vw,120px)}

.panel.pre-reveal .card.fav-showcase .back-note .title,
.card.fav-showcase.pre-reveal .back-note .title{opacity:1}
.panel.revealed .card.fav-showcase .back-note .title,
.card.fav-showcase.revealed .back-note .title{opacity:0}

.card.fav-showcase{position:relative;overflow:visible}
.card.fav-showcase .bg-split{position:absolute;inset:0;display:flex;z-index:0;pointer-events:none;overflow:hidden}
.card.fav-showcase .bg-part {
  flex: 1;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;

  opacity: 0;
  transform: scale(1.03);
  filter: blur(4px) saturate(1.55);

  transition: opacity 0.28s ease, transform 0.28s ease, filter 0.28s ease;
}

.card.fav-showcase .bg-part.left {
  background-image: var(--bg-left);
}
.card.fav-showcase .bg-part.center {
  background-image: var(--bg-center);
}
.card.fav-showcase .bg-part.right {
  background-image: var(--bg-right);
}

.card.fav-showcase.revealed .bg-part {
  opacity: 1;
  transform: none;
  filter: blur(4px) opacity(0.2);
  transition: opacity 0.28s ease, transform 0.6s cubic-bezier(.2,.9,.25,1), filter 0.28s ease;
}

.card.fav-showcase.revealed .bg-part.left {
  background-image: var(--bg-left);
}
.card.fav-showcase.revealed .bg-part.center {
  background-image: var(--bg-center);
}
.card.fav-showcase.revealed .bg-part.right {
  background-image: var(--bg-right);
}

.card.fav-showcase .bg-part.left{transition-delay:.05s}
.card.fav-showcase .bg-part.center{transition-delay:.12s}
.card.fav-showcase .bg-part.right{transition-delay:.22s}

.card.fav-showcase .top-badge{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);z-index:2;pointer-events:none;font-weight:800;font-size:clamp(1.25rem,3.2vw,2rem);color:#EAF6FF;background:rgba(3,6,20,0.5);padding:.5rem 1rem;border-radius:999px;border:1px solid rgba(255,255,255,0.04);opacity:0;transition:opacity .32s ease, transform .38s cubic-bezier(.2,.9,.25,1)}
.panel.pre-reveal .card.fav-showcase .top-badge,
.card.fav-showcase.pre-reveal .top-badge{opacity:1;transform:translate(-50%,-54%)}
.panel.revealed .card.fav-showcase .top-badge,
.card.fav-showcase.revealed .top-badge{opacity:0;transform:translate(-50%,-44%)}
.card.fav-showcase .showcase-inner{position:relative;z-index:3}

@media(max-width:820px){.showcase-stage{gap:1rem}.showcase-item{width:150px}.showcase-item .img-wrap{width:150px;height:220px}.pos-left,.pos-right{transform:none}}