.shell:has(.tabletop) .tabletop.shifting{grid-template-rows:minmax(0,1fr) 88px minmax(0,1fr)}
.tabletop.shifting .mat-center{min-height:82px;height:82px;margin:3px 0;flex:none;overflow:visible}
.tabletop.shifting .mat-center:before,.tabletop.shifting .mat-center:after{display:none}
.front-locations{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:100%;padding-right:285px;position:relative;height:100%}
.front-location{min-width:0;background:#152628 center/cover;border:1px solid #53666a;border-radius:7px;padding:6px 8px;display:flex;flex-direction:column;justify-content:center;gap:3px}
.front-location small,.front-lane small{font-size:10px;color:#a8bdbe;letter-spacing:.06em}
.front-location strong{font-size:13px}.front-location span{font-size:11px;line-height:1.2;color:#c0cdcf}
.front-location.concealed{background:repeating-linear-gradient(45deg,#17272b,#17272b 8px,#1d3034 8px,#1d3034 10px)}
.active-front{border-color:#e3bd72!important;box-shadow:inset 0 0 20px #d9b66b14,0 0 5px #d9b66b40}
.front-deck-status{position:absolute;right:0;top:0;width:270px;z-index:5;padding:9px;background:#142328;border:1px solid #6a7977;border-radius:6px;font-size:12px}
.front-deck-status summary{cursor:pointer;min-height:32px;align-content:center;color:#ead2a0}.front-deck-status p{line-height:1.5}
.tabletop.shifting .mat-field .front-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;overflow:hidden;align-items:stretch;min-height:0;height:calc(100% - 24px)}
.front-lane{min-width:0;min-height:0;border:1px solid #506463;border-radius:6px;background:#0b191c70;display:flex;flex-direction:column;overflow:hidden}
.front-lane h3{margin:0;padding:5px 7px;font-size:11px;font-weight:500;display:flex;justify-content:space-between;gap:4px}
.front-lane-cards{display:flex;justify-content:flex-start;align-items:flex-start;gap:6px;overflow:auto;padding:5px;flex:1;min-height:0;scrollbar-width:thin}
.tabletop.shifting .front-lane-cards .card{flex:0 0 114px;width:114px;max-width:none;min-height:120px}
.front-support{grid-column:1/-1;display:flex;gap:4px;overflow:auto}.front-support:empty{display:none}
.front-reveal{width:min(500px,90vw);text-align:center;max-height:75dvh;overflow:auto;animation:front-arrive .45s ease-out}.front-reveal p{font-size:16px;line-height:1.6}.front-reveal .actions{justify-content:center}.front-reveal button{min-height:44px}
@keyframes front-arrive{from{opacity:0;transform:translateY(25px) rotateY(-35deg)}to{opacity:1;transform:none}}
@media(max-width:1100px){.front-locations{padding-right:225px}.front-deck-status{width:213px}.front-location span{display:none}.tabletop.shifting .front-lane-cards .card{flex-basis:100px;width:100px}.front-lane small{display:none}}
@media(prefers-reduced-motion:reduce){.front-reveal{animation:none}}
/* Land Battle: two lanes, six explicit character spaces in each army. */
.land-locations,.tabletop.land-battle .mat-field .front-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
.land-battle .front-lane h3{font-size:14px}.land-battle .front-lane small{display:inline;font-size:12px;letter-spacing:0}
.land-battle .front-lane-cards.land-six-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(64px,1fr));gap:5px;align-items:stretch;overflow:auto}
.land-character-slot{min-width:0;min-height:0;position:relative}.land-character-slot.empty{border:1px dashed #66847b65;border-radius:5px;display:grid;place-items:center;color:#729085;font-size:12px;background:#142a2525}
.tabletop.land-battle .land-character-slot>.card{width:100%;min-width:0;min-height:64px;height:100%;padding:4px;display:grid;grid-template-columns:26px minmax(0,1fr);grid-template-rows:1fr auto;gap:3px;border-radius:5px;overflow:hidden}
.tabletop.land-battle .land-character-slot .sample-card-art,.tabletop.land-battle .land-character-slot .card-portrait{width:26px;height:32px;grid-column:1;grid-row:1;object-fit:cover}
.tabletop.land-battle .land-character-slot .card-meta{min-width:0;grid-column:2;grid-row:1}.tabletop.land-battle .land-character-slot .card-meta strong{font-size:12px;line-height:1.15;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tabletop.land-battle .land-character-slot .combat-stats{grid-column:1/-1;grid-row:2;font-size:14px;margin:0;display:flex;justify-content:space-between;white-space:nowrap}.tabletop.land-battle .land-character-slot .combat-stats small{display:none}
.land-battle .land-character-slot .line,.land-battle .land-character-slot .cost,.land-battle .land-character-slot .card-status-badges,.land-battle .land-character-slot .modifiers,.land-battle .land-character-slot .attached-equipment,.land-battle .land-character-slot .card-interactions{display:none!important}
.land-action-panel{position:fixed;z-index:55;left:50%;bottom:90px;transform:translateX(-50%);width:min(500px,90vw);padding:12px;background:#102b27fa;border:1px solid #d8bd77;border-radius:10px;box-shadow:0 10px 50px #0009;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.land-action-panel strong{width:100%}.land-action-panel button{min-height:44px}
/* Match setup uses explicit choices, two army panels and a persistent start bar. */
.setup-page .new-game-modal{width:min(1120px,96vw);max-width:1120px;max-height:94dvh;padding:24px;overflow:auto}
.mode-options{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}.mode-options button{padding:18px;text-align:left;background:#152723;border:1px solid #526a61;min-height:95px}.mode-options strong{display:block;font-size:22px}.mode-options span{display:block;font-size:14px;margin-top:8px;color:#bed0c4}.mode-options [aria-pressed=true],.difficulty-options [aria-pressed=true]{border-color:#e1c282;background:#304031;box-shadow:inset 0 0 0 1px #e1c282}
.setup-mode-note{font-size:16px;line-height:1.5;color:#c5d5cd}.setup-armies{display:grid;grid-template-columns:1fr 1fr;gap:18px}.setup-army{background:#112722;border:1px solid #3e5b4e;border-radius:9px;padding:18px}.setup-army h3{margin:0 0 15px;font-size:20px}
.setup-army .setup-fields{display:flex;flex-direction:column;gap:12px}.setup-page label{font-size:16px;gap:7px}.setup-page select,.setup-page input{width:100%;min-height:48px;padding:10px 12px;background:#091d18;color:#f2eee0;border:1px solid #718879;border-radius:6px;font-size:16px}
.setup-portrait{display:flex;gap:12px;align-items:start;margin-top:18px}.setup-portrait>.sample-card-art{width:72px;height:90px;flex-shrink:0;object-fit:cover;border-radius:6px}.setup-portrait strong{font-size:16px}.setup-portrait p{font-size:14px;line-height:1.45;margin:7px 0 0;color:#bacdc0}
.setup-page .difficulty-options{display:flex;gap:10px;margin:18px 0}.difficulty-options button{flex:1;min-height:48px}.setup-advanced summary{min-height:44px;padding:12px 0;cursor:pointer;font-size:16px}.setup-advanced p{font-size:16px;line-height:1.5}
.setup-start{position:sticky;bottom:-24px;background:#0d201df5;padding:16px 0;display:flex;justify-content:space-between;gap:20px;border-top:1px solid #516658;margin-top:18px}.setup-start strong,.setup-start small{display:block}.setup-start small{font-size:14px;color:#b3c5ba;margin-top:5px}.setup-start button{min-width:185px;min-height:52px;font-size:18px}
/* Opening cards have bounded text; the adjacent panel always holds the full effect. */
.opening-screen{padding:18px;background:#07100fed}.opening-screen .mulligan-modal{width:min(1450px,96vw);max-width:1450px;max-height:95dvh;padding:24px;display:flex;flex-direction:column;overflow:hidden}.opening-screen header p{font-size:16px}
.opening-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:20px;min-height:0;overflow:hidden}.opening-screen .mulligan-grid{display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;align-items:stretch;padding:8px 4px 15px;min-width:0;scroll-snap-type:x proximity}
.opening-screen .mulligan-card{flex:0 0 148px;width:148px;min-width:148px;max-width:148px;display:flex;flex-direction:column;gap:0;padding:0;border:2px solid #4f6c60;border-radius:9px;background:#173027;overflow:hidden;scroll-snap-align:start}.opening-screen .mulligan-card.selected{border-color:#e6c77b;box-shadow:0 0 0 2px #e6c77b33;transform:none}
.opening-inspect{display:flex;flex-direction:column;gap:8px;text-align:left;padding:10px;border:0;border-radius:0;background:transparent;color:#eee;min-height:0;flex:1;overflow:hidden}.opening-inspect .sample-card-art{height:110px;min-height:110px;max-height:110px;width:100%;object-fit:cover;border-radius:5px}.opening-inspect strong{height:38px;flex:none;font-size:14px;line-height:1.3;overflow:hidden}.opening-inspect>span{font-size:13px;line-height:1.4}.opening-inspect .opening-effect{height:73px;max-height:73px;flex:none;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;color:#c1d0c6}
.opening-replace{min-height:44px;flex-shrink:0;width:100%;border-radius:0;border:0;border-top:1px solid #597663}.opening-replace[aria-pressed=true]{background:#dec17a;color:#172319}.opening-details{overflow:auto;padding:18px;background:#11251f;border:1px solid #496457;border-radius:8px;min-height:0}.opening-details h3{font-size:20px;margin:10px 0}.opening-details p{font-size:16px;line-height:1.55;overflow-wrap:anywhere}
.opening-screen .mulligan-summary{flex-shrink:0;position:static;display:flex;justify-content:space-between;gap:12px;align-items:center;padding:16px 0 0;margin-top:12px;border-top:1px solid #476151}.opening-screen .mulligan-summary button{min-height:48px;font-size:16px}
@media(max-width:1100px){.opening-layout{grid-template-columns:minmax(0,1fr) 230px}.setup-page .new-game-modal{padding:18px}.setup-start{bottom:-18px}.setup-army{padding:12px}.tabletop.land-battle .land-character-slot>.card{grid-template-columns:1fr}.tabletop.land-battle .land-character-slot .sample-card-art,.tabletop.land-battle .land-character-slot .card-portrait{display:none}.tabletop.land-battle .land-character-slot .card-meta{grid-column:1}.tabletop.land-battle .land-character-slot .card-meta strong{font-size:12px}.opening-inspect .sample-card-art{height:85px;min-height:85px;max-height:85px}}
.tabletop.land-battle .mat-field .front-fields{grid-template-rows:minmax(0,1fr) auto}
.land-battle .front-support:not(:empty){height:38px;overflow:auto;align-items:start}
.tabletop.land-battle .front-support .card{min-width:130px;width:130px;min-height:34px;height:34px;padding:5px;display:block;overflow:hidden}.land-battle .front-support .sample-card-art,.land-battle .front-support .card-portrait,.land-battle .front-support .line,.land-battle .front-support footer,.land-battle .front-support .cost{display:none}.tabletop.land-battle .front-support .card-meta strong{font-size:12px;line-height:1.2}

/* Non-blocking Land Battle motion; no motion layer receives input. */
.land-flight{position:fixed;z-index:115;pointer-events:none;user-select:none;display:grid;place-items:center;text-align:center;padding:10px;border:1px solid #e3c987;border-radius:8px;background:#18382eee;color:#fff1ca;font-size:14px;font-weight:700;box-shadow:0 8px 24px #0008;overflow:hidden;will-change:transform,opacity}
.land-flight.card-back{background:repeating-linear-gradient(45deg,#173b34,#173b34 8px,#21483d 8px,#21483d 10px);font:700 30px Georgia,serif;color:#dabf7b}
.land-motion-surface .front-reveal{animation:none;transform-origin:center}
.land-motion-surface .front-reveal[data-front-event="dragon"]{border-color:#db9267;box-shadow:0 0 45px #b74c352b}
.land-motion-surface .front-reveal[data-front-event="weather"]{border-color:#8bb8d1;background:linear-gradient(145deg,#152a32,#0d211e)}
.land-motion-surface .front-reveal[data-front-event="march"]{border-color:#9fd6b9}
.land-motion-surface .card,.land-motion-surface .front-location{backface-visibility:hidden}
@media(prefers-reduced-motion:reduce){.land-flight{display:none}.land-motion-surface .board-change{animation:none!important}}

.land-flight img{width:100%;height:48px;object-fit:cover;border-radius:4px;display:block}.land-motion-surface .front-location{transform-style:preserve-3d}
/* Scope is readable before a player dismisses the Front result. */
.front-scope{padding:10px 14px;border:1px solid #d4b879;border-radius:6px;background:#2c3028;color:#ffe3a0;font-size:16px}
