/* Shared castle environment, independent of the player's camera preference. */
.board-frame[data-environment="castle-courtyard"]{position:relative;padding:72px 16px 18px;border:4px solid #535b51;border-top-color:#828778;border-bottom-color:#272e2a;background:#28352c;box-shadow:inset 0 0 0 2px #18241d,0 8px 0 #171e1b,0 18px 30px #0007;overflow:hidden;max-width:100%}
.board-frame[data-environment]::before,.board-frame[data-environment] .board::before,.board-frame[data-environment] .board::after{display:none}
.courtyard-scenery{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.courtyard-rear-wall{position:absolute;left:0;right:0;top:0;height:72px;background:url('assets/environment/courtyard-v2/rear-wall.png') center bottom/100% 100% no-repeat;image-rendering:pixelated}
.courtyard-left-wall,.courtyard-right-wall{position:absolute;top:72px;bottom:16px;width:13%;background:linear-gradient(90deg,#18241d55,#18241d00),url('assets/environment/courtyard-v2/masonry.png') repeat;background-size:auto,60px 50px;image-rendering:pixelated;opacity:.8}
.courtyard-left-wall{left:0;clip-path:polygon(0 0,100% 0,16px 100%,0 100%)}
.courtyard-right-wall{right:0;clip-path:polygon(0 0,100% 0,100% 100%,calc(100% - 16px) 100%)}
.flat-view .courtyard-left-wall,.flat-view .courtyard-right-wall{width:16px;clip-path:none}
.courtyard-front-foundation{position:absolute;bottom:0;height:16px;left:0;right:0;background:url('assets/environment/courtyard-v2/masonry.png') center bottom/60px 50px;border-top:3px solid #7a8269;border-bottom:4px solid #202b24;image-rendering:pixelated}
.board-frame[data-environment] .board{z-index:1;isolation:isolate;background:transparent;overflow:visible}
.board-frame[data-environment] .square,.board-frame[data-environment] .square.light,.board-frame[data-environment] .square.dark{background:transparent;box-shadow:none}
.board-frame[data-environment] .board .square:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:var(--grass-tile);background-position:center;background-size:100% 100%;image-rendering:pixelated;animation:none!important}
.board-frame[data-environment] .square.light{--grass-tile:url('assets/environment/courtyard-v2/grass-light-0.png')}
.board-frame[data-environment] .square.dark{--grass-tile:url('assets/environment/courtyard-v2/grass-dark-0.png')}
.board-frame[data-environment] .square.light[data-grass-variant="1"]{--grass-tile:url('assets/environment/courtyard-v2/grass-light-1.png')}
.board-frame[data-environment] .square.light[data-grass-variant="2"]{--grass-tile:url('assets/environment/courtyard-v2/grass-light-2.png')}
.board-frame[data-environment] .square.light[data-grass-variant="3"]{--grass-tile:url('assets/environment/courtyard-v2/grass-light-3.png')}
.board-frame[data-environment] .square.dark[data-grass-variant="1"]{--grass-tile:url('assets/environment/courtyard-v2/grass-dark-1.png')}
.board-frame[data-environment] .square.dark[data-grass-variant="2"]{--grass-tile:url('assets/environment/courtyard-v2/grass-dark-2.png')}
.board-frame[data-environment] .square.dark[data-grass-variant="3"]{--grass-tile:url('assets/environment/courtyard-v2/grass-dark-3.png')}
.board-frame[data-environment] .square.selected:before{background-image:linear-gradient(#cfac5366,#cfac5366),var(--grass-tile);box-shadow:inset 0 0 0 3px #f0d488}
.board-frame[data-environment] .square:hover:before{filter:brightness(1.08)}
.board-frame[data-environment].high-contrast .square.light:before{background:#a4b589}
.board-frame[data-environment].high-contrast .square.dark:before{background:#243b30}
.board-frame[data-environment].high-contrast .square.selected:before{background:#9d823e;box-shadow:inset 0 0 0 3px #fff0ac}
.board-frame[data-environment] .coord{color:#faf4d4;text-shadow:1px 1px #152319,-1px -1px #152319}
.board-frame[data-environment] .square.legal:after{background:#f4e6a6;border:2px solid #233a2b}
.board-frame[data-environment] .square.capture:after{border-color:#f4cf70;border-style:dashed;border-radius:0}
.board-frame[data-environment] .square:focus-visible{outline:none}
.board-frame[data-environment] .square:focus-visible:before{box-shadow:inset 0 0 0 3px #fff0ac}
.board-frame .board .square .piece.sprite{width:var(--actor-canvas-width,180%);left:var(--actor-canvas-left,-40%)}
.square .sprite[data-modern="true"]{translate:calc((80 - var(--root-x,80)) * .625%) calc((151 - var(--root-y,151)) * .625%)}
.courtyard-tuft{position:absolute;pointer-events:none;left:65%;top:68%;width:18%;height:18%;background:url('assets/environment/courtyard-v2/tuft.png') center bottom/contain no-repeat;image-rendering:pixelated;transform-origin:50% 100%;opacity:.55}
.environment-motion:not(.is-battling):not(.environment-paused):not(.high-contrast) .courtyard-tuft{animation:courtyard-tuft-sway 7s ease-in-out var(--tuft-delay,0s) infinite}
.high-contrast .courtyard-tuft{display:none}
@keyframes courtyard-tuft-sway{0%,100%{transform:skewX(0deg)}24%{transform:skewX(5deg)}48%{transform:skewX(1deg)}72%{transform:skewX(-3deg)}}
@media(prefers-reduced-motion:reduce){.environment-motion .courtyard-tuft{animation:none!important}}
@media(max-width:680px){.board-frame[data-environment]{padding:48px 10px 14px;border-width:3px}.courtyard-rear-wall{height:48px}.courtyard-left-wall,.courtyard-right-wall{top:48px;bottom:12px}.flat-view .courtyard-left-wall,.flat-view .courtyard-right-wall{width:10px}.courtyard-front-foundation{height:12px}}
@media(max-height:500px) and (orientation:landscape){.topbar{padding:6px 16px}.brand h1{font-size:18px}.brand .eyebrow{display:none}.layout{padding:0 12px 10px;grid-template-columns:minmax(0,1fr) 220px;gap:16px}.board-frame[data-environment]{padding-top:36px}.courtyard-rear-wall{height:36px}.courtyard-left-wall,.courtyard-right-wall{top:36px}.side-panel{display:flex;padding-top:0}.board-column .game-actions{margin-top:8px}.board-column .status-row{margin-top:8px}}
@media(max-height:500px) and (orientation:landscape){
 .layout{display:block;max-width:none}.side-panel{display:none}
 .board-column{display:grid;grid-template-columns:minmax(0,1fr) 230px;column-gap:16px;row-gap:4px;align-content:start;align-items:start}
 .board-column>div:not(#boardFrame){grid-column:2;margin:0;width:100%}
 .board-column #boardFrame{grid-column:1;grid-row:1 / span 16;align-self:start;max-width:100%}
 .board-column .game-actions{display:grid;grid-template-columns:1fr 1fr;gap:4px}
 .board-column .game-actions button{padding:6px 4px;min-height:44px}
 .board-column .status-row{flex-wrap:wrap;gap:4px}
 .board-column .board-battle-notice{flex-direction:column;align-items:stretch;gap:4px}
 .board-column .board-battle-notice button{min-height:44px}
 .board-column:has(.is-battling) .game-actions,.board-column:has(.is-battling) .save-status{display:none}
 .board-column .match-clocks{padding:0;gap:4px}.board-column .chess-clock{padding:4px}
 .board-column .gallery-controls .settings-grid{grid-template-columns:1fr 1fr;gap:4px}.board-column .gallery-controls select{min-height:44px;padding:4px}
 body.gallery-view .gallery-top{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:6px}
 body.gallery-view .gallery-top label{min-width:0;max-width:none}
 body.gallery-view .gallery-top select,body.gallery-view .gallery-top button{width:100%;min-width:0}
}
