/*
 * BitNook typography bible · Holmgard parity (readability-floor v50,
 * sitewide consistency v60, desktop bump v18).
 * Use Quicksand for content and short mono uppercase labels.
 * Tiny glyphs and actual iOS-size widget previews retain their own fit rules.
 * Loaded last; overrides older fixed 8–11px components, not tier colors.
 */
:root{
  --bn-type-body:14px;
  --bn-type-support:12px;
  --bn-type-micro:11px;
  --bn-type-card:17px;
  --bn-type-section:21px;
  --bn-type-page:29px;
  --bn-type-value:25px;
}
@media(min-width:901px){
  :root{
    --bn-type-body:16px;
    --bn-type-support:14px;
    --bn-type-micro:12px;
    --bn-type-card:19px;
    --bn-type-section:23px;
    --bn-type-page:33px;
    --bn-type-value:29px;
  }
}
/* Default paragraphs + summaries, rather than forced font sizes on all children. */
:root body{font-size:var(--bn-type-body);line-height:1.45}
:root #view :is(.bp-card,.card,.section-card,.tool-row,.bn-guide-page,
  .bn-project-group,.bn-project-detail,.bn-rich-session,.bn-vitals-card){
 font-size:var(--bn-type-body);
}
:root #view p:not(.eyebrow):not(.smallcaps):not(.upper),
:root #view .page-description,
:root #view .bp-note,
:root #view .bn-guide-note,
:root #view .bn-project-note,
:root #view .bn-data-caption,
:root #view .bn-rich-foot,
:root #view .bn-xp-alert-copy,
:root #view .bn-checkin-note,
:root #view .bn-insight-explain,
:root #view .bn-roster-note,
:root #view .bn-studio-preview-note,
:root #view .bn-stream-note,
:root #view .bn-photo-note,
:root #view .bn-shelf-note{
 font-size:var(--bn-type-support)!important;
 line-height:1.55;
}
:root #view :is(.upper,.smallcaps,.eyebrow,.detail-label){
 font-size:var(--bn-type-micro)!important;
 line-height:1.4;
 font-family:var(--font-mono,ui-monospace,monospace)!important;
 letter-spacing:.07em;
}
:root #view .page-title{
 font-size:var(--bn-type-page)!important;
 line-height:1.12;
 letter-spacing:-.034em;
}
:root #view :is(.bp-card h2,.section-card h2,.bn-rich-heading h2,
 .bn-guide-page h2,.bn-project-group-head h3,.bn-insight-panel h3){
 font-size:var(--bn-type-section)!important;
 line-height:1.22;
}
:root #view :is(.card .mini-hdr,.card .mini-hdr>span:first-child,
 .bn-skill-card .bn-skill-name,.bn-studio-toolbar h2,
 .bn-studio-type-name,.bn-market-variant h3){
 font-size:var(--bn-type-card)!important;
 line-height:1.3;
}
/* Dashboard: visual hierarchy follows Holmgard's named metric > stat > note. */
:root #view :is(.hero-name,.hero-copy .hero-name){font-size:clamp(25px,2.1vw,31px)!important}
:root #view :is(.streak-number,.bn-daily-card .daily-title,
 .bn-streak-hero-total span,.bn-project-group-head h3){
 font-size:var(--bn-type-card)!important;
}
:root #view .streak-number{font-size:clamp(21px,2vw,27px)!important}
:root #view :is(.streak-sub,.streak-foot,.streak-week-head,
 .week-detail .week-day,.week-day>span,.streak-strip .bn-data-caption,
 .bn-checkin-calendar .checkin-day,.bn-streak-week .week-day){
 font-size:var(--bn-type-support)!important;line-height:1.45;
}
:root #view :is(.streak-strip .checkin-btn,.bn-daily-edit,.bn-shelf-tabs button){
 font-size:var(--bn-type-support)!important;
}
:root #view :is(.bn-daily-card .bn-stat-label,.bn-daily-card .bn-stat-caption,
 .bn-daily-card .bn-daily-meta,.bn-daily-card .bn-daily-state,
 .bn-daily-card .bn-daily-ring-content small,
 .bn-daily-card .bn-live-mark,.bn-daily-card .bn-stat-amount,
 .bn-daily-card .bn-daily-meta strong){
 font-size:var(--bn-type-micro)!important;line-height:1.45;
}
:root #view .bn-daily-card .bn-stat-main{
 font-size:clamp(27px,2.2vw,36px)!important;
}
:root #view .bn-daily-card .bn-daily-ring-content strong{
 font-size:clamp(26px,2.15vw,34px)!important;
}
:root #view .bn-vital :is(small,.bn-vital-name){
 font-size:var(--bn-type-support)!important;line-height:1.4
}
:root #view .bn-vital b{font-size:clamp(19px,1.7vw,24px)!important}
:root #view :is(.bn-vitals-card .bn-data-foot,.bn-vitals-card .bn-data-caption,
 .bn-region-select,.bn-refresh,.bn-vitals-actions button,
 .bn-dashboard-status,.bn-data-foot){font-size:var(--bn-type-support)!important}
