:root {
  color-scheme: dark;
  --bg: #111315;
  --chrome: #191b1d;
  --pane: #202326;
  --pane-2: #25292c;
  --field: #101214;
  --line: #3a3f43;
  --line-soft: #2d3236;
  --text: #ece7dc;
  --soft: #b9b0a0;
  --faint: #8e8678;
  --gold: #c9a24b;
  --green: #71a66f;
  --blue: #7f9db7;
  --danger: #b66a5d;
  --focus: #d8bd68;
  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-width: 320px;
  overflow-x: hidden;
  background: var(--bg);
  color: var(--text);
}

a {
  color: #d6bb72;
}

.shell {
  width: min(1500px, calc(100% - 24px));
  margin: 0 auto;
  padding: 14px 0 32px;
}

.cockpit,
.controls-band,
.result-pane,
.verdict-strip,
.gear-bench,
.formula-notes {
  border: 1px solid var(--line);
  background: var(--pane);
}

.cockpit {
  display: grid;
  grid-template-columns: minmax(260px, 0.9fr) minmax(340px, 1.2fr) auto;
  gap: 12px;
  align-items: stretch;
  padding: 14px;
  background: #17191b;
}

.cockpit > *,
.result-title > *,
.bench-heading > *,
label {
  min-width: 0;
}

.workbench-kicker,
.combat-line {
  margin: 0 0 5px;
  color: var(--gold);
  font-size: 0.84rem;
  font-weight: 700;
}

h1,
h2 {
  margin: 0;
  letter-spacing: 0;
}

h1 {
  font-size: clamp(1.6rem, 2.4vw, 2.4rem);
  line-height: 1.08;
  font-weight: 800;
}

h2 {
  font-size: 1.05rem;
  font-weight: 750;
}

.subtitle {
  max-width: 560px;
  margin: 7px 0 0;
  color: var(--soft);
  font-size: 0.95rem;
  line-height: 1.38;
}

.cockpit-readout {
  display: grid;
  border: 1px solid var(--line-soft);
  background: var(--field);
}

.cockpit-readout div {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  padding: 8px 10px;
  border-bottom: 1px solid var(--line-soft);
}

.cockpit-readout div:last-child {
  border-bottom: 0;
}

.cockpit-readout span,
label,
dt,
.delta-metrics span,
.bonus-ledger span,
.equipment-slot span,
.ledger-row span {
  color: var(--soft);
  font-size: 0.78rem;
  font-weight: 700;
}

.cockpit-readout strong {
  color: var(--text);
  font-size: 0.9rem;
  overflow-wrap: anywhere;
}

.relic-shelf {
  display: grid;
  grid-template-columns: repeat(4, 48px);
  gap: 7px;
  align-content: center;
}

.relic-shelf img {
  width: 48px;
  height: 48px;
  object-fit: contain;
  padding: 6px;
  border: 1px solid var(--line-soft);
  background: #151719;
}

.controls-band {
  padding: 13px 14px 14px;
  border-top: 0;
}

.controls-band h2 {
  margin-bottom: 10px;
}

.player-grid,
.target-grid,
.editor-grid,
.setup-editor {
  display: grid;
  gap: 9px;
}

.controls-band {
  display: grid;
  grid-template-columns: minmax(360px, 0.75fr) minmax(520px, 1.25fr);
  gap: 12px;
  align-items: start;
}

.control-section {
  min-width: 0;
  padding: 11px;
  border: 1px solid var(--line-soft);
  background: #191c1e;
}

.control-section h2 {
  margin-bottom: 9px;
  color: #ddd4c4;
}

.player-grid {
  grid-template-columns: repeat(3, minmax(72px, 1fr));
}

.player-grid label:nth-last-child(-n + 2) {
  grid-column: span 3;
}

.target-grid {
  grid-template-columns: repeat(4, minmax(86px, 1fr));
}

.target-preset {
  grid-column: span 2;
}

.toggle-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

label {
  display: grid;
  gap: 5px;
}

input,
select,
button {
  width: 100%;
  min-width: 0;
  min-height: 36px;
  border: 1px solid var(--line);
  background: var(--field);
  color: var(--text);
  font: inherit;
  font-weight: 600;
}

input,
select {
  padding: 0 9px;
}

input:focus,
select:focus,
button:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 1px;
}

button {
  cursor: pointer;
  padding: 0 12px;
  border-color: #5f5438;
  background: #2a251a;
  color: #ead59d;
  font-weight: 750;
}

