/* League cards: the /leagues pages (server-rendered) and the live embeds on the
   homepage and city pages (js/live-leagues.js) share this one stylesheet.
   Cards sit in a rail that fills the row when there are a few and scrolls
   sideways when there are more; each card lays out from its own width. */
.lc-rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(min(86%,330px),1fr);gap:20px;margin:0;padding:0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none}
.lc-rail::-webkit-scrollbar{display:none}
.lc-rail:focus-visible{outline:2px solid var(--green,#00C851);outline-offset:4px}
.lc-slot{container-type:inline-size;min-width:0;max-width:680px;scroll-snap-align:start}
.lc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:20px}
.lc-card{display:flex;flex-direction:column;height:100%;background:var(--surface,#121212);border:1px solid var(--border-light,rgba(189,189,189,.15));border-radius:14px;overflow:hidden}
.lc-photo{display:block;position:relative;flex:none;border-bottom:4px solid var(--green,#00C851)}
.lc-photo img{display:block;width:100%;height:auto;aspect-ratio:2/1;object-fit:cover}
.lc-body{display:flex;flex-direction:column;gap:10px;flex:1;min-width:0;padding:16px 18px 18px}
.lc-venue{margin:-4px 0 0;font-size:13px;line-height:1.4;color:var(--text-muted,#9e9e9e)}
.lc-name{margin:0;font-size:20px;line-height:1.2;letter-spacing:-.01em}
.lc-name a{color:var(--text,#fff);text-decoration:none}
.lc-name a:hover{text-decoration:underline}
.lc-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:2px 0 0;border-top:1px solid var(--border-light,rgba(189,189,189,.15));border-bottom:1px solid var(--border-light,rgba(189,189,189,.15))}
.lc-stats div{display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:2px;padding:10px 8px 10px 0}
.lc-stats div+div{padding-left:10px;border-left:1px solid var(--border-light,rgba(189,189,189,.15))}
.lc-stats dd{margin:0;font-family:Poppins,Inter,sans-serif;font-weight:700;font-size:20px;line-height:1.1;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--text,#fff);white-space:nowrap}
.lc-stats dt{font-size:12px;line-height:1.3;color:var(--text-muted,#9e9e9e)}
.lc-meta{margin:0;font-size:14px;line-height:1.5;color:var(--text-secondary,#bdbdbd)}
.lc-deadline{margin:0;font-size:14px;font-weight:600;color:var(--text,#fff)}
.lc-deadline.closed{color:var(--text-muted,#9e9e9e);font-weight:500}
.lc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:auto;padding-top:4px}
.lc-actions .btn{min-width:124px;justify-content:center;padding:10px 18px;font-size:14px}
.lc-more{font-size:14px;font-weight:600;color:var(--text-secondary,#bdbdbd);text-decoration:none}
.lc-more:hover{color:var(--text,#fff);text-decoration:underline}
@container (min-width:500px){
  .lc-card{flex-direction:row}
  .lc-photo{width:38%;border-bottom:0;border-right:4px solid var(--green,#00C851)}
  .lc-photo img{position:absolute;inset:0;height:100%;aspect-ratio:auto}
}
.lc-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:40px;margin-top:14px}
.lc-all{margin:0}
.lc-all a{font-weight:600;color:var(--text-secondary,#bdbdbd)}
.lc-all a:hover{color:var(--text,#fff)}
.lc-rail-nav{display:flex;gap:8px;margin-left:auto}
.lc-rail-nav[hidden]{display:none}
.lc-rail-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:50%;border:1px solid var(--border,rgba(189,189,189,.25));background:transparent;color:var(--text,#fff);cursor:pointer}
.lc-rail-btn:hover:not(:disabled){border-color:var(--green,#00C851)}
.lc-rail-btn:disabled{opacity:.35;cursor:default}
.lc-rail-btn svg{display:block;width:18px;height:18px}
/* Teams in a league: a crest strip on each card, and the "Who's in" board on a
   league page with one slot per team spot. */
.lc-teams{display:flex;align-items:center;gap:10px;min-width:0}
.lc-teams p{margin:0;font-size:14px;line-height:1.4;font-weight:600;color:var(--text,#fff);min-width:0}
.lc-recruit{color:var(--green-light,#75eca7)}
.lc-crests{display:flex;flex:none}
.lc-crest{width:30px;height:30px;border-radius:50%;object-fit:cover;background:#1a221d;border:2px solid var(--surface,#121212);box-shadow:0 0 0 1px var(--border-light,rgba(189,189,189,.15))}
.lc-crest+.lc-crest{margin-left:-9px}
.lt-initials{display:inline-flex;align-items:center;justify-content:center;font-family:Inter,sans-serif;font-weight:700;letter-spacing:.02em;color:#fff;background:var(--kit,#2b3a31)}
.lc-crest.lt-initials{font-size:11px}
.lt-lead{margin:0 0 20px;font-size:17px;line-height:1.6;color:var(--text-secondary,#bdbdbd)}
.lt-division{margin:28px 0 10px;font-size:19px}
.lt-board{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:12px}
.lt-slot{position:relative;display:flex;align-items:center;gap:14px;min-width:0;padding:16px;border:1px solid var(--border-light,rgba(189,189,189,.15));border-radius:14px;background:var(--surface,#121212)}
.lt-slot.is-confirmed::before{content:'';position:absolute;top:-1px;left:16px;width:36px;height:2px;background:var(--green,#00df66)}
.lt-slot>div{min-width:0}
.lt-crest{flex:none;width:56px;height:56px;border-radius:50%;object-fit:cover;background:#1a221d;box-shadow:0 0 0 1px var(--border-light,rgba(189,189,189,.15))}
.lt-crest.lt-initials{font-size:18px;background:var(--kit,#2b3a31)}
.lt-name{margin:0;font-size:16px;font-weight:650;line-height:1.3;color:var(--text,#fff);overflow-wrap:anywhere}
.lt-name a{color:var(--green-light,#75eca7);text-decoration:underline;text-underline-offset:4px}
.lt-state{margin:2px 0 0;font-size:13px;line-height:1.4;color:var(--text-muted,#9e9e9e)}
.lt-recruit{margin:6px 0 0;font-size:13px;font-weight:600;line-height:1.4;color:var(--green-light,#75eca7)}
.lt-slot.is-open{background:transparent;border-style:dashed}
.lt-slot.is-open .lt-name{font-weight:500;color:var(--text-muted,#9e9e9e)}
.lt-empty{background:transparent;box-shadow:none;border:1px dashed var(--border-light,rgba(189,189,189,.25))}
.lt-notes{margin:18px 0 0;max-width:760px;font-size:15px;line-height:1.6;color:var(--text-secondary,#bdbdbd)}
@media (max-width:640px){
  .lt-board{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .lt-slot:not(.is-open){grid-column:1/-1}
  .lt-slot.is-open{padding:12px;gap:10px}
  .lt-slot.is-open .lt-crest{width:30px;height:30px}
  .lt-slot.is-open .lt-name{font-size:14px}
}
/* Free agents: a live count on each card, and the pool panel under a league
   page's "Who's in" board. Counts only; the site never names them. */
.lc-agents{display:flex;align-items:center;gap:8px;margin:0;font-size:14px;line-height:1.4;font-weight:600;color:var(--text,#fff);text-decoration:none}
a.lc-agents:hover span:last-child{text-decoration:underline;text-underline-offset:4px}
.lc-live{flex:none;width:8px;height:8px;border-radius:50%;background:var(--green,#00C851);box-shadow:0 0 0 3px rgba(0,200,81,.18)}
.lt-agents{position:relative;margin-top:28px;padding:20px;border:1px solid var(--border-light,rgba(189,189,189,.15));border-radius:14px;background:var(--surface,#121212)}
.lt-agents::before{content:'';position:absolute;top:-1px;left:20px;width:36px;height:2px;background:var(--green,#00df66)}
.lt-agents h3{margin:0 0 6px;font-size:19px}
.lt-agents-count{margin:0;font-size:17px;line-height:1.4;font-weight:600;color:var(--text,#fff)}
.lt-roles{list-style:none;display:flex;flex-wrap:wrap;gap:6px 22px;margin:12px 0 0;padding:0;font-size:14px;color:var(--text-secondary,#bdbdbd)}
.lt-roles strong{margin-right:3px;font-family:Poppins,Inter,sans-serif;font-size:18px;font-variant-numeric:tabular-nums;color:var(--text,#fff)}
.lt-agents .lt-notes{margin-top:12px}
.lt-agents-captains{margin:10px 0 0;padding-top:12px;border-top:1px solid var(--border-light,rgba(189,189,189,.15));font-size:14px;line-height:1.55;color:var(--text-secondary,#bdbdbd)}
.lt-agents-captains a{font-weight:600;color:var(--text,#fff);text-decoration:underline;text-underline-offset:4px}
.lt-agents-join{font-weight:600;color:var(--green-light,#75eca7);text-decoration:underline;text-underline-offset:4px;white-space:nowrap}
/* Team sheet: tapping a crest on a card or a team on the board opens the
   team up close, with the way in. A bottom sheet on phones, a dialog wider. */
.lc-crest-btn{position:relative;display:inline-flex;flex:none;margin:0;padding:0;border:0;border-radius:50%;background:none;cursor:pointer;transition:transform .15s}
.lc-crest-btn+.lc-crest-btn{margin-left:-9px}
.lc-crest-btn:hover,.lc-crest-btn:focus-visible{z-index:1;transform:translateY(-2px) scale(1.08)}
.lc-crest-btn:focus-visible{outline:2px solid var(--green,#00C851);outline-offset:2px}
button.lc-recruit{margin:0;padding:0;border:0;background:none;font:inherit;color:var(--green-light,#75eca7);cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:4px}
button.lc-recruit:hover{text-decoration-style:solid}
.lt-slot.has-sheet{transition:border-color .15s,background-color .15s}
.lt-slot.has-sheet:hover{border-color:rgba(0,200,81,.45);background:rgba(0,200,81,.04)}
.lt-open{position:absolute;inset:0;z-index:1;width:100%;margin:0;padding:0;border:0;border-radius:inherit;background:none;cursor:pointer}
.lt-open:focus-visible{outline:2px solid var(--green,#00C851);outline-offset:2px}
.lt-ask{position:relative;z-index:2;display:inline-block;margin-top:8px;font-size:13px;font-weight:700;color:var(--green-light,#75eca7);text-decoration:underline;text-underline-offset:4px}
html.ts-locked{overflow:hidden}
.ts-backdrop{position:fixed;inset:0;z-index:3500;display:flex;align-items:flex-end;justify-content:center;background:rgba(0,0,0,0);transition:background-color .22s}
.ts-backdrop.is-open{background:rgba(0,0,0,.64)}
.ts-sheet{position:relative;width:100%;max-width:440px;max-height:92vh;overflow:auto;overscroll-behavior:contain;padding:30px 22px calc(22px + env(safe-area-inset-bottom));background:var(--surface,#121212);border:1px solid var(--border-light,rgba(189,189,189,.15));border-bottom:0;border-radius:20px 20px 0 0;color:var(--text,#fff);text-align:center;transform:translateY(100%);transition:transform .26s cubic-bezier(.2,.8,.2,1)}
.ts-sheet::before{content:'';position:absolute;top:-1px;left:50%;width:36px;height:2px;margin-left:-18px;background:var(--green,#00df66)}
.ts-backdrop.is-open .ts-sheet{transform:none}
@media (min-width:640px){
  .ts-backdrop{align-items:center;padding:24px}
  .ts-sheet{border-bottom:1px solid var(--border-light,rgba(189,189,189,.15));border-radius:20px;opacity:0;transform:translateY(14px) scale(.98);transition:transform .2s,opacity .2s}
  .ts-backdrop.is-open .ts-sheet{opacity:1;transform:none}
}
.ts-close{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--border,rgba(189,189,189,.25));border-radius:50%;background:transparent;color:var(--text,#fff);cursor:pointer}
.ts-close:hover{border-color:var(--green,#00C851)}
.ts-close svg{width:18px;height:18px}
.ts-crest{width:168px;height:168px;margin:4px auto 18px;overflow:hidden;border-radius:50%;background:#1a221d;box-shadow:0 0 0 1px var(--border-light,rgba(189,189,189,.15)),0 18px 44px rgba(0,0,0,.5)}
.ts-crest img{display:block;width:100%;height:100%;object-fit:cover}
.ts-crest.lt-initials{display:flex;font-size:56px;background:var(--kit,#2b3a31)}
.ts-name{margin:0;font-size:24px;line-height:1.2;letter-spacing:-.01em;overflow-wrap:anywhere}
.ts-meta{margin:6px 0 0;font-size:14px;line-height:1.5;color:var(--text-muted,#9e9e9e)}
.ts-meta .is-confirmed{color:var(--green-light,#75eca7);font-weight:600}
.ts-roster{margin:20px 0 0;text-align:left}
.ts-bar{height:8px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.08)}
.ts-bar span{display:block;height:100%;border-radius:inherit;background:var(--green,#00C851)}
.ts-roster p{margin:8px 0 0;font-size:14px;font-weight:600;line-height:1.4}
.ts-need{color:var(--green-light,#75eca7)}
.ts-lead{margin:16px 0 0;font-size:15px;line-height:1.55;color:var(--text-secondary,#bdbdbd);text-align:left}
.ts-actions{display:grid;gap:10px;margin-top:20px}
.ts-actions:empty{display:none}
.ts-actions .btn{width:100%;justify-content:center}
.ts-new{margin:2px 0 0;font-size:13px;line-height:1.5;color:var(--text-muted,#9e9e9e)}
.ts-more{display:inline-block;margin-top:16px;font-size:14px;font-weight:600;color:var(--text-secondary,#bdbdbd)}
.ts-more:hover{color:var(--text,#fff)}
@media (prefers-reduced-motion:reduce){.ts-backdrop,.ts-sheet,.lc-crest-btn{transition:none}}
/* Placeholder cards in the page HTML, shown until js/live-leagues.js swaps in
   the real ones (hidden without JavaScript by a <noscript> rule). */
.lc-loading{pointer-events:none}
.lc-loading .lc-photo{aspect-ratio:2/1;background:rgba(255,255,255,.05)}
.lc-loading .lc-body{gap:14px;min-height:366px}
.lc-loading+p{display:flex;align-items:center;min-height:40px;margin:14px 0 0}
.lc-bone{display:block;height:12px;max-width:100%;border-radius:6px;background:linear-gradient(90deg,rgba(255,255,255,.06) 0,rgba(255,255,255,.13) 50%,rgba(255,255,255,.06) 100%) 0 0/200% 100%;animation:lc-shimmer 1.6s linear infinite}
.lc-bone.is-title{height:22px;width:72%}
.lc-bone.is-stats{height:76px;border-radius:8px}
.lc-bone.is-line{width:88%;height:40px}
.lc-bone.is-short{width:46%}
.lc-bone.is-button{width:124px;height:44px;margin-top:auto;border-radius:10px}
@container (min-width:500px){
  .lc-loading .lc-photo{aspect-ratio:auto}
  .lc-loading .lc-card{min-height:370px}
  .lc-loading .lc-body{min-height:0}
}
@keyframes lc-shimmer{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.lc-bone{animation:none}}