:root #view .bn-quick-info b{font-size:var(--bn-type-support)!important;line-height:1.3}
:root #view .bn-quick-info small,
:root #view .bn-quick-left small,
:root #view .bn-quick-row .bn-quick-tier,
:root #view .bn-quick-row .bn-quick-left small{
 font-size:var(--bn-type-micro)!important;line-height:1.35;
}
:root #view :is(.bn-inv-tabs button,.bn-inv-open,.bn-inv-label,
 .bn-inv-widget .bn-dash-item,.bn-dash-item,
 .bn-dash-container-copy small,.bn-item-info small,
 .bn-inv-widget .bn-data-foot,.bn-inventory-warning,
 .bn-inventory-tags span){
 font-size:var(--bn-type-support)!important;line-height:1.35
}
:root #view .bn-inv-tabs button{min-height:39px;padding:8px 4px}
:root #view :is(.bn-rich-skill strong,.bn-rich-skill .bn-skill-label){
 font-size:var(--bn-type-support)!important;line-height:1.3;
}
:root #view :is(.bn-rich-skill small,.bn-rich-skill .bn-skill-sub,
 .bn-rich-skill .bn-skill-tool,.bn-rich-skill .bn-skill-level,
 .bn-rich-skill .bn-skill-pct){font-size:var(--bn-type-micro)!important}
/* Skills and gear: titles first, levels second, then tool details. */
:root #view :is(.bn-skill-card .bn-skill-left,
 .bn-skill-card .bn-skill-level,
 .bn-skill-card .bn-skill-rank,
 .bn-skill-card .bn-skill-tool-meta strong){
 font-size:var(--bn-type-support)!important;
 line-height:1.4;
}
:root #view :is(.bn-skill-card .bn-skill-tool-meta small,
 .bn-skill-card .bn-skill-tool-meta em,
 .bn-skill-card .bn-skill-foot,.bn-skill-card .bn-skill-progress-copy,
 .bn-level-legend span,.bn-skill-card .bn-skill-sub){
 font-size:var(--bn-type-micro)!important;line-height:1.4;
}
:root #view :is(.bn-gear-set b,.bp-gear-item b,
 .bn-equip-main b,.bn-equip-family-name,
 .bn-eq-detail-hero strong,.bn-eq-compare-item strong,
 .bn-market-listing b,.bn-eq-market-best b){
 font-size:var(--bn-type-support)!important;
}
:root #view :is(.bp-gear-text small,.bn-equip-main small,
 .bn-eq-detail-top p,.bn-eq-detail-hero small,
 .bn-eq-detail-properties small,.bn-eq-recipe small,
 .bn-market-variant small,.bn-gear-upgrade-row small,
 .bn-market-listing small,.bn-eq-compare-warning,
 .bn-eq-variant-chip,.bn-eq-family-legend){
 font-size:var(--bn-type-micro)!important;line-height:1.5;
}
:root .modal :is(.bn-eq-detail,.bn-project-detail){
 font-size:var(--bn-type-body)!important;line-height:1.55;
}
:root .modal .bn-eq-detail-top h2{font-size:var(--bn-type-section)!important}
:root .modal :is(.bn-eq-detail-section strong,.bn-project-guide-recipe>b,
 .bn-eq-compare-section th){font-size:var(--bn-type-support)!important}
