ui/bookletpage.razor.scss
// Info booklet — a fullscreen page over the lobby (2026-10-05), in the Difficulty page's and Map select's look: the books, their
// pages and the entries down the left, the entry chosen on the right. Inter, solid strips with a left rule, the gold accent.
//
// ⛔ CLASS NAMES THE LOBBY DOESN'T USE (`bk…`). This page renders INSIDE the lobby's root, so every `.lobby .x` rule in
// LobbyMenu.razor.scss reaches an element of ours called `.x` (MapBrowser.razor.scss's first note, learnt the hard way).
//
// ⚠️ `pointer-events: all`, because the lobby's root is `none`: a panel that declares neither cannot be clicked in s&box.
//
// ⚠️ SIZES IN THE 1080-HIGH UI SPACE, like the lobby's, Map select's and the Difficulty page's.
$gold: #ffd479;
.bkpage
{
font-family: Inter;
position: absolute;
top: 0px; left: 0px; right: 0px; bottom: 0px;
width: 100%;
height: 100%;
pointer-events: all;
background-color: #000;
.bkbody
{
position: absolute;
top: 0px; left: 0px; right: 0px; bottom: 0px;
width: 100%;
height: 100%;
flex-direction: row;
padding: 56px 64px;
}
// ── the left column: title, books, pages, entries ──────────────────────────
.bkleft
{
flex-direction: column;
width: 500px;
flex-shrink: 0;
}
.bktitle
{
font-size: 44px;
font-weight: 600;
color: #fff;
text-transform: uppercase;
letter-spacing: 2px;
}
.bksub
{
flex-shrink: 0;
margin-top: 4px;
font-size: 14px;
color: #7d828a;
}
// ⚠️ THE BOOKS AND THE ARSENAL'S PAGES ARE MAP SELECT'S TABS: an underline carries the choice, not a filled pill
.bktabs
{
flex-direction: row;
align-items: center;
flex-shrink: 0;
margin-top: 18px;
.bktab
{
padding: 8px 0px;
margin-right: 28px;
font-size: 15px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: #6f747c;
border-bottom: 2px solid rgba( 0, 0, 0, 0 );
cursor: pointer;
&:hover { color: #c9cdd4; }
&.on
{
color: #fff;
border-bottom: 2px solid $gold;
}
}
}
// ⚠️ THE ARSENAL'S FOUR PAGES, a smaller row under the books so the two read as two levels
.bktabs.bkpages
{
margin-top: 6px;
.bktab
{
margin-right: 22px;
font-size: 13px;
}
}
.bkhint
{
flex-shrink: 0;
margin-top: 10px;
margin-bottom: 10px;
font-size: 13px;
color: #7d828a;
}
// ⛔ THE LIST SCROLLS; ITS ROWS DO NOT SHRINK (Map select's rule): squeezed rows print their labels over each other
.bklist
{
flex-direction: column;
flex-grow: 1;
flex-shrink: 1;
overflow-y: scroll;
// ⚠️ A HEADING OVER SOME ENTRIES (weapon tech's four kinds): not a row, nothing to click
.bkheading
{
flex-shrink: 0;
margin: 14px 0px 6px 2px;
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 2px;
color: $gold;
}
.bkrow
{
flex-direction: row;
align-items: center;
flex-shrink: 0;
min-height: 44px;
padding: 6px 12px 6px 14px;
margin-bottom: 4px;
background-color: #111317;
border-left: 2px solid #2a2e36;
cursor: pointer;
// ⚠️ AN <img>, as the Wunderfizz's and the Arsenal's icons are: a perk's or a mod's own picture
.bkicon
{
width: 32px;
height: 32px;
flex-shrink: 0;
margin-right: 12px;
}
// ⚠️ AN ENTRY WITH NO PICTURE GETS A COLOURED SQUARE IN ITS PLACE (a rarity, a tech set), so the names line up
.bkswatch
{
width: 14px;
height: 14px;
flex-shrink: 0;
margin: 0px 21px 0px 9px;
}
.bklabel
{
flex-grow: 1;
font-size: 17px;
color: #b9bec6;
}
.bktag
{
flex-shrink: 0;
margin-left: 10px;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 1px;
color: #6f747c;
}
&:hover
{
background-color: #191c22;
.bklabel { color: #fff; }
}
// ⚠️ "ON" IS THE ENTRY SHOWN ON THE RIGHT
&.on
{
background-color: #1f232a;
border-left: 2px solid $gold;
.bklabel { color: #fff; }
}
// ⚠️ DESIGNED BUT NOT IN THE GAME YET (a planned ammo mod): listed, dimmed, so the booklet never sells what isn't there
&.later
{
.bklabel { color: #5c6168; }
.bkicon { opacity: 0.45; }
}
}
}
.bkfoot
{
flex-direction: row;
flex-shrink: 0;
margin-top: 18px;
.bkbtn
{
padding: 10px 18px;
margin-right: 10px;
font-size: 15px;
color: #a3a8b0;
background-color: #111317;
border-left: 2px solid #2a2e36;
cursor: pointer;
&:hover
{
color: #fff;
background-color: #191c22;
border-left: 2px solid #5a5f68;
}
}
}
// ── the entry chosen, on the right: it scrolls, its blocks do not shrink ──
.bkright
{
flex-direction: column;
flex-grow: 1;
flex-shrink: 1;
margin-left: 64px;
overflow-y: scroll;
}
.bkhead
{
flex-direction: row;
align-items: center;
flex-shrink: 0;
.bkbig
{
width: 84px;
height: 84px;
flex-shrink: 0;
margin-right: 22px;
}
.bkheadtext
{
flex-direction: column;
}
}
.bkname
{
font-size: 48px;
font-weight: 700;
color: #fff;
text-transform: uppercase;
letter-spacing: 1px;
}
// ⚠️ THE LINE UNDER THE NAME: what kind of thing it is and what it costs, in the tabs' small capitals
.bkkicker
{
margin-top: 2px;
font-size: 14px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: #8d939c;
}
.bkdesc
{
flex-shrink: 0;
max-width: 900px;
margin-top: 18px;
font-size: 20px;
color: #c9cdd4;
}
// ⚠️ A HEADING INSIDE AN ENTRY: "MAJOR AUGMENTS", "TIER 4", a tech set's name
.bksection
{
flex-shrink: 0;
margin-top: 30px;
margin-bottom: 10px;
font-size: 14px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 2px;
color: $gold;
}
.bksectionnote
{
flex-shrink: 0;
max-width: 900px;
margin-top: -4px;
margin-bottom: 12px;
font-size: 15px;
color: #8d939c;
}
// ⚠️ ONE LINE OF THE ENTRY'S CONTENTS: an augment, a tech node, an upgrade. A code or tier chip, a name, what it does.
.bkitem
{
flex-direction: row;
flex-shrink: 0;
max-width: 1000px;
padding: 10px 14px;
margin-bottom: 6px;
background-color: #111317;
border-left: 2px solid #2a2e36;
.bkchip
{
width: 46px;
flex-shrink: 0;
font-size: 15px;
font-weight: 700;
color: $gold;
}
.bkitemtext
{
flex-direction: column;
flex-grow: 1;
flex-shrink: 1;
}
.bkitemname
{
font-size: 17px;
font-weight: 600;
color: #fff;
}
.bkitemdesc
{
margin-top: 3px;
font-size: 15px;
color: #aab0b8;
}
.bkitemcost
{
flex-shrink: 0;
margin-left: 16px;
font-size: 14px;
color: #8d939c;
}
&.later
{
.bkitemname { color: #6f747c; }
.bkitemdesc { color: #5c6168; }
}
}
// ⚠️ THE TIERS SIDE BY SIDE (armor, rarity): the one chosen has the gold rule, as the Difficulty page's comparison does
.bkcards
{
flex-direction: row;
flex-wrap: wrap;
flex-shrink: 0;
margin-top: 26px;
.bkcard
{
flex-direction: column;
width: 190px;
padding: 14px 16px;
margin: 0px 10px 10px 0px;
background-color: #111317;
border-top: 2px solid #2a2e36;
cursor: pointer;
.bkcardname
{
font-size: 13px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1.5px;
color: #8d939c;
}
.bkcardbig
{
margin-top: 6px;
font-size: 26px;
font-weight: 700;
color: #9ba0a8;
}
.bkcardline
{
margin-top: 4px;
font-size: 14px;
color: #7d828a;
}
// ⚠️ A RARITY'S OWN COLOUR, as the Arsenal's cards draw it (`Rarity.HexFor`, set inline)
.bkband
{
height: 4px;
margin-top: 10px;
}
&:hover { background-color: #191c22; }
&.on
{
border-top: 2px solid $gold;
background-color: #1f232a;
.bkcardbig { color: #fff; }
}
}
}
.bknote
{
flex-shrink: 0;
margin-top: 30px;
font-size: 13px;
letter-spacing: 1px;
color: #6f747c;
}
}