.satin-competition{background:var(--satin-shell);color:var(--classic-ink);font-family:var(--classic-display);font-size:var(--classic-type-label);line-height:1.3;min-height:0}
.competition-header{position:relative;z-index:30;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:12px;align-items:center;flex:none;padding:calc(12px + var(--safe-area-top,0px)) 16px 12px;background:#137df0;color:white}
.competition-header h1{font:900 var(--classic-type-title)/1.2 var(--classic-display);text-align:center;margin:0;overflow-wrap:anywhere}
.competition-header .classic-round{width:44px;height:44px;padding:0;flex:none}
.competition-body{flex:1;min-height:0;overflow-y:auto;padding-bottom:calc(16px + var(--safe-area-bottom,0px))}
.satin-competition .satin-section-hero{position:relative;z-index:1;margin:0 16px 12px;flex:none}
.satin-competition .satin-section-scene{height:190px;min-height:0;background-position:center 45%}
.satin-competition .satin-section-banner{padding:12px 16px;background:var(--classic-blue)}
.satin-competition .satin-section-title{font-size:var(--classic-type-title)}
.satin-competition .satin-section-banner p{color:#e2f4ff;font-size:var(--classic-type-label);margin-top:4px}
.competition-league-summary{padding:0!important;background:none!important;border:0!important;box-shadow:none!important;text-align:left}
.competition-league-summary .text-gray-900,.competition-league-summary .text-yellow-700,.competition-league-summary .text-gray-400{color:white!important}
.competition-league-summary .whitespace-nowrap{white-space:normal}
.competition-tabs{display:flex;gap:6px;margin:14px 16px;padding:5px;background:#0d64d3;border-radius:20px}
.competition-tabs button{flex:1;min-width:0;min-height:48px;padding:9px 5px;border:0;border-radius:15px;background:var(--satin-surface)!important;color:var(--classic-ink);font:900 var(--classic-type-label)/1.25 var(--classic-display);text-shadow:none!important;overflow-wrap:anywhere;box-shadow:var(--classic-inner)}
.competition-tabs button[aria-pressed=true]{background:var(--classic-green)!important;color:#fff}
.competition-list{position:relative;min-width:0}
.satin-competition .competition-action{background:var(--classic-green)!important;border:0;border-radius:19px;min-height:50px;padding:12px;box-shadow:var(--classic-inner)!important;font:900 var(--classic-type-action)/1.25 var(--classic-display);letter-spacing:0;text-transform:none;text-shadow:none!important}
.satin-competition button:disabled{opacity:.45;cursor:not-allowed}
.satin-competition .competition-action>span{flex-wrap:wrap}
.satin-competition .text-xs,.satin-competition .text-sm{font-size:var(--classic-type-body);line-height:1.4}
.satin-competition .text-base{font-size:var(--classic-type-label);font-weight:900}
.satin-competition .text-lg{font-size:var(--classic-type-section)}
.satin-competition .text-2xl{font-size:var(--classic-type-title)}
.satin-competition .uppercase{text-transform:none;letter-spacing:0}
.satin-competition :is(.text-gray-900,.text-gray-800,.text-gray-700){color:var(--classic-ink)}
.satin-competition :is(.text-gray-400,.text-gray-500,.text-gray-600){color:#527397}
.satin-competition .drop-shadow{filter:none}
.satin-competition .competition-ranking-row,.satin-competition .competition-season-row{background:var(--satin-surface)!important;border:0!important;border-radius:22px;box-shadow:var(--classic-inner)!important;min-height:82px}
.satin-competition .competition-ranking-row.is-self,.satin-competition .competition-season-row.is-self{background:var(--classic-green)!important;color:#124a35}
.satin-competition .is-self :is(.text-gray-400,.text-gray-900,.text-yellow-600){color:#124a35}
.competition-ranking-row:not(.league-player-row)>div:first-child{border-radius:50%;box-shadow:var(--classic-inner)}
.competition-ranking-row:not(.league-player-row)>div:nth-child(2){border-radius:16px;background:#a9e4ff;border-color:#4ccaff!important}
.competition-ranking-row:not(.league-player-row)>div:last-child>div{border-radius:16px;background:#dbeaff!important;border:0!important}
.competition-sticky{position:sticky;bottom:-16px;margin-top:12px}
.satin-competition .competition-match{background:var(--satin-surface)!important;border-radius:22px;box-shadow:var(--classic-inner)!important}
.satin-competition .competition-match>div{background:none!important;border:0!important}
.satin-competition .competition-match [style*="box-shadow"]{box-shadow:var(--classic-inner)!important}
.competition-event-summary{border-radius:22px!important;box-shadow:var(--classic-inner)!important}
.competition-info{background:var(--satin-shell)}
.competition-info section{border-radius:24px!important;box-shadow:var(--classic-inner)!important}
.competition-info h2{font:900 var(--classic-type-section)/1.25 var(--classic-display)}
.competition-info p{font:700 var(--classic-type-body)/1.5 var(--classic-display)}
.competition-info .justify-between{gap:12px;flex-wrap:wrap}
.satin-competition .competition-empty{background:var(--satin-surface);border-radius:24px;padding:24px}
@media(min-width:700px){.competition-body{padding-left:max(0px,calc((100% - 720px)/2));padding-right:max(0px,calc((100% - 720px)/2))}.satin-competition .satin-section-scene{height:240px}}
@media(max-width:360px){.competition-header{padding-left:12px;padding-right:12px}.competition-ranking-row{gap:6px!important;padding:10px 8px!important}.competition-ranking-row:not(.league-player-row)>div:first-child{width:28px;height:28px}.competition-ranking-row:not(.league-player-row)>div:nth-child(2){width:36px;height:40px}.competition-ranking-row:not(.league-player-row)>div:last-child>div{padding:5px 6px}.satin-competition .satin-section-scene{height:165px}}
.satin-competition .satin-section-scene{background-size:cover;border-radius:26px 26px 18px 18px;padding:0}
.satin-competition .satin-section-banner{width:92%;margin:-22px auto 0;border:3px solid #ffce45;border-radius:20px}
.satin-competition .competition-season-row:not(.league-player-row)>div:last-child>div:last-child{background:#dbeaff!important;border-radius:16px}
.satin-competition .competition-season-row .rounded-full{border-radius:16px;border-color:#4ccaff!important;background:#a9e4ff}
.satin-competition .satin-section-scene{background-position:center top}
.satin-competition .competition-countdown{background:#e5f4ff!important;color:var(--classic-ink);padding:10px;border-radius:16px;flex-wrap:wrap}
.satin-competition .competition-countdown .text-xs{font-size:var(--classic-type-body)}
/* Three equal columns keep every localized tab available without horizontal scrolling. */
.competition-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}
.competition-tabs button{min-width:0;white-space:normal;overflow-wrap:normal;padding-left:4px;padding-right:4px;font-size:clamp(12px,3.5vw,16px)}
.competition-reward-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;background:var(--satin-surface);box-shadow:var(--classic-inner);border-radius:22px;padding:14px;color:var(--classic-ink)}
.competition-reward-rank{display:flex;align-items:center;gap:8px;font-size:var(--classic-type-label)}
.competition-reward-rank img{width:36px;height:36px;object-fit:contain}
.competition-reward-prizes{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
.competition-reward-prizes>span{display:flex;align-items:center;gap:5px;background:#dcecff;padding:6px 10px;border-radius:14px;font-size:var(--classic-type-label)}
.competition-reward-prizes img{width:27px;height:27px;object-fit:contain}
.competition-info table{display:table;min-width:100%;table-layout:auto}
.competition-info .info-table-scroll{width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
.competition-info :is(th,td){overflow-wrap:normal}
.competition-info td .font-black{white-space:nowrap}
.competition-info td .flex>span{min-width:0}

/* League composition: illustrated crest, centered title and attached season clock. */
.league-screen .league-hero{position:relative;padding-bottom:23px;margin-bottom:6px}
.league-screen .satin-section-hero{margin:0}
.league-screen .satin-section-scene{height:220px;border-radius:0;background-position:center 35%}
.league-screen .satin-section-banner{position:relative;width:86%;margin:-38px auto 0;padding:12px 16px 22px;border:3px solid #ffcf48;border-radius:24px;box-shadow:var(--classic-inner)}
.league-title-lockup{text-align:center;color:white;font:900 var(--classic-type-title)/1.2 var(--classic-display)}
.league-personal-standing{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:8px;font:900 var(--classic-type-label)/1.2 var(--classic-display);color:#e7f6ff}
.league-personal-standing img{width:26px;height:26px;object-fit:contain}
.league-season-clock{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:12px;width:max-content;max-width:90%;margin:-12px auto -18px;background:var(--satin-surface);border-radius:18px;padding:7px 14px;box-shadow:var(--classic-inner);font:900 var(--classic-type-body)/1.3 var(--classic-display)}
.league-season-clock strong{display:flex;align-items:center;gap:6px;font-size:var(--classic-type-label)}
.league-season-clock svg{color:#e74668}
.league-screen .competition-tabs{margin:8px 12px 12px;background:#0757bb;padding:4px;border-radius:20px}
.league-screen .competition-list>div{padding:0 10px 16px}
.league-screen .league-zone-strip{border:0!important;border-radius:14px;padding:9px 12px;margin-bottom:12px}
.league-screen .league-zone-strip span{font:900 var(--classic-type-body)/1.3 var(--classic-display)}
.league-screen .league-player-row{display:grid;grid-template-columns:30px 48px minmax(0,1fr) auto;align-items:center;gap:9px;padding:12px 10px;min-height:86px;border-radius:24px;margin-bottom:10px;overflow:visible}
.league-player-row .league-place{display:grid;place-items:center;width:30px;height:34px;border-radius:50%;font:900 var(--classic-type-action)/1 var(--classic-display);color:#557198;background:transparent;box-shadow:none}
.league-player-row .place-1{background:linear-gradient(#ffe482,#ffb900);color:#875318;box-shadow:inset 0 2px 1px #fff8ad,inset 0 -2px 1px #e69716}
.league-player-row .place-2{background:linear-gradient(#eff9ff,#a5c6e7);color:#49658b;box-shadow:var(--classic-inner)}
.league-player-row .place-3{background:linear-gradient(#ffd3ac,#d89968);color:#7b4c30;box-shadow:var(--classic-inner)}
.league-player-row .league-portrait{width:48px;height:54px;padding:3px;border:2px solid #61d6ff;border-radius:16px;background:var(--classic-blue);box-shadow:var(--classic-inner);overflow:hidden}
.league-player-copy{min-width:0;display:flex;flex-direction:column;gap:4px}
.league-player-copy>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:900 var(--classic-type-section)/1.2 var(--classic-display);color:var(--classic-ink)}
.league-player-copy>span{font:700 var(--classic-type-caption)/1.3 var(--classic-display);color:var(--classic-muted)}
.league-player-values{display:flex;flex-direction:row;align-items:center;gap:16px;white-space:nowrap}
.league-points{position:relative;display:flex;align-items:center;justify-content:flex-end;min-width:64px;min-height:32px;padding:5px 9px 5px 22px;border-radius:16px;background:#dbe8fb;color:var(--classic-ink)}
.league-points>img{position:absolute;left:-10px;width:32px;height:32px;object-fit:contain}
.league-points>strong{font:900 var(--classic-type-label)/1.2 var(--classic-display);font-variant-numeric:tabular-nums}
.league-prize{position:relative;display:grid;place-items:center;width:32px;height:32px;flex:none;font:900 var(--classic-type-label)/1 var(--classic-display)}
.league-prize img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.league-prize strong{position:relative;z-index:1;color:white;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;-webkit-text-stroke:3px #85450c;paint-order:stroke fill;text-align:center}
.league-player-row.is-self .league-points{background:#10b643;color:#fff;box-shadow:inset 0 1px 3px #07862744}
.league-player-row.is-self .league-player-copy>span{color:#135632}
@media(max-width:360px){.league-screen .league-player-row{grid-template-columns:27px 42px minmax(0,1fr) auto;gap:7px;padding:12px 8px!important}.league-player-row .league-portrait{width:42px;height:50px}.league-player-row .league-place{width:27px;height:31px}.league-points{min-width:58px;padding-right:7px}.league-screen .satin-section-scene{height:190px}}

.league-zone-divider{display:flex;align-items:center;justify-content:center;gap:8px;background:#e6f3ff;border-radius:12px;padding:7px 12px;margin:12px 0;font:900 var(--classic-type-body)/1.3 var(--classic-display)}
/* Podium medals: white raised numerals inside soft concentric metal rings. */
.league-player-row .league-place:is(.place-1,.place-2,.place-3){width:32px;height:32px;border:2px solid var(--medal-edge);background:linear-gradient(145deg,var(--medal-light),var(--medal-face));color:#fff;box-shadow:inset 0 1px 1px #fff, inset 0 -2px 2px var(--medal-edge);text-shadow:0 1px 1px var(--medal-edge);-webkit-text-stroke:1px var(--medal-edge);paint-order:stroke fill;position:relative;isolation:isolate;font-size:24px}
.league-player-row .league-place:is(.place-1,.place-2,.place-3)::before{content:'';position:absolute;inset:3px;border:1.5px solid var(--medal-light);border-radius:50%;background:linear-gradient(155deg,var(--medal-face),var(--medal-edge));z-index:-1}
.league-player-row .place-1{--medal-light:#fff6a1;--medal-face:#ffc52d;--medal-edge:#c68913}
.league-player-row .place-2{--medal-light:#eef7ff;--medal-face:#a9c4e4;--medal-edge:#627b9c}
.league-player-row .place-3{--medal-light:#ffe0bc;--medal-face:#eaa16b;--medal-edge:#ae633e}
.league-player-row .place-other{color:#fff;-webkit-text-stroke:1.3px #35567c;paint-order:stroke fill;font-size:24px}
/* Keep the shared head-over-frame portrait framing in rankings too. */
.league-player-row .league-portrait{height:48px;padding:2px;overflow:visible}
@media(max-width:360px){.league-player-row .league-portrait{height:42px}.league-player-row .league-place:is(.place-1,.place-2,.place-3){width:29px;height:29px;font-size:22px}}

/* Compact league identity: actual league medal, title and score on one banner. */
.league-screen .satin-section-banner{width:92%;padding:10px 14px 18px;border-width:2px;border-radius:22px}
.league-title-lockup{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:10px;align-items:center;text-align:left}
.league-title-lockup>span{font:900 var(--classic-type-title)/1.15 var(--classic-display)}
.league-title-lockup .league-personal-standing{margin:0;padding:7px 10px;border-radius:15px;background:#0752c766;flex-wrap:wrap;gap:4px;font-size:var(--classic-type-label)}
.league-title-lockup .league-personal-standing img{width:24px;height:28px}
.league-title-lockup .league-personal-standing>span{font-size:var(--classic-type-caption)}
@media(max-width:360px){.league-title-lockup{grid-template-columns:44px minmax(0,1fr) auto;gap:7px}.league-title-lockup>div:first-child{width:44px!important;height:44px!important}.league-title-lockup .league-personal-standing{padding:7px}}
/* Rank numerals follow their medal metal; remaining ranks use Classics blue. */
.league-player-row .league-place:is(.place-1,.place-2,.place-3){color:var(--rank-ink);-webkit-text-stroke:1px var(--medal-light);text-shadow:0 1px 0 var(--medal-light)}
.league-player-row .place-1{--rank-ink:#945700}
.league-player-row .place-2{--rank-ink:#3d597e}
.league-player-row .place-3{--rank-ink:#8a4021}
.league-player-row .place-other{color:#176fc5;-webkit-text-stroke:0;text-shadow:none}
/* Shared league/tournament ranking anatomy and reading hierarchy. */
.tournament-screen .league-player-row{display:grid;grid-template-columns:30px 48px minmax(0,1fr) auto;align-items:center;gap:9px;padding:12px 10px;min-height:86px;margin-bottom:10px}
.tournament-hero-title{display:flex;align-items:center;justify-content:center;gap:12px;font:900 var(--classic-type-title)/1.15 var(--classic-display)}
.tournament-hero-title img{width:52px;height:56px;object-fit:contain}.tournament-hero-title small{display:block;font-size:var(--classic-type-label);margin-top:4px}
.tournament-season-clock{display:flex;align-items:center;justify-content:center;gap:8px;width:max-content;max-width:90%;margin:-8px auto 14px;position:relative;border-radius:24px;padding:10px 18px;background:var(--satin-surface);color:var(--classic-ink);font-size:var(--classic-type-label)}
.tournament-season-clock svg{color:#fc476e;width:22px}
.tournament-screen .competition-event-summary{margin-top:0!important;padding:16px!important}
.tournament-screen .competition-tabs{margin-top:18px!important}
.competition-info{font-family:var(--classic-display);color:var(--classic-ink)}
.competition-info section{background:var(--satin-surface)!important;border:0!important;padding:18px!important}
.competition-info :is(h2,h3){color:var(--classic-ink)!important;font:900 var(--classic-type-section)/1.3 var(--classic-display)!important}
.competition-info :is(p,li){font:700 var(--classic-type-body)/1.55 var(--classic-display)!important;color:var(--classic-muted)}
.competition-info :is(th,td){font-size:var(--classic-type-body)!important;line-height:1.4;padding:12px 8px!important;color:var(--classic-ink)}
.competition-info th{background:#d9efff;font-weight:900!important}.competition-info table{width:100%;border-collapse:separate;border-spacing:0;border-radius:14px;overflow:hidden}
.competition-info td{border-bottom:1px solid #cce2f5}.competition-info tbody tr:nth-child(even){background:#eaf5ff}
.competition-info [class*="text-[10px]"],.competition-info .text-xs{font-size:var(--classic-type-body)!important}
@media(max-width:360px){.tournament-screen .league-player-row{grid-template-columns:27px 42px minmax(0,1fr) auto;gap:7px;padding:12px 8px!important}}

/* Embedded league page uses the menu's header and single scrolling surface. */
.satin-submenu-leagues{padding:0!important}
.league-screen.is-embedded{height:auto;min-height:0;overflow:visible;background:transparent}
.league-screen.is-embedded>.competition-body{flex:none;overflow:visible;padding-bottom:16px}
.league-screen.is-embedded .league-embedded-info{position:absolute;top:12px;right:12px;z-index:4;width:44px;height:44px;padding:0;color:white}
.league-screen.is-embedded .satin-section-scene{border-radius:24px 24px 0 0}

/* Competition subpages share the same content gutter and hero as all menu pages. */
.satin-submenu-leagues,.satin-submenu-tournaments{padding:2cqw 0 4cqw!important}
.satin-submenu .satin-competition.is-embedded{height:auto;min-height:0;overflow:visible;background:transparent}
.satin-submenu .satin-competition.is-embedded>.competition-body{flex:none;overflow:visible;padding-bottom:0}
.satin-competition.is-embedded>div.absolute.inset-0:not(.competition-info){display:none}
.satin-competition.is-embedded .satin-section-hero{margin:0 0 5cqw}
.satin-competition.is-embedded .satin-section-scene{height:auto;min-height:55cqw;background-size:100% 100%;background-position:center;border-radius:6cqw 6cqw 3cqw 3cqw;padding:5cqw 4cqw 8cqw}
.satin-competition.is-embedded .satin-section-banner{width:90%;margin:-5cqw auto 0;padding:2.5cqw 3cqw;border:1cqw solid #ffce45;border-radius:5cqw}
.satin-competition.is-embedded .satin-section-title{font:900 var(--classic-type-title)/1.2 var(--classic-display)}
.satin-competition.is-embedded .league-hero{padding-bottom:0;margin-bottom:16px}
.satin-competition.is-embedded .league-season-clock{position:relative;bottom:auto;left:auto;transform:none;width:max-content;max-width:100%;margin:-2cqw auto 0}
.satin-competition.is-embedded .competition-tabs{margin:16px 0!important}
.satin-competition.is-embedded .competition-list>div{padding:0 0 16px}
.satin-competition.is-embedded .competition-event-summary{margin-left:0;margin-right:0}
.satin-competition.is-embedded .competition-body>.mx-4{margin-left:0;margin-right:0}
.satin-competition.is-embedded .competition-embedded-info{position:absolute;top:12px;right:12px;z-index:30;width:44px;height:44px;padding:0;color:white}
.satin-competition.is-embedded .tournament-season-clock{margin-top:-2cqw;margin-bottom:16px}

.satin-competition.is-embedded .competition-body>.px-4{padding-left:0;padding-right:0}
.satin-competition.is-embedded .competition-tabs button{white-space:normal;overflow-wrap:anywhere}

.league-title-lockup>span{font-size:var(--classic-type-section);white-space:nowrap;overflow-wrap:normal;min-width:0}

/* One proportional illustrated league hero, including standing and season. */
/* Ivory event cards: quiet suit pattern, shared spacing and separate standings. */
.league-integrated-hero{position:relative;isolation:isolate;width:calc(100% - 32px);min-width:0;max-width:100%;box-sizing:border-box;margin:0 16px 16px;border-radius:24px;overflow:hidden;background:#f1faff;color:var(--classic-ink);box-shadow:inset 0 1px 0 white;padding-top:80px}
.satin-competition.is-embedded .league-integrated-hero{margin:0 0 16px;width:100%}
.league-integrated-hero::before{content:'♠　♡　♣　♢　♠　♡　♣　♢　♠　♡　♣　♢';position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;font:40px/1.8 Georgia,serif;letter-spacing:10px;color:#237ada;opacity:.055;transform:rotate(-15deg) scale(1.2)}
.league-integrated-hero>.league-season-clock,.league-screen.is-embedded .league-integrated-hero>.league-season-clock,.hero-event-clock{position:absolute;top:16px;left:18px;transform:none;margin:0;padding:0;background:none;box-shadow:none;border-radius:0;width:auto;max-width:calc(100% - 86px);display:flex;flex-direction:column;align-items:flex-start;gap:5px;color:var(--classic-ink);font:900 18px/1.2 var(--classic-display)}
.league-integrated-hero>.league-season-clock strong,.hero-event-clock strong{display:flex;align-items:center;gap:5px;font-size:14px;color:#526f94}
.league-integrated-hero>.league-season-clock svg,.hero-event-clock svg{color:#526f94;width:16px;height:16px}
.league-integrated-hero .league-hero-info{position:absolute;top:16px;right:16px;width:40px;height:40px;padding:0;background:#fff;color:#1276ed;z-index:3;box-shadow:inset 0 -2px 0 #e0efff}
.league-hero-content{width:100%;padding:0;display:flex;flex-direction:column}
.league-integrated-hero .league-title-lockup{display:grid;grid-template-columns:68px minmax(0,1fr);gap:0 14px;align-items:center;text-align:left;color:var(--classic-ink);padding:0}
.league-integrated-hero .league-title-lockup>div:first-child{width:68px!important;height:68px!important;margin:0 0 18px 18px}
.league-integrated-hero .league-title-lockup>span{margin:0 18px 18px 18px;min-width:0;color:var(--classic-ink)}
.competition-hero-stats{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;box-sizing:border-box;padding:13px 18px;background:#e0efff;color:var(--classic-ink)}
.competition-hero-stats>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.competition-hero-stats>div:last-child{text-align:right}
.competition-hero-stats small{font:900 12px/1.2 var(--classic-display);color:#526f94}
.competition-hero-stats strong{font:900 20px/1.2 var(--classic-display)}
.tournament-hero-identity{display:flex;align-items:center;gap:14px;padding:0 18px 18px;min-height:68px}
.tournament-hero-identity>img{width:68px;height:68px;object-fit:contain;flex:none}
.tournament-hero-identity>div{display:flex;flex-direction:column;gap:5px;min-width:0}
.tournament-hero-identity strong{font:900 20px/1.15 var(--classic-display)}
.tournament-hero-identity span{font:900 14px/1.2 var(--classic-display);color:#526f94}
.competition-info-backdrop{position:fixed;inset:0;z-index:600;display:flex;align-items:center;justify-content:center;padding:20px 12px;background:#061932b3;backdrop-filter:blur(6px)}
.competition-info-dialog{position:relative;width:min(520px,100%);height:min(720px,calc(100dvh - 40px));border-radius:26px;overflow:hidden;background:var(--satin-shell);box-shadow:var(--classic-inner)}
.competition-info-dialog>.competition-info{position:relative!important;inset:auto!important;width:100%;height:100%;transform:none!important}
.competition-info-dialog .competition-header{padding:20px 60px 16px 20px;display:block}.competition-info-dialog .competition-header>button{display:none}
.competition-info-dialog .competition-header h1{text-align:left;font-size:22px}
.competition-info-close{position:absolute;right:12px;top:12px;width:40px;height:40px;padding:0;z-index:60;background:var(--classic-red);color:white}

/* Compact illustrated hero, with all information over the scene. */
.competition-illustrated-hero{position:relative;isolation:isolate;box-sizing:border-box;margin:0 16px 16px;height:calc(clamp(170px,48vw,240px) + 53px);border-radius:24px;overflow:hidden;background:#0878f6;min-width:0}
.competition-hero-backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 38%;z-index:-1;pointer-events:none}
.satin-competition .competition-illustrated-hero>.league-integrated-hero{position:absolute;inset:0;width:100%;max-width:100%;margin:0;padding:0;border-radius:0;background:none;box-shadow:none;overflow:visible}
.competition-illustrated-hero .league-integrated-hero::before{content:none}
.satin-competition.is-embedded .competition-illustrated-hero{margin:0 0 16px}
.competition-illustrated-hero .league-integrated-hero>.league-season-clock,.league-screen.is-embedded .competition-illustrated-hero .league-integrated-hero>.league-season-clock,.competition-illustrated-hero .hero-event-clock{top:12px;left:12px;padding:8px 10px;border-radius:13px;background:#f1faff;font-size:14px;gap:3px;max-width:calc(100% - 78px)}
.competition-illustrated-hero .league-integrated-hero>.league-season-clock strong,.competition-illustrated-hero .hero-event-clock strong{font-size:12px}
.competition-illustrated-hero .league-hero-info{top:12px;right:12px;width:38px;height:38px}
.competition-illustrated-hero .league-hero-content{position:absolute;bottom:12px;left:12px;width:calc(100% - 24px);background:#f1faff;border-radius:16px;overflow:hidden}
.competition-illustrated-hero .league-title-lockup{grid-template-columns:36px minmax(0,1fr);gap:0 10px}
.competition-illustrated-hero .league-title-lockup>div:first-child{width:36px!important;height:36px!important;margin:8px 0 8px 12px}
.competition-illustrated-hero .league-title-lockup>span{margin:8px 12px 8px 12px}
.competition-illustrated-hero .competition-hero-stats{padding:7px 12px;gap:10px}
.competition-illustrated-hero .competition-hero-stats>div{flex-direction:row;align-items:baseline;gap:6px;flex-wrap:wrap}
.competition-illustrated-hero .competition-hero-stats>div:last-child{justify-content:flex-end}
.competition-illustrated-hero .competition-hero-stats strong{font-size:16px}
.competition-illustrated-hero .competition-hero-stats small{font-size:11px}
.competition-illustrated-hero .tournament-hero-identity{padding:8px 12px;min-height:0;gap:10px}
.competition-illustrated-hero .tournament-hero-identity>img{width:36px;height:36px}
.competition-illustrated-hero .tournament-hero-identity>div{flex-direction:row;align-items:baseline;gap:8px;flex-wrap:wrap}
.competition-illustrated-hero .tournament-hero-identity strong{font-size:18px}
.competition-illustrated-hero .tournament-hero-identity span{font-size:12px}

.league-player-detail{display:flex;align-items:center;gap:5px;min-width:0}
.league-player-detail .league-detail-badge{width:22px;height:22px;object-fit:contain;flex-shrink:0}
.league-player-detail>span{min-width:0}

.league-zone-divider[data-zone="safe"]{background:linear-gradient(180deg,#ffb43b,#f28a0a);color:#fff}
.league-zone-divider[data-zone="relegation"]{background:var(--classic-red);color:#fff}

/* Zone headers describe the following rows, including the first promotion group. */
.league-zone-divider{display:grid;grid-template-columns:24px minmax(0,1fr) 24px;column-gap:18px;text-align:center}
.league-zone-divider>svg{color:var(--zone-arrow);justify-self:center}
.league-zone-divider[data-zone="promotion"]{background:var(--classic-green);color:#fff;--zone-arrow:#078137}
.league-zone-divider[data-zone="safe"]{--zone-arrow:#ad5700}
.league-zone-divider[data-zone="relegation"]{--zone-arrow:#a30c2d}
/* Keep entering rows inside the ranking width without creating a nested vertical scroller. */
.satin-competition .competition-list{overflow-x:clip}
.league-player-row[data-ranking-entry="true"]{animation:ranking-row-enter 420ms cubic-bezier(.22,.68,.28,1) var(--ranking-entry-delay,0ms) backwards}
@keyframes ranking-row-enter{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.league-player-row[data-ranking-entry="true"]{animation:none}}