/* Projects, calculator, inventories and the compendium all follow same scale. */
:root #view :is(.bn-project-item,.bn-project-resource-main,
 .bn-project-resource-name,.bn-project-material-name,
 .bn-project-station-name,.bp-project-row span,
 .bp-pt-station span,.bp-pt-group summary,
 .bn-storage-summary strong,.bn-storage-category summary,
 .bn-storage-container summary,.bn-outfit-row b,
 .bn-inventory-row b,.bn-item-info strong,
 .bn-guide-copy strong,.bn-guide-item strong,
 .bn-calc-option,.bn-calc-route strong,
 .bn-calc-clean-material strong){
 font-size:var(--bn-type-support)!important;line-height:1.42
}
:root #view :is(.bn-project-item small,.bn-project-item-meta,
 .bn-project-resource-line small,.bn-project-detail-stats small,
 .bn-project-tier-needs button,.bn-project-extra,
 .bn-project-item-count,.bp-project-row small,
 .bp-pt-station small,.bp-pt-group small,
 .bn-storage-summary small,.bn-storage-count,
 .bn-inventory-row small,.bn-house-line small,
 .bn-outfit-row small,.bn-guide-copy small,
 .bn-guide-count,.bn-guide-detail-row small,
 .bn-guide-filters label,.bn-citizen-toolbar label,
 .bn-guide-detail-row .detail-label,
 .bn-calc-extra-metrics small,.bn-calc-option small,
 .bn-calc-plan-summary small){
 font-size:var(--bn-type-micro)!important;line-height:1.5
}
:root #view .bn-guide-detail-row{font-size:var(--bn-type-support)!important}
:root #view .bn-project-percent-label button,
:root #view .bn-project-summary-ring span{font-size:var(--bn-type-value)!important}
:root #view .bp-pt-summary strong{font-size:var(--bn-type-value)!important}
:root #view :is(.bp-pt-actions button,.bp-pt-source-select button,
 .bn-project-tier-filter button,.bn-project-cat-action,
 .bn-project-group-head button,.bn-preset-tabs button,
 .bn-calc-mode-types button,.bn-calc-submit,
 .bn-eq-detail-close,.bn-eq-compare-from-detail,
 .bn-inventory-controls input,.bn-inventory-controls select,
 .bn-guide-filters select,.bn-citizen-toolbar select){
 font-size:var(--bn-type-support)!important;
}
:root #view :is(.bn-storage-summary-icon,.bn-project-icon-wrap,
 .bn-eq-detail-photo,.bn-equip-img){flex-shrink:0}
/* XP: active action, session and settings, including alerts popup. */
:root #view :is(.bn-xp-main-top .upper,.bn-xp-current-action strong,
 .bn-xp-craft-name span,.bn-xp-session-polished .bn-session-grid span,
 .bn-xp-settings-fold summary span,.bn-home-xp-eta span,
 .bn-home-xp-eta small,.bn-xp-main-foot,
 .bn-xp-history small,.bn-passive-item small){
 font-size:var(--bn-type-micro)!important;line-height:1.45
}
:root #view :is(.bn-xp-current-action,.bn-xp-current-action span,
 .bn-xp-craft-name,.bn-xp-controls label,
 .bn-xp-controls button,.bn-xp-alert-launch button,
 .bn-xp-live-pill,.bn-session-grid>div span,
 .bn-xp-history>div,.bn-passive-item b){
 font-size:var(--bn-type-support)!important;line-height:1.45;
}
:root #view .bn-session-grid strong{
 font-size:clamp(20px,1.8vw,27px)!important;line-height:1.18
}
:root #view .bn-xp-main :is(h2,.bn-xp-skill-name){
 font-size:var(--bn-type-section)!important;
}
:root #view .bn-xp-main .bn-xp-goal-value{font-size:var(--bn-type-value)!important}
:root .bn-xp-notify-dialog{font-size:var(--bn-type-body)!important}
:root .bn-xp-notify-dialog :is(.bn-xp-notify-header h2,
 .bn-xp-notify-header strong){font-size:var(--bn-type-section)!important}
:root .bn-xp-notify-dialog :is(.bn-xp-notify-event-head strong,
 .bn-xp-notify-event-title,.bn-xp-notify-event b){
 font-size:var(--bn-type-support)!important
}
:root .bn-xp-notify-dialog :is(.bn-xp-notify-header span,
 .bn-xp-notify-event-head small,.bn-xp-notify-character small,
 .bn-xp-notify-volume small,.bn-xp-notify-history time,
 .bn-xp-notify-muted,.bn-xp-notify-character label,
 .bn-xp-notify-volume label,.bn-xp-notify-event-foot label){
 font-size:var(--bn-type-micro)!important;line-height:1.48
}
:root .bn-xp-notify-dialog :is(button,select,input){
 font-size:var(--bn-type-support)!important
}
/* Citizens: large selected summary, comfortably readable separate matrix. */
:root #view .bn-roster-compare-card header strong{
 font-size:var(--bn-type-card)!important;line-height:1.3
}
:root #view :is(.bn-roster-compare-card header small,
 .bn-roster-metrics small,.bn-roster-facts span,
 .bn-roster-bar>span,.bn-roster-bar>b,
 .bn-roster-controls label,.bn-roster-skill-chips span,
 .bn-analytics-level-items>span,.bn-insight-legend,
 .bn-roster-matrix-head span,.bn-insight-table-header>span,
 .bn-matrix-person small,.bn-roster-name small){
 font-size:var(--bn-type-micro)!important;line-height:1.42;
}
:root #view :is(.bn-roster-metrics strong,.bn-roster-facts strong,
 .bn-roster-total b){font-size:clamp(18px,1.65vw,24px)!important}
