/*
 * Match layout owns geometry only. The rest of the site's stylesheet owns
 * colors, card appearance, animations, and dialogs. Keeping the battlefield
 * inside one fixed design canvas prevents viewport breakpoints from resizing
 * its fields, hand, and floating controls independently.
 */
html:has(.match-viewport),body:has(.match-viewport),#app:has(.match-viewport){width:100%;height:100%;min-width:0;min-height:0;overflow:hidden}
.match-viewport{position:fixed;inset:0;z-index:0;width:100vw;height:100dvh;min-width:0;min-height:0;overflow:hidden;contain:strict;isolation:isolate}
.match-canvas{position:absolute;left:calc(50% - 800px);top:calc(50% - 450px);width:1600px;max-width:none;height:900px;max-height:none;min-width:1600px;min-height:900px;margin:0;padding:10px;display:block;overflow:hidden;transform:scale(var(--match-scale,1));transform-origin:center}

.match-canvas .arena{position:absolute;inset:10px 118px 10px 10px;width:auto;height:auto;max-height:none;min-width:0;min-height:0;display:grid;grid-template-rows:repeat(2,minmax(0,1fr)) 132px;gap:10px;overflow:visible}
.match-canvas .player-zone{position:relative;width:100%;height:100%;min-width:0;min-height:0;padding:8px;display:grid;grid-template-columns:156px 104px minmax(0,1fr) 104px;grid-template-rows:minmax(0,1fr);grid-template-areas:"identity zones-primary board zones-secondary";gap:8px;align-self:stretch;justify-self:stretch;overflow:hidden}
.match-canvas .identity{grid-area:identity;min-width:0;padding:6px;overflow:visible}
.match-canvas .identity .match-avatar{width:64px;margin-bottom:6px}
.match-canvas .identity .kicker{font-size:12px}
.match-canvas .identity h2{margin:3px 0;font-size:22px;overflow:visible;text-overflow:clip;white-space:normal}
.match-canvas .identity .life{font-size:38px}
.match-canvas .identity .player-deck-name{display:grid;gap:1px;max-width:100%;margin:1px 0 5px;font-size:11px;line-height:1.15}
.match-canvas .identity .player-deck-name small{color:var(--muted);font-size:9px;letter-spacing:.08em;text-transform:uppercase}
.match-canvas .identity .player-deck-name b{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--ink);font-weight:700}
.match-canvas .identity .badge,.match-canvas .opponent-pile-counts{max-width:none;padding:6px 10px;font-size:12px;line-height:normal;overflow:visible;text-overflow:clip;white-space:normal}

