
:root{
  /* A nav valódi magassága; a nav.js méri és írja felül futásidőben. */
  --nav-h:94px;
  --bg:#07111d;--bg2:#0c1b2e;--bg3:#111e33;--bg4:#182740;
  --amber:#f0a500;--amber2:#ffc840;--red:#e63946;--green:#27ae60;
  --teal:#2ec4b6;--gray:#8899aa;--light:#dde8f4;--white:#fff;
  --border:rgba(255,255,255,.08);--card:rgba(255,255,255,.04);

  /* One type scale instead of fourteen ad-hoc sizes. New markup uses these;
     existing rules keep their literal values until they are touched. */
  --fs-xs:.68rem; --fs-sm:.75rem; --fs-md:.82rem; --fs-lg:.95rem; --fs-xl:1.15rem;
  /* 4px rhythm */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px;
  --radius:8px; --radius-sm:6px;
  --shadow:0 12px 32px rgba(0,0,0,.5);

  /* The interface font. Arial was the single biggest thing making a genuinely
     serious analysis tool look like a school project. */
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--light);font-family:var(--font);font-size:14px;min-height:100vh;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

/* Figures line up in columns instead of drifting, which is most of what makes
   a stats table read as trustworthy. */
table,.stat,.v,.bp,.mini-stats,.jsy,.win-chip,.loss-chip,.mp-date,.pct,.num{
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* Nothing here is load-bearing motion, so honour the OS setting outright. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* A visible focus ring everywhere, for keyboard users and for screen readers
   that follow it. */
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

/* ── scrollbars ──
   The platform default is a light grey slab that sits on a near-black page
   looking like a rendering fault. Themed once, globally, so every panel that
   scrolls — filter column, scene list, match picker, modals — matches.
   Firefox takes the two-colour form; WebKit and Chromium take the parts. */
/* Drawn icons (see icon() in ui-kit.js). They sit on the text baseline and
   take the colour of whatever they are inside, so every existing hover and
   active rule keeps applying to them without a second set of colour rules. */
.ic{display:inline-block;vertical-align:-0.15em;flex-shrink:0}
button .ic,label .ic{pointer-events:none}

*{scrollbar-width:thin;scrollbar-color:rgba(240,165,0,.4) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:rgba(255,255,255,.03);border-radius:99px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:99px;
  border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(240,165,0,.55);background-clip:content-box}
::-webkit-scrollbar-corner{background:transparent}

/* Set while a modal or overlay is open. */
body.scroll-locked{overflow:hidden}

/* Set while the selected team's match files are still downloading: the old
   team's numbers stay visible but are visibly not current, instead of sitting
   there fully legible under the new team's name. */
body.data-loading .section.active{opacity:.42;pointer-events:none;filter:saturate(.5);
  transition:opacity .15s ease}

/* ── NAV ── */
nav{position:sticky;top:0;z-index:200;background:rgba(7,17,29,.97);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.nav-row{display:flex;align-items:center;padding:0 20px;flex-wrap:wrap;gap:10px}
.nav-row-top{border-bottom:1px solid rgba(255,255,255,.05);min-height:44px;justify-content:space-between}
.nav-row-main{min-height:50px;justify-content:space-between}
.logo-block{display:flex;align-items:baseline;gap:8px;padding:10px 0;white-space:nowrap}
.logo{font-size:1rem;font-weight:900;color:var(--amber);letter-spacing:2px}
.logo-sub{font-size:.66rem;color:var(--gray);letter-spacing:.12em;font-weight:600}
.tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin}
.tabs::-webkit-scrollbar{height:3px}
.tabs::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.tab{padding:13px 14px;font-size:.73rem;font-weight:700;letter-spacing:.05em;cursor:pointer;
  border:none;background:none;color:var(--gray);transition:.2s;position:relative;white-space:nowrap;flex-shrink:0}
.tab:hover{color:var(--light)}
.tab.active{color:var(--amber)}
.tab.active::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--amber)}
.nav-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.win-chip{background:rgba(39,174,96,.2);color:#4ade80;padding:1px 7px;border-radius:3px;
  font-size:.72rem;font-weight:700;font-family:monospace}
.loss-chip{background:rgba(230,57,70,.2);color:#ff6b7a;padding:1px 7px;border-radius:3px;
  font-size:.72rem;font-weight:700;font-family:monospace}

/* ── TEAM SELECTOR (top right) ── */
.team-picker{display:flex;align-items:center;gap:8px;padding:8px 0;white-space:nowrap}
.team-picker-label{font-size:.64rem;letter-spacing:.12em;color:var(--gray);font-weight:700}
#team-select,#league-select{background:var(--bg3);border:1px solid var(--border);color:var(--white);
  font-size:.82rem;font-weight:700;padding:7px 30px 7px 12px;border-radius:6px;cursor:pointer;
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23f0a500'><path d='M5 7l5 5 5-5z'/></svg>");
  background-repeat:no-repeat;background-position:right 9px center;background-size:13px;
  min-width:140px;max-width:200px}
#team-select:hover,#league-select:hover{border-color:var(--amber)}
#league-select{min-width:120px;max-width:180px}
#team-select:focus{outline:none;border-color:var(--amber)}

/* ── LOGIN SCREEN ──
   A belépőkártya középen áll. Mögötte nagyon lassan mozgó fényfoltok adják a
   mélységet, a kártya körül pedig egy rotációs gyűrű forog: hat pont lép
   körbe, mindig egy világít erősebben — ez a röplabda saját köre, pályarajz
   nélkül. Minden CSS, kép nélkül; csökkentett mozgásnál minden megáll. */
.login-screen{position:relative;min-height:100vh;min-height:100dvh;display:flex;align-items:center;
  justify-content:center;background:var(--bg);padding:24px;overflow:hidden;box-sizing:border-box}
.login-glow{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.login-glow i{position:absolute;display:block;border-radius:50%;filter:blur(80px);opacity:.95}
.login-glow .g1{width:56vmax;height:56vmax;left:-16vmax;top:-20vmax;
  background:radial-gradient(circle,rgba(240,165,0,.55),transparent 60%);animation:lg-drift 34s ease-in-out infinite}
.login-glow .g2{width:48vmax;height:48vmax;right:-14vmax;bottom:-16vmax;
  background:radial-gradient(circle,rgba(46,196,182,.48),transparent 60%);animation:lg-drift2 41s ease-in-out infinite}
.login-glow .g3{width:34vmax;height:34vmax;right:12vmax;top:-10vmax;
  background:radial-gradient(circle,rgba(63,127,214,.40),transparent 62%);animation:lg-drift 47s ease-in-out infinite reverse}
@keyframes lg-drift{0%,100%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(6vmax,4vmax,0) scale(1.12)}}
@keyframes lg-drift2{0%,100%{transform:translate3d(0,0,0) scale(1.05)}
  50%{transform:translate3d(-5vmax,-6vmax,0) scale(.92)}}

.login-center{position:relative;z-index:1;margin:auto}
.login-ringwrap{position:relative;display:flex;align-items:center;justify-content:center;
  padding:60px;--ring-r:340px}
.login-ring{position:absolute;inset:0;pointer-events:none;
  animation:lr-spin 36s linear infinite}
/* A hat pont a gyűrű mentén. A kártya elfedi a belsejét, így a pontok a
   széleken keringenek. */
.lr-dot{position:absolute;left:50%;top:50%;width:13px;height:13px;margin:-6.5px;border-radius:50%;
  background:var(--amber);opacity:.45;box-shadow:0 0 10px 1px rgba(240,165,0,.35);
  animation:lr-flash 18s linear infinite}
.lr-dot.d1{transform:rotate(0deg)   translate(0,calc(-1 * var(--ring-r)))}
.lr-dot.d2{transform:rotate(60deg)  translate(0,calc(-1 * var(--ring-r)));animation-delay:-15s}
.lr-dot.d3{transform:rotate(120deg) translate(0,calc(-1 * var(--ring-r)));animation-delay:-12s}
.lr-dot.d4{transform:rotate(180deg) translate(0,calc(-1 * var(--ring-r)));animation-delay:-9s}
.lr-dot.d5{transform:rotate(240deg) translate(0,calc(-1 * var(--ring-r)));animation-delay:-6s}
.lr-dot.d6{transform:rotate(300deg) translate(0,calc(-1 * var(--ring-r)));animation-delay:-3s}
@keyframes lr-flash{
  0%{opacity:1;transform-origin:center;box-shadow:0 0 22px 7px rgba(240,165,0,.75)}
  16%{opacity:.45;box-shadow:0 0 10px 1px rgba(240,165,0,.35)}
  100%{opacity:.45;box-shadow:0 0 10px 1px rgba(240,165,0,.35)}}
@keyframes lr-spin{to{transform:rotate(360deg)}}
/* Lélegző gyűrűk a kártya mögött. */
/* Körbeforgó világító ív a gyűrűn: ez adja a mozgás fő látványát. */
.lr-arc{position:absolute;left:50%;top:50%;width:calc(var(--ring-r) * 2);height:calc(var(--ring-r) * 2);
  margin-left:calc(-1 * var(--ring-r));margin-top:calc(-1 * var(--ring-r));overflow:visible;
  animation:lr-spin 12s linear infinite}
.lr-track{fill:none;stroke:rgba(255,255,255,.07);stroke-width:1.2}
.lr-sweep{fill:none;stroke:url(#lrg);stroke-width:2.6;stroke-linecap:round;
  stroke-dasharray:150 453;filter:drop-shadow(0 0 6px rgba(240,165,0,.5))}
.lr-pulse{position:absolute;left:50%;top:50%;width:calc(var(--ring-r) * 2);height:calc(var(--ring-r) * 2);
  margin-left:calc(-1 * var(--ring-r));margin-top:calc(-1 * var(--ring-r));border-radius:50%;
  border:1px solid rgba(240,165,0,.18);animation:lr-breathe 9s ease-out infinite}
.lr-pulse.lr-p2{animation-delay:4.5s;border-color:rgba(46,196,182,.16)}
@keyframes lr-breathe{0%{transform:scale(.86);opacity:0}
  35%{opacity:.85}100%{transform:scale(1.18);opacity:0}}

.login-box{position:relative;z-index:2;background:var(--bg2);border:1px solid var(--border);
  border-radius:16px;padding:32px 30px;width:100%;max-width:380px;
  box-shadow:0 30px 80px rgba(0,0,0,.6);box-sizing:border-box}
.login-logo{display:flex;flex-direction:column;align-items:center;gap:4px;margin-bottom:6px;text-align:center}
.login-logo .logo{font-size:1.3rem;font-weight:900;color:var(--amber);letter-spacing:2px}
.login-logo .logo-sub{font-size:.72rem;color:var(--gray);letter-spacing:.14em;font-weight:600}
.login-claim{text-align:center;color:var(--light);font-size:.84rem;margin:0 0 22px;line-height:1.5}
.login-input{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--white);
  font-size:1rem;padding:12px 14px;border-radius:8px;margin-bottom:12px}
.login-input:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px rgba(240,165,0,.18)}
.login-input::placeholder{color:var(--gray)}
.login-btn{width:100%;background:var(--amber);color:var(--bg);border:none;font-weight:700;
  font-size:.9rem;padding:12px;border-radius:8px;cursor:pointer;margin-top:4px}
.login-btn:hover{background:var(--amber2)}
.login-btn:focus-visible{outline:2px solid var(--amber2);outline-offset:2px}
.login-btn:disabled{opacity:.6;cursor:default}
.login-error{margin-top:12px;padding:10px 12px;background:rgba(230,57,70,.12);
  border:1px solid rgba(230,57,70,.35);color:#ff8a95;font-size:.8rem;border-radius:6px;text-align:center}

/* Gépelés közben, háttérbe került fülön és belépés után minden megáll. */
.login-still .login-glow i,
.login-still .lr-dot,
.login-still .lr-pulse,
.login-still .login-ring,
.login-still .lr-arc{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){
  .login-glow i,.lr-dot,.lr-pulse,.login-ring,.lr-arc{animation:none}
  .lr-pulse{opacity:.5;transform:scale(1)}
}
@media (max-width:900px){
  .login-ringwrap{--ring-r:270px}
}
@media (max-width:560px){
  .login-screen{padding:16px}
  .login-ringwrap{padding:34px;--ring-r:200px}
  .login-glow i{filter:blur(70px)}
}

/* ── USER / LOGOUT (top right of nav) ── */
.user-picker{display:flex;align-items:center;gap:12px;padding:8px 0;white-space:nowrap;
  margin-left:auto;justify-content:flex-end}
.user-email{font-size:.78rem;color:var(--light);font-weight:600;max-width:none;
  overflow:hidden;text-overflow:ellipsis;padding:5px 11px;border-radius:6px;
  background:rgba(255,255,255,.05);border:1px solid var(--border)}
.logout-btn{background:rgba(255,255,255,.06);border:1px solid var(--border);color:var(--light);
  font-size:.74rem;font-weight:700;padding:7px 12px;border-radius:6px;cursor:pointer;white-space:nowrap}
.logout-btn:hover{border-color:rgba(230,57,70,.5);color:#ff8a95}

/* ── MATCH PICKER (top right, next to team picker) ── */
.match-picker{position:relative;display:flex;align-items:center;gap:10px;padding:10px 0;white-space:nowrap}
.match-picker-btn{background:var(--bg3);border:1px solid var(--border);color:var(--white);
  font-size:.83rem;font-weight:700;padding:8px 14px;border-radius:6px;cursor:pointer;white-space:nowrap}
.match-picker-btn:hover{border-color:var(--amber)}
.match-picker-btn.filtered{border-color:var(--amber);color:var(--amber)}
.match-picker-panel{position:absolute;top:100%;right:0;margin-top:6px;background:var(--bg2);
  border:1px solid var(--border);border-radius:8px;min-width:290px;max-width:360px;
  max-height:min(70vh,520px);z-index:300;box-shadow:0 12px 32px rgba(0,0,0,.5);
  display:flex;flex-direction:column;overflow:hidden}
/* Only the match list scrolls. Everything the coach acts on — search, presets,
   and above all Alkalmaz — stays on screen however long the list is. */
.match-picker-panel .mp-search,
.match-picker-panel .mp-actions{flex:0 0 auto}
.match-picker-panel .mp-actions{margin:0 12px 10px;padding-bottom:10px}
.match-picker-panel .mp-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 12px 8px;
  overscroll-behavior:contain}
.match-picker-panel .mp-foot,
.match-picker-panel .mp-note{flex:0 0 auto}
.match-picker-panel .mp-foot{background:var(--bg2);box-shadow:0 -6px 14px rgba(0,0,0,.35)}
.mp-actions{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.mp-preset{background:rgba(240,165,0,.1);border:1px solid rgba(240,165,0,.3);color:var(--amber);
  font-size:.7rem;font-weight:700;padding:5px 10px;border-radius:5px;cursor:pointer;white-space:nowrap}
.mp-preset:hover{background:rgba(240,165,0,.2)}
.mp-list{display:flex;flex-direction:column;gap:2px}
.mp-item{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--light);cursor:pointer;
  padding:6px 4px;border-radius:4px}
.mp-item:hover{background:rgba(255,255,255,.04);color:var(--white)}
.mp-item input{accent-color:#f0a500;cursor:pointer;flex-shrink:0}
/* A fixed-width slot whether or not there is a video, so the dates stay in a
   column instead of jittering left and right down the list. */
.mp-vid{width:15px;flex-shrink:0;color:var(--gray);display:flex;align-items:center;justify-content:center}
/* Amber = central video: this match can be shown on a shared match sheet.
   Grey = a file on this machine only. */
.mp-vid.central{color:var(--amber)}
.mp-vid.off{color:transparent}
.mp-vid.off svg{display:none}
.mp-item .mp-date{color:var(--gray);font-family:monospace;font-size:.72rem;min-width:76px}

/* ── SECTIONS ── */
.section{display:none;padding:24px 20px;max-width:1300px;margin:0 auto}
.section.active{display:block}

/* ── HERO ── */
.hero{background:linear-gradient(135deg,var(--bg2),var(--bg3));border:1px solid var(--border);
  border-radius:12px;padding:24px 28px;margin-bottom:22px;position:relative;overflow:hidden}
.hero::after{content:'';position:absolute;right:-80px;top:-80px;width:260px;height:260px;
  background:radial-gradient(circle,rgba(240,165,0,.12) 0%,transparent 70%);pointer-events:none}
.hero-tag{font-size:.68rem;letter-spacing:.2em;color:var(--amber);font-weight:700;margin-bottom:6px;text-transform:uppercase}
.hero h1{font-size:2rem;font-weight:900;color:var(--white);line-height:1.1;margin-bottom:10px}
.hero h1 span{color:var(--amber)}
.hero-meta{display:flex;gap:22px;flex-wrap:wrap;margin-top:10px}
.meta-m .l{font-size:.65rem;letter-spacing:.1em;color:var(--gray);text-transform:uppercase}
.meta-m .v{font-size:.9rem;font-weight:700;color:var(--white);margin-top:1px}

/* ── UPLOAD TAB ── */
.upload-title{font-size:.85rem;font-weight:700;letter-spacing:.1em;color:#5ec8e6;
  text-transform:uppercase;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.upload-title::after{content:'';flex:1;height:1px;background:var(--border)}
.dropzone{border:2px dashed rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.02);
  padding:44px 20px;text-align:center;cursor:pointer;transition:.2s;margin-bottom:32px}
.dropzone:hover, .dropzone.drag-over{border-color:var(--amber);background:rgba(240,165,0,.05)}
.dropzone-title{font-size:1.05rem;font-weight:700;color:var(--white);letter-spacing:.03em;margin-bottom:8px}
.dropzone-sub{font-size:.8rem;color:var(--gray)}
.match-list{border:1px solid var(--border);border-radius:10px;overflow:hidden}
.match-row{display:grid;
  grid-template-columns:22px 104px minmax(0,1.25fr) minmax(150px,1.55fr) minmax(0,.95fr) minmax(0,190px) 28px;
  gap:8px;align-items:center;
  padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.05)}
.match-row:last-child{border-bottom:none}
.match-row:hover{background:rgba(255,255,255,.02)}
.mr-date{font-size:.82rem;color:var(--gray);font-family:monospace}
.mr-match{font-size:.87rem;color:var(--light)}
.mr-result{font-size:.85rem;color:var(--white);font-weight:700}
.mr-sets{font-weight:400;color:var(--gray);font-size:.78rem;font-family:monospace}
.mr-comp{font-size:.78rem;color:var(--gray)}
.mr-del{background:rgba(230,57,70,.1);border:1px solid rgba(230,57,70,.25);color:#ff6b7a;
  width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:1rem;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:.2s}
.mr-del:hover{background:rgba(230,57,70,.25)}
#storage-warning{display:none;gap:10px;align-items:flex-start;padding:12px 16px;border-radius:8px;
  margin-bottom:16px;background:rgba(240,165,0,.1);border:1px solid rgba(240,165,0,.3)}

/* ── TABLE ── */
.mt table, .ov-table, .recv-table{width:100%;border-collapse:collapse;font-size:.82rem}
.mt th, .ov-table th, .recv-table th{padding:8px 11px;text-align:left;font-size:.69rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--gray);border-bottom:1px solid var(--border)}
.mt td, .ov-table td, .recv-table td{padding:8px 11px;border-bottom:1px solid rgba(255,255,255,.04)}
.mt tr:hover td, .ov-table tr:hover td, .recv-table tr:hover td{background:rgba(255,255,255,.025)}
.mt{background:var(--card);border:1px solid var(--border);border-radius:10px;overflow-x:auto}
.profile-grid{display:grid;grid-template-columns:320px 1fr;gap:20px;align-items:center}
.mt table{margin:0}
.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:18px}

/* ── ST TITLE ── */
.st{font-size:1.1rem;font-weight:700;color:var(--white);letter-spacing:.04em;
  margin:22px 0 14px;display:flex;align-items:center;gap:8px}
.st::after{content:'';flex:1;height:1px;background:var(--border)}

/* ── PLAYER GRID ── */
.player-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-bottom:18px}
.player-card{background:var(--card);border:1px solid var(--border);border-radius:9px;
  padding:12px 14px;display:flex;gap:10px;align-items:center;transition:.2s}
