/* =====================================================================
   Scrims — CoD HQ-style dark theme
   Near-black grays, off-white type, MW3 red as the single accent.
   Type: Barlow Condensed (UI + headings, the squared condensed look of the
   CoD menus) and Barlow (body). Squared corners, generous spacing.
   ===================================================================== */
:root{
  --bg: #0c0d0f;
  --bg-2: #111215;
  --panel: #141518;
  --panel-2: #191a1e;
  --panel-3: #202126;
  --border: #2a2b30;
  --border-soft: #1d1e22;
  --ink: #ececec;
  --ink-dim: #a2a4ab;
  --ink-faint: #676a72;

  --accent: #d6332f;
  --accent-2: #ef4a44;
  --accent-soft: #d6332f22;

  --tier-s: #3ecf8e;
  --tier-a: #5cc8b4;
  --tier-b: #5aa8e6;
  --tier-c: #a592f2;
  --tier-d: #ef6461;
  --tier-f: #7c818b;
  --hex-off: #2c2d33;
  --good: #3ecf8e;
  --bad: #ef6461;

  --r: 4px;
  --r-lg: 6px; --r-md: 4px; --r-sm: 3px;
  --display: "Barlow Condensed", "Arial Narrow", sans-serif;
  --sans: "Barlow", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --ease: cubic-bezier(.2,.7,.1,1);
  --ease-back: cubic-bezier(.3,1.35,.4,1);
  --gutter: clamp(20px, 4vw, 64px);
}
*{ box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html{ background: var(--bg); scrollbar-gutter: stable; }
body{ margin:0; background: var(--bg); color: var(--ink); font-family: var(--sans); font-size:15px; line-height:1.5; min-height:100vh; -webkit-font-smoothing: antialiased; overflow-x:hidden; }
::selection{ background: var(--accent); color:#fff; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-thumb{ background:#26272c; border-radius:6px; border:2px solid var(--bg); }
::-webkit-scrollbar-track{ background: transparent; }
a, button, input, select, textarea{ font-family: inherit; }
button{ cursor:pointer; color:inherit; }
img{ max-width:100%; }

@keyframes rise{ from{opacity:0; transform:translateY(16px);} to{opacity:1; transform:none;} }
@keyframes pop{ from{opacity:0; transform:scale(.97);} to{opacity:1; transform:none;} }
@keyframes flash{ 0%,100%{ background: transparent; } 35%{ background: var(--accent-soft); } }
@keyframes shimmer{ 0%{ background-position: 100% 0; } 100%{ background-position: -100% 0; } }
@keyframes grain{ 0%,100%{transform:translate(0,0)} 20%{transform:translate(-3%,2%)} 40%{transform:translate(2%,-3%)} 60%{transform:translate(-2%,-1%)} 80%{transform:translate(3%,3%)} }
@keyframes kenburns{ from{ transform: scale(1.05); } to{ transform: scale(1.16) translate3d(-1.5%,-1%,0); } }
@keyframes fadeIn{ from{ opacity:0; } to{ opacity:1; } }
@keyframes fadeUp{ from{ opacity:0; transform: translateY(20px); } to{ opacity:1; transform:none; } }
@keyframes slideIn{ from{ opacity:0; transform: translateX(-24px); } to{ opacity:1; transform:none; } }
@keyframes cue{ 0%{ transform: translateY(-100%); } 60%,100%{ transform: translateY(260%); } }
@keyframes hexSpin{ from{ transform: rotateY(-100deg) scale(.85); opacity:0; } to{ transform:none; opacity:1; } }
@keyframes pulseRing{ 0%{ box-shadow: 0 0 0 0 rgba(255,255,255,.3); } 100%{ box-shadow: 0 0 0 18px rgba(255,255,255,0); } }



/* Scroll reveals */
[data-reveal]{ opacity:0; transform: translateY(26px); transition: opacity .9s var(--ease), transform .9s var(--ease); }
[data-reveal].in{ opacity:1; transform:none; }

/* Shared type */
.section-label{ display:flex; align-items:center; gap:6px; font-family: var(--display); font-weight:600; font-size:14px; letter-spacing:.12em; text-transform:uppercase; color: var(--ink-dim); margin: 56px 0 18px; }

/* ---------- Top bar ---------- */
.topbar{ position:fixed; top:0; left:0; right:0; z-index:90; display:flex; align-items:center; justify-content:space-between; padding: 22px var(--gutter); transition: background .4s ease, padding .4s var(--ease), border-color .4s ease; border-bottom:1px solid transparent; }
.topbar.solid{ background: rgba(12,13,15,.78); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); padding-top:14px; padding-bottom:14px; border-color: rgba(255,255,255,.05); }
.topbar-left{ display:flex; align-items:center; gap:18px; }
.back-btn{ display:inline-flex; align-items:center; gap:6px; height:40px; padding:0 14px 0 10px; border-radius: var(--r); background: rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12); font-family: var(--display); font-weight:600; font-size:15px; letter-spacing:.1em; text-transform:uppercase; color: var(--ink); transition: background .25s ease, border-color .25s ease; }
.back-btn[hidden]{ display:none; }
.back-btn:hover{ background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.25); }
.back-btn svg{ transition: transform .3s var(--ease); }
.back-btn:hover svg{ transform: translateX(-3px); }
@media (max-width: 480px){ .back-btn span{ display:none; } .back-btn{ padding:0 10px; } }
.brand{ display:flex; align-items:center; gap:14px; background:none; border:none; padding:4px 0; }
.brand img{ height:22px; width:auto; transition: transform .4s var(--ease-back); }
.brand:hover img{ transform: scale(1.06); }
.burger{ position:relative; z-index:2; width:44px; height:44px; border-radius: var(--r); background: rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; transition: background .3s ease, border-color .3s ease; }
.burger:hover{ background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.22); }
.burger span{ width:16px; height:1.5px; background: var(--ink); transition: transform .45s var(--ease), width .3s ease, margin .3s ease; }
.burger span:nth-child(2){ width:10px; margin-left:6px; }
.burger:hover span:nth-child(2){ width:16px; margin-left:0; }
.burger.open span:nth-child(1){ transform: translateY(3.75px) rotate(45deg); }
.burger.open span:nth-child(2){ width:16px; margin-left:0; transform: translateY(-3.75px) rotate(-45deg); }

