/* Board-only victory effects. No external assets, no persistent compositor layers. */
.victory-layer{position:absolute;inset:0;z-index:8;display:grid;place-items:center;pointer-events:none;overflow:hidden;border-radius:4px;isolation:isolate}
.victory-layer[hidden]{display:none!important}
.victory-shade{position:absolute;inset:0;background:radial-gradient(ellipse at center,#f4e2bdde 0%,#f7e7ca96 44%,#ecdbbc38 78%);z-index:0}
.victory-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.victory-panel{--v-accent:#9f4632;position:relative;z-index:3;width:min(330px,calc(100% - 24px));max-height:calc(100% - 24px);overflow:auto;overscroll-behavior-y:auto;text-align:center;pointer-events:auto;border:1px solid #d3b27b;border-radius:14px;padding:25px 16px 14px;background:linear-gradient(145deg,#fffaf0,#fbf0dc);box-shadow:0 14px 38px #62421f24,0 0 0 5px #fff7e373;color:#463b2c}
.victory-panel:before{content:'';position:absolute;inset:7px;border:1px solid #e5ceb0;border-radius:9px;pointer-events:none}
.victory-dismiss{position:absolute;right:10px;top:8px;z-index:3;min-width:32px;min-height:32px;border:0;background:transparent;color:#8d7e66;font-size:22px;line-height:1;cursor:pointer;border-radius:6px}
.victory-kicker{position:relative;margin:0 22px 18px;font-size:10px;letter-spacing:2px;color:#947346;line-height:1.6}
.victory-emblem{position:relative;display:grid;place-items:center;width:100px;height:100px;margin:0 auto 17px;border-radius:50%;background:radial-gradient(circle,#fbeac3 0 60%,transparent 61%);color:var(--v-accent)}
.victory-emblem:before,.victory-emblem:after{content:'';position:absolute;border-radius:50%;pointer-events:none}
.victory-emblem:before{inset:0;border:1px solid #ba9354;border-left-color:transparent;border-right-color:transparent;transform:rotate(-28deg)}
.victory-emblem:after{inset:-7px;border:1px solid #ddc293;border-top-color:transparent;border-bottom-color:transparent;transform:rotate(28deg)}
.victory-stamp{display:grid;place-items:center;width:68px;height:72px;border:2px solid currentColor;outline:1px solid #be9470;outline-offset:3px;border-radius:7px 4px 7px 3px;font-family:'STKaiti','KaiTi','Kaiti SC','Noto Serif CJK SC',serif;font-size:49px;line-height:1;font-weight:600;transform:rotate(-7deg);background:#fff2d999;text-shadow:0 1px #fff4dd}
.victory-title{position:relative;font-family:'STKaiti','KaiTi','Kaiti SC','Noto Serif CJK SC',serif;font-size:clamp(25px,8cqw,38px);font-weight:600;color:var(--v-accent);margin:0 0 9px;letter-spacing:5px;line-height:1.35}
.victory-reason{position:relative;font-size:11px;line-height:1.8;margin:0 0 10px;color:#867052;overflow-wrap:anywhere}
.victory-detail{position:relative;display:inline-block;padding:5px 12px;border:1px solid #e5cda4;border-radius:99px;font-size:10px;color:#8f7553;line-height:1.6;margin:0 0 18px;background:#fff8e9}
.victory-actions{position:relative;display:flex;gap:8px;justify-content:center}
.victory-actions button{min-height:36px;flex:1;max-width:146px;border-radius:6px;padding:8px 5px;font-size:11px;border:1px solid #d2b58b;background:#fff9ef;color:#71593c;cursor:pointer}
.victory-actions .primary{color:#fff4df;background:var(--v-accent);border-color:var(--v-accent)}
.victory-undo{position:relative;display:inline-block;margin-top:9px;background:transparent;border:0;border-bottom:1px solid #c7b18d;color:#927c5a;font-size:10px;padding:3px 1px;cursor:pointer}
.victory-layer[data-side='black'] .victory-panel{--v-accent:#414e3e}
.victory-layer[data-preview='true'] .victory-title{font-size:clamp(20px,6.4cqw,29px);letter-spacing:2px}
.victory-layer.is-animating .victory-panel{animation:victory-arrive .55s cubic-bezier(.2,.8,.25,1) both}
.victory-layer.is-animating .victory-stamp{animation:victory-stamp .7s cubic-bezier(.16,.7,.2,1) both}
.victory-layer.is-animating .victory-title{animation:victory-title .7s ease-out both}
.victory-layer.is-animating .victory-emblem:after{animation:victory-circle 1.3s ease-out both}
.board-toolbar #victoryReplayButton{color:#92713c}
.preview-victory{padding:8px 12px;margin:6px 0 10px;border:1px solid #dcc9ad;border-radius:6px;background:#faf2e2;color:#806445;font-size:11px;cursor:pointer}
@keyframes victory-arrive{from{opacity:0;transform:translateY(13px) scale(.94)}to{opacity:1;transform:none}}
@keyframes victory-stamp{0%{opacity:0;transform:rotate(-18deg) scale(1.6)}60%{opacity:1;transform:rotate(-5deg) scale(.94)}100%{opacity:1;transform:rotate(-7deg) scale(1)}}
@keyframes victory-title{0%,25%{opacity:0;transform:translateY(7px)}100%{opacity:1;transform:none}}
@keyframes victory-circle{from{opacity:0;transform:rotate(-35deg) scale(.8)}to{opacity:1;transform:rotate(28deg) scale(1)}}
@media(max-width:420px){.victory-panel{padding:19px 13px 11px}.victory-kicker{margin-bottom:12px;font-size:9px;letter-spacing:1.4px}.victory-emblem{width:75px;height:75px;margin-bottom:12px}.victory-stamp{width:51px;height:55px;font-size:38px}.victory-title{margin-bottom:6px}.victory-reason{font-size:10px;margin-bottom:7px}.victory-detail{margin-bottom:11px;font-size:9px}.victory-actions button{font-size:10px;min-height:34px}.victory-undo{margin-top:7px}}
@media(prefers-reduced-motion:reduce){.victory-layer *,.victory-layer *:before,.victory-layer *:after{animation:none!important;transition:none!important}.victory-canvas{display:none!important}}
@media print{.victory-layer,#victoryReplayButton{display:none!important}}
/* A 320px viewport can yield only ~266px of board; keep every action visible. */
@container(max-width:300px){
 .victory-panel{padding:13px 11px 8px}
 .victory-kicker{font-size:9px;margin:0 22px 9px;letter-spacing:1px}
 .victory-emblem{width:54px;height:54px;margin:0 auto 9px}
 .victory-stamp{width:40px;height:42px;font-size:30px;outline-offset:2px}
 .victory-title{font-size:26px;line-height:1.2;margin-bottom:5px}
 .victory-reason{font-size:9px;line-height:1.6;margin-bottom:5px}
 .victory-detail{font-size:9px;padding:3px 8px;margin-bottom:8px}
 .victory-actions button{min-height:30px;padding:6px 4px;font-size:10px}
 .victory-undo{font-size:9px;margin-top:4px;padding:2px 1px}
 .victory-layer[data-preview='true'] .victory-title{font-size:21px}
}
