/* v014: highlighted move lands, triggers the tile ripple, then settles into the original PWR hex reveal. */
.pwr-intro{--intro-rate:1;--board-size:clamp(248px,48vmin,352px);--mark-size:clamp(144px,22vw,190px);padding:0}
.pwr-intro__brand{position:absolute;inset:0;max-width:none;pointer-events:none;z-index:1}
.pwr-intro__mark-anchor{position:absolute;left:50%;top:50%;width:var(--mark-size);height:var(--mark-size);transform:translate(-50%,-50%)}
.pwr-intro__mark{width:100%;height:100%;margin:0;overflow:visible}
.pwr-intro__wordmark{position:absolute;top:calc(50% + var(--mark-size)/2 + 23px);left:0;right:0;font-size:clamp(28px,4vw,38px);letter-spacing:.12em;margin:0 0 0 .12em}
.pwr-intro__rule{position:absolute;top:calc(50% + var(--mark-size)/2 + 70px);left:50%;width:180px;margin:0;transform:translateX(-50%)}
.pwr-intro__name{position:absolute;top:calc(50% + var(--mark-size)/2 + 89px);left:0;right:0;font-size:10px;letter-spacing:.3em;margin:0 0 0 .3em}
.chess-scene{position:absolute;inset:0;pointer-events:none;z-index:2}
.chess-ground,.chess-ripple{display:none}
.chess-plane{position:absolute;left:50%;top:50%;width:var(--board-size);height:var(--board-size);transform:translate(-50%,-50%)}
.chess-board{position:absolute;inset:0;display:grid;grid-template:repeat(8,1fr)/repeat(8,1fr);gap:1px;background:transparent;border:1px solid var(--gold-soft)}
.chess-board-edge{position:absolute;inset:-6px;border:1px solid var(--gold-soft);pointer-events:none}
.chess-tile{display:block;position:relative;transform-origin:50% 50%;backface-visibility:hidden}
.chess-tile--cream{background:#d8d4cb}
.chess-tile--ink{background:#152235}
.chess-tile--route:after{content:'';position:absolute;inset:0;background:#c9973a;opacity:0}
.chess-tile--destination:before{content:'';position:absolute;inset:7px;border:1px solid #f8e5ba;z-index:1;opacity:0}
html[data-pwr-intro="holding"] .chess-plane{animation:chessBoardArrive calc(2180ms*var(--intro-rate)) cubic-bezier(.22,1,.36,1) both}
html[data-pwr-intro="holding"] .chess-board,html[data-pwr-intro="holding"] .chess-board-edge{animation:chessFrameClear calc(1780ms*var(--intro-rate)) ease both}
html[data-pwr-intro="holding"] .chess-tile{animation:chessTileFlip calc(420ms*var(--intro-rate)) calc((1160ms + var(--fold-delay))*var(--intro-rate)) cubic-bezier(.45,0,.15,1) both}
html[data-pwr-intro="holding"] .chess-tile--route:after{animation:chessMoveLight calc(420ms*var(--intro-rate)) calc(var(--move-delay)*var(--intro-rate)) ease-out both}
html[data-pwr-intro="holding"] .chess-tile--start:after{animation-name:chessStartLight;animation-duration:calc(560ms*var(--intro-rate))}
html[data-pwr-intro="holding"] .chess-tile--destination:after,html[data-pwr-intro="holding"] .chess-tile--destination:before{animation:chessDestinationLight calc(290ms*var(--intro-rate)) calc(870ms*var(--intro-rate)) ease-out both}
.chess-tile--destination:after{background:#e3b862}
@keyframes chessStartLight{0%{opacity:0}18%,58%{opacity:1}100%{opacity:.36}}
@keyframes chessDestinationLight{0%{opacity:0}40%,100%{opacity:1}}
html[data-pwr-intro="holding"] .pwr-intro__mark>path{animation:chessKingArrive calc(320ms*var(--intro-rate)) calc(1300ms*var(--intro-rate)) ease both}
html[data-pwr-intro="holding"] .pwr-intro__mark>g path{stroke-dasharray:168;animation:chessHexTrace calc(540ms*var(--intro-rate)) calc(1190ms*var(--intro-rate)) cubic-bezier(.22,1,.36,1) both}
html[data-pwr-intro="holding"] .pwr-intro__mark>g:nth-of-type(2) path{animation-delay:calc(1290ms*var(--intro-rate))}
html[data-pwr-intro="holding"] :is(.pwr-intro__wordmark,.pwr-intro__rule,.pwr-intro__name){animation:chessBrandArrive calc(320ms*var(--intro-rate)) calc(1510ms*var(--intro-rate)) ease both}
html[data-pwr-intro="holding"] .pwr-intro__rule{animation-name:chessRuleArrive}
html:is([data-pwr-intro="clearing"],[data-pwr-intro="leaving"]) .chess-scene{visibility:hidden}
html[data-pwr-intro="clearing"] :is(.pwr-intro__wordmark,.pwr-intro__name){animation:pwrIntroClearType calc(250ms*var(--intro-rate)) ease both}
html[data-pwr-intro="clearing"] .pwr-intro__rule{animation:chessRuleClear calc(250ms*var(--intro-rate)) ease both}
html[data-pwr-intro="clearing"] .pwr-intro__mark{transform:none}
html[data-pwr-intro="leaving"] .pwr-intro__mark{transform:none}
html[data-pwr-intro="leaving"] .pwr-intro__hex-edges{animation-duration:calc(800ms*var(--intro-rate)),calc(800ms*var(--intro-rate))}
html[data-pwr-intro="leaving"] :is(.pwr-intro__hole,.pwr-intro__hex-edges--inner){animation-duration:calc(800ms*var(--intro-rate));animation-delay:calc(100ms*var(--intro-rate))}
html[data-pwr-intro="leaving"] .pwr-intro__mark>g{animation-duration:calc(180ms*var(--intro-rate))}
html[data-pwr-intro="leaving"] .pwr-intro__mark>path{animation-duration:calc(320ms*var(--intro-rate))}
/* Reveal the page through the expanding hex after the logo clears. */
html[data-pwr-intro] body>:is(header,main,footer){animation:none;opacity:0;visibility:hidden}
html[data-pwr-intro="leaving"] body>:is(header,main,footer){visibility:visible;animation:pwrPageThroughHex calc(250ms*var(--pwr-page-rate,1)) calc(500ms*var(--pwr-page-rate,1)) ease-out both}
html:is([data-pwr-page],[data-pwr-intro="leaving"]) body>:is(header,main,footer) [data-enter]{animation:none;opacity:1;transform:none}
html[data-pwr-page]:not([data-pwr-intro]) body>:is(header,main,footer){visibility:visible;animation:none;opacity:1}
@keyframes pwrPageThroughHex{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){html[data-pwr-intro="leaving"] body>:is(header,main,footer){animation:none;opacity:1;visibility:visible}}
/* Keep Skip available for the complete sequence, including the aperture. */
html[data-pwr-intro] .pwr-intro__skip{animation:none!important;opacity:1!important;visibility:visible!important;z-index:3}
@keyframes chessBoardArrive{0%{opacity:0}9%,100%{opacity:1}}
@keyframes chessFrameClear{0%,65%{border-color:var(--gold-soft)}92%,100%{border-color:transparent}}
/* Orthographic tile turn: the camera and square board remain completely flat. */
@keyframes chessTileFlip{0%{transform:rotateY(0deg);opacity:1}49%{opacity:1}51%,100%{transform:rotateY(180deg);opacity:0}}
@keyframes chessMoveLight{0%{opacity:0}28%,60%{opacity:1}100%{opacity:.36}}
@keyframes chessKingArrive{from{opacity:0}to{opacity:1}}
@keyframes chessHexTrace{from{stroke-dashoffset:168;opacity:0}to{stroke-dashoffset:0;opacity:1}}
@keyframes chessBrandArrive{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes chessRuleArrive{from{opacity:0;transform:translateX(-50%) scaleX(.65)}to{opacity:1;transform:translateX(-50%) scaleX(1)}}
@keyframes chessRuleClear{from{opacity:1;transform:translateX(-50%) scaleX(1)}to{opacity:0;transform:translateX(-50%) scaleX(.65)}}
@media(max-width:600px){.pwr-intro{--board-size:min(260px,72vmin);--mark-size:148px}.pwr-intro__name{font-size:9px;letter-spacing:.22em}.pwr-intro__skip{right:16px;bottom:16px;font-size:13px;padding:9px 16px;min-height:44px}}
@media(prefers-reduced-motion:reduce){html[data-pwr-intro] .chess-scene{display:none}}