.match-canvas .board{grid-area:board;width:100%;max-width:none;height:100%;max-height:100%;min-width:0;min-height:0;aspect-ratio:auto;display:grid;grid-template-columns:repeat(4,124px)!important;grid-template-rows:repeat(2,172px)!important;grid-auto-flow:row;align-content:center;justify-content:center;align-self:stretch;justify-self:stretch;column-gap:80px;row-gap:10px;contain:none}
.match-canvas .slot{position:relative;width:124px;height:172px;min-width:124px;min-height:172px;max-width:124px;max-height:172px;overflow:visible;font-size:11px}
.match-canvas .slot>.mini-card{position:relative!important;inset:auto!important;flex:0 0 116px!important;width:116px!important;height:164px!important;max-width:116px!important;max-height:164px!important;min-width:116px!important;min-height:164px!important;aspect-ratio:auto!important;transform:none;contain:layout paint}
.match-canvas .my-zone .attachment-tabs,.match-canvas .spectator-zone:nth-child(2) .attachment-tabs{left:auto;right:-58px;top:50%;bottom:auto;transform:translateY(-50%)}
.match-canvas .opponent-zone .attachment-tabs,.match-canvas .spectator-zone:nth-child(1) .attachment-tabs{left:-58px;right:auto;top:50%;bottom:auto;transform:translateY(-50%)}
.match-canvas .mini-card{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 29px;align-items:stretch}
.match-canvas .mini-card>.card-art-block{grid-column:1;grid-row:1;width:100%;height:100%;aspect-ratio:auto}
.match-canvas .mini-card .card-art-frame{width:100%;height:auto;min-height:0;padding-top:0;aspect-ratio:auto;flex:1 1 auto}
.match-canvas .mini-card .card-art-block .stats{height:18px;min-height:18px;flex:0 0 18px;padding:1px 2px;font-size:8px}
.match-canvas .mini-card .unit-level-badge{width:17px;height:17px;font-size:12px}
.match-canvas .mini-card>.copy{grid-column:1;grid-row:2;min-width:0;min-height:0;padding:4px 3px;display:flex;align-items:center;justify-content:center;text-align:center}
.match-canvas .mini-card h4{display:-webkit-box;margin:0;overflow:hidden;font-size:10px;line-height:1.04;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.match-canvas .slot>.mini-card>.copy p,.match-canvas .slot>.mini-card>.copy blockquote{display:none}
.match-canvas .slot>.position-badge{right:calc(50% - 60px);top:3px;bottom:auto;min-width:38px;height:23px;padding:1px 3px;grid-template-columns:14px 1fr}
.match-canvas .slot>.position-badge>span{font-size:12px}.match-canvas .slot>.position-badge b{font-size:7px}
.match-canvas .slot>.ability-button{left:calc(50% + 58px);right:auto;top:8px;max-width:116px;padding:4px 7px;font-size:8px;white-space:nowrap}
.match-canvas .slot>.set-effect-button{right:calc(50% - 62px);top:4px;max-width:124px;padding:3px 5px;font-size:7px}
.match-canvas .removal-ghost{inset:50% auto auto 50%;width:180px;height:252px}
.match-canvas .removal-ghost .mini-card{width:180px!important;height:252px!important;min-width:180px!important;min-height:252px!important;max-width:180px!important;max-height:252px!important;grid-template-columns:minmax(0,1fr);grid-template-rows:132px minmax(0,1fr);border-width:3px;box-shadow:0 12px 28px #000d17c9}
.match-canvas .removal-ghost .mini-card>.copy{grid-column:1;grid-row:2;min-height:0;padding:8px 9px;display:block;overflow:hidden;text-align:left}
.match-canvas .removal-ghost .mini-card h4{display:block;margin:0 0 6px;font-size:15px;line-height:1.05;white-space:normal}
.match-canvas .removal-ghost .mini-card>.copy p{display:block!important;margin:4px 0 0;font-size:9px;line-height:1.16;color:#fff4ee}
.match-canvas .removal-ghost .mini-card>.copy blockquote{display:none}
.match-canvas .removal-ghost .mini-card>.copy .reminder-text{font-size:8px;opacity:.82}

.match-canvas .hand{min-width:0;min-height:0;display:flex;align-items:end;justify-content:center;gap:5px;overflow:visible;padding:0 360px}
.match-canvas .hand-choice,.match-canvas .hand .card{width:100px;flex:0 0 100px}
.match-canvas .hand-choice{left:var(--hand-pixel-snap,0px)}
.match-canvas .hand-choice>.ability-button{left:50%;right:auto;top:auto;bottom:calc(100% + 8px);z-index:140;max-width:150px;transform:translateX(-50%);white-space:nowrap}

.match-canvas .field-zone-groups{display:contents}
.match-canvas .field-zone-strip{min-width:0;width:104px;height:100%;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(3,minmax(0,1fr));gap:6px}
.match-canvas .field-zone-strip[data-zone-side="primary"]{grid-area:zones-primary}
.match-canvas .field-zone-strip[data-zone-side="secondary"]{grid-area:zones-secondary}
.match-canvas .field-zone-count{min-width:0;height:auto;padding:5px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;overflow:hidden}
.match-canvas .field-zone-count strong{font-size:17px}
.match-canvas .field-zone-count span{max-width:100%;font-size:9px}
.match-canvas .match-status-hud{position:absolute;z-index:155;top:50%;right:0;left:auto;width:108px;height:330px;min-height:0;padding:13px 8px;display:flex;flex-direction:column;align-items:stretch;gap:10px;transform:translateY(-50%);border-radius:12px 0 0 12px}
.match-canvas .match-status-hud .turn-phase-copy{text-align:center}
.match-canvas .match-status-hud h3{margin:5px 0 0;line-height:1.05}
.match-canvas .match-status-hud .turn-player,.match-canvas .match-status-hud .active-phase{display:block;overflow:hidden;text-overflow:ellipsis}
.match-canvas .match-status-hud .turn-player{font-size:10px;white-space:nowrap}
.match-canvas .match-status-hud .active-phase{margin-top:5px;color:#fff4ee;font-size:16px}
.match-canvas .match-status-hud .kicker{font-size:9px;line-height:1.2}
.match-canvas .match-status-hud .status-context{display:block;margin-top:5px;color:#d9bcaf;font-size:7px;text-transform:uppercase}
.match-canvas .match-status-hud .turn-clock{width:100%;min-width:0;margin:0;padding:6px 4px;display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:3px;text-align:center}
.match-canvas .match-status-hud .turn-clock>span,.match-canvas .match-status-hud .turn-clock>small{font-size:6px}
.match-canvas .match-status-hud .turn-clock>strong{grid-column:1;grid-row:auto;font-size:17px}
.match-canvas .match-status-hud .phase-list{flex:1;min-height:70px;margin:0;display:flex;flex-direction:column;gap:5px}
.match-canvas .match-status-hud .phase{width:100%;height:auto;min-height:8px}

.match-canvas .match-bottom-controls{position:absolute;z-index:160;right:16px;bottom:14px;width:348px;min-height:112px;display:grid;grid-template-columns:74px minmax(0,1fr);align-items:end;gap:7px;pointer-events:auto}
.match-canvas .match-log-toggle{height:42px;align-self:end}
.match-canvas .actions{min-height:0;padding:6px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:34px 38px 38px;gap:5px}
.match-canvas .actions .btn{height:38px;min-height:38px;padding:4px 7px;font-size:10px}
.match-canvas .action-note{font-size:9px;padding:3px}
.match-canvas .zone-abilities{position:absolute;z-index:160;left:16px;bottom:62px;width:300px;max-height:160px;overflow:auto}
.match-canvas .match-log-panel{position:absolute;z-index:210;left:18px;bottom:62px;width:440px;height:330px;padding:13px;display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;overflow:hidden;pointer-events:auto}
.match-canvas .match-log-panel[hidden]{display:none}
.match-canvas .match-log-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.match-canvas .match-log-panel header strong{font:20px Marcellus,serif}
.match-canvas .match-log-panel .log{min-height:0;overflow:auto;display:flex;flex-direction:column;gap:8px;font-size:12px}
.match-canvas .match-tutorial-panel{position:absolute;z-index:165;left:16px;bottom:62px;width:330px;max-height:330px;overflow:auto}
.match-canvas .match-tutorial-panel .tutorial-guide{margin:0}

.match-canvas .spectator-arena{grid-template-rows:repeat(2,minmax(0,1fr));padding-bottom:54px}
.match-canvas .spectator-controls{left:16px;right:16px;bottom:14px;width:auto;min-height:42px;grid-template-columns:76px 1fr auto;align-items:center}
.match-canvas .spectator-controls .spectator-note{justify-self:center}