.player-card:hover{border-color:var(--amber);background:rgba(240,165,0,.06)}
.player-card .num{font-size:1.7rem;font-weight:900;color:var(--amber);min-width:32px;text-align:center}
.player-card .info .name{font-weight:700;font-size:.85rem;color:var(--white)}
.player-card .info .role{font-size:.7rem;margin-top:2px}
.player-card .info .mini-stats{font-size:.7rem;color:var(--gray);margin-top:4px;font-family:monospace}
.rb{display:inline-block;padding:1px 6px;border-radius:3px;font-size:.68rem;font-weight:700}
.rF{background:rgba(240,165,0,.2);color:var(--amber)}
.rL{background:rgba(46,196,182,.2);color:var(--teal)}
.rC{background:rgba(99,102,241,.2);color:#818cf8}
.rS{background:rgba(34,197,94,.2);color:#4ade80}
.rA{background:rgba(251,146,60,.2);color:#fb923c}

/* ── ALERT ── */
.al{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;border-radius:8px;margin-bottom:12px}
.alr{background:rgba(230,57,70,.1);border:1px solid rgba(230,57,70,.3)}
.ala{background:rgba(240,165,0,.1);border:1px solid rgba(240,165,0,.3)}
.alg{background:rgba(39,174,96,.1);border:1px solid rgba(39,174,96,.3)}
.alt{background:rgba(46,196,182,.1);border:1px solid rgba(46,196,182,.3)}
.alr .at{color:var(--red)}.ala .at{color:var(--amber)}.alg .at{color:var(--green)}.alt .at{color:var(--teal)}
.at{font-weight:700;font-size:.88rem;margin-bottom:2px}.ad{font-size:.79rem;color:var(--gray);line-height:1.5}
.ai{font-size:1.3rem;flex-shrink:0}

/* ── ATTACK TAB ── */
.atk-selector{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.atk-selector-label{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--gray);margin-bottom:7px}

.pos-btn{padding:5px 10px;border-radius:5px;border:1px solid var(--border);background:var(--card);
  color:var(--gray);font-size:.7rem;font-weight:700;cursor:pointer;transition:.2s;white-space:nowrap}
.pos-btn:hover{border-color:var(--amber);color:var(--light)}
.pos-btn.active{background:var(--amber);color:var(--bg);border-color:var(--amber)}

.grade-filter-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:18px;
  padding:10px 12px;background:var(--card);border:1px solid var(--border);border-radius:8px}
.grade-filter-btn{padding:6px 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg3);
  color:var(--gray);font-size:.74rem;font-weight:700;cursor:pointer;transition:.2s;white-space:nowrap}
.grade-filter-btn:hover{border-color:var(--amber);color:var(--light)}
.grade-filter-btn.active{background:var(--amber);color:var(--bg);border-color:var(--amber)}
.atk-btn{display:flex;align-items:center;gap:9px;padding:8px 13px 8px 9px;border-radius:8px;
  border:1px solid var(--border);background:var(--card);text-align:left;
  color:var(--gray);font-size:.78rem;font-weight:700;cursor:pointer;transition:.2s;white-space:nowrap}
.atk-btn:hover{border-color:var(--amber);color:var(--light)}
.atk-btn.active{background:rgba(240,165,0,.14);border-color:var(--amber);
  box-shadow:0 0 0 1px var(--amber) inset}
.atk-btn-jsy{flex:0 0 auto;width:28px;height:28px;border-radius:6px;background:rgba(255,255,255,.07);
  color:var(--gray);display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:.82rem;font-family:monospace}
.atk-btn.active .atk-btn-jsy{background:var(--amber);color:#12100a}
.atk-btn-txt{display:flex;flex-direction:column;gap:1px;min-width:0}
.atk-btn-name{font-size:.82rem;font-weight:700;color:var(--light);white-space:nowrap}
.atk-btn.active .atk-btn-name{color:var(--white)}
.atk-btn-sub{font-size:.66rem;color:var(--gray);white-space:nowrap}

.atk-panel.active{display:block}

@media(max-width:780px){.atk-panel.active{grid-template-columns:1fr}}

/* ── STAT BOX ── */
.sb{background:var(--card);border:1px solid var(--border);border-radius:7px;padding:10px 14px;text-align:center}
.sv{font-size:1.6rem;font-weight:900;color:var(--amber)}
.sl{font-size:.67rem;letter-spacing:.08em;color:var(--gray);text-transform:uppercase}

/* ── BAR ── */
.bw{display:flex;flex-direction:column;gap:5px}
.br{display:flex;align-items:center;gap:8px}
.bl{font-size:.77rem;color:var(--gray);min-width:170px}
.bt{flex:1;height:7px;background:rgba(255,255,255,.07);border-radius:3px;overflow:hidden}
.bf{height:100%;border-radius:3px;transition:width .6s ease}
.bp{font-family:monospace;font-size:.75rem;color:var(--white);min-width:34px;text-align:right}

/* ── CARD HEADER ── */
.ch{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.ch h3{font-size:.9rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--white)}

/* ── ROTATION GRID ── */
.rg{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}
.rc{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px;text-align:center}
.rc .rn{font-size:1.5rem;font-weight:900;color:var(--amber)}
.rc .rs{font-size:.68rem;color:var(--gray);margin-bottom:6px}
.rpr{display:flex;align-items:center;gap:4px;margin-bottom:2px}
.rpd{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.rpn{font-size:.69rem;color:var(--light);flex:1;text-align:left}
.rpp{font-size:.69rem;color:var(--white);font-weight:700;min-width:26px;font-family:monospace}

/* ── SERVE COURT ── */
.serve-court{background:var(--card);border:1px solid var(--border);border-radius:10px;
  padding:18px;display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:start;margin-bottom:20px}
@media(max-width:680px){.serve-court{grid-template-columns:1fr}}

/* ── JERSEY / TAG ── */
.jsy{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;
  background:var(--bg3);border-radius:4px;font-family:monospace;font-size:.77rem;font-weight:700;color:var(--amber)}
.tag{display:inline-block;padding:1px 6px;border-radius:3px;font-size:.68rem;font-weight:700;margin-left:4px}
.td{background:var(--red);color:white}.tw{background:var(--amber);color:var(--bg)}

/* ── EMPTY STATE ── */
.empty-state{text-align:center;padding:60px 20px;color:var(--gray)}

.empty-title{font-size:1rem;font-weight:700;color:var(--white);margin-bottom:6px}
.empty-desc{font-size:.84rem;max-width:420px;margin:0 auto;line-height:1.5}

/* ── GRADE LEGEND ── */

.gl{color:var(--gray)}

/* ── ANIM ── */
@keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.section.active .card,.section.active .atk-btn,.section.active .rc,.section.active .player-card{
  animation:fadeInUp .3s ease forwards}

/* ══════════════════════════════════════════════════════════════
   RESPONSIVE / MOBILE
   ══════════════════════════════════════════════════════════════ */

/* Tablet and below */
@media(max-width:900px){
  .profile-grid{grid-template-columns:1fr}
  .rg{grid-template-columns:repeat(2,1fr)}
  .mr-modal{max-width:96vw}
}

/* Phones */
@media(max-width:680px){
  body{font-size:13px}
  .section{padding:16px 12px}
  .hero{padding:18px 18px}
  .hero h1{font-size:1.5rem}
  .hero-meta{gap:14px}
  .st{font-size:.95rem;margin:18px 0 12px}

  /* Nav: stack rows, shrink logo, let tabs/pickers wrap sanely */
  .nav-row{padding:0 10px;gap:6px}
  .logo{font-size:.85rem;letter-spacing:1px}
  nav .logo-sub{display:none}   /* a belépőn megmarad */
  .nav-row-main{flex-direction:column;align-items:stretch;gap:6px;padding-top:6px;padding-bottom:6px}
  .tabs{width:100%}
  .tab{padding:10px 11px;font-size:.68rem}
  .nav-filters{width:100%;justify-content:space-between}
  .team-picker,.match-picker{flex:1;min-width:0}
  #team-select{min-width:0;width:100%}
  .match-picker-btn{width:100%}
  .team-picker-label{display:none}
  .user-email{max-width:150px;font-size:.7rem;padding:4px 8px}
  .logout-btn{padding:6px 9px;font-size:.68rem}

  /* Grids collapse to 1 column */
  .player-grid{grid-template-columns:1fr 1fr}
  .rg{grid-template-columns:1fr}
  .atk-panel.active{grid-template-columns:1fr}
  .serve-court{grid-template-columns:1fr}
  .mr-bottom-grid{grid-template-columns:1fr}
  .mr-info-grid{grid-template-columns:1fr}
  .mr-info-cell{grid-row:auto!important;grid-column:auto!important}
  .mr-header{grid-template-columns:1fr;text-align:center}
  .mr-logo{margin:0 auto}
  .mr-score-box{justify-self:center;width:100%;max-width:260px}

  /* Any table becomes horizontally scrollable in place, no wrapper needed */
  table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
  .mr-doc{padding:14px 12px;font-size:9.5px}
  .mr-modal-toolbar{padding:8px 10px}
  .mr-print-btn,.mr-close-btn{padding:7px 12px;font-size:.75rem}

  .sb{padding:6px 10px}
  .sv{font-size:1.3rem}
  .atk-selector,.pos-selector,.grade-filter-bar{gap:5px}
  .pos-btn,.grade-filter-btn{padding:5px 9px;font-size:.68rem}
  .atk-btn{padding:6px 10px 6px 7px;gap:7px}
  .atk-btn-jsy{width:24px;height:24px;font-size:.74rem}
  .atk-btn-name{font-size:.76rem}
  .atk-btn-sub{font-size:.61rem}

  .login-box{padding:28px 22px}
  .match-picker-panel{left:0;right:0;min-width:0;max-width:none}

  .match-row{grid-template-columns:22px 1fr auto 32px;
    grid-template-areas:"check match match del" "check date result comp" "check yt yt yt";
    gap:4px 10px;padding:11px 14px}
  .mr-check{grid-area:check;align-self:start;margin-top:2px}
  .mr-date{grid-area:date}.mr-match{grid-area:match}.mr-del{grid-area:del}
  .mr-result{grid-area:result;text-align:left}.mr-comp{grid-area:comp;text-align:right}
  .mr-vid{grid-area:yt;width:100%}
}

@media(max-width:400px){
  .player-grid{grid-template-columns:1fr}
}

/* ── MATCH REPORT BUTTON (in overview match table) ── */
.mr-btn{background:rgba(240,165,0,.12);border:1px solid rgba(240,165,0,.35);color:var(--amber);
  font-size:.72rem;font-weight:700;padding:5px 11px;border-radius:5px;cursor:pointer;white-space:nowrap}
.mr-btn:hover{background:rgba(240,165,0,.22)}

/* ── MATCH REPORT MODAL/OVERLAY ── */
.mr-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:1000;
  display:flex;align-items:flex-start;justify-content:center;padding:24px 12px;overflow-y:auto}
.mr-modal{background:#fff;color:#111;max-width:1000px;width:100%;border-radius:8px;overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,.5)}
.mr-modal-toolbar{position:sticky;top:0;z-index:5;background:#1a2f55;padding:10px 16px;
  display:flex;gap:10px;justify-content:flex-end}
.mr-print-btn,.mr-close-btn{border:none;padding:8px 16px;border-radius:5px;font-weight:700;
  font-size:.82rem;cursor:pointer}
.mr-print-btn{background:#f0a500;color:#0a1628}
.mr-close-btn{background:rgba(255,255,255,.15);color:#fff}

/* ── REPORT DOCUMENT (matches DataVolley print layout) ── */
.mr-doc{padding:24px 28px;font-family:Arial,Helvetica,sans-serif;color:#111;font-size:11px}
.mr-header{display:grid;grid-template-columns:70px 1fr 200px;gap:16px;align-items:start;
  border-bottom:2px solid #1a2f55;padding-bottom:12px;margin-bottom:12px}
.mr-logo{width:60px;height:60px;border-radius:50%;background:#1a5fb4;display:flex;align-items:center;
  justify-content:center;color:#fff;font-size:22px}
.mr-title h1{font-size:17px;font-weight:700;color:#1a2f55;margin-bottom:2px}
.mr-title .sub{font-size:11px;color:#555}
.mr-title .mreport{font-size:11px;font-weight:700;color:#1a2f55;margin-top:6px;
  border-top:1px solid #ccc;padding-top:4px;display:inline-block}
.mr-score-box{border:1.5px solid #1a2f55;border-radius:4px;overflow:hidden}
.mr-score-row{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;
  font-weight:700;font-size:13px}
.mr-score-row:first-child{border-bottom:1px solid #ccc}
.mr-score-row .val{font-size:16px;color:#1a2f55}

.mr-info-grid{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:0;border:1px solid #ccc;
  border-radius:4px;margin-bottom:10px;font-size:10.5px}
.mr-info-cell{padding:6px 10px;border-right:1px solid #eee;border-bottom:1px solid #eee}
.mr-info-cell:last-child{border-right:none}
.mr-info-cell .lbl{color:#888;font-size:9px;text-transform:uppercase;letter-spacing:.03em}
.mr-info-cell .v{font-weight:600;color:#111}

.mr-sets-table{width:100%;border-collapse:collapse;font-size:10px;margin-bottom:14px}
.mr-sets-table th{background:#f0f0f0;border:1px solid #ccc;padding:4px 8px;font-weight:700;color:#333}
.mr-sets-table td{border:1px solid #ddd;padding:4px 8px;text-align:center}

.mr-team-block{margin-bottom:16px}
.mr-team-name{background:#1a2f55;color:#fff;font-weight:700;font-size:12px;padding:5px 10px}
.mr-player-table{width:100%;border-collapse:collapse;font-size:9.3px}
.mr-player-table th{background:#eef1f7;border:1px solid #ccc;padding:3px 4px;font-weight:700;
  color:#333;white-space:nowrap;text-align:center}
.mr-player-table td{border:1px solid #e2e2e2;padding:3px 4px;text-align:center;white-space:nowrap}
.mr-player-table td.mr-name{text-align:left;font-weight:600}
.mr-set-box{display:inline-block;width:14px;height:14px;line-height:14px;border:1px solid #999;
  border-radius:2px;font-size:8.5px;margin:0 1px}
.mr-set-empty{color:#ccc}
.mr-totals-row td{font-weight:700;background:#f7f7f7;border-top:2px solid #999}
.mr-pointswon-row td{font-size:8.8px;color:#555;text-align:center;border:1px solid #eee}
.mr-coach-row{font-size:10px;padding:5px 10px;background:#fafafa;display:flex;gap:24px}

.mr-bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.mr-bottom-box{border:1px solid #ccc;border-radius:4px;padding:10px}
.mr-bottom-box h4{font-size:10.5px;font-weight:700;color:#1a2f55;margin-bottom:8px;
  text-transform:uppercase;letter-spacing:.03em}
.mr-bottom-stat{display:flex;justify-content:space-between;font-size:10px;padding:3px 0;
  border-bottom:1px dotted #ddd}
.mr-bottom-stat .lbl{color:#666}
.mr-bottom-stat .v{font-weight:700}

.mr-kill-section{margin-top:16px;border:1px solid #ccc;border-radius:4px;padding:12px}
.mr-kill-section h4{font-size:11px;font-weight:700;color:#1a2f55;margin-bottom:10px}
.mr-kill-row{margin-bottom:10px}
.mr-kill-row .kr-title{font-size:9.5px;font-weight:700;color:#444;margin-bottom:4px}
.mr-kill-table{width:100%;border-collapse:collapse;font-size:9.5px}
.mr-kill-table th{background:#f5f5f5;border:1px solid #ddd;padding:3px 6px;font-weight:700}
.mr-kill-table td{border:1px solid #eee;padding:3px 6px;text-align:center}

.mr-legend{margin-top:14px;padding-top:8px;border-top:1px solid #ccc;font-size:8.5px;color:#666;
  display:flex;flex-wrap:wrap;gap:14px}
.mr-footer{margin-top:10px;font-size:8.5px;color:#999;text-align:left}

/* The full match report prints by hiding everything else on the page. That rule
   used to be unscoped, so it also blanked the match sheet, the only other thing
   in the app anybody prints: correct page breaks, no visible content. It now
   only applies while printMatchReport() has flagged the body. */
@media print{
  body.printing-report *{visibility:hidden}
  body.printing-report .mr-overlay, body.printing-report .mr-overlay *{visibility:visible}
  body.printing-report .mr-overlay{position:absolute;inset:0;background:#fff;padding:0;display:block !important}
  .mr-modal{box-shadow:none;max-width:100%}
  body:not(.printing-report) .mr-overlay{display:none !important}
  .no-print{display:none!important}
}

/* ── ATTACK MAP: summary table + zoom overlay ── */

@media(max-width:680px){.atk-zoom-box{padding:12px}}

/* ── ATTACK MAP: small-multiple grid (one court per attack code) ── */

@media(min-width:900px){
  .atk-grid{grid-template-columns:repeat(4,1fr)}

}
@media(max-width:680px){
  .atk-grid,.atk-grid-zoom{grid-template-columns:repeat(2,1fr);gap:6px}
}

/* Firebase connection dot in the nav */
.fb-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:8px;
  background:#8899aa;vertical-align:middle;box-shadow:0 0 0 2px rgba(0,0,0,.25)}
.fb-dot.ok{background:#27ae60;box-shadow:0 0 6px rgba(39,174,96,.8)}
.fb-dot.warn{background:#f0a500;box-shadow:0 0 6px rgba(240,165,0,.7)}
.fb-dot.bad{background:#e63946;box-shadow:0 0 6px rgba(230,57,70,.7)}

/* ── MATCH-DAY ONE-PAGER ── */
.md-doc{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:20px 22px;max-width:760px}
.md-public{max-width:760px;margin:0 auto;padding:16px}
.md-head{display:flex;justify-content:space-between;align-items:flex-start;
  border-bottom:2px solid var(--amber);padding-bottom:12px;margin-bottom:16px}
.md-kicker{font-size:.64rem;letter-spacing:.2em;color:var(--amber);font-weight:700}
.md-head h2{font-size:1.5rem;color:var(--white);margin:2px 0}
.md-meta{font-size:.74rem;color:var(--gray)}

.md-sec{margin-bottom:18px}
.md-sec h3{font-size:.9rem;color:var(--white);margin-bottom:4px}
.md-sub{font-size:.74rem;color:var(--gray);margin-bottom:8px}
.md-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.md-row{display:flex;gap:10px;align-items:flex-start;background:var(--card);
  border:1px solid var(--border);border-radius:8px;padding:8px 10px}
.md-hot{border-color:rgba(230,57,70,.5);background:rgba(230,57,70,.08)}

.md-subrow{opacity:.75}
.md-num{font-weight:900;color:var(--amber);min-width:34px;font-size:.95rem}
.md-body{flex:1;font-size:.84rem;color:var(--light)}
.md-role{font-size:.7rem;color:var(--gray)}
.md-note{font-size:.76rem;color:var(--gray);margin-top:2px;line-height:1.45}
.md-tag{font-size:.62rem;font-weight:700;background:var(--red);color:#fff;padding:2px 7px;border-radius:4px;white-space:nowrap}

.md-keys{background:rgba(240,165,0,.07);border:1px solid rgba(240,165,0,.3);border-radius:10px;padding:12px 14px}
.md-keylist{margin:8px 0 0 18px;font-size:.85rem;color:var(--light);line-height:1.6}
.md-keylist li{margin-bottom:5px}
.md-key-edit{outline:none;border-bottom:1px dashed rgba(240,165,0,.45);display:inline-block;min-width:60%;vertical-align:top}
.md-key-edit:focus{border-bottom-color:var(--amber);background:rgba(240,165,0,.08)}
/* Six fixed columns meant 65px cells inside the 430px preview box, which is
   where a coach actually looks at this block. auto-fit wraps to two rows of
   three instead of shrinking the numbers to nothing. */
.md-rotgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(82px,1fr));gap:6px}
.md-rot{background:var(--card);border:1px solid var(--border);border-radius:7px;padding:7px 4px;text-align:center}
.md-rot-n{font-size:.95rem;font-weight:900;color:var(--amber)}
.md-rot-top{font-size:.66rem;color:var(--light);margin-top:2px;line-height:1.25}
.md-rot-pct{font-size:.82rem;font-weight:700;color:var(--white)}
.md-rot-e{font-size:.6rem;color:var(--gray);margin-top:2px}
.md-foot{font-size:.66rem;color:var(--gray);text-align:right;margin-top:14px;
  border-top:1px solid var(--border);padding-top:8px}
@media(max-width:680px){
  .md-doc{padding:14px}
}

/* ── MATCH-DAY EDITOR ── */
.md-comment{font-size:.76rem;color:var(--light);margin-top:4px;padding:3px 6px;border-radius:5px;
  background:rgba(255,255,255,.04);border:1px dashed rgba(255,255,255,.14);min-height:18px;line-height:1.45}
.md-comment:focus{outline:none;border-color:var(--amber);background:rgba(240,165,0,.08)}
.md-comment:empty:before{content:'Írj ide megjegyzést…';color:var(--gray)}
.md-servewrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:8px}
.md-servemain{display:flex;flex-direction:column;gap:6px}
.md-pool{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px;max-height:260px;overflow-y:auto}
.md-pool-h{font-size:.64rem;color:var(--gray);letter-spacing:.06em;margin-bottom:6px;text-transform:uppercase}
.md-poolitem{display:flex;justify-content:space-between;gap:6px;font-size:.76rem;color:var(--light);
  background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:6px;padding:5px 7px;margin-bottom:4px;cursor:grab}
.md-poolitem:hover{border-color:var(--amber)}
.md-poolitem span{color:var(--gray)}
.md-row[draggable="true"]{cursor:grab}
.md-tools{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:8px 0}
.md-jersey{width:64px;background:var(--bg3);border:1px solid var(--border);color:var(--white);
  padding:5px 8px;border-radius:5px;font-size:.8rem}
.md-hint{font-size:.7rem;color:var(--gray)}
.md-courts{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:8px}
.md-courtbox{display:flex;flex-direction:column;gap:6px;align-items:center}
.md-courtbtns{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}
@media(max-width:680px){.md-servewrap{grid-template-columns:1fr}}
/* The pool is a sidebar when there is room and a full-width list when there is
   not; it must never be the wider of the two. */
.md-servewrap>.md-pool{max-width:100%}

/* drawing tools */
.md-colors{display:inline-flex;gap:4px;margin:0 4px}
.md-colbtn{width:20px;height:20px;border-radius:50%;border:2px solid rgba(255,255,255,.25);cursor:pointer;padding:0}
.md-colbtn.active{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
.md-courtname{font-size:.78rem;font-weight:700;color:var(--light);text-align:center;min-height:18px;
  padding:2px 6px;border-radius:5px;width:100%}
.md-courtname[contenteditable]{border:1px dashed rgba(255,255,255,.16);background:rgba(255,255,255,.03)}
.md-courtname[contenteditable]:focus{outline:none;border-color:var(--amber)}
.md-courtname[contenteditable]:empty:before{content:'Rajz neve…';color:var(--gray);font-weight:400}
.md-courts{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}

/* ── ATTACK VISUALISATION (flow + zones) ── */
.atk-head{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;
  background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.atk-name{display:flex;align-items:center;gap:10px;font-size:1.05rem;color:var(--white)}
.atk-role{font-size:.72rem;color:var(--gray);font-weight:400}
.atk-sentence{margin-top:8px;font-size:.95rem;color:var(--light);line-height:1.55}
.atk-pred{display:inline-block;margin-left:6px;font-size:.72rem;font-weight:700;
  border:1px solid;border-radius:20px;padding:1px 9px;white-space:nowrap}

.segbox{display:inline-flex;background:var(--bg3);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.seg{border:none;background:none;color:var(--gray);font-size:.78rem;font-weight:700;padding:7px 14px;cursor:pointer}
.seg:hover{color:var(--light)}
.seg.active{background:var(--amber);color:var(--bg)}
.segbox.small .seg{font-size:.72rem;padding:6px 11px}

.chip{border:1px solid var(--border);background:var(--card);color:var(--gray);border-radius:20px;
  padding:5px 12px;font-size:.73rem;font-weight:700;cursor:pointer}
.chip:hover{border-color:var(--amber);color:var(--light)}
.chip.active{background:var(--amber);color:var(--bg);border-color:var(--amber)}
.atk-check{display:flex;align-items:center;gap:6px;font-size:.74rem;color:var(--gray);cursor:pointer}
.atk-check input{accent-color:#f0a500}
.atk-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.atk-courtwrap{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px}
.atk-court{width:100%;display:block}
.atk-zone{transition:stroke .15s}
.atk-zone:hover{stroke:#ffffff88;stroke-width:1.6}
.atk-legend{font-size:.68rem;color:var(--gray);text-align:center;margin-top:8px;line-height:1.4}
.atk-side{display:flex;flex-direction:column;gap:10px;
  /* Match the court's height and scroll inside, instead of letting the trend
     legend stretch the column and leave a long empty gap under the court. */
  max-height:var(--atk-court-h,none);overflow-y:auto;overflow-x:hidden;padding-right:2px}
.atk-side::-webkit-scrollbar{width:6px}
.atk-side::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:3px}
.atk-side::-webkit-scrollbar-track{background:transparent}
.atk-detail{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.atk-detail-h{font-size:.85rem;font-weight:700;color:var(--amber);margin-bottom:8px}
.atk-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;font-size:.78rem}
.atk-detail-grid>div{display:flex;justify-content:space-between;gap:8px;
  border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:3px}
.atk-detail-grid span{color:var(--gray)}
.atk-detail-empty{color:var(--gray);font-size:.8rem;text-align:center;padding:20px 12px}
@media(max-width:900px){
  .atk-main{grid-template-columns:1fr}
  .atk-side{max-height:none;overflow:visible}
  .atk-head{grid-template-columns:1fr}

}

/* ── LIGA BENCHMARK TAB ── */
.origin-bar{display:flex;height:26px;border-radius:6px;overflow:hidden;background:rgba(255,255,255,.04);
  border:1px solid var(--border)}
.origin-seg{height:100%;transition:width .4s ease}
.origin-legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:12px;font-size:.76rem;color:var(--light)}
.origin-item{display:flex;align-items:center;gap:6px}
.origin-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
@media(max-width:780px){
  .bm-origin-grid{grid-template-columns:1fr!important}
}

/* ── attack filter chip group labels + data-coverage note ───────────── */

.chip b{font-weight:700;opacity:.65;font-size:.72em;margin-left:3px}
.atk-cover{margin-top:8px;font-size:.72rem;line-height:1.5;color:var(--gray);
  background:rgba(255,255,255,.04);border-left:2px solid var(--border);padding:7px 10px;border-radius:4px}
.atk-cover.warn{border-left-color:#f0a500;background:rgba(240,165,0,.08);color:var(--light)}
.atk-cover b{color:var(--light)}

/* ── filter-aware stat cards (Ütési taktika) ────────────────────────── */
.asc{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;margin:12px 0 16px}
.asc-c{background:var(--bg3);border:1px solid var(--border);border-radius:7px;padding:9px 6px;text-align:center}
.asc-v{font-size:1.15rem;font-weight:800;color:var(--light);line-height:1.15}
.asc-l{font-size:.63rem;letter-spacing:.05em;text-transform:uppercase;color:var(--gray);margin-top:3px}
.asc-s{font-size:.66rem;color:var(--gray);opacity:.75;margin-top:1px}
@media (max-width:900px){.asc{grid-template-columns:repeat(4,1fr)}}
@media (max-width:520px){.asc{grid-template-columns:repeat(2,1fr)}}

/* ── grouped filter panel ───────────────────────────────────────────── */
.fpanel{background:var(--bg2);border:1px solid var(--border);border-radius:9px;
  padding:0 0 4px;margin:14px 0 4px;overflow:hidden}
.fp-head{display:flex;align-items:center;gap:10px;padding:8px 14px;
  background:rgba(255,255,255,.035);border-bottom:1px solid var(--border)}
.fp-title{font-size:.7rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--amber)}
.fp-active{flex:1;font-size:.71rem;color:var(--gray);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-clear{background:transparent;border:1px solid var(--border);color:var(--gray);
  border-radius:5px;padding:3px 10px;font-size:.68rem;cursor:pointer;font-family:inherit}
.fp-clear:hover{color:var(--light);border-color:var(--gray)}
.fp-row{display:flex;align-items:flex-start;gap:10px;padding:7px 14px;border-bottom:1px solid rgba(255,255,255,.04)}
.fp-row:last-child{border-bottom:none}
.fp-lbl{flex:0 0 92px;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;
  color:var(--gray);padding-top:6px}
.fp-ctl{flex:1;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
@media (max-width:640px){
  .fp-row{flex-direction:column;gap:4px}
  .fp-lbl{flex:none;padding-top:0}
}

/* seven stat cards now that "Pont" and "Kill%" are merged */
.asc.asc-7{grid-template-columns:repeat(7,1fr)}
@media (max-width:900px){.asc.asc-7{grid-template-columns:repeat(4,1fr)}}
@media (max-width:520px){.asc.asc-7{grid-template-columns:repeat(2,1fr)}}

/* discreet attribution, pinned to the bottom-right of the login screen */
.login-credit{position:absolute;right:16px;bottom:12px;font-size:.68rem;
  color:var(--gray);opacity:.28;letter-spacing:.03em;pointer-events:none;user-select:none}
@media (max-width:520px){.login-credit{right:12px;bottom:8px;font-size:.62rem}}

/* ── upload: progress, bulk selection, manual date ──────────────────── */
#upload-progress{margin:10px 0 4px}
.up-bar{height:5px;background:rgba(255,255,255,.08);border-radius:3px;overflow:hidden}
.up-fill{height:100%;background:var(--amber);border-radius:3px;transition:width .12s linear}
.up-txt{font-size:.72rem;color:var(--gray);margin-top:5px}

.list-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:6px 0 8px;min-height:30px}
.sel-all{display:flex;align-items:center;gap:6px;font-size:.74rem;color:var(--gray);cursor:pointer}
.sel-all input{cursor:pointer}
.bulk-bar{display:flex;align-items:center;gap:10px;font-size:.76rem;color:var(--light);flex-wrap:wrap}
.bulk-lg{display:flex;align-items:center;gap:6px;color:var(--gray)}
.bulk-lg select{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:.74rem;padding:5px 8px;border-radius:5px;max-width:200px}
.bulk-lg select:hover{border-color:var(--amber)}
.bulk-del{background:rgba(230,57,70,.14);border:1px solid rgba(230,57,70,.45);color:#ff8b95;
  border-radius:5px;padding:4px 12px;font-size:.74rem;cursor:pointer;font-family:inherit;font-weight:600}
.bulk-del:hover{background:rgba(230,57,70,.24);color:#fff}

.mr-check{margin-right:2px;cursor:pointer;flex:0 0 auto}
.match-row.no-date{background:rgba(240,165,0,.05)}
.mr-date-in{width:100%;max-width:118px;background:var(--bg3);border:1px solid rgba(240,165,0,.5);
  color:var(--light);border-radius:4px;padding:3px 6px;font-size:.74rem;font-family:inherit}
.mr-date-in::placeholder{color:var(--gray);opacity:.6}
.mr-date-in:focus{outline:none;border-color:var(--amber)}
.mr-date-manual{display:flex;align-items:center;gap:4px;color:var(--amber)}
.mr-date-clear{background:none;border:none;color:var(--gray);cursor:pointer;font-size:.9rem;
  line-height:1;padding:0 2px;font-family:inherit}
.mr-date-clear:hover{color:var(--red)}

/* upload row: keep every column on its own baseline so nothing drifts */
.mr-match{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mr-result{font-size:.8rem;color:var(--light);min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
/* Set scores such as "25-19 · 23-25 · 25-21 · 25-18" are the widest thing in
   the row and were the first to be clipped. A narrower figure and tighter
   tracking buy back roughly a fifth of the width at the same point size. */
.mr-sets{color:var(--gray);font-size:.7rem;font-family:var(--font-mono);
  letter-spacing:-.02em;white-space:nowrap}
.mr-comp{font-size:.74rem;color:var(--gray);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.mr-del{justify-self:end}

/* ── full-screen zoom overlay ───────────────────────────────────────── */
.zoom-overlay{position:fixed;inset:0;z-index:400;background:rgba(6,10,16,.88);
  display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px)}
.zoom-box{position:relative;background:var(--bg2);border:1px solid var(--border);border-radius:14px;
  padding:22px 24px 18px;max-width:min(680px,94vw);max-height:92vh;overflow:auto;text-align:center}
.zoom-title{font-size:1.1rem;font-weight:800;color:var(--white)}
.zoom-sub{font-size:.76rem;color:var(--gray);margin-bottom:14px}
.zoom-svg svg{width:100%;height:auto;max-height:70vh}
.zoom-close{position:absolute;top:8px;right:12px;background:none;border:none;color:var(--gray);
  font-size:1.5rem;line-height:1;cursor:pointer;font-family:inherit}
.zoom-close:hover{color:var(--light)}
.svz-card{position:relative}
.svz-zoom{position:absolute;top:6px;right:6px;background:rgba(255,255,255,.06);border:1px solid var(--border);
  color:var(--gray);border-radius:5px;width:24px;height:24px;font-size:.82rem;line-height:1;
  cursor:pointer;font-family:inherit;padding:0}
.svz-zoom:hover{color:var(--amber);border-color:var(--amber)}

/* ── attack tab: right-hand cards ───────────────────────────────────── */
.tdl{display:flex;flex-direction:column;gap:5px}
.tdr{display:grid;grid-template-columns:50px 1fr 74px 44px;gap:7px;align-items:center;
  padding:4px 5px;border-radius:5px;cursor:pointer;font-size:.72rem}
.tdr:hover{background:rgba(255,255,255,.04)}
.tdr.on{background:rgba(240,165,0,.12);outline:1px solid rgba(240,165,0,.35)}
.tdr-n{font-weight:700;color:var(--light);font-family:monospace}
.tdr-bar{height:5px;background:rgba(255,255,255,.07);border-radius:3px;overflow:hidden}
.tdr-bar>div{height:100%;border-radius:3px}
.tdr-v{color:var(--gray);white-space:nowrap;font-size:.68rem}
.tdr-e{font-weight:700;text-align:right}

.pcr{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:5px 0;
  border-bottom:1px solid rgba(255,255,255,.05)}
.pcr:last-of-type{border-bottom:none}
.pcr-l{font-size:.7rem;font-weight:700;grid-column:1}
.pcr-e{font-size:.8rem;font-weight:800;grid-column:2;grid-row:1/3;align-self:center}
.pcr-m{font-size:.72rem;color:var(--light);grid-column:1}
.pcr-x{font-size:.7rem;color:var(--gray);grid-column:1}
.pcv{margin-top:7px;font-size:.7rem;padding:5px 8px;border-radius:4px;line-height:1.4}
.pcv.warn{background:rgba(240,165,0,.12);color:#ffd27a}
.pcv.ok{background:rgba(74,222,128,.1);color:#8ee8ae}

.trl{display:flex;gap:5px;align-items:flex-end;height:96px}
.trb{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}
.trb-col{width:100%;height:60px;display:flex;align-items:flex-end;background:rgba(255,255,255,.05);border-radius:3px;overflow:hidden}
.trb-col>div{width:100%;border-radius:3px 3px 0 0;min-height:2px}
.trb-v{font-size:.64rem;font-weight:700;color:var(--light)}
.trb-d{font-size:.58rem;color:var(--gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

/* ── match sheet: sheet tabs, block grid, editing chrome ─────────────── */
/* A mentés és a megosztás a sáv jobb szélén ül. Egy hosszú lapon lefelé görgetve
   eltűnt, és a szerkesztés közben pont ez a két gomb az, amit az ember keres —
   a lap tetejére visszagörögni érte fölösleges lépés. Odatapad a nav alá. */
.md-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;
  margin-bottom:12px;padding:10px 0;border-bottom:1px solid var(--border);
  position:sticky;top:var(--nav-h);z-index:3;background:var(--bg);
  box-shadow:0 6px 14px -10px rgba(0,0,0,.9)}
.md-sheets{display:flex;gap:4px;flex-wrap:wrap}
.md-sheet{background:var(--bg3);border:1px solid var(--border);color:var(--gray);
  border-radius:7px 7px 0 0;padding:7px 14px;font-size:.78rem;font-weight:700;cursor:pointer;font-family:inherit}
.md-sheet.active{background:var(--bg2);color:var(--amber);border-color:var(--amber);border-bottom-color:var(--bg2)}
.md-sheet span{outline:none}
.md-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.md-add{background:var(--bg3);border:1px solid var(--border);color:var(--light);border-radius:6px;
  padding:6px 10px;font-size:.76rem;font-family:inherit;cursor:pointer}
.md-saved{color:var(--green);font-size:.76rem}

.md-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.md-blk{position:relative;min-width:0}
.md-blk.full{grid-column:1/-1}
.md-blk.half{grid-column:span 1}
.md-blkbar{display:flex;align-items:center;gap:3px;margin-bottom:4px;opacity:.45;transition:opacity .15s}
.md-blk:hover .md-blkbar{opacity:1}
.md-blkname{flex:1;font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:var(--gray)}
.md-blkbar button{background:var(--bg3);border:1px solid var(--border);color:var(--gray);border-radius:4px;
  width:22px;height:22px;font-size:.74rem;line-height:1;cursor:pointer;font-family:inherit;padding:0}
.md-blkbar button:hover{color:var(--light);border-color:var(--gray)}
.md-blkbar .md-blkdel:hover{color:var(--red);border-color:var(--red)}
.md-empty{font-size:.74rem;color:var(--gray);padding:14px;border:1px dashed var(--border);border-radius:8px}
.md-free{min-height:44px;font-size:.85rem;line-height:1.55;color:var(--light);outline:none}
.md-headblk{font-size:1.05rem;font-weight:800;color:var(--white);padding:10px 0 2px;
  border-bottom:2px solid var(--amber);margin-bottom:4px}
.md-pick{background:var(--bg3);border:1px solid var(--border);color:var(--light);border-radius:5px;
  padding:4px 8px;font-size:.76rem;font-family:inherit;margin-bottom:6px}
.md-zonegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.md-zonecard{background:rgba(255,255,255,.03);border-radius:7px;padding:8px}
.md-zonename{font-size:.72rem;font-weight:700;color:var(--light);margin-bottom:4px}

@media (max-width:820px){
  .md-grid{grid-template-columns:1fr}
  .md-blk.half,.md-blk.full{grid-column:1/-1}
  .md-bar{flex-direction:column;align-items:stretch;position:static;box-shadow:none}
  .md-actions{justify-content:flex-start}
  .md-blkbar{opacity:1}
}
@media print{
  .md-bar,.md-blkbar,.md-add,.md-pick{display:none!important}
  .md-grid{grid-template-columns:repeat(2,1fr)}
}

/* trend verdict badge */
.trv{display:flex;align-items:baseline;gap:7px;padding:7px 10px;border-radius:6px;
  border:1px solid;margin-bottom:9px;flex-wrap:wrap}
.trv-a{font-size:.85rem}
.trv-t{font-size:.86rem;font-weight:800;letter-spacing:.06em}
.trv-d{font-size:.68rem;color:var(--gray);margin-left:auto;white-space:nowrap}

.md-key-empty:empty::before{content:attr(data-ph);color:var(--gray);opacity:.6;font-style:italic}

/* upload row: no column may push into its neighbour */
.match-row>*{min-width:0}
.mr-date{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* match sheet: clickable tabs (no inline editor swallowing the click) */
.md-sheet{white-space:nowrap;user-select:none}
.md-sheet:hover{color:var(--light);border-color:var(--gray)}
.md-save.dirty{border-color:var(--amber);color:var(--amber);font-weight:700}

.atk-courtwrap{position:relative}
.atk-zoombtn{z-index:2}
.zoom-box.wide{max-width:min(900px,96vw)}

/* ── match sheet toolbar: state is readable at a glance ──────────────── */
.md-save{border-radius:6px;padding:7px 16px;font-size:.78rem;font-weight:700;
  cursor:pointer;font-family:inherit;border:1px solid;transition:background .15s}
.md-save.dirty{background:rgba(230,57,70,.18);border-color:#e63946;color:#ff8b95}
.md-save.dirty:hover{background:rgba(230,57,70,.3);color:#fff}
.md-save.clean{background:rgba(74,222,128,.14);border-color:#4ade80;color:#8ee8ae;cursor:default}
.md-share{background:var(--amber);border:1px solid var(--amber);color:#12100a;border-radius:6px;
  padding:7px 18px;font-size:.78rem;font-weight:800;cursor:pointer;font-family:inherit}
.md-share:hover{filter:brightness(1.1)}

.pub-ok{background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.4);
  border-radius:8px;padding:10px 14px;margin-top:4px}
.pub-h{font-size:.82rem;font-weight:700;color:#8ee8ae;margin-bottom:4px}
.pub-url{font-size:.78rem;color:var(--light);word-break:break-all;font-family:monospace}
.pub-note{font-size:.7rem;color:var(--gray);margin-top:5px}

/* shared read-only page */
.pub-tabs{display:flex;gap:4px;flex-wrap:wrap;padding:12px 14px 0;max-width:1100px;margin:0 auto}
.pub-tab{flex:1 1 auto;min-width:110px;background:var(--bg3);border:1px solid var(--border);
  color:var(--gray);border-radius:8px 8px 0 0;padding:11px 12px;font-size:.82rem;font-weight:700;
  cursor:pointer;font-family:inherit}
.pub-tab.active{background:var(--bg2);color:var(--amber);border-color:var(--amber);border-bottom-color:var(--bg2)}

/* auto-fit, not a viewport breakpoint. The "mobile view" here is the 430px
   preview box on a 1600px monitor, so a @media rule never fired and the chart
   was squeezed into a 240px column next to a 190px list. auto-fit measures the
   container, so it stacks correctly in the preview, in a half-width block and
   on a real phone alike — chart on top, numbers underneath. */
.md-radar{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:14px;align-items:center}
.md-radar>:first-child{display:flex;justify-content:center}
.md-radar svg{max-width:300px}
.md-jersey{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  border-radius:5px;padding:5px 8px;font-size:.8rem;font-family:inherit;min-width:64px}

/* ── upload: per-match league override ──────────────────────────────── */
.mr-league{width:100%;max-width:170px;background:var(--bg3);border:1px solid var(--border);
  color:var(--gray);border-radius:5px;padding:4px 6px;font-size:.73rem;font-family:inherit;cursor:pointer}
.mr-league.manual{border-color:rgba(240,165,0,.55);color:var(--amber)}
.mr-league:focus{outline:none;border-color:var(--amber)}
.match-row.no-league{background:rgba(230,57,70,.06)}
.match-row.no-league .mr-league{border-color:rgba(230,57,70,.5);color:#ff8b95}

/* ── users tab ──────────────────────────────────────────────────────── */
.nu-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.nu-form .login-input{flex:1 1 240px;min-width:200px}
.nu-lgs{display:flex;gap:12px;flex-wrap:wrap}
.nu-lg{display:flex;align-items:center;gap:5px;font-size:.78rem;color:var(--light);cursor:pointer;white-space:nowrap}
.nu-lg input{cursor:pointer}

/* ── match sheet: sheet management + share feedback ──────────────────── */
.md-sheet-add{padding:7px 12px;color:var(--amber);font-size:.9rem;line-height:1}
.md-share.busy{background:rgba(240,165,0,.25);color:var(--amber);cursor:wait}
.md-share.done{background:#4ade80;border-color:#4ade80;color:#0b2417}
.md-share.failed{background:rgba(230,57,70,.2);border-color:#e63946;color:#ff8b95}

.load-chip{font-size:.7rem;color:var(--amber);background:rgba(240,165,0,.12);
  border:1px solid rgba(240,165,0,.35);border-radius:6px;padding:4px 10px;white-space:nowrap}

/* ── per-set breakdown + data coverage ──────────────────────────────── */
.setbrk td:first-child,.setbrk th:first-child{text-align:left}
.setbrk-vol td{border-top:1px solid var(--border);padding-top:8px}
.cov-row{display:grid;grid-template-columns:minmax(0,1fr) 2fr 46px 74px;gap:10px;
  align-items:center;margin-bottom:9px;font-size:.78rem}
.cov-row:last-child{margin-bottom:0}
.cov-l{color:var(--light);min-width:0}
.cov-bar{height:7px;background:rgba(255,255,255,.07);border-radius:4px;overflow:hidden}
.cov-bar>div{height:100%;border-radius:4px}
.cov-v{font-weight:700;text-align:right}
.cov-n{color:var(--gray);font-size:.7rem;text-align:right}
.cov-warn{margin-top:12px;padding:8px 11px;border-radius:5px;font-size:.75rem;line-height:1.5;
  background:rgba(230,57,70,.1);border-left:2px solid #e63946;color:var(--light)}
@media (max-width:600px){.cov-row{grid-template-columns:minmax(0,1fr) 44px 66px;gap:6px}.cov-bar{display:none}}

/* ── sub-zone quadrant grid ─────────────────────────────────────────── */
.sz-wrap{margin-top:8px}
.sz-net{font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gray);
  text-align:center;border-bottom:2px solid rgba(240,165,0,.5);padding-bottom:2px;margin-bottom:3px}
.sz-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px}
.sz-c{display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:8px 4px;border-radius:3px;border:1px solid var(--border)}
.sz-k{font-size:.6rem;color:var(--gray);letter-spacing:.08em}
.sz-v{font-size:.82rem;font-weight:800;color:var(--light)}
.sz-note{font-size:.66rem;color:var(--gray);margin-top:5px;line-height:1.4}

/* ── offline / update banners ───────────────────────────────────────── */
.load-chip.offline{color:#ff8b95;background:rgba(230,57,70,.14);border-color:rgba(230,57,70,.4)}
.sw-update{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:500;
  display:flex;align-items:center;gap:12px;background:var(--bg2);border:1px solid var(--amber);
  border-radius:10px;padding:10px 16px;font-size:.8rem;color:var(--light);
  box-shadow:0 6px 24px rgba(0,0,0,.45)}
.sw-update button{background:var(--amber);border:none;color:#12100a;border-radius:6px;
  padding:6px 14px;font-size:.78rem;font-weight:800;cursor:pointer;font-family:inherit}
.pub-offline{max-width:1100px;margin:12px auto 0;padding:8px 14px;border-radius:8px;
  background:rgba(240,165,0,.12);border:1px solid rgba(240,165,0,.4);
  color:var(--amber);font-size:.78rem;text-align:center}

/* ── admin dropdown in the tab bar ──────────────────────────────────── */
.tab-menu{position:relative;display:inline-block}
.tab-parent .caret{font-size:.9em;opacity:.85;margin-left:5px;line-height:1}
.tab-drop{position:fixed;z-index:400;min-width:170px;
  background:var(--bg2);border:1px solid var(--amber);border-radius:0 8px 8px 8px;
  box-shadow:0 10px 28px rgba(0,0,0,.55);padding:5px;display:none}
.tab-drop.open{display:block}
.tab-drop button{display:block;width:100%;text-align:left;background:none;border:none;
  color:var(--light);font-family:inherit;font-size:.82rem;padding:9px 12px;border-radius:5px;cursor:pointer}
.tab-drop button:hover{background:rgba(240,165,0,.14);color:var(--amber)}

/* ── league chooser shown right after login ─────────────────────────── */
.league-gate{position:fixed;inset:0;z-index:450;display:flex;align-items:center;justify-content:center;
  padding:20px;background:radial-gradient(circle at 30% 20%,rgba(240,165,0,.07) 0%,transparent 55%),rgba(6,10,16,.96)}
.lg-box{width:100%;max-width:440px;background:var(--bg2);border:1px solid var(--border);
  border-radius:14px;padding:26px 24px}
.lg-title{font-size:1.15rem;font-weight:800;color:var(--white);margin-bottom:4px}
.lg-sub{font-size:.78rem;color:var(--gray);margin-bottom:18px}
.lg-list{display:flex;flex-direction:column;gap:8px}
.lg-item{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;
  background:var(--bg3);border:1px solid var(--border);border-radius:9px;padding:13px 16px;
  cursor:pointer;font-family:inherit;text-align:left;transition:border-color .15s,background .15s}
.lg-item:hover{border-color:var(--amber);background:rgba(240,165,0,.08)}
.lg-item.empty{opacity:.5}
.lg-name{font-size:.92rem;font-weight:700;color:var(--light)}
.lg-meta{font-size:.72rem;color:var(--gray)}

/* ── team gate ──
   Same box as the league gate, one step further in. Sits just under it in the
   stack so the two can never fight if both ever appear at once. */
.team-gate{position:fixed;inset:0;z-index:449;display:flex;align-items:center;justify-content:center;
  padding:20px;background:radial-gradient(circle at 30% 20%,rgba(240,165,0,.07) 0%,transparent 55%),rgba(6,10,16,.96)}
.tg-search{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--light);
  border-radius:7px;padding:9px 12px;font-size:.85rem;font-family:inherit;margin-bottom:12px;
  box-sizing:border-box}
.tg-search:focus{outline:none;border-color:var(--amber)}
/* A league can be twenty clubs, and a modal that grows past the viewport puts
   the last few out of reach on a phone. */
.tg-list{max-height:min(52vh,420px);overflow-y:auto}
.tg-skip{display:block;width:100%;margin-top:14px;background:none;border:none;color:var(--gray);
  font-size:.76rem;font-family:inherit;cursor:pointer;padding:6px}
.tg-skip:hover{color:var(--light)}

/* open on hover for mouse users; the click handler stays for touch devices */
@media (hover:hover) and (pointer:fine){
  .tab-menu:hover .tab-parent{color:var(--amber)}
}

/* ── search bars (match picker + upload list) ───────────────────────── */
.mp-search{position:relative;padding:8px 10px 4px}
.mp-search input{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--light);
  border-radius:6px;padding:7px 28px 7px 10px;font-size:.8rem;font-family:inherit;box-sizing:border-box}
.mp-search input:focus{outline:none;border-color:var(--amber)}
.mp-clear{position:absolute;right:16px;top:12px;background:none;border:none;color:var(--gray);
  font-size:1.1rem;line-height:1;cursor:pointer;font-family:inherit;padding:0 4px}
.mp-clear:hover{color:var(--light)}
.mp-empty{padding:18px 12px;text-align:center;color:var(--gray);font-size:.78rem}

.upload-filter-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0 10px}
.up-search{flex:1 1 260px;min-width:180px;background:var(--bg3);border:1px solid var(--border);
  color:var(--light);border-radius:6px;padding:7px 11px;font-size:.8rem;font-family:inherit}
.up-search:focus{outline:none;border-color:var(--amber)}
.up-lgfilter{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  border-radius:6px;padding:7px 10px;font-size:.78rem;font-family:inherit;cursor:pointer}
.up-count{font-size:.72rem;color:var(--gray);white-space:nowrap}

/* ── keyboard help ──────────────────────────────────────────────────── */
.kbd-help{position:fixed;inset:0;z-index:520;display:flex;align-items:center;justify-content:center;
  background:rgba(6,10,16,.85);padding:20px}
.kbd-box{position:relative;background:var(--bg2);border:1px solid var(--border);border-radius:12px;
  padding:22px 26px;min-width:290px}
.kbd-title{font-size:1rem;font-weight:800;color:var(--white);margin-bottom:14px}
.kbd-row{display:flex;align-items:center;gap:14px;margin-bottom:9px;font-size:.82rem;color:var(--light)}
.kbd-row kbd{display:inline-block;min-width:56px;text-align:center;background:var(--bg3);
  border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:3px 8px;
  font-family:monospace;font-size:.78rem;color:var(--amber)}


/* Court gets the space now that the right column is fixed; the SVG was
   capped at a size that left the card half empty on a wide screen. */
.atk-courtwrap svg{width:100%;height:auto;max-width:440px;margin:0 auto;display:block}
.atk-side .card{width:100%;box-sizing:border-box}

/* trend: numbered columns + a legend, so opponent names stay readable */
.trleg{margin-top:8px;display:flex;flex-direction:column;gap:3px}
.trg{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:.7rem}
.trg-n{width:18px;height:18px;border-radius:4px;background:rgba(255,255,255,.07);
  color:var(--gray);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.62rem}
.trg-o{color:var(--light);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trg-v{font-weight:700}
.trb-d{font-size:.64rem;color:var(--gray)}

/* ── match sheet: fixture header, preview mode, export ───────────────── */
.md-fixture{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:3px 0 2px}
.md-fx{font-size:.82rem;color:var(--amber);font-weight:600;outline:none;
  border-bottom:1px dashed transparent;min-width:60px}
.md-fx[contenteditable="true"]:hover,.md-fx[contenteditable="true"]:focus{border-bottom-color:rgba(240,165,0,.5)}
.md-fx-sep{color:var(--gray);font-size:.8rem}

.md-prevnote{background:rgba(240,165,0,.12);border:1px solid rgba(240,165,0,.4);color:var(--amber);
  border-radius:8px;padding:8px 14px;font-size:.78rem;margin-bottom:12px;text-align:center}
/* The way into editing, and the only control on the bar that changes what the
   whole page is for — so it is the one that looks like a button rather than
   another item in a row of grey pills. */
.md-editbtn{display:inline-flex;align-items:center;gap:6px;background:var(--amber);
  border:1px solid var(--amber);color:#12100a;font-family:inherit;font-size:.78rem;
  font-weight:800;padding:8px 14px;min-height:36px;border-radius:var(--radius-sm);
  cursor:pointer;white-space:nowrap}
.md-editbtn:hover{background:var(--amber2)}
/* The green "done" state is gone: this button switches view, it does not
   confirm anything, and green next to a save button read as "saved". */
@media print{ .md-editbtn{display:none !important} }

.md-editnote{background:rgba(240,165,0,.12);border:1px solid rgba(240,165,0,.4);color:var(--amber);
  border-radius:8px;padding:8px 14px;font-size:.78rem;margin-bottom:12px;text-align:center}
#md-preview.previewing{max-width:430px;margin:0 auto;border:1px solid var(--border);
  border-radius:14px;padding:10px;background:rgba(255,255,255,.02)}
#md-preview.previewing .md-grid{grid-template-columns:1fr}
#md-preview.previewing .md-blk.half,#md-preview.previewing .md-blk.full{grid-column:1/-1}

/* html2canvas snapshots the live DOM, so anything interactive is hidden first */
.md-doc.exporting .md-blkbar,.md-doc.exporting .md-pick,
.md-doc.exporting .md-tools,.md-doc.exporting .md-courtbtns{display:none!important}

/* ── shared page: fixture header + expiry notice ─────────────────────── */
.pub-head{max-width:1100px;margin:0 auto;padding:16px 14px 4px}
.pub-head-t{font-size:1.05rem;font-weight:800;color:var(--white)}
.pub-head-d{font-size:.8rem;color:var(--amber);margin-top:2px}
.pub-expired{max-width:420px;margin:18vh auto;text-align:center;padding:0 20px}
.pub-expired-t{font-size:1.1rem;font-weight:800;color:var(--light);margin-bottom:8px}
.pub-expired-d{font-size:.85rem;color:var(--gray);line-height:1.6}

/* ── login: visible labels, reset link, readable footer ─────────────── */
.login-label{display:block;font-size:.74rem;letter-spacing:.05em;text-transform:uppercase;
  color:var(--gray);margin:0 0 5px;text-align:left}
.login-input+.login-label{margin-top:14px}
.login-link{background:none;border:none;color:var(--amber);font-family:inherit;font-size:.78rem;
  cursor:pointer;padding:10px 4px 0;text-decoration:underline;width:100%}
.login-link:hover{color:#ffd27a}
.login-help{margin-top:14px;font-size:.74rem;color:var(--gray);line-height:1.55;text-align:left;
  border-top:1px solid var(--border);padding-top:12px}
.login-error.ok{color:#8ee8ae;background:rgba(74,222,128,.1);border-color:rgba(74,222,128,.4)}
/* was 28% opacity — legible now while still staying out of the way */
.login-credit{opacity:.55;color:var(--light)}

/* save button states */
.md-save.saving{background:rgba(240,165,0,.16);border-color:var(--amber);color:var(--amber);cursor:wait}
.md-save.failed{background:rgba(230,57,70,.2);border-color:#e63946;color:#ff8b95}
.md-blkbar button:focus-visible{outline:2px solid var(--amber);outline-offset:1px}

/* ── mobile navigation: panels instead of hidden horizontal scroll ───── */
.nav-burger,.filter-toggle{display:none}

@media (max-width:900px){
  .nav-row-main{flex-wrap:wrap;gap:8px;align-items:center;position:relative}

  .nav-burger{display:flex;align-items:center;gap:8px;background:var(--bg3);
    border:1px solid var(--border);color:var(--light);border-radius:8px;
    padding:9px 13px;font-family:inherit;cursor:pointer;flex:1 1 auto;min-width:0}
  .nav-burger span{display:block;width:15px;height:2px;background:var(--amber);border-radius:1px;
    box-shadow:0 5px 0 var(--amber),0 -5px 0 var(--amber);margin-right:4px}
  .nav-burger span+span,.nav-burger span+span+span{display:none}
  .nav-burger b{font-size:.74rem;font-weight:800;letter-spacing:.05em;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
  .nav-burger[aria-expanded="true"]{border-color:var(--amber)}

  .filter-toggle{display:flex;align-items:center;gap:6px;background:var(--bg3);
    border:1px solid var(--border);color:var(--light);border-radius:8px;
    padding:9px 13px;font-size:.74rem;font-weight:700;font-family:inherit;cursor:pointer;
    flex:0 0 auto}
  .filter-toggle[aria-expanded="true"]{border-color:var(--amber);color:var(--amber)}
  .fb-count{background:var(--amber);color:#12100a;border-radius:9px;padding:1px 6px;
    font-size:.64rem;font-weight:800}

  /* tabs become a dropdown list */
  #nav-tabs{display:none;position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:300;
    flex-direction:column;background:var(--bg2);border:1px solid var(--amber);border-radius:10px;
    padding:6px;gap:2px;overflow:visible;box-shadow:0 12px 30px rgba(0,0,0,.55)}
  #nav-tabs.open{display:flex}
  #nav-tabs .tab{width:100%;text-align:left;border-radius:6px;padding:11px 13px;font-size:.8rem}
  #nav-tabs .tab.active{background:rgba(240,165,0,.15)}
  .tab-menu{width:100%}
  .tab-menu .tab-parent{width:100%;text-align:left}

  /* filters become a panel */
  .nav-filters{display:none;position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:290;
    flex-direction:column;align-items:stretch;gap:10px;background:var(--bg2);
    border:1px solid var(--amber);border-radius:10px;padding:12px;
    box-shadow:0 12px 30px rgba(0,0,0,.55)}
  .nav-filters.open{display:flex}
  .nav-filters .team-picker,.nav-filters .match-picker{display:flex;flex-direction:column;
    align-items:stretch;gap:5px;width:100%}
  .nav-filters select,.match-picker-btn{width:100%;max-width:none;min-width:0;box-sizing:border-box}
  .match-picker-panel{position:static;width:100%;min-width:0;max-width:none;margin-top:6px;
    max-height:min(60vh,460px)}
}

/* ── data-scope badges ──────────────────────────────────────────────── */
.scope{display:inline-block;vertical-align:middle;margin-left:8px;padding:2px 8px;border-radius:11px;
  font-size:.63rem;font-weight:700;letter-spacing:.03em;text-transform:none;white-space:nowrap;
  border:1px solid;cursor:help}
.scope-all{color:var(--gray);border-color:var(--border);background:rgba(255,255,255,.04)}
.scope-filtered{color:var(--amber);border-color:rgba(240,165,0,.5);background:rgba(240,165,0,.1)}
.scope-season{color:#8bb4f7;border-color:rgba(139,180,247,.45);background:rgba(139,180,247,.1)}
.scope-league{color:#c084fc;border-color:rgba(192,132,252,.45);background:rgba(192,132,252,.1)}
@media (max-width:600px){.scope{display:block;margin:5px 0 0;width:fit-content}}

/* ── match picker footer: staged selection with explicit apply ───────── */
.mp-foot{display:flex;align-items:center;gap:8px;padding:9px 10px;border-top:1px solid var(--border);
  background:rgba(255,255,255,.02)}
.mp-count{flex:1;font-size:.72rem;color:var(--gray);white-space:nowrap}
.mp-reset,.mp-apply{border-radius:6px;padding:6px 12px;font-size:.74rem;font-weight:700;
  font-family:inherit;cursor:pointer;border:1px solid var(--border);background:var(--bg3);color:var(--gray)}
.mp-reset:hover{color:var(--light);border-color:var(--gray)}
.mp-apply.on{background:var(--amber);border-color:var(--amber);color:#12100a}
.mp-apply:disabled{opacity:.45;cursor:default}
.mp-note{padding:8px 11px;font-size:.68rem;color:var(--gray);line-height:1.5;
  border-top:1px solid rgba(255,255,255,.05)}

/* ── benchmark: metric picker + pinned team column ───────────────────── */
/* The metric picker is a phone accommodation: nine columns do not fit on a
   handset, so it narrows the table to one. On anything wider all nine fit and
   the picker only stands between the coach and the comparison. */
.bench-pick{display:none;align-items:center;gap:9px;margin:0 0 10px}
@media (max-width:900px){ .bench-pick{display:flex} }
.bench-pick-l{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gray)}
#bench-metric{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  border-radius:6px;padding:6px 10px;font-size:.78rem;font-family:inherit;cursor:pointer;
  max-width:100%}
.bench-wrap{position:relative}
.bench-table .bench-team{position:sticky;left:0;z-index:2;background:var(--card);
  box-shadow:1px 0 0 var(--border)}
.bench-table tr:hover .bench-team{background:var(--bg3)}
@media (max-width:700px){
  .bench-pick{flex-direction:column;align-items:stretch;gap:5px}
  #bench-metric{width:100%}
  .bench-table .bench-team{max-width:132px;min-width:132px;overflow:hidden;
    text-overflow:ellipsis;white-space:nowrap}
  .bench-table th,.bench-table td{padding:7px 8px;font-size:.74rem}
}

/* ── priority summary + collapsible sections ────────────────────────── */
.prio{background:linear-gradient(180deg,rgba(240,165,0,.1),rgba(240,165,0,.03));
  border:1px solid rgba(240,165,0,.35);border-radius:11px;padding:14px 18px;margin:0 0 20px}
.prio-h{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--amber);margin-bottom:10px}
.prio-l{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}
.prio-l li{color:var(--light)}
.prio-t{font-size:.88rem;display:block}
.prio-s{font-size:.74rem;color:var(--gray);display:block;margin-top:1px}
.tiny-sample{display:inline-block;margin-left:5px;padding:1px 6px;border-radius:9px;
  font-size:.62rem;font-weight:700;color:#ffd27a;background:rgba(240,165,0,.14);
  border:1px solid rgba(240,165,0,.4);cursor:help}

/* ── confidence chips ──
   One vocabulary for "how much is this built on", so the same number of events
   is described the same way on every tab. Colour carries a hint, the words
   carry the meaning — the count is always spelled out beside them. */
.conf{display:inline-block;margin-left:5px;padding:1px 7px;border-radius:9px;
  font-size:.62rem;font-weight:700;white-space:nowrap;vertical-align:middle;
  font-variant-numeric:tabular-nums}
.conf-low{background:rgba(255,107,122,.13);color:#ff9aa4}
.conf-fair{background:rgba(240,165,0,.13);color:var(--amber)}
.conf-good{background:rgba(74,222,128,.12);color:#7fe0a0}
@media print{ .conf{border:1px solid #999;color:#333 !important;background:none} }

.coll{margin:22px 0 0}
.coll-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding-bottom:7px;
  border-bottom:1px solid var(--border);margin-bottom:12px}
.coll-t{font-size:.95rem;font-weight:800;color:var(--white)}
.coll-b{margin-left:auto;background:var(--bg3);border:1px solid var(--border);color:var(--gray);
  border-radius:6px;padding:4px 11px;font-size:.7rem;font-family:inherit;cursor:pointer}
.coll-b:hover{color:var(--light);border-color:var(--gray)}
.coll-b:focus-visible{outline:2px solid var(--amber);outline-offset:1px}

/* ── match report on a phone ─────────────────────────────────────────
   These tables are genuinely wide (per-player reception, attack and block
   columns), so horizontal scrolling stays — but the player's name is pinned
   to the left edge, and the padding tightens, so a row can be read without
   scrolling back and forth to see whose numbers they are. */
.mr-player-table,.mr-kill-table{position:relative}
/* The report modal is a LIGHT document (.mr-modal is #fff on #111 text), so
   these cells must use light values. They used to take var(--card) and
   var(--bg3) from the dark app theme: --card is 4% white and looked right by
   accident over the white page, but --bg3 is opaque navy, so hovering a row
   painted the player's name black-on-black. Literal colours here, matching the
   table's own header tint, because this table exists nowhere else. */
.mr-player-table td.mr-name,.mr-player-table th:first-child,
.mr-kill-table td:first-child,.mr-kill-table th:first-child{
  position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 0 #ccc}
.mr-player-table th:first-child,.mr-kill-table th:first-child{background:#eef1f7}
.mr-player-table tr:hover td,.mr-player-table tr:hover td.mr-name{background:#eef4fb;color:#111}
.mr-player-table tr.mr-totals-row:hover td{background:#eceff5}

@media (max-width:760px){
  .mr-player-table,.mr-kill-table,.mr-sets-table{font-size:.72rem}
  .mr-player-table th,.mr-player-table td,
  .mr-kill-table th,.mr-kill-table td,
  .mr-sets-table th,.mr-sets-table td{padding:5px 6px;white-space:nowrap}
  .mr-player-table td.mr-name,.mr-player-table th:first-child,
  .mr-kill-table td:first-child,.mr-kill-table th:first-child{
    max-width:112px;min-width:112px;overflow:hidden;text-overflow:ellipsis}
  .mr-set-box{min-width:18px;padding:1px 3px;font-size:.66rem}
  /* a visible hint that there is more to the right */
  .mr-scroll{position:relative}
  .mr-scroll::after{content:'';position:absolute;top:0;right:0;bottom:0;width:22px;
    background:linear-gradient(90deg,transparent,rgba(10,20,36,.85));pointer-events:none}
}

/* ── serve-target heat map ──────────────────────────────────────────── */
.szw{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:18px;align-items:start;
  background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px}
.szw-side{display:flex;flex-direction:column;gap:10px}
.szw-card{border-radius:9px;padding:11px 14px;border:1px solid}
.szw-card.best{background:rgba(230,57,70,.1);border-color:rgba(230,57,70,.5)}
.szw-card.avoid{background:rgba(74,222,128,.08);border-color:rgba(74,222,128,.4)}
.szw-k{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gray)}
.szw-v{font-size:1.05rem;font-weight:800;color:var(--white);margin:2px 0 3px}
.szw-d{font-size:.75rem;color:var(--gray);line-height:1.5}
.szw-note{font-size:.76rem;color:var(--gray);line-height:1.5}
.serve-targets{display:flex;flex-direction:column;gap:10px;margin-top:16px}
@media (max-width:760px){.szw{grid-template-columns:1fr}}

/* rotation chips + zone drill-down on the serve map */
.szw-rots{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 12px}
.szw-chip{background:var(--bg3);border:1px solid var(--border);color:var(--gray);
  border-radius:6px;padding:5px 11px;font-size:.75rem;font-family:inherit;cursor:pointer}
.szw-chip:hover{color:var(--light);border-color:var(--gray)}
.szw-chip.active{background:rgba(240,165,0,.16);border-color:var(--amber);color:var(--amber)}
.szw-chip b{font-weight:700;opacity:.6;font-size:.85em;margin-left:3px}
.szw-detail{background:rgba(255,255,255,.03);border:1px solid var(--border);border-radius:9px;padding:11px 13px}
.szw-dh{display:flex;align-items:center;font-size:.78rem;font-weight:700;color:var(--light);margin-bottom:8px}
.szw-close{margin-left:auto;background:none;border:none;color:var(--gray);font-size:1.1rem;
  line-height:1;cursor:pointer;font-family:inherit;padding:0 3px}
.szw-close:hover{color:var(--light)}

/* ── explanation callouts fold behind their own heading ──────────────── */
.al.alt.collapsible{cursor:default}
.al.alt.collapsible .at{cursor:pointer;display:flex;align-items:center;gap:8px;
  user-select:none;outline:none}
.al.alt.collapsible .at::after{content:'?';margin-left:auto;flex:0 0 auto;
  width:18px;height:18px;border-radius:50%;border:1px solid var(--border);
  color:var(--gray);font-size:.68rem;font-weight:700;line-height:16px;text-align:center;
  transition:color .15s,border-color .15s,background .15s}
.al.alt.collapsible .at:hover::after{color:var(--amber);border-color:var(--amber)}
.al.alt.collapsible .at:focus-visible::after{outline:2px solid var(--amber);outline-offset:2px}
.al.alt.collapsible.open .at::after{content:'×';color:var(--amber);border-color:var(--amber);
  background:rgba(240,165,0,.12)}
.al.alt.collapsible .ad{display:none}
.al.alt.collapsible.open .ad{display:block;margin-top:6px;
  border-top:1px solid rgba(255,255,255,.07);padding-top:7px}
/* closed boxes shrink to a single line so they stop taking vertical space */
.al.alt.collapsible:not(.open){padding-top:7px;padding-bottom:7px}

/* keep the trend card inside the court's height */
.atk-side{scrollbar-width:thin}

/* ── trend card with a full season loaded ────────────────────────────
   The bars scroll sideways (they stay readable at a fixed width each) and
   the legend scrolls vertically, so the card keeps a fixed footprint no
   matter how many matches are in the selection. */
.trl-wrap{overflow-x:auto;overflow-y:hidden;padding-bottom:4px}
.trl-wrap::-webkit-scrollbar{height:6px}
.trl-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:3px}
.trl-wrap::-webkit-scrollbar-track{background:transparent}
.trl{scrollbar-width:thin}
.trl .trb{flex:0 0 22px}
.trleg{max-height:150px;overflow-y:auto;padding-right:3px;scrollbar-width:thin}
.trleg::-webkit-scrollbar{width:6px}
.trleg::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:3px}
.trleg::-webkit-scrollbar-track{background:transparent}

/* ═══════════════════════════════════════════════════════════════════════
   NEW UI LAYER — sub-tabs, toasts, modal, publish box, print sheet
   ═══════════════════════════════════════════════════════════════════════ */

/* ── tactical sub-navigation ─────────────────────────────────────────── */
/* The three tactical views used to be three of seven top-level tabs. They are
   one question seen from three angles, so they sit together on their own row
   under the TAKTIKA tab. */
.nav-row-sub{min-height:0;padding-top:0;padding-bottom:0;
  background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.05)}
.subtabs-inner{display:flex;gap:var(--sp-1);overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;padding:var(--sp-2) 0}
.subtabs-inner::-webkit-scrollbar{display:none}
.subtab{background:transparent;border:1px solid transparent;color:var(--gray);
  font-family:inherit;font-size:var(--fs-sm);font-weight:700;letter-spacing:.02em;
  padding:7px 14px;border-radius:99px;cursor:pointer;white-space:nowrap;flex-shrink:0;
  transition:color .15s ease,background .15s ease,border-color .15s ease}
.subtab:hover{color:var(--light);background:rgba(255,255,255,.04)}
.subtab.active{color:var(--amber);background:rgba(240,165,0,.12);border-color:rgba(240,165,0,.4)}
@media (max-width:900px){
  .nav-row-sub{padding-left:14px;padding-right:14px}
  .subtab{padding:7px 12px;font-size:var(--fs-xs)}
}

/* ── toasts ──────────────────────────────────────────────────────────── */
/* Replaces alert(): does not block the page, does not truncate on mobile, and
   can carry an Undo button — which is what makes deletion safe. */
.toast-host{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:1200;
  display:flex;flex-direction:column;gap:var(--sp-2);align-items:center;
  width:min(440px,calc(100vw - 24px));pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--sp-3);width:100%;
  background:var(--bg4);border:1px solid var(--border);border-left:3px solid var(--gray);
  border-radius:var(--radius);padding:11px 12px 11px 14px;box-shadow:var(--shadow);
  font-size:var(--fs-md);color:var(--light);animation:toastIn .22s ease both}
.toast-msg{flex:1;min-width:0;line-height:1.45}
.toast-ok{border-left-color:#4ade80}
.toast-warn{border-left-color:var(--amber)}
.toast-bad{border-left-color:var(--red)}
.toast-undo{border-left-color:var(--amber)}
.toast-act{background:rgba(240,165,0,.15);border:1px solid rgba(240,165,0,.45);color:var(--amber);
  font-family:inherit;font-size:var(--fs-sm);font-weight:800;padding:6px 12px;
  border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;flex-shrink:0}
.toast-act:hover{background:rgba(240,165,0,.28)}
.toast-x{background:none;border:none;color:var(--gray);font-size:1.15rem;line-height:1;
  cursor:pointer;padding:0 2px;flex-shrink:0}
.toast-x:hover{color:var(--light)}
.toast.leaving{animation:toastOut .2s ease both}
@keyframes toastIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(10px)}}

/* ── shared modal (confirm / alert / prompt) ─────────────────────────── */
.ui-modal{position:fixed;inset:0;z-index:1100;background:rgba(4,9,16,.72);
  backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;
  padding:20px;overflow-y:auto}
.ui-modal-box{background:var(--bg2);border:1px solid var(--border);border-radius:14px;
  width:100%;max-width:460px;padding:var(--sp-5);box-shadow:0 24px 64px rgba(0,0,0,.6);
  animation:modalIn .18s ease both;margin:auto}
@keyframes modalIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.ui-modal-title{font-size:var(--fs-xl);font-weight:800;color:var(--white);margin-bottom:var(--sp-3)}
.ui-modal-body{font-size:var(--fs-md);color:var(--light);line-height:1.6}
.ui-modal-sec{margin-bottom:var(--sp-3)}
.ui-modal-sec b{color:var(--white)}
.ui-modal-sec ul{margin:var(--sp-1) 0 0 18px;color:var(--gray)}
.ui-modal-sec li{margin:3px 0}
.ui-modal-hint{font-size:var(--fs-sm);color:var(--gray);margin-top:var(--sp-2)}
.ui-modal-warn{font-size:var(--fs-sm);color:var(--light);background:rgba(240,165,0,.08);
  border-left:3px solid var(--amber);border-radius:0 var(--radius-sm) var(--radius-sm) 0;
  padding:10px 12px;margin-top:var(--sp-3);line-height:1.55}
.ui-modal-input{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--white);
  font-family:inherit;font-size:var(--fs-lg);padding:11px 13px;border-radius:var(--radius);
  margin-top:var(--sp-4)}
.ui-modal-input:focus{outline:none;border-color:var(--amber)}
.ui-modal-foot{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-5)}
.ui-modal-cancel,.ui-modal-ok{font-family:inherit;font-size:var(--fs-md);font-weight:700;
  padding:10px 18px;border-radius:var(--radius);cursor:pointer;border:1px solid var(--border)}
.ui-modal-cancel{background:transparent;color:var(--gray)}
.ui-modal-cancel:hover{color:var(--light);border-color:var(--gray)}
.ui-modal-ok{background:var(--amber);color:#12100a;border-color:var(--amber)}
.ui-modal-ok:hover{background:var(--amber2)}
.ui-modal-ok.danger{background:var(--red);color:#fff;border-color:var(--red)}
.ui-modal-ok.danger:hover{background:#f04a56}
/* Destination picker (copying a block to another sheet) — buttons instead of
   asking the user to type a sheet number. */
.ui-choice{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-2)}
.ui-choice-btn{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:var(--fs-md);font-weight:700;text-align:left;
  padding:11px 14px;border-radius:var(--radius);cursor:pointer}
.ui-choice-btn:hover{border-color:var(--amber);color:var(--amber)}

/* ── publish result: URL row + QR ────────────────────────────────────── */
.pub-row{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-2) 0}
.pub-row .pub-url{flex:1;min-width:0}
.pub-copy{background:rgba(240,165,0,.15);border:1px solid rgba(240,165,0,.45);color:var(--amber);
  font-family:inherit;font-size:var(--fs-sm);font-weight:800;padding:6px 12px;
  border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;flex-shrink:0}
.pub-copy:hover{background:rgba(240,165,0,.28)}
/* White quiet zone: a QR on a dark background does not scan on many phones. */
.pub-qr{margin-top:var(--sp-3);display:inline-flex;flex-direction:column;align-items:center;
  gap:4px;background:#fff;padding:10px 10px 6px;border-radius:var(--radius)}
.pub-qr svg{display:block}
.pub-qr-cap{font-size:var(--fs-xs);color:#333;font-weight:700}

/* ── login: reveal button and caps-lock notice ───────────────────────── */
.login-pw-wrap{position:relative}
.login-pw-wrap .login-input{padding-right:46px}
.login-eye{position:absolute;right:6px;top:6px;background:none;border:none;color:var(--gray);
  font-size:1rem;line-height:1;padding:8px;cursor:pointer;border-radius:var(--radius-sm)}
.login-eye:hover{color:var(--amber)}
.login-eye.on{color:var(--amber)}
.caps-warn{font-size:var(--fs-sm);color:var(--amber);background:rgba(240,165,0,.1);
  border-radius:var(--radius-sm);padding:7px 10px;margin-bottom:var(--sp-3)}
.login-link{font-size:var(--fs-sm);line-height:1.4}

/* ── empty states ────────────────────────────────────────────────────── */
.empty-ico{width:64px;height:64px;margin:0 auto var(--sp-4);opacity:.5}
.empty-cta{margin-top:var(--sp-4);background:var(--amber);color:#12100a;border:none;
  font-family:inherit;font-size:var(--fs-md);font-weight:800;padding:11px 20px;
  border-radius:var(--radius);cursor:pointer}
.empty-cta:hover{background:var(--amber2)}

/* ── form sparkline (overview hero) ──────────────────────────────────── */
.form-strip{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}
.form-dot{width:20px;height:20px;border-radius:5px;display:flex;align-items:center;
  justify-content:center;font-size:var(--fs-xs);font-weight:800;font-family:var(--font-mono)}
.form-dot.w{background:rgba(39,174,96,.22);color:#4ade80}
.form-dot.l{background:rgba(230,57,70,.2);color:#ff6b7a}

/* ── toolbar for exports ─────────────────────────────────────────────── */
.ov-tools{display:flex;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-3);flex-wrap:wrap}
/* These two open the only genuinely analytical views in the tab, and dressed as
   plain grey chips they read as decoration and got missed. Amber border, amber
   text, amber tint: the same language the app already uses for "this does
   something", so they stand out without becoming a second navigation bar. */
.ov-tool{background:rgba(240,165,0,.10);border:1px solid rgba(240,165,0,.55);color:var(--amber);
  font-family:inherit;font-size:var(--fs-sm);font-weight:700;padding:6px 12px;
  border-radius:var(--radius-sm);cursor:pointer}
.ov-tool:hover{background:rgba(240,165,0,.20);border-color:var(--amber);color:var(--amber);
  box-shadow:0 0 0 3px rgba(240,165,0,.12)}

/* ═══════════════════════════════════════════════════════════════════════
   PRINT — the match sheet on A4. The PNG export needs a CDN and renders at
   screen resolution; this works offline and prints properly.
   ═══════════════════════════════════════════════════════════════════════ */
@media print{
  @page{size:A4 portrait;margin:11mm}
  nav,.toast-host,.ui-modal,.md-bar,.md-blkbar,.md-prevnote,.md-editnote,#md-publish-status,
  .sw-update,.login-screen,#t1,#t8,.no-print,.nav-row-sub{display:none !important}
  body{background:#fff !important;color:#111 !important}
  .section{padding:0 !important;max-width:none !important}
  .md-doc,.md-sec,.md-blk,.card{background:#fff !important;color:#111 !important;
    border-color:#bbb !important;box-shadow:none !important}
  .md-doc *{color:#111 !important}
  .md-kicker,.md-head b{color:#a06d00 !important}
  /* Blocks must not be split across a page break — half a court diagram at the
     bottom of a page is useless in the gym. */
  .md-blk,.md-sec,.player-card,.card{break-inside:avoid;page-break-inside:avoid}
  h1,h2,h3,.st{break-after:avoid;page-break-after:avoid}
  a[href]::after{content:"" !important}
  table{font-size:9pt}
}

/* ═══════════════════════════════════════════════════════════════════════
   INSIGHTS — comparison, player deep-dive, season trend
   These are read-only side views on the current selection, so they share one
   overlay rather than becoming tabs you have to navigate back out of.
   ═══════════════════════════════════════════════════════════════════════ */
.ins-overlay{position:fixed;inset:0;z-index:1050;background:rgba(4,9,16,.78);
  backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;
  padding:24px 16px;overflow-y:auto}
.ins-modal{background:var(--bg2);border:1px solid var(--border);border-radius:14px;
  width:100%;max-width:900px;padding:var(--sp-5);box-shadow:0 24px 64px rgba(0,0,0,.6);
  animation:modalIn .18s ease both;margin:auto}
.ins-head{display:flex;align-items:flex-start;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.ins-head h2{flex:1;font-size:1.25rem;font-weight:800;color:var(--white);line-height:1.3}
.ins-role{display:inline-block;margin-left:var(--sp-2);font-size:var(--fs-sm);font-weight:700;
  color:var(--amber);background:rgba(240,165,0,.12);border-radius:99px;padding:3px 10px;
  vertical-align:middle}
.ins-close{background:rgba(255,255,255,.06);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:var(--fs-sm);font-weight:700;padding:8px 13px;
  border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;flex-shrink:0}
.ins-close:hover{border-color:var(--amber);color:var(--amber)}
.ins-tabs{display:flex;gap:var(--sp-1);flex-wrap:wrap;margin-bottom:var(--sp-4)}
.ins-tab{background:transparent;border:1px solid var(--border);color:var(--gray);
  font-family:inherit;font-size:var(--fs-sm);font-weight:700;padding:6px 13px;
  border-radius:99px;cursor:pointer;white-space:nowrap}
.ins-tab:hover{color:var(--light);border-color:var(--gray)}
.ins-tab.active{color:var(--amber);background:rgba(240,165,0,.12);border-color:rgba(240,165,0,.45)}
.ins-note{font-size:var(--fs-sm);color:var(--gray);line-height:1.6;margin-top:var(--sp-4)}
.ins-tools{margin-top:var(--sp-3)}
.ins-empty{font-size:var(--fs-sm);color:var(--gray);padding:var(--sp-2) 0}

/* comparison table: the delta column is the point, so it carries the colour */
.cmp-table th{vertical-align:top}
.cmp-sub{display:block;font-size:var(--fs-xs);font-weight:600;color:var(--gray);margin-top:2px}
.cmp-metric{font-weight:700;color:var(--light)}
.cmp-num{text-align:right;font-variant-numeric:tabular-nums}
.cmp-d{text-align:right;white-space:nowrap}
.cmp-delta{font-weight:800;font-variant-numeric:tabular-nums}
.cmp-delta.up{color:#4ade80}
.cmp-delta.down{color:#ff6b7a}
.cmp-flat{color:var(--gray)}

/* player deep-dive cards */
.ins-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-3)}
.ins-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  padding:var(--sp-4)}
.ins-card-t{font-size:var(--fs-md);font-weight:800;color:var(--white);margin-bottom:var(--sp-3);
  display:flex;align-items:baseline;gap:var(--sp-2)}
.ins-n{font-size:var(--fs-xs);font-weight:600;color:var(--gray)}
.ins-kpis{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin-bottom:var(--sp-2)}
.ins-kpis div{display:flex;flex-direction:column}
.ins-kpis b{font-size:1.35rem;font-weight:800;color:var(--white);font-variant-numeric:tabular-nums}
.ins-kpis b.good{color:#4ade80}
.ins-kpis b.bad{color:#ff6b7a}
.ins-kpis span{font-size:var(--fs-xs);color:var(--gray);margin-top:1px}
.ins-line{font-size:var(--fs-sm);color:var(--light);margin-top:var(--sp-2);line-height:1.5}
.ins-line b{color:var(--amber)}
.ins-bar{display:flex;align-items:center;gap:var(--sp-2);margin-top:6px;font-size:var(--fs-xs)}
.ins-bar-l{width:104px;color:var(--gray);flex-shrink:0}
.ins-bar-t{flex:1;height:7px;background:rgba(255,255,255,.06);border-radius:4px;overflow:hidden}
.ins-bar-t i{display:block;height:100%;background:var(--gray);border-radius:4px}
.ins-bar-t i.good{background:#4ade80}
.ins-bar-t i.bad{background:#ff6b7a}
.ins-bar-v{width:30px;text-align:right;color:var(--light);font-variant-numeric:tabular-nums}

/* trend chart */
.trend-svg{width:100%;height:auto;display:block}

/* a jersey number that opens the player view has to look clickable */
.jsy-link{cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.jsy-link:hover{transform:scale(1.12);box-shadow:0 0 0 2px rgba(240,165,0,.5)}
.jsy-link:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

@media (max-width:600px){
  .ins-overlay{padding:10px 8px}
  .ins-modal{padding:var(--sp-4);border-radius:10px}
  .ins-head h2{font-size:1.05rem}
  .ins-kpis{gap:var(--sp-3)}
  .ins-kpis b{font-size:1.15rem}
}
@media print{ .ins-overlay{display:none !important} }

/* Shown only when the app failed to start — see the boot guard in index.html. */
.boot-error{margin-top:var(--sp-4);padding:13px 15px;border-radius:var(--radius);
  background:rgba(230,57,70,.12);border:1px solid rgba(230,57,70,.4);
  font-size:var(--fs-sm);color:#ffb3ba;line-height:1.55;text-align:left}
.boot-error b{color:#ff8a95}
.boot-error-fix{margin-top:var(--sp-2);color:var(--gray);font-size:var(--fs-xs)}
.boot-error-btn{margin-top:var(--sp-3);background:var(--amber);border:none;color:#12100a;
  font-family:inherit;font-size:var(--fs-sm);font-weight:800;padding:10px 18px;
  border-radius:var(--radius-sm);cursor:pointer;min-height:42px}
.boot-error-btn:hover{background:var(--amber2)}
.boot-error code{background:rgba(255,255,255,.08);padding:1px 5px;border-radius:4px}

/* ═══════════════════════════════════════════════════════════════════════
   COLLAPSIBLE / REORDERABLE SECTIONS
   Applied to the rendered output of every data tab (see sections.js), so it
   covers sections the renderers add later without any registration step.
   ═══════════════════════════════════════════════════════════════════════ */
.sec-block{margin:var(--sp-5) 0 0}
.sec-bar{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}
.sec-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:var(--sp-2);
  background:none;border:none;padding:6px 0;cursor:pointer;text-align:left;font-family:inherit}
.sec-chev{color:var(--amber);font-size:.8rem;transition:transform .18s ease;flex-shrink:0}
.sec-block.collapsed .sec-chev{transform:rotate(-90deg)}
.sec-title{font-size:1rem;font-weight:800;color:var(--white);letter-spacing:.01em;
  text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sec-toggle:hover .sec-title{color:var(--amber)}
.sec-tools{display:flex;gap:var(--sp-1);opacity:0;transition:opacity .15s ease;flex-shrink:0}
.sec-block:hover .sec-tools,.sec-tools:focus-within{opacity:1}
.sec-move{background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--gray);
  font-family:inherit;font-size:.8rem;line-height:1;width:26px;height:26px;
  border-radius:var(--radius-sm);cursor:pointer}
.sec-move:hover:not(:disabled){border-color:var(--amber);color:var(--amber)}
.sec-move:disabled{opacity:.25;cursor:default}
.sec-body{overflow:hidden}
.sec-block.collapsed .sec-body{display:none}
/* Touch has no hover, so the controls are always visible on a phone. */
@media (hover:none){ .sec-tools{opacity:1} }
/* A folded section must never hide content from a printed sheet. */
@media print{
  .sec-block.collapsed .sec-body{display:block !important}
  .sec-tools,.sec-chev{display:none !important}
}

/* match sheet: folded blocks */
.md-blkfold{background:none;border:none;color:var(--amber);cursor:pointer;
  font-size:.8rem;line-height:1;padding:2px 4px}
.md-blkname{cursor:pointer}
.md-blk.folded .md-blk-body{display:none}
.md-blk.folded{opacity:.72}
/* Folding is an editing convenience, so it never affects the printed sheet. */
@media print{ .md-blk.folded .md-blk-body{display:block !important} .md-blk.folded{opacity:1} }

/* Comparison tables: the metric name is a row header on the left, every figure
   column is right-aligned. Header cells inherit the same alignment as the cells
   under them, which is what was drifting before. */
.cmp-table th,.cmp-table td{padding:9px 12px;vertical-align:bottom}
.cmp-table thead th{font-size:var(--fs-xs);font-weight:700;color:var(--gray);
  text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);
  line-height:1.35;white-space:nowrap}
.cmp-table th.cmp-num,.cmp-table td.cmp-num{text-align:right}
.cmp-table th.cmp-d,.cmp-table td.cmp-d{text-align:right}
.cmp-table th.cmp-metric,.cmp-table td.cmp-metric{text-align:left;white-space:normal}
.cmp-table tbody th.cmp-metric{font-weight:700;color:var(--light);font-size:var(--fs-sm)}
.cmp-table tbody td{font-size:var(--fs-md);color:var(--white)}
.cmp-table tbody tr:not(:last-child) th,.cmp-table tbody tr:not(:last-child) td{
  border-bottom:1px solid rgba(255,255,255,.05)}
.cmp-table .cmp-sub{display:block;font-size:var(--fs-xs);font-weight:600;
  color:var(--gray);text-transform:none;letter-spacing:0;margin-top:2px}

/* Scope badges kept in the section bar (Teljes szezon / Ligaátlag) */
.sec-bar .scope{margin-left:var(--sp-2);flex-shrink:0}

/* Build stamp in the shortcut panel, with a one-click cache purge. */
.kbd-build{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--border);
  font-size:var(--fs-xs);color:var(--gray);display:flex;align-items:center;gap:var(--sp-2)}
.kbd-build b{color:var(--amber);font-family:var(--font-mono)}
.kbd-reload{margin-left:auto;background:rgba(255,255,255,.06);border:1px solid var(--border);
  color:var(--light);font-family:inherit;font-size:var(--fs-xs);font-weight:700;
  padding:5px 11px;border-radius:var(--radius-sm);cursor:pointer}
.kbd-reload:hover{border-color:var(--amber);color:var(--amber)}

/* Landing-zone cells are clickable filters, so they answer to the pointer. */
.atk-zone{transition:stroke .12s ease,fill-opacity .12s ease}
.atk-zone:hover{stroke:#f0a500;stroke-width:2}


/* Play button on the selected zone card — the way into the video from a number. */
/* A summary card that can play its balls is a button, and says so with a small
   video mark rather than by looking different from the ones that cannot. */
.asc-c.asc-can{cursor:pointer;font-family:inherit;text-align:inherit;position:relative;
  border:1px solid transparent;transition:border-color .12s,background .12s}
.asc-c.asc-can:hover{border-color:rgba(240,165,0,.55);background:rgba(240,165,0,.08)}
.asc-play{position:absolute;top:5px;right:6px;display:inline-flex;align-items:center;gap:2px;
  font-size:.6rem;color:var(--amber);opacity:.75}
.asc-c.asc-can:hover .asc-play{opacity:1}
/* The way back out of a handed-over list. */
.vt-back{display:inline-flex;align-items:center;gap:4px;background:rgba(240,165,0,.12);
  border:1px solid rgba(240,165,0,.45);color:var(--amber);font-family:inherit;font-size:.7rem;
  font-weight:700;padding:3px 8px;border-radius:var(--radius-sm);cursor:pointer;margin-right:6px}
.vt-back:hover{background:rgba(240,165,0,.24)}

/* A roster card that opens a profile has to look like it does. */
.player-card.is-link{cursor:pointer}
.player-card.is-link:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

/* Drawing controls inside the fullscreen panel. */
.vt-fs-d{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:6px 8px;
  border-top:1px solid rgba(255,255,255,.10)}
.vt-fs-d .vt-seg.on,.vt-fs-o .vt-seg.on{background:rgba(240,165,0,.22);border-color:var(--amber);color:var(--amber)}
/* rv-v113: automatikus lejátszás és Akció/Labdamenet a teljes képernyős panelen. */
.vt-fs-o{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:6px 8px;
  border-top:1px solid rgba(255,255,255,.10)}
.vt-fs-o .vt-seg,.vt-fs-d .vt-seg{min-height:32px;padding:6px 9px}
.vt-fs-d .vt-grp{margin-right:4px}
.vt-fs-col{width:20px;height:20px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}
.vt-fs-col.on{border-color:#fff;box-shadow:0 0 0 2px rgba(0,0,0,.5)}

/* Who receives in that zone, under the recommendation it belongs to. */
.szw-who{margin-top:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,.10);
  font-size:.74rem;line-height:1.45}
.szw-who.thin{color:var(--gray);font-size:.7rem}
.szw-role{color:var(--gray);font-size:.68rem}
.szw-share{display:block;color:var(--gray);font-size:.68rem;margin-top:1px}

.atk-play{width:100%;margin:8px 0 4px;background:rgba(240,165,0,.14);
  border:1px solid rgba(240,165,0,.45);color:var(--amber);font-family:inherit;
  font-size:var(--fs-sm);font-weight:800;padding:9px;border-radius:var(--radius-sm);
  cursor:pointer}
.atk-play:hover{background:rgba(240,165,0,.26)}


/* Shared clip list opened from a #pl= link, for a coach who does not have an
   account. Deliberately plain: no video here, just what was picked out. */
.pl-share{max-width:960px;margin:0 auto;padding:28px 18px}
.pl-share-h{border-bottom:2px solid var(--amber);padding-bottom:var(--sp-3);margin-bottom:var(--sp-4)}
.pl-share-t{font-size:1.4rem;font-weight:800;color:var(--white)}
.pl-share-s{font-size:var(--fs-sm);color:var(--gray);margin-top:4px}
.pl-share-note{font-size:var(--fs-sm);color:var(--light);background:rgba(240,165,0,.08);
  border-left:3px solid var(--amber);border-radius:0 var(--radius-sm) var(--radius-sm) 0;
  padding:12px 14px;margin-bottom:var(--sp-4);line-height:1.6}
.pl-share-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.pl-share-tbl th{text-align:left;font-size:var(--fs-xs);text-transform:uppercase;
  letter-spacing:.04em;color:var(--gray);padding:8px 10px;border-bottom:1px solid var(--border)}
.pl-share-tbl td{padding:8px 10px;border-bottom:1px solid rgba(255,255,255,.05);color:var(--light)}
.pl-share-tbl .pl-t{font-variant-numeric:tabular-nums;color:var(--amber)}


/* Admin: the YouTube field on a match row. */
.mr-yt{width:100%;min-width:0;background:var(--bg3);border:1px solid var(--border);
  color:var(--light);font-family:inherit;font-size:.7rem;padding:5px 8px;border-radius:5px;
  text-overflow:ellipsis}
.mr-yt::placeholder{color:var(--gray);opacity:.7}
.mr-yt:focus{outline:none;border-color:var(--amber)}
.mr-yt.set{border-color:rgba(240,165,0,.5);color:var(--amber)}
@media (max-width:900px){ .mr-yt{width:100%;margin-top:2px} }


/* ── PER-MATCH VIDEO UPLOAD ──
   The URL field and the upload control share one cell so the row keeps its
   column count, and so the whole cell can be a drop target: dragging a file
   at a 6-pixel button is a worse aim than dragging it at the field. */
.mr-vid{display:flex;align-items:center;gap:6px;min-width:0}
.mr-vid.drop{outline:2px dashed var(--amber);outline-offset:3px;border-radius:7px;
  background:rgba(240,165,0,.07)}
.mr-vid.drop .mr-yt{border-color:rgba(240,165,0,.5)}
.mr-up{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.mr-upbtn{background:var(--bg3);border:1px solid var(--border);color:var(--gray);
  width:26px;height:26px;border-radius:6px;cursor:pointer;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;transition:.15s;padding:0}
.mr-upbtn:hover{border-color:rgba(240,165,0,.55);color:var(--amber);background:rgba(240,165,0,.12)}
.mr-upbtn.cancel:hover{border-color:rgba(230,57,70,.5);color:#ff6b7a;background:rgba(230,57,70,.14)}
.mr-uperr{font-size:.66rem;font-weight:700;color:#ff6b7a;white-space:nowrap}

/* Progress is a real percentage of bytes on the wire, so it is worth the width:
   on a two-gigabyte upload a spinner and a hang look identical. */
.mr-prog{position:relative;flex:1 1 auto;min-width:58px;height:22px;border-radius:5px;
  background:var(--bg3);border:1px solid var(--border);overflow:hidden}
.mr-prog-fill{position:absolute;inset:0 auto 0 0;background:rgba(240,165,0,.35);
  transition:width .25s linear}
.mr-prog-t{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:.65rem;font-weight:800;color:var(--white);font-variant-numeric:tabular-nums}

.mr-upbtn.del:hover{border-color:rgba(230,57,70,.5);color:#ff6b7a;background:rgba(230,57,70,.14)}

/* ── STORAGE BAR ──
   One line, because the whole R2 bill is one number: stored gigabytes. */
.video-storage-bar{display:flex;flex-wrap:wrap;align-items:center;gap:9px;
  padding:8px 14px;margin-bottom:10px;background:var(--card);
  border:1px solid var(--border);border-radius:8px;font-size:.76rem}
.video-storage-bar:empty{display:none}
.vs-l{font-size:.68rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--gray)}
.vs-num{font-weight:800;color:var(--white);font-variant-numeric:tabular-nums}
.vs-num.over{color:var(--amber)}
.vs-dim{color:var(--gray);font-size:.73rem}
.vs-bad{color:#ff6b7a;font-size:.73rem}
.vs-btn{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:.71rem;font-weight:700;padding:4px 9px;border-radius:5px;
  cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.vs-btn:hover{border-color:rgba(240,165,0,.5);color:var(--amber)}
.vs-btn.warn{border-color:rgba(240,165,0,.4);color:var(--amber);background:rgba(240,165,0,.1)}
.vs-in{flex:1 1 260px;min-width:180px;background:var(--bg3);border:1px solid var(--border);
  color:var(--light);font-family:inherit;font-size:.73rem;padding:5px 9px;border-radius:5px}
.vs-in::placeholder{color:var(--gray);opacity:.7}
.vs-in:focus{outline:none;border-color:var(--amber)}
.vs-in.set{border-color:rgba(240,165,0,.4);color:var(--amber)}

/* ── SEEN COUNT ──
   The number the coach actually wants — "did the link reach them" — next to the
   button that used to hide it behind a click. */
.md-seencount{font-size:.75rem;font-weight:700;padding:3px 9px;border-radius:99px;white-space:nowrap}
.md-seencount.has{color:#4ade80;background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.3)}
.md-seencount.none{color:var(--gray);background:var(--bg3);border:1px solid var(--border)}
.md-seencount.dim{color:var(--gray);opacity:.6}

/* ── ORPHAN FILE LIST ── */
.orf{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;
  padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.orf-n{font-family:monospace;font-size:.73rem;color:var(--light);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.orf-s{font-size:.72rem;color:var(--gray);font-variant-numeric:tabular-nums}
.orf-d{background:rgba(230,57,70,.12);border:1px solid rgba(230,57,70,.3);color:#ff6b7a;
  font-family:inherit;font-size:.7rem;font-weight:700;padding:3px 10px;border-radius:5px;cursor:pointer}
.orf-d:hover{background:rgba(230,57,70,.25)}
.orf-d.armed{background:rgba(230,57,70,.4);color:#fff;border-color:#ff6b7a}
.orf-d:disabled{opacity:.5;cursor:default}

/* ── WORKER SELF-TEST ── */
.st-row{display:grid;grid-template-columns:18px minmax(88px,auto) minmax(0,1fr);gap:9px;
  align-items:start;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:.76rem}
.st-row .st-i{display:flex;align-items:center;justify-content:center;margin-top:1px}
.st-row.ok .st-i{color:#4ade80}
.st-row.bad .st-i{color:#ff6b7a}
.st-n{font-weight:700;color:var(--light)}
.st-d{color:var(--gray);font-family:monospace;font-size:.71rem;
  overflow-wrap:anywhere;white-space:pre-wrap}
.st-row.bad .st-d{color:#ffa8b0}


/* Watch button on a key point — the join between a number and its evidence. */
.prio-play{margin-left:8px;background:rgba(240,165,0,.15);border:1px solid rgba(240,165,0,.45);
  color:var(--amber);font-family:inherit;font-size:.66rem;font-weight:800;
  padding:2px 8px;border-radius:99px;cursor:pointer;vertical-align:middle;white-space:nowrap}
.prio-play:hover{background:rgba(240,165,0,.3)}
@media print{ .prio-play{display:none !important} }

/* ═══════════════════════════════════════════════════════════════════════
   VIDEO TAB
   Three columns on a wide screen: filters, player, scene list. The tab is one
   screen tall and each column scrolls inside itself, so the PAGE never
   scrolls here. That is the whole point — a page that scrolls under the
   pointer every time a filter is clicked or the active scene changes is what
   made the old layout feel like it was jumping around.
   ═══════════════════════════════════════════════════════════════════════ */

/* The video tab wants more width than a reading column. */
#t9{max-width:1720px}

.vt-wrap{
  display:grid;
  grid-template-columns:270px minmax(0,1fr) 346px;
  grid-template-areas:"side main list";
  gap:var(--sp-4);
  height:calc(100vh - 152px);
  min-height:540px;
}
.vt-wrap.filters-hidden{grid-template-columns:46px minmax(0,1fr) 346px}

/* ── filter column ── */
.vt-side{grid-area:side;display:flex;flex-direction:column;min-width:0;min-height:0;
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.vt-wrap.filters-hidden .vt-side{display:none}
.vt-side-h{display:flex;align-items:center;justify-content:space-between;flex:0 0 auto;
  padding:10px 12px;border-bottom:1px solid var(--border);font-size:var(--fs-xs);
  font-weight:800;color:var(--gray);text-transform:uppercase;letter-spacing:.08em}
.vt-side-x{background:transparent;border:1px solid var(--border);color:var(--gray);
  font-family:inherit;font-size:.9rem;line-height:1;width:28px;height:28px;
  border-radius:var(--radius-sm);cursor:pointer}
.vt-side-x:hover{border-color:var(--amber);color:var(--amber)}
.vt-side-b{flex:1 1 auto;min-height:0;overflow-y:auto;padding:var(--sp-3);
  overscroll-behavior:contain}
.vt-side-f{flex:0 0 auto;padding:10px var(--sp-3);border-top:1px solid var(--border);
  background:var(--bg2);box-shadow:0 -6px 14px rgba(0,0,0,.3)}
.vt-sec-tail{height:2px}

/* Collapsed, the column keeps a rail so the filters never become invisible —
   with a count, because "are any filters on?" is the question it has to answer. */
.vt-rail{grid-area:side;display:none;flex-direction:column;align-items:center;gap:8px;
  padding:12px 4px;background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius);color:var(--gray);font-family:inherit;cursor:pointer}
.vt-wrap.filters-hidden .vt-rail{display:flex}
.vt-rail:hover{border-color:var(--amber);color:var(--amber)}
.vt-rail-i{font-size:1.1rem;line-height:1}
.vt-rail-n{font-size:.62rem;font-weight:800;color:var(--amber);min-height:12px}
.vt-rail-t{writing-mode:vertical-rl;font-size:.6rem;font-weight:800;letter-spacing:.14em;
  margin-top:4px}

/* ── centre column ── */
.vt-main{grid-area:main;display:flex;flex-direction:column;min-width:0;min-height:0;gap:var(--sp-2)}

/* A remembered video the browser has downgraded to "ask again". Sits above the
   picture because it is the one thing standing between the coach and playback. */
.vt-notice{flex:0 0 auto;display:flex;align-items:center;gap:var(--sp-3);
  background:rgba(240,165,0,.1);border:1px solid rgba(240,165,0,.35);
  border-radius:var(--radius);padding:10px 14px}
.vt-notice-i{font-size:1rem;flex-shrink:0}
.vt-notice-t{flex:1 1 auto;min-width:0;font-size:var(--fs-xs);color:var(--light);line-height:1.5}
.vt-notice-t b{color:var(--amber)}

/* rv-v102: a kép és közvetlenül alatta az idősáv egy oszlopban. */
.vt-stage-wrap{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.vt-stage{position:relative;width:100%;max-width:100%;max-height:calc(100% - 36px);aspect-ratio:16/9;
  background:#000;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}
.vt-video{width:100%;height:100%;display:block;background:#000;object-fit:contain}


/* Annotation canvas. Sits over both players; pointer events only while armed,
   so the video's own controls keep working the rest of the time. */
.vt-draw{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;
  touch-action:none;z-index:2}
.vt-draw.on{pointer-events:auto;cursor:crosshair}

.vt-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  pointer-events:none;z-index:3;padding:var(--sp-4)}
.vt-need{pointer-events:auto;background:rgba(7,17,29,.92);border:1px solid var(--border);
  border-radius:var(--radius);padding:22px 26px;text-align:center;max-width:440px;
  box-shadow:var(--shadow)}
.vt-need.quiet{background:rgba(7,17,29,.72);border-style:dashed}
.vt-need-t{font-size:var(--fs-lg);font-weight:800;color:var(--white)}
.vt-need-d{font-size:var(--fs-sm);color:var(--light);margin:var(--sp-2) 0 var(--sp-4);line-height:1.55}
.vt-need-s{font-size:var(--fs-xs);color:var(--gray);margin-top:var(--sp-3);line-height:1.55}

/* ── control bars ── */
.vt-bar{flex:0 0 auto;display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;
  padding:var(--sp-2) 0}
/* Row one is a three-zone grid so the transport stays under the middle of the
   picture however wide the buttons on either side turn out to be. */
.vt-bar1{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--sp-3);
  border-top:1px solid var(--border)}
.vt-bar-l{justify-self:start;display:flex;align-items:center;gap:var(--sp-2)}
.vt-bar-c{justify-self:center;display:flex;align-items:center;gap:22px}
.vt-bar-r{justify-self:end;display:flex;align-items:center;gap:var(--sp-2)}
.vt-bar2{padding-top:0;gap:6px}
.vt-bar3{padding-top:0;gap:6px}
/* Pushes itself and everything after it to the right end of the row. */
.vt-right{margin-left:auto}
/* The drawing tools open to the right of the Rajz button, on the same row, so
   nothing below the picture moves when they appear. */
.vt-drawtools{display:none;align-items:center;gap:3px;padding-left:6px;
  margin-left:2px;border-left:1px solid var(--border)}
.vt-drawtools.open{display:inline-flex}
.vt-pos{font-size:var(--fs-md);font-weight:800;color:var(--white);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.vt-grp{display:inline-flex;gap:3px;align-items:center}

/* Play/pause is the button the hand goes to without looking, so it is the one
   solid, larger control on the row. */
.vt-play{width:58px;height:42px;background:var(--amber);border:1px solid var(--amber);
  color:#12100a;font-family:inherit;font-size:1.05rem;line-height:1;cursor:pointer;
  border-radius:var(--radius-sm);margin:0 3px;flex-shrink:0}
.vt-play:hover{background:var(--amber2)}
.vt-btn:disabled{opacity:.35;cursor:default}
.vt-btn:disabled:hover{border-color:var(--border);color:var(--light)}
.vt-btn.on{background:rgba(240,165,0,.16);border-color:rgba(240,165,0,.5);color:var(--amber)}

.vt-btn{display:inline-flex;align-items:center;gap:5px;min-height:36px;
  background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:var(--fs-sm);font-weight:700;padding:7px 12px;
  border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}
.vt-btn:hover{border-color:var(--amber);color:var(--amber)}
.vt-btn.primary{background:var(--amber);color:#12100a;border-color:var(--amber)}
.vt-btn.primary:hover{background:var(--amber2);color:#12100a}
.vt-grp .vt-btn{border-radius:0}
.vt-grp .vt-btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}
.vt-grp .vt-btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.vt-grp .vt-btn + .vt-btn{border-left:none}

.vt-seg{background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:var(--fs-xs);font-weight:700;padding:8px 11px;min-height:34px;
  cursor:pointer;line-height:1.2;border-radius:var(--radius-sm)}
.vt-grp .vt-seg{border-radius:0}
.vt-grp .vt-seg:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}
.vt-grp .vt-seg:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.vt-grp .vt-seg:only-child{border-radius:var(--radius-sm)}
.vt-grp .vt-seg + .vt-seg{border-left:none}
.vt-seg:hover{color:var(--amber);border-color:rgba(240,165,0,.4)}
.vt-seg.on{background:rgba(240,165,0,.16);color:var(--amber);border-color:rgba(240,165,0,.5)}
.vt-gap{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:var(--fs-xs);padding:6px 8px;border-radius:var(--radius-sm);
  margin-left:4px}
.vt-swatch{width:20px;height:20px;border-radius:50%;border:2px solid transparent;
  cursor:pointer;padding:0;margin:0 2px;flex-shrink:0}
.vt-swatch.on{border-color:var(--white)}
.vt-swatch.cur{width:22px;height:22px;border-color:rgba(255,255,255,.5)}

/* One swatch on the row showing the current colour; the rest fan out only when
   it is pressed. Four permanent swatches was four buttons of width spent on a
   choice made once a session. */
.vt-pal{position:relative;display:inline-flex;align-items:center}
.vt-pal-list{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;
  transform:translateX(-50%);gap:2px;padding:6px;background:var(--bg2);
  border:1px solid var(--border);border-radius:99px;box-shadow:var(--shadow);z-index:20}
.vt-pal.open .vt-pal-list{display:flex}

/* Icon-only controls. Their words live in the tooltip, where they cost no
   width — on a 13-inch laptop the labelled versions pushed this row into the
   scene list. */
.vt-btn.icon{padding:7px 10px;font-size:.85rem;min-width:38px;justify-content:center}

/* Offset calibration is a rare, fiddly job, so it lives behind its own toggle
   rather than sitting in the main bar competing with playback. */
.vt-cal{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--fs-xs);
  color:var(--gray);background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius-sm);padding:8px 10px;width:100%}
.vt-cal-t{font-weight:800;color:var(--light)}
.vt-cal b{color:var(--amber);font-variant-numeric:tabular-nums;min-width:56px;text-align:center}
.vt-cal-h{flex:1 1 100%;color:var(--gray);line-height:1.5}
.vt-mini{background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--gray);
  font-family:inherit;font-size:var(--fs-xs);font-weight:700;padding:6px 10px;min-height:32px;
  border-radius:var(--radius-sm);cursor:pointer}
.vt-mini:hover{border-color:var(--amber);color:var(--amber)}
.vt-mini.wide{padding:6px 12px}
.vt-mini.warn{border-color:rgba(255,107,122,.45);color:#ff6b7a}
.vt-mini:disabled{opacity:.4;cursor:default}
.vt-mini:disabled:hover{border-color:var(--border);color:var(--gray)}

.vt-keys{display:grid;gap:8px;font-size:var(--fs-sm);color:var(--light)}
.vt-keys div{display:flex;align-items:center;gap:8px}
.vt-keys kbd{background:var(--bg3);border:1px solid var(--border);border-bottom-width:2px;
  border-radius:5px;padding:2px 7px;font-family:var(--font-mono);font-size:var(--fs-xs);
  color:var(--amber)}

/* ── scene list column ── */
.vt-listcol{grid-area:list;display:flex;flex-direction:column;min-width:0;min-height:0;
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.vt-listhead{flex:0 0 auto;padding:10px 12px;border-bottom:1px solid var(--border)}
.vt-lh-top{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}
.vt-count{font-size:var(--fs-sm);color:var(--gray);font-variant-numeric:tabular-nums}
.vt-count b{color:var(--white);font-size:var(--fs-lg);font-weight:800}
.vt-off{color:#ffb020;font-size:var(--fs-xs);margin-left:6px}
.vt-lh-bot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);
  margin-top:6px}
.vt-view{font-size:var(--fs-xs);font-weight:700;color:var(--amber);background:rgba(240,165,0,.1);
  border-radius:99px;padding:3px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.vt-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px}

/* Two lines per scene: who and what on top, where and when underneath. Any
   taller and a 500-scene list becomes a scroll marathon. */
.vt-card{display:flex;align-items:center;gap:8px;padding:8px 9px;cursor:pointer;
  border-radius:var(--radius-sm);border-left:3px solid transparent;margin-bottom:3px;
  background:rgba(255,255,255,.02)}
.vt-card:hover{background:rgba(255,255,255,.06)}
.vt-card:focus-visible{outline:2px solid var(--amber);outline-offset:-2px}
.vt-card.kill{border-left-color:#4ade80}
.vt-card.err{border-left-color:#ff6b7a}
.vt-card.on{background:rgba(240,165,0,.16);box-shadow:inset 0 0 0 1px rgba(240,165,0,.5)}
.vt-card.on .vt-card-nm{color:var(--white)}
.vt-card-i{width:26px;flex-shrink:0;text-align:right;color:var(--gray);font-size:var(--fs-xs);
  font-variant-numeric:tabular-nums}
.vt-card-b{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
/* The name gets the whole first line. Squeezed in beside the action and the
   outcome it was always the thing that got cut, and "Kov…" identifies nobody. */
.vt-card-1{display:flex;align-items:baseline;gap:6px;min-width:0;font-size:var(--fs-sm)}
.vt-card-j{color:var(--amber);font-weight:800;flex-shrink:0}
.vt-card-nm{color:var(--white);font-weight:600;flex:1 1 auto;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vt-card-sk{color:var(--light);flex-shrink:0}
.vt-card-3{font-size:.62rem;color:var(--gray);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.vt-card-g{flex-shrink:0;font-size:.64rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.03em;color:var(--light);background:rgba(255,255,255,.08);
  border-radius:99px;padding:1px 7px}
.vt-card.kill .vt-card-g{color:#4ade80;background:rgba(74,222,128,.14)}
.vt-card.err .vt-card-g{color:#ff6b7a;background:rgba(255,107,122,.14)}
.vt-card-2{display:flex;align-items:center;gap:7px;font-size:var(--fs-xs);color:var(--gray);
  overflow:hidden;white-space:nowrap}
.vt-card-z{color:var(--amber);font-variant-numeric:tabular-nums}
.vt-card-t{font-variant-numeric:tabular-nums}
.vt-card-op{overflow:hidden;text-overflow:ellipsis;min-width:0}
.vt-card-nov{color:#ffb020;flex-shrink:0}
.vt-card-note{width:32px;height:32px;flex-shrink:0;background:transparent;border:1px solid transparent;
  border-radius:var(--radius-sm);color:var(--gray);font-family:inherit;font-size:.85rem;
  cursor:pointer;opacity:.5}
.vt-card-note:hover{opacity:1;border-color:var(--border);color:var(--amber)}
.vt-card-note.has{opacity:1;color:var(--amber)}

/* Switching a scene off leaves the row in place — the action still happened and
   is still worth reading — but the video steps past it and a saved list leaves
   it out. Legible, visibly inactive, not hidden. */
.vt-card-eye{width:32px;height:32px;flex-shrink:0;background:transparent;
  border:1px solid transparent;border-radius:var(--radius-sm);color:var(--gray);
  font-family:inherit;font-size:.8rem;cursor:pointer;opacity:.45}
.vt-card-eye:hover{opacity:1;border-color:var(--border);color:var(--amber)}
.vt-card-eye.off{opacity:1;color:#ff6b7a}
.vt-card.off{opacity:.5;border-left-color:var(--gray) !important}
.vt-card.off .vt-card-1{text-decoration:line-through;text-decoration-color:var(--gray)}
.vt-card.off.on{opacity:.75}
.vt-fsrow.off{opacity:.42}

/* Before there is a picture, the app's own name fills the frame. A blank black
   rectangle reads as broken; this reads as "nothing has gone wrong yet". */
/* The still sits behind the idle panel, dimmed so the text on top stays
   readable regardless of how bright the frame happens to be. */
#vt-overlay.has-shot{background-size:cover;background-position:center}
#vt-overlay.has-shot::before{content:'';position:absolute;inset:0;background:rgba(6,10,16,.62)}
#vt-overlay.has-shot > *{position:relative;z-index:1}

/* The second calibration row. Visually subordinate to the first: whole-video
   correction is the common case, one-scene repair is the exception. */
.vt-cal2{margin-top:var(--sp-2);border-top:1px dashed var(--border);padding-top:var(--sp-2)}
.vt-cal2 .vt-cal-t{color:var(--gray)}

.vt-brand{text-align:center;margin-bottom:var(--sp-4);user-select:none}
.vt-brand-logo{font-size:2rem;line-height:1}
/* currentColor so the mark inherits the amber below without repeating it. */
.vt-brand-mark{width:64px;height:64px;color:var(--amber);opacity:.92;display:block;margin:0 auto}
.vt-idle .vt-brand-mark{width:86px;height:86px}
/* The empty player used to be a flat grey rectangle, which reads as broken
   rather than as ready. A faint amber wash off one corner, matching the login
   screen, says the app is alive and waiting. */
.vt-idle{background:radial-gradient(circle at 30% 18%,rgba(240,165,0,.10) 0%,transparent 58%),
  rgba(7,17,29,.86);border-style:solid;min-width:min(320px,84%)}
.vt-idle .vt-need-t{margin-top:var(--sp-2)}
.vt-brand-t{font-size:1.05rem;font-weight:900;color:var(--amber);letter-spacing:.18em;margin-top:6px}
.vt-brand-s{font-size:.62rem;font-weight:700;color:var(--gray);letter-spacing:.22em;margin-top:2px}

.vt-none{padding:32px 20px;text-align:center}
.vt-none-t{font-size:var(--fs-md);font-weight:800;color:var(--white)}
.vt-none-d{font-size:var(--fs-sm);color:var(--gray);margin:var(--sp-2) 0 var(--sp-3);line-height:1.55}
.vt-none .vt-btn{margin:3px}

/* ── filter panel contents ── */
.vt-sec{margin-bottom:var(--sp-3);border-bottom:1px solid rgba(255,255,255,.05);
  padding-bottom:var(--sp-3)}
.vt-sec.plain{border-bottom:none}
.vt-sec-h{display:flex;align-items:center;gap:6px;width:100%;background:none;border:none;
  padding:4px 0;cursor:pointer;font-family:inherit;text-align:left;min-height:32px}
.vt-sec-c{color:var(--gray);font-size:.7rem;width:12px;flex-shrink:0}
.vt-sec-t{font-size:var(--fs-xs);font-weight:800;color:var(--light);text-transform:uppercase;
  letter-spacing:.07em}
.vt-sec-s{margin-left:auto;font-size:.62rem;font-weight:700;color:var(--amber)}
.vt-sec-h:hover .vt-sec-t{color:var(--amber)}
.vt-sec-b{padding-top:var(--sp-2)}
.vt-sec.closed .vt-sec-b{display:none}
.vt-sub{font-size:.62rem;font-weight:800;color:var(--gray);text-transform:uppercase;
  letter-spacing:.06em;margin:var(--sp-2) 0 5px}
.vt-sec-b .vt-sub:first-child{margin-top:0}

.vt-chips{display:flex;flex-wrap:wrap;gap:5px}
.vt-chip{display:inline-flex;align-items:center;gap:5px;min-height:30px;
  background:transparent;border:1px solid rgba(240,165,0,.38);color:var(--light);
  font-family:inherit;font-size:var(--fs-xs);font-weight:700;padding:5px 10px;
  border-radius:99px;cursor:pointer;white-space:nowrap}
.vt-chip:hover{color:var(--amber);border-color:var(--amber)}
/* rv-v113: minden szűrőelem egyformán „lebeg", ha fölé viszed az egeret — az
   egész gomb emelkedik, nem csak a benne lévő szám. A számláló korábban saját
   átlátszóságot kapott, és a böngésző görgetéskor külön rétegként rajzolhatta:
   úgy tűnt, mintha csak a számok mozognának. Most sima szín, együtt mozog a
   gombbal. */
.vt-chip,.vt-pl-open{transition:transform .14s ease,box-shadow .14s ease,
  color .14s ease,border-color .14s ease,background-color .14s ease}
.vt-chip:hover,.vt-pl-open:hover{transform:translateY(-2px);box-shadow:0 5px 12px rgba(0,0,0,.38)}
.vt-chip:active,.vt-pl-open:active{transform:translateY(0);box-shadow:none}
.vt-chip:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
  .vt-chip,.vt-pl-open{transition:none}
  .vt-chip:hover,.vt-pl-open:hover{transform:none}
}
.vt-chip.on{color:var(--amber);background:rgba(240,165,0,.13);border-color:rgba(240,165,0,.45)}
.vt-chip.hide{display:none}
.vt-chip.other{border-style:dashed}
.vt-n{font-size:.62rem;color:var(--gray);font-variant-numeric:tabular-nums}
.vt-chip:hover .vt-n,.vt-chip.on .vt-n,.vt-pl.on .vt-n{color:inherit}

/* Action chips carry a hide control alongside the select toggle: selecting is
   "only these", hiding is "everything but this". */
/* A chip that would add nothing to the current selection. Dimmed rather than
   removed: a chip that vanishes looks like a fault, and its absence answers
   no question — "Nyitás 0" answers one. */
.vt-chip.dead{opacity:.35}
.vt-chip.dead .vt-n{opacity:1}
.vt-chip.o-kill.on{color:#4ade80;background:rgba(74,222,128,.14);border-color:rgba(74,222,128,.45)}
.vt-chip.o-err.on{color:#ff6b7a;background:rgba(255,107,122,.14);border-color:rgba(255,107,122,.45)}
.vt-chip.o-warn.on{color:#ffb020;background:rgba(255,176,32,.14);border-color:rgba(255,176,32,.45)}

.vt-search{display:flex;align-items:center;gap:6px;background:var(--bg3);
  border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 9px;
  margin-bottom:var(--sp-2)}
.vt-search:focus-within{border-color:var(--amber)}
.vt-search-i{color:var(--gray);font-size:.75rem}
.vt-search-in{flex:1 1 auto;min-width:0;background:none;border:none;color:var(--light);
  font-family:inherit;font-size:var(--fs-sm);padding:9px 0;outline:none}
.vt-search-in::placeholder{color:var(--gray)}

/* ── match + video source rows ── */
.vt-src{display:flex;flex-direction:column;gap:0;border:1px solid var(--border);
  border-radius:var(--radius-sm);margin-bottom:6px;overflow:hidden;background:rgba(255,255,255,.02)}
.vt-src.on{border-color:rgba(240,165,0,.5);background:rgba(240,165,0,.08)}
.vt-src.st-local{border-left:3px solid rgba(74,222,128,.6)}
.vt-src.st-ready{border-left:3px solid rgba(240,165,0,.6)}
.vt-src.st-none{border-left:3px solid rgba(255,176,32,.5)}
.vt-src.st-wait{border-left:3px solid rgba(240,165,0,.6)}
.vt-src-b{display:flex;gap:8px;align-items:flex-start;width:100%;background:none;border:none;
  padding:7px 8px;cursor:pointer;font-family:inherit;text-align:left}
.vt-src-b:hover{background:rgba(255,255,255,.04)}
.vt-src-thumb{width:56px;height:32px;flex-shrink:0;border-radius:4px;overflow:hidden;
  background:var(--bg);display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border)}
.vt-src-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.vt-src-ph{color:var(--gray);opacity:.45;font-size:.85rem}
.vt-src-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.vt-src-t{font-size:var(--fs-xs);font-weight:700;color:var(--light);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.vt-src.on .vt-src-t{color:var(--amber)}
.vt-src-m{display:flex;align-items:center;gap:6px}
.vt-badge{font-size:.58rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
  border-radius:99px;padding:2px 7px;white-space:nowrap}
.b-local{color:#4ade80;background:rgba(74,222,128,.14)}
.b-ready{color:var(--amber);background:rgba(240,165,0,.14)}
.b-none{color:#ffb020;background:rgba(255,176,32,.12)}
.b-wait{color:var(--amber);background:rgba(240,165,0,.14)}
.vt-src-n{font-size:.6rem;color:var(--gray);font-variant-numeric:tabular-nums}
.vt-src-f{font-size:.58rem;color:var(--gray);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;opacity:.75}

.vt-attach{width:100%;background:rgba(240,165,0,.12);border:none;border-top:1px solid var(--border);
  color:var(--amber);font-family:inherit;font-size:var(--fs-xs);font-weight:800;
  padding:9px;cursor:pointer;min-height:38px}
.vt-attach:hover{background:rgba(240,165,0,.24)}
.vt-attach.sm{font-size:.62rem;padding:7px}
.vt-need .vt-attach{border-radius:var(--radius-sm);border:1px solid rgba(240,165,0,.45);
  padding:11px 18px;width:auto;min-width:220px}

.vt-link{background:none;border:none;color:var(--gray);font-family:inherit;
  font-size:.62rem;font-weight:700;padding:6px 8px;cursor:pointer;text-decoration:underline;
  min-height:30px}
.vt-link:hover{color:var(--amber)}
.vt-link.wide{display:block;width:100%;text-align:center;margin-top:4px}
.vt-hint{font-size:.62rem;color:var(--gray);line-height:1.55;margin-top:var(--sp-2)}

.vt-pl{display:flex;align-items:center;gap:2px;margin-bottom:4px}
.vt-pl-open{flex:1 1 auto;min-width:0;text-align:left;background:transparent;
  border:1px solid var(--border);color:var(--light);font-family:inherit;
  font-size:var(--fs-xs);font-weight:700;padding:7px 10px;border-radius:var(--radius-sm);
  cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-height:32px}
.vt-pl.on .vt-pl-open{color:var(--amber);border-color:rgba(240,165,0,.45);
  background:rgba(240,165,0,.1)}
.vt-reset{width:100%;background:transparent;border:1px solid var(--border);color:var(--gray);
  font-family:inherit;font-size:var(--fs-xs);font-weight:700;padding:10px;min-height:38px;
  border-radius:var(--radius-sm);cursor:pointer}
.vt-reset:hover{border-color:var(--amber);color:var(--amber)}

/* ── fullscreen ──
   The stage wrapper goes fullscreen rather than the <video>, so our own
   interface travels with it. The scene list is the part a coach actually needs
   there: stepping to the next scene should not mean leaving fullscreen. */
.vt-stage-wrap:fullscreen{display:flex;align-items:center;justify-content:center;
  background:#000;width:100vw;height:100vh}
.vt-stage-wrap:fullscreen .vt-stage{width:100%;height:auto;flex:1 1 auto;min-height:0;max-height:none;
  border-radius:0;border:none;aspect-ratio:auto}
.vt-stage-wrap:fullscreen{flex-direction:column}
.vt-stage-wrap:fullscreen .vt-tl{padding:6px 16px 10px;background:#000}
.vt-fs{display:none;position:absolute;top:16px;right:16px;z-index:5;width:290px;
  max-height:calc(100% - 32px);flex-direction:column;background:rgba(7,17,29,.9);
  border:1px solid var(--border);border-radius:var(--radius);backdrop-filter:blur(10px);
  box-shadow:var(--shadow);overflow:hidden}
.vt-stage-wrap:fullscreen .vt-fs{display:flex}
/* Összecsukva csak a visszanyitó gomb marad: a panel kerete, háttere és a
   vágása lekerül, különben az abszolút pozicionált gomb a nulla magasságú,
   overflow:hidden dobozból kilógna és láthatatlan lenne. */
.vt-fs.collapsed{background:none;border:none;box-shadow:none;backdrop-filter:none;
  width:auto;max-height:none;overflow:visible}
.vt-fs-h{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;
  border-bottom:1px solid var(--border)}
.vt-fs-c{font-size:var(--fs-sm);font-weight:800;color:var(--white);font-variant-numeric:tabular-nums}
.vt-fs-x{background:transparent;border:1px solid var(--border);color:var(--gray);
  font-family:inherit;width:28px;height:28px;border-radius:var(--radius-sm);cursor:pointer}
.vt-fs-x:hover{border-color:var(--amber);color:var(--amber)}
.vt-fs-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:8px;overscroll-behavior:contain}
.vt-fsrow{display:flex;align-items:center;gap:6px;padding:6px 7px;border-radius:5px;
  cursor:pointer;font-size:var(--fs-xs);color:var(--light);border-left:3px solid transparent}
.vt-fsrow:hover{background:rgba(255,255,255,.07)}
.vt-fsrow.kill{border-left-color:#4ade80}
.vt-fsrow.err{border-left-color:#ff6b7a}
.vt-fsrow.on{background:rgba(240,165,0,.2);color:var(--white)}
.vt-fsrow b{color:var(--amber)}
.vt-fsrow-i{width:24px;text-align:right;color:var(--gray);font-variant-numeric:tabular-nums}
.vt-fsrow-n{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vt-fsrow-g{color:var(--gray);flex-shrink:0}
.vt-fsrow-t{color:var(--gray);font-variant-numeric:tabular-nums;flex-shrink:0}
.vt-fs-f{display:flex;gap:4px;padding:8px 10px;border-top:1px solid var(--border)}
.vt-fs-f .vt-seg{flex:1 1 0;min-height:40px;font-size:.9rem}
.vt-fs-open{position:absolute;top:16px;right:16px;z-index:5;width:44px;height:44px;
  background:rgba(7,17,29,.85);border:1px solid var(--border);border-radius:var(--radius-sm);
  color:var(--light);font-family:inherit;font-size:1rem;cursor:pointer;display:none}
.vt-stage-wrap:fullscreen .vt-fs-open{display:block}
.vt-fs-open:hover{border-color:var(--amber);color:var(--amber)}

.vt-fab{display:none}

/* A meccs-előkészítő fülek és az összehasonlító számok közé egy kis szünet:
   a kettő más gondolkodási módban használatos, ne folyjanak egybe. */
.tab-gap{margin-left:18px}

/* Videógomb a rotációs kártya fejlécében. Halvány, amíg rá nem visz az egér —
   a kártyán a feladáseloszlás a fontos, a gomb csak lehetőség. */
.rn-vid{background:none;border:none;padding:0 0 0 5px;cursor:pointer;color:var(--gray);
  opacity:.55;vertical-align:middle;line-height:0}
.rn-vid:hover{opacity:1;color:var(--amber)}

/* A feltöltő Worker címe beállítás után egy ikon mögé bújik: böngészőnként
   egyszer kell megadni, utána csak zavarna a sávban. */
.vs-worker{display:inline-flex;align-items:center;gap:6px}
.vs-worker>summary{list-style:none;cursor:pointer;color:var(--gray);opacity:.5;line-height:0}
.vs-worker>summary::-webkit-details-marker{display:none}
.vs-worker>summary:hover{opacity:1;color:var(--amber)}
.vs-worker[open]>summary{opacity:1;color:var(--amber)}

/* Heti felkészülés. Két hasáb széles képernyőn, egy a nyomtatásban — egy
   edzésterv akkor ér valamit, ha ránézésre átlátható, nem ha görgetni kell. */
.lg-move{padding:2px 6px;min-width:26px;line-height:1.1}
.lg-move:disabled{opacity:.25;cursor:default}

.grade-filter-bar{margin-bottom:10px}
/* Két szűrősor egymás alatt összeért, és úgy nézett ki, mint egy hosszú sor.
   A második kap egy elválasztó vonalat és levegőt, hogy látszódjon: ez már
   egy másik kérdés. */
.grade-filter-bar + .grade-filter-bar{margin-top:-2px;padding-top:10px;
  border-top:1px solid var(--border)}
.grade-filter-bar .team-picker-label{margin-right:6px;min-width:104px;display:inline-block}

.wp{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.wp-a{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px}
.wp-h{font-size:.74rem;font-weight:800;color:var(--amber);text-transform:uppercase;
  letter-spacing:.03em;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}
.wp-x{background:none;border:none;color:var(--gray);cursor:pointer;font-size:1rem;line-height:1;padding:0 2px}
.wp-x:hover{color:var(--red)}
.wp-f{margin:0 0 8px;padding-left:16px;font-size:.78rem;line-height:1.6}
.wp-f li{margin-bottom:3px}
.wp-t{width:100%;background:var(--bg);color:var(--light);border:1px solid var(--border);
  border-radius:6px;padding:6px 8px;font:inherit;font-size:.78rem;resize:vertical}
.wp-n{font-size:.78rem;line-height:1.55;padding:6px 8px;border-left:2px solid var(--amber);
  background:rgba(240,165,0,.06);border-radius:0 4px 4px 0;white-space:pre-wrap}
@media print{
  .wp{grid-template-columns:1fr 1fr}
  .wp-a{break-inside:avoid}
  .wp-x{display:none}
  .wp-t{border:none;background:none;padding:0}
}

/* Középre igazított táblázatok. A számoszlopok jobbra igazítása szakmailag
   szebb, de a fejléc és az érték így két különböző ponton állt, és a szem
   nehezen párosította őket. Egységes közép: egyszerűbb olvasni. */
.mt table th, .mt table td,
.recv-table th, .recv-table td,
.ov-table th, .ov-table td,
.bench-table th, .bench-table td,
.mr-player-table th, .mr-player-table td,
.mr-sets-table th, .mr-sets-table td,
.mr-kill-table th, .mr-kill-table td,
.pl-share-tbl th, .pl-share-tbl td{text-align:center}

/* ── between 900 and 1240px: the list drops below the player ── */
@media (max-width:1239px){
  #t9{max-width:1100px}
  .vt-wrap{grid-template-columns:250px minmax(0,1fr);
    grid-template-areas:"side main" "list list";height:auto;min-height:0}
  .vt-wrap.filters-hidden{grid-template-columns:46px minmax(0,1fr)}
  .vt-side,.vt-rail{align-self:start;max-height:calc(100vh - 170px)}
  .vt-stage-wrap{max-height:60vh}
  .vt-listcol{max-height:520px}
}

/* ── phone: video on top, scenes under it, filters in a bottom sheet ── */
@media (max-width:900px){
  #t9{max-width:none}
  .vt-wrap{grid-template-columns:1fr;grid-template-areas:"main" "list";
    height:auto;gap:var(--sp-3)}
  .vt-wrap.filters-hidden{grid-template-columns:1fr}

  .vt-rail{display:none !important}
  .vt-side{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:900;
    max-height:82vh;border-radius:var(--radius) var(--radius) 0 0;
    border-bottom:none;background:var(--bg2);box-shadow:var(--shadow);
    transform:translateY(101%);transition:transform .22s ease;display:flex}
  .vt-wrap:not(.filters-hidden) .vt-side{transform:none}
  .vt-side-h{padding:14px 16px;font-size:var(--fs-sm)}
  .vt-side-x{width:36px;height:36px;transform:rotate(-90deg)}
  .vt-side-b{padding:var(--sp-4);padding-bottom:80px}

  /* The video comes first and full width; the phone's own margins are given
     back so the picture is as large as the screen allows. */
  .vt-stage{border-radius:0;border-left:none;border-right:none;margin:0 -12px;width:calc(100% + 24px)}
  .vt-stage-wrap{max-height:none}
  /* The three zones stack rather than squeezing; fullscreen lands on its own
     line, which is where it belongs when the row runs out of width. */
  .vt-bar1{grid-template-columns:1fr;gap:var(--sp-2);justify-items:center}
  .vt-bar-l,.vt-bar-c,.vt-bar-r{justify-self:center;flex-wrap:wrap;justify-content:center}
  .vt-bar-c{gap:10px}
  .vt-notice{flex-wrap:wrap}

  .vt-bar{gap:6px}
  .vt-btn{min-height:44px;padding:9px 12px}
  .vt-seg{min-height:40px;padding:9px 12px}
  .vt-cal{width:100%}
  .vt-listcol{max-height:none;background:transparent;border:none}
  .vt-list{padding:0;overflow:visible}
  .vt-card{padding:11px 10px;margin-bottom:5px;background:var(--card);
    border:1px solid var(--border);border-left-width:3px}
  .vt-card-note{width:40px;height:40px}
  .vt-card-op{display:none}

  /* One thumb-sized way back to the filters, wherever the page has got to. */
  .vt-fab{display:inline-flex;align-items:center;gap:7px;position:fixed;
    right:14px;bottom:16px;z-index:880;min-height:48px;padding:12px 18px;
    background:var(--amber);border:none;border-radius:99px;color:#12100a;
    font-family:inherit;font-size:var(--fs-sm);font-weight:800;cursor:pointer;
    box-shadow:0 8px 22px rgba(0,0,0,.5)}
  .vt-wrap:not(.filters-hidden) .vt-fab{display:none}

/* A meccs-előkészítő fülek és az összehasonlító számok közé egy kis szünet:
   a kettő más gondolkodási módban használatos, ne folyjanak egybe. */
.tab-gap{margin-left:18px}

/* Videógomb a rotációs kártya fejlécében. Halvány, amíg rá nem visz az egér —
   a kártyán a feladáseloszlás a fontos, a gomb csak lehetőség. */
.rn-vid{background:none;border:none;padding:0 0 0 5px;cursor:pointer;color:var(--gray);
  opacity:.55;vertical-align:middle;line-height:0}
.rn-vid:hover{opacity:1;color:var(--amber)}

/* A feltöltő Worker címe beállítás után egy ikon mögé bújik: böngészőnként
   egyszer kell megadni, utána csak zavarna a sávban. */
.vs-worker{display:inline-flex;align-items:center;gap:6px}
.vs-worker>summary{list-style:none;cursor:pointer;color:var(--gray);opacity:.5;line-height:0}
.vs-worker>summary::-webkit-details-marker{display:none}
.vs-worker>summary:hover{opacity:1;color:var(--amber)}
.vs-worker[open]>summary{opacity:1;color:var(--amber)}

/* Heti felkészülés. Két hasáb széles képernyőn, egy a nyomtatásban — egy
   edzésterv akkor ér valamit, ha ránézésre átlátható, nem ha görgetni kell. */
.lg-move{padding:2px 6px;min-width:26px;line-height:1.1}
.lg-move:disabled{opacity:.25;cursor:default}

.grade-filter-bar{margin-bottom:10px}
/* Két szűrősor egymás alatt összeért, és úgy nézett ki, mint egy hosszú sor.
   A második kap egy elválasztó vonalat és levegőt, hogy látszódjon: ez már
   egy másik kérdés. */
.grade-filter-bar + .grade-filter-bar{margin-top:-2px;padding-top:10px;
  border-top:1px solid var(--border)}
.grade-filter-bar .team-picker-label{margin-right:6px;min-width:104px;display:inline-block}

.wp{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.wp-a{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px}
.wp-h{font-size:.74rem;font-weight:800;color:var(--amber);text-transform:uppercase;
  letter-spacing:.03em;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}
.wp-x{background:none;border:none;color:var(--gray);cursor:pointer;font-size:1rem;line-height:1;padding:0 2px}
.wp-x:hover{color:var(--red)}
.wp-f{margin:0 0 8px;padding-left:16px;font-size:.78rem;line-height:1.6}
.wp-f li{margin-bottom:3px}
.wp-t{width:100%;background:var(--bg);color:var(--light);border:1px solid var(--border);
  border-radius:6px;padding:6px 8px;font:inherit;font-size:.78rem;resize:vertical}
.wp-n{font-size:.78rem;line-height:1.55;padding:6px 8px;border-left:2px solid var(--amber);
  background:rgba(240,165,0,.06);border-radius:0 4px 4px 0;white-space:pre-wrap}
@media print{
  .wp{grid-template-columns:1fr 1fr}
  .wp-a{break-inside:avoid}
  .wp-x{display:none}
  .wp-t{border:none;background:none;padding:0}
}

/* Középre igazított táblázatok. A számoszlopok jobbra igazítása szakmailag
   szebb, de a fejléc és az érték így két különböző ponton állt, és a szem
   nehezen párosította őket. Egységes közép: egyszerűbb olvasni. */
.mt table th, .mt table td,
.recv-table th, .recv-table td,
.ov-table th, .ov-table td,
.bench-table th, .bench-table td,
.mr-player-table th, .mr-player-table td,
.mr-sets-table th, .mr-sets-table td,
.mr-kill-table th, .mr-kill-table td,
.pl-share-tbl th, .pl-share-tbl td{text-align:center}
  .vt-fab b{font-variant-numeric:tabular-nums}
  .vt-fs{width:min(280px,66vw)}
}

@media print{ #t9{display:none !important} }

/* ═══════════════════════════════════════════════════════════════════════
   MATCH SHEET rv-v26 — grouped toolbar, block library, new blocks
   ═══════════════════════════════════════════════════════════════════════ */

/* toolbar menus: two groups instead of eleven loose buttons */
.md-menu{position:relative}
.md-menu-btn{display:inline-flex;align-items:center;gap:5px}
.md-menu-pop{display:none;position:absolute;top:calc(100% + 4px);right:0;z-index:60;
  min-width:min(250px, calc(100vw - 28px));max-width:calc(100vw - 28px);background:var(--bg2);border:1px solid var(--border);border-radius:9px;
  box-shadow:0 16px 40px rgba(0,0,0,.55);padding:5px}
.md-menu-pop.open{display:block}
.md-menu-pop button{display:flex;align-items:center;gap:9px;width:100%;text-align:left;
  background:none;border:0;color:var(--light);font-family:inherit;font-size:.8rem;
  padding:8px 9px;border-radius:6px;cursor:pointer}
.md-menu-pop button:hover:not(:disabled){background:rgba(255,255,255,.07);color:var(--white)}
.md-menu-pop button:disabled{opacity:.35;cursor:default}
.md-menu-pop button.danger:hover:not(:disabled){background:rgba(230,57,70,.16);color:#ff8a94}
.md-menu-pop button.on{color:var(--amber)}
.md-menu-pop button span{flex:1}
.md-menu-pop button i{font-style:normal;font-size:.68rem;color:var(--gray);white-space:nowrap}

/* the shared link no longer matches the sheet */
.md-stalebar{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding:9px 12px;
  border-radius:8px;background:rgba(240,165,0,.1);border:1px solid rgba(240,165,0,.42);
  color:var(--amber);font-size:.8rem}
.md-stalebar div{flex:1;color:var(--light)}
.md-stalebar b{color:var(--amber);display:block}
.md-stalebar span{font-size:.75rem;color:var(--gray)}

/* work area: sheet plus block library */
.md-work{display:block}
.md-work.editing{display:grid;grid-template-columns:minmax(0,1fr) 264px;gap:16px;align-items:start}
/* A nav két sora ~94px magas és maga is sticky. A rail top:12px-nél alácsúszott
   és a fejléc levágta a tetejét; a saroknak a nav ALÁ kell tapadnia, a
   magasságának pedig azzal csökkennie, különben a lista alja kilóg a képből. */
.md-rail{position:sticky;top:calc(var(--nav-h) + 12px);background:var(--bg2);
  border:1px solid var(--border);border-radius:11px;padding:11px;
  max-height:calc(100vh - var(--nav-h) - 32px);overflow-y:auto;z-index:1}
.md-rail-h{display:flex;align-items:center;gap:6px;font-size:.7rem;font-weight:800;
  letter-spacing:.08em;text-transform:uppercase;color:var(--amber);margin-bottom:9px}
.md-rail-g{margin-bottom:11px}
.md-rail-gt{font-size:.63rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gray);
  margin:0 0 5px 2px}
.md-railbtn{display:block;width:100%;text-align:left;background:var(--card);
  border:1px solid var(--border);border-radius:7px;padding:7px 9px;margin-bottom:4px;
  color:var(--light);font-family:inherit;cursor:pointer}
.md-railbtn:hover{border-color:var(--amber)}
.md-railbtn b{display:block;font-size:.76rem;font-weight:700;color:var(--white)}
.md-railbtn b i{font-style:normal;float:right;font-size:.64rem;color:var(--amber);font-weight:800}
.md-railbtn span{display:block;font-size:.67rem;color:var(--gray);line-height:1.35;margin-top:2px}
.md-railbtn.used{border-left:2px solid var(--amber)}
@media(max-width:900px){
  .md-work.editing{grid-template-columns:1fr}
  /* Static, and AFTER the sheet: a library pushed above the document meant the
     coach had to scroll past twenty-two buttons to see what they were editing. */
  .md-rail{position:static;max-height:none}
  .md-rail-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:4px}
  .md-rail-items .md-railbtn{margin-bottom:0}
  .md-railbtn span{display:none}
}
@media(max-width:820px){
  /* The A4 guide is measured in millimetres; on a scaled-down phone view the
     lines would land nowhere near the real page break, which is worse than
     showing nothing. */
  #md-preview.a4 .md-doc{width:auto}
  #md-preview.a4 .md-doc::after{display:none}
}

/* block chrome */
.md-blkgrip{cursor:grab}
.md-blkgrip:active{cursor:grabbing}
.md-blk.dragging{opacity:.4}
.md-blk.dropinto{outline:2px dashed var(--amber);outline-offset:3px;border-radius:8px}
.md-blkerr{display:flex;gap:9px;align-items:flex-start;padding:11px;border-radius:8px;
  background:rgba(230,57,70,.09);border:1px solid rgba(230,57,70,.4);color:#ff8a94;font-size:.8rem}
.md-blkerr b{color:#ff8a94}
.md-empty{display:flex;gap:7px;align-items:flex-start}

/* serve target reordering — the arrows exist because drag does not work on touch */
.md-ord{display:flex;flex-direction:column;gap:2px;flex-shrink:0}
.md-ord button,.md-pool-up{background:var(--bg3);border:1px solid var(--border);color:var(--gray);
  border-radius:4px;padding:1px 4px;cursor:pointer;line-height:1}
.md-ord button:hover,.md-pool-up:hover{color:var(--amber);border-color:var(--amber)}

/* rotation wheel */
/* Same reasoning as the radar: three fixed columns collapsed to 40px cells
   inside the 430px preview. auto-fit gives three across on a full-width block,
   two in the preview or on a phone, and never squashes the numbers. */
.md-wheelgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));
  gap:9px;margin-top:9px}
.md-wheel{background:var(--card);border:1px solid var(--border);border-radius:9px;padding:8px;
  container-type:inline-size}
/* Below ~150px a surname is three letters and an ellipsis; the jersey number is
   what a blocker reads anyway. */
@container (max-width:168px){ .md-wname{display:none} .md-wcell{min-height:34px} }
@media(max-width:420px){ .md-wname{display:none} }
.md-wheel-h{display:flex;justify-content:space-between;align-items:baseline;
  font-size:.82rem;font-weight:900;color:var(--amber);margin-bottom:6px}
.md-wheel-h span{font-size:.66rem;font-weight:700;color:var(--gray)}
.md-wcourt{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;
  background:#0f2136;border:1px solid #24405e;border-radius:6px;padding:3px}
.md-wcell{position:relative;min-height:40px;border-radius:4px;background:rgba(255,255,255,.04);
  display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3px 1px}
.md-wcell.front{background:rgba(240,165,0,.09)}
.md-wcell.setter{outline:1.5px solid var(--amber);background:rgba(240,165,0,.2)}
.md-wpos{position:absolute;top:1px;left:3px;font-size:.55rem;color:rgba(255,255,255,.28)}
.md-wcell b{font-size:.92rem;font-weight:900;color:var(--white);line-height:1}
.md-wname{font-size:.58rem;color:var(--gray);max-width:100%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.md-wnote{font-size:.63rem;color:var(--gray);margin-top:5px;text-align:center}

/* checklist */
.md-checks{display:flex;flex-direction:column;gap:5px;margin-top:7px}
.md-check-edit{display:flex;align-items:center;gap:8px;background:var(--card);
  border:1px solid var(--border);border-radius:7px;padding:6px 9px;color:var(--gray)}
.md-check-edit span{flex:1;font-size:.82rem;color:var(--light);outline:none}
.md-check-edit span:focus{color:var(--white)}
.md-check-edit button{background:none;border:0;color:var(--gray);cursor:pointer;padding:2px}
.md-check-edit button:hover{color:var(--red)}
.md-check{display:flex;align-items:center;gap:9px;width:100%;text-align:left;
  background:var(--card);border:1px solid var(--border);border-radius:7px;padding:9px 11px;
  color:var(--light);font-family:inherit;font-size:.84rem;cursor:pointer}
.md-check:hover{border-color:var(--amber)}
.md-check-box{display:flex;color:var(--gray);flex-shrink:0}
.md-check-box .ic:last-child{display:none}
.md-check.checked{background:rgba(74,222,128,.09);border-color:rgba(74,222,128,.45)}
.md-check.checked .md-check-box{color:#4ade80}
.md-check.checked .md-check-box .ic:first-child{display:none}
.md-check.checked .md-check-box .ic:last-child{display:block}
.md-check.checked .md-check-t{color:var(--gray);text-decoration:line-through}

/* image block */
.md-imgdrop{display:flex;flex-direction:column;align-items:center;gap:5px;padding:22px 14px;
  border:1px dashed var(--border);border-radius:9px;color:var(--gray);cursor:pointer;
  font-size:.82rem;text-align:center}
.md-imgdrop:hover{border-color:var(--amber);color:var(--amber)}
.md-img{display:block;width:100%;border-radius:9px;border:1px solid var(--border)}
.md-imgcap{font-size:.74rem;color:var(--gray);margin-top:5px;outline:none}

/* matchups */
.md-matchups{display:flex;flex-direction:column;gap:6px;margin-top:7px}
.md-mrow{display:grid;grid-template-columns:1fr auto 1.3fr auto;gap:9px;align-items:center;
  background:var(--card);border:1px solid var(--border);border-radius:7px;padding:8px 10px}
.md-mus{font-size:.84rem;font-weight:700;color:var(--white);outline:none;min-height:18px}
.md-mvs{color:var(--amber);display:flex}
.md-mthem{font-size:.82rem;color:var(--light);min-width:0}
.md-mdel{background:none;border:0;color:var(--gray);cursor:pointer;padding:2px}
.md-mdel:hover{color:var(--red)}
/* Four columns do not fit a phone or the preview box. Stack them, keep the
   delete button pinned so the two names stay readable. */
@container (max-width:380px){
  .md-mrow{grid-template-columns:1fr auto}
  .md-mvs{display:none}
  .md-mus{grid-column:1}
  .md-mthem{grid-column:1/-1}
  .md-mdel{grid-row:1;grid-column:2}
}
.md-matchups{container-type:inline-size}
@media(max-width:680px){
  .md-mrow{grid-template-columns:1fr auto}
  .md-mvs{display:none}
  .md-mthem{grid-column:1/-1}
  .md-mdel{grid-row:1;grid-column:2}
}

/* our team */
.md-kpigrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:7px;margin-top:7px}
.md-kpi{background:var(--card);border:1px solid var(--border);border-radius:7px;padding:8px;
  display:flex;flex-direction:column;gap:1px}
.md-kpi b{font-size:1.1rem;font-weight:800;color:var(--white);font-variant-numeric:tabular-nums}
.md-kpi span{font-size:.63rem;color:var(--gray)}
.md-goals-h{font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:var(--amber);
  margin:12px 0 4px}
.md-goals{min-height:38px;font-size:.84rem;line-height:1.55;color:var(--light);outline:none;
  border-left:2px solid rgba(240,165,0,.4);padding-left:9px}

/* fixture line */
.md-fxdate{display:inline-flex;align-items:center;gap:5px;color:var(--gray)}
.md-fxdate input{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  border-radius:5px;padding:2px 6px;font-family:inherit;font-size:.76rem}
.md-fx-legacy{font-size:.72rem;color:var(--gray);font-style:italic}

/* empty contenteditable placeholders */
.md-check-edit span:empty::before,.md-mus:empty::before,.md-goals:empty::before,
.md-imgcap:empty::before{content:attr(data-ph);color:var(--gray);opacity:.6;font-style:italic}

/* A4 guide: where the page will actually break */
#md-preview.a4 .md-doc{width:190mm;max-width:100%;position:relative}
#md-preview.a4 .md-doc::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(to bottom,
    transparent 0, transparent 265mm,
    rgba(240,165,0,.55) 265mm, rgba(240,165,0,.55) calc(265mm + 1px))}

/* one QR per sheet, so the changing-room wall can be labelled by position */
.pub-sheets-h{font-size:.72rem;color:var(--gray);margin:12px 0 6px}
.pub-sheets{display:flex;flex-direction:column;gap:6px}
.pub-sheet{display:grid;grid-template-columns:minmax(90px,auto) minmax(0,1fr) auto;gap:9px;
  align-items:center;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 10px}
.pub-sheet-n{font-size:.75rem;font-weight:700;color:var(--light)}
.pub-sheet .pub-url{font-size:.7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:600px){
  .pub-sheet{grid-template-columns:1fr auto}
  .pub-sheet .pub-url{grid-column:1/-1}
}

@media print{
  .md-rail,.md-menu,.md-stalebar,.md-ord,.md-pool-up{display:none !important}
  .md-work.editing{display:block}
  .md-wheel,.md-check,.md-mrow,.md-kpi{background:#fff !important;border-color:#bbb !important}
  .md-wcourt{background:#f2f2f2 !important;border-color:#bbb !important}
  .md-wcell{background:#fff !important}
  .md-wcell.front{background:#fdf3dd !important}
  .md-check.checked .md-check-t{text-decoration:none}
  #md-preview.a4 .md-doc{width:auto}
  #md-preview.a4 .md-doc::after{display:none}
}

/* ═══════════════════════════════════════════════════════════════════════
   rv-v27 — video clips, acknowledgement, global search, sheet templates
   ═══════════════════════════════════════════════════════════════════════ */

/* video clip block */
.md-clipwrap{margin:8px 0}
.md-clipvid{width:100%;max-height:52vh;border-radius:9px;background:#000;display:block}
.md-clips{display:flex;flex-direction:column;gap:5px;margin-top:7px}
.md-clip{display:flex;gap:9px;align-items:flex-start;background:var(--card);
  border:1px solid var(--border);border-radius:7px;padding:8px 10px}
.md-clip.playing{border-color:var(--amber);background:rgba(240,165,0,.09)}
.md-clip.noplay{opacity:.8}
.md-clip-play{flex-shrink:0;width:30px;height:30px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;background:var(--amber);border:0;color:#0a1424;
  cursor:pointer;padding:0}
.md-clip-play:hover{background:var(--amber2)}
.md-clip.noplay .md-clip-play{background:var(--bg4);color:var(--gray)}
.md-clip-b{flex:1;min-width:0}
.md-clip-b>b{display:block;font-size:.78rem;font-weight:700;color:var(--white)}
.md-clip-n{font-size:.76rem;color:var(--light);line-height:1.45;outline:none;margin-top:2px}
.md-clip-del{background:none;border:0;color:var(--gray);cursor:pointer;padding:2px}
.md-clip-del:hover{color:var(--red)}

/* rv-v113 — összefűzött lejátszó: a blokk jelenetei egy videóként */
.md-reel{margin:8px 0 4px;background:var(--bg2);border:1px solid var(--border);border-radius:10px;
  padding:8px;display:flex;flex-direction:column;gap:7px}
.md-reel .md-clipwrap{margin:0;position:relative}
.md-reel .md-clipvid{cursor:pointer}
.md-reel-cap{font-size:.76rem;color:var(--light);line-height:1.45;padding:5px 2px 0}
.md-reel-cap b{color:var(--amber);margin-right:6px;font-variant-numeric:tabular-nums}
.md-reel-note{display:block;color:var(--white);font-weight:600}
.md-reel-prog{position:relative;height:14px;cursor:pointer;display:flex;align-items:center;outline:none}
.md-reel-prog:focus-visible{outline:2px solid var(--amber);outline-offset:2px;border-radius:4px}
.md-reel-segs{position:absolute;left:0;right:0;top:4px;height:6px;display:flex;gap:2px}
.md-reel-seg{background:rgba(255,255,255,.14);border-radius:2px;min-width:2px}
.md-reel-seg.cur{background:rgba(240,165,0,.35)}
.md-reel-fill{position:absolute;left:0;top:4px;height:6px;width:0;background:var(--amber);
  border-radius:2px;opacity:.85;pointer-events:none}
.md-reel-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.md-reel-btn{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--bg3);border:1px solid var(--border);border-radius:8px;color:var(--light);cursor:pointer;padding:0}
.md-reel-btn:hover{border-color:var(--amber);color:var(--amber)}
.md-reel-play{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border:0;border-radius:8px;
  background:var(--amber);color:#0a1424;font-family:inherit;font-weight:800;font-size:.8rem;cursor:pointer}
.md-reel-play:hover{background:var(--amber2)}
.md-reel-pi{display:inline-flex}
.md-reel-now{font-size:.74rem;color:var(--gray);font-variant-numeric:tabular-nums;margin-left:4px}
.md-reel-fs{margin-left:auto}
.md-reel:fullscreen{background:#000;border:0;border-radius:0;padding:10px 14px;justify-content:center}
.md-reel:fullscreen .md-clipvid{max-height:calc(100vh - 150px);border-radius:0}
.md-reel:fullscreen .md-reel-cap{font-size:.95rem}
.md-clips-d{margin-top:6px}
.md-clips-d>summary{cursor:pointer;font-size:.72rem;font-weight:700;color:var(--gray);
  letter-spacing:.04em;padding:4px 0;list-style-position:inside}
.md-clips-d>summary:hover{color:var(--amber)}
.md-clippick{margin-top:10px;border-top:1px dashed var(--border);padding-top:9px}
.md-clippick-h{display:flex;align-items:center;gap:6px;font-size:.68rem;letter-spacing:.07em;
  text-transform:uppercase;color:var(--amber);margin-bottom:6px}
.md-clippick-f{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:7px}
.md-clippick-l{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:4px;
  max-height:220px;overflow-y:auto}
.md-clipopt{text-align:left;background:var(--bg3);border:1px solid var(--border);border-radius:6px;
  padding:6px 8px;color:var(--light);font-family:inherit;cursor:pointer}
.md-clipopt:hover:not(:disabled){border-color:var(--amber)}
.md-clipopt:disabled{opacity:.4;cursor:default}
.md-clipopt b{display:block;font-size:.72rem;font-weight:700;color:var(--white)}
.md-clipopt span{display:block;font-size:.64rem;color:var(--gray)}

/* acknowledgement — reader side */
.pub-seen{margin:18px auto 30px;max-width:760px;padding:14px 16px;border-radius:11px;
  background:rgba(240,165,0,.08);border:1px solid rgba(240,165,0,.35)}
.pub-seen.done{display:flex;align-items:center;gap:9px;color:#4ade80;
  background:rgba(74,222,128,.09);border-color:rgba(74,222,128,.4)}
.pub-seen-t{font-size:.86rem;font-weight:700;color:var(--white);margin-bottom:8px}
.pub-seen-r{display:flex;gap:7px;flex-wrap:wrap}
.pub-seen-r input{flex:1;min-width:150px;background:var(--bg3);border:1px solid var(--border);
  color:var(--light);border-radius:7px;padding:9px 11px;font-family:inherit;font-size:.85rem}
.pub-seen-b{display:inline-flex;align-items:center;gap:6px;background:var(--amber);border:0;
  color:#0a1424;font-family:inherit;font-weight:700;font-size:.85rem;border-radius:7px;
  padding:9px 15px;cursor:pointer}
.pub-seen-b:hover{background:var(--amber2)}
.pub-seen-n{font-size:.7rem;color:var(--gray);margin-top:7px}

/* acknowledgement — coach side */
.md-seenbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:9px}
.md-seenlist{display:flex;gap:5px;align-items:center;flex-wrap:wrap;font-size:.76rem;color:var(--gray)}
.md-seenlist b{color:var(--light);margin-right:3px}
.md-seenchip{background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.35);
  color:#4ade80;border-radius:11px;padding:2px 9px;font-size:.72rem}

/* global search */
.global-search{position:relative;display:flex;align-items:center;gap:5px}
.gs-btn{background:var(--bg3);border:1px solid var(--border);color:var(--gray);border-radius:7px;
  padding:6px 8px;cursor:pointer;display:flex}
.gs-btn:hover{color:var(--amber);border-color:var(--amber)}
.global-search #gs-input{display:none;width:190px;background:var(--bg3);border:1px solid var(--amber);
  color:var(--light);border-radius:7px;padding:6px 10px;font-family:inherit;font-size:.82rem}
.global-search.open #gs-input{display:block}
.global-search.open .gs-btn{color:var(--amber);border-color:var(--amber)}
.gs-results{display:none;position:absolute;top:calc(100% + 5px);left:0;z-index:70;
  min-width:270px;max-width:calc(100vw - 28px);background:var(--bg2);border:1px solid var(--border);
  border-radius:9px;box-shadow:0 16px 40px rgba(0,0,0,.55);padding:5px;max-height:320px;overflow-y:auto}
.gs-results.open{display:block}
.gs-count{font-size:.65rem;letter-spacing:.05em;text-transform:uppercase;color:var(--gray);
  padding:5px 9px 3px}
.gs-row{display:grid;grid-template-columns:34px minmax(0,1.2fr) minmax(0,1fr) auto;gap:9px;
  align-items:baseline;width:100%;text-align:left;background:none;
  border:0;color:var(--light);font-family:inherit;padding:8px 9px;border-radius:6px;cursor:pointer}
.gs-row:hover,.gs-row.sel{background:rgba(255,255,255,.07)}
.gs-row b{color:var(--amber);font-weight:900}
.gs-n{font-size:.84rem;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-t{font-size:.7rem;color:var(--gray);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-t.own{color:var(--teal)}
.gs-r{font-size:.68rem;color:var(--gray);white-space:nowrap}
.gs-results{min-width:380px}
@media(max-width:680px){
  .gs-results{min-width:min(340px, calc(100vw - 24px))}
  .gs-row{grid-template-columns:30px minmax(0,1fr) auto}
  .gs-r{display:none}
}
.gs-empty{padding:10px;font-size:.78rem;color:var(--gray)}
@media(max-width:680px){.global-search.open #gs-input{width:130px}}

/* sheet templates */
.md-tplgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px;margin-top:4px}
.md-tplbtn{text-align:left;display:block}
.md-tplbtn b{display:block;font-size:.84rem;color:var(--white)}
.md-tplbtn span{display:block;font-size:.7rem;color:var(--gray);margin-top:2px;line-height:1.35}

@media print{
  .md-clip-play,.md-clip-del,.md-clippick,.md-clipwrap,.md-reel,.pub-seen,.md-seenbar,
  .global-search{display:none!important}
  .md-clip{background:#fff!important;border-color:#bbb!important}
}

/* Videó alapcím + automatikus párosítás (feltöltés fül) */
.video-base-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0 0 10px;
  padding:9px 12px;background:var(--bg2);border:1px solid var(--border);border-radius:9px}
.vb-l{font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--gray);
  white-space:nowrap}
.vb-in{flex:1;min-width:210px;background:var(--bg3);border:1px solid var(--border);
  color:var(--light);border-radius:7px;padding:7px 10px;font-family:inherit;font-size:.8rem}
.vb-in.set{border-color:rgba(240,165,0,.45)}
.vb-btn{background:var(--amber);border:0;color:#0a1424;font-family:inherit;font-weight:700;
  font-size:.8rem;border-radius:7px;padding:7px 14px;cursor:pointer;white-space:nowrap}
.vb-btn:hover:not(:disabled){background:var(--amber2)}
.vb-btn:disabled{background:var(--bg4);color:var(--gray);cursor:default}
.vb-hint{font-size:.7rem;color:var(--gray)}
.vb-hint code{background:var(--bg3);border-radius:4px;padding:1px 5px;font-size:.68rem}
.ui-modal-list{max-height:min(420px, 52vh);overflow:auto;font-size:.76rem;color:var(--light);
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.ui-modal-list>div{padding:2px 0;white-space:nowrap}
@media(max-width:700px){.video-base-bar{gap:7px}.vb-in{min-width:100%}}

/* Várt videó-fájlnevek lista */
/* A dialog full of filenames needs room: at 460px every row was an ellipsis. */
.ui-modal-box.wide{max-width:min(920px, calc(100vw - 32px))}

/* The filename is the thing being copied, so it is selectable in one gesture
   and never truncated — the list scrolls sideways instead. */
.ui-modal-list{overflow:auto;max-height:min(420px, 52vh)}
@media(max-width:700px){
}

/* Órajel-alapú szinkron (videó nélkül scoutolt meccsek) */
.vt-sync{margin:8px 0;padding:11px 13px;border-radius:9px;
  background:rgba(240,165,0,.09);border:1px solid rgba(240,165,0,.42)}
.vt-sync.done{background:rgba(74,222,128,.08);border-color:rgba(74,222,128,.38)}
.vt-sync-t{display:flex;align-items:center;gap:7px;font-size:.84rem;font-weight:700;
  color:var(--amber);margin-bottom:4px}
.vt-sync.done .vt-sync-t{color:#4ade80}
.vt-sync-b{font-size:.76rem;color:var(--light);line-height:1.5;margin-bottom:8px}
.vt-sync-btn{display:inline-flex;align-items:center;gap:6px;background:var(--amber);border:0;
  color:#0a1424;font-family:inherit;font-weight:700;font-size:.8rem;border-radius:7px;
  padding:7px 13px;cursor:pointer;margin-right:6px}
.vt-sync-btn:hover{background:var(--amber2)}
.vt-sync-btn.ghost{background:var(--bg3);color:var(--gray);font-weight:600}
.vt-sync-btn.ghost:hover{background:var(--bg4);color:var(--light)}

/* Videó–meccs összevetés */

/* ── Mi kontra ők (rv-v89) ─────────────────────────────────────────── */
.md-sec.vs .vs-ctl{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}
.vs-basis{margin:4px 0 10px}
.vs-part{margin-top:14px}
.vs-h{font-size:var(--fs-sm);font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  color:var(--amber);margin-bottom:6px}
.vs-scroll{overflow-x:auto}
.vs-table{width:100%;margin-top:4px}
.vs-table tr.vs-group th{background:var(--bg3);color:var(--white);font-size:var(--fs-sm);
  font-weight:800;text-align:left;padding:7px 12px}
.vs-n{font-size:var(--fs-xs);color:var(--gray);font-variant-numeric:tabular-nums}
.cmp-delta.vs-even{color:var(--light)}
.cmp-delta.vs-thin{color:var(--gray);font-weight:600}
.vs-sum{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.vs-tag{font-size:var(--fs-xs);font-weight:700;padding:3px 9px;border-radius:999px;border:1px solid var(--border)}
.vs-tag.us{background:rgba(74,222,128,.12);color:#4ade80}
.vs-tag.them{background:rgba(255,107,122,.12);color:#ff9aa4}
.vs-tag.even{color:var(--gray)}
.vs-read{display:block;margin-top:3px;font-size:var(--fs-sm);font-weight:700}
.vs-read.us{color:#4ade80}.vs-read.them{color:#ff9aa4}
.vs-read.even,.vs-read.thin,.vs-read.none{color:var(--gray);font-weight:600}
.vs-rnote{display:block;font-size:var(--fs-xs);font-weight:500;color:var(--gray);margin-top:2px}
.vs-pairs{display:flex;flex-direction:column;gap:6px;margin-top:8px;container-type:inline-size}
.vs-pair{display:grid;grid-template-columns:7.5em 1fr 1fr 8em;gap:10px;align-items:center;
  padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card)}
.vs-pos{font-weight:800;color:var(--white);font-size:var(--fs-sm)}
.vs-side{font-size:var(--fs-md);min-width:0}
.vs-side.them{border-left:2px solid var(--border);padding-left:10px}
.vs-empty{color:var(--gray)}
.vs-verdict{font-size:var(--fs-xs);font-weight:800;text-align:right}
.vs-verdict.us{color:#4ade80}.vs-verdict.them{color:#ff9aa4}
.vs-verdict.even,.vs-verdict.thin,.vs-verdict.none{color:var(--gray);font-weight:600}
@container (max-width:520px){
  .vs-pair{grid-template-columns:1fr 1fr}
  .vs-pos{grid-column:1 / 2}.vs-verdict{grid-column:2 / 3}
}
@media print{
  .md-sec.vs .vs-ctl{display:none !important}
  .vs-table tr.vs-group th{background:#eee;color:#000}
  .vs-h{color:#000}
  .vs-pair{background:none;border-color:#bbb}
  .vs-pos,.vs-side{color:#000}
  .vs-tag.us,.vs-read.us,.vs-verdict.us,.vs-table .cmp-delta.up{color:#146c2e !important}
  .vs-tag.them,.vs-read.them,.vs-verdict.them{color:#9b1c28 !important}
  .vs-tag{background:none}
}
.md-dim{color:var(--gray);font-style:italic}
.vt-need .vt-attach.ghost,.vt-attach.ghost{background:transparent;color:var(--gray)}

/* ── Meccs lap tisztítás (rv-v89) ─────────────────────────────────── */
/* Csapat-profil: a pókháló mellett tömör lista, nem öt nagy kártya */
.md-rlist{display:flex;flex-direction:column;justify-content:center;gap:2px}
.md-rrow{display:grid;grid-template-columns:2.2em 5.2em 1fr;align-items:baseline;gap:8px;
  padding:5px 2px;border-bottom:1px solid var(--border);font-size:var(--fs-md)}
.md-rrow:last-child{border-bottom:none}
.md-rnum{color:var(--amber);font-size:1rem;font-variant-numeric:tabular-nums;text-align:right}
.md-rlab{font-weight:700;color:var(--white)}
.md-rhint{color:var(--gray);font-size:var(--fs-sm)}
@media print{ .md-rlab{color:#000} .md-rrow{border-color:#ccc} }
.md-wnote.thin{color:var(--amber)}

/* blokk-vezérlősor: egy cím blokkonként, kevesebb gomb */
.md-blk:not(.folded) .md-blkname{visibility:hidden}
.md-blkbar{margin-bottom:2px}
.md-blkbar button{width:20px;height:20px}
.md-blkbar .md-blkmore{display:inline-flex}
.md-blkbar .md-menu-pop{min-width:200px}
.md-blkbar .md-menu-pop button{width:100%;height:auto;border:none;background:none;border-radius:6px;
  padding:7px 10px;font-size:.78rem;color:var(--light)}
.md-blkbar .md-menu-pop button.danger{color:#ff8a94}
.md-blk:has(.md-menu-pop.open) .md-blkbar{opacity:1}
.md-blk:has(.md-menu-pop.open){z-index:5}

/* szerkesztő: a lap és a blokk-könyvtár egymás mellett, üres sáv nélkül */
@media(min-width:901px){
  .md-work.editing{grid-template-columns:minmax(0,760px) 264px;justify-content:center}
}

/* „További blokkok" a könyvtárban */
.md-rail-more{margin-top:4px}
.md-rail-more>summary{cursor:pointer;list-style:none;font-size:.7rem;font-weight:700;color:var(--amber);
  padding:7px 4px;border-top:1px solid var(--border)}
.md-rail-more>summary::-webkit-details-marker{display:none}
.md-rail-more[open]>summary{margin-bottom:8px}
.prio-l li.prio-thin{opacity:.62}
.clutch-ed{margin-top:10px}
.clutch-ed>summary{cursor:pointer;font-size:.76rem;font-weight:700;color:var(--amber)}
.clutch-grid{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:8px 0;font-size:.78rem;color:var(--light)}
.clutch-in{width:52px;background:var(--card);color:var(--light);border:1px solid var(--border);border-radius:6px;padding:3px 6px;font:inherit}
.vs-worker-row{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;flex-basis:100%}
.vs-worker-row .vs-in{min-width:min(360px,100%)}
a.vs-btn{text-decoration:none;display:inline-flex;align-items:center}

/* blokk-könyvtár: kinyitható csoportok */
.md-rail-g{margin-bottom:4px;border-bottom:1px solid var(--border)}
.md-rail-g:last-child{border-bottom:none}
.md-rail-g>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;
  padding:8px 2px;margin:0;user-select:none}
.md-rail-g>summary::-webkit-details-marker{display:none}
.md-rail-g>summary svg{transition:transform .15s;flex:none}
.md-rail-g[open]>summary svg{transform:rotate(90deg)}
.md-rail-g>summary:hover .md-rail-gn{color:var(--amber)}
.md-rail-gn{font-weight:800;color:var(--light)}
.md-rail-gc{margin-left:auto;font-size:.62rem;letter-spacing:0;text-transform:none;color:var(--gray)}
.md-rail-gc b{color:var(--amber);font-weight:700}
.md-rail-items{padding:0 0 8px}
.md-clipwrap[data-hint]::after{content:attr(data-hint);display:block;font-size:.76rem;color:var(--amber);padding:6px 2px}
.md-rot-thin{opacity:.7}

/* Mi kontra ők — kezdő hatos: az olvasat középen, a jobb oldal felé mutat */
.vs-pair{display:block;padding:8px 10px}
.vs-pair .vs-pos{margin-bottom:6px}
.vs-duel{display:grid;grid-template-columns:minmax(0,1fr) 7.2em minmax(0,1fr);gap:8px;align-items:stretch}
.vs-duel .vs-side{border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 8px;min-width:0}
.vs-duel .vs-side.them{border-left:1px solid var(--border);padding-left:8px}
.vs-duel .vs-side.us.win{border-color:#4ade80;background:rgba(74,222,128,.07)}
.vs-duel .vs-side.them.win{border-color:#ff6b7a;background:rgba(255,107,122,.07)}
.vs-lab{font-size:.6rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gray);margin-bottom:2px}
.vs-edge{display:flex;align-items:center;justify-content:center;gap:4px;text-align:center;
  font-size:.66rem;line-height:1.25;border-radius:var(--radius-sm);padding:4px}
.vs-edge b{font-size:.74rem}
.vs-edge.us{color:#4ade80;background:rgba(74,222,128,.08)}
.vs-edge.them{color:#ff9aa4;background:rgba(255,107,122,.08)}
.vs-edge.even,.vs-edge.thin,.vs-edge.none{color:var(--gray)}
.vs-swap{max-width:100%;font-size:.76rem}
.vs-swap.manual{border-color:var(--amber)}
.vs-reset{background:none;border:none;color:var(--amber);cursor:pointer;padding:2px 4px;vertical-align:middle}
@container (max-width:520px){
  .vs-duel{grid-template-columns:minmax(0,1fr) 5.4em minmax(0,1fr);gap:5px}
  .vs-edge{font-size:.6rem}
}
@media print{
  .vs-duel .vs-side.us.win{border-color:#146c2e;background:none}
  .vs-duel .vs-side.them.win{border-color:#9b1c28;background:none}
  .vs-edge.us{color:#146c2e !important;background:none}
  .vs-edge.them{color:#9b1c28 !important;background:none}
  .vs-reset{display:none}
}

/* ── Első lépések (rv-v95) ────────────────────────────────────────────
   Csík a tartalom fölött, nem ablak: nem áll az útba, és magától fogy el,
   ahogy a lépések megvannak. */
#rv-intro{padding:0 var(--sp-4)}
.intro{background:linear-gradient(180deg,rgba(240,165,0,.09),rgba(240,165,0,.03));
  border:1px solid rgba(240,165,0,.32);border-radius:var(--radius);padding:12px 14px;margin:var(--sp-4) 0 0}
.intro-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.intro-head b{color:var(--amber);font-size:.9rem}
.intro-head span{color:var(--gray);font-size:.72rem}
.intro-x{margin-left:auto;background:none;border:none;color:var(--gray);cursor:pointer;padding:4px}
.intro-x:hover{color:var(--light)}
.intro-steps{list-style:none;margin:0;padding:0;display:grid;gap:8px;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.intro-steps li{display:grid;grid-template-columns:20px 1fr;gap:4px 8px;align-items:start;
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 11px}
.intro-steps li b{color:var(--white);font-size:.84rem}
.intro-steps li .intro-t{grid-column:2;color:var(--gray);font-size:.75rem;line-height:1.45}
.intro-mark{grid-row:span 2;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--border);
  display:flex;align-items:center;justify-content:center;color:var(--bg)}
.intro-steps li.done{opacity:.6}
.intro-steps li.done .intro-mark{background:var(--green);border-color:var(--green);color:#fff}
.intro-foot{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
@media print{ #rv-intro{display:none !important} }

/* ── BEKÜLDÉSEK (rv-v99) ──
   A linken érkezett meccsek, a teendők és a linkek. A tárhely-sáv
   testvére: ugyanaz a doboz, ugyanazok a gombok. */
.inb{background:var(--card);border:1px solid var(--border);border-radius:10px;
  padding:10px 14px;margin-bottom:18px;font-size:.78rem}
.inb-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.inb-sp{flex:1 1 auto}
.inb-dot{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  padding:0 5px;border-radius:99px;background:var(--amber);color:var(--bg);
  font-size:.66rem;font-weight:800;line-height:1;margin-left:6px;font-variant-numeric:tabular-nums}
.inb-head .inb-dot{margin-left:0}
.inb-sec{margin-top:10px;border-top:1px solid var(--border);padding-top:8px}
.inb-sec-t{font-size:.66rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
  color:var(--gray);margin-bottom:4px}
.inb-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:7px 8px;
  border-radius:7px;border:1px solid transparent}
.inb-row + .inb-row{margin-top:3px}
.inb-row.warn{background:rgba(240,165,0,.07);border-color:rgba(240,165,0,.28)}
.inb-row.dim{opacity:.6}
.inb-date{font-family:var(--font-mono);color:var(--gray);font-size:.74rem;white-space:nowrap}
.inb-teams{color:var(--light);font-size:.84rem;min-width:0}
.inb-from{color:var(--gray);font-size:.72rem;white-space:nowrap}
.inb-why{flex:1 1 100%;color:var(--amber);font-size:.74rem}
.inb-why code{font-size:.72rem;color:var(--light)}
.inb-act{display:flex;align-items:center;gap:6px;margin-left:auto}
.inb-chip{font-size:.66rem;font-weight:700;padding:2px 7px;border-radius:99px;
  background:rgba(46,196,182,.12);color:var(--teal);white-space:nowrap}
.inb-chip.dim{background:rgba(255,255,255,.06);color:var(--gray)}
.inb-chip.bad{background:rgba(240,165,0,.14);color:var(--amber)}
.inb-league{background:var(--bg3);border:1px solid rgba(240,165,0,.5);color:var(--light);
  font-family:inherit;font-size:.74rem;padding:4px 8px;border-radius:5px}
.inb-more{background:none;border:none;color:var(--gray);font-family:inherit;font-size:.72rem;
  font-weight:700;cursor:pointer;padding:4px 2px}
.inb-more:hover{color:var(--amber)}
.inb-url{display:block;padding:8px;background:var(--bg3);border-radius:6px;font-size:.74rem;
  word-break:break-all;user-select:all}
.inb-form{display:flex;flex-direction:column;gap:10px}
.inb-form label{display:flex;flex-direction:column;gap:4px;font-size:.76rem;color:var(--gray)}
.inb-form input,.inb-form select{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:.85rem;padding:7px 9px;border-radius:6px}
.inb-form input:focus,.inb-form select:focus{outline:none;border-color:var(--amber)}
.vs-btn.ok{border-color:rgba(46,196,182,.45);color:var(--teal);background:rgba(46,196,182,.08)}
.vs-btn.armed{background:rgba(230,57,70,.4);color:#fff;border-color:#ff6b7a}
.ui-choice-btn[disabled]{opacity:.45;cursor:not-allowed}
.ui-choice-btn .ic{margin-right:6px}
.mr-upbtn.dl:hover{border-color:rgba(46,196,182,.55);color:var(--teal);background:rgba(46,196,182,.12)}
#admin-drop-upload{display:flex;align-items:center}
@media(max-width:700px){
  .inb-act{margin-left:0;flex:1 1 100%;flex-wrap:wrap}
}


/* ── IDŐSÁV (rv-v102) ──
   A kép alatt, közvetlenül; a képen semmi. A sín vékony, a fogópont csak
   rámutatáskor és húzáskor nő meg, hogy nyugalmi helyzetben ne vonja el a
   figyelmet a képről. */
.vt-tl{flex:0 0 auto;width:100%;display:flex;align-items:flex-end;gap:10px;padding:2px 2px 0;
  user-select:none;-webkit-user-select:none}
.vt-tl-t{flex:0 0 auto;min-width:44px;line-height:14px;margin-bottom:0;padding-bottom:0;transform:translateY(-1px);font-family:var(--font-mono);font-size:.72rem;color:var(--gray);
  font-variant-numeric:tabular-nums;text-align:center}
#vt-tl-cur{color:var(--light)}
.vt-tl-track{position:relative;flex:1 1 auto;height:30px;cursor:pointer;touch-action:none;outline:none}
.vt-tl-track:focus-visible{box-shadow:0 0 0 2px var(--amber);border-radius:4px}
.vt-tl-rail,.vt-tl-buf,.vt-tl-fill,.vt-tl-win{position:absolute;left:0;top:23px;height:4px;margin-top:-2px;border-radius:2px}
.vt-tl-rail{right:0;background:rgba(255,255,255,.12)}
.vt-tl-buf{background:rgba(255,255,255,.22);width:0}
.vt-tl-win{background:rgba(240,165,0,.35);height:8px;margin-top:-4px;border-radius:3px}
.vt-tl-fill{background:var(--amber);width:0}
.vt-tl-ticks{position:absolute;inset:0;pointer-events:none}
.vt-tl-ticks i{position:absolute;top:23px;width:2px;height:10px;margin:-5px 0 0 -1px;
  background:rgba(221,232,244,.35);border-radius:1px}
.vt-tl-knob{position:absolute;top:23px;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;
  background:var(--amber);box-shadow:0 0 0 3px rgba(240,165,0,.2);transform:scale(.75);transition:transform .12s}
.vt-tl-track:hover .vt-tl-knob,.vt-tl-track.drag .vt-tl-knob,.vt-tl-track:focus-visible .vt-tl-knob{transform:scale(1)}
.vt-tl-track:hover .vt-tl-rail,.vt-tl-track.drag .vt-tl-rail{background:rgba(255,255,255,.18)}
.vt-tl-tip{position:absolute;top:0;transform:translateX(-50%);padding:1px 6px;
  border-radius:4px;background:var(--bg3);border:1px solid var(--border);color:var(--light);
  font-family:var(--font-mono);font-size:.66rem;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .1s}
.vt-tl-tip.on{opacity:1}
.vt-tl.empty .vt-tl-track{cursor:default}
.vt-tl.empty .vt-tl-knob{display:none}
.vt-video{cursor:pointer}

/* A beállított kezdőpont az Időeltolás panelen. */
.vt-cal3{margin-bottom:var(--sp-2);border-bottom:1px dashed var(--border);padding-bottom:var(--sp-2)}
.vt-cal-v{display:inline-flex;align-items:center;gap:5px;color:#4ade80;font-weight:700}

/* Meccs riport: a feladó mezszáma bekarikázva (rv-v103). Nyomtatásban is. */
.mr-setter{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;margin:-3px 0;vertical-align:middle;
  padding:0 3px;border:1.6px solid currentColor;border-radius:50%;line-height:1;font-weight:800;box-sizing:border-box}
.mr-setter-sm{min-width:16px;height:16px;font-size:.62rem;border-width:1.3px;margin-right:2px;vertical-align:middle}
@media print{ .mr-setter{border-color:#000 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact} }

/* ── ZÓNATÉRKÉP (rv-v104) — DataVolley Zone Chart mintájára ── */
.zc{display:grid;grid-template-columns:minmax(260px,330px) minmax(0,1fr);gap:18px;align-items:start;margin-bottom:22px}
.zc-ctl{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 14px;
  display:flex;flex-direction:column;gap:9px}
.zc-row{display:flex;flex-direction:column;gap:4px}
.zc-l{font-size:.64rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gray)}
.zc-row .chip{margin:0 4px 4px 0}
.zc-sel{background:var(--bg3);border:1px solid var(--border);color:var(--light);font-family:inherit;
  font-size:.8rem;padding:6px 8px;border-radius:6px}
.zc-reset{align-self:flex-start;background:none;border:none;color:var(--gray);font-family:inherit;
  font-size:.74rem;font-weight:700;cursor:pointer;padding:2px 0;text-decoration:underline}
.zc-reset:hover{color:var(--amber)}
.zc-courtwrap{max-width:620px}
.zc-who{font-size:.78rem;color:var(--gray);margin-bottom:6px}
.zc-net{height:5px;background:var(--light);border-radius:2px;opacity:.85}
.zc-court{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,minmax(118px,auto));
  border:1px solid rgba(255,255,255,.25);border-top:none;background:rgba(255,255,255,.02)}
.zc-cell{position:relative;display:flex;flex-direction:column;gap:3px;padding:8px 9px;text-align:left;
  border:1px dashed rgba(255,255,255,.14);background:rgba(240,165,0,var(--zc-heat,.05));color:var(--light);
  font-family:inherit;cursor:pointer;min-width:0}
.zc-court > .zc-cell:nth-child(-n+3){border-bottom:1px solid rgba(255,255,255,.3)} /* hármas vonal */
.zc-cell:hover{outline:2px solid var(--amber);outline-offset:-2px;z-index:1}
.zc-cell.top{outline:2px solid var(--white);outline-offset:-2px}
.zc-cell.empty{cursor:default;background:transparent}
.zc-cell.empty:hover{outline:none}
.zc-z{position:absolute;top:5px;right:7px;font-size:.62rem;font-weight:800;color:rgba(221,232,244,.35)}
.zc-h{display:flex;align-items:baseline;gap:8px}
.zc-n{font-size:1.25rem;color:var(--white);font-variant-numeric:tabular-nums}
.zc-pct{font-size:.9rem;font-weight:800;color:#60a5fa}
.zc-k{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:.68rem;font-weight:700}
.zc-kill{color:#4ade80}
.zc-err{color:#ff6b7a}
.zc-eff{color:var(--gray)}
.zc-ps{margin-top:2px;display:flex;flex-direction:column;gap:1px}
.zc-p{display:flex;justify-content:space-between;gap:6px;font-size:.7rem;color:var(--light)}
.zc-p span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zc-none{margin-top:8px;background:var(--card);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:.76rem;padding:7px 10px;border-radius:7px;cursor:pointer}
.zc-none:hover{border-color:var(--amber)}
.zc-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:.68rem;color:var(--gray)}
@media (max-width:900px){
  .zc{grid-template-columns:1fr}
  .zc-court{grid-template-rows:repeat(3,minmax(96px,auto))}
  .zc-ps{display:none}
}
@media print{ .zc-ctl{display:none} .zc{grid-template-columns:1fr} }

/* ── KÓDSZŰRŐ (rv-v104) ── */
.vt-rules{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.vt-rule{display:flex;align-items:center;gap:6px;padding:5px 7px;border-radius:6px;
  background:rgba(240,165,0,.08);border:1px solid rgba(240,165,0,.3);font-size:.72rem}
.vt-rule-t{flex:1 1 auto;min-width:0;color:var(--light);line-height:1.35}
.vt-rule code{font-size:.66rem;color:var(--gray);white-space:nowrap}
.vt-rule-x{flex:0 0 auto;width:20px;height:20px;display:flex;align-items:center;justify-content:center;
  background:none;border:1px solid var(--border);border-radius:4px;color:var(--gray);cursor:pointer}
.vt-rule-x:hover{border-color:#ff6b7a;color:#ff6b7a}
.vt-rule-bar{display:flex;gap:12px;margin-top:6px}
.vr-form{display:flex;flex-direction:column;gap:10px}
.vr-form label{display:flex;flex-direction:column;gap:4px;font-size:.74rem;color:var(--gray)}
.vr-form input,.vr-form select{background:var(--bg3);border:1px solid var(--border);color:var(--light);
  font-family:inherit;font-size:.84rem;padding:6px 8px;border-radius:6px}
.vr-form input:focus,.vr-form select:focus{outline:none;border-color:var(--amber)}
#vr-code{font-family:var(--font-mono);letter-spacing:.06em}
.vr-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.vr-l{font-size:.74rem;color:var(--gray)}
.vr-l span,.vr-hint{font-size:.68rem;color:var(--gray);opacity:.85}
.vr-grs{display:flex;gap:6px;flex-wrap:wrap}
.vr-gr{min-width:38px;padding:6px 10px;border-radius:6px;background:var(--bg3);border:1px solid var(--border);
  color:var(--light);font-family:var(--font-mono);font-size:.9rem;font-weight:800;cursor:pointer}
.vr-gr.on{background:rgba(240,165,0,.22);border-color:var(--amber);color:var(--amber)}
.vr-err{color:#ff6b7a;font-size:.74rem;min-height:1em}
.vr-prev{font-size:.78rem;color:var(--light);padding:8px 10px;border-radius:6px;background:var(--bg3)}
@media (max-width:600px){ .vr-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ── FELADÓ-ELEMZÉS TÉRBEN (rv-v104) ── */
.sv{margin-bottom:22px}
.sv-ctl .grade-filter-bar{margin-bottom:6px}
.sv-main{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.sv-stage{background:radial-gradient(ellipse at 50% 30%, #13243b 0%, #0a1627 70%);border:1px solid var(--border);
  border-radius:10px;overflow:hidden}
.sv-svg{display:block;width:100%;height:auto}
.sv-floor{fill:#b86b3c;opacity:.28}
.sv-outline{fill:none;stroke:rgba(255,255,255,.75);stroke-width:2}
.sv-line3{stroke:rgba(255,255,255,.7);stroke-width:1.5}
.sv-zone{stroke:rgba(255,255,255,.15);stroke-width:1;stroke-dasharray:4 5}
.sv-net{fill:rgba(221,232,244,.12);stroke:rgba(221,232,244,.35);stroke-width:1}
.sv-tape{stroke:#fff;stroke-width:2.5}
.sv-post{stroke:#cbd5e1;stroke-width:3}
.sv-arc{fill:none;stroke-linecap:round;opacity:.88;cursor:pointer;transition:opacity .12s}
.sv-arc:hover{opacity:1;filter:drop-shadow(0 0 4px rgba(255,255,255,.6))}
.sv-drop{stroke:rgba(255,255,255,.25);stroke-dasharray:2 3}
.sv-spot{fill:rgba(240,165,0,.25);stroke:rgba(240,165,0,.6)}
.sv-lbl text{text-anchor:middle;fill:var(--white);font-family:inherit;
  paint-order:stroke;stroke:rgba(7,17,29,.85);stroke-width:3px;stroke-linejoin:round}
.sv-lbl-n{font-size:15px;font-weight:800}
.sv-lbl-s{font-size:10.5px;fill:var(--gray) !important}
.sv-setter{fill:var(--amber);stroke:#fff;stroke-width:2}
.sv-setter-l{stroke:var(--amber);stroke-width:2}
.sv-setter-spot{fill:rgba(240,165,0,.45)}
.sv-setter-t{fill:var(--amber);font-size:11px;font-weight:700}
.sv-empty{padding:60px 20px;text-align:center;color:var(--gray)}
.sv-side{display:flex;flex-direction:column;gap:12px}
.sv-legend{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 12px;
  display:flex;flex-direction:column;gap:5px;font-size:.74rem;color:var(--light)}
.sv-lg-arc{display:inline-block;width:34px;height:12px;border:2px solid var(--amber);border-bottom:none;
  border-radius:50% 50% 0 0;vertical-align:middle;margin-right:4px}
.sv-lg-arc.low{height:6px}
.sv-lg-eff{display:flex;align-items:center;gap:3px}
.sv-lg-eff i{display:inline-block;width:16px;height:8px;border-radius:2px}
.sv-note{color:var(--gray);font-size:.7rem;line-height:1.45;margin-top:3px}
.sv-pred{width:100%;border-collapse:collapse;font-size:.72rem}
.sv-pred th{text-align:left;color:var(--gray);font-weight:700;padding:4px 6px;border-bottom:1px solid var(--border)}
.sv-pred td{padding:5px 6px;border-bottom:1px solid rgba(255,255,255,.05);color:var(--light)}
.sv-pred tr.on td{background:rgba(240,165,0,.1)}
@media (max-width:1100px){ .sv-main{grid-template-columns:1fr} }
@media print{ .sv-ctl{display:none} .sv-stage{background:#fff} }
.zc-ctl .segbox{display:flex;flex-wrap:wrap;height:auto}
.zc-ctl .segbox .seg{flex:1 1 auto}
.sv-lg-dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--amber);border:2px solid #fff;vertical-align:middle;margin:0 8px 0 4px}

/* ── Nyelvváltó (rv-v105) ── */
.login-lang{display:block;margin:14px auto 0;background:none;border:1px solid var(--border);color:var(--gray);
  font-family:inherit;font-size:.74rem;font-weight:700;padding:5px 12px;border-radius:99px;cursor:pointer}
.login-lang:hover{border-color:var(--amber);color:var(--amber)}
.lang-btn{letter-spacing:.02em}

/* Összecsukható panelfejlécek (rv-v112). */
.fx-head{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;
  padding:0;cursor:pointer;color:inherit;font:inherit;text-align:left}
.fx-chev{margin-left:auto;color:var(--gray);font-size:.9rem}
.fx-head:hover .fx-chev{color:var(--amber)}

/* Feladó térben: az ívek talajra vetített nyoma (rv-v112). */
.sv-shadow{fill:none;stroke:rgba(0,0,0,.45);stroke-linecap:round;opacity:.5}
.sv-lg-shadow{display:inline-block;width:34px;height:3px;border-radius:2px;background:rgba(255,255,255,.35);
  vertical-align:middle;margin:0 6px 3px 2px}

/* rv-v116 — Liga benchmark: „Hol áll a ligában?" összegzés */
.bench-sum{background:var(--bg2);border:1px solid var(--border);border-left:3px solid var(--amber);
  border-radius:10px;padding:12px 14px;margin:8px 0 14px;display:flex;flex-direction:column;gap:7px}
.bench-sum-t{font-weight:800;font-size:.9rem;color:var(--white);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.bench-sum-n{font-size:.7rem;font-weight:600;color:var(--gray)}
.bench-sum-l{display:flex;gap:7px;align-items:flex-start;font-size:.8rem;line-height:1.5;color:var(--light)}
.bench-sum-l svg{flex-shrink:0;margin-top:3px}
.bench-sum-l.good svg{color:#4ade80}
.bench-sum-l.bad svg{color:#ff6b7a}
.bench-sum-l.dim{color:var(--gray);font-size:.74rem}
.bench-sum-l b{color:var(--white)}
.bench-sum-v{color:var(--gray);font-variant-numeric:tabular-nums;white-space:nowrap}
.bench-sum-f{font-size:.66rem;color:var(--gray);line-height:1.45}

/* rv-v117 — Meccsterv: ütőkártyák és feladókártya */
.mdc-sec>.md-sub{margin-bottom:10px}
.mdc-card{background:var(--bg2);border:1px solid var(--border);border-left:3px solid var(--amber);
  border-radius:10px;padding:12px 14px;margin:0 0 12px;display:flex;flex-direction:column;gap:9px}
.mdc-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.mdc-num{font-size:1.25rem;font-weight:900;color:var(--amber);font-variant-numeric:tabular-nums}
.mdc-name{font-size:.95rem;color:var(--white)}
.mdc-name .md-role{margin-left:6px}
.mdc-tot{margin-left:auto;font-size:.74rem;color:var(--gray);display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.mdc-sum{margin:0;font-size:.84rem;line-height:1.5;color:var(--white);font-weight:600}
.mdc-grid{display:grid;grid-template-columns:minmax(150px,210px) 1fr;gap:14px;align-items:start}
.mdc-courts svg{width:100%;max-width:230px;display:block;border-radius:8px;background:#0a1424}
.mdc-cap{font-size:.66rem;color:var(--gray);line-height:1.4;margin-top:4px;max-width:230px}
.mdc-zones{display:flex;flex-direction:column;gap:8px;min-width:0}
.mdc-zone{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:8px;padding:8px 10px;
  display:flex;flex-direction:column;gap:5px}
.mdc-zh{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;font-size:.8rem;color:var(--light)}
.mdc-zh b{color:var(--white);font-size:.86rem}
.mdc-eff{margin-left:auto;color:var(--gray);font-variant-numeric:tabular-nums}
.mdc-zl{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.76rem;color:var(--light);line-height:1.45}
.mdc-zl b{color:var(--white);font-variant-numeric:tabular-nums}
.mdc-k{min-width:58px;color:var(--gray);font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700}
.mdc-bar{display:inline-flex;width:90px;height:8px;border-radius:4px;overflow:hidden;gap:1px;flex-shrink:0;background:rgba(255,255,255,.06)}
.mdc-bar i{display:block;height:100%}
.mdc-dim{color:var(--gray);font-weight:400}
.mdc-sits{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.74rem;color:var(--light);padding-top:2px}
.mdc-sit{display:inline-flex;gap:5px;align-items:baseline}
.mdc-sub{font-size:.7rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--gray);margin-top:2px}
.mdc-srow{display:flex;flex-direction:column;gap:5px}
.mdc-sh{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.8rem;color:var(--white)}
.mdc-dist{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:5px}
.mdc-dchip{position:relative;display:flex;justify-content:space-between;align-items:center;gap:8px;overflow:hidden;
  border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:5px 8px;font-size:.76rem;color:var(--light)}
.mdc-dbar{position:absolute;left:0;top:0;bottom:0;background:rgba(240,165,0,.14);pointer-events:none}
.mdc-dt,.mdc-dchip b{position:relative}
.mdc-dchip b{color:var(--white);font-variant-numeric:tabular-nums}
.mdc-note-l{font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--gray);
  display:flex;gap:6px;align-items:center}
.mdc-note{min-height:2.2em;margin-top:0}
.mdc-note:empty:before{content:attr(data-ph)}
.mdc-reel{display:flex;flex-direction:column;gap:6px}
.mdc-reel .md-reel{margin:0}
.mdc-reel .md-clip{padding:4px 6px}
/* rv-v118: a kártya a SAJÁT szélességéhez igazodik, nem az ablakéhoz — a
   szerkesztő mobilnézete egy keskeny doboz egy széles ablakban, ott a
   @media nem kapcsolt. */
.mdc-card{container-type:inline-size}
@container (max-width:600px){
  .mdc-grid{grid-template-columns:1fr}
  .mdc-courts svg,.mdc-cap{max-width:260px;margin-left:auto;margin-right:auto}
  .mdc-cap{text-align:center}
  .mdc-tot{margin-left:0;width:100%}
  .mdc-eff{margin-left:0;width:100%}
  .mdc-zl{gap:4px 8px}
  .mdc-k{min-width:0;width:100%}
  .mdc-dist{grid-template-columns:1fr 1fr}
  .mdc-num{font-size:1.1rem}
}
@container (max-width:360px){
  .mdc-dist{grid-template-columns:1fr}
}

@media print{
  .mdc-reel{display:none!important}
  .mdc-card{break-inside:avoid;background:#fff;color:#000;border-color:#999}
}
.md-planbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 10px;padding:10px 14px;
  border:1px solid rgba(240,165,0,.45);background:rgba(240,165,0,.08);border-radius:10px;color:var(--light);font-size:.8rem}
.md-planbar>svg{color:var(--amber);flex-shrink:0}
.md-planbar>div{flex:1 1 260px;display:flex;flex-direction:column;gap:2px}
.md-planbar b{color:var(--white)}

/* rv-v118 — helycsempe: kattintható, a kiválasztott kiemelve */
.mdc-zone[data-mdc-zone]{cursor:pointer;transition:border-color .12s ease,background-color .12s ease}
.mdc-zone[data-mdc-zone]:hover{border-color:rgba(240,165,0,.55)}
.mdc-zone[data-mdc-zone]:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.mdc-zone.on{border-color:var(--amber);background:rgba(240,165,0,.10)}
.mdc-zall{flex-direction:row;align-items:baseline;gap:6px;font-size:.78rem;color:var(--white);padding:6px 10px}

/* rv-v120 — rotációs csempe a feladókártyán: kattintható, a videó arra szűr */
.md-rot-pick{cursor:pointer;transition:border-color .12s ease,background-color .12s ease}
.md-rot-pick:hover{border-color:rgba(240,165,0,.55)}
.md-rot-pick:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.md-rot-pick.on{border-color:var(--amber);background:rgba(240,165,0,.10)}
.mdc-rot-play{margin-left:6px;padding:1px 5px;border:1px solid rgba(240,165,0,.45);border-radius:5px;
  background:rgba(240,165,0,.15);color:var(--amber);font:inherit;font-size:.6rem;font-weight:700;
  cursor:pointer;display:inline-flex;align-items:center;gap:3px;vertical-align:middle}
.mdc-rot-play:hover{background:rgba(240,165,0,.3)}
@media print{ .mdc-rot-play{display:none!important} }
.mdc-rm{margin-left:6px;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--gray);cursor:pointer;padding:0}
.mdc-rm:hover{color:var(--red);border-color:var(--red)}
.mdc-add{display:flex;align-items:center;gap:8px;color:var(--gray);margin:2px 0 6px}
.mdc-add select{flex:1 1 auto;max-width:420px;background:var(--bg3);color:var(--light);border:1px dashed var(--border);
  border-radius:8px;padding:8px 10px;font-family:inherit;font-size:.8rem;cursor:pointer}
.mdc-add select:hover{border-color:var(--amber)}
@media print{ .mdc-rm,.mdc-add,.mdc-zall{display:none!important} .mdc-cv[hidden]{display:none!important} }

/* rv-v119 — feladó: felülnézet */
.sv2-front{fill:rgba(240,165,0,.07)}
.sv2-back{fill:rgba(46,196,182,.05)}
.sv2-grid{stroke:rgba(255,255,255,.12);stroke-width:1;stroke-dasharray:4 5}
.sv2-3m{stroke:rgba(255,255,255,.7);stroke-width:2}
.sv2-out{fill:none;stroke:rgba(255,255,255,.8);stroke-width:2}
.sv2-net{stroke:#fff;stroke-width:5;stroke-linecap:round}
.sv2-lbl{text-anchor:middle;fill:rgba(255,255,255,.55);font-size:11px;font-weight:800;letter-spacing:.12em;font-family:inherit}
.sv2-band{text-anchor:middle;fill:rgba(255,255,255,.45);font-size:11px;font-weight:700;letter-spacing:.06em;font-family:inherit;text-transform:uppercase}
.sv2-m{fill:rgba(255,255,255,.4);font-size:10px;font-family:inherit}
.sv2-zn{text-anchor:middle;fill:rgba(255,255,255,.10);font-size:22px;font-weight:800;font-family:inherit}
.sv2-spot{fill:rgba(240,165,0,.28);stroke:var(--amber);stroke-width:1.5}
.sv2-f{text-anchor:middle;fill:#0a1424;font-size:10px;font-weight:900;font-family:inherit;pointer-events:none}
.sv-lg-line{display:inline-block;width:34px;height:0;border-top:3px solid var(--amber);vertical-align:middle;margin-right:4px}
.sv-stage{padding:10px}
.sv-svg{max-width:620px;margin:0 auto}
/* rv-v119 — nyílalak-jelmagyarázat a Meccsterv pályarajza alatt */
.mdc-leg{display:flex;gap:4px 12px;flex-wrap:wrap;font-size:.68rem;color:var(--gray);margin-top:5px;max-width:230px}
.mdc-leg span{display:inline-flex;align-items:center;gap:5px}
.mdc-courts .mdc-leg svg{width:34px;max-width:34px;height:12px;display:inline-block;background:none;border-radius:0}
@container (max-width:600px){ .mdc-leg{max-width:260px;margin-left:auto;margin-right:auto;justify-content:center} }
.mt-ha{margin-left:6px;font-size:.66rem;color:var(--gray);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
