.lab-body {
  height: 100dvh;
  overflow: hidden;
  box-sizing: border-box;
}
.lab-page {
  max-width: 1440px;
  height: calc(100dvh - var(--nav-height));
  margin: auto;
  padding: 20px 28px 12px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-sizing: border-box;
}
.lab-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex: none;
}
.lab-heading h1 {
  font:
    clamp(30px, 4vw, 52px)/1 Impact,
    "Arial Narrow",
    sans-serif;
  margin: 0;
  letter-spacing: 1px;
}
.lab-heading h1 span {
  color: var(--accent);
}
.lab-eyebrow {
  font:
    12px Consolas,
    monospace;
  letter-spacing: 3px;
  color: var(--muted);
  margin: 0 0 7px;
}
.lab-quiet {
  background: #16191b;
  color: #aeb3b7;
  border: 1px solid #363b3f;
  padding: 10px 14px;
  font:
    12px Consolas,
    monospace;
  cursor: pointer;
}
.lab-quiet:disabled {
  opacity: 0.35;
  cursor: default;
}
.lab-build-targets {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 0;
}
.lab-build-targets > span {
  color: #8d969d;
  font:
    10px Consolas,
    monospace;
  letter-spacing: 0.13em;
  white-space: nowrap;
}
.lab-build-targets > span strong{color:var(--accent);font-weight:900}
.lab-target-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 5px;
}
.lab-target {
  border: 1px solid #363b3f;
  background: #16191b;
  color: #bec4c8;
  padding: 8px 10px;
  font:
    700 10px Consolas,
    monospace;
  letter-spacing: 0.03em;
  cursor: pointer;
  white-space: nowrap;
}
.lab-target:hover,
.lab-target:focus-visible,
.lab-target[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent);
  color: #08090a;
  outline: none;
}
.lab-workbench {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.65fr);
  gap: 16px;
  min-height: 0;
  flex: 1;
}
.lab-stage,
.lab-performance {
  background: var(--surface-panel);
  border: 1px solid #292d30;
  min-width: 0;
}
.lab-stage {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 20px;
}
.lab-stage-title {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  z-index: 3;
}
.lab-weapon-picker {
  position: relative;
  min-width: 0;
}
.lab-weapon-trigger {
  display: flex;
  align-items: center;
  gap: 15px;
  border: 0;
  padding: 0;
  background: transparent;
  color: var(--accent);
  font:
    clamp(28px, 3.5vw, 46px)/1 Impact,
    "Arial Narrow",
    sans-serif;
  letter-spacing: 1px;
  cursor: pointer;
}
.lab-weapon-trigger:hover,
.lab-weapon-trigger:focus-visible {
  color: var(--accent-tone-ff7a13);
  outline: none;
}
.lab-weapon-caret {
  width: 13px;
  height: 13px;
  margin-top: -7px;
  border-right: 3px solid currentColor;
  border-bottom: 3px solid currentColor;
  transform: rotate(45deg);
  flex: none;
}
.lab-weapon-menu {
  position: absolute;
  z-index: 10;
  top: calc(100% + 14px);
  left: 0;
  width: min(420px, calc(100vw - 64px));
  max-height: min(58dvh, 520px);
  overflow: auto;
  padding: 7px 0;
  background: #1d2023;
  border: 1px solid #303235;
  box-shadow: 0 16px 32px rgb(0 0 0 / 0.6);
}
.lab-weapon-menu[hidden] {
  display: none;
}
.lab-weapon-menu .weapon-picker-group {
  margin: 8px 0 4px;
  padding: 8px 14px 6px;
  border-top: 1px solid #35393d;
  color: var(--accent);
  font: 700 0.68rem var(--mono);
  letter-spacing: 0.15em;
}
.lab-weapon-menu .weapon-picker-group:first-child {
  margin-top: 0;
  border-top: 0;
}
.lab-weapon-menu .weapon-picker-option {
  display: block;
  width: 100%;
  padding: 10px 14px;
  border: 0;
  background: transparent;
  color: #f5f5f3;
  font: 700 0.95rem var(--font);
  text-align: left;
  cursor: pointer;
}
.lab-weapon-menu .weapon-picker-option:hover,
.lab-weapon-menu .weapon-picker-option:focus-visible,
.lab-weapon-menu .weapon-picker-option[aria-selected="true"] {
  background: var(--accent);
  color: #08090a;
  outline: none;
}
.lab-stage-title > span {
  padding-top: 6px;
  font:
    11px Consolas,
    monospace;
  color: #969ca2;
  text-align: right;
  letter-spacing: 0.06em;
}
.lab-art {
  flex: 1;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px 0;
}
.lab-art img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  max-height: 100%;
  min-height: 0;
}
.lab-slots {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  flex: none;
}
.lab-slot {
  min-width: 0;
  background: #171a1c;
  border: 1px solid #3b4044;
  color: var(--text);
  padding: 11px 9px;
  text-align: left;
  cursor: pointer;
  min-height: 76px;
}
.lab-slot:hover,
.lab-slot.is-equipped {
  border-color: var(--accent);
}
.lab-slot small {
  display: block;
  color: var(--accent);
  font:
    11px Consolas,
    monospace;
  letter-spacing: 1px;
}
.lab-slot strong {
  display: block;
  margin: 11px 0 0;
  font-size: 12px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lab-slot .slot-mark {
  display: block;
  margin-top: 7px;
  color: #8b939a;
  font:
    10px Consolas,
    monospace;
}
.lab-slot.is-equipped .slot-mark {
  color: var(--accent);
}
.lab-performance {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 18px;
}
.lab-stats-heading {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: #dfe2e4;
  font: 700 14px var(--font);
}
.lab-stats-heading span {
  color: #7e868d;
  font:
    10px Consolas,
    monospace;
}
.lab-build-price {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  white-space: nowrap;
}
.lab-build-price strong {
  color: var(--accent);
  font: 800 16px/1 Consolas, monospace;
}
.lab-performance #lab-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin-top: 14px;
  background: #292d30;
  flex: 1;
  min-height: 0;
}
.lab-stat {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  min-height: 0;
  padding: 14px;
  background: var(--surface-panel);
}
.lab-stat-label {
  color: #8d969d;
  font:
    11px Consolas,
    monospace;
  letter-spacing: 0.08em;
}
.lab-stat-label.has-explanation{align-self:flex-start;cursor:help;text-decoration:underline dotted var(--accent);text-underline-offset:4px}
.lab-stat-label.has-explanation:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:640px){.lab-stat-label.has-explanation{text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}}
.lab-stat-note .stat-measure__unit,.lab-option .option-effect .stat-measure__unit{font-size:10px}
.lab-stat-value {
  margin-top: 8px;
  color: #f4f5f5;
  font:
    700 clamp(18px, 1.8vw, 26px)/1.1 Consolas,
    monospace;
  white-space: pre-line;
  overflow-wrap: anywhere;
}
.lab-stat-note {
  min-height: 16px;
  margin-top: 7px;
  color: #7e878e;
  font:
    10px Consolas,
    monospace;
  letter-spacing: 0.03em;
}
.lab-stat.is-changed .lab-stat-value {
  color: var(--accent);
}
.lab-stat.is-changed .lab-stat-note {
  color: #c8cdd1;
}
.lab-stat.is-good .lab-stat-value,
.lab-stat-line.is-good,
.option-effect.is-good {
  color: #62cf7e;
}
.lab-stat.is-bad .lab-stat-value,
.lab-stat-line.is-bad,
.option-effect.is-bad {
  color: #ff625b;
}
.lab-stat.is-neutral .lab-stat-value,
.lab-stat-line.is-neutral,
.option-effect.is-neutral {
  color: #b8bec3;
}
.lab-stat-line {
  display: block;
}
.lab-stat-change{display:inline-block;margin-left:7px;color:#9da5aa;font:700 clamp(10px,.9vw,12px)/1.2 Consolas,monospace;vertical-align:baseline;white-space:nowrap}
.lab-stat-change.is-good{color:#62cf7e}
.lab-stat-change.is-bad{color:#ff625b}
@media(max-width:760px){.lab-stat-change{margin-left:4px;font-size:9px}}
.lab-bottom {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin: 0;
  padding: 0;
  border: 0;
  color: #818990;
  font-size: 11px;
  flex: none;
}
.lab-bottom a {
  white-space: nowrap;
  color: #b8bec3;
  text-decoration: none;
}
.lab-picker {
  position: fixed;
  inset: 0;
  width: min(580px, calc(100vw - 32px));
  max-height: min(650px, 75dvh);
  box-sizing: border-box;
  margin: auto;
  padding: 22px;
  background: #111416;
  color: var(--text);
  border: 1px solid #41474c;
  overflow: auto;
}
.lab-picker::backdrop {
  background: #000b;
  -webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);
}
.lab-save-dialog {
  box-sizing: border-box;
  width: min(490px, calc(100vw - 32px));
  max-height: calc(100dvh - 24px);
  margin: auto;
  padding: 0;
  overflow: auto;
  background: #111416;
  color: var(--text);
  border: 1px solid #53595e;
  box-shadow: 0 24px 80px #000c;
}
.lab-save-dialog::backdrop {
  background: #000c;
  -webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);
}
.lab-save-dialog form { padding: 24px; }
.lab-save-dialog header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 18px;
}
.lab-save-dialog header small,
.lab-save-weapon span,
.lab-save-dialog label {
  color: #aab1b6;
  font: 700 11px/1.4 monospace;
  letter-spacing: 1.5px;
}
.lab-save-dialog h2 {
  margin: 3px 0 0;
  color: var(--accent);
  font: 32px/1 Impact, "Arial Narrow", sans-serif;
  letter-spacing: 1px;
}
#lab-save-close {
  border: 0;
  background: transparent;
  color: #acb2b7;
  font: 30px/1 sans-serif;
  cursor: pointer;
}
#lab-save-close:hover { color: var(--accent); }
.lab-save-weapon {
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 108px;
  padding: 10px 16px;
  margin-bottom: 22px;
  background: #181c1f;
  border: 1px solid #30363b;
}
.lab-save-weapon img {
  width: 52%;
  height: 98px;
  object-fit: contain;
}
.lab-save-weapon div { display: grid; gap: 5px; }
.lab-save-weapon strong {
  color: #fff;
  font: 25px/1 Impact, "Arial Narrow", sans-serif;
  letter-spacing: 1px;
}
.lab-save-dialog label { display: block; margin-bottom: 8px; }
#lab-build-title {
  box-sizing: border-box;
  width: 100%;
  padding: 13px 14px;
  background: #1a1e21;
  color: #fff;
  border: 1px solid #53595e;
  border-radius: 0;
  font: 700 15px/1.3 monospace;
  outline: none;
}
#lab-build-title:focus { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.lab-save-dialog label[for="lab-build-note"]{margin-top:15px}
.lab-save-dialog label[for="lab-build-note"] span{font-weight:400;color:#879198}
#lab-build-note{box-sizing:border-box;width:100%;min-height:72px;max-height:130px;resize:vertical;padding:11px 13px;background:#1a1e21;color:#fff;border:1px solid #53595e;border-radius:0;font:13px/1.4 Consolas,monospace;outline:none}
#lab-build-note:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.lab-save-hint { color: #aab1b6; font: 12px/1.5 monospace; margin: 10px 0 0; }
#lab-save-error { color: #ff9c54; font: 12px/1.4 monospace; margin: 10px 0 0; }
#lab-save-error:empty { display: none; }
.lab-save-buttons { display: flex; gap: 10px; margin-top: 24px; }
.lab-save-buttons button {
  flex: 1;
  padding: 13px 10px;
  color: #c2c6c9;
  background: #181c1f;
  border: 1px solid #53595e;
  border-radius: 0;
  font: 700 13px/1 monospace;
  letter-spacing: 1px;
  cursor: pointer;
}
.lab-save-buttons #lab-save-confirm { color: var(--accent); border-color: var(--accent); }
.lab-save-buttons button:hover:not(:disabled),
.lab-save-buttons button:focus-visible { color: #111416; background: var(--accent); border-color: var(--accent); }
.lab-save-buttons button:disabled { opacity: .65; cursor: wait; }
@media (max-width: 600px) {
  .lab-save-dialog form { padding: 17px; }
  .lab-save-dialog h2 { font-size: 27px; }
  .lab-save-weapon { min-height: 80px; padding: 8px 12px; }
  .lab-save-weapon img { height: 76px; }
}
.lab-picker header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.lab-picker h2 {
  font:
    24px Impact,
    sans-serif;
  letter-spacing: 1px;
  color: var(--accent);
  margin: 0;
}
.lab-picker input {
  box-sizing: border-box;
  width: 100%;
  padding: 11px;
  background: #1a1e21;
  border: 1px solid #3d4449;
  color: var(--text);
  font-size: 16px;
  margin-bottom: 12px;
}
.lab-option {
  width: 100%;
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  text-align: left;
  padding: 13px 10px;
  background: #181c1f;
  border: 1px solid #30363b;
  color: #eee;
  margin-bottom: 6px;
  cursor: pointer;
}
.lab-option[aria-pressed="true"] {
  border-color: var(--accent);
  background: #252a2d;
  box-shadow: inset 2px 0 var(--accent);
}
.lab-option strong {
  font-size: 14px;
  font-weight: 700;
  display: block;
}
.lab-option .option-copy.has-attachment strong {
  color: var(--accent);
}
.lab-option small {
  display: block;
  color: #929ba2;
  font-size: 12px;
  margin-top: 5px;
}
.lab-option .attachment-placeholder {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border: 1px solid #41484e;
  color: #737c84;
  flex: none;
}
.lab-option .option-copy {
  flex: 1;
  min-width: 0;
}
.lab-option .option-effects {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px 12px;
  width: fit-content;
  max-width: min(310px, 42vw);
  margin-left: auto;
  flex: none;
}
.lab-option .option-effect {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  padding: 0;
  background: transparent;
  font:
    11px Consolas,
    monospace;
  white-space: nowrap;
}
.lab-option .option-effect small {
  margin: 0;
  color: #8d969d;
  font:
    9px Consolas,
    monospace;
  letter-spacing: 0.04em;
}
.lab-option .option-effect strong {
  margin: 0;
  color: inherit;
  font:
    700 12px Consolas,
    monospace;
}
.lab-option .option-effect.is-good strong{color:#62cf7e}
.lab-option .option-effect.is-bad strong{color:#ff625b}
.lab-option .option-effect .stat-measure__unit{color:#aab0b5}
.lab-pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 12px;
  font-size: 12px;
  color: #919ba3;
}
@media (max-width: 760px) {
  .lab-heading {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 10px;
  }
  .lab-build-targets {
    order: 3;
    width: 100%;
    justify-content: space-between;
  }
  .lab-build-targets > span {
    display: none;
  }
  .lab-target-actions {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 5px;
  }
  .lab-target {
    min-width: 0;
    padding: 8px 6px;
    font-size: 9px;
  }
  .lab-page {
    padding: 12px;
    gap: 10px;
  }
  .lab-heading h1 {
    font-size: 28px;
  }
  .lab-eyebrow {
    display: none;
  }
  .lab-workbench {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr) 180px;
    gap: 10px;
  }
  .lab-stage {
    padding: 12px;
  }
  .lab-weapon-trigger {
    font-size: 28px;
  }
  .lab-weapon-caret {
    width: 9px;
    height: 9px;
    border-width: 2px;
    margin-top: -5px;
  }
  .lab-stage-title > span {
    font-size: 9px;
  }
  .lab-slots {
    gap: 5px;
  }
  .lab-slot {
    min-height: 55px;
    padding: 7px 5px;
  }
  .lab-slot small {
    font-size: 9px;
    letter-spacing: 0;
  }
  .lab-slot strong {
    margin-top: 7px;
    font-size: 10px;
  }
  .lab-slot .slot-mark {
    display: none;
  }
  .lab-performance {
    padding: 10px;
  }
  .lab-performance #lab-stats {
    margin-top: 9px;
  }
  .lab-stat {
    padding: 8px;
  }
  .lab-stat-label {
    font-size: 9px;
  }
  .lab-stat-value {
    margin-top: 5px;
    font-size: 16px;
  }
  .lab-stat-note {
    min-height: 12px;
    margin-top: 4px;
    font-size: 8px;
  }
  .lab-stats-heading {
    font-size: 12px;
  }
  .lab-stats-heading span {
    font-size: 8px;
  }
  .lab-build-price { gap: 5px; }
  .lab-build-price strong { font-size: 13px; }
  .lab-bottom {
    display: none;
  }
  .lab-picker {
    padding: 14px;
  }
  .lab-picker header {
    position: relative;
    display: block;
    min-height: 40px;
    margin-bottom: 12px;
    padding-right: 54px;
  }
  .lab-picker h2 {
    font-size: 28px;
    line-height: 1;
  }
  .lab-picker #lab-close {
    position: absolute;
    top: 0;
    right: 0;
  }
  .lab-option {
    padding: 9px;
  }
  .lab-option strong {
    font-size: 13px;
  }
  .lab-weapon-menu {
    width: min(360px, calc(100vw - 48px));
  }
}
@media (max-height: 650px) {
  .lab-page {
    padding-top: 10px;
    gap: 8px;
  }
  .lab-heading h1 {
    font-size: 28px;
  }
  .lab-eyebrow {
    display: none;
  }
  .lab-stage {
    padding: 10px;
  }
  .lab-slot {
    min-height: 56px;
  }
  .lab-stat {
    padding: 8px;
  }
  .lab-stat-value {
    font-size: 17px;
  }
  .lab-picker {
    padding: 12px;
  }
  .lab-option {
    padding: 7px;
  }
  .lab-option small {
    margin-top: 2px;
  }
  .lab-picker header {
    margin-bottom: 8px;
  }
}

/* Compact source thumbnails with neutral, non-item-specific slot icons. */
.lab-slot {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px;
}
.slot-visual {
  display: grid;
  place-items: center;
  width: 47px;
  height: 47px;
  flex: none;
}
.slot-visual img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.slot-icon {
  width: 31px;
  height: 31px;
  opacity: 1;
}
.slot-artwork {
  width: 47px;
  height: 47px;
  object-fit: contain;
}
.slot-copy {
  min-width: 0;
  flex: 1;
}
.lab-slot strong {
  margin-top: 5px;
}
.lab-slot .slot-mark {
  margin-top: 4px;
}
.lab-option .attachment-placeholder {
  width: 46px;
  height: 46px;
  background: #111315;
}
.attachment-placeholder img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.attachment-icon {
  width: 27px;
  height: 27px;
  color: #70767b;
  opacity: 0.75;
}
.attachment-artwork {
  width: 44px;
  height: 44px;
  object-fit: contain;
}
@media (max-width: 760px) {
  .lab-slot {
    gap: 5px;
    padding: 6px;
  }
  .slot-visual {
    width: 30px;
    height: 30px;
  }
  .slot-icon {
    width: 22px;
    height: 22px;
  }
  .slot-artwork {
    width: 30px;
    height: 30px;
  }
  .lab-slot strong {
    margin-top: 3px;
  }
  .lab-slot .slot-mark {
    margin-top: 2px;
  }
  .lab-option .attachment-placeholder {
    width: 40px;
    height: 40px;
  }
  .attachment-artwork {
    width: 38px;
    height: 38px;
  }
  .lab-option {
    align-items: flex-start;
  }
  .lab-option .option-effects {
    grid-template-columns: repeat(2, minmax(58px, 1fr));
    width: min(170px, 44vw);
  }
  .lab-option .option-effect {
    gap: 3px;
    padding: 5px 6px;
  }
  .lab-option .option-effect small {
    font-size: 8px;
  }
  .lab-option .option-effect strong {
    font-size: 10px;
  }
}
.lab-account-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:12px}.lab-account-actions button,.lab-account-actions a{border:1px solid var(--accent-tone-ff8617);background:var(--accent-tone-ff8617);color:#0b0b0b;padding:9px 12px;font-size:12px;font-weight:900;text-decoration:none;cursor:pointer}.lab-account-actions a{background:transparent;color:var(--accent-tone-ff8617)}.lab-account-actions span{font-size:12px;color:var(--accent-tone-ff8617)}
/* Match Weapon Compare: reduce the Weapon Lab title by 25%. */
.lab-heading h1{font-size:clamp(22.5px,3vw,39px)}
@media(max-width:760px), (max-height:650px){.lab-heading h1{font-size:21px}}

/* Build actions share RESET BUILD's quiet style and sit directly to its left. */
.lab-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex:none; min-width:0; }
.lab-toolbar .lab-build-targets { justify-content:flex-start; }
.lab-account-actions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:nowrap; gap:6px; margin:0; }
.lab-account-actions .lab-quiet {
  display:inline-flex; align-items:center; justify-content:center;
  flex:none; padding:10px 14px; border:1px solid #363b3f;
  background:#16191b; color:#aeb3b7; text-decoration:none;
  font:12px Consolas,monospace; white-space:nowrap; cursor:pointer;
}
.lab-account-actions .lab-quiet:hover,
.lab-account-actions .lab-quiet:focus-visible { border-color:var(--accent); color:#f5f5f3; outline:none; }
.lab-account-actions #lab-save-status:empty { display:none; }
@media (max-width:1250px) {
  .lab-toolbar { flex-wrap:wrap; justify-content:center; gap:7px; }
  .lab-account-actions { justify-content:center; }
  .lab-page { gap:9px; }
}
@media (max-width:760px) {
  .lab-account-actions .lab-quiet { padding:7px 8px; font-size:10px; }
  .lab-toolbar .lab-build-targets { flex-wrap:wrap; }
}
.lab-body .lab-heading.section-heading { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:12px; width:100%; text-align:center; }
.lab-body .lab-heading.section-heading h1 { margin:0; text-align:center; white-space:nowrap; }
@media (max-width:760px) {
 .lab-body .lab-heading.section-heading { grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }
 .lab-body .lab-heading.section-heading h1 { grid-column:1/-1; grid-row:1; font-size:24px; }
 .lab-body .lab-heading.section-heading .section-cta:first-child { grid-column:1; grid-row:2; }
 .lab-body .lab-heading.section-heading .section-cta:last-child { grid-column:2; grid-row:2; }
}

/* Touch controls and readable empty attachment icons on phones only. */
@media (max-width:760px) {
  .lab-account-actions .lab-quiet { border-color:var(--accent); color:var(--accent); transition:background .2s,color .2s,box-shadow .2s; }
  .lab-account-actions .lab-quiet:active,
  .lab-account-actions .lab-quiet.is-flashing {
    background:var(--accent); color:#08090a; box-shadow:0 0 14px rgb(var(--accent-rgb) / .55);
  }
  .lab-slot .slot-select-label { display:none; }
  .lab-slot:not(.is-equipped) .slot-icon,
  .lab-option .slot-icon { opacity:1; filter:none; }
  .lab-art { cursor:pointer; }
}

/* Keep Lab's later stylesheet aligned with the shared tool heading. */
@media(min-width:761px){
 .lab-body .lab-heading.section-heading{
  grid-template-columns:minmax(0,1fr) clamp(230px,26vw,340px) minmax(0,1fr);
  height:50px;min-height:50px;column-gap:clamp(24px,2.4vw,46px);margin:0
 }
 .lab-body .lab-page{padding-top:20px}
}
@media(max-width:760px){
 .lab-body .lab-page{padding:8px 10px}
 .lab-body .lab-heading.section-heading{margin:0;column-gap:6px;row-gap:6px}
}
.lab-account-actions #lab-save{background:#16191b;border-color:#50565a;color:#b8bec3}
.lab-account-actions #lab-save:hover,
.lab-account-actions #lab-save:focus-visible{background:transparent;border-color:var(--accent);color:#f5f5f3}
.lab-account-actions #lab-save:focus-visible { outline:2px solid #fff; outline-offset:2px; }

/* The Armorer lives inside the Lab's existing statistics panel. */
.lab-advisor{display:flex;align-items:center;gap:12px;min-height:96px;margin-top:10px;padding:9px 10px;border:1px solid #34393d;background:#0c0e0f;box-sizing:border-box}
.lab-advisor img{width:76px;height:76px;flex:none;object-fit:cover;border:1px solid #34393d}
.lab-advisor-copy{min-width:0;flex:1}
.lab-advisor-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.lab-advisor-heading strong{font:700 13px/1.1 Consolas,monospace;letter-spacing:.05em;color:var(--accent)}
.lab-advisor-heading span{font:9px/1 Consolas,monospace;letter-spacing:.1em;color:#858d94}
.lab-advisor p{margin:7px 0 0;color:#d3d7d9;font:12px/1.35 Consolas,monospace;max-width:46ch}
.lab-advisor p.is-updating{animation:lab-advice-in .16s ease-out}
@keyframes lab-advice-in{from{opacity:.5}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.lab-advisor p.is-updating{animation:none}}
@media(max-width:760px){
 .lab-workbench{grid-template-rows:minmax(0,1fr) 180px}
 .lab-performance{padding:7px}
 .lab-advisor{min-height:50px;margin-top:5px;padding:3px 5px;gap:6px}
 .lab-advisor img{width:42px;height:42px}
 .lab-advisor-heading strong{font-size:10px}
 .lab-advisor-heading span{font-size:8px}
 .lab-advisor p{font-size:10px;line-height:1.2;margin-top:3px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
 .lab-performance #lab-stats{margin-top:5px}
 .lab-stat{padding:3px 6px}
 .lab-stat-value{margin-top:2px}
 .lab-stat-note{margin-top:1px;min-height:0}
}
@media(max-width:760px){
 .lab-account-actions #lab-save,
 .lab-account-actions #lab-save:hover,
 .lab-account-actions #lab-save:focus-visible{background:#16191b;border-color:var(--accent);color:var(--accent)}
 .lab-account-actions #lab-save:active,
 .lab-account-actions #lab-save.is-flashing{background:var(--accent);color:#08090a}
 .lab-workbench{grid-template-rows:minmax(0,1fr) 196px}
 .lab-slot{min-height:42px;padding:3px 5px}
 .lab-slot .slot-visual{width:26px;height:26px}
 .lab-slot .slot-icon{width:20px;height:20px}
 .lab-slot .slot-artwork{width:26px;height:26px}
}
.lab-slot.is-unavailable{position:relative;cursor:not-allowed;opacity:.58}

/* Recoil comparison is contained in the existing right-hand Lab panel. */
.lab-spray{display:none}
@media(min-width:761px){
 .lab-performance #lab-stats{margin-top:8px}
 .lab-performance .lab-stat{padding:6px 11px}
 .lab-performance .lab-stat-value{margin-top:4px}
 .lab-performance .lab-stat-note{margin-top:3px;min-height:0}
 .lab-spray{display:flex;flex:none;flex-direction:column;box-sizing:border-box;height:clamp(170px,24vh,190px);margin-top:10px;padding:9px 12px 6px;border:1px solid #34393d;background:#0c0e0f;min-height:0}
 .lab-spray-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;font:700 13px/1 Consolas,monospace;letter-spacing:.05em;color:#dfe2e4}
 .lab-spray-title{display:flex;align-items:center;gap:7px;min-width:0}
 .lab-spray-info{display:inline-block;width:auto;height:auto;flex:none;padding:0;border:0;background:transparent;color:#dfe2e4;font:inherit;letter-spacing:inherit;text-decoration:underline dotted var(--accent);text-underline-offset:4px;cursor:help}
 .lab-spray-info:hover,.lab-spray-info:focus-visible{color:var(--accent);outline:none}
 .lab-spray-tooltip{position:absolute;z-index:20;bottom:calc(100% + 8px);left:8px;width:min(320px,calc(100vw - 64px));padding:12px 14px;border:1px solid #50545a;border-left:3px solid var(--accent);background:#17191c;box-shadow:0 12px 32px #000b;color:#e9ecef;font:12px/1.55 Consolas,monospace;letter-spacing:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s,visibility .15s}
 .lab-spray-info:hover+.lab-spray-tooltip,.lab-spray-info:focus-visible+.lab-spray-tooltip{opacity:1;visibility:visible}
 .lab-spray-controls{display:flex;align-items:center;gap:8px;flex:none}
 .lab-spray-shot-count{color:#9da5ab;font:700 10px/1 Consolas,monospace;white-space:nowrap}
 .lab-spray-compare{padding:3px 5px;border:1px solid #50575b;background:transparent;color:#c5cbd0;font:700 9px/1 Consolas,monospace;white-space:nowrap;cursor:pointer}
 .lab-spray-compare:hover,.lab-spray-compare:focus-visible{color:var(--accent);border-color:var(--accent);outline:none}
 .lab-spray-expand{display:grid;place-items:center;flex:none;width:19px;height:19px;padding:2px;border:1px solid #555c61;background:transparent;color:#a8afb4;cursor:pointer}
 .lab-spray-expand:hover,.lab-spray-expand:focus-visible{border-color:var(--accent);color:var(--accent);outline:none}
 .lab-spray-expand svg{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:square;stroke-linejoin:miter}
 .lab-spray-preview{display:flex;flex:1;min-height:0;width:100%;margin-top:3px}
 .lab-spray-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;width:100%;height:100%;min-height:0}
 .lab-spray-mini-grid:has(.is-loaded:not([hidden])){grid-template-columns:repeat(3,minmax(0,1fr))}
 .lab-spray-mini-panel{position:relative;min-width:0;min-height:0;border:1px solid #30363a;background:var(--surface-panel)}
 .lab-spray-mini-panel[hidden]{display:none}
 .lab-spray-mini-panel span{position:absolute;z-index:1;top:4px;left:5px;color:#9da5ab;font:700 8px/1 Consolas,monospace;white-space:nowrap;pointer-events:none}
 .lab-spray-mini-panel.is-current span{color:var(--accent)}
 .lab-spray-mini-panel.is-loaded span{color:#55cddd}
 .lab-spray-mini-panel svg{display:block;width:100%;height:100%}
 .lab-spray-dialog{position:fixed;box-sizing:border-box;width:min(1240px,calc(100vw - 48px));max-height:calc(100dvh - 32px);margin:auto;padding:0;border:1px solid #51565b;background:var(--surface-panel);color:#e6e8e9;box-shadow:0 30px 90px #000c;overflow:visible}
 .lab-spray-dialog::backdrop{background:rgb(0 0 0 / .82)}
 .lab-spray-dialog-panel{position:relative;box-sizing:border-box;padding:18px 22px 16px}
 .lab-spray-dialog .lab-spray-heading{font-size:16px}
 .lab-spray-dialog .lab-spray-shot-count{font-size:12px}
 .lab-spray-dialog .lab-spray-info{width:auto;height:auto}
 .lab-spray-dialog .lab-spray-tooltip{top:36px;bottom:auto;left:22px}
.lab-spray-dialog .lab-spray-title-stack{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.lab-spray-nerd-link{padding:0;border:0;background:transparent;color:var(--accent);font:700 10px/1.3 Consolas,monospace;letter-spacing:.04em;cursor:pointer}
 .lab-spray-nerd-link:hover,.lab-spray-nerd-link:focus-visible{color:var(--accent-tone-ff9a47);text-decoration:underline;text-underline-offset:3px;outline:none}
 .lab-spray-close{border:0;background:transparent;color:#aeb5b9;font:26px/1 Arial,sans-serif;padding:0 2px;cursor:pointer}
 .lab-spray-close:hover,.lab-spray-close:focus-visible{color:var(--accent);outline:none}
.lab-spray-dialog-visual{position:relative;display:grid;gap:10px;width:100%;min-height:0;margin-top:8px}
.lab-spray-panel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0}
.lab-spray-panel-grid:has(.lab-spray-panel.is-loaded:not([hidden])){grid-template-columns:repeat(3,minmax(0,1fr))}
.lab-spray-panel{position:relative;min-width:0;border:1px solid #30363a;background:radial-gradient(ellipse at center,#171a1c 0%,var(--surface-panel) 75%)}
.lab-spray-panel[hidden]{display:none}
.lab-spray-panel h3{position:absolute;z-index:1;top:12px;left:14px;display:flex;align-items:center;gap:7px;margin:0;color:#b7bdc0;font:700 11px/1 Consolas,monospace}
.lab-spray-panel h3 i{width:7px;height:7px;border-radius:50%;background:#939a9e}
.lab-spray-panel.is-current h3{color:var(--accent)}.lab-spray-panel.is-current h3 i{background:var(--accent)}
.lab-spray-panel.is-loaded h3{color:#55cddd}.lab-spray-panel.is-loaded h3 i{background:#55cddd}
.lab-spray-panel h3 button{margin-left:6px;padding:0 3px;border:0;background:none;color:#55cddd;font:700 15px/1 Arial,sans-serif;cursor:pointer}
.lab-spray-panel h3 button:hover,.lab-spray-panel h3 button:focus-visible{color:#fff;outline:none}
@media(max-width:1050px){.lab-spray-panel-grid{gap:6px}}
.lab-spray-panel svg{display:block;width:100%;height:min(65dvh,650px)}
.lab-spray-panel-data{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:8px 5px 10px;border-top:1px solid #30363a;text-align:center}
.lab-spray-panel-data span{display:grid;place-content:center;gap:4px;min-width:0;padding:2px 4px;color:#9ca5aa;font:700 9px/1.25 Consolas,monospace;letter-spacing:.025em;white-space:nowrap}.lab-spray-panel-data span+span{border-left:1px solid #343a3d}
.lab-spray-panel-data strong{color:#bac1c4;font:700 14px/1.15 Consolas,monospace;white-space:nowrap}
.lab-spray-panel.is-current .lab-spray-panel-data strong{color:var(--accent)}
.lab-spray-panel.is-loaded .lab-spray-panel-data strong{color:#55cddd}
.lab-spray-panel-copy{box-sizing:border-box;min-height:33px;margin:0;padding:2px 8px 7px;color:#a7afb3;text-align:center;white-space:pre-line;font:10px/1.25 Consolas,monospace}
.lab-target-guides line{fill:none;stroke:#596066;stroke-width:.28;stroke-dasharray:1 2;opacity:.35;pointer-events:none}
.lab-cluster-center{fill:none;stroke-width:.36;stroke-linecap:round;pointer-events:none}
.lab-cluster-center.is-base{stroke:#b4bbbf}
.lab-cluster-center.is-current{stroke:var(--accent)}
.lab-cluster-center.is-loaded{stroke:#55cddd}
.lab-cluster-envelope{fill:none;stroke-width:.22;stroke-dasharray:.8 1.4;pointer-events:none;opacity:.6}
.lab-cluster-envelope.is-base{stroke:#939a9e}
.lab-cluster-envelope.is-current{stroke:var(--accent)}
.lab-cluster-envelope.is-loaded{stroke:#55cddd}
.lab-target-shot{opacity:1}
.lab-target-shot.is-base{fill:#939a9e}
.lab-target-shot.is-current{fill:var(--accent)}
.lab-target-shot.is-loaded{fill:#55cddd}
.lab-target-shot.is-base{filter:drop-shadow(0 0 .75px rgb(170 180 185 / .45))}
.lab-target-shot.is-current{filter:drop-shadow(0 0 .85px rgb(var(--accent-rgb) / .6))}
.lab-target-shot.is-loaded{filter:drop-shadow(0 0 .85px rgb(85 205 221 / .6))}
@media(max-height:750px){.lab-spray-panel svg{height:min(52dvh,440px)}}
 .lab-spray-nerd-dialog{position:fixed;box-sizing:border-box;width:min(1340px,calc(100vw - 36px));max-width:calc(100vw - 36px);max-height:calc(100dvh - 24px);margin:auto;padding:0;border:1px solid #51565b;background:var(--surface-panel);color:#e6e8e9;box-shadow:0 30px 90px #000c;overflow:auto}
 .lab-spray-nerd-dialog::backdrop{background:rgb(0 0 0 / .78)}
 .lab-spray-nerd-panel{padding:25px 30px 26px}
 .lab-spray-nerd-panel header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:16px;border-bottom:1px solid #34393d}
 .lab-spray-nerd-panel header small{color:#858d94;font:700 10px/1.4 Consolas,monospace;letter-spacing:.09em}
 .lab-spray-nerd-panel header h2{margin:5px 0 0;color:var(--accent);font:700 19px/1.2 Consolas,monospace;letter-spacing:.05em}
 .lab-spray-nerd-panel header button{padding:0 2px;border:0;background:transparent;color:#aeb5b9;font:26px/1 Arial,sans-serif;cursor:pointer}
 .lab-spray-nerd-panel header button:hover,.lab-spray-nerd-panel header button:focus-visible{color:var(--accent);outline:none}
 .lab-spray-nerd-text{padding-top:18px;font:12px/1.65 Consolas,monospace}
 .lab-spray-nerd-text p{margin:0 0 13px;color:#b5bdc2}
 .lab-spray-nerd-text p:nth-child(3){padding-bottom:15px;border-bottom:1px solid #34393d}
 .lab-spray-nerd-text strong{color:#e4e8e9;font-weight:700}
 .lab-spray-nerd-text p:nth-child(2) strong:nth-child(2){color:var(--accent)}
 @media(min-width:1100px){.lab-spray-nerd-text{columns:2;column-gap:46px}.lab-spray-nerd-text p{break-inside:avoid}}
}
@media(min-width:761px){.lab-spray{position:relative}}
/* SVG recoil colors are required on mobile as well as desktop. */
@media(max-width:760px){
 .lab-target-guides line{fill:none;stroke:#596066;stroke-width:.28;stroke-dasharray:1 2;opacity:.35}
 .lab-cluster-center{fill:none;stroke-width:.36;stroke-linecap:round}
 .lab-cluster-center.is-base{stroke:#b4bbbf}.lab-cluster-center.is-current{stroke:var(--accent)}.lab-cluster-center.is-loaded{stroke:#55cddd}
 .lab-cluster-envelope{fill:none;stroke-width:.22;stroke-dasharray:.8 1.4;opacity:.6}
 .lab-cluster-envelope.is-base{stroke:#939a9e}.lab-cluster-envelope.is-current{stroke:var(--accent)}.lab-cluster-envelope.is-loaded{stroke:#55cddd}
 .lab-target-shot.is-base{fill:#939a9e}.lab-target-shot.is-current{fill:var(--accent)}.lab-target-shot.is-loaded{fill:#55cddd}
 .lab-spray-dialog{position:fixed;box-sizing:border-box;width:calc(100vw - 16px);max-width:none;max-height:calc(100dvh - 16px);margin:auto;padding:0;border:1px solid #51565b;background:var(--surface-panel);color:#e6e8e9;overflow:auto}
 .lab-spray-dialog::backdrop{background:rgb(0 0 0 / .82)}
 .lab-spray-dialog-panel{padding:12px}
 .lab-spray-dialog .lab-spray-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;font:700 13px/1.2 Consolas,monospace;color:#dfe2e4}
 .lab-spray-dialog .lab-spray-title-stack{display:flex;flex-direction:column;gap:5px}
 .lab-spray-nerd-link{padding:0;border:0;background:transparent;color:var(--accent);font:700 10px/1.3 Consolas,monospace}
 .lab-spray-close{border:0;background:transparent;color:#aeb5b9;font:26px/1 Arial,sans-serif}
 .lab-spray-dialog-visual{margin-top:10px}
 .lab-spray-panel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
 .lab-spray-panel{position:relative;min-width:0;border:1px solid #30363a;background:var(--surface-panel)}
 .lab-spray-panel[hidden]{display:none}
 .lab-spray-panel.is-loaded{grid-column:1/-1}
 .lab-spray-panel h3{display:flex;align-items:center;gap:5px;margin:0;padding:9px;color:#b7bdc0;font:700 10px/1 Consolas,monospace}
 .lab-spray-panel h3 i{width:6px;height:6px;border-radius:50%;background:#939a9e}
 .lab-spray-panel.is-current h3{color:var(--accent)}.lab-spray-panel.is-current h3 i{background:var(--accent)}
 .lab-spray-panel.is-loaded h3{color:#55cddd}.lab-spray-panel.is-loaded h3 i{background:#55cddd}
 .lab-spray-panel h3 button{margin-left:auto;border:0;background:transparent;color:#55cddd;font:700 16px/1 Arial,sans-serif}
 .lab-spray-panel svg{display:block;width:100%;height:min(42dvh,310px)}
 .lab-spray-panel-data{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:8px;border-top:1px solid #30363a;text-align:center}
 .lab-spray-panel-data span{display:grid;gap:3px;color:#9ca5aa;font:700 9px/1.2 Consolas,monospace}
 .lab-spray-panel-data strong{color:#bac1c4;font-size:12px}
 .lab-spray-panel.is-current .lab-spray-panel-data strong{color:var(--accent)}.lab-spray-panel.is-loaded .lab-spray-panel-data strong{color:#55cddd}
 .lab-spray-panel-copy{margin:0;padding:4px 8px 10px;color:#a7afb3;text-align:center;white-space:pre-line;font:10px/1.3 Consolas,monospace}
 .lab-spray-nerd-dialog{position:fixed;box-sizing:border-box;width:calc(100vw - 16px);max-height:calc(100dvh - 16px);margin:auto;padding:0;border:1px solid #51565b;background:var(--surface-panel);color:#e6e8e9;overflow:auto}
 .lab-spray-nerd-dialog::backdrop{background:rgb(0 0 0 / .78)}
 .lab-spray-nerd-panel{padding:16px}
 .lab-spray-nerd-panel header{display:flex;justify-content:space-between;gap:12px}
 .lab-spray-nerd-panel header h2{color:var(--accent);font:700 17px/1.2 Consolas,monospace}
 .lab-spray-nerd-panel header button{border:0;background:transparent;color:#aeb5b9;font:26px/1 Arial,sans-serif}
 .lab-spray-nerd-text{color:#b5bdc2;font:12px/1.5 Consolas,monospace}
 .lab-spray-nerd-text strong{color:#e4e8e9}
}
@keyframes lab-spray-appear{to{opacity:1}}
@media(min-width:761px) and (max-height:720px){.lab-spray{height:125px;margin-top:6px;padding:6px 10px 4px}.lab-performance .lab-advisor{min-height:76px;margin-top:6px;padding:5px}.lab-performance .lab-advisor img{width:60px;height:60px}}
@media(prefers-reduced-motion:reduce){.lab-target-shot{animation:none;opacity:1}}
.lab-slot.is-unavailable::after{content:'×';position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);color:#e25244;font:700 38px/1 Arial,sans-serif;text-shadow:0 1px 3px #08090a}
.lab-slot.is-unavailable .slot-unavailable-label{font-size:.57rem;color:#9aa0a4}
.lab-slot.is-unavailable:hover{border-color:#3b4044}
.lab-build-picker{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(510px,calc(100vw - 28px));max-height:min(78dvh,700px);margin:0;padding:0;border:1px solid #485057;background:var(--surface-panel);color:#f5f5f3;box-shadow:0 20px 70px #000c}
.lab-build-picker[open]{display:flex;flex-direction:column;overflow:hidden}
.lab-build-picker::backdrop{background:#000b}
.lab-build-picker header{display:flex;flex:none;align-items:center;justify-content:space-between;padding:14px 17px;border-bottom:1px solid #303235}
.lab-build-picker h2{margin:0;color:var(--accent);font:700 1.3rem var(--title)}
.lab-build-picker header button{border:0;background:none;color:var(--accent);font-size:1.8rem;cursor:pointer}
#lab-build-options{display:grid;gap:7px;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:13px;scrollbar-width:thin}
.lab-build-option{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;padding:8px 12px;border:1px solid #3b4044;background:#171a1c;color:#f5f5f3;text-align:left;cursor:pointer}
.lab-build-option:hover,.lab-build-option:focus-visible{border-color:var(--accent);outline:none}
.lab-build-option strong{font:700 .78rem var(--mono);overflow-wrap:anywhere}
.lab-build-option span{color:#aab0b5;font:600 .62rem var(--mono);text-align:right;flex-shrink:0}
.lab-build-notice{color:#aab0b5;font:600 .75rem var(--mono)}
@media(max-width:760px){
 .lab-account-actions{gap:4px}
 .lab-account-actions .lab-quiet{padding:7px 5px;font-size:clamp(8px,2.3vw,10px)}
}

.lab-art{position:relative;flex-direction:column}
.lab-art img{flex:1;min-height:0}
.lab-loaded-credit{flex:none;max-width:95%;color:#969ca2;font:700 10px/1.3 monospace;letter-spacing:.04em;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lab-loaded-credit[hidden]{display:none}
#lab-build-title{text-transform:uppercase}
.lab-weapon-details{display:flex;align-items:center;gap:6px}
.lab-weapon-details #lab-category{padding-top:6px;color:#969ca2;font:11px Consolas,monospace}
#lab-mobile-build-price{display:none}
@media(max-width:760px){
 .lab-heading.section-heading h1{width:100%;text-align:center}
 .lab-target:hover:not([aria-pressed="true"]){background:#16191b;border-color:#363b3f;color:#bec4c8}
 .lab-weapon-details{flex-direction:column;align-items:flex-end;gap:2px;text-align:right}
 .lab-weapon-details #lab-category{text-transform:uppercase}
 #lab-mobile-build-price{display:block;color:var(--accent);font:700 11px/1 Consolas,monospace}
 .lab-stats-heading{display:none}
 .lab-performance #lab-stats{margin-top:0}
 .lab-performance .lab-stat-value{font-size:14px;line-height:1.1}
}

/* The recoil preview shares the lower mobile stats row without adding page height. */
@media(max-width:760px){
 .lab-performance{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:5px}
 .lab-performance #lab-stats{grid-column:1;grid-row:1;margin:0;min-height:0}
 .lab-spray{position:relative;display:flex;flex-direction:column;grid-column:2;grid-row:1;box-sizing:border-box;width:100%;min-width:0;min-height:0;height:100%;margin:0;padding:5px;border:1px solid #34393d;background:#0c0e0f}
 .lab-spray-heading{gap:2px;font-size:clamp(7px,2vw,9px)}
 .lab-spray-title{min-width:0}
 .lab-spray-info{font:inherit;white-space:nowrap}
 .lab-spray-controls{gap:2px}
 .lab-spray-compare{padding:2px;font-size:clamp(6px,1.8vw,8px)}
 .lab-spray-shot-count{font-size:clamp(6px,1.7vw,8px)}
 .lab-spray-expand{width:17px;height:17px;padding:2px}
 .lab-spray-preview{flex:1;min-height:0;margin-top:4px}
 .lab-spray-mini-grid{gap:2px}
 .lab-spray-mini-panel span{font-size:clamp(5px,1.5vw,7px);top:2px;left:2px}
 .lab-performance .lab-advisor{grid-column:1/-1;grid-row:2;margin:0}
 .lab-performance .lab-stat-value{font-size:clamp(11px,3.1vw,14px)}
 .lab-performance .lab-stat-note{font-size:clamp(7px,1.9vw,9px)}
}
/* iPad stats and three-way comparison labels must fit within their own columns. */
.wardogs-ipad .lab-performance .lab-stat-value{font-size:clamp(13px,1.6vw,19px);overflow-wrap:anywhere}
.wardogs-ipad .lab-performance .lab-stat-label{font-size:9px;letter-spacing:0}
.wardogs-ipad .lab-performance .lab-stat-note{font-size:9px;letter-spacing:0}
.wardogs-ipad .lab-spray-panel-data{padding-inline:2px}
.wardogs-ipad .lab-spray-panel-data span{padding-inline:1px;font-size:clamp(6px,.8vw,8px);letter-spacing:0;white-space:normal}
.wardogs-ipad .lab-spray-panel-data strong{font-size:clamp(9px,1vw,12px);white-space:nowrap}
@media(pointer:coarse){.lab-spray-info:hover+.lab-spray-tooltip{opacity:0;visibility:hidden}.lab-spray-info:focus-visible+.lab-spray-tooltip{opacity:1;visibility:visible}}
@media(max-width:760px){
 .lab-spray-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;width:100%;height:100%}
 .lab-spray-mini-grid:has(.is-loaded:not([hidden])){grid-template-columns:repeat(3,minmax(0,1fr))}
 .lab-spray-mini-panel{position:relative;min-width:0;min-height:0;border:1px solid #30363a;background:var(--surface-panel)}
 .lab-spray-mini-panel[hidden]{display:none}
 .lab-spray-mini-panel span{position:absolute;z-index:1;color:#9da5ab;pointer-events:none}
 .lab-spray-mini-panel.is-current span{color:var(--accent)}
 .lab-spray-mini-panel.is-loaded span{color:#55cddd}
 .lab-spray-mini-panel svg{display:block;width:100%;height:100%}
 .lab-spray-expand{display:grid;place-items:center;flex:none;width:19px;height:19px;padding:2px;border:1px solid #555c61;background:transparent;color:#a8afb4}
 .lab-spray-expand svg{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:square;stroke-linejoin:miter}
 .lab-spray-shot-count{display:none}
}
@media(max-width:760px){
 .lab-spray-heading,.lab-spray-title,.lab-spray-controls{display:flex;align-items:center;justify-content:space-between}
 .lab-spray-info{padding:0;border:0;background:transparent;color:#dfe2e4;text-decoration:underline dotted var(--accent);text-underline-offset:3px}
 .lab-spray-compare{border:1px solid #50575b;background:transparent;color:#c5cbd0;white-space:nowrap}
 .lab-spray-preview{display:flex;flex:1;min-height:0;width:100%}
 .lab-spray-tooltip{display:none!important}
}
/* Touch screens keep the hover cue visible without opening its text by default. */
.wardogs-ipad .lab-spray-dialog .lab-spray-info{padding-bottom:4px;background-image:radial-gradient(circle,var(--accent) 1px,transparent 1.3px);background-repeat:repeat-x;background-position:left bottom;background-size:5px 3px;text-decoration:none}
.wardogs-ipad .lab-spray-nerd-link{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px}
.wardogs-ipad .lab-spray-nerd-link::after{content:' ↗';font-size:12px}
/* The equipped part summary matches Weapon Compare without exposing new data. */
.lab-slot-cell{display:flex;flex-direction:column;min-width:0}
.lab-slot-cell>.lab-slot{box-sizing:border-box;width:100%;flex:none}
.lab-slot-effects{display:flex;flex-direction:column;gap:3px;min-height:62px;padding:8px 2px 0}
.lab-slot-effect{display:flex;align-items:baseline;justify-content:space-between;gap:3px;width:100%;font:600 .56rem/1.1 var(--mono);white-space:nowrap}
.lab-effect-label{color:#8e969c;font-weight:600}
.lab-slot-effect .lab-effect-value{color:var(--accent);font-weight:700}
.lab-slot-effect.is-penalty .lab-effect-value{color:#d4d8db}
.lab-no-effects{display:block;color:#7d858b;font:600 .51rem/1.25 var(--mono);text-align:center;white-space:nowrap}
@media(max-width:760px){.lab-slot-cell{display:contents}.lab-slot-effects{display:none}}
/* Keep recommendations and build actions on one line in iPad landscape. */
@media(min-width:761px) and (max-width:1250px){
 .wardogs-ipad .lab-toolbar{flex-wrap:nowrap;justify-content:space-between;gap:5px}
 .wardogs-ipad .lab-toolbar .lab-build-targets{flex:1 1 auto;justify-content:flex-start;gap:5px;min-width:0}
 .wardogs-ipad .lab-build-targets>span{font-size:8px;letter-spacing:0}
 .wardogs-ipad .lab-target-actions{flex-wrap:nowrap;gap:3px}
 .wardogs-ipad .lab-target{padding:6px 4px;font-size:clamp(7px,.75vw,9px);letter-spacing:0}
 .wardogs-ipad .lab-account-actions{flex:none;justify-content:flex-end;gap:3px}
 .wardogs-ipad .lab-account-actions .lab-quiet{padding:7px 4px;font-size:clamp(7px,.75vw,9px)}
}
/* Match the compact Community Build card's corners on Lab surfaces. */
.lab-stage,.lab-performance,.lab-weapon-menu,.lab-picker,.lab-save-dialog,.lab-advisor,.lab-spray,.lab-spray-mini-panel,.lab-spray-dialog,.lab-spray-panel,.lab-spray-nerd-dialog,.lab-build-picker,.lab-spray-tooltip{border-radius:8px}
.lab-slot,.lab-option,.lab-target,.lab-weapon-trigger,.lab-account-actions button,.lab-account-actions a,.lab-save-buttons button,#lab-build-title,#lab-build-note,.lab-picker input{border-radius:4px}

/* Touch attachment selector: dedicated single-line names and separate data rows. */
@media(max-width:760px){
.lab-picker{width:min(680px,calc(100vw - 24px));padding:14px}
.lab-option{box-sizing:border-box;display:grid;grid-template-columns:46px minmax(0,1fr);gap:10px 12px;align-items:center;padding:12px}
.lab-option .option-copy{display:contents}
.lab-option .option-copy>strong{grid-column:1 / -1;grid-row:1;display:block;min-width:0;max-width:100%;margin:0;font-size:14px;line-height:1.5;white-space:nowrap;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#62686c #24292c}
.lab-option .attachment-placeholder{grid-column:1;grid-row:2;width:46px;height:46px}
.lab-option .option-copy>small{grid-column:2;grid-row:2;margin:0;font-size:12px;line-height:1.5}
.lab-option .option-effects{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;justify-content:start;width:100%;max-width:none;margin:0;padding-top:10px;border-top:1px solid #30363b}
.lab-option .option-effect{gap:4px;min-width:0}
.lab-option .option-effect small{margin:0;font-size:10px;line-height:1.3}
.lab-option .option-effect strong{font-size:13px;line-height:1.4}
}

.lab-slot-effects:empty{display:none}

/* Phone attachment list: keep the name readable while fitting more parts per screen. */
@media(max-width:640px){
 html:not(.wardogs-ipad) .lab-option{grid-template-columns:32px minmax(0,1fr);gap:5px 9px;padding:7px 9px}
 html:not(.wardogs-ipad) .lab-option .option-copy>strong{font-size:14px;line-height:1.3}
 html:not(.wardogs-ipad) .lab-option .attachment-placeholder{width:32px;height:32px}
 html:not(.wardogs-ipad) .lab-option .attachment-artwork{width:30px;height:30px}
 html:not(.wardogs-ipad) .lab-option .option-copy>small{font-size:11px;line-height:1.25}
 html:not(.wardogs-ipad) .lab-option .option-effects{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px 7px;padding-top:5px}
 html:not(.wardogs-ipad) .lab-option .option-effect{gap:2px}
 html:not(.wardogs-ipad) .lab-option .option-effect small{font-size:9px;line-height:1.1}
 html:not(.wardogs-ipad) .lab-option .option-effect strong{font-size:12px;line-height:1.15}
}

/* iPad uses the desktop attachment row, scaled to the tablet dialog. */
.wardogs-ipad .lab-picker{width:min(680px,calc(100vw - 32px));padding:22px}
.wardogs-ipad .lab-option{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 10px}
.wardogs-ipad .lab-option .option-copy{display:block;flex:1;min-width:0}
.wardogs-ipad .lab-option .option-copy>strong{font-size:14px;line-height:1.4;white-space:nowrap;overflow-x:auto}
.wardogs-ipad .lab-option .option-copy>small{margin-top:5px;font-size:12px;line-height:1.4}
.wardogs-ipad .lab-option .attachment-placeholder{width:46px;height:46px}
.wardogs-ipad .lab-option .attachment-artwork{width:44px;height:44px}
.wardogs-ipad .lab-option .option-effects{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 12px;width:fit-content;max-width:310px;margin-left:auto;padding:0;border:0;flex:none}
.wardogs-ipad .lab-option .option-effect{gap:4px;padding:0}
.wardogs-ipad .lab-option .option-effect small{margin:0;font-size:9px;line-height:normal}
.wardogs-ipad .lab-option .option-effect strong{font-size:12px;line-height:normal}

.wardogs-ipad .lab-option .option-copy>small{font-size:11px}
.wardogs-ipad .lab-option .option-effect small{font-size:8px}
.wardogs-ipad .lab-option .option-effect strong{font-size:11px}

.wardogs-ipad .lab-option .option-copy>small{font-size:10px}
.wardogs-ipad .lab-option .option-effect small{font-size:7px}
.wardogs-ipad .lab-option .option-effect strong{font-size:10px}
.wardogs-ipad .lab-option .option-effects{box-sizing:border-box;padding-right:4px}
.wardogs-ipad .lab-slot-effects{padding-right:5px}
.wardogs-ipad .lab-slot-effect{font-size:calc(.56rem - 1px)}

/* Touch hover must clear after closing the attachment picker. */
.wardogs-ipad .lab-slot:hover:not(.is-equipped):not(:focus-visible){border-color:#3b4044}

/* Lab surfaces follow the shared palette; only the inline recoil has square corners. */
.lab-spray,.lab-advisor{background:var(--surface-page)}
.lab-spray,.lab-spray-mini-panel{border-radius:0}
.lab-spray-dialog .lab-spray-panel{background:#171a1c}
.lab-account-actions .lab-quiet{font-weight:700}
@media(min-width:761px){
 .lab-spray{padding-bottom:9px}
}
@media(min-width:761px) and (max-height:720px){
 .lab-spray{padding-bottom:6px}
}
/* Avoid sticky touch hover/focus without changing keyboard focus on desktop. */
.wardogs-ipad .lab-slot:is(.is-equipped,:hover):not(:focus-visible){border-color:#3b4044}
@media(max-width:760px),(pointer:coarse){
 .lab-slot:is(.is-equipped,:hover):not(:focus-visible){border-color:#3b4044}
}
@media(max-width:760px){
 .lab-art{padding-bottom:2px}
 .lab-workbench{grid-template-rows:minmax(0,1fr) minmax(216px,max-content)}
 .lab-performance{grid-template-rows:minmax(min-content,1fr) auto}
 .lab-performance #lab-stats,.lab-performance .lab-stat{min-height:min-content}
 .lab-account-actions .lab-quiet,
 .lab-account-actions .lab-quiet:is(:hover,:active,:focus-visible,.is-flashing),
 .lab-account-actions #lab-save,
 .lab-account-actions #lab-save:is(:hover,:active,:focus-visible,.is-flashing){background:#16191b;border-color:#363b3f;color:#aeb3b7;box-shadow:none;font-weight:700}
}

/* Installed attachments are not a persistent control selection. */
.lab-slot.is-equipped:not(:hover){border-color:#3b4044}
.lab-slot.is-equipped .slot-mark{color:#8b939a}
.wardogs-ipad .lab-spray-close:is(:hover,:focus-visible){color:#aeb5b9}
@media(max-width:760px){
 html:not(.wardogs-ipad) .lab-spray-panel-grid:has(.is-loaded:not([hidden])){grid-template-columns:repeat(2,minmax(0,1fr))}
 html:not(.wardogs-ipad) .lab-spray-panel-grid:has(.is-loaded:not([hidden])) .lab-spray-panel.is-current{grid-column:1;grid-row:1}
 html:not(.wardogs-ipad) .lab-spray-panel-grid:has(.is-loaded:not([hidden])) .lab-spray-panel.is-loaded{grid-column:2;grid-row:1}
 html:not(.wardogs-ipad) .lab-spray-panel-grid:has(.is-loaded:not([hidden])) .lab-spray-panel:not(.is-current):not(.is-loaded){grid-column:1/-1;grid-row:2}
}

/* Recoil plotting surfaces sit just below the shared page shade. */
.lab-spray-mini-panel{background:#111315}
.lab-spray-dialog .lab-spray-panel{background:#131517}
/* SVG halos provide the same soft light on Safari and touch screens. */
.lab-target-glow{pointer-events:none}
.lab-target-shot.is-base,.lab-target-shot.is-current,.lab-target-shot.is-loaded{filter:none}

.lab-spray-compare{border-color:#383e42}
.lab-spray-close,.lab-spray-close:is(:hover,:focus,:focus-visible,:active),.wardogs-ipad .lab-spray-close:is(:hover,:focus-visible){color:#aeb5b9;background:transparent;border:0;outline:none;box-shadow:none;-webkit-tap-highlight-color:transparent}

@media(min-width:761px){html:not(.wardogs-ipad) .lab-slot-effect{font-size:calc(.56rem + 1px)}}
.wardogs-ipad .lab-slot-effect{font-size:.56rem}

.lab-weapon-menu .weapon-picker-option[aria-selected=true],.lab-weapon-menu .weapon-picker-option:hover,.lab-weapon-menu .weapon-picker-option:focus-visible{background:var(--surface-raised);color:var(--text);outline:none;box-shadow:none}
