177 lines
4.5 KiB
SCSS
177 lines
4.5 KiB
SCSS
.token {
|
||
position: relative;
|
||
display: inline-block;
|
||
cursor: help;
|
||
color: rgba(var(--terUser), 1);
|
||
|
||
.token-tooltip {
|
||
position: absolute;
|
||
bottom: 125%;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
&:hover .token-tooltip {
|
||
display: block; // legacy fallback; .tt is JS-portal-only (no CSS hover)
|
||
}
|
||
}
|
||
|
||
.token--empty {
|
||
cursor: help;
|
||
|
||
> i { opacity: 0.4; }
|
||
}
|
||
|
||
// Aperture foundation lives universally in _base.scss; nothing
|
||
// wallet-specific to override.
|
||
|
||
.wallet-page {
|
||
position: relative;
|
||
flex: 1;
|
||
min-height: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.wallet-tokens {
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow: visible;
|
||
|
||
.token-row {
|
||
flex: 1;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
justify-content: space-evenly;
|
||
overflow: visible;
|
||
}
|
||
|
||
.token {
|
||
font-size: 1.5rem;
|
||
}
|
||
|
||
.token:hover .token-tooltip { display: none; }
|
||
}
|
||
|
||
#id_payment_methods {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
@media (max-width: 768px) {
|
||
.token .token-tooltip {
|
||
width: 13rem;
|
||
max-width: 90vw;
|
||
left: 0;
|
||
transform: none;
|
||
}
|
||
|
||
.wallet-tokens .token-tooltip {
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
}
|
||
}
|
||
|
||
|
||
// ── Wallet Shop applet ───────────────────────────────────────────────────────
|
||
// Mimics `.wallet-tokens` (horizontal row of tooltipped icons) but each tile
|
||
// carries an admin-defined catalog item + an optional `.shop-badge` (eg "×5"
|
||
// for the bundle) + a BUY-ITEM microbutton hosted in the tooltip portal.
|
||
// JS wiring lives in `apps/dashboard/static/apps/dashboard/wallet-shop.js`.
|
||
|
||
.wallet-shop {
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow: visible;
|
||
|
||
.shop-grid {
|
||
flex: 1;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
justify-content: space-evenly;
|
||
gap: 1rem;
|
||
overflow: visible;
|
||
}
|
||
}
|
||
|
||
.shop-tile {
|
||
position: relative;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 1.5rem;
|
||
color: rgba(var(--terUser), 1);
|
||
cursor: help;
|
||
}
|
||
|
||
// ×N quantity badge — top-right corner, --quaUser glyph on --quiUser bg.
|
||
// User-tweaked 2026-05-22: shrunk from 2rem → 1.5rem + nudged further up
|
||
// + right so most of the underlying tile icon stays visible.
|
||
.shop-badge {
|
||
position: absolute;
|
||
top: -0.8rem;
|
||
right: -1.2rem;
|
||
width: 1.5rem;
|
||
height: 1.5rem;
|
||
border-radius: 50%;
|
||
background: rgba(var(--secUser), 1);
|
||
color: rgba(var(--priUser), 1);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 0.75rem;
|
||
font-weight: 900;
|
||
pointer-events: none;
|
||
}
|
||
|
||
// `.tt-micro` — sibling of `.tt` on each `.shop-tile`. Holds the BUY-ITEM
|
||
// btn (or × + 'Already owned' when capped). wallet.js's tooltip handler
|
||
// clones this into `#id_mini_tooltip_portal` on hover so the btn appears
|
||
// as a small floating bubble adjacent to the main tooltip card —
|
||
// mirroring Game Kit's Equipped/Unequipped/In-Use microtooltip pattern.
|
||
// Hidden in the source DOM; only the portal clone is visible.
|
||
.tt-micro {
|
||
display: none;
|
||
}
|
||
|
||
// Wallet-side mini portal — pinned to the bottom-right of the main
|
||
// portal by wallet.js (mirrors gameboard.js's gameKit positioning).
|
||
// Mostly mirrors gameboard's mini at `_gameboard.scss:140` but allows
|
||
// the BUY-ITEM btn label to wrap onto multiple lines (gameboard's
|
||
// mini holds short status text like "In-Use: X" which wants nowrap;
|
||
// our buy btn is round + needs the label to break onto 2 lines).
|
||
#id_mini_tooltip_portal {
|
||
position: fixed;
|
||
z-index: 9999;
|
||
width: fit-content;
|
||
text-align: center;
|
||
padding: 0.5rem 0.75rem;
|
||
display: none;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
gap: 0.25rem;
|
||
|
||
.tt-buy-btn {
|
||
padding: 0.25rem 0.75rem;
|
||
white-space: normal;
|
||
word-break: normal;
|
||
line-height: 1.1;
|
||
}
|
||
|
||
// `.tt-already-owned` text — match Game Kit's "Equipped" / "In-Use: X"
|
||
// microtext styling (--secUser at full alpha, slightly bigger than
|
||
// 0.75rem) so the wallet shop's "Already owned" pill reads as the
|
||
// same widget as the gameboard's status pills.
|
||
.tt-already-owned {
|
||
font-size: 0.85rem;
|
||
margin: 0;
|
||
font-style: italic;
|
||
color: rgba(var(--secUser), 1);
|
||
white-space: nowrap;
|
||
}
|
||
|
||
&.active { display: flex; }
|
||
}
|
||
|