my-sea portrait form-col grid fix: chain .sea-form-col.my-sea-form-col so the 2-class selector beats _card-deck.scss's base .sea-form-col { display: flex } regardless of source order (card-deck loads AFTER gameboard in core.scss, so the prior 1-class selector lost to source order and the grid never took effect)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -489,36 +489,6 @@ body.page-gameboard {
|
|||||||
flex: 0 0 16rem;
|
flex: 0 0 16rem;
|
||||||
max-width: 16rem;
|
max-width: 16rem;
|
||||||
|
|
||||||
// Portrait — split the form into two columns. LEFT carries the
|
|
||||||
// SPREAD field (label + reversal hint + combobox) above the action
|
|
||||||
// btns (AUTO DRAW / GATE VIEW + DEL); RIGHT carries the DECKS
|
|
||||||
// section (label + GRAVITY/LEVITY stacks) spanning both rows.
|
|
||||||
// Without this rearrange, on a phone-portrait viewport the stacked
|
|
||||||
// form col runs off the bottom of the viewport — DECKS lives above
|
|
||||||
// the action btns + everything below the fold (user-spec
|
|
||||||
// 2026-05-21). `.sea-form-main` uses `display: contents` so its
|
|
||||||
// `.sea-field` + `.sea-stacks` children act as direct grid items of
|
|
||||||
// `.my-sea-form-col` despite the intermediate wrapper in the DOM.
|
|
||||||
@media (orientation: portrait) {
|
|
||||||
flex: 0 0 auto;
|
|
||||||
max-width: none;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
grid-template-areas:
|
|
||||||
"field stacks"
|
|
||||||
"actions stacks";
|
|
||||||
column-gap: 1rem;
|
|
||||||
row-gap: 0.5rem;
|
|
||||||
align-items: start;
|
|
||||||
|
|
||||||
.sea-form-main { display: contents; }
|
|
||||||
.sea-field { grid-area: field; margin-bottom: 0; }
|
|
||||||
.sea-stacks { grid-area: stacks; margin: 0; justify-content: center; }
|
|
||||||
.sea-form-actions { grid-area: actions; align-self: end; padding-top: 0; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Portal the SPREAD dropdown out of `.sea-form-main`'s overflow
|
// Portal the SPREAD dropdown out of `.sea-form-main`'s overflow
|
||||||
// clip — by default the gameroom's `.sea-form-main { overflow-y:
|
// clip — by default the gameroom's `.sea-form-main { overflow-y:
|
||||||
// auto }` (from _card-deck.scss:1424) keeps the modal contents
|
// auto }` (from _card-deck.scss:1424) keeps the modal contents
|
||||||
@@ -531,6 +501,45 @@ body.page-gameboard {
|
|||||||
overflow: visible;
|
overflow: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Portrait — split the form into two columns. LEFT carries the
|
||||||
|
// SPREAD field (label + reversal hint + combobox) above the action
|
||||||
|
// btns (AUTO DRAW / GATE VIEW + DEL); RIGHT carries the DECKS
|
||||||
|
// section (label + GRAVITY/LEVITY stacks) spanning both rows.
|
||||||
|
// Without this rearrange, on a phone-portrait viewport the stacked
|
||||||
|
// form col runs off the bottom of the viewport — DECKS lives above
|
||||||
|
// the action btns + everything below the fold (user-spec
|
||||||
|
// 2026-05-21). `.sea-form-main` uses `display: contents` so its
|
||||||
|
// `.sea-field` + `.sea-stacks` children act as direct grid items of
|
||||||
|
// the form col despite the intermediate wrapper in the DOM.
|
||||||
|
//
|
||||||
|
// Selector chains `.sea-form-col.my-sea-form-col` to win against
|
||||||
|
// `_card-deck.scss`'s base `.sea-form-col { display: flex; flex-
|
||||||
|
// direction: column }` (same 1-class specificity; card-deck loads
|
||||||
|
// AFTER gameboard in `core.scss`, so source order would otherwise
|
||||||
|
// overrule my-sea's grid). Chained 2-class selector pulls
|
||||||
|
// specificity ahead regardless of source order.
|
||||||
|
@media (orientation: portrait) {
|
||||||
|
&.sea-form-col {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
max-width: none;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
grid-template-areas:
|
||||||
|
"field stacks"
|
||||||
|
"actions stacks";
|
||||||
|
column-gap: 1rem;
|
||||||
|
row-gap: 0.5rem;
|
||||||
|
align-items: start;
|
||||||
|
|
||||||
|
.sea-form-main { display: contents; }
|
||||||
|
.sea-field { grid-area: field; margin-bottom: 0; }
|
||||||
|
.sea-stacks { grid-area: stacks; margin: 0; justify-content: center; }
|
||||||
|
.sea-form-actions { grid-area: actions; align-self: end; padding-top: 0; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Bump the dropdown z-index well above the picker's stacking ints
|
// Bump the dropdown z-index well above the picker's stacking ints
|
||||||
// (cover z:3, cross z:4, modal stage z:9999 only opens on draw
|
// (cover z:3, cross z:4, modal stage z:9999 only opens on draw
|
||||||
// anyway). 1000 sits above any in-page layer the user might be
|
// anyway). 1000 sits above any in-page layer the user might be
|
||||||
|
|||||||
Reference in New Issue
Block a user