:root #view :is(.bn-citizen-table,.bn-insight-table,
 .bn-citizen-skill,.bn-roster-matrix table,
 .bn-roster-matrix .bn-matrix-name,
 .bn-roster-name button){
 font-size:var(--bn-type-support)!important;
}
:root #view .bn-insight-table tbody th{
 font-size:var(--bn-type-support)!important
}
:root #view .bn-insight-table thead th,
:root #view .bn-roster-matrix thead th button,
:root #view .bn-citizen-table thead th{
 font-size:var(--bn-type-micro)!important;
}
:root #view .bn-roster-matrix .bn-matrix-person{min-width:182px}
:root #view .bn-roster-matrix .bn-matrix-name{max-width:185px}
:root #view .bn-roster-matrix tbody :is(th,td){
 padding-block:11px
}
:root #view .bn-insight-graph-scroll svg text{
 font-size:12px!important;
}
/* Character selection, navigation and search results. */
:root :is(.bn-desktop-link,.bn-desktop-sidebar-footer,
 .bn-theme-menu-copy strong,.bn-theme-menu-choice,
 .bn-mode-control,.bn-mode-switch button){
 font-size:var(--bn-type-support)!important;
}
:root :is(.bn-desktop-brand small,.bn-desktop-nav-heading,
 .bn-theme-menu-copy small,.bn-desktop-sidebar-footer span){
 font-size:var(--bn-type-micro)!important;line-height:1.4;
}
:root #view :is(.bp-result span,.bp-person,
 .bp-selection b,.bp-selection button,
 .bp-row-label b,.bp-card button:not(.bn-shelf-remove),
 .bn-shelf-copy strong,.bn-shelf-use,.bn-shelf-add,
 .bn-shelf-tabs button,.bn-shelf-inline-add,
 .bn-shelf-deselect,.bn-roster-actions button){
 font-size:var(--bn-type-support)!important;
}
:root #view :is(.bp-result small,.bp-row-label span,
 .bp-selection small,.bp-person small,
 .bn-shelf-copy small,.bn-shelf-limit,.bn-shelf-note,
 .bn-shelf-ribbon>div:first-child span,
 .bn-shelf-active,.bn-shelf-counter){
 font-size:var(--bn-type-micro)!important;line-height:1.4;
}
:root #view .bn-shelf-ribbon>div:first-child strong{
 font-size:var(--bn-type-body)!important;
}
:root #view :is(.bp-search input,.bp-field,
 .bp-edit-row select,.bp-pt-field-grid input,
 .bp-pt-field-grid select,.bp-pt-actions select){
 font-size:var(--bn-type-support)!important;
}
/* Widget Studio's *editor* uses readable type, but small real-size
   widget art remains compact so nothing overflows at 168px. */
:root #view :is(.bn-studio-toolbar,.bn-studio-size-switch button,
 .bn-studio-type-list button,.bn-studio-editor-actions button,
 .bn-stream-controls label,.bn-studio-preview-note,
 .bn-studio-editor-actions>span,.bn-studio-type-description,
 .bn-studio-widget-chooser,.bn-studio-stream-copy){
 font-size:var(--bn-type-support)!important;
}
:root #view :is(.bn-studio-type-list small,
 .bn-stream-title small,.bn-studio-info small,
 .bn-studio-size-switch button small){
 font-size:var(--bn-type-micro)!important;
}
/* Compact in-preview text is a separate device constraint. */
:root #view .bn-studio-preview.is-small :is(.bn-studio-widget-label,
 .bn-studio-widget-foot,.bn-studio-skills>div>span,
 .bn-studio-stat>small,.bn-studio-quickstats){font-size:9px!important}
:root #view .bn-studio-preview.is-medium :is(.bn-studio-widget-label,
 .bn-studio-stat>small,.bn-studio-quickstats){font-size:11px!important}
:root #view .widget.widget-small :is(.sm-eyebrow,.sm-tiny,
 .sm-foot,.sm-skill-name,.sm-check-status){font-size:9px!important}
/* Readability and wrapping safeguards for narrow mobile viewports */
@media(max-width:600px){
 :root{--bn-type-card:17px;--bn-type-section:21px;--bn-type-page:27px}
 :root #view .bn-inv-tabs{gap:3px}
 :root #view .bn-inv-tabs button{font-size:11px!important;padding:7px 2px;min-width:0}
 :root #view .bn-shelf-ribbon{flex-wrap:wrap}
 :root #view .bn-shelf-tabs{flex-wrap:wrap;justify-content:flex-start}
 :root #view .bn-studio-editor-actions{flex-wrap:wrap}
 :root #view :is(.bn-roster-metrics,.bn-session-grid,.bn-project-detail-stats){min-width:0}
 :root #view .bn-quick-info,
 :root #view .bn-item-info,
 :root #view .bn-eq-detail-hero>div,
 :root #view .bn-roster-matrix .bn-matrix-person>span{min-width:0}
}
