aperture architecture: lift the page-locking foundation (html/body/.container overflow:hidden + flex-column + min-height:0; .row flex-shrink:0) from 5 per-page SCSS files into _base.scss — was opt-in per page via `body.page-billboard` / `page-dashboard` / `page-gameboard` / `page-sky` / `page-wallet` etc., with 5 near-identical `html:has(body.page-X) { overflow: hidden }` + `body.page-X { … }` blocks duplicating the same rules; any page that forgot to set `page_class` in its view context (e.g. `epic.tarot_deck` — never set) rendered without the aperture, letting applet borders + titles clip past the fixed navbar/footer sidebars at narrower viewports; foundation now universal, page-specific overrides stay scoped — gameboard keeps `.container { overflow: clip }` (Firefox seat-tooltip scroll-anchoring quirk) + billboard/dashboard/gameboard keep `.row { margin-bottom: -1rem }` (h2-row tightening); page_class context vars + body class hooks preserved (FTs at test_bud_btn.py:370 / :379 still assert on them); regression gate: 60 layout-sensitive FTs (billboard, my_buds, bud_btn, applet_my_posts, dashboard, wallet, gameboard, layout_and_styling, jasmine) + 43 room FTs (gatekeeper_bud_btn, room_gatekeeper, room_sky_select, sharing) all green
Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 17:16:12 -04:00
|
|
|
// Aperture foundation now lives in _base.scss; only the dashboard-specific
|
|
|
|
|
// `.row { margin-bottom: -1rem }` pull stays here.
|
2026-03-10 01:25:07 -04:00
|
|
|
|
aperture architecture: lift the page-locking foundation (html/body/.container overflow:hidden + flex-column + min-height:0; .row flex-shrink:0) from 5 per-page SCSS files into _base.scss — was opt-in per page via `body.page-billboard` / `page-dashboard` / `page-gameboard` / `page-sky` / `page-wallet` etc., with 5 near-identical `html:has(body.page-X) { overflow: hidden }` + `body.page-X { … }` blocks duplicating the same rules; any page that forgot to set `page_class` in its view context (e.g. `epic.tarot_deck` — never set) rendered without the aperture, letting applet borders + titles clip past the fixed navbar/footer sidebars at narrower viewports; foundation now universal, page-specific overrides stay scoped — gameboard keeps `.container { overflow: clip }` (Firefox seat-tooltip scroll-anchoring quirk) + billboard/dashboard/gameboard keep `.row { margin-bottom: -1rem }` (h2-row tightening); page_class context vars + body class hooks preserved (FTs at test_bud_btn.py:370 / :379 still assert on them); regression gate: 60 layout-sensitive FTs (billboard, my_buds, bud_btn, applet_my_posts, dashboard, wallet, gameboard, layout_and_styling, jasmine) + 43 room FTs (gatekeeper_bud_btn, room_gatekeeper, room_sky_select, sharing) all green
Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 17:16:12 -04:00
|
|
|
body.page-dashboard .row {
|
|
|
|
|
margin-bottom: -1rem;
|
2026-03-06 16:39:05 -05:00
|
|
|
}
|
|
|
|
|
|
2026-03-06 18:14:01 -05:00
|
|
|
#id_dash_content {
|
|
|
|
|
flex: 1;
|
2026-03-07 15:05:49 -05:00
|
|
|
min-width: 425px;
|
2026-03-06 18:14:01 -05:00
|
|
|
overflow: hidden;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
position: relative;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#id_applets_container {
|
2026-03-11 14:50:08 -04:00
|
|
|
#id_applet_wallet {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
gap: 0.25rem;
|
|
|
|
|
}
|
2026-03-07 15:05:49 -05:00
|
|
|
|
2026-03-06 22:31:10 -05:00
|
|
|
#id_applet_palette {
|
2026-03-24 00:28:50 -04:00
|
|
|
padding: 0 0 0 2rem;
|
2026-03-06 22:31:10 -05:00
|
|
|
|
|
|
|
|
.palette-scroll {
|
|
|
|
|
display: flex;
|
2026-04-18 02:05:27 -04:00
|
|
|
gap: 1rem;
|
|
|
|
|
align-items: center;
|
2026-03-06 22:31:10 -05:00
|
|
|
overflow-x: auto;
|
2026-03-07 15:05:49 -05:00
|
|
|
padding: 0.75rem 2rem;
|
2026-03-06 22:31:10 -05:00
|
|
|
height: 100%;
|
|
|
|
|
scrollbar-width: none;
|
|
|
|
|
&::-webkit-scrollbar { display: none; }
|
2026-03-06 23:12:56 -05:00
|
|
|
mask-image: linear-gradient(
|
|
|
|
|
to right,
|
|
|
|
|
transparent 0%,
|
2026-03-07 15:05:49 -05:00
|
|
|
black 2%,
|
|
|
|
|
black 98%,
|
2026-03-06 23:12:56 -05:00
|
|
|
transparent 100%
|
|
|
|
|
);
|
2026-03-06 22:31:10 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#id_applet_username {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
2026-03-07 15:05:49 -05:00
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
|
|
form {
|
|
|
|
|
min-width: 0;
|
|
|
|
|
width: 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
|
|
.save-btn {
|
|
|
|
|
align-self: left;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-03-06 22:31:10 -05:00
|
|
|
|
|
|
|
|
.username-field {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: baseline;
|
|
|
|
|
gap: 0.1em;
|
2026-03-07 15:05:49 -05:00
|
|
|
min-width: 0;
|
|
|
|
|
overflow: hidden;
|
2026-03-06 22:31:10 -05:00
|
|
|
|
|
|
|
|
.username-at{
|
|
|
|
|
user-select: none;
|
2026-03-07 15:05:49 -05:00
|
|
|
pointer-events: none;
|
|
|
|
|
font-size: 1.8rem;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
color: rgba(var(--secUser), 0.875);
|
|
|
|
|
margin-left: 0.3rem;
|
2026-03-06 22:31:10 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input {
|
|
|
|
|
background: transparent;
|
|
|
|
|
border: none;
|
|
|
|
|
outline: none;
|
|
|
|
|
font-size: 1.8rem;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
color: rgba(var(--secUser), 0.875);;
|
|
|
|
|
font-family: inherit;
|
|
|
|
|
padding: 0;
|
2026-03-07 15:05:49 -05:00
|
|
|
flex: 1;
|
|
|
|
|
min-width: 0;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
2026-03-06 22:31:10 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2026-03-07 00:05:32 -05:00
|
|
|
|
2026-03-07 15:05:49 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@media (max-width: 550px) {
|
|
|
|
|
#id_dash_content {
|
2026-03-07 15:34:32 -05:00
|
|
|
min-width: 0;
|
2026-03-07 15:05:49 -05:00
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
2026-03-06 19:14:53 -05:00
|
|
|
}
|
|
|
|
|
|
2026-03-07 15:34:32 -05:00
|
|
|
@media (min-width: 738px) {
|
|
|
|
|
#id_dash_content {
|
|
|
|
|
min-width: 666px;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-06 01:30:31 -04:00
|
|
|
@media (orientation: landscape) {
|
2026-03-23 01:06:14 -04:00
|
|
|
// Reset the 666px min-width so #id_dash_content shrinks to fit within the
|
|
|
|
|
// sidebar-bounded container rather than overflowing into the footer sidebar.
|
|
|
|
|
#id_dash_content {
|
|
|
|
|
min-width: 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-06 19:14:53 -05:00
|
|
|
@media (max-height: 500px) {
|
|
|
|
|
body.page-dashboard {
|
|
|
|
|
.container {
|
2026-03-07 15:34:32 -05:00
|
|
|
.row {
|
|
|
|
|
padding: 0.25rem 0;
|
|
|
|
|
.col-lg-6 h2 {
|
|
|
|
|
margin-bottom: 0.5rem;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-03-06 19:14:53 -05:00
|
|
|
}
|
|
|
|
|
}
|
2026-03-06 16:39:05 -05:00
|
|
|
}
|