/* v3.9.29 — ANGLE / Broadcast identity.
   Intentionally distinct from earlier rounded card arrangements.
   All base/league/team colors are provided by existing admin configuration. */
:root {
  --angle-ink: #030811;
  --angle-grid: rgba(119,201,242,.13);
  --angle-muted: var(--league-text);
}
html, body, #app { background:var(--league-background); }
body { overflow:hidden; }
#app { isolation:isolate; }
.scene.angle-scene {
  width:100%;height:100%;
  padding:25px 38px 18px;
  display:flex;flex-direction:column;gap:15px;
  position:relative;overflow:hidden;
  color:var(--league-text);
  background:linear-gradient(165deg,var(--league-background),var(--league-surface));
  background:
    repeating-linear-gradient(116deg,transparent 0 120px,var(--angle-grid) 121px,transparent 122px 145px),
    radial-gradient(ellipse at 50% -10%, color-mix(in srgb,var(--league-accent) 14%,transparent),transparent 59%),
    linear-gradient(165deg,var(--league-background),color-mix(in srgb,var(--league-surface) 28%,#01040a));
  animation: angleStageIn .42s cubic-bezier(.16,.8,.22,1) both;
}
.scene.angle-scene::before {
  content:"";position:absolute;z-index:0;top:0;left:0;right:0;height:6px;
  background:linear-gradient(90deg,var(--league-accent) 0 59%,var(--league-secondary) 59% 72%,var(--league-surface) 72% 100%);
}
.scene.angle-scene::after { display:none; }
.angle-scene > * {position:relative;z-index:1}
/* TV broadcast identifier */
.angle-scene .angle-topbar {
  display:flex;align-items:center;justify-content:space-between;gap:30px;
  flex:0 0 106px;min-height:0;height:106px;padding:0 0 16px;
  border-bottom:2px solid color-mix(in srgb,var(--league-text) 22%,transparent);
}
.angle-broadcast-id { display:flex;align-items:center;gap:20px;min-width:0; }
.angle-slash {align-self:stretch;display:flex;align-items:center;font-weight:950;font-size:32px;letter-spacing:-.19em;color:var(--league-accent);padding-right:12px}
.angle-topbar .competition-logo {width:86px;height:86px;padding:6px;background:transparent;border:0;object-fit:contain;filter:drop-shadow(0 12px 12px #0007)}
.angle-topbar .brand-copy {display:flex;flex-direction:column;gap:2px;}
.angle-topbar .live-kicker {margin:0;color:var(--league-secondary);font-size:11px;letter-spacing:.24em;font-weight:900}
.angle-topbar .brand-title {font-size:54px;line-height:1;letter-spacing:-.055em;font-weight:950;color:var(--league-text);overflow:visible}
.brand-title-tail {font-weight:650;color:var(--angle-muted);font-size:.6em;letter-spacing:-.01em;vertical-align:15%}
.angle-header-right {height:80px;display:flex;align-items:stretch;gap:3px;flex-shrink:0}
.angle-week {display:flex;flex-direction:column;justify-content:center;min-width:165px;padding:10px 25px;background:var(--league-surface);clip-path:polygon(0 0,100% 0,calc(100% - 22px) 100%,0 100%)}
.angle-week small {font-size:10px;color:var(--angle-muted);font-weight:900;letter-spacing:.15em}
.angle-week strong {font-size:25px;font-weight:950;white-space:nowrap}
.angle-mode {display:flex;align-items:center;justify-content:center;max-width:255px;min-width:160px;padding:10px 26px 10px 12px;background:color-mix(in srgb,var(--league-accent) 17%,var(--league-surface));clip-path:polygon(18px 0,100% 0,calc(100% - 18px) 100%,0 100%);font-size:13px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;text-align:center}
.angle-topbar .live {height:100%;display:flex;align-items:center;justify-content:center;gap:10px;min-width:132px;padding:8px 15px;color:var(--league-background);background:var(--league-secondary);border:0;clip-path:polygon(17px 0,100% 0,100% 100%,0 100%);font-weight:950;font-size:21px;letter-spacing:.08em;box-shadow:none}
.angle-topbar .live-marker {background:var(--league-background);width:11px;height:11px;box-shadow:none}
/* Common scoreboard footer, broadcast strip */
.angle-scene .broadcast-footer.angle-footer {min-height:38px;flex:0 0 38px;border-top:1px solid color-mix(in srgb,var(--league-text) 20%,transparent);padding-top:9px;margin:0;align-items:center;color:var(--angle-muted);font-size:12px;letter-spacing:.13em;gap:16px}
.angle-footer span{white-space:nowrap}
.angle-footer .broadcast-footer-mid {color:var(--league-secondary);font-weight:900}
.angle-footer b {color:var(--league-accent);font-size:16px;letter-spacing:-.1em}
/* CFL: three paired diagonal wedges, each facing a central match index */
.angle-scene .angle-rail-board {display:grid;flex:1;min-height:0;grid-template-rows:repeat(3,minmax(0,1fr));gap:12px}
.angle-scene .angle-matchup-row {position:relative;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 105px minmax(0,1fr);gap:0;align-items:stretch;isolation:isolate}
.angle-row-tag {position:absolute;left:9px;top:8px;z-index:5;font-size:11px;font-weight:950;letter-spacing:.2em;color:color-mix(in srgb,var(--league-text) 66%,transparent);pointer-events:none}
.angle-matchup-row .angle-team.mini-team {
  min-height:0;min-width:0;display:grid;grid-template-rows:1fr;align-items:center;
  position:relative;overflow:hidden;isolation:isolate;
  gap:12px;padding:25px 66px 16px 30px;
  grid-template-columns:194px minmax(0,1fr);
  border:0;border-radius:0;box-shadow:none;
  color:var(--team-text,#fff);
  background:linear-gradient(105deg,
    var(--team-bg-overview-a,var(--team-primary,#223044)),
    var(--team-bg-overview-b,var(--team-secondary,#122136)));
  clip-path:polygon(0 0,calc(100% - 54px) 0,100% 50%,calc(100% - 54px) 100%,0 100%);
}
.angle-matchup-row .angle-team[data-side=away] {
  grid-template-columns:minmax(0,1fr) 194px;padding:25px 30px 16px 66px;
  clip-path:polygon(54px 0,100% 0,100% 100%,54px 100%,0 50%);
  background:linear-gradient(255deg,
    var(--team-bg-overview-a,var(--team-primary,#223044)),
    var(--team-bg-overview-b,var(--team-secondary,#122136)));
}
.angle-team.mini-team::before {content:"";position:absolute;inset:0;z-index:-2;box-shadow:none;background:linear-gradient(180deg,rgba(255,255,255,.13),transparent 36%,rgba(0,0,0,.20));border:0}
.angle-team.mini-team::after {content:"";position:absolute;z-index:-1;inset:0;width:auto;opacity:1;background:repeating-linear-gradient(116deg,transparent 0 54px,rgba(255,255,255,.035) 55px,transparent 56px 74px);box-shadow:none;border:0}
.angle-team-shade {position:absolute;z-index:0;top:0;left:0;bottom:0;width:18px;background:var(--team-primary);filter:brightness(1.65);opacity:.86;transform:skewX(-22deg)}
.angle-team[data-side=away] .angle-team-shade {left:auto;right:0;transform:skewX(22deg)}
.angle-team-logo {display:flex;align-items:center;justify-content:center;min-width:0;position:relative;z-index:2}
.angle-team.mini-team .angle-team-logo img.mini-logo,
.angle-team.mini-team .angle-team-logo .initial-logo {height:178px;width:178px;max-width:100%;min-height:0;min-width:0;margin:0;grid-row:auto;filter:drop-shadow(0 14px 15px #0008);object-fit:contain;border-radius:0;background:transparent;border:0}
.angle-team[data-side=away] .angle-team-logo {grid-column:2;grid-row:1}
.angle-team[data-side=away] .angle-team-main {grid-column:1;grid-row:1;align-items:flex-end;text-align:right}
.angle-team-main {position:relative;z-index:3;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;min-width:0}
.angle-score-caption {display:flex;gap:13px;align-items:center;font-size:13px;font-weight:900;letter-spacing:.22em;color:var(--team-text,#fff);opacity:.85}
.angle-side-number {font-size:21px;font-weight:950;color:var(--team-text,#fff);opacity:1}
.angle-team-main .score-wrap {justify-content:flex-start;max-width:100%;min-width:0}
.angle-team[data-side=away] .score-wrap{justify-content:flex-end}
.angle-team .mini-score {font-size:clamp(76px,6.4vw,125px);font-weight:950;letter-spacing:-.08em;line-height:.81;white-space:nowrap;color:var(--team-text,#fff);text-shadow:0 5px 13px #0005}
.angle-team .mini-metrics {display:flex;flex-wrap:nowrap;gap:24px;min-width:0;align-items:flex-end}
.angle-team .metric {display:flex;flex-direction:column;gap:4px;min-width:0;border:0;border-radius:0;padding:0;background:transparent}
.angle-team .metric-label {font-size:11px;letter-spacing:.16em;opacity:.74;line-height:1;color:var(--team-text,#fff)}
.angle-team .metric strong {font-size:clamp(29px,2.5vw,46px);font-weight:950;line-height:.94;color:var(--team-text,#fff)}
.angle-team .metric.win strong {font-size:clamp(26px,2.3vw,42px)}
.angle-team .team-scored {animation:none}
.angle-team.team-scored {filter:brightness(1.22)}
.angle-scene .angle-vs {position:relative;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-width:0;background:var(--league-background);box-shadow:none;border:0}
.angle-vs::before,.angle-vs::after {content:"";position:absolute;z-index:-1;left:50%;transform:translateX(-50%);width:2px;background:color-mix(in srgb,var(--league-text) 25%,transparent);height:15%;top:0}
.angle-vs::after {top:auto;bottom:0}
.angle-vs-diamond {display:grid;place-items:center;width:88px;height:88px;background:var(--league-accent);color:var(--league-background);font-weight:950;font-size:31px;letter-spacing:-.08em;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}
.angle-vs-prob {display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;padding:0 4px}
.angle-vs-percent {font-size:18px;font-weight:950;color:var(--league-text)}
.angle-vs-prob .prob-track {width:90px;height:5px;border-radius:0;background:var(--league-surface);overflow:hidden}
.angle-vs-prob .prob-home {border-radius:0;background:var(--league-secondary);height:100%}
.angle-vs-prob small {font-size:10px;letter-spacing:.16em;font-weight:900;color:var(--angle-muted)}
/* Feature: two opposing cut polygons with a slim middle live-event spine. */
.angle-scene .angle-feature {flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 252px minmax(0,1fr);gap:0;align-items:stretch}
.angle-feature .angle-feature-team.big-team {isolation:isolate;min-width:0;min-height:0;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;border:0;border-radius:0;box-shadow:none;padding:40px 55px 38px 12px;background:linear-gradient(125deg,var(--team-bg-focus-a,var(--team-primary,#223044)),var(--team-bg-focus-b,var(--team-secondary,#122136)));clip-path:polygon(0 0,calc(100% - 70px) 0,100% 50%,calc(100% - 70px) 100%,0 100%);color:var(--team-text,#fff)}
.angle-feature .angle-feature-team[data-side=away] {padding:40px 12px 38px 55px;background:linear-gradient(240deg,var(--team-bg-focus-a,var(--team-primary,#223044)),var(--team-bg-focus-b,var(--team-secondary,#122136)));clip-path:polygon(70px 0,100% 0,100% 100%,70px 100%,0 50%)}
.angle-feature-team.big-team::before {position:absolute;inset:0;z-index:-1;content:"";background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 30%,rgba(0,0,0,.12));box-shadow:none}
.angle-feature-team.big-team::after {position:absolute;inset:0;z-index:-1;content:"";background:repeating-linear-gradient(116deg,transparent 0 65px,rgba(255,255,255,.038) 66px,transparent 67px 84px)}
.angle-feature-edge {position:absolute;left:0;top:0;bottom:0;width:20px;background:var(--team-primary);filter:brightness(1.4);transform:skewX(-12deg)}
.angle-feature-team[data-side=away] .angle-feature-edge {left:auto;right:0;transform:skewX(12deg)}
.angle-big-logo {height:275px;width:100%;display:flex;align-items:center;justify-content:center;margin:0 0 24px;position:relative;z-index:2}
.angle-feature .big-team img.big-logo,.angle-feature .big-team .initial-logo {width:265px;height:265px;min-width:0;min-height:0;max-width:100%;margin:0;border:0;border-radius:0;background:transparent;object-fit:contain;filter:drop-shadow(0 22px 20px #0008)}
.angle-feature-score {display:flex;align-items:center;flex-direction:column;gap:9px;position:relative;z-index:2}
.angle-feature .big-score-label {font-size:16px;letter-spacing:.23em;color:var(--team-text);opacity:.8}
.angle-feature .big-score {font-size:clamp(136px,9.5vw,196px);line-height:.85;font-weight:950;white-space:nowrap;color:var(--team-text);letter-spacing:-.085em;text-shadow:0 8px 19px #0006}
.angle-feature .big-stats {width:80%;max-width:560px;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:28px}
.angle-feature .big-stat {padding:12px 15px;border:1px solid color-mix(in srgb,var(--team-text) 16%,transparent);border-radius:0;min-width:0;background:rgba(0,0,0,.15);text-align:left}
.angle-feature .big-stat span {font-size:12px;font-weight:900;color:var(--team-text);letter-spacing:.14em;opacity:.75}
.angle-feature .big-stat strong {margin-top:7px;font-size:clamp(32px,2.55vw,48px);color:var(--team-text);line-height:1}
.angle-feature .angle-feature-hub.focus-center {background:var(--league-background);position:relative;z-index:3;display:flex;flex-direction:column;gap:0;align-items:center;justify-content:center;padding:12px 10px}
.angle-hub-top {font-size:12px;letter-spacing:.2em;font-weight:900;color:var(--league-secondary);text-align:center;margin-bottom:20px}
.angle-feature .focus-vs {font-size:54px;font-weight:950;letter-spacing:-.05em;color:var(--league-text);line-height:1;margin-bottom:23px}
.angle-event-card.event-card {width:100%;border:0;border-radius:0;box-shadow:none;background:linear-gradient(180deg,color-mix(in srgb,var(--league-accent) 14%,var(--league-surface)),var(--league-surface));padding:17px 14px;display:flex;flex-direction:column;align-items:center;gap:12px;clip-path:polygon(0 0,100% 0,100% 94%,calc(100% - 25px) 100%,0 100%)}
.angle-event-card .event-kind {font-size:13px;color:var(--league-secondary);letter-spacing:.17em}
.angle-event-card .event-delta {font-size:58px;line-height:.85;margin:6px 0 0;font-weight:950;color:#59ecae}
.angle-event-card .event-player {font-size:23px;line-height:1.1;font-weight:900;text-align:center;color:var(--league-text);word-break:break-word;margin:2px 0 0}
.angle-event-card .event-direction {width:82px;height:42px;border:1px solid color-mix(in srgb,var(--league-accent) 40%,transparent);background:var(--league-background);border-radius:0;margin:0;font-size:22px}
.angle-event-card .event-more {width:100%;border-top:1px solid color-mix(in srgb,var(--league-text) 14%,transparent);padding-top:10px;margin:0;gap:6px}
.angle-event-card .event-more div {font-size:12px;display:flex;justify-content:space-between;color:var(--angle-muted)}
.angle-event-card .event-more strong {color:var(--league-text)}
/* LIT: three radically different horizontal survival lanes */
.angle-scene .angle-lanes.lit-grid {flex:1;min-height:0;display:grid;grid-template-columns:1fr;grid-template-rows:repeat(3,minmax(0,1fr));gap:11px}
.angle-lanes .angle-lane.status-column {display:grid;grid-template-columns:235px minmax(0,1fr);gap:0;min-height:0;min-width:0;padding:0;border:0;border-radius:0;background:var(--league-surface);overflow:hidden;position:relative;isolation:isolate;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--league-text) 8%,transparent)}
.angle-lane.status-column.safe {--lane-color:#48dd99}
.angle-lane.status-column.danger {--lane-color:var(--league-secondary)}
.angle-lane.status-column.ko {--lane-color:#f2677f}
.angle-lane-head.status-head {display:flex;flex-direction:column;gap:0;align-items:flex-start;justify-content:center;margin:0;padding:20px 35px;border:0;min-height:0;height:auto;color:var(--league-background);background:var(--lane-color);clip-path:polygon(0 0,calc(100% - 36px) 0,100% 50%,calc(100% - 36px) 100%,0 100%);position:relative;z-index:2}
.angle-lane-number {font-size:19px;font-weight:900;letter-spacing:.14em;opacity:.8;line-height:1.1}
.angle-lane-head .status-title {font-size:49px;line-height:1;letter-spacing:-.07em;font-weight:950;color:var(--league-background);margin:5px 0}
.angle-lane-head .status-count {padding:0;border:0;background:none;color:var(--league-background);font-size:14px;font-weight:950;letter-spacing:.14em}
.angle-lane-list.status-list {display:grid;grid-template-columns:repeat(var(--lane-columns),minmax(0,1fr));grid-template-rows:repeat(var(--lane-rows),minmax(0,1fr));gap:7px;margin:10px 12px 10px -6px;min-width:0;min-height:0;align-items:stretch}
.angle-lane-team.status-team {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;position:relative;min-width:0;min-height:0;margin:0;padding:12px 12px 9px 18px;border:0;border-radius:0;box-shadow:none;isolation:isolate;color:var(--team-text,#fff);clip-path:polygon(18px 0,100% 0,calc(100% - 14px) 100%,0 100%);background:linear-gradient(150deg,var(--team-bg-lit-a,var(--team-primary,#223044)),var(--team-bg-lit-b,var(--team-secondary,#122136)));}
.angle-lane-team.status-team::before {position:absolute;inset:0;z-index:-2;width:auto;content:"";background:linear-gradient(180deg,rgba(255,255,255,.13),transparent 28%,rgba(0,0,0,.13));box-shadow:none}
.angle-lane-team.status-team::after {position:absolute;inset:0;z-index:-1;content:"";background:repeating-linear-gradient(115deg,transparent 0 50px,rgba(255,255,255,.04) 51px,transparent 52px 69px)}
.angle-lane-team .status-rank {position:absolute;z-index:2;top:8px;left:22px;width:auto;height:auto;min-width:0;margin:0;padding:0;border:0;border-radius:0;background:none;color:var(--team-text);font-size:13px;font-weight:950;opacity:.78}
.angle-lane-team.status-team img.status-logo,.angle-lane-team.status-team img:not(.status-logo),.angle-lane-team.status-team .initial-logo {display:block;width:105px;height:105px;max-width:62%;min-width:0;min-height:0;object-fit:contain;margin:0;filter:drop-shadow(0 12px 13px #0007);background:transparent;border:0;border-radius:0}
.angle-lane-team .status-copy {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:0}
.angle-lane-team .status-score {font-size:clamp(41px,3.3vw,67px);line-height:.91;letter-spacing:-.075em;font-weight:950;color:var(--team-text);white-space:nowrap}
.angle-lane-team .status-projection {display:flex;align-items:center;justify-content:center;gap:7px}
.angle-lane-team .status-projection span {font-size:10px;color:var(--team-text);opacity:.8;letter-spacing:.08em}
.angle-lane-team .status-proj-number {font-size:clamp(22px,1.7vw,32px);line-height:1;color:var(--team-text);font-weight:950}
.angle-lane-empty {display:grid;place-items:center;font-size:25px;letter-spacing:.18em;font-weight:900;color:var(--angle-muted)}

/* Allocate the visual weight to available teams rather than a tiny isolated crest. */
.angle-lane.lane-duo .angle-lane-team.status-team,
.angle-lane.lane-solo .angle-lane-team.status-team {flex-direction:row;gap:25px;justify-content:center;align-items:center}
.angle-lane.lane-duo .angle-lane-team.status-team img.status-logo,
.angle-lane.lane-duo .angle-lane-team.status-team img:not(.status-logo),
.angle-lane.lane-duo .angle-lane-team.status-team .initial-logo {width:155px;height:155px;max-width:35%}
.angle-lane.lane-solo .angle-lane-team.status-team img.status-logo,
.angle-lane.lane-solo .angle-lane-team.status-team img:not(.status-logo),
.angle-lane.lane-solo .angle-lane-team.status-team .initial-logo {width:188px;height:188px;max-width:35%}
.angle-lane.lane-duo .angle-lane-team .status-copy,
.angle-lane.lane-solo .angle-lane-team .status-copy {align-items:flex-start;gap:11px}
.angle-lane.lane-duo .angle-lane-team .status-score {font-size:clamp(62px,5.2vw,103px)}
.angle-lane.lane-solo .angle-lane-team .status-score {font-size:clamp(82px,6.8vw,132px)}
.angle-lane.lane-duo .angle-lane-team .status-proj-number {font-size:35px}
.angle-lane.lane-solo .angle-lane-team .status-proj-number {font-size:43px}
.angle-lane.danger .status-title {font-size:41px;letter-spacing:-.065em}
.angle-event-card .event-direction {filter:none}
.angle-event-card .event-direction span {display:block;font-size:23px;line-height:1;color:var(--league-secondary);animation:none!important;transform:none!important;filter:none;opacity:1}

/* Fast, full-width diagonal TV wipe (the Director already controls duration). */
.angle-scene.angle-transition {position:relative;display:grid;place-items:center;padding:0;background:linear-gradient(125deg,var(--league-background),var(--league-surface));isolation:isolate}
.angle-scene.angle-transition::before {display:none}
.angle-transition .angle-wipe-left,.angle-transition .angle-wipe-right,.angle-transition .angle-wipe-stripe {position:absolute;z-index:1;inset:0;pointer-events:none}
.angle-wipe-left {background:linear-gradient(105deg,color-mix(in srgb,var(--league-accent) 38%,var(--league-background)),var(--league-background));clip-path:polygon(0 0,64% 0,44% 100%,0 100%);animation:angleWipeLeft 1.2s cubic-bezier(.14,.76,.15,1) both}
.angle-wipe-right {background:linear-gradient(285deg,color-mix(in srgb,var(--league-secondary) 36%,var(--league-surface)),var(--league-background));clip-path:polygon(65% 0,100% 0,100% 100%,45% 100%);animation:angleWipeRight 1.2s cubic-bezier(.14,.76,.15,1) both}
.angle-wipe-stripe {z-index:2;background:var(--league-accent);clip-path:polygon(51% 0,52% 0,49% 100%,48% 100%);animation:angleStreak 1.25s ease-out both}
.angle-transition-inner.transition-inner {position:relative;z-index:4;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:90%;animation:angleTitleEnter .6s .20s ease-out both}
.angle-transition-kicker {font-size:17px;font-weight:950;letter-spacing:.35em;color:var(--league-secondary);margin-bottom:30px}
.angle-transition-logo-wrap {width:320px;height:290px;display:grid;place-items:center;filter:drop-shadow(0 25px 15px #0008)}
.angle-transition .transition-logo {width:290px;height:280px;object-fit:contain;animation:angleLogoPop 1.1s cubic-bezier(.12,.9,.26,1) both;filter:none}
.angle-transition .transition-title {font-size:clamp(72px,7.4vw,135px);line-height:.91;font-weight:950;text-transform:uppercase;letter-spacing:-.065em;color:var(--league-text);margin:24px 0 26px;text-shadow:0 10px 17px #0007;animation:none}
.angle-transition-rule {width:44%;height:6px;background:linear-gradient(90deg,var(--league-accent) 0 70%,var(--league-secondary) 70% 100%);transform:skewX(-25deg)}
.angle-transition .transition-sub {font-size:32px;letter-spacing:.23em;font-weight:950;color:var(--league-text);margin-top:20px;animation:none}
.angle-transition .transition-tag {font-size:14px;letter-spacing:.22em;color:var(--league-secondary);background:none;border:0;padding:0;margin-top:26px}
@keyframes angleStageIn {from{opacity:.35;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}
@keyframes angleWipeLeft {0%{transform:translateX(-80%)}42%{transform:translateX(0)}100%{transform:translateX(-5%)}}
@keyframes angleWipeRight {0%{transform:translateX(90%)}42%{transform:translateX(0)}100%{transform:translateX(5%)}}
@keyframes angleStreak {0%{transform:translateX(-240%) skewX(-20deg);opacity:0}45%{opacity:.95}100%{transform:translateX(250%) skewX(-20deg);opacity:0}}
@keyframes angleTitleEnter {from{opacity:0;transform:translateY(36px) skewX(-7deg)}to{opacity:1;transform:translateY(0) skewX(0)}}
@keyframes angleLogoPop {0%{opacity:0;transform:scale(.6)}55%{opacity:1;transform:scale(1.06)}100%{transform:scale(1)}}
/* Tablet landscape / narrow monitor. Broadcast master unaffected. */
@media (min-width:761px) and (max-width:1400px) {
  .scene.angle-scene {height:auto;min-height:100vh;padding:15px 18px;gap:11px}
  .angle-scene .angle-topbar {flex-basis:84px;height:84px;padding-bottom:9px}
  .angle-topbar .competition-logo{width:62px;height:62px}
  .angle-topbar .brand-title{font-size:34px}
  .angle-topbar .live-kicker{font-size:8px}
  .angle-header-right {height:57px}
  .angle-week {min-width:116px;padding:8px 18px}.angle-week strong{font-size:17px}.angle-week small{font-size:8px}
  .angle-mode{min-width:95px;max-width:170px;font-size:9px;padding:7px 20px}
  .angle-topbar .live{min-width:78px;font-size:13px}
  .angle-matchup-row .angle-team.mini-team {grid-template-columns:90px minmax(0,1fr);gap:8px;padding:20px 34px 16px 14px}
  .angle-matchup-row .angle-team[data-side=away] {grid-template-columns:minmax(0,1fr) 90px;padding:20px 14px 16px 34px}
  .angle-team.mini-team .angle-team-logo img.mini-logo,.angle-team.mini-team .angle-team-logo .initial-logo {width:85px;height:85px}
  .angle-team .mini-score{font-size:clamp(48px,6.1vw,75px)}
  .angle-team .metric strong {font-size:25px}.angle-team .metric.win strong {font-size:22px}
  .angle-team .mini-metrics{gap:10px}
  .angle-scene .angle-matchup-row{grid-template-columns:minmax(0,1fr) 67px minmax(0,1fr)}
  .angle-vs-diamond{width:57px;height:57px;font-size:20px}
  .angle-vs-prob .prob-track{width:60px}.angle-vs-percent{font-size:13px}
  .angle-scene .angle-feature{grid-template-columns:minmax(0,1fr) 160px minmax(0,1fr)}
  .angle-big-logo{height:210px}.angle-feature .big-team img.big-logo,.angle-feature .big-team .initial-logo {width:185px;height:185px}
  .angle-feature .big-score{font-size:clamp(70px,8vw,115px)}
  .angle-feature .big-stats{width:90%}.angle-feature .big-stat strong{font-size:24px}.angle-feature .big-stat span{font-size:9px}
  .angle-event-card .event-delta{font-size:37px}.angle-event-card .event-player{font-size:16px}
  .angle-lanes .angle-lane.status-column{grid-template-columns:156px minmax(0,1fr)}
  .angle-lane-head.status-head{padding:12px 23px}.angle-lane-head .status-title{font-size:31px}
  .angle-lane-team.status-team img.status-logo,.angle-lane-team.status-team img:not(.status-logo),.angle-lane-team.status-team .initial-logo {width:76px;height:76px}
  .angle-lane-team .status-score{font-size:clamp(30px,3.2vw,43px)}
  .angle-lane-team .status-proj-number{font-size:21px}
  .angle-footer .broadcast-footer-mid{display:none}
}
/* Portrait and phones: native scroll instead of illegible squeezed TV view. */
@media (max-width:760px), (orientation:portrait) and (max-width:1100px) {
  html,body,#app{height:auto;min-height:100%;overflow:auto}
  .scene.angle-scene{height:auto;min-height:100vh;padding:12px 10px 14px;gap:12px;overflow:visible}
  .angle-scene .angle-topbar{flex:0 0 72px;height:72px;min-height:72px;padding-bottom:8px;gap:8px}
  .angle-broadcast-id{gap:7px}.angle-slash{display:none}.angle-topbar .competition-logo{width:45px;height:45px;padding:2px}
  .angle-topbar .live-kicker{font-size:6px;letter-spacing:.08em}.angle-topbar .brand-title{font-size:clamp(22px,7vw,30px)}.brand-title-tail{display:none}
  .angle-header-right{height:42px;gap:2px}.angle-week{min-width:65px;padding:5px 10px;clip-path:polygon(0 0,100% 0,calc(100% - 8px) 100%,0 100%)}
  .angle-week small,.angle-mode{display:none}.angle-week strong{font-size:11px}.angle-topbar .live{min-width:54px;clip-path:polygon(8px 0,100% 0,100% 100%,0 100%);font-size:10px;padding:4px;gap:4px}.angle-topbar .live-marker{width:6px;height:6px}
  .angle-scene .angle-rail-board{flex:none;grid-template-rows:auto;gap:22px}
  .angle-scene .angle-matchup-row {grid-template-columns:1fr;grid-template-rows:160px 41px 160px;gap:0}
  .angle-matchup-row .angle-team.mini-team,.angle-matchup-row .angle-team[data-side=away] {width:100%;height:160px;grid-template-columns:97px minmax(0,1fr);grid-template-rows:1fr;padding:12px 24px 11px 16px;clip-path:polygon(0 0,100% 0,calc(100% - 24px) 100%,0 100%);gap:12px}
  .angle-matchup-row .angle-team[data-side=away] {grid-template-columns:minmax(0,1fr) 97px;padding:12px 16px 11px 24px;clip-path:polygon(24px 0,100% 0,100% 100%,0 100%)}
  .angle-team.mini-team .angle-team-logo img.mini-logo,.angle-team.mini-team .angle-team-logo .initial-logo {width:87px;height:87px}
  .angle-team .mini-score{font-size:clamp(52px,13vw,75px)}.angle-team .metric strong,.angle-team .metric.win strong {font-size:clamp(22px,5.5vw,28px)}
  .angle-team .metric-label{font-size:8px}.angle-score-caption{font-size:9px}.angle-side-number{font-size:12px}
  .angle-team-main{gap:7px}.angle-team .mini-metrics{gap:15px}
  .angle-scene .angle-vs {grid-row:2;min-height:41px;height:41px;display:flex;flex-direction:row;gap:13px;justify-content:center}
  .angle-vs::before,.angle-vs::after {display:none}.angle-vs-diamond{width:37px;height:37px;font-size:14px}
  .angle-vs-prob{width:90px;gap:2px}.angle-vs-percent{font-size:12px}.angle-vs-prob .prob-track{width:75px;height:3px}.angle-vs-prob small{display:none}
  .angle-row-tag {font-size:7px;top:5px;left:6px}
  .angle-scene .angle-feature {flex:none;grid-template-columns:minmax(0,1fr);grid-template-rows:350px auto 350px;gap:0}
  .angle-feature .angle-feature-team.big-team,.angle-feature .angle-feature-team[data-side=away]{height:350px;min-height:350px;padding:18px 36px;clip-path:polygon(0 0,100% 0,calc(100% - 27px) 100%,0 100%)}
  .angle-feature .angle-feature-team[data-side=away]{clip-path:polygon(27px 0,100% 0,100% 100%,0 100%)}
  .angle-big-logo {height:128px;margin-bottom:8px}.angle-feature .big-team img.big-logo,.angle-feature .big-team .initial-logo{width:120px;height:120px}
  .angle-feature .big-score{font-size:clamp(68px,19vw,112px)}.angle-feature .big-score-label{font-size:10px}
  .angle-feature .big-stats{margin-top:10px;width:80%}.angle-feature .big-stat{padding:9px 12px}.angle-feature .big-stat strong{font-size:24px}.angle-feature .big-stat span{font-size:9px}
  .angle-feature .angle-feature-hub.focus-center {padding:14px 0;gap:5px}.angle-hub-top{margin:0;font-size:8px}.angle-feature .focus-vs{font-size:29px;margin:0}
  .angle-event-card.event-card{width:75%;padding:12px 14px}.angle-event-card .event-delta{font-size:45px}.angle-event-card .event-player{font-size:18px}
  .angle-scene .angle-lanes.lit-grid {flex:none;grid-template-rows:auto;gap:16px}
  .angle-lanes .angle-lane.status-column {grid-template-columns:1fr;grid-template-rows:70px auto;overflow:visible}
  .angle-lane-head.status-head {clip-path:polygon(0 0,100% 0,calc(100% - 24px) 100%,0 100%);padding:10px 15px;flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}
  .angle-lane-number {font-size:12px}.angle-lane-head .status-title{font-size:29px;margin:0}.angle-lane-head .status-count{font-size:10px;margin-left:auto}
  .angle-lane-list.status-list {margin:8px;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:190px;gap:7px}
  .angle-lane-team.status-team{padding:12px;min-height:190px}.angle-lane-team.status-team img.status-logo,.angle-lane-team.status-team img:not(.status-logo),.angle-lane-team.status-team .initial-logo{width:80px;height:80px}
  .angle-lane-team .status-score{font-size:clamp(35px,9vw,48px)}.angle-lane-team .status-proj-number{font-size:22px}
  .angle-scene .broadcast-footer.angle-footer {display:flex;flex-wrap:wrap;gap:5px;padding-top:8px;align-items:flex-start;height:auto;min-height:32px;flex-basis:auto;font-size:8px;letter-spacing:.03em}.angle-footer .broadcast-footer-mid{display:none}
  .angle-scene.angle-transition {height:100vh;min-height:600px;overflow:hidden}
  .angle-transition-kicker{font-size:9px;margin-bottom:16px}.angle-transition-logo-wrap{width:180px;height:180px}.angle-transition .transition-logo{width:160px;height:160px}
  .angle-transition .transition-title{font-size:clamp(40px,10vw,60px)}.angle-transition .transition-sub{font-size:19px}.angle-transition .transition-tag{font-size:9px}
}
@media (prefers-reduced-motion:reduce) {
 .angle-scene,.angle-wipe-left,.angle-wipe-right,.angle-wipe-stripe,.angle-transition-inner,.angle-transition .transition-logo {animation:none!important}
}

@media (min-width:761px) and (max-width:1400px) {
 .angle-lane.lane-duo .angle-lane-team.status-team img.status-logo,
 .angle-lane.lane-duo .angle-lane-team.status-team img:not(.status-logo),
 .angle-lane.lane-solo .angle-lane-team.status-team img.status-logo,
 .angle-lane.lane-solo .angle-lane-team.status-team img:not(.status-logo) {width:100px;height:100px}
 .angle-lane.lane-duo .angle-lane-team .status-score,.angle-lane.lane-solo .angle-lane-team .status-score{font-size:clamp(33px,4.5vw,58px)}
 .angle-lane.lane-duo .angle-lane-team .status-proj-number,.angle-lane.lane-solo .angle-lane-team .status-proj-number{font-size:25px}
 .angle-lane.danger .status-title{font-size:28px}
}
@media (max-width:760px), (orientation:portrait) and (max-width:1100px) {
 .angle-lane.lane-duo .angle-lane-team.status-team,.angle-lane.lane-solo .angle-lane-team.status-team{flex-direction:column;gap:4px}
 .angle-lane.lane-duo .angle-lane-team.status-team img.status-logo,
 .angle-lane.lane-duo .angle-lane-team.status-team img:not(.status-logo),
 .angle-lane.lane-solo .angle-lane-team.status-team img.status-logo,
 .angle-lane.lane-solo .angle-lane-team.status-team img:not(.status-logo){width:80px;height:80px;max-width:60%}
 .angle-lane.lane-duo .angle-lane-team .status-copy,.angle-lane.lane-solo .angle-lane-team .status-copy{align-items:center;gap:3px}
 .angle-lane.lane-duo .angle-lane-team .status-score,.angle-lane.lane-solo .angle-lane-team .status-score{font-size:clamp(35px,9vw,48px)}
 .angle-lane.lane-duo .angle-lane-team .status-proj-number,.angle-lane.lane-solo .angle-lane-team .status-proj-number{font-size:22px}
 .angle-lane.danger .status-title{font-size:28px}
}
/* v3.9.32 | ANGLE TV adaptive pairing.
   Important: loaded at end of angles.css, AFTER legacy styles.css.
   One recognizable matchup at every size; desktop retains TV composition. */
.angle-scene .angle-matchup-row::before {display:none}
.angle-scene .angle-vs::before,.angle-scene .angle-vs::after {display:none}
.angle-scene .angle-vs-diamond {
  transform:none;position:relative;z-index:3;
  color:var(--league-background);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);
  font-size:clamp(22px,1.6vw,34px);font-weight:950;letter-spacing:0;
  background:var(--league-accent);
  border:0;box-shadow:none;
}
.angle-scene .angle-vs-diamond::before {content:none!important}
.angle-scene .angle-matchup-row {grid-template-columns:minmax(0,1fr) 160px minmax(0,1fr);gap:0;}
.angle-scene .angle-vs {
  display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--league-surface) 30%,var(--league-background)),var(--league-background));
  border-inline:1px solid color-mix(in srgb,var(--league-text) 10%,transparent);
  min-width:0;
}
.angle-scene .angle-vs-prob {
  width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:11px;padding:13px 10px 15px;
  background:color-mix(in srgb,var(--league-surface) 83%,transparent);
  border-block:1px solid color-mix(in srgb,var(--league-text) 12%,transparent);
}
.angle-scene .angle-vs-prob small {display:block;order:0;color:var(--league-secondary);font-size:11px;letter-spacing:.15em;line-height:1;font-weight:950}
.angle-scene .angle-edge-values {order:1;display:flex;align-items:baseline;justify-content:center;gap:8px;white-space:nowrap;width:100%;font-variant-numeric:tabular-nums}
.angle-scene .angle-edge-values strong {font-size:21px;font-weight:950;color:var(--league-text);letter-spacing:-.07em;line-height:1}
.angle-scene .angle-edge-values span {font-size:12px;font-weight:900;opacity:.5}
.angle-scene .angle-vs-prob .prob-track {order:2;display:block;width:100%;height:8px;margin:0;background:color-mix(in srgb,var(--league-secondary) 68%,#070b12);overflow:hidden}
.angle-scene .angle-vs-prob .prob-home {background:var(--league-accent);height:100%;border-radius:0}
/* Stop the old rotated VS pseudo-label from doubling over the new diamond. */
.angle-scene .angle-vs-diamond {font-style:normal}
/* Team identifiers are useful on handheld, but unnecessary on a room-scale TV. */
.angle-scene .angle-team-tag,.angle-scene .angle-big-tag {display:none}
.angle-scene .angle-team-logo,.angle-scene .angle-big-logo {display:flex;align-items:center;justify-content:center;min-width:0}
.angle-scene .angle-team-main {min-width:0}
.angle-scene .angle-team .mini-score,.angle-scene .angle-feature .big-score {font-variant-numeric:tabular-nums}
.angle-scene .angle-team .metric strong {white-space:nowrap}
.angle-scene .angle-event-card .event-player {overflow-wrap:anywhere}
/* Classic laptop view. This viewport range is distinct from 4K master. */
@media (min-width:761px) and (max-width:1400px) and (orientation:landscape) {
  .angle-scene .angle-matchup-row {grid-template-columns:minmax(0,1fr) 118px minmax(0,1fr)}
  .angle-scene .angle-vs {gap:9px}
  .angle-scene .angle-vs-diamond {width:62px;height:62px;font-size:22px}
  .angle-scene .angle-vs-prob {gap:7px;padding:9px 6px 10px}
  .angle-scene .angle-vs-prob small {font-size:9px}
  .angle-scene .angle-edge-values {gap:4px}
  .angle-scene .angle-edge-values strong {font-size:16px}
  .angle-scene .angle-vs-prob .prob-track {height:6px}
}
/* The smartphone layout uses two compact opponents on the same line.
   WIN EDGE is a single readable band BELOW the two opponents. */
@media (max-width:760px), (orientation:portrait) and (max-width:1100px), (max-height:540px) and (max-width:1000px) {
  html,body,#app {min-height:100%;height:auto;overflow-x:hidden;overflow-y:auto}
  .scene.angle-scene {height:auto;min-height:100dvh;overflow:visible;padding:12px 10px 18px;gap:11px}
  .angle-scene .angle-topbar {
    display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;
    height:auto;min-height:56px;flex:0 0 auto;padding:0 0 9px;gap:8px;
  }
  .angle-scene .angle-broadcast-id {min-width:0;max-width:68%;gap:8px}
  .angle-scene .angle-topbar .competition-logo {width:42px;height:42px;flex:0 0 42px}
  .angle-scene .angle-topbar .brand-copy {gap:0}
  .angle-scene .angle-topbar .brand-title {font-size:clamp(25px,6.5vw,32px);white-space:nowrap}
  .angle-scene .angle-topbar .live-kicker {font-size:7px;letter-spacing:.12em}
  .angle-scene .angle-header-right {height:35px;width:auto;display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto;flex:0 0 auto}
  .angle-scene .angle-week {min-width:61px;padding:5px 8px;height:35px}
  .angle-scene .angle-week strong {font-size:12px}
  .angle-scene .angle-topbar .live {width:auto;min-width:52px;height:35px;font-size:11px;padding:4px 8px}
  .angle-scene .angle-mode {display:none}
  .angle-scene .angle-rail-board {flex:0 0 auto;display:grid;grid-template-rows:none;gap:14px}
  .angle-scene .angle-matchup-row {
    position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    grid-template-rows:auto 46px;grid-template-areas:"home away" "edge edge";
    gap:0;min-width:0;height:auto;padding:0;isolation:isolate;
    background:color-mix(in srgb,var(--league-surface) 35%,var(--league-background));
    border-bottom:2px solid color-mix(in srgb,var(--league-accent) 36%,var(--league-surface));
  }
  .angle-scene .angle-matchup-row > .angle-team[data-side="home"] {grid-area:home}
  .angle-scene .angle-matchup-row > .angle-team[data-side="away"] {grid-area:away}
  .angle-scene .angle-matchup-row .angle-team.mini-team,
  .angle-scene .angle-matchup-row .angle-team[data-side="away"] {
    position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;
    height:164px;min-height:164px;max-height:164px;width:100%;min-width:0;
    gap:4px;padding:11px 8px 10px;
    background:linear-gradient(130deg,var(--team-bg-mobile-a,var(--team-primary,#223044)),var(--team-bg-mobile-b,var(--team-secondary,#122136)));
    clip-path:none!important;border:0;
  }
  .angle-scene .angle-matchup-row .angle-team[data-side="home"] {
    clip-path:polygon(0 0,100% 0,calc(100% - 12px) 100%,0 100%)!important;
    padding-right:16px;
  }
  .angle-scene .angle-matchup-row .angle-team[data-side="away"] {
    clip-path:polygon(12px 0,100% 0,100% 100%,0 100%)!important;
    padding-left:16px;
  }
  .angle-scene .angle-matchup-row .angle-team::before {box-shadow:none}
  .angle-scene .angle-team-shade {width:5px}
  .angle-scene .angle-team-logo {display:flex;flex-direction:row;justify-content:center;gap:8px;align-items:center;min-height:56px;width:100%;max-width:100%}
  .angle-scene .angle-team.mini-team .angle-team-logo img.mini-logo,
  .angle-scene .angle-team.mini-team .angle-team-logo .initial-logo {width:52px;height:52px;flex:0 0 52px;max-width:52px;object-fit:contain}
  .angle-scene .angle-team-tag {
    display:block;min-width:0;max-width:calc(100% - 60px);padding:3px 4px;
    font-size:clamp(9px,2.7vw,11px);font-weight:950;line-height:1.12;
    letter-spacing:.025em;text-align:left;overflow-wrap:anywhere;
    background:transparent;border:0;opacity:.96;
  }
  .angle-scene .angle-team-main {
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;width:100%;padding:0!important;text-align:center;
  }
  .angle-scene .angle-team[data-side=away] .angle-team-main {align-items:center;text-align:center;grid-column:auto;grid-row:auto}
  .angle-scene .angle-score-caption {display:none}
  .angle-scene .angle-team-main .score-wrap,
  .angle-scene .angle-team[data-side=away] .score-wrap {justify-content:center;width:100%}
  .angle-scene .angle-team .mini-score {
    font-size:clamp(34px,10.3vw,46px);line-height:1;font-weight:950;
    letter-spacing:-.075em;font-variant-numeric:tabular-nums;text-shadow:0 2px 6px #0008;
  }
  .angle-scene .angle-team .mini-metrics {
    display:flex;flex-wrap:nowrap;align-items:baseline;justify-content:center;
    width:100%;gap:10px;min-width:0;
  }
  .angle-scene .angle-team .metric {min-width:0;display:flex;flex-direction:row;align-items:baseline;gap:3px;padding:0;background:transparent}
  .angle-scene .angle-team .metric.win {display:none} /* The shared WIN EDGE band replaces duplicated micro-metrics. */
  .angle-scene .angle-team .metric-label {font-size:8px;letter-spacing:.05em;white-space:nowrap}
  .angle-scene .angle-team .metric strong {font-size:17px;line-height:1}
  .angle-scene .angle-vs {
    grid-area:edge;position:relative;display:grid;grid-template-columns:64px 1fr;
    align-items:center;justify-items:center;gap:8px;min-width:0;
    height:46px;min-height:46px;padding:0 8px;
    border:0;background:linear-gradient(90deg,var(--league-background),color-mix(in srgb,var(--league-surface) 85%,var(--league-background)),var(--league-background));
    box-shadow:none;
  }
  .angle-scene .angle-vs-diamond {
    display:grid;place-items:center;width:42px;height:42px;min-width:42px;
    font-size:14px;line-height:1;letter-spacing:0;margin:0;
    clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);
  }
  .angle-scene .angle-vs-prob {
    display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 6px;
    align-items:center;justify-items:start;column-gap:8px;row-gap:3px;
    height:auto;min-width:0;width:100%;padding:0;border:0;background:none;
  }
  .angle-scene .angle-vs-prob small {font-size:10px;line-height:1;letter-spacing:.11em;white-space:nowrap;grid-row:1;grid-column:1;order:0}
  .angle-scene .angle-edge-values {grid-column:2;grid-row:1;order:1;display:flex;gap:5px;justify-content:flex-start}
  .angle-scene .angle-edge-values strong {font-size:15px;line-height:1;letter-spacing:-.045em}
  .angle-scene .angle-edge-values span {font-size:11px}
  .angle-scene .angle-vs-prob .prob-track {grid-column:1 / -1;grid-row:2;order:2;height:6px;width:100%}
  .angle-scene .angle-feature {flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:258px auto;grid-template-areas:"home away" "hub hub";gap:0;min-height:0}
  .angle-scene .angle-feature > .angle-feature-team[data-side=home] {grid-area:home}
  .angle-scene .angle-feature > .angle-feature-team[data-side=away] {grid-area:away}
  .angle-scene .angle-feature .angle-feature-team.big-team,
  .angle-scene .angle-feature .angle-feature-team[data-side=away] {
    height:258px;min-height:258px;max-height:258px;width:100%;min-width:0;
    display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;
    padding:12px 9px 10px;clip-path:none!important;
  }
  .angle-scene .angle-feature .angle-feature-team[data-side=home] {clip-path:polygon(0 0,100% 0,calc(100% - 13px) 100%,0 100%)!important;padding-right:19px}
  .angle-scene .angle-feature .angle-feature-team[data-side=away] {clip-path:polygon(13px 0,100% 0,100% 100%,0 100%)!important;padding-left:19px}
  .angle-scene .angle-big-logo {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;height:auto;min-height:84px;width:100%;margin:0}
  .angle-scene .angle-feature .big-team img.big-logo,.angle-scene .angle-feature .big-team .initial-logo {width:76px;height:76px;min-width:0;min-height:0}
  .angle-scene .angle-big-tag {display:block;font-size:10px;letter-spacing:.04em;min-height:0;padding:3px 5px;max-width:100%}
  .angle-scene .angle-feature-score {gap:6px}
  .angle-scene .angle-feature .big-score-label {display:none}
  .angle-scene .angle-feature .big-score {font-size:clamp(40px,11vw,54px);line-height:1}
  .angle-scene .angle-feature .big-stats {width:100%;margin-top:5px;display:flex;flex-direction:column;gap:5px}
  .angle-scene .angle-feature .big-stat {padding:5px 7px;display:flex;align-items:baseline;justify-content:space-between;gap:5px}
  .angle-scene .angle-feature .big-stat span {font-size:8px;letter-spacing:.04em}
  .angle-scene .angle-feature .big-stat strong {font-size:17px;margin:0}
  .angle-scene .angle-feature .angle-feature-hub.focus-center {
    grid-area:hub;position:relative;min-height:0;padding:9px 0 0;display:grid;grid-template-columns:76px 1fr;grid-template-rows:auto;
    align-items:start;justify-items:center;gap:10px;order:initial;
  }
  .angle-scene .angle-feature-hub::before,.angle-scene .angle-feature-hub::after {display:none}
  .angle-scene .angle-feature .focus-vs {grid-column:1;grid-row:1;font-size:30px;margin:5px 0 0}
  .angle-scene .angle-feature .angle-hub-top {display:none}
  .angle-scene .angle-event-card.event-card {grid-column:2;grid-row:1;width:100%;min-height:0;padding:10px;gap:6px}
  .angle-scene .angle-event-card .event-delta {font-size:36px}
  .angle-scene .angle-event-card .event-player {font-size:18px;min-height:0;margin:0}
  .angle-scene .angle-event-card .event-more {gap:5px}
  .angle-scene .angle-event-card .event-more div {font-size:11px}
  .angle-scene .angle-lanes.lit-grid {grid-template-rows:auto;gap:10px}
  .angle-scene .angle-lane-list.status-list {margin:8px;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:140px;grid-template-rows:none;gap:7px}
  .angle-scene .angle-lane-team.status-team {min-height:140px;padding:10px}
  .angle-scene .angle-lane-team.status-team img.status-logo,.angle-scene .angle-lane-team.status-team img:not(.status-logo),.angle-scene .angle-lane-team.status-team .initial-logo {width:65px;height:65px}
  .angle-scene .angle-lane-team .status-score {font-size:clamp(29px,7.5vw,39px)}
  .angle-scene .angle-lane-team .status-proj-number {font-size:18px}
  .angle-scene .broadcast-footer.angle-footer {flex-basis:auto;height:auto;min-height:28px;flex-wrap:wrap;font-size:8px;padding:8px 0 0}
}
/* Landscape phones: preserve pair grouping and use compact columns rather than a long TV master. */
@media (max-height:540px) and (orientation:landscape) and (max-width:1000px) {
  .angle-scene .angle-topbar {min-height:48px}
  .angle-scene .angle-rail-board {grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:8px}
  .angle-scene .angle-matchup-row {grid-template-rows:auto 42px}
  .angle-scene .angle-matchup-row .angle-team.mini-team,.angle-scene .angle-matchup-row .angle-team[data-side=away] {height:154px;min-height:154px;max-height:154px;padding:9px 4px}
  .angle-scene .angle-team-logo {flex-direction:column;gap:3px}
  .angle-scene .angle-team-tag {max-width:100%;text-align:center;font-size:9px}
  .angle-scene .angle-team .mini-score {font-size:clamp(28px,4.3vw,40px)}
  .angle-scene .angle-team .metric strong {font-size:13px}
  .angle-scene .angle-vs {grid-template-columns:34px 1fr;gap:4px;padding:0 4px}
  .angle-scene .angle-vs-diamond {width:30px;height:30px;min-width:30px;font-size:11px}
  .angle-scene .angle-edge-values strong {font-size:12px}
  .angle-scene .angle-vs-prob small {font-size:8px}
}

/* Last-resort compatibility with older responsive !important rules from styles.css. */
.angle-scene .angle-edge-values strong {font-size:clamp(13px,1.17vw,18px);letter-spacing:-.06em;}
@media (max-width:760px), (orientation:portrait) and (max-width:1100px), (max-height:540px) and (max-width:1000px) {
  .angle-scene .angle-feature {display:grid !important;}
  .angle-scene .angle-feature > .angle-feature-team[data-side=home],
  .angle-scene .angle-feature > .angle-feature-team[data-side=away],
  .angle-scene .angle-feature > .angle-feature-hub {order:0 !important;}
  .angle-scene .angle-lane-list.status-list {grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .angle-scene .angle-lane.lane-solo .angle-lane-list {grid-template-columns:minmax(0,1fr) !important;}
}
/* Focus numeric guard: earlier global styles declared 40px !important, overflowing phone wedges. */
@media (max-width:760px), (orientation:portrait) and (max-width:1100px), (max-height:540px) and (max-width:1000px) {
  .angle-scene .angle-feature .big-stat strong.big-proj-number,
  .angle-scene .angle-feature .big-stat strong.big-win-number {
    font-size:clamp(16px,4.6vw,19px) !important;
    letter-spacing:-.045em;line-height:1;margin:0 !important;
    white-space:nowrap;
  }
  .angle-scene .angle-feature .big-stat span {line-height:1.15;white-space:normal;max-width:50%}
  .angle-scene .angle-feature .big-stat {min-height:36px;align-items:center}
  .angle-scene .angle-feature .big-score {font-size:clamp(37px,10.7vw,51px)}
}

/* Contain fractional-pixel transforms without creating a horizontal scrollbar. */
html,body {overflow-x:hidden}

/* ====================================================================
   v3.9.33 — seamless ANGLE TV VS / WIN EDGE spine, desktop + handheld.
   The center bridge belongs to the matchup, not a floating statistics card.
   All accents inherit league and validated team palettes from the live feed.
   ==================================================================== */
.angle-scene .angle-matchup-row {
  --match-home: var(--league-accent);
  --match-away: var(--league-secondary);
}
.angle-scene .angle-matchup-row .angle-vs {
  position:relative;
  isolation:isolate;
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:16px 10px;
  border:0;
  box-shadow:none;
  background:transparent;
}
.angle-scene .angle-matchup-row .angle-vs::before,
.angle-scene .angle-matchup-row .angle-vs::after {
  content:"";
  display:block;
  position:absolute;
  z-index:0;
  left:0;right:0;
  width:auto;
  height:4px;
  transform:none;
  pointer-events:none;
  background:transparent;
  display:none;
}
.angle-scene .angle-matchup-row .angle-vs::before {top:0;bottom:auto;}
.angle-scene .angle-matchup-row .angle-vs::after {top:auto;bottom:0;}
.angle-scene .angle-matchup-row .angle-vs > * {position:relative;z-index:1;}
.angle-scene .angle-matchup-row .angle-vs-diamond {
  flex:none;
  width:76px;
  height:76px;
  display:grid;
  place-items:center;
  margin:0;
  border:0;
  box-shadow:none;
  font-size:27px;
  font-weight:950;
  letter-spacing:0;
  line-height:1;
  color:var(--league-accent);
  background:transparent;
  clip-path:none;
}
.angle-scene .angle-matchup-row .angle-vs-prob {
  flex:none;
  width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:auto auto auto;
  justify-items:stretch;
  align-items:center;
  gap:8px;
  padding:0 2px;
  border:0;
  background:none;
  box-shadow:none;
}
.angle-scene .angle-matchup-row .angle-vs-prob small {
  display:block;
  order:initial;
  grid-column:1;
  grid-row:1;
  font-size:11px;
  font-weight:950;
  line-height:1.05;
  letter-spacing:.15em;
  color:var(--league-secondary);
  text-align:center;
  white-space:nowrap;
}
.angle-scene .angle-matchup-row .angle-edge-values {
  order:initial;
  grid-column:1;
  grid-row:2;
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:3px;
  width:100%;
  min-width:0;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.angle-scene .angle-matchup-row .angle-edge-values strong {
  font-size:clamp(13px,1.18vw,19px);
  font-weight:950;
  letter-spacing:-.06em;
  line-height:1;
  color:var(--league-text);
}
.angle-scene .angle-matchup-row .angle-edge-values span {
  flex:none;
  font-size:12px;
  opacity:.45;
}
.angle-scene .angle-matchup-row .angle-vs-prob .prob-track {
  order:initial;
  grid-column:1;
  grid-row:3;
  position:relative;
  width:100%;
  height:9px;
  margin:0;
  border:0;
  border-radius:0;
  box-shadow:none;
  background:var(--match-away-light,var(--match-away,#d8ae6a));
  overflow:hidden;
}
.angle-scene .angle-matchup-row .angle-vs-prob .prob-home {
  height:100%;
  background:var(--match-home-light,var(--match-home,#50c6f7));
  box-shadow:none;
  border-radius:0;
}
/* Laptop bridge: enough breathing room even when both percentages have two digits. */
@media (min-width:761px) and (max-width:1400px) and (orientation:landscape) {
  .angle-scene .angle-matchup-row .angle-vs {padding:12px 7px;gap:8px;}
  .angle-scene .angle-matchup-row .angle-vs-diamond {width:54px;height:54px;font-size:19px;}
  .angle-scene .angle-matchup-row .angle-vs-prob {gap:6px;padding:0;}
  .angle-scene .angle-matchup-row .angle-vs-prob small {font-size:9px;letter-spacing:.10em;}
  .angle-scene .angle-matchup-row .angle-edge-values strong {font-size:clamp(12px,1.2vw,16px);}
  .angle-scene .angle-matchup-row .angle-vs-prob .prob-track {height:7px;}
}
/* Phone bridge: one seamless strip directly under two adjacent opponents. */
@media (max-width:760px), (orientation:portrait) and (max-width:1100px), (max-height:540px) and (max-width:1000px) {
  .angle-scene .angle-matchup-row {
    grid-template-rows:auto 54px;
    grid-template-areas:"home away" "edge edge";
  }
  .angle-scene .angle-matchup-row .angle-vs {
    grid-area:edge;
    display:grid;
    grid-template-columns:46px minmax(0,1fr);
    grid-template-rows:1fr;
    justify-items:stretch;
    align-items:center;
    gap:8px;
    width:100%;
    min-width:0;
    height:54px;
    min-height:54px;
    padding:6px 10px;
    background:transparent;
  }
  .angle-scene .angle-matchup-row .angle-vs::before {height:3px;}
  .angle-scene .angle-matchup-row .angle-vs::after {height:2px;}
  .angle-scene .angle-matchup-row .angle-vs-diamond {
    grid-column:1;
    grid-row:1;
    justify-self:center;
    width:37px;
    height:37px;
    min-width:37px;
    margin:0;
    font-size:13px;
  }
  .angle-scene .angle-matchup-row .angle-vs-prob {
    grid-column:2;
    grid-row:1;
    min-width:0;
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    grid-template-rows:auto 9px;
    align-items:center;
    justify-items:stretch;
    column-gap:6px;
    row-gap:5px;
    padding:0;
  }
  .angle-scene .angle-matchup-row .angle-vs-prob small {
    grid-column:1;
    grid-row:1;
    justify-self:start;
    align-self:center;
    font-size:10px;
    letter-spacing:.08em;
    line-height:1;
    margin:0;
  }
  .angle-scene .angle-matchup-row .angle-edge-values {
    grid-column:2;
    grid-row:1;
    justify-content:flex-end;
    align-items:baseline;
    gap:5px;
    min-width:0;
    width:auto;
  }
  .angle-scene .angle-matchup-row .angle-edge-values strong {
    font-size:clamp(13px,3.8vw,16px);
    letter-spacing:-.055em;
  }
  .angle-scene .angle-matchup-row .angle-edge-values span {font-size:10px;}
  .angle-scene .angle-matchup-row .angle-vs-prob .prob-track {
    grid-column:1 / -1;
    grid-row:2;
    width:100%;
    height:8px;
  }
  .angle-scene .angle-matchup-row .angle-vs-prob .prob-home {height:100%;}
}
@media (max-width:359px) {
  .angle-scene .angle-topbar .live-kicker {display:none;}
  .angle-scene .angle-topbar {flex-wrap:nowrap;gap:4px;}
  .angle-scene .angle-broadcast-id {max-width:55%;gap:5px;}
  .angle-scene .angle-header-right {margin-left:auto;gap:3px;}
  .angle-scene .angle-topbar .competition-logo {width:38px;height:38px;flex-basis:38px;}
  .angle-scene .angle-matchup-row .angle-vs {grid-template-columns:39px minmax(0,1fr);gap:5px;padding:6px 7px;}
  .angle-scene .angle-matchup-row .angle-vs-diamond {width:33px;height:33px;min-width:33px;font-size:12px;}
  .angle-scene .angle-matchup-row .angle-vs-prob {column-gap:4px;}
  .angle-scene .angle-matchup-row .angle-vs-prob small {font-size:9px;letter-spacing:0;}
  .angle-scene .angle-matchup-row .angle-edge-values {gap:3px;}
  .angle-scene .angle-matchup-row .angle-edge-values strong {font-size:13px;}
  .angle-scene .angle-team-tag {
    font-size:8px;
    letter-spacing:-.01em;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
}

/* v3.9.35 / The VS and WIN EDGE spine has NO independent panel or diamond fill.
   Keep the text and two-color probability track visible against the stage itself. */
.angle-scene .angle-matchup-row .angle-vs,
.angle-scene .angle-matchup-row .angle-vs-prob,
.angle-scene .angle-matchup-row .angle-vs-diamond {
  background:transparent;
  border:0;
  box-shadow:none;
  backdrop-filter:none;
}
.angle-scene .angle-matchup-row .angle-vs-diamond {
  clip-path:none;
  color:var(--league-accent);
  text-shadow:0 2px 10px color-mix(in srgb,var(--league-accent) 24%,transparent);
}
.angle-scene .angle-matchup-row .angle-vs::before,
.angle-scene .angle-matchup-row .angle-vs::after { content:none;display:none; }

/* v3.9.52: CSS color-mix unsupported by some Fire TV Silk builds.
   Team wedges, LIT cards, focus panels and win-edge segments above now use
   precomputed color variables instead of color-mix. */