button:hover {
  background: #342d1d;
}

.toggle-control {
  display: flex;
  width: auto;
  min-width: 0;
  min-height: 34px;
  align-items: center;
  gap: 8px;
  padding: 0 10px;
  border: 1px solid var(--line-soft);
  background: #17191b;
}

.toggle-control input {
  width: 15px;
  min-height: 15px;
}

.player-grid > *,
.target-grid > *,
.setup-editor > *,
.score-sheet > *,
.bonus-ledger > *,
.delta-metrics > * {
  min-width: 0;
}

.results-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 12px 0;
}

.result-pane {
  overflow: hidden;
}

.setup-loader {
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: #151719;
}

.challenger-pane {
  border-color: #4d604c;
}

.result-title,
.bench-heading {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  background: #181b1d;
}

.effect-stamp {
  flex: 0 0 auto;
  padding: 5px 8px;
  border: 1px solid #5b5139;
  background: #211e16;
  color: #e0c57a;
  font-size: 0.78rem;
  font-weight: 800;
}

.score-sheet {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 0;
  border-bottom: 1px solid var(--line);
}

.score-sheet div {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 8px;
  align-items: baseline;
  min-width: 0;
  min-height: 34px;
  padding: 6px 10px;
  border-right: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
  background: #191c1e;
}

.score-sheet div:nth-child(4n) {
  border-right: 0;
}

.score-primary {
  background: #211f17 !important;
}

dt {
  white-space: nowrap;
}

dd,
.delta-metrics strong,
.bonus-ledger strong,
.ledger-row strong {
  display: block;
  margin: 0;
  color: var(--text);
  font-family: "Cascadia Mono", Consolas, "Courier New", monospace;
  font-size: 0.96rem;
  font-variant-numeric: tabular-nums;
  font-weight: 720;
  text-align: right;
  overflow-wrap: anywhere;
}

.score-primary dd {
  color: #e7c764;
  font-size: 1.08rem;
}

.bonus-ledger {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  border-bottom: 1px solid var(--line);
}

.bonus-ledger div {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 7px;
  align-items: baseline;
  min-width: 0;
  min-height: 32px;
  padding: 6px 9px;
  border-right: 1px solid var(--line-soft);
  background: #17191b;
}

.bonus-ledger div:nth-child(6n) {
  border-right: 0;
}

.equipment-tab {
  --slot-size: 48px;
  display: grid;
  gap: 7px;
  justify-content: center;
  padding: 12px;
  border-bottom: 1px solid var(--line);
  background:
    linear-gradient(180deg, #2a2d2f, #1a1c1e 58%, #141618),
    #1b1d1f;
}

.equipment-tab.compact {
  --slot-size: 44px;
  grid-column: 1 / -1;
  border: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
}

.equipment-row {
  display: grid;
  justify-content: center;
  gap: 7px;
}

.equipment-row-1 {
  grid-template-columns: var(--slot-size);
}

.equipment-row-3 {
  grid-template-columns: repeat(3, var(--slot-size));
}

.equipment-slot {
  position: relative;
  display: grid;
  place-items: center;
  width: var(--slot-size);
  height: var(--slot-size);
  border: 1px solid #41464a;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.07), transparent 45%),
    linear-gradient(180deg, #222629, #111315);
  box-shadow:
    inset 1px 1px 0 rgba(255, 255, 255, 0.07),
    inset -1px -1px 0 rgba(0, 0, 0, 0.72);
}

.equipment-slot img,
.empty-icon {
  width: calc(var(--slot-size) - 10px);
  height: calc(var(--slot-size) - 10px);
  object-fit: contain;
}

.empty-icon {
  display: grid;
  place-items: center;
  color: var(--faint);
}

.equipment-slot span {
  position: absolute;
  right: 3px;
  bottom: 2px;
  font-size: 0.54rem;
  line-height: 1;
  opacity: 0.62;
  pointer-events: none;
}

.roll-ledger {
  border-bottom: 1px solid var(--line);
  background: #151719;
}

.ledger-heading,
.ledger-row {
  display: grid;
  grid-template-columns: minmax(110px, 0.7fr) minmax(120px, 0.8fr) minmax(0, 2fr);
  gap: 10px;
  align-items: baseline;
  padding: 8px 12px;
  border-bottom: 1px solid var(--line-soft);
}

.ledger-heading {
  background: #1c2022;
}

.ledger-heading span {
  color: var(--gold);
  font-weight: 800;
}

.ledger-heading strong {
  color: var(--text);
}

.ledger-row small {
  color: var(--faint);
  font-size: 0.76rem;
  line-height: 1.35;
}

.setup-note,
.source-note {
  margin: 10px 14px;
  line-height: 1.42;
}

.setup-note {
  color: var(--soft);
}

.source-note {
  color: #8dbf8a;
  font-size: 0.84rem;
}

.verdict-strip {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) minmax(360px, 1.2fr);
  gap: 12px;
  align-items: center;
  padding: 13px 14px;
}

.delta-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(110px, 1fr));
  border: 1px solid var(--line-soft);
}

.delta-metrics div {
  min-width: 0;
  padding: 8px 10px;
  border-right: 1px solid var(--line-soft);
  background: #17191b;
}

.delta-metrics div:last-child {
  border-right: 0;
}

.editor-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 12px 0;
}

.gear-bench {
  background-color: var(--pane);
}

.bench-heading button {
  max-width: 132px;
}

.setup-editor {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  padding: 12px;
  background: #17191b;
}

.style-rack {
  grid-column: span 2;
  padding: 9px;
  border: 1px solid var(--line-soft);
  background: #1d2023;
}

.slot-control {
  padding: 9px;
  border-left: 2px solid #5b5139;
  background: #151719;
}

.selected-gear {
  grid-column: 1 / -1;
}

.formula-notes {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 14px;
  align-items: start;
  padding: 14px;
}

.formula-notes p {
  color: var(--soft);
  line-height: 1.45;
}

@media (max-width: 1180px) {
  .cockpit,
  .controls-band,
  .setup-editor {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .player-controls,
  .display-controls {
    grid-column: span 1;
  }

.target-controls {
  grid-column: 2;
  grid-row: span 2;
}

  .score-sheet,
  .delta-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .bonus-ledger {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .bonus-ledger div:nth-child(3n) {
    border-right: 0;
  }

  .equipment-tab {
    --slot-size: 44px;
  }
}

@media (max-width: 820px) {
  .shell {
    width: min(100% - 16px, 720px);
    padding-top: 8px;
  }

  .cockpit,
  .results-layout,
  .editor-grid,
  .verdict-strip,
  .formula-notes {
    grid-template-columns: 1fr;
  }

  .relic-shelf {
    grid-template-columns: repeat(4, 44px);
  }

  .relic-shelf img {
    width: 44px;
    height: 44px;
  }

  .controls-band,
  .setup-editor {
    grid-template-columns: 1fr;
  }

  .player-controls,
  .target-controls,
  .display-controls {
    grid-column: auto;
  }

  .player-grid,
  .target-grid {
    grid-template-columns: 1fr;
  }

  .player-grid label:nth-last-child(-n + 2),
  .target-preset {
    grid-column: auto;
  }

  .score-sheet,
  .bonus-ledger,
  .delta-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .score-sheet div:nth-child(n),
  .bonus-ledger div:nth-child(n) {
    border-right: 1px solid var(--line-soft);
  }

  .score-sheet div:nth-child(2n),
  .bonus-ledger div:nth-child(2n) {
    border-right: 0;
  }

  .ledger-heading,
  .ledger-row {
    grid-template-columns: 1fr;
    gap: 3px;
  }

  .equipment-tab {
    --slot-size: 42px;
  }
}

@media (max-width: 520px) {
  .shell {
    width: 100%;
    padding-right: 8px;
    padding-left: 8px;
    overflow: hidden;
  }

  .cockpit,
  .controls-band,
  .result-pane,
  .verdict-strip,
  .gear-bench,
  .formula-notes {
    max-width: 100%;
  }

  .cockpit {
    padding: 12px;
  }

  h1 {
    font-size: 1.7rem;
  }

  .subtitle {
    max-width: 100%;
    font-size: 0.92rem;
    overflow-wrap: break-word;
  }

  input,
  select,
  button {
    font-size: 0.88rem;
  }

  .setup-editor,
  .equipment-tab {
    --slot-size: 40px;
    padding: 10px;
  }

  .score-sheet,
  .bonus-ledger,
  .delta-metrics {
    grid-template-columns: 1fr;
  }

  .score-sheet div:nth-child(n),
  .bonus-ledger div:nth-child(n) {
    border-right: 0;
  }

  .cockpit-readout div {
    grid-template-columns: 1fr;
    gap: 3px;
  }

  .style-rack {
    grid-column: auto;
  }
}
