.standings-tabs{grid-template-columns:repeat(5,auto) 1fr}.playoff-shell{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 50%,rgba(14,105,205,.18),transparent 25%),linear-gradient(145deg,#06101e,#091a30)}.playoff-shell:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 20% 15%,rgba(255,255,255,.17) 0 1px,transparent 1.5px),radial-gradient(circle at 75% 28%,rgba(255,255,255,.12) 0 1px,transparent 1.5px);background-size:67px 67px,91px 91px;opacity:.32;pointer-events:none}.playoff-heading{position:relative;z-index:2}.playoff-heading>div:first-child{max-width:760px}.playoff-heading p{max-width:720px;margin:7px 0 0;color:var(--muted);font-size:.72rem;line-height:1.5}.playoff-heading-status{display:grid;justify-items:end;gap:5px}.playoff-heading-status>span{display:flex;align-items:center;gap:7px;padding:6px 9px;border:1px solid rgba(54,211,153,.25);border-radius:999px;color:#6ce0b2;font-size:.55rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.playoff-heading-status>span.demo{border-color:rgba(245,180,65,.3);color:#f2bd55}.playoff-heading-status i{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}.playoff-heading-status small{color:var(--muted);font-size:.57rem}.playoff-mobile-rounds{display:none}.playoff-bracket-stage{position:relative;z-index:1;display:grid;grid-template-columns:1.28fr 1.06fr .95fr 1.2fr .95fr 1.06fr 1.28fr;gap:9px;min-width:1160px;min-height:825px;padding:18px 12px 28px}.playoff-round-column{display:grid;grid-template-rows:43px 1fr;min-width:0}.playoff-round-column>header{display:grid;align-content:center;text-align:center}.playoff-round-column>header span{color:#5cafff;font-size:.48rem;font-weight:850;text-transform:uppercase;letter-spacing:.12em}.playoff-round-column>header strong{font:1.02rem "Bebas Neue",sans-serif;letter-spacing:.04em}.playoff-round-column>div{display:flex;min-height:0;flex-direction:column;justify-content:space-around;gap:13px}.playoff-match{position:relative;padding:7px;border:1px solid rgba(92,135,178,.28);border-radius:12px;background:linear-gradient(145deg,rgba(14,31,51,.96),rgba(5,15,27,.96));box-shadow:0 9px 22px rgba(0,0,0,.2);transition:.25s ease}.playoff-match:hover{z-index:4;border-color:rgba(77,165,255,.62);transform:translateY(-2px)}.playoff-match.complete{border-color:rgba(20,135,255,.42);box-shadow:0 0 22px rgba(20,135,255,.09)}.playoff-match:after{content:"";position:absolute;top:50%;width:10px;height:2px;background:linear-gradient(90deg,#1487ff,#55aaff);opacity:.5}.playoff-round-column.east .playoff-match:after{right:-11px}.playoff-round-column.west .playoff-match:after{left:-11px}.round-three.east .playoff-match:after,.round-three.west .playoff-match:after{width:13px}.playoff-match-top{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:0 3px 5px}.playoff-match-top small{overflow:hidden;color:#6db5fa;font-size:.44rem;font-weight:850;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.playoff-match-top>span{color:var(--muted);font-size:.42rem;text-transform:uppercase}.playoff-team-row{display:grid;grid-template-columns:27px minmax(0,1fr) 24px;align-items:center;gap:6px;min-height:39px;padding:4px 5px;border-radius:8px;transition:.25s ease}.playoff-team-row+div{margin-top:3px}.playoff-team-row img,.playoff-team-row>i{width:27px;height:27px;object-fit:contain}.playoff-team-row>i{display:grid;place-items:center;border:1px dashed var(--line);border-radius:50%;color:var(--muted);font-size:.58rem;font-style:normal}.playoff-team-row>span{display:grid;min-width:0}.playoff-team-row strong{overflow:hidden;color:#d6e2ef;font-size:.58rem;text-overflow:ellipsis;white-space:nowrap}.playoff-team-row small{color:#7189a3;font-size:.39rem;text-transform:uppercase}.playoff-team-row>b{display:grid;place-items:center;width:23px;height:23px;border-radius:7px;background:rgba(255,255,255,.04);font-size:.72rem}.playoff-team-row.winner{background:linear-gradient(90deg,rgba(20,135,255,.2),rgba(20,135,255,.04));box-shadow:inset 3px 0 #1487ff}.playoff-team-row.winner strong{color:#fff}.playoff-team-row.winner>b{background:#147fdc;color:#fff;box-shadow:0 0 12px rgba(20,135,255,.55)}.playoff-team-row.pending{opacity:.48}.playoff-cup-column{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:16px;min-width:0}.playoff-cup-column>.playoff-match{width:100%}.playoff-cup-column>.playoff-match:after{display:none}.playoff-cup-mark{display:grid;justify-items:center;text-align:center}.playoff-cup-mark>span{padding:4px 8px;border:1px solid rgba(238,62,85,.35);border-radius:999px;color:#ff7184;font-size:.45rem;font-weight:900;text-transform:uppercase}.playoff-cup-mark img{width:98px;height:98px;margin:10px 0 2px;object-fit:contain;filter:drop-shadow(0 15px 20px rgba(0,0,0,.42))}.playoff-cup-mark strong{font:2rem/.9 "Bebas Neue",sans-serif;letter-spacing:.06em;text-transform:uppercase}.playoff-cup-mark small{margin-top:5px;color:#6eaee9;font-size:.52rem;letter-spacing:.1em}.playoff-champion{display:grid;justify-items:center;width:100%;padding:12px;border:1px solid rgba(245,180,65,.38);border-radius:13px;background:linear-gradient(145deg,rgba(245,180,65,.13),rgba(255,255,255,.02));text-align:center;animation:champion-glow 2.2s ease-in-out infinite}.playoff-champion span{color:#f5c35d;font-size:.46rem;font-weight:900;text-transform:uppercase}.playoff-champion img{width:58px;height:58px;margin:6px;object-fit:contain}.playoff-champion strong{font:.8rem "Barlow Condensed",sans-serif}.playoff-bracket-footer{position:relative;z-index:2;display:flex;justify-content:space-between;gap:12px;padding:12px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:.58rem}.playoff-bracket-footer span{display:flex;align-items:center;gap:7px}.playoff-bracket-footer i{width:8px;height:8px;border-radius:50%;background:#1487ff;box-shadow:0 0 12px #1487ff}.playoff-bracket-footer a{color:#5eb0ff}.playoff-match.new-winner{animation:series-advance 1.35s ease}.playoff-flying-logo{position:fixed;z-index:9999;width:54px;height:54px;object-fit:contain;pointer-events:none;filter:drop-shadow(0 0 13px #1487ff);transition:transform .9s cubic-bezier(.2,.8,.2,1),opacity .9s ease}.playoff-flying-logo.fly{opacity:.12;transform:translate(var(--fly-x),var(--fly-y)) scale(.55)}@keyframes series-advance{0%,100%{box-shadow:0 0 22px rgba(20,135,255,.09)}35%{border-color:#62b5ff;box-shadow:0 0 35px rgba(20,135,255,.58);transform:scale(1.035)}}@keyframes champion-glow{50%{box-shadow:0 0 32px rgba(245,180,65,.28)}}
html[data-theme=light] .playoff-shell{background:radial-gradient(circle at 50% 50%,rgba(20,135,255,.13),transparent 28%),linear-gradient(145deg,#edf6ff,#dceaf7)}html[data-theme=light] .playoff-match{background:linear-gradient(145deg,#fff,#edf4fa);box-shadow:0 8px 18px rgba(40,75,110,.12)}html[data-theme=light] .playoff-team-row strong{color:#17304a}html[data-theme=light] .playoff-team-row.winner strong{color:#0c3359}html[data-theme=light] .playoff-team-row>b{background:#e3edf6;color:#15314c}html[data-theme=light] .playoff-team-row.winner>b{background:#147fdc;color:#fff}
@media(max-width:1180px){.playoff-shell{overflow-x:auto}.playoff-heading,.playoff-bracket-footer{position:sticky;left:0;min-width:calc(100vw - 40px)}}
@media(max-width:680px){.standings-tabs{grid-template-columns:repeat(3,1fr)}.standings-tabs button[data-standing-tab=playoffs]{grid-column:span 2}.playoff-shell{overflow:visible}.playoff-heading{position:relative;min-width:0}.playoff-heading-status{justify-items:start}.playoff-mobile-rounds{display:flex;gap:5px;overflow-x:auto;padding:8px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);scrollbar-width:none}.playoff-mobile-rounds::-webkit-scrollbar{display:none}.playoff-mobile-rounds button{flex:0 0 auto;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.025);color:var(--muted);font-size:.6rem;font-weight:800}.playoff-mobile-rounds button.active{border-color:#1487ff;background:#0875df;color:#fff}.playoff-bracket-stage{display:block;min-width:0;min-height:0;padding:12px}.playoff-round-column,.playoff-cup-column{display:none}.playoff-round-column.mobile-active,.playoff-cup-column.mobile-active{display:grid}.playoff-round-column{grid-template-rows:auto auto;margin-bottom:12px}.playoff-round-column>header{padding:10px}.playoff-round-column>div{gap:9px}.playoff-match{width:100%;padding:9px}.playoff-match:after{display:none}.playoff-team-row{grid-template-columns:36px minmax(0,1fr) 30px;min-height:49px}.playoff-team-row img,.playoff-team-row>i{width:34px;height:34px}.playoff-team-row strong{font-size:.69rem}.playoff-team-row small{font-size:.45rem}.playoff-team-row>b{width:29px;height:29px;font-size:.82rem}.playoff-cup-column.mobile-active{gap:12px;padding:12px}.playoff-cup-mark img{width:82px;height:82px}.playoff-bracket-footer{position:relative;left:auto;min-width:0;align-items:flex-start;flex-direction:column}.playoff-heading p{font-size:.66rem}}
.playoff-footer-links{display:flex!important;gap:14px}.standings-tabs>a{display:grid;place-items:center;min-height:40px;padding:8px 12px;border-radius:9px;color:var(--muted);font-size:.68rem;font-weight:800}.standings-tabs>a.active,.standings-tabs>a:hover{background:var(--blue);color:#fff}

/* MAJ 2.11 — identité visuelle des séries */
.playoff-shell:after{content:"";position:absolute;z-index:0;inset:70px 15% 45px;background:url("logo_snhl.png") center/contain no-repeat;opacity:.035;filter:grayscale(1) saturate(0);pointer-events:none}
.playoff-cup-mark{position:relative;z-index:2}
.playoff-cup-mark img{width:min(100%,176px);height:auto;max-height:205px;margin:9px 0 3px;object-fit:contain;filter:drop-shadow(0 16px 24px rgba(0,0,0,.5))}
.playoff-cup-mark small{padding:4px 8px;border-radius:999px;background:rgba(5,15,27,.52);backdrop-filter:blur(5px)}
html[data-theme=light] .playoff-shell:after{opacity:.05;filter:grayscale(1) saturate(0) contrast(.8)}
html[data-theme=light] .playoff-cup-mark small{background:rgba(255,255,255,.7)}
@media(max-width:680px){.playoff-shell:after{inset:120px 4% 45px;opacity:.028}.playoff-cup-mark img{width:min(100%,158px);height:auto;max-height:185px}}

/* MAJ 2.12 — animation persistante des qualifications */
.playoff-replay-button{padding:0;border:0;background:transparent;color:#5eb0ff;font:inherit;cursor:pointer}.playoff-replay-button:hover{color:#fff}.playoff-replay-button:disabled{opacity:.4;cursor:wait}
.playoff-match.advance-arrival{z-index:5;animation:playoff-arrival 1.35s ease}.playoff-advance-notice{position:fixed;z-index:10000;top:20px;left:50%;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;width:min(440px,calc(100% - 24px));padding:11px 13px;border:1px solid rgba(85,170,255,.55);border-radius:15px;background:rgba(5,18,34,.94);box-shadow:0 18px 55px rgba(0,0,0,.45),0 0 28px rgba(20,135,255,.17);color:#fff;opacity:0;transform:translate(-50%,-135%);transition:.32s ease;backdrop-filter:blur(14px)}.playoff-advance-notice.visible{opacity:1;transform:translate(-50%,0)}.playoff-advance-notice img{width:48px;height:48px;object-fit:contain;filter:drop-shadow(0 5px 8px rgba(0,0,0,.35))}.playoff-advance-notice span{display:grid;min-width:0}.playoff-advance-notice small{color:#62b5ff;font-size:.52rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.playoff-advance-notice strong{overflow:hidden;font:.96rem "Barlow Condensed",sans-serif;text-overflow:ellipsis;white-space:nowrap}.playoff-advance-notice button{padding:7px 9px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:rgba(255,255,255,.05);color:#a9bdd1;font-size:.55rem;font-weight:800;cursor:pointer}
@keyframes playoff-arrival{0%,100%{box-shadow:0 9px 22px rgba(0,0,0,.2)}35%{border-color:#6bc1ff;box-shadow:0 0 40px rgba(20,135,255,.62);transform:scale(1.045)}}
html[data-theme=light] .playoff-advance-notice{border-color:#72afe8;background:rgba(247,251,255,.96);box-shadow:0 18px 45px rgba(35,72,108,.25);color:#102a43}html[data-theme=light] .playoff-advance-notice button{border-color:#c6d8e8;background:#edf5fc;color:#375b7d}
@media(max-width:680px){.playoff-footer-links{width:100%;flex-wrap:wrap;gap:10px!important}.playoff-replay-button{order:-1;width:100%;padding:9px;border:1px solid rgba(94,176,255,.3);border-radius:9px;background:rgba(20,135,255,.07);text-align:center}.playoff-advance-notice{top:10px;grid-template-columns:43px minmax(0,1fr) auto;padding:9px 10px}.playoff-advance-notice img{width:40px;height:40px}.playoff-advance-notice strong{font-size:.84rem}.playoff-advance-notice small{font-size:.45rem}}
@media(prefers-reduced-motion:reduce){.playoff-flying-logo{display:none}.playoff-match.new-winner,.playoff-match.advance-arrival{animation:none}.playoff-advance-notice{transition:none}}
