/* Shared visual tokens. Loaded last; equipment rarity and ocean artwork remain independent. */
:root{
 --bg:#102c36;--panel:#1b3e48;--line:#4b7079;--ink:#edf5ef;--muted:#b6ced0;--mint:#b9ddcd;--gold:#efd096;
 --bb-surface:#1b3e48;--bb-raised:#294d57;--bb-hover:#365f69;--bb-selected-ink:#173b46;
 --bb-disabled-bg:#203e48;--bb-disabled-ink:#afc4c8;--bb-radius:18px;
}
body{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink)}
main h1{font-size:clamp(1.5rem,2.5vw,1.875rem);font-weight:750;letter-spacing:-.025em}
main h2,dialog h2{font-size:1.375rem!important;font-weight:700;letter-spacing:-.015em;line-height:1.3}
main h3,dialog h3{font-size:1.0625rem!important;font-weight:650;line-height:1.4}
.character-caption h3,.inventory-heading h3,.journey-panel h3,.quest-card h3{font-size:1.0625rem}
main p,dialog p{line-height:1.6}
.muted,main small,dialog small{color:var(--muted)}
.training-label small,.training-row small,.character-caption span,
.visual-character .personal-slots h3,.battle-console .encounter-stop small{font-size:.8125rem!important;line-height:1.4}
.training-row[data-state=short] .training-buy::after{font-size:.8125rem}
.hero-strip strong,.fish-stat-grid dd,.training-buy,.recipe-progress{font-variant-numeric:tabular-nums}
main button,dialog button,main select,dialog select{border-radius:12px}
main button:not(.slot-inspect):not(.training-icon),dialog button{font-weight:600}
main :is(button,select,summary,a):focus-visible,dialog :is(button,select,summary,a):focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.arena-card,.character-sheet,.inventory-sheet,.journey-panel,.crew-training,.crew-presets{border-radius:var(--bb-radius);border-color:var(--line)}
.character-sheet,.inventory-sheet{background:var(--bb-surface)}
.journey-panel article{border-radius:12px}
.fish-stat-grid>div,.training-row{background:var(--bb-raised)}
.reef-tabs button[aria-pressed=true],.crew-subnav button[aria-pressed=true],
.fish-portraits button[aria-pressed=true],.inventory-filters button[aria-pressed=true]{
 background:var(--mint)!important;color:var(--bb-selected-ink)!important;border-color:var(--mint)!important;opacity:1
}
@media(hover:hover){
 .reef-tabs button:not([aria-pressed=true]):hover:enabled,
 .crew-subnav button:not([aria-pressed=true]):hover:enabled,
 .fish-portraits button:not([aria-pressed=true]):hover:enabled{background:var(--bb-hover);color:var(--ink)}
}
/* Disabled is a readable state, not a faded version of every child and its artwork. */
main button:disabled:not(.slot-inspect),dialog button:disabled{
 opacity:1!important;color:var(--bb-disabled-ink)!important;background:var(--bb-disabled-bg)!important;
 border:1px dashed var(--line)!important;box-shadow:none!important;cursor:not-allowed
}
.fish-portraits button:disabled canvas{opacity:.75}
.journey-panel .recipe-actions button:first-child:enabled{background:var(--mint);color:var(--bb-selected-ink)}
.nav-icon,.action-glyph{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-icon svg{width:22px;height:22px}
.action-glyph svg{width:18px;height:18px}
.nav-icon svg,.action-glyph svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:719px){main h2,dialog h2{font-size:1.25rem!important}}
@media(prefers-contrast:more){:root{--muted:#d7e6e5;--line:#8bafb7;--bb-disabled-ink:#d0dedd}}