/* ---------- Full-screen menu ---------- */
.menu-panel{ position:fixed; inset:0; z-index:89; background: rgba(8,9,11,.97); display:flex; flex-direction:column; justify-content:center; padding: 100px var(--gutter) 48px; opacity:0; visibility:hidden; transition: opacity .3s ease, visibility 0s linear .3s; }
.menu-panel.open{ opacity:1; visibility:visible; transition: opacity .3s ease; }
.menu-item{ display:flex; align-items:baseline; gap: 22px; background:none; border:none; text-align:left; padding:0; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size: clamp(32px, 5vw, 60px); line-height:1.05; letter-spacing:.01em; color:#46474d; transition: color .2s ease; }
.menu-item:hover{ color: var(--ink); }
.menu-links{ display:flex; flex-direction:column; gap: clamp(4px, 1.2vh, 12px); }
.menu-item i{ font-style:normal; font-family: var(--display); font-size:14px; font-weight:600; letter-spacing:.14em; color: var(--accent); }
.menu-foot{ display:flex; flex-wrap:wrap; gap: 8px 30px; margin-top: 56px; opacity:0; transition: opacity .6s ease .4s; }
.menu-panel.open .menu-foot{ opacity:1; }
.menu-sub{ background:none; border:none; padding:6px 0; font-family: var(--display); font-weight:600; font-size:14px; letter-spacing:.14em; text-transform:uppercase; color: var(--ink-faint); transition: color .25s ease; }
.menu-sub:hover{ color: var(--ink); }
.menu-sub.danger:hover{ color: var(--bad); }
.admin-only{ display:none !important; }
body.is-admin .admin-only{ display:inline-block !important; }

/* ---------- Layout ---------- */
main{ max-width: 1180px; margin: 0 auto; padding: 0 var(--gutter) 120px; }
body[data-view="home"] main{ padding-bottom:0; }
.view{ display:none; }
.view.active{ display:block; animation: fadeIn .35s ease both; }
.view:not(#view-home){ padding-top: 150px; }
.page-head{ position:relative; margin-bottom: 44px; }
/* Faded cinematic shot behind each page title */
.page-head::before{ content:""; position:absolute; z-index:-1; top:-150px; height: 420px; left: calc(50% - 50vw); right: calc(50% - 50vw); background: var(--img, none) center 30%/cover no-repeat; opacity:.3; -webkit-mask-image: linear-gradient(180deg, #000 35%, transparent 100%); mask-image: linear-gradient(180deg, #000 35%, transparent 100%); }
.page-head::after{ content:""; position:absolute; z-index:-1; top:-150px; height: 420px; left: calc(50% - 50vw); right: calc(50% - 50vw); background: linear-gradient(90deg, rgba(12,13,15,.85), rgba(12,13,15,.2) 70%); }
#view-leaderboard .page-head{ --img: url('/assets/cine/leaderboard.jpg'); }
#view-history .page-head{ --img: url('/assets/cine/history.jpg'); }
#view-clips .page-head{ --img: url('/assets/cine/clips.jpg'); }
#view-fame .page-head{ --img: url('/assets/cine/fame.jpg'); }
#view-teams .page-head{ --img: url('/assets/cine/teams.jpg'); }
#view-addgame .page-head, #view-recap .page-head{ --img: url('/assets/cine/intro.jpg'); }
.page-title{ margin:0; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size: clamp(40px, 5.2vw, 64px); line-height:.95; letter-spacing:.005em; animation: slideIn .7s var(--ease) both; }
.panel{ background: var(--panel); border:1px solid var(--border-soft); border-radius: var(--r-lg); padding: clamp(18px, 3vw, 30px); margin-bottom: 20px; }
.panel-title{ display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; flex-wrap:wrap; gap:12px; }

/* ---------- Buttons & links ---------- */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:11px 22px; border-radius: var(--r); border:1px solid transparent; font-family: var(--display); font-weight:700; font-size:15px; letter-spacing:.1em; text-transform:uppercase; cursor:pointer; text-decoration:none; transition: transform .25s var(--ease), background .25s ease, color .25s ease, border-color .25s ease; }
.btn:disabled{ opacity:.35; cursor:not-allowed; transform:none !important; }
.btn-primary{ background: var(--ink); color: var(--bg); }
.btn-primary:hover{ background:#fff; transform: translateY(-1px); }
.btn-primary:active{ transform: scale(.98); }
.btn-ghost, .btn-secondary{ background: rgba(255,255,255,.03); color: var(--ink-dim); border-color: var(--border); }
.btn-ghost:hover, .btn-secondary:hover{ color: var(--ink); border-color:#4a4b52; }
.link-arrow{ display:inline-flex; align-items:center; gap:12px; background:none; border:none; padding:6px 0; font-family: var(--display); font-weight:600; font-size:15px; letter-spacing:.12em; text-transform:uppercase; color: var(--ink); }
.link-arrow i{ position:relative; width:26px; height:1.5px; background: currentColor; transition: width .4s var(--ease); }
.link-arrow i::after{ content:""; position:absolute; right:0; top:-3.5px; width:8px; height:8px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform: rotate(45deg); }
.link-arrow:hover{ color: var(--accent-2); }
.link-arrow:hover i{ width:42px; }
.link-arrow.inline{ margin-left:8px; }
.back-link{ display:inline-flex; align-items:center; gap:10px; background:none; border:none; padding:6px 0; font-family: var(--display); font-weight:600; font-size:14px; letter-spacing:.12em; text-transform:uppercase; color: var(--ink-dim); transition: color .3s ease, gap .4s var(--ease); }
.back-link i{ width:20px; height:1.5px; background: currentColor; position:relative; }
.back-link i::before{ content:""; position:absolute; left:0; top:-3.5px; width:8px; height:8px; border-left:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform: rotate(45deg); }
.back-link:hover{ color: var(--ink); gap:14px; }
.mini-link{ background:none; border:none; padding:4px 0; font-family: var(--display); font-weight:600; font-size:14px; letter-spacing:.1em; text-transform:uppercase; color: var(--ink-faint); transition: color .2s ease; }
.mini-link:hover{ color: var(--ink); }
.mini-link.danger:hover{ color: var(--bad); }

/* Hover fx */
.fx-spot{ position:relative; overflow:hidden; --mx:50%; --my:50%; }
.fx-spot::before{ content:""; position:absolute; inset:0; pointer-events:none; opacity:0; transition: opacity .4s ease; background: radial-gradient(360px circle at var(--mx) var(--my), rgba(255,255,255,.07), transparent 45%); z-index:1; }
.fx-spot:hover::before{ opacity:1; }

/* Tier hexagon */
.hex{ display:inline-flex; align-items:center; justify-content:center; position:relative; flex-shrink:0; }
.hex b{ position:absolute; font-family: var(--display); font-weight:700; }
.hex.xs{ width:22px; height:22px; } .hex.sm{ width:32px; height:32px; } .hex.md{ width:44px; height:44px; }
.hex.lg{ width:74px; height:74px; } .hex.xl{ width:120px; height:120px; } .hex.xl svg{ width:120px; height:120px; } .hex.xl b{ font-size:34px !important; }

/* Tags */
.tag{ display:inline-flex; align-items:center; gap:5px; padding:2px 8px; border-radius: var(--r-sm); font-family: var(--display); font-size:13px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; background: rgba(255,255,255,.04); color: var(--ink-dim); border:1px solid var(--border); }
.tag.react{ padding:0 6px; font-size:11px; margin-left:8px; vertical-align:middle; letter-spacing:.1em; font-weight:700; }
.tag.good, .tag.win{ color: var(--good); border-color:#3ecf8e40; background:#3ecf8e12; }
.tag.bad, .tag.loss{ color: var(--bad); border-color:#ef646140; background:#ef646112; }
.tag.draw{ color: var(--ink-faint); }

/* =====================================================================
   HOME — HQ scene
   ===================================================================== */
.scene{ position:relative; height: 215vh; width:100vw; margin-left: calc(50% - 50vw); }
.hero{ position:sticky; top:0; height:100vh; height:100svh; min-height:560px; overflow:hidden; background:#000; --p:0; }
.hero-media{ position:absolute; inset:0; background:#000; overflow:hidden; }
.hero-still{ position:absolute; inset:-4%; background: url('/assets/cine/leaderboard.jpg') center/cover no-repeat; filter: brightness(.55) saturate(.8); animation: kenburns 30s ease-in-out infinite alternate; transition: opacity 1s ease; }
/* Once the trailer has played, never show the still again — dips go to black. */
.hero-media.started .hero-still{ opacity:0; }
.hero-video{ position:absolute; inset:0; opacity:0; transition: opacity 1.4s ease; }
.hero-media.playing .hero-video{ opacity:1; }
.hero-media.cut .hero-video, .hero-media:not(.playing) .hero-video{ transition: opacity .15s ease; }
/* Cropped well past the frame so YouTube's title/logo never show; unclickable. */
/* Self-hosted trailer: a plain video, no player UI at all. */
.hero-video .hero-file{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.hero-video iframe, .hero-video #heroYT{ position:absolute; top:50%; left:50%; border:0; pointer-events:none; width: max(140vw, 249svh); height: max(78.75vw, 140svh); transform: translate(-50%, -50%); }
.hero-shade{ position:absolute; inset:0; pointer-events:auto; background:
  linear-gradient(90deg, rgba(8,9,11,.78) 0%, rgba(8,9,11,.35) 42%, rgba(8,9,11,0) 68%),
  linear-gradient(0deg, rgba(8,9,11,.85) 0%, rgba(8,9,11,0) 40%),
  linear-gradient(180deg, rgba(8,9,11,.6) 0%, rgba(8,9,11,0) 20%); }
.scene-dim{ position:absolute; inset:0; background: var(--bg); opacity: calc(var(--p) * .9); pointer-events:none; }



.deck{ position:absolute; inset:0; z-index:5; pointer-events:none; }
/* Feature block (mid-left): describes the hovered card. When the cards grow
   into portraits it slides up and shrinks to sit above them. */
.feature{ position:absolute; z-index:4; left: var(--gutter); bottom: calc(var(--f0, 42vh) * (1 - var(--p)) + var(--f1, 70vh) * var(--p)); max-width: 580px; opacity: max(0, calc(1 - var(--p) * 16), calc((var(--p) - .94) * 16.7)); }
.feature > *{ transition: opacity .25s ease, transform .35s var(--ease); }
.feature.swap > *{ opacity:0 !important; transform: translateX(-14px); }
.feature-title{ margin:0; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size: calc(clamp(46px, 6vw, 86px) * (1 - var(--p) * .5)); line-height:.9; letter-spacing:.005em; color:#f2f2f2; }
.feature-chips{ display:flex; flex-wrap:wrap; gap:10px; margin-top: calc(26px * (1 - var(--p))); max-height: calc((1 - var(--p)) * 60px); overflow:hidden; opacity: max(0, calc(1 - var(--p) * 2.5)); }
.feature-chips:empty{ display:none; }
.feature-chips span{ padding:5px 14px; border-radius: var(--r-sm); background: rgba(20,21,24,.7); border:1px solid rgba(255,255,255,.12); font-family: var(--display); font-weight:600; font-size:15px; letter-spacing:.06em; text-transform:uppercase; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.feature-desc{ margin: calc(18px - var(--p) * 8px) 0 0; font-size:16px; color: var(--ink-dim); max-width: 44ch; }
body.ready .feature{ animation: fadeIn 1s ease .4s backwards; }

/* Option cards — cinematic image, title only (CoD HQ "featured" row). */
.op-card{ position:absolute; top:0; left:0; pointer-events:auto; padding:0; border-radius: var(--r); overflow:hidden; border:1px solid rgba(255,255,255,.14); background:#0a0a0b; color: var(--ink); --e:0; will-change: transform, width, height; transition: border-color .3s ease, box-shadow .3s ease; }
body.ready .op-card{ animation: fadeIn .9s ease backwards; animation-delay: calc(.8s + var(--i) * 70ms); }
.op-img{ position:absolute; inset:-2px; background-size:cover; background-repeat:no-repeat; filter: brightness(.7) saturate(.9); transition: transform 1s var(--ease), filter .5s ease; }
.op-card:hover .op-img, .op-card.sel .op-img{ transform: scale(1.05); filter: brightness(.95) saturate(1.02); }
.op-shade{ position:absolute; inset:0; background: linear-gradient(0deg, rgba(5,5,6,.9) 0%, rgba(5,5,6,.25) 45%, rgba(5,5,6,0) 70%); }
.op-name{ position:absolute; z-index:2; left:10px; right:10px; bottom: calc(14px + var(--e) * 20px); text-align:center; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size: calc(19px + var(--e) * 9px); line-height:1; letter-spacing:.02em; text-shadow: 0 2px 12px rgba(0,0,0,.6); transition: bottom .3s var(--ease); }
.op-card.sel{ border-color: rgba(255,255,255,.75); box-shadow: 0 24px 60px rgba(0,0,0,.55); }
.hero.expanded .op-card:hover{ border-color: rgba(255,255,255,.4); }
.hero.expanded .op-card.sel{ border-color: rgba(255,255,255,.4); box-shadow: 0 24px 60px rgba(0,0,0,.55); }

/* Phones / short screens: no morph — feature on the trailer, portrait cards below. */
.scene-static .feature{ position:relative; top:auto; bottom:auto; left:auto; transform:none; padding: 42svh var(--gutter) 0; max-width: 640px; }
.scene-static .op-card{ position:relative; width:auto !important; height:auto !important; aspect-ratio: 3/4; transform:none !important; --e:.4; }
.scene-static .hero{ padding-bottom: 32px; }

.scroll-cue{ position:absolute; z-index:6; left:50%; bottom: 14px; width:46px; height:46px; margin-left:-23px; display:flex; align-items:center; justify-content:center; border:none; background:none; padding:0; color: rgba(255,255,255,.85); opacity:0; pointer-events:none; transform: translateY(-8px); transition: opacity .6s ease, transform .6s var(--ease); }
.scroll-cue.show{ opacity:1; pointer-events:auto; transform:none; }
.scroll-cue.show svg{ animation: nudge 1.4s ease-in-out infinite; }
@keyframes nudge{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(7px); } }

/* Phones / short screens: no morph, just a stacked layout. */
.scene.scene-static{ height:auto; }
.scene-static .hero{ position:relative; height:auto; min-height:0; overflow:visible; background:none; padding-bottom: 60px; }
.scene-static .hero-media, .scene-static .hero-shade{ height: 88svh; bottom:auto; }
.scene-static .hero-shade{ background: linear-gradient(90deg, rgba(8,9,11,.7), rgba(8,9,11,.2)), linear-gradient(0deg, var(--bg) 0%, rgba(12,13,15,0) 45%); }
.scene-static .scene-dim, .scene-static .scroll-cue{ display:none; }
.scene-static .deck{ position:relative; inset:auto; display:grid; grid-template-columns: repeat(3, 1fr); gap:12px; padding: 48px var(--gutter) 0; pointer-events:auto; }

/* =====================================================================
   PLAYER
   ===================================================================== */
.p-hero{ position:relative; min-height: 380px; display:flex; flex-direction:column; justify-content:space-between; }
.p-hero-bg{ background-image:url('/assets/cine/leaderboard.jpg'); position:absolute; top:-150px; bottom:-40px; left: calc(50% - 50vw); right: calc(50% - 50vw); z-index:-1; background-size:cover; background-position:center; opacity:.25; filter: grayscale(.3); -webkit-mask-image: linear-gradient(180deg, #000 30%, transparent 100%); mask-image: linear-gradient(180deg, #000 30%, transparent 100%); animation: kenburns 40s ease-in-out infinite alternate; }
.p-hero::before{ content:""; position:absolute; top:-150px; bottom:-40px; left: calc(50% - 50vw); right: calc(50% - 50vw); z-index:-1; background: linear-gradient(90deg, rgba(12,13,15,.9), rgba(12,13,15,.2) 70%); }
.p-hero-inner{ display:grid; grid-template-columns: 1fr auto; align-items:end; gap: 40px; margin-top: 40px; }
.p-name{ margin:0; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size: clamp(44px, 6vw, 80px); line-height:.92; word-break: break-word; animation: slideIn .8s var(--ease) both; }
.p-meta{ font-family: var(--display); font-weight:600; font-size:16px; letter-spacing:.06em; text-transform:uppercase; color: var(--ink-dim); margin-bottom:10px; }
.p-title{ display:flex; flex-direction:column; gap:4px; margin-top:22px; animation: fadeUp .9s var(--ease) .2s both; }
.p-title b{ font-family: var(--display); font-weight:700; font-size:18px; letter-spacing:.08em; text-transform:uppercase; color: var(--tone, var(--ink)); }
.p-title span{ color: var(--ink-dim); font-size:15px; }
.p-ovr, .spot-ovr{ display:flex; flex-direction:column; align-items:center; gap:6px; padding: 26px 32px; border-radius: var(--r-lg); background: rgba(20,21,24,.75); border:1px solid rgba(255,255,255,.08); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.spot-hex{ perspective: 700px; }
.big-ovr{ font-family: var(--display); font-weight:700; font-size: 52px; line-height:.9; font-variant-numeric: tabular-nums; }
.ovr-lbl{ font-family: var(--display); font-weight:600; font-size:13px; letter-spacing:.3em; text-transform:uppercase; color: var(--ink-faint); }
@media (max-width: 720px){
  .p-hero-inner{ grid-template-columns: 1fr; }
  .p-ovr{ flex-direction:row; justify-content:flex-start; gap:18px; padding:16px 20px; }
  .p-ovr .hex.xl, .p-ovr .hex.xl svg{ width:64px; height:64px; } .p-ovr .hex.xl b{ font-size:20px !important; }
}
.breakdown{ display:grid; grid-template-columns: repeat(5, 1fr); gap:12px; }
@media (max-width: 760px){ .breakdown{ grid-template-columns: repeat(2, 1fr); } }
.bd-item{ display:flex; flex-direction:column; align-items:flex-start; gap:6px; padding:20px; border-radius: var(--r-lg); background: var(--panel); border:1px solid var(--border-soft); }
.bd-item .hex{ margin-bottom:8px; }
.bd-item .bd-v{ font-family: var(--display); font-weight:700; font-size:28px; line-height:1; font-variant-numeric:tabular-nums; }
.bd-item .bd-l{ display:flex; align-items:center; font-family: var(--display); font-size:14px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); }
.info{ display:inline-flex; align-items:center; justify-content:center; width:15px; height:15px; margin-left:7px; border-radius:50%; border:1px solid var(--border); color: var(--ink-faint); font-size:9px; font-weight:700; font-style:italic; font-family: Georgia, serif; text-transform:none; letter-spacing:0; cursor:help; transition: all .2s ease; }
.info:hover, .info:focus{ color: var(--bg); background: var(--ink); border-color: var(--ink); outline:none; }
.tip-box{ position:fixed; z-index:9999; max-width:280px; padding:12px 14px; border-radius: var(--r-lg); background: var(--ink); color: var(--bg); font-size:13px; line-height:1.55; white-space:pre-line; pointer-events:none; opacity:0; transform: translateY(4px); transition: opacity .18s ease, transform .18s ease; box-shadow: 0 16px 40px rgba(0,0,0,.5); }
.tip-box.show{ opacity:1; transform:none; }
.stat-grid{ display:grid; grid-template-columns: repeat(4, 1fr); gap:12px; margin-top:12px; }
@media (max-width: 560px){ .stat-grid{ grid-template-columns: repeat(2, 1fr); } }
.stat-tile{ display:flex; flex-direction:column; gap:6px; background: var(--panel); border:1px solid var(--border-soft); border-radius: var(--r-lg); padding:18px 20px; }
.stat-tile .l{ font-family: var(--display); font-size:14px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); }
.stat-tile .v{ font-family: var(--display); font-weight:700; font-size:28px; line-height:1; font-variant-numeric:tabular-nums; }
.stat-tile .pct{ font-size:13px; color: var(--ink-faint); }
.chart-wrap svg{ overflow:visible; }
.chart-dot{ cursor:pointer; }
.h2h{ display:grid; grid-template-columns: repeat(2, 1fr); gap:10px; }
@media (max-width: 560px){ .h2h{ grid-template-columns: 1fr; } }
.h2h-row{ display:grid; grid-template-columns: 1fr 56px 48px 34px; align-items:center; gap:10px; padding:14px 18px; background: var(--panel); border:1px solid var(--border-soft); border-radius: var(--r-lg); font-variant-numeric: tabular-nums; text-align:left; transition: border-color .3s ease; }
.h2h-row:hover{ border-color: var(--border); }
.h2h-row .nm{ font-family: var(--display); font-weight:700; font-size:17px; text-transform:uppercase; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.h2h-row .rec{ color: var(--ink-dim); text-align:right; }
.h2h-row .wr, .h2h-row .ov{ font-weight:600; text-align:right; }
.table-scroll{ overflow-x:auto; }
.gamelog-table{ width:100%; border-collapse: collapse; font-size:14px; }
.gamelog-table th{ text-align:left; font-family: var(--display); color: var(--ink-faint); font-weight:600; padding:12px; text-transform:uppercase; letter-spacing:.1em; font-size:13px; border-bottom:1px solid var(--border); }
.gamelog-table td{ padding:14px 12px; border-bottom:1px solid var(--border-soft); color: var(--ink-dim); font-variant-numeric:tabular-nums; white-space:nowrap; }
.gamelog-table tr:hover td{ background: rgba(255,255,255,.02); }
.gamelog-table td.nm{ color: var(--ink); font-weight:600; }
.gamelog-table td.nm small{ display:block; font-weight:400; font-size:12px; color: var(--ink-faint); }
.gamelog-table td.dim{ color: var(--ink-faint); }
.gamelog-table td.ovr{ font-family: var(--display); font-weight:700; font-size:18px; }
.gamelog-table tr.flash td{ animation: flash 1.2s ease; }
.res{ display:inline-flex; width:24px; height:24px; align-items:center; justify-content:center; border-radius: var(--r-sm); font-family: var(--display); font-weight:700; font-size:14px; }
.res.win{ color: var(--good); background:#3ecf8e16; } .res.loss{ color: var(--bad); background:#ef646116; } .res.draw{ color: var(--ink-faint); }

/* =====================================================================
   HALL OF FAME — one cinematic shot per record: name, stat line, date.
   Lean Japanese-style type (Zen Kaku Gothic New, light).
   ===================================================================== */
.fame-grid{ display:grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 24px; }
.fame-card{
  position:relative; display:flex; flex-direction:column; justify-content:flex-end; align-items:flex-start; gap:10px;
  aspect-ratio: 4/5; padding: 30px 28px; border:none; border-radius: var(--r-lg); overflow:hidden; text-align:left; color: var(--ink);
  background: #000;
}
.fame-card::before{ content:""; position:absolute; inset:0; background: var(--img) var(--focus, 50%) 30%/cover no-repeat; filter: brightness(.62) saturate(.85); transition: transform 1.4s var(--ease), filter .6s ease; }
.fame-card::after{ content:""; position:absolute; inset:0; background: linear-gradient(0deg, rgba(0,0,0,.85) 0%, rgba(0,0,0,.15) 50%, rgba(0,0,0,0) 75%); }
.fame-card:hover::before{ transform: scale(1.04); filter: brightness(.78) saturate(.95); }
.fame-card > span{ position:relative; z-index:1; font-family: "Zen Kaku Gothic New", var(--sans); }
.fame-name{ font-weight:300; font-size: clamp(30px, 3.2vw, 42px); line-height:1.05; letter-spacing:.14em; text-transform:uppercase; }
.fame-stat{ font-weight:400; font-size:15px; letter-spacing:.08em; color: rgba(255,255,255,.85); }
.fame-date{ font-weight:300; font-size:12px; letter-spacing:.24em; text-transform:uppercase; color: rgba(255,255,255,.5); }

/* =====================================================================
   CLIPS
   ===================================================================== */
.clip-feature{ margin-bottom: 64px; }
.clip-title{ margin: 0 0 22px; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size: clamp(26px, 3.4vw, 40px); line-height:1; }
.clip-title span{ display:block; margin-top:8px; font-size:15px; font-weight:500; letter-spacing:.1em; color: var(--ink-dim); }
.clip-grid{ display:grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap:18px; }
.clip-frame{ position:relative; display:block; width:100%; aspect-ratio: 16/9; border-radius: var(--r-lg); overflow:hidden; padding:0; background:#000; border:1px solid rgba(255,255,255,.08); text-align:left; }
.clip-frame.big{ aspect-ratio: 21/9; }
@media (max-width: 720px){ .clip-frame.big{ aspect-ratio: 16/9; } }
.clip-frame img, .clip-frame video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter: brightness(.72); transition: transform 1s var(--ease), filter .5s ease; }
.clip-frame:hover img, .clip-frame:hover video{ transform: scale(1.04); filter: brightness(.9); }
.clip-frame::after{ content:""; position:absolute; inset:0; background: linear-gradient(0deg, rgba(0,0,0,.72), transparent 50%); pointer-events:none; }
.clip-play{ position:absolute; z-index:2; left:50%; top:50%; width:64px; height:64px; margin:-32px 0 0 -32px; border-radius:50%; border:1.5px solid rgba(255,255,255,.85); display:flex; align-items:center; justify-content:center; background: rgba(0,0,0,.3); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); animation: pulseRing 2.4s ease-out infinite; transition: transform .4s var(--ease-back), background .3s ease, border-color .3s ease; }
.clip-play i{ width:0; height:0; border-left:15px solid #fff; border-top:9px solid transparent; border-bottom:9px solid transparent; margin-left:4px; }
.clip-frame:hover .clip-play{ transform: scale(1.1); background: var(--accent); border-color: var(--accent); }
.clip-cap{ position:absolute; z-index:2; left:16px; right:16px; bottom:14px; display:flex; flex-direction:column; }
.clip-cap b{ font-family: var(--display); font-weight:700; font-size:19px; text-transform:uppercase; line-height:1.1; }
.clip-cap small{ font-family: var(--display); font-size:13px; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-dim); }
.clip-badge{ position:absolute; z-index:2; top:12px; left:12px; font-family: var(--display); font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; padding:3px 9px; border-radius: var(--r-sm); background: var(--accent); color:#fff; }
.clip-admin{ display:flex; gap:22px; margin-top:12px; }
.upload{ margin-bottom: 56px; padding:22px; border-radius: var(--r-lg); background: var(--panel); border:1px solid var(--border-soft); }
.upload-drop{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:30px 16px; border-radius: var(--r-md); border:1.5px dashed var(--border); cursor:pointer; text-align:center; transition: border-color .3s ease, background .3s ease; }
.upload-drop:hover, .upload-drop.over{ border-color: var(--ink-dim); background: rgba(255,255,255,.02); }
.upload-drop b{ font-family: var(--display); font-weight:700; text-transform:uppercase; font-size:18px; }
.upload-drop span{ font-size:13px; color: var(--ink-faint); }
.upload-fields{ display:flex; gap:12px; flex-wrap:wrap; margin-top:16px; }
.upload-fields input{ flex:1; min-width:200px; }
.upload-bar{ height:2px; margin-top:16px; background: var(--border-soft); overflow:hidden; opacity:0; transition: opacity .3s ease; --p:0%; }
.upload-bar.on{ opacity:1; }
.upload-bar i{ display:block; height:100%; width: var(--p); background: var(--accent); transition: width .2s linear; }
.lightbox{ position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center; padding: clamp(16px, 4vw, 64px); background: rgba(5,5,6,.95); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); opacity:0; pointer-events:none; transition: opacity .4s ease; }
.lightbox.open{ opacity:1; pointer-events:auto; }
.lightbox-stage{ width: min(1280px, 100%); transform: scale(.96); transition: transform .6s var(--ease); }
.lightbox.open .lightbox-stage{ transform:none; }
.lightbox video{ display:block; width:100%; max-height: 78vh; border-radius: var(--r-lg); background:#000; }
.lightbox-cap{ display:flex; align-items:baseline; gap:16px; flex-wrap:wrap; margin-top:18px; }
.lightbox-cap b{ font-family: var(--display); font-weight:700; text-transform:uppercase; font-size:26px; }
.lightbox-cap span{ font-family: var(--display); font-size:15px; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-dim); }
.lightbox-close{ position:absolute; top:20px; right: var(--gutter); width:44px; height:44px; border-radius: var(--r); background: rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); color: var(--ink); font-size:22px; line-height:1; transition: background .3s ease, transform .4s var(--ease); }
.lightbox-close:hover{ background: var(--accent); border-color: var(--accent); transform: rotate(90deg); }

/* =====================================================================
   RECAP (admin)
   ===================================================================== */
.recap-status{ display:grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap:12px; margin-bottom:18px; }
.recap-status div{ display:flex; flex-direction:column; gap:6px; padding:18px 20px; border-radius: var(--r-lg); background: var(--panel); border:1px solid var(--border-soft); }
.recap-status span{ font-family: var(--display); font-size:13px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); }
.recap-status b{ font-size:15px; font-weight:600; word-break: break-word; }
.recap-status b.ok{ color: var(--good); } .recap-status b.no{ color: var(--bad); }
.recap-warn{ padding:14px 18px; border-radius: var(--r-lg); border:1px solid #ef646140; background:#ef646110; font-size:14px; margin-bottom:22px; }
.recap-nights{ display:flex; flex-direction:column; gap:10px; margin-top:28px; }
.night{ display:grid; grid-template-columns: 1fr auto auto auto; align-items:center; gap:16px; padding:16px 20px; border-radius: var(--r-lg); background: var(--panel); border:1px solid var(--border-soft); }
@media (max-width: 640px){ .night{ grid-template-columns: 1fr 1fr; } .night-state{ grid-column: 1 / -1; order:3; } }
.night-date{ font-family: var(--display); font-weight:700; text-transform:uppercase; font-size:20px; line-height:1.1; }
.night-date small{ display:block; font-size:13px; font-weight:500; letter-spacing:.08em; color: var(--ink-faint); }
.night-state{ font-size:14px; color: var(--ink-dim); }
.recap-preview iframe{ width:100%; height:1100px; margin-top:28px; border:1px solid var(--border-soft); border-radius: var(--r-lg); background:#07090c; }

/* =====================================================================
   LEADERBOARD
   ===================================================================== */
.lb-toolbar{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-bottom: 30px; }
.scope-toggle{ display:inline-flex; gap:4px; background: rgba(20,21,24,.8); border:1px solid var(--border-soft); border-radius: var(--r); padding:4px; }
.scope-toggle button{ background:none; border:none; padding:7px 16px; border-radius: var(--r-sm); font-family: var(--display); font-size:15px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); transition: all .25s ease; }
.scope-toggle button:hover{ color: var(--ink); }
.scope-toggle button.on{ background: var(--ink); color: var(--bg); }
.lb-toolbar select{ background: rgba(20,21,24,.8); border:1px solid var(--border-soft); color: var(--ink-dim); padding:10px 14px; border-radius: var(--r); font-family: var(--display); font-size:15px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; }
.lb-row{ position:relative; display:grid; grid-template-columns: 48px 1fr 110px 70px 70px 70px 56px; align-items:center; gap:12px; padding:16px 18px; border-bottom:1px solid var(--border-soft); cursor:pointer; overflow:hidden; opacity:0; animation: rise .6s var(--ease) forwards; }
.lb-row::before{ content:""; position:absolute; inset:0; background: linear-gradient(90deg, rgba(214,51,47,.12), rgba(214,51,47,0) 60%); transform: scaleX(0); transform-origin:left; transition: transform .5s var(--ease); pointer-events:none; }
.lb-row::after{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background: var(--accent); transform: scaleY(0); transition: transform .4s var(--ease); }
.lb-row:hover::before{ transform: scaleX(1); }
.lb-row:hover::after{ transform: scaleY(1); }
.lb-row > *{ position:relative; }
.lb-row.header{ cursor:default; padding: 0 18px 12px; font-family: var(--display); font-size:13px; text-transform:uppercase; letter-spacing:.1em; color: var(--ink-faint); font-weight:600; animation:none; opacity:1; border-bottom:1px solid var(--border); }
.lb-row.header::before, .lb-row.header::after{ display:none; }
.gauntlet-head{ display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin:40px 18px 12px; font-family: var(--display); font-size:15px; font-weight:600; text-transform:uppercase; letter-spacing:.1em; color: var(--ink-dim); }
.gauntlet-head span{ font-family: var(--sans); text-transform:none; letter-spacing:0; font-weight:400; color: var(--ink-faint); font-size:14px; }
.lb-row.unranked{ opacity:.75; }
.ovr-cell.locked{ gap:8px; color: var(--ink-faint); }
.lock-ic{ display:inline-flex; }
.pips{ display:inline-flex; gap:4px; }
.pips i{ width:7px; height:7px; border-radius:50%; border:1px solid var(--border); }
.pips i.done{ background: var(--ink); border-color: transparent; }
.rank-num{ font-family: var(--display); font-weight:700; font-size:20px; color: var(--ink-faint); font-variant-numeric:tabular-nums; }
.player-cell{ display:flex; align-items:center; gap:12px; min-width:0; }
/* Player headshot: their own cinematic shot, cropped square. */
.avatar{ display:block; flex-shrink:0; width:46px; height:46px; border-radius: var(--r); background-size: cover; background-color: var(--panel-3); filter: saturate(.85) brightness(.9); border:1px solid rgba(255,255,255,.08); transition: filter .3s ease; }
.lb-row:hover .avatar{ filter: saturate(1) brightness(1.05); }
.player-name{ font-family: var(--display); font-weight:700; font-size:21px; text-transform:uppercase; letter-spacing:.02em; line-height:1.05; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; transition: transform .4s var(--ease); }
.lb-row:hover .player-name{ transform: translateX(6px); }
.player-sub{ margin-top:2px; }
.player-sub .tag{ padding:0; border:none; background:none; font-size:13px; }
.ovr-cell{ display:flex; align-items:center; gap:8px; }
.trend{ font-size:10px; line-height:1; }
.trend.up{ color: var(--good); } .trend.down{ color: var(--bad); }
.ovr-num{ font-family: var(--display); font-size:22px; font-weight:700; font-variant-numeric:tabular-nums; }
.stat-col{ text-align:center; font-size:15px; color: var(--ink-dim); font-variant-numeric: tabular-nums; }
.lb-row.header .stat-col{ font-size:13px; }
.empty-state{ text-align:center; padding: 70px 20px; color: var(--ink-faint); font-size:15px; }
.empty-state .cta{ margin-top:18px; }
.loading-row{ height:58px; border-radius: var(--r-lg); margin-bottom:8px; background: linear-gradient(90deg, var(--panel) 25%, var(--panel-2) 37%, var(--panel) 63%); background-size: 400% 100%; animation: shimmer 1.6s ease infinite; }

/* =====================================================================
   FORMS
   ===================================================================== */
.field{ display:flex; flex-direction:column; gap:8px; margin-bottom:16px; }
.field label{ font-family: var(--display); font-size:14px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); }
input[type=text], input[type=number], input[type=password], input[type=date], input[type=url], select{ background: var(--bg-2); border:1px solid var(--border); color: var(--ink); padding:11px 14px; border-radius: var(--r); font-size:15px; outline:none; transition: border-color .2s ease, background .2s ease; }
input[type=date]{ color-scheme: dark; }
input:focus, select:focus, textarea:focus{ border-color:#56575e; background:#151619; }
input[type=number]{ width:60px; text-align:center; }
input::placeholder, textarea::placeholder{ color: var(--ink-faint); }
select{ cursor:pointer; }
select.team-rounds{ width:64px; padding:10px 4px; text-align:center; }
.form-row-top{ display:flex; gap:12px; margin-bottom:20px; flex-wrap:wrap; }
.form-row-top input[type=date]{ max-width:180px; }
.map-input-wrap{ position:relative; flex:1; min-width:200px; }
.map-input-wrap input{ width:100%; }
.map-preview{ display:flex; align-items:center; gap:10px; margin-top:8px; border-radius: var(--r); background: var(--panel-2); border:1px solid var(--border-soft); max-width:300px; opacity:0; height:0; overflow:hidden; transition: all .3s var(--ease); padding:0 10px; }
.map-preview.show{ opacity:1; height:54px; padding:7px 10px; }
.map-preview img{ width:64px; height:38px; object-fit:cover; border-radius: var(--r-sm); }
.edit-banner{ display:flex; align-items:center; justify-content:space-between; gap:12px; background: var(--accent-soft); border:1px solid #d6332f55; padding:12px 18px; border-radius: var(--r); font-size:14px; margin-bottom:20px; }
.edit-banner button{ background:none; border:none; color: var(--accent-2); font-family: var(--display); font-weight:700; font-size:14px; letter-spacing:.1em; text-transform:uppercase; padding:0; }
.teams-wrap{ display:grid; grid-template-columns: 1fr 1fr; gap:18px; margin-bottom:6px; }
@media (max-width: 640px){ .teams-wrap{ grid-template-columns: 1fr; } }
.team-card{ background: var(--panel-2); border:1px solid var(--border-soft); border-radius: var(--r-lg); padding:20px; border-top: 2px solid var(--team-color, var(--accent)); }
.team-card-head input[type=text]{ font-family: var(--display); font-weight:700; text-transform:uppercase; font-size:20px; width:100%; background:none; border:none; padding:2px 0; color: var(--team-color, var(--ink)); }
.team-meta{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin:12px 0 14px; padding-bottom:14px; border-bottom:1px solid var(--border-soft); }
.rounds-field{ display:flex; align-items:center; gap:10px; }
.rounds-field label{ font-family: var(--display); font-size:14px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); }
.player-row{ display:grid; grid-template-columns: 1fr 64px 50px 50px 24px; gap:8px; margin-bottom:8px; align-items:center; }
.player-row input[type=text]{ padding:10px 12px; font-size:14px; }
.player-row input[type=number]{ width:100%; padding:10px 2px; font-size:14px; }
.player-row-header{ display:grid; grid-template-columns: 1fr 64px 50px 50px 24px; gap:8px; margin-bottom:8px; }
.player-row-header span{ font-family: var(--display); font-size:13px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); text-align:center; }
.mini-btn{ background:none; border:none; color: var(--ink-faint); width:24px; height:30px; font-size:18px; transition: color .2s ease; }
.mini-btn:hover{ color: var(--bad); }
.add-player-btn{ width:100%; margin-top:10px; background:none; border:1px dashed var(--border); color: var(--ink-faint); padding:11px; border-radius: var(--r); font-family: var(--display); font-size:14px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; transition: all .25s ease; }
.add-player-btn:hover{ border-color: var(--team-color, var(--ink-dim)); color: var(--team-color, var(--ink)); }
.form-actions{ display:flex; gap:12px; margin-top:24px; align-items:center; flex-wrap:wrap; }
.entry-toggle{ margin-bottom:24px; }
.import-help{ background: var(--panel-2); border:1px solid var(--border-soft); border-radius: var(--r-lg); padding:20px; margin-bottom:18px; }
.import-help-head{ display:flex; gap:12px; align-items:baseline; flex-wrap:wrap; margin-bottom:12px; }
.import-help-head b{ font-family: var(--display); font-weight:700; font-size:17px; text-transform:uppercase; }
.import-help-head span{ color: var(--ink-faint); font-size:14px; }
.import-format{ margin:0 0 12px; padding:14px; background: var(--bg-2); border:1px solid var(--border-soft); border-radius: var(--r); font-size:12.5px; line-height:1.6; overflow-x:auto; white-space:pre; color: var(--ink-dim); }
.import-rules{ margin:0 0 14px; padding-left:18px; font-size:14px; color: var(--ink-dim); line-height:1.9; }
.import-text{ width:100%; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size:13px; padding:14px; border:1px solid var(--border); border-radius: var(--r); background: var(--bg-2); color: var(--ink); resize:vertical; }
.import-text.drag{ border-color: var(--ink-dim); }
.import-file{ display:inline-block; margin-top:10px; font-family: var(--display); font-size:14px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color: var(--ink-dim); cursor:pointer; }
.import-file:hover{ color: var(--ink); }
.import-preview{ margin:16px 0; display:flex; flex-direction:column; gap:8px; }
.import-summary{ font-size:14px; color: var(--ink-dim); }
.import-summary .bad, .import-err{ color: var(--bad); }
.import-err{ font-size:13px; }
.import-game{ border:1px solid var(--border-soft); border-radius: var(--r); padding:12px 14px; background: var(--panel-2); }
.import-game.has-err{ border-color:#ef646170; }
.ig-head{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; font-size:14px; }
.ig-head .idx{ color: var(--ink-faint); font-weight:600; }
.ig-head b{ margin-left:auto; }
.ig-players{ font-size:13px; color: var(--ink-dim); margin-top:4px; }
.ig-players i{ color: var(--ink-faint); font-style:normal; margin:0 4px; }
.lock-screen{ text-align:center; padding: 70px 20px; }
.lock-screen .lock-icon{ width:52px; height:52px; margin:0 auto 20px; border-radius: var(--r); background: var(--panel-2); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; }
.lock-screen h3{ margin:0 0 8px; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size:28px; }
.lock-screen p{ color: var(--ink-faint); font-size:15px; margin:0 0 22px; }

/* =====================================================================
   TEAMS
   ===================================================================== */
.online-grid{ display:grid; grid-template-columns: repeat(auto-fill, minmax(180px,1fr)); gap:10px; margin-bottom:20px; }
.online-chip{ display:flex; align-items:center; gap:12px; padding:13px 16px; border-radius: var(--r); background: var(--panel-2); border:1px solid var(--border-soft); cursor:pointer; transition: border-color .25s ease, background .25s ease; }
.online-chip:hover{ border-color: var(--border); }
.online-chip.on{ border-color: var(--accent); background: var(--accent-soft); }
.online-chip .box{ width:16px; height:16px; border-radius: var(--r-sm); border:1.5px solid var(--border); flex-shrink:0; display:grid; place-items:center; transition: all .2s ease; }
.online-chip.on .box{ border-color: var(--accent); background: var(--accent); }
.online-chip.on .box::after{ content:""; width:5px; height:3px; border-left:1.5px solid #fff; border-bottom:1.5px solid #fff; transform: rotate(-45deg) translate(1px,-1px); }
.online-chip .nm{ font-family: var(--display); font-size:17px; font-weight:700; text-transform:uppercase; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.online-chip .ov{ font-family: var(--display); font-size:15px; font-weight:600; color: var(--ink-faint); }
.hint-line{ font-size:14px; color: var(--ink-faint); }
.gen-teams{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width: 640px){ .gen-teams{ grid-template-columns:1fr; } }
.gen-team{ background: var(--panel-2); border:1px solid var(--border-soft); border-radius: var(--r-lg); padding:22px; }
.gen-team h4{ margin:0 0 12px; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size:22px; }
.gen-player{ display:flex; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid var(--border-soft); font-size:15px; }
.gen-player:last-child{ border-bottom:none; }
.gen-player .nm{ flex:1; font-weight:600; }
.gen-player .ov{ font-family: var(--display); font-weight:700; font-size:17px; }
.verdict-banner{ text-align:center; padding:28px; border-radius: var(--r-lg); margin-top:18px; font-family: var(--display); font-size:30px; font-weight:700; text-transform:uppercase; animation: pop .4s var(--ease); }
.verdict-banner.good{ background:#3ecf8e12; color: var(--good); border:1px solid #3ecf8e40; }
.verdict-banner.neutral{ background: var(--panel-2); border:1px solid var(--border); }
.verdict-banner.bad{ background:#ef646112; color: var(--bad); border:1px solid #ef646140; }
.verdict-actions{ display:flex; justify-content:center; margin-top:14px; }
.followup{ display:flex; gap:12px; flex-wrap:wrap; align-items:flex-end; margin-bottom:14px; }
.followup input[type=text]{ flex:1; min-width:150px; }
.fu-rounds{ display:flex; flex-direction:column; gap:6px; }
.fu-rounds label{ font-family: var(--display); font-size:13px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-faint); }

/* =====================================================================
   HISTORY
   ===================================================================== */
.game-card{ background: var(--panel); border:1px solid var(--border-soft); border-radius: var(--r-lg); padding: clamp(18px, 2.6vw, 26px); margin-bottom:18px; animation: rise .6s var(--ease) both; transition: border-color .3s ease; }
.game-card:hover{ border-color: var(--border); }
.game-card-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; gap:12px; flex-wrap:wrap; }
.game-card-head .meta{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.game-card-head .idx{ font-family: var(--display); font-weight:700; font-size:22px; color: var(--ink-faint); }
.game-card-head .date{ font-family: var(--display); font-size:15px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-dim); }
.game-map-tag{ display:flex; align-items:center; gap:10px; }
.game-map-tag img{ width:52px; height:30px; object-fit:cover; border-radius: var(--r-sm); filter: brightness(.85); }
.game-map-tag .mn{ font-family: var(--display); font-size:17px; font-weight:700; text-transform:uppercase; }
.game-teams{ display:grid; grid-template-columns: 1fr 1fr; gap:14px; }
@media (max-width: 560px){ .game-teams{ grid-template-columns: 1fr; } }
.game-team{ background: var(--panel-2); border-radius: var(--r); padding:16px; border:1px solid var(--border-soft); }
.game-team.won{ border-color:#3ecf8e38; }
.game-team-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; gap:10px; }
.game-team-head .tn{ font-family: var(--display); font-size:15px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; display:flex; align-items:center; gap:8px; color: var(--ink-dim); }
.game-team-head .rounds{ font-family: var(--display); font-weight:700; font-size:22px; }
.gp-row{ display:flex; justify-content:space-between; align-items:center; gap:10px; font-size:14px; padding:9px 0; border-bottom:1px solid var(--border-soft); color:var(--ink-dim); }
.gp-row:last-child{ border-bottom:none; }
.gp-row .nm{ color: var(--ink); font-weight:600; }
.gp-row .line{ color: var(--ink-faint); font-variant-numeric:tabular-nums; font-size:13px; margin-left:auto; }
.gp-row .ovr-mini{ font-family: var(--display); font-weight:700; font-size:18px; min-width:26px; text-align:right; }
.del-game-btn, .edit-game-btn{ background:none; border:1px solid var(--border); color:var(--ink-faint); font-family: var(--display); font-size:13px; padding:5px 12px; border-radius: var(--r); font-weight:600; letter-spacing:.08em; text-transform:uppercase; transition:all .25s ease; }
.del-game-btn:hover{ color:var(--bad); border-color:#ef646160; }
.edit-game-btn:hover{ color:var(--ink); border-color: var(--ink-faint); }

/* =====================================================================
   OVERLAYS
   ===================================================================== */
.toast{ position: fixed; bottom: 28px; left:50%; transform: translateX(-50%) translateY(16px); background: rgba(236,236,236,.97); color: var(--bg); padding: 12px 22px; border-radius: var(--r); font-weight:600; font-size:14px; box-shadow: 0 18px 44px rgba(0,0,0,.5); z-index:400; opacity:0; pointer-events:none; transition: all .4s var(--ease); display:flex; align-items:center; gap:10px; }
.toast.show{ opacity:1; transform: translateX(-50%) translateY(0); }
.toast .dot{ width:7px; height:7px; background: var(--accent); flex-shrink:0; }
.toast.success .dot{ background:#1f9e62; }
.confirm-overlay{ display:none; position:fixed; inset:0; background: rgba(5,5,6,.75); z-index:300; align-items:center; justify-content:center; padding:18px; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.confirm-overlay.active{ display:flex; }
.confirm-box{ background: var(--panel); border:1px solid var(--border); border-radius: var(--r-lg); padding:30px; max-width:400px; width:100%; animation: pop .3s var(--ease); box-shadow: 0 30px 80px rgba(0,0,0,.6); }
.confirm-box h3{ margin:0 0 20px; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size:30px; }
.confirm-box p{ font-size:15px; color: var(--ink-dim); margin: 0 0 22px; }
.confirm-box .err{ color: var(--bad); font-size:13px; min-height:16px; margin:-4px 0 14px; }
.confirm-box .field input{ width:100%; }
.confirm-actions{ display:flex; gap:10px; justify-content:flex-end; }

/* =====================================================================
   RESPONSIVE + MOTION
   ===================================================================== */
@media (max-width: 760px){
  .lb-row{ grid-template-columns: 36px 1fr 100px; padding:14px 8px; }
  .lb-row .stat-col, .lb-row.header .stat-col{ display:none; }
  .lb-row.header{ padding: 0 8px 10px; }
  .view:not(#view-home){ padding-top: 120px; }
}
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  [data-reveal]{ opacity:1; transform:none; }
  .grain{ display:none; }
}

/* Phones: two portrait cards per row (kept last so it wins over the base rule). */
@media (max-width: 600px){
  .scene-static .deck{ grid-template-columns: 1fr 1fr; gap:10px; }
  .scene-static .op-name{ font-size:20px; }
}
body{ overflow-x:hidden; }

/* =====================================================================
   GAME VIEW — one game, cinematic
   ===================================================================== */
.gv-hero{ position:relative; min-height: 440px; display:flex; flex-direction:column; justify-content:flex-end; padding-bottom: 40px; margin-bottom: 40px; }
.gv-bg{ position:absolute; z-index:-1; top:-150px; bottom:0; left: calc(50% - 50vw); right: calc(50% - 50vw); background-size:cover; opacity:.5; -webkit-mask-image: linear-gradient(180deg, #000 45%, transparent 100%); mask-image: linear-gradient(180deg, #000 45%, transparent 100%); }
.gv-hero::before{ content:""; position:absolute; z-index:-1; top:-150px; bottom:0; left: calc(50% - 50vw); right: calc(50% - 50vw); background: linear-gradient(90deg, rgba(12,13,15,.9), rgba(12,13,15,.25) 70%); }
.gv-meta{ font-family: "Zen Kaku Gothic New", var(--sans); font-weight:300; font-size:13px; letter-spacing:.24em; text-transform:uppercase; color: rgba(255,255,255,.6); }
.gv-map{ margin: 10px 0 0; font-family: var(--display); font-weight:700; text-transform:uppercase; font-size: clamp(48px, 7vw, 96px); line-height:.9; animation: slideIn .8s var(--ease) both; }
.gv-score{ display:flex; align-items:center; gap:20px; margin-top:18px; font-family: var(--display); font-weight:700; font-size: clamp(40px, 5vw, 64px); line-height:1; color: var(--ink-faint); }
.gv-score span.won{ color: var(--ink); }
.gv-score i{ width:28px; height:2px; background: var(--ink-faint); }
.gv-mvp{ margin-top:22px; font-family: "Zen Kaku Gothic New", var(--sans); font-weight:300; font-size:16px; letter-spacing:.06em; color: rgba(255,255,255,.8); }
.gv-mvp b{ font-weight:500; letter-spacing:.14em; text-transform:uppercase; margin: 0 10px; color:#fff; }
.gv-pin{ align-self:flex-start; margin-top:24px; }
.gv-teams{ display:grid; grid-template-columns: 1fr 1fr; gap:24px; }
@media (max-width: 820px){ .gv-teams{ grid-template-columns: 1fr; } }
.gv-team{ background: var(--panel); border:1px solid var(--border-soft); border-radius: var(--r-lg); padding: 20px; }
.gv-team.won{ border-color: #3ecf8e38; }
.gv-team-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:12px; font-family: var(--display); font-weight:600; font-size:16px; letter-spacing:.1em; text-transform:uppercase; color: var(--ink-dim); }
.gv-team-head b{ font-size:34px; font-weight:700; color: var(--ink); letter-spacing:0; }
.gv-row{ display:grid; grid-template-columns: 46px 1fr 54px 64px 50px 44px; align-items:center; gap:12px; width:100%; padding:10px 0; background:none; border:none; border-top:1px solid var(--border-soft); text-align:left; color: var(--ink); }
.gv-row:hover .gv-name{ color: var(--accent-2); }
.gv-name{ font-family: var(--display); font-weight:700; font-size:19px; text-transform:uppercase; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; transition: color .2s ease; }
.gv-stat{ font-size:12px; color: var(--ink-faint); text-align:right; letter-spacing:.06em; }
.gv-stat b{ font-family: var(--display); font-weight:700; font-size:18px; color: var(--ink); margin-right:3px; letter-spacing:0; }
.gv-ovr{ font-family: var(--display); font-weight:700; font-size:22px; text-align:right; }
@media (max-width: 520px){ .gv-row{ grid-template-columns: 40px 1fr 44px 36px; } .gv-row .gv-stat:nth-of-type(2), .gv-row .gv-stat:nth-of-type(3){ display:none; } .gv-row .avatar{ width:40px; height:40px; } }

/* History game cards open the game view. */
.game-card{ cursor:pointer; }

/* =====================================================================
   INTRO — first visit only, ~1.5s: red bars rise, M and W slide in and lock,
   then the mark pushes toward you and fades into the page.
   ===================================================================== */
.intro{ position:fixed; inset:0; z-index:500; display:flex; align-items:center; justify-content:center; background:#000; transition: opacity .45s ease; }
.intro[hidden]{ display:none; }
.intro.out{ opacity:0; pointer-events:none; }
.intro-logo{ width: min(360px, 62vw); height:auto; overflow:visible; transition: transform .5s cubic-bezier(.5,0,.75,0); }
.intro.out .intro-logo{ transform: scale(1.35); }
.ip{ transform-box: fill-box; }
.ip-b{ transform-origin: 50% 100%; transform: scaleY(0); animation: introBar .42s cubic-bezier(.2,.8,.2,1) forwards; }
.ip-b1{ animation-delay: .05s; } .ip-b2{ animation-delay: .15s; } .ip-b3{ animation-delay: .25s; }
.ip-m{ opacity:0; transform: translateX(-60px); animation: introIn .45s cubic-bezier(.2,.8,.2,1) .35s forwards; }
.ip-w{ opacity:0; transform: translateX(60px); animation: introIn .45s cubic-bezier(.2,.8,.2,1) .35s forwards; }
@keyframes introBar{ to{ transform: scaleY(1); } }
@keyframes introIn{ to{ opacity:1; transform:none; } }

/* Menu: the page you're on */
.menu-item.active{ color: var(--ink); }
.menu-item.active i{ color: var(--accent-2); }

/* Phones/tablets: stacked home layout even before (or without) the JS check,
   and no tap delay. */
button, a{ touch-action: manipulation; }
@media (max-width: 899px){
  .scene{ height:auto !important; }
  .scene .hero{ position:relative; height:auto; min-height:0; overflow:visible; background:none; padding-bottom:32px; }
  .scene .hero-media, .scene .hero-shade{ height: 88svh; bottom:auto; }
  .scene .scene-dim, .scene .scroll-cue{ display:none; }
  .scene .feature{ position:relative; top:auto; bottom:auto; left:auto; transform:none; opacity:1; padding: 42svh var(--gutter) 0; max-width: 640px; }
  .scene .deck{ position:relative; inset:auto; display:grid; grid-template-columns: 1fr 1fr; gap:10px; padding: 40px var(--gutter) 0; pointer-events:auto; }
  .scene .op-card{ position:relative; width:auto !important; height:auto !important; aspect-ratio: 3/4; transform:none !important; --e:.4; }
  .scene .op-name{ font-size:20px; }
  .feature-title{ font-size: 46px; }
  .feature-chips{ max-height:none; opacity:1; margin-top:20px; }
}
.gamelog-table tbody tr[data-gid]{ cursor:pointer; }
.gamelog-table tbody tr[data-gid]:hover td.nm{ color: var(--accent-2); }

/* Hall of Shame: same shots, drained of colour with a red cast. */
.fame-card.shame::before{ filter: grayscale(1) brightness(.5) contrast(1.1); }
.fame-card.shame::after{ background: linear-gradient(0deg, rgba(40,4,4,.9) 0%, rgba(120,10,10,.25) 55%, rgba(0,0,0,0) 80%); }
.fame-card.shame:hover::before{ filter: grayscale(.6) brightness(.62) contrast(1.1); }
.fame-card.shame .fame-stat{ color: #ff8f8a; }

/* Phones: one wide featured card, then a 2×2 grid of portrait cards, sliding
   up one after another as they come into view. */
@keyframes cardUp{ from{ opacity:0; translate: 0 28px; } to{ opacity:1; translate: 0 0; } }
@media (max-width: 899px){
  .scene .deck{ grid-template-columns: 1fr 1fr; gap:12px; }
  .scene .op-card:first-child{ grid-column: 1 / -1; aspect-ratio: 16/9; }
  .scene .op-card:first-child .op-name{ font-size:26px; left:18px; right:18px; text-align:left; bottom:16px; }
  .scene .op-card{ aspect-ratio: 3/4; opacity:0; }
  .scene .deck.in .op-card{ animation: cardUp .7s var(--ease) both; animation-delay: calc(var(--i) * 90ms); }
  .scene .hero-media, .scene .hero-shade{ height: 92svh; }
  .scene .feature{ padding-top: 46svh; }
}
@media (max-width: 899px) and (prefers-reduced-motion: reduce){ .scene .op-card{ opacity:1; } }
#view-shame .page-head{ --img: url('/assets/cine/intro.jpg'); }
