html {
  font-size: 14px;
  position: relative;
  min-height: 100%;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

main {
  min-height: calc(100vh - 170px);
  min-width: 0;
}

.btn:focus,
.btn:active:focus,
.btn-link.nav-link:focus,
.form-control:focus,
.form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem rgba(13, 110, 253, 0.35);
}

.validation-summary-valid {
  display: none;
}

.field-validation-valid {
  display: none;
}

footer {
  margin-top: auto;
}

.app-container { max-width: 1800px; min-width:0; }
.card,.card-body,.row>*,.cheat-layout>*,.recruitment-options-stack>* { min-width:0; }
.page-header > div:first-child { max-width: 72rem; }
.eyebrow { color: var(--bs-secondary-color); font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.field { display: flex; flex-direction: column; width:100%; min-width: 0; gap: .25rem; }
.field > .form-control,
.field > .form-select:not(.select2-hidden-accessible),
.field > .select2-container {
  width: 100% !important;
  min-width: 0;
}
.field-label { display:inline-flex; flex-wrap:wrap; align-items:center; gap:.35rem; min-height:1.4rem; font-weight:600; }
.field-group legend { font-size:1rem; font-weight:600; }
.help-icon { display:inline-flex; align-items:center; justify-content:center; width:1.15rem; height:1.15rem; padding:0; border:1px solid var(--bs-secondary-color); border-radius:50%; background:transparent; color:var(--bs-secondary-color); font-size:.72rem; font-weight:800; line-height:1; cursor:help; }
.help-icon:hover,.help-icon:focus-visible { color:var(--bs-body-color); border-color:var(--bs-body-color); outline:none; }
.cheat-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(300px,390px); gap:1.5rem; align-items:start; }
.cheat-form-stack, .recruitment-options-stack { display:grid; gap:1.25rem; }
.mercenary-list-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; }
.ui-toggle { display:flex; align-items:center; gap:.55rem; min-height:2rem; margin:0; padding:.15rem 0 0; }
.ui-toggle .form-check-input { float:none; flex:0 0 auto; margin:0; cursor:pointer; }
.filter-offcanvas { --bs-offcanvas-width: min(38rem, 100vw); }
.filter-offcanvas .offcanvas-header { border-bottom:1px solid var(--bs-border-color); }
.filter-offcanvas .offcanvas-body { display:flex; flex-direction:column; gap:1rem; }
.filter-offcanvas .offcanvas-body>form { min-width:0; }
.filter-offcanvas .card { box-shadow:none!important; }
.filter-pane-actions { position:sticky; bottom:-1rem; z-index:2; margin:0 -1rem -1rem; padding:1rem; border-top:1px solid var(--bs-border-color); background:var(--bs-body-bg); }
.filter-launcher { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; padding:.85rem 1rem; border:1px solid var(--bs-border-color); border-radius:var(--bs-border-radius); background:var(--bs-tertiary-bg); }
.filter-launcher>div { display:flex; flex-direction:column; gap:.15rem; }
.cheat-step-card { overflow:visible; }
.cheat-step-card .card-header { padding:.9rem 1rem; background:var(--bs-tertiary-bg); }
.cheat-step-card .card-body { padding:1.15rem; }
.step-number { display:inline-flex; align-items:center; justify-content:center; width:2rem; height:2rem; flex:0 0 2rem; border-radius:50%; color:var(--bs-primary-text-emphasis); background:var(--bs-primary-bg-subtle); border:1px solid var(--bs-primary-border-subtle); font-weight:700; }
.result-panel { position:sticky; top:6rem; }
.result-degree { display:flex; flex-direction:column; gap:.15rem; }
.result-degree strong { font-size:1.35rem; }
.result-metrics, .mechanics-grid { display: grid; gap: .75rem; }
.result-metrics { grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr)); }
.mechanics-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.result-metrics>div,.mechanics-grid>div { border: 1px solid var(--bs-border-color); border-radius: var(--bs-border-radius); padding: .75rem; background: var(--bs-tertiary-bg); }
.result-metrics span,.mechanics-grid span { display:block; color:var(--bs-secondary-color); font-size:.78rem; }
.result-metrics strong,.mechanics-grid strong { display:block; margin-top:.15rem; font-size:1.05rem; }
.mechanics-grid.compact { grid-template-columns:repeat(6,minmax(0,1fr)); }
@font-face { font-family:"Pathfinder Icons"; src:url("../fonts/Pathfinder-Icons.ttf") format("truetype"); font-display:block; }
.pill-row,.score-row { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; margin-block:.4rem; }
.pf2e-action-icon { display:inline-block; flex:0 0 auto; color:var(--bs-body-color); font-family:"Pathfinder Icons",sans-serif; font-size:1.65rem; font-style:normal; font-weight:400; font-variant-ligatures:common-ligatures discretionary-ligatures; line-height:1; vertical-align:-.18em; }
.mercenary-table td,.mercenary-table th { vertical-align:middle; }
.mercenary-table td:first-child { min-width:15rem; }
.offer-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(330px,1fr)); gap:1rem; }
.offer-card { border:1px solid var(--bs-border-color); border-radius:var(--bs-border-radius-lg); background:var(--bs-body-bg); box-shadow:var(--bs-box-shadow-sm); padding:1rem; }
.offer-card>header,.detail-hero,.offers-header { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; }
.offer-facts { display:flex; flex-wrap:wrap; gap:.45rem; margin-bottom:.8rem; }
.offer-facts span { min-width:0; overflow-wrap:anywhere; border:1px solid var(--bs-border-color); border-radius:999px; padding:.25rem .55rem; font-size:.82rem; }
.mercenary-detail { max-width:78rem; margin-inline:auto; }
.overall-score { min-width:7rem; border-radius:var(--bs-border-radius-lg); padding:.85rem; text-align:center; display:flex; flex-direction:column; }
.overall-score strong { font-size:2rem; line-height:1; }
.score-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:.75rem; }
.score-card,.list-card { border:1px solid var(--bs-border-color); border-radius:var(--bs-border-radius); padding:.8rem; background:var(--bs-tertiary-bg); }
.score-card { display:flex; justify-content:space-between; align-items:center; gap:.5rem; }
.stack-list { display:grid; gap:.75rem; }
.ability-heading,.trait-meta,.trait-heading { display:flex; flex-wrap:wrap; align-items:center; gap:.55rem; margin-bottom:.4rem; }
.attack-statline { display:flex; flex-wrap:wrap; gap:1rem; color:var(--bs-secondary-color); }
.trait-heading > span { color:var(--bs-secondary-color); font-size:.875rem; }
.trait-heading .trait-impact { margin-left:auto; font-weight:600; }
.trait-row { border:1px solid var(--bs-border-color); border-left-width:.3rem; border-radius:var(--bs-border-radius); padding:.75rem; margin-bottom:.6rem; background:var(--bs-tertiary-bg); }
.trait-row.impact-positive { border-left-color:var(--bs-success); }
.trait-row.impact-negative { border-left-color:var(--bs-danger); }
.trait-row.impact-neutral { border-left-color:var(--bs-secondary); }
.trait-meta .impact { font-weight:700; }
.trait-meta .impact.positive { color:var(--bs-success); }
.trait-meta .impact.negative { color:var(--bs-danger); }
.badge-rarity-uncommon { color:#fff; background-color:#c76600; }
.employment-highlight { display:flex; flex-direction:column; border-left:.3rem solid var(--bs-success); padding-left:1rem; margin-bottom:1rem; }
.employment-highlight strong { font-size:1.5rem; }
.info-layer { border-radius:var(--bs-border-radius); padding:1rem; margin-bottom:.75rem; border:1px solid var(--bs-border-color); }
.info-layer.public { border-left:.3rem solid var(--bs-success); } .info-layer.interview { border-left:.3rem solid var(--bs-info); } .info-layer.hidden { border-left:.3rem solid var(--bs-danger); }
.kv-list>div { display:grid; grid-template-columns:minmax(160px,.35fr) 1fr; gap:1rem; padding:.55rem 0; border-bottom:1px solid var(--bs-border-color); }
.kv-list dt { font-weight:600; } .kv-list dd { margin:0; }
.mini-breakdown { display:flex; flex-wrap:wrap; gap:.6rem; align-items:center; }
.list-toolbar,.pagination,.pagination-bottom { display:flex; align-items:center; justify-content:space-between; gap:.75rem; }
.pagination-bottom { justify-content:flex-end; margin-top:1rem; }
.subline { color:var(--bs-secondary-color); font-size:.82rem; }
.select2-container { z-index:1056; }
.select2-dropdown { z-index:1065; }
.select2-container--bootstrap-5 .select2-selection,.select2-container--bootstrap-5 .select2-dropdown { color:var(--bs-body-color); background-color:var(--bs-body-bg); border-color:var(--bs-border-color); }
.select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered,.select2-container--bootstrap-5 .select2-search__field,.select2-container--bootstrap-5 .select2-results__option { color:var(--bs-body-color)!important; }
.select2-container--bootstrap-5 .select2-search__field { background-color:var(--bs-body-bg)!important; }
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice { color:var(--bs-body-color)!important; background:var(--bs-secondary-bg)!important; border:1px solid var(--bs-border-color)!important; border-radius:var(--bs-border-radius-sm)!important; padding:.18rem .45rem!important; }
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice__remove { color:var(--bs-secondary-color)!important; background:transparent!important; border:0!important; border-right:1px solid var(--bs-border-color)!important; margin-right:.35rem!important; padding:0 .28rem 0 0!important; }
.select2-container--bootstrap-5 .select2-results__option--highlighted[aria-selected] { color:var(--bs-body-color)!important; background-color:var(--bs-tertiary-bg)!important; }
.select2-option-with-description { display:grid; grid-template-columns:minmax(8.5rem,34%) minmax(0,1fr); gap:.75rem; align-items:start; width:100%; }
.select2-option-label { font-weight:600; color:inherit; }
.select2-option-description { color:var(--bs-secondary-color); font-size:.78rem; line-height:1.25; white-space:normal; }
.mercenary-detail { max-width:72rem; margin-inline:auto; padding:.25rem .25rem 2rem; }
.mercenary-detail .detail-section { border:1px solid var(--bs-border-color); border-radius:var(--bs-border-radius-lg); background:var(--bs-tertiary-bg); padding:1rem 1.15rem; margin:0 0 1rem; }
.mercenary-detail .detail-section>h3:first-child { margin-top:0; margin-bottom:.85rem; }
.morality-boundaries { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin-top:1rem; }
.morality-boundaries>div { border:1px solid var(--bs-border-color); border-radius:var(--bs-border-radius); background:var(--bs-body-bg); padding:.85rem 1rem; }
.morality-boundaries h4 { margin:0 0 .55rem; font-size:1rem; }
.morality-boundaries ul { margin:0; padding-left:1.15rem; }
.morality-boundaries li+li { margin-top:.35rem; }
.audit-information-control { display:flex; justify-content:flex-end; }
.audit-section { border-style:dashed !important; }
.mercenary-detail .score-card,.mercenary-detail .list-card,.mercenary-detail .trait-row,.mercenary-detail .info-layer { background:var(--bs-body-bg); }
.ability-card { padding:.9rem 1rem; }
.ability-card p { margin-bottom:0; line-height:1.5; }
.modal-backdrop.show { opacity:.72; }
.modal-xl { --bs-modal-width:min(1180px,94vw); }
.landing-hero { display:grid; grid-template-columns:minmax(0,.85fr) minmax(34rem,1.15fr); gap:clamp(2rem,5vw,6rem); align-items:center; min-height:calc(100vh - 13rem); padding:clamp(1rem,5vw,5rem); }
.landing-copy { max-width:44rem; }
.landing-copy h1 { margin:.5rem 0 1.25rem; font-size:clamp(2.4rem,5vw,5rem); line-height:1.02; letter-spacing:-.045em; }
.landing-copy p { max-width:39rem; color:var(--bs-secondary-color); font-size:clamp(1.05rem,1.6vw,1.35rem); line-height:1.6; }
.landing-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.landing-actions>.card { height:100%; }
.room-management-layout { display:grid; grid-template-columns:minmax(18rem,25rem) minmax(0,1fr); gap:1.5rem; align-items:start; }
.room-management-layout>.card { position:sticky; top:6rem; }
.room-list { display:grid; gap:.85rem; }
.room-list-card .card-body { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.room-id { display:block; margin-top:.6rem; overflow-wrap:anywhere; }
.room-join-shell { width:min(100%,34rem); margin:clamp(2rem,8vh,7rem) auto; }
.room-shell { display:grid; grid-template-columns:minmax(14rem,18rem) minmax(0,1fr); gap:1.5rem; align-items:start; }
.room-participants { position:sticky; top:6rem; overflow:hidden; }
.room-participant-list { display:grid; gap:.6rem; margin:0; padding:0; list-style:none; }
.room-participant-list li { display:flex; align-items:center; gap:.5rem; padding:.55rem .65rem; border-radius:var(--bs-border-radius); background:var(--bs-tertiary-bg); overflow-wrap:anywhere; }
.room-participant-list li::before { width:.55rem; height:.55rem; flex:0 0 .55rem; border-radius:50%; background:var(--bs-success); content:""; }
.room-connection-status { color:var(--bs-secondary-color); font-size:.76rem; }
.room-connection-status.connected { color:var(--bs-success); }
.room-board { min-width:0; }
.room-board-header { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; margin-bottom:1rem; }
.room-mercenary-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.room-mercenary-card { display:flex; flex-direction:column; }
.room-mercenary-card>.info-layer.public { margin-top:auto; }
.player-safe-offer>header { margin-bottom:.35rem; }
@media (max-width: 1199.98px) { .room-mercenary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 991.98px) { .cheat-layout,.landing-hero,.room-shell { grid-template-columns:1fr; } .result-panel,.room-participants { position:static; } .landing-hero { min-height:0; padding:1rem 0 3rem; } .landing-copy { max-width:55rem; } }
@media (max-width: 767.98px) { .result-metrics,.mechanics-grid,.mechanics-grid.compact { grid-template-columns:repeat(2,minmax(0,1fr)); } .detail-hero { flex-direction:column; } .kv-list>div,.morality-boundaries { grid-template-columns:1fr; gap:.2rem; } .landing-actions,.room-management-layout { grid-template-columns:1fr; } .room-management-layout>.card { position:static; } .room-list-card .card-body,.room-board-header { align-items:stretch; flex-direction:column; } }
@media (max-width:575.98px) {
  .display-6 { font-size:calc(1.35rem + 1.2vw); }
  .result-metrics { grid-template-columns:1fr; }
  .offer-grid,.score-grid { grid-template-columns:minmax(0,1fr); }
  .room-mercenary-grid { grid-template-columns:minmax(0,1fr); }
  .offer-card>header,.offers-header,.list-toolbar,.pagination,.pagination-bottom { align-items:stretch; flex-direction:column; }
  .offer-card>header>.badge,.offers-header>.badge { align-self:flex-start; }
  .page-header>.btn { width:100%; }
  .filter-toolbar { width:100%; justify-content:space-between!important; }
  .filter-toolbar>.btn { flex:1 1 100%; }
  .mercenary-list-toolbar { align-items:stretch; flex-direction:column; }
  .filter-launcher>.btn { width:100%; }
  .select2-option-with-description { grid-template-columns:1fr; gap:.15rem; }
  .mercenary-detail { padding-inline:0; }
  code,.profile-snippet,.info-layer,.list-card { overflow-wrap:anywhere; }
}
