// ── Gear button ──────────────────────────────────────────── .gear-btn { position: absolute; bottom: 0.5rem; right: 0.5rem; z-index: 1; font-size: 2rem; cursor: pointer; color: rgba(var(--secUser), 1); display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 50%; background-color: rgba(var(--priUser), 1); border: 0.15rem solid rgba(var(--secUser), 1); &.active { color: rgba(var(--quaUser), 1); border-color: rgba(var(--quaUser), 1); } } // ── Applet menu (shared structure) ───────────────────────── %applet-menu { position: absolute; bottom: 3rem; right: 0.5rem; z-index: 100; background-color: rgba(var(--priUser), 0.95); border: 0.15rem solid rgba(var(--secUser), 1); box-shadow: 0 0 0.5rem rgba(var(--secUser), 0.75), 0.12rem 0.12rem 0.5rem rgba(0, 0, 0, 0.25), ; border-radius: 0.75rem; padding: 1rem; .menu-btns { display: flex; gap: 0.25rem; margin-top: 0.75rem; } form { display: flex; flex-direction: column; gap: 0.5rem; } input[type="checkbox"] { appearance: none; -webkit-appearance: none; width: 0.9em; height: 0.9em; border: 0.1rem solid rgba(var(--secUser), 0.4); border-radius: 0.25rem; background: transparent; cursor: pointer; position: relative; flex-shrink: 0; top: 0.1em; &:checked::after { content: ''; position: absolute; left: 0.2em; bottom: 0.2em; width: 0.55em; height: 1em; border: 0.12em solid rgba(var(--ninUser), 1); border-top: none; border-left: none; transform: rotate(45deg); } } } #id_dash_applet_menu { @extend %applet-menu; } #id_game_applet_menu { @extend %applet-menu; } #id_wallet_applet_menu { @extend %applet-menu; } #id_room_menu { @extend %applet-menu; } // Page-level gear buttons — fixed to viewport bottom-right .gameboard-page, .dashboard-page, .wallet-page, .room-page { > .gear-btn { position: fixed; bottom: 4.2rem; right: 0.5rem; z-index: 202; } } #id_dash_applet_menu, #id_game_applet_menu, #id_wallet_applet_menu { position: fixed; bottom: 6.6rem; right: 1rem; z-index: 201; } // In landscape: shift gear btn and applet menus left of the footer right sidebar @media (orientation: landscape) and (max-width: 1440px) { $sidebar-w: 4rem; .gameboard-page, .dashboard-page, .wallet-page, .room-page { > .gear-btn { right: calc(#{$sidebar-w} + 0.5rem); bottom: 4.2rem; // same gap above kit btn as portrait; no page-specific overrides needed top: auto; } } #id_dash_applet_menu, #id_game_applet_menu, #id_wallet_applet_menu { right: calc(#{$sidebar-w} + 1rem); bottom: 6.6rem; // same as portrait, just shifted right of footer sidebar top: auto; } } // ── Applets grid (shared across all boards) ──────────────── %applets-grid { container-type: inline-size; --grid-gap: 0.5rem; flex: 1; overflow-y: auto; overflow-x: hidden; display: grid; grid-template-columns: repeat(12, 1fr); grid-auto-rows: 3rem; gap: var(--grid-gap); padding: 0.75rem; -webkit-overflow-scrolling: touch; mask-image: linear-gradient( to bottom, transparent 0%, black 2%, black 99%, transparent 100% ); section { border: 0.2rem solid rgba(var(--secUser), 0.5), ; box-shadow: inset -0.125rem -0.125rem 0 rgba(var(--ninUser), 0.125), inset 0.125rem 0.125rem 0 rgba(0, 0, 0, 0.8) ; background-color: rgba(0, 0, 0, 0.125); border-radius: 0.75rem; padding: 1rem; overflow: hidden; min-width: 0; grid-column: span var(--applet-cols, 12); grid-row: span var(--applet-rows, 3); @container (max-width: 550px) { grid-column: span 12; } } } #id_applets_container { @extend %applets-grid; } #id_game_applets_container { @extend %applets-grid; } #id_wallet_applets_container { @extend %applets-grid; }