@font-face {
  font-family: "WenJin Mincho Naka";
  src:
    local("WenJin Mincho"),
    local("WenJinMincho"),
    local("文津宋体"),
    local("文津宋體"),
    local("文津明朝"),
    url("https://cdn.jsdelivr.net/gh/takushun-wu/WenJinMincho@60700b6f0f0c04263167eebdb4af28216a29c754/ttf/WenJinMinchoP0-Regular.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

:root {
  --ink: #23212a;
  --muted: #6b6874;
  --paper: #f7f4ed;
  --panel: #fffdfa;
  --panel-2: #f0ece3;
  --line: #d8d1c5;
  --accent: #6d3f84;
  --accent-2: #ad7a35;
  --accent-soft: #eee5f3;
  --danger: #b85c5c;
  --danger-soft: #fff1f0;
  --good: #557c61;
  --shadow: 0 12px 30px rgba(40, 31, 48, .10);
  --radius: 13px;
  --font-text: "WenJin Mincho Naka", "WenJin Mincho", "Source Han Serif SC", "Source Han Serif JP", "Noto Serif CJK SC", "Noto Serif CJK JP", "Yu Mincho", "Hiragino Mincho ProN", "MS PMincho", serif;
  --font-mono: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
  font-family: var(--font-text);
  color: var(--ink);
  background: var(--paper);
}
* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; background: radial-gradient(circle at top left, #fff 0, var(--paper) 42rem); }
button, input, select, textarea { font: inherit; }
button, .button { cursor: pointer; }
a { color: inherit; }
.site-header {
  position: sticky; top: 0; z-index: 20;
  display: grid; grid-template-columns: minmax(210px, 1fr) auto minmax(120px, 1fr);
  align-items: center; gap: 20px; min-height: 68px; padding: 8px 24px;
  background: rgba(255, 253, 250, .94); border-bottom: 1px solid var(--line); backdrop-filter: blur(12px);
}
.brand { display: flex; align-items: center; gap: 11px; text-decoration: none; width: max-content; }
.brand-mark { display:grid; place-items:center; width:42px; height:42px; border-radius: 11px; background:var(--accent); color:white; font: 700 24px/1 var(--font-text); }
.brand strong, .brand small { display:block; }
.brand small { margin-top: 2px; color:var(--muted); font-size: 11px; letter-spacing:.025em; }
#main-nav { display:flex; gap:4px; }
#main-nav a { text-decoration:none; padding:9px 11px; border-radius:9px; color:var(--muted); font-size:14px; }
#main-nav a:hover, #main-nav a.active { color:var(--ink); background:var(--accent-soft); }
.tool-link { justify-self:end; text-decoration:none; color:var(--accent); font-size:13px; font-weight:650; }
#app { max-width: 1420px; margin: 0 auto; padding: 28px 30px 64px; }
.page-head { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:22px; }
.page-head h1 { margin:0 0 6px; font: 650 28px/1.15 var(--font-text); }
.page-head p { max-width:780px; margin:0; color:var(--muted); line-height:1.5; }
.actions { display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; }
button, .button { border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:9px; padding:9px 12px; text-decoration:none; }
button:hover, .button:hover { border-color:#b9ad9d; background:#fff; }
button.primary { background:var(--accent); color:white; border-color:var(--accent); }
button.primary:hover { filter:brightness(1.06); }
button.quiet { border-color:transparent; background:transparent; color:var(--muted); }
button.danger { color:var(--danger); }
button:disabled { opacity:.5; cursor:not-allowed; }
input[type="text"], input[type="number"], input[type="search"], input[type="url"], select, textarea {
  width:100%; border:1px solid var(--line); border-radius:8px; padding:9px 10px; color:var(--ink); background:#fff;
}
textarea { min-height:120px; resize:vertical; line-height:1.45; }
label { display:block; color:var(--muted); font-size:12px; font-weight:650; }
label > input, label > select, label > textarea { display:block; margin-top:5px; color:var(--ink); font-weight:400; }
.card { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); box-shadow:0 2px 12px rgba(37,29,45,.04); }
.builder-controls { display:grid; grid-template-columns:repeat(3,minmax(180px,1fr)); gap:14px; padding:15px; margin-bottom:18px; }
.builder-controls .control-note { grid-column:1/-1; display:flex; gap:9px; align-items:flex-start; color:var(--muted); font-size:13px; }
.team-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.team-slot { position:relative; display:grid; grid-template-columns:110px minmax(0,1fr); min-height:245px; overflow:hidden; transition:border-color .15s, box-shadow .15s; }
.team-slot.nonstandard { border-color:#d99191; box-shadow:0 0 0 2px rgba(184,92,92,.10); }
.slot-art { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:14px; background:linear-gradient(160deg,var(--panel-2),#fff); border-right:1px solid var(--line); }
.slot-art .pair-sprites { position:relative; width:84px; height:92px; }
.slot-art .warrior-sprite { position:absolute; left:0; top:0; width:64px; height:64px; object-fit:contain; image-rendering:pixelated; }
.slot-art .pokemon-sprite { position:absolute; right:0; bottom:0; width:52px; height:52px; object-fit:contain; image-rendering:pixelated; background:rgba(255,255,255,.8); border-radius:50%; }
.slot-number { display:grid; place-items:center; width:27px; height:27px; border-radius:50%; background:var(--accent); color:white; font-size:12px; font-weight:700; }
.slot-main { padding:15px 16px; min-width:0; }
.slot-title { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:11px; }
.slot-title h2 { margin:0; font:650 19px/1.25 var(--font-text); }
.slot-title h2 small { display:block; margin-top:3px; color:var(--muted); font:400 13px/1.2 var(--font-text); }
.slot-fixed { display:grid; grid-template-columns:1fr 1fr; gap:7px 12px; margin-bottom:12px; padding:9px 10px; border-radius:8px; background:var(--panel-2); font-size:13px; }
.slot-fixed span { color:var(--muted); }
.slot-fixed strong { display:block; color:var(--ink); font-weight:650; }
.slot-fields { display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:9px; align-items:end; }
.slot-fields .wide { grid-column:span 2; }
.link-input { display:grid; grid-template-columns:1fr 66px; gap:6px; align-items:center; }
.link-input input[type="range"] { width:100%; accent-color:var(--accent); }
.validation-list { margin:10px 0 0; padding:8px 10px; border-radius:8px; color:#794040; background:var(--danger-soft); font-size:12px; line-height:1.4; }
.slot-footer { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:11px; }
.stat-strip { display:grid; grid-template-columns:repeat(5,1fr); gap:4px; margin-top:10px; }
.stat { padding:5px; background:#f6f2eb; border-radius:6px; text-align:center; font-size:11px; }
.stat b { display:block; font-size:14px; }
.empty-slot { grid-template-columns:1fr; min-height:245px; place-items:center; text-align:center; padding:30px; color:var(--muted); border-style:dashed; }
.empty-slot b { display:block; margin-bottom:5px; color:var(--ink); }
.team-summary { margin-top:16px; padding:14px 16px; display:flex; gap:20px; align-items:center; justify-content:space-between; }
.team-summary .facts { display:flex; flex-wrap:wrap; gap:8px; }
.badge { display:inline-flex; align-items:center; gap:5px; border:1px solid var(--line); background:var(--panel-2); padding:5px 8px; border-radius:999px; font-size:12px; }
.badge.warn { border-color:#e1adad; color:#874747; background:var(--danger-soft); }
.split { display:grid; grid-template-columns:minmax(230px,320px) minmax(0,1fr); gap:18px; }
.sidebar { padding:14px; align-self:start; position:sticky; top:88px; }
.segmented { display:flex; gap:4px; padding:4px; background:var(--panel-2); border-radius:9px; margin-bottom:12px; }
.segmented button { flex:1; padding:7px; border:0; background:transparent; font-size:12px; }
.segmented button.active { background:white; box-shadow:0 1px 5px rgba(0,0,0,.08); }
.result-list { display:flex; flex-direction:column; gap:5px; max-height:65vh; overflow:auto; margin-top:10px; }
.result-row { display:grid; grid-template-columns:42px minmax(0,1fr) auto; gap:9px; align-items:center; text-align:left; padding:8px; border:1px solid transparent; background:transparent; border-radius:9px; }
.result-row:hover, .result-row.active { background:var(--accent-soft); border-color:#d9c7e2; }
.result-row img { width:38px; height:38px; object-fit:contain; image-rendering:pixelated; }
.result-row b, .result-row small { display:block; }
.result-row small { margin-top:2px; color:var(--muted); line-height:1.25; }
.detail { min-height:600px; padding:22px; }
.detail-hero { display:grid; grid-template-columns:100px minmax(0,1fr) auto; gap:17px; align-items:center; padding-bottom:18px; border-bottom:1px solid var(--line); }
.detail-hero img { width:96px; height:96px; object-fit:contain; image-rendering:pixelated; }
.detail h2 { margin:0 0 6px; font:650 27px/1.15 var(--font-text); }
.detail h3 { margin:25px 0 9px; font:650 18px/1.2 var(--font-text); }
.detail p { line-height:1.6; }
.short-description { padding:13px 14px; border-left:4px solid var(--accent); background:var(--accent-soft); border-radius:4px 9px 9px 4px; line-height:1.5; }
.long-description { white-space:pre-wrap; }
.data-missing { color:var(--muted); font-style:italic; }
.data-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:15px; }
.data-grid div { background:var(--panel-2); border-radius:8px; padding:9px; }
.data-grid small, .data-grid b { display:block; }
.data-grid small { color:var(--muted); margin-bottom:2px; }
.gallery-tools { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:17px; }
.gallery-tools > div { padding:15px; }
.gallery-table { width:100%; border-collapse:collapse; font-size:13px; }
.gallery-table th, .gallery-table td { padding:9px 10px; border-bottom:1px solid var(--line); text-align:left; }
.gallery-table th { color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.04em; }
.gallery-table img { width:36px; height:36px; object-fit:contain; image-rendering:pixelated; vertical-align:middle; margin-right:8px; }
.map-layout { display:grid; grid-template-columns:270px minmax(0,1fr); gap:18px; }
.map-controls { padding:14px; align-self:start; }
.map-canvas-wrap { padding:16px; min-height:600px; display:grid; place-items:center; overflow:auto; }
.map-grid { display:grid; gap:2px; width:min(760px,100%); aspect-ratio:1; }
.map-cell { position:relative; display:grid; place-items:center; min-width:20px; min-height:20px; border:1px solid rgba(255,255,255,.33); border-radius:2px; color:#25212a; font-size:10px; background:#ded8cc; }
.map-cell.out { opacity:.22; }
.map-cell .elev { font-size:9px; background:rgba(255,255,255,.72); border-radius:4px; padding:1px 3px; }
.map-cell .deploy { position:absolute; right:2px; top:2px; display:grid; place-items:center; width:15px; height:15px; border-radius:50%; color:white; background:var(--accent); font-size:8px; font-weight:700; }
.legend { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; color:var(--muted); font-size:11px; }
.legend span::before { content:""; display:inline-block; width:11px; height:11px; margin-right:4px; vertical-align:-1px; border-radius:2px; background:var(--swatch); }
.workshop-layout { display:grid; grid-template-columns:300px minmax(0,1fr); gap:18px; }
.workshop-nav { padding:14px; align-self:start; }
.workshop-nav button { display:block; width:100%; text-align:left; margin-bottom:5px; }
.workshop-nav button.active { background:var(--accent-soft); border-color:#d9c7e2; }
.editor { padding:20px; }
.editor-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.editor-grid .full { grid-column:1/-1; }
.editor footer { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:17px; padding-top:14px; border-top:1px solid var(--line); }
.progress-note { padding:12px 14px; margin-bottom:16px; border-radius:9px; background:#fff8dd; border:1px solid #e8dba2; color:#705e1f; font-size:13px; line-height:1.45; }
.modal-backdrop { position:fixed; inset:0; z-index:50; display:grid; place-items:center; padding:24px; background:rgba(27,23,31,.62); }
.modal { width:min(920px,100%); max-height:min(760px,92vh); overflow:hidden; display:grid; grid-template-rows:auto auto 1fr; background:var(--panel); border-radius:15px; box-shadow:var(--shadow); }
.modal-head { display:flex; align-items:center; justify-content:space-between; gap:15px; padding:16px 18px; border-bottom:1px solid var(--line); }
.modal-head h2 { margin:0; font:650 21px/1.2 var(--font-text); }
.modal-search { padding:12px 18px; border-bottom:1px solid var(--line); }
.modal-results { overflow:auto; padding:8px 12px 14px; }
.picker-row { width:100%; display:grid; grid-template-columns:56px minmax(0,1fr) auto; gap:12px; align-items:center; text-align:left; border:1px solid transparent; background:transparent; padding:9px; border-radius:9px; }
.picker-row:hover { border-color:#d9c7e2; background:var(--accent-soft); }
.picker-row img { width:50px; height:50px; object-fit:contain; image-rendering:pixelated; }
.picker-row b, .picker-row small { display:block; }
.picker-row small { color:var(--muted); margin-top:3px; line-height:1.35; }
.picker-section { margin:12px 8px 5px; color:var(--muted); font-size:11px; font-weight:750; text-transform:uppercase; letter-spacing:.05em; }
.import-box { width:min(720px,100%); }
.import-box textarea { min-height:310px; font-family:var(--font-mono); font-size:12px; }
.toast { position:fixed; right:20px; bottom:20px; z-index:100; padding:11px 14px; border-radius:9px; background:#26212b; color:white; box-shadow:var(--shadow); font-size:13px; animation:toast 3.1s both; }
@keyframes toast { 0%{opacity:0;transform:translateY(8px)} 8%,85%{opacity:1;transform:none} 100%{opacity:0} }
.small-note { color:var(--muted); font-size:12px; line-height:1.45; }
.hidden { display:none !important; }
@media (max-width: 980px) {
  .site-header { grid-template-columns:1fr auto; }
  #main-nav { grid-column:1/-1; order:3; overflow:auto; }
  .team-grid { grid-template-columns:1fr; }
  .split, .map-layout, .workshop-layout { grid-template-columns:1fr; }
  .sidebar, .map-controls, .workshop-nav { position:static; }
}
@media (max-width: 650px) {
  #app { padding:20px 14px 50px; }
  .site-header { padding:8px 12px; gap:8px; }
  .brand small { display:none; }
  .tool-link { font-size:0; }
  .tool-link::after { content:"Tools ↗"; font-size:12px; }
  .page-head { display:block; }
  .actions { justify-content:flex-start; margin-top:12px; }
  .builder-controls, .gallery-tools, .editor-grid { grid-template-columns:1fr; }
  .team-slot { grid-template-columns:82px minmax(0,1fr); }
  .slot-art { padding:8px; }
  .slot-fields { grid-template-columns:1fr 1fr; }
  .slot-fields .wide { grid-column:span 2; }
  .data-grid { grid-template-columns:1fr 1fr; }
  .detail-hero { grid-template-columns:72px 1fr; }
  .detail-hero img { width:70px; height:70px; }
  .detail-hero .actions { grid-column:1/-1; }
}

.rank-note {
  margin: 8px 0 2px;
  padding: 8px 10px;
  border-left: 3px solid var(--gold);
  border-radius: 5px;
  background: #fff8df;
  color: #55431d;
  font-size: 12px;
  line-height: 1.4;
}
.rank-table { margin: 10px 0 18px; }
.rank-effect-editor { display: grid; gap: 8px; }
.rank-effect-editor label {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) 130px;
  gap: 8px;
  align-items: start;
}
.rank-effect-editor label > span { padding-top: 10px; font-weight: 700; color: var(--plum); }
.rank-effect-editor textarea, .rank-effect-editor select { margin-top: 0; }
@media (max-width: 680px) {
  .rank-effect-editor label { grid-template-columns: 42px minmax(0, 1fr); }
  .rank-effect-editor select { grid-column: 2; }
}

/* Naka Data v0.2 interaction and reference refinements */
:root { --gold:#c19a42; }
.brand-mascot {
  display:block;
  width:68px;
  height:48px;
  overflow:hidden;
  border-radius:10px;
  background:var(--panel-2);
  flex:0 0 auto;
}
.brand-mascot img {
  display:block;
  width:auto;
  height:48px;
  max-width:none;
  image-rendering:auto;
}
.pair-sprites img,
.warrior-sprite,
.pokemon-sprite,
.result-row img,
.picker-row img,
.gallery-table img,
.rank-card img,
.linked-grid img,
.mechanic-link img,
.range-line img,
.range-hero,
.sprite-preview img { image-rendering:pixelated; }
.slot-art .warrior-sprite {
  width:76px;
  height:auto;
  max-height:64px;
  object-fit:contain;
}
.slot-art .pokemon-sprite { object-fit:contain; }
.pair-controls {
  display:grid;
  grid-template-columns:minmax(0,1fr) 112px;
  gap:9px;
  margin-bottom:10px;
}
.pair-controls > div {
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
}
.pair-controls span,
.pair-select span { color:var(--muted); font-size:11px; font-weight:650; }
.pair-select {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:2px 8px;
  width:100%;
  text-align:left;
  padding:8px 10px;
}
.pair-select span { grid-column:1/-1; }
.pair-select b { min-width:0; overflow:hidden; text-overflow:ellipsis; }
.pair-select em { color:var(--accent); font-size:11px; font-style:normal; }
.slot-fixed small { display:block; color:var(--muted); margin-top:2px; }
.move-reference { text-decoration-thickness:1px; text-underline-offset:2px; }
.field-help { display:block; min-height:2.7em; margin-top:4px; color:var(--muted); font-size:10px; line-height:1.3; font-weight:400; }
.link-readout { float:right; color:var(--ink); font-weight:650; }
.link-ticks { display:flex; justify-content:space-between; padding-right:70px; color:var(--muted); font-size:9px; font-weight:400; }
#tooltip-root {
  position:fixed;
  z-index:120;
  display:none;
  width:min(320px,calc(100vw - 24px));
  padding:9px 11px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#25202a;
  color:white;
  box-shadow:var(--shadow);
  font-size:12px;
  line-height:1.4;
  pointer-events:none;
}
#tooltip-root.show { display:block; }
.result-row { grid-template-columns:54px minmax(0,1fr); }
.result-row img { width:48px; height:auto; max-height:40px; }
.detail-hero > img:not(.range-hero) {
  width:auto;
  max-width:96px;
  height:auto;
  max-height:112px;
}
.range-hero { width:96px; height:auto; object-fit:contain; }
.rank-s-block {
  padding:12px 14px;
  border-left:4px solid var(--gold);
  border-radius:4px 9px 9px 4px;
  background:#fff8df;
  line-height:1.5;
}
.muted-source { border-left-color:var(--line); background:var(--panel-2); color:var(--muted); }
.mechanic-link {
  display:grid;
  grid-template-columns:58px minmax(0,1fr);
  gap:12px;
  align-items:center;
  padding:10px 0;
  border-bottom:1px solid var(--line);
}
.mechanic-link img { width:52px; height:auto; object-fit:contain; }
.mechanic-link p { margin:3px 0 0; color:var(--muted); font-size:12px; line-height:1.35; }
.linked-grid {
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(130px,1fr));
  gap:8px;
}
.linked-grid a {
  display:flex;
  gap:8px;
  align-items:center;
  padding:7px 8px;
  border:1px solid var(--line);
  border-radius:8px;
  text-decoration:none;
}
.linked-grid a:hover { background:var(--accent-soft); }
.linked-grid img { width:34px; height:34px; object-fit:contain; }
.variant-links { display:flex; flex-wrap:wrap; gap:8px; }
.variant-links a { padding:6px 9px; border:1px solid var(--line); border-radius:999px; text-decoration:none; }
.variant-links a:hover { background:var(--accent-soft); }
.range-line { display:flex; align-items:center; gap:12px; }
.range-line img { width:96px; height:auto; }
.rank-card {
  display:grid;
  grid-template-columns:100px minmax(0,1fr);
  gap:14px;
  align-items:center;
  padding:12px 0;
  border-bottom:1px solid var(--line);
}
.rank-card img { width:auto; max-width:96px; height:auto; max-height:80px; object-fit:contain; }
.editorial { padding:10px 12px; border:1px solid var(--line); border-radius:9px; }
.editorial summary { cursor:pointer; color:var(--muted); font-weight:650; }
.editorial[open] summary { margin-bottom:12px; }
.sprite-preview { display:flex; gap:16px; align-items:center; padding:14px; border:1px dashed var(--line); border-radius:9px; }
.sprite-preview img { width:auto; max-width:160px; height:auto; max-height:96px; object-fit:contain; }
.variant-row { display:grid; grid-template-columns:minmax(150px,.7fr) minmax(0,1fr) auto; gap:12px; align-items:center; padding:10px 12px; margin-top:8px; }
.variant-row span { color:var(--muted); font-size:12px; }
@media (max-width:650px) {
  .brand-mascot { width:50px; height:40px; }
  .brand-mascot img { height:40px; }
  .pair-controls { grid-template-columns:1fr; }
  .link-ticks { padding-right:0; }
  .rank-card { grid-template-columns:72px minmax(0,1fr); }
  .variant-row { grid-template-columns:1fr; }
}


/* Naka Data v0.3: simplified builder, grouped Gallery and portrait-ready Pokédex */
.brand-mascot { width:68px; height:42px; background:transparent; border-radius:0; display:grid; place-items:center; overflow:visible; }
.brand-mascot img { width:64px; height:32px; max-width:none; object-fit:contain; image-rendering:pixelated; }
.compact-controls { grid-template-columns:minmax(220px,1fr) minmax(180px,.7fr) minmax(220px,1fr); }
.team-slot { min-height:0; }
.slot-title > div { display:flex; align-items:baseline; gap:9px; flex-wrap:wrap; }
.rank-badge { color:var(--muted); font-size:12px; font-weight:650; }
.streamlined-fields { grid-template-columns:1fr 1fr 120px; }
.streamlined-fields .wide { grid-column:1/-1; }
.compact-validation { margin-top:10px; }
.validation-report-row { padding:11px 0; border-bottom:1px solid var(--line); }
.validation-report-row p { margin:4px 0 0; color:#874747; }
.validation-success { padding:16px; border:1px solid #b9d6bc; border-radius:10px; background:#f2faf3; }
.left-actions { justify-content:flex-start; }
.gallery-overview { display:grid; grid-template-columns:minmax(200px,1fr) minmax(200px,1fr) 170px; gap:12px; align-items:end; padding:15px; }
.gallery-metrics { grid-column:1/-1; display:flex; gap:10px; flex-wrap:wrap; }
.gallery-metrics span { padding:6px 9px; border-radius:999px; background:var(--panel-2); font-size:12px; }
.gallery-presets { margin:14px 0; padding:12px 15px; }
.gallery-presets summary { cursor:pointer; font-weight:700; }
.gallery-presets[open] summary { margin-bottom:8px; }
.gallery-card-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(390px,1fr)); gap:14px; }
.gallery-warrior-card { padding:14px; }
.gallery-warrior-card > header { display:grid; grid-template-columns:70px minmax(0,1fr) auto; gap:11px; align-items:center; padding-bottom:10px; border-bottom:1px solid var(--line); }
.gallery-warrior-card > header img { width:64px; height:32px; object-fit:contain; image-rendering:pixelated; }
.gallery-warrior-card h2 { margin:0 0 5px; font:650 18px/1.2 var(--font-text); }
.gallery-warrior-card header label { display:flex; gap:6px; align-items:center; color:var(--muted); font-size:12px; }
.gallery-warrior-card header select { width:auto; margin:0; padding:4px 7px; }
.gallery-pair-list { display:grid; gap:7px; margin-top:10px; }
.gallery-pair-row { display:grid; grid-template-columns:38px minmax(130px,1fr) 105px 75px auto; gap:8px; align-items:center; }
.gallery-pair-row img { width:32px; height:32px; object-fit:contain; image-rendering:pixelated; }
.gallery-pair-row select, .gallery-pair-row input { margin:0; }
.gallery-pair-row label { display:flex; align-items:center; gap:4px; font-size:12px; color:var(--muted); }
.gallery-pair-row input { width:58px; }
.gallery-max { color:var(--muted); font-size:11px; }
.gallery-empty { padding:30px; text-align:center; }
.result-row { grid-template-columns:56px minmax(0,1fr); }
.result-art { width:52px; height:48px; display:grid; place-items:center; }
.result-art img { width:auto !important; height:auto !important; max-width:48px; max-height:48px; object-fit:contain; image-rendering:pixelated; flex:none; }
.pokemon-hero { grid-template-columns:140px minmax(0,1fr); }
.pokemon-detail-image { width:128px !important; height:128px !important; max-width:none !important; max-height:none !important; object-fit:contain !important; image-rendering:pixelated; flex:none; }
.pokemon-stats { grid-template-columns:repeat(5,minmax(0,1fr)); }
.mechanic-link.no-image { grid-template-columns:minmax(0,1fr); }
.mechanic-link.compact.no-image { padding-left:0; }
.ability-slot-list { display:grid; gap:10px; }
.ability-slot-entry { border-bottom:1px solid var(--line); }
.ability-slot-entry > header { display:flex; justify-content:space-between; gap:12px; align-items:center; padding:7px 0 0; }
.ability-slot-entry > header span { color:var(--muted); font-size:11px; }
.warrior-detail-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(300px,390px); gap:24px; }
.rank-tabs, .expression-tabs { display:flex; flex-wrap:wrap; gap:5px; margin-top:13px; }
.rank-tabs button.active, .expression-tabs button.active { background:var(--accent-soft); border-color:#d9c7e2; }
.warrior-expression-panel { align-self:start; border-left:1px solid var(--line); padding-left:20px; }
.expression-tabs { margin:0 0 8px; }
.expression-tabs button { padding:6px 8px; font-size:11px; }
.expression-stage { min-height:450px; display:grid; place-items:end center; overflow:hidden; background:linear-gradient(180deg,var(--panel-2),transparent); border-radius:10px; }
.warrior-expression-image { display:block; width:auto; max-width:100%; height:auto; max-height:470px; object-fit:contain; image-rendering:auto; }
.single-rank { border-bottom:0; }
.warrior-stats { grid-template-columns:repeat(4,minmax(0,1fr)); }
.ability-cost-note { display:grid; grid-template-columns:auto 1fr; gap:6px 12px; align-content:start; padding:12px; border:1px solid var(--line); border-radius:9px; background:var(--panel-2); }
.portrait-preview-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(145px,1fr)); gap:9px; }
.portrait-preview-grid > div { display:grid; place-items:center; min-height:190px; padding:8px; border:1px solid var(--line); border-radius:9px; background:var(--panel-2); }
.portrait-preview-grid img { max-width:176px; width:100%; height:auto; object-fit:contain; }
.portrait-preview-grid span { color:var(--muted); font-size:11px; }
@media (max-width:1050px) {
  .warrior-detail-layout { grid-template-columns:1fr; }
  .warrior-expression-panel { border-left:0; border-top:1px solid var(--line); padding:18px 0 0; }
  .expression-stage { min-height:360px; place-items:end center; }
}
@media (max-width:760px) {
  .compact-controls, .gallery-overview { grid-template-columns:1fr; }
  .streamlined-fields { grid-template-columns:1fr 1fr; }
  .gallery-card-grid { grid-template-columns:1fr; }
  .gallery-pair-row { grid-template-columns:38px minmax(110px,1fr) 90px; }
  .gallery-pair-row .gallery-max { display:none; }
  .gallery-pair-row .gallery-delete { grid-column:3; }
  .pokemon-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pokemon-hero { grid-template-columns:110px minmax(0,1fr); }
  .pokemon-detail-image { width:96px !important; height:96px !important; }
}


/* Naka Data v0.4 */
.builder-stat-strip { margin-top:12px; }
.builder-stat-strip .stat span { display:block; color:var(--muted); font-size:10px; }
.gallery-delete-x { width:30px; min-width:30px; height:30px; padding:0; border-radius:50%; font-size:20px; line-height:1; align-self:center; }
.warrior-link-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(145px,1fr)); gap:7px; max-height:480px; overflow:auto; padding-right:4px; }
.warrior-link { display:grid; grid-template-columns:34px minmax(0,1fr) auto; gap:7px; align-items:center; padding:7px 8px; border:1px solid var(--line); border-radius:8px; text-decoration:none; background:var(--panel-2); }
.warrior-link:hover { border-color:#c9afd5; background:var(--accent-soft); }
.warrior-link img { width:32px; height:32px; object-fit:contain; image-rendering:pixelated; }
.warrior-link b { font-size:12px; }
.warrior-link.perfect { border-color:#d5af54; background:#fff8df; }
.item-record-picker { display:flex; gap:12px; align-items:end; margin-bottom:16px; }
.item-record-picker label { flex:1; }
.item-record-picker img { width:32px; height:32px; object-fit:contain; image-rendering:pixelated; }
.kingdom-checkboxes { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px 12px; border:1px solid var(--line); border-radius:9px; padding:12px; }
.kingdom-checkboxes legend, .crafting-editor legend { padding:0 6px; font-weight:700; }
.kingdom-checkboxes label { display:flex; align-items:center; gap:6px; font-size:13px; }
.crafting-editor { display:grid; grid-template-columns:minmax(0,1fr) 110px; gap:10px 12px; border:1px solid var(--line); border-radius:9px; padding:12px; }
.crafting-editor .full { grid-column:1/-1; }
.warrior-expression-panel .small-note { text-align:center; margin-top:8px; }
@media (max-width:700px){.kingdom-checkboxes{grid-template-columns:repeat(2,minmax(0,1fr));}.crafting-editor{grid-template-columns:1fr;}.crafting-editor .full{grid-column:auto;}}

/* Naka Data v0.5: item seed, reciprocal Links and compact portraits */
.warrior-detail-layout { grid-template-columns:minmax(0,1fr) 285px; gap:20px; }
.warrior-expression-panel { padding-left:16px; }
.expression-stage { min-height:310px; max-height:350px; }
.warrior-expression-image { max-height:340px; max-width:270px; }
.pokemon-link-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:7px; max-height:560px; overflow:auto; padding-right:4px; }
.pokemon-link { display:grid; grid-template-columns:56px minmax(0,1fr) auto; gap:8px; align-items:center; padding:7px 8px; border:1px solid var(--line); border-radius:8px; text-decoration:none; background:var(--panel-2); }
.pokemon-link:hover { border-color:#c9afd5; background:var(--accent-soft); }
.pokemon-link img { width:52px; height:32px; object-fit:contain; image-rendering:pixelated; }
.pokemon-link span { min-width:0; }
.pokemon-link small { display:block; margin-top:2px; color:var(--muted); white-space:normal; }
.pokemon-link strong { font-size:12px; }
.pokemon-link.perfect { border-color:#d5af54; background:#fff8df; }
.item-hero img { width:48px; height:48px; object-fit:contain; image-rendering:pixelated; }
.item-facts { grid-template-columns:repeat(4,minmax(0,1fr)); margin:16px 0 0; }
.kingdom-chip-list { display:flex; flex-wrap:wrap; gap:7px; }
.kingdom-chip-list span { padding:6px 9px; border:1px solid var(--line); border-radius:999px; background:var(--panel-2); font-size:12px; }
.source-location { margin:11px 0 0; }
.source-warning { margin:10px 0; padding:10px 12px; border:1px solid #d9b27d; border-radius:9px; background:#fff8e8; color:#6e5228; }
.craft-summary { display:flex; flex-wrap:wrap; gap:8px; }
.craft-summary span { padding:7px 10px; border-radius:8px; background:var(--panel-2); border:1px solid var(--line); }
.kingdom-checkbox-actions { grid-column:1/-1; display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:2px; }
.kingdom-checkbox-actions button { padding:5px 8px; }
.kingdom-checkbox-actions span { color:var(--muted); font-size:11px; }
@media (max-width:1050px) {
  .warrior-detail-layout { grid-template-columns:1fr; }
  .warrior-expression-panel { padding-left:0; }
  .expression-stage { min-height:300px; max-height:340px; }
}
@media (max-width:760px) {
  .item-facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pokemon-link-grid { grid-template-columns:1fr; }
}


/* Naka Data v0.6 campaign and RanseiLink data integration */
.builder-controls.campaign-controls {
  grid-template-columns: minmax(180px,1.1fr) minmax(150px,.8fr) minmax(220px,1.25fr) minmax(190px,1fr);
}
.campaign-loader {
  display:grid;
  grid-template-columns:minmax(260px,1.5fr) minmax(320px,1fr);
  gap:16px 22px;
  align-items:center;
  margin:-2px 0 18px;
  padding:17px 18px;
  border-color:#cfc1d7;
  background:linear-gradient(135deg,#fffdfa 0%,#f5edf8 100%);
}
.campaign-loader-copy h2 { margin:3px 0 5px; font:650 21px/1.2 var(--font-text); }
.campaign-loader-copy p { margin:0; color:var(--muted); line-height:1.5; }
.eyebrow {
  display:block;
  color:var(--accent);
  font-size:10px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.campaign-loader-metrics {
  display:grid;
  grid-template-columns:repeat(4,minmax(65px,1fr));
  gap:7px;
}
.campaign-loader-metrics div {
  min-width:0;
  padding:9px 8px;
  border:1px solid rgba(109,63,132,.13);
  border-radius:9px;
  background:rgba(255,255,255,.76);
  text-align:center;
}
.campaign-loader-metrics small,
.campaign-loader-metrics b { display:block; }
.campaign-loader-metrics small { color:var(--muted); font-size:10px; }
.campaign-loader-metrics b { margin-top:2px; font-size:18px; }
.campaign-loader-actions {
  grid-column:1/-1;
  justify-content:flex-start;
  padding-top:12px;
  border-top:1px solid rgba(109,63,132,.14);
}
.campaign-roster-summary {
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:10px 8px 14px;
  color:var(--muted);
}
.campaign-roster-summary b { color:var(--ink); }
.campaign-roster-group {
  margin:7px 0;
  border:1px solid var(--line);
  border-radius:10px;
  overflow:hidden;
  background:#fff;
}
.campaign-roster-group > summary {
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  cursor:pointer;
  background:var(--panel-2);
  font-weight:700;
}
.campaign-roster-group > summary span {
  color:var(--muted);
  font-size:12px;
}
.campaign-roster-row {
  display:grid;
  grid-template-columns:78px minmax(0,1fr) auto;
  gap:11px;
  align-items:center;
  padding:9px 11px;
  border-top:1px solid var(--line);
}
.campaign-roster-row > span:nth-child(2) b,
.campaign-roster-row > span:nth-child(2) small { display:block; }
.campaign-roster-row > span:nth-child(2) small {
  margin-top:2px;
  color:var(--muted);
  line-height:1.3;
}
.campaign-roster-pair {
  position:relative;
  display:block;
  width:72px;
  height:50px;
}
.campaign-roster-pair img {
  position:absolute;
  width:46px;
  height:46px;
  object-fit:contain;
  image-rendering:pixelated;
}
.campaign-roster-pair img:first-child { left:0; top:0; }
.campaign-roster-pair img:last-child { right:0; bottom:0; }
@media (max-width: 1050px) {
  .builder-controls.campaign-controls { grid-template-columns:1fr 1fr; }
  .campaign-loader { grid-template-columns:1fr; }
  .campaign-loader-actions { grid-column:1; }
}
@media (max-width: 650px) {
  .builder-controls.campaign-controls { grid-template-columns:1fr; }
  .campaign-loader-metrics { grid-template-columns:1fr 1fr; }
  .campaign-roster-row { grid-template-columns:64px minmax(0,1fr); }
  .campaign-roster-row button, .campaign-roster-row .badge { grid-column:2; justify-self:start; }
}


/* v0.7 story context and stat testing */
.campaign-story {
  display: grid;
  gap: 14px;
}
.campaign-story-heading,
.story-force-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}
.campaign-story-heading h2 {
  margin: 3px 0 0;
  font-size: clamp(1.7rem, 3vw, 2.35rem);
}
.campaign-story-description {
  max-width: 78ch;
  margin: 0;
  font-size: 1.02rem;
  line-height: 1.65;
}
.campaign-story-objective {
  margin: 0;
  padding: 10px 12px;
  border-left: 3px solid var(--accent, #71577d);
  background: rgba(113,87,125,.07);
}
.player-gender-control {
  min-width: 150px;
}
.story-force-heading h3 {
  margin: 0;
}
.story-force-heading span {
  color: var(--muted, #726a72);
  font-size: .88rem;
}
.story-force-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(205px, 1fr));
  gap: 8px;
}
.story-force-tile {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 9px;
  min-width: 0;
  padding: 8px 9px;
  border: 1px solid var(--line, #d8cec1);
  border-radius: 10px;
  background: rgba(255,255,255,.42);
}
.story-force-tile small {
  display: block;
  color: var(--muted, #726a72);
}
.story-force-art {
  display: flex;
  align-items: center;
}
.story-force-art img {
  width: 34px;
  height: 34px;
  object-fit: contain;
  image-rendering: pixelated;
}
.story-force-art img + img {
  margin-left: -5px;
}
.campaign-garrison {
  margin-top: 12px;
}
.story-appearance-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.story-reference-link {
  font-size: .84rem;
}
.builder-stat-strip .stat {
  appearance: none;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-align: left;
  border: 1px solid transparent;
}
.builder-stat-strip .stat:hover,
.builder-stat-strip .stat:focus-visible {
  border-color: var(--accent, #71577d);
  outline: none;
}
.builder-stat-strip .stat small {
  display: block;
  margin-top: 2px;
  color: var(--muted, #726a72);
  font-size: .68rem;
  font-weight: 500;
}
.stat-editor {
  display: grid;
  gap: 14px;
}
.stat-editor label {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 12px;
}
.stat-editor label input {
  grid-column: 1 / -1;
}
.stat-editor label span {
  color: var(--muted, #726a72);
  font-size: .82rem;
}
.stat-editor-preview {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 12px;
  border-radius: 9px;
  background: var(--soft, #f0ece5);
}
.stat-editor-preview b {
  font-size: 1.5rem;
}
@media (max-width: 720px) {
  .campaign-story-heading,
  .story-force-heading {
    display: grid;
  }
  .story-force-grid {
    grid-template-columns: 1fr;
  }
}


/* v0.8 planner, rank controls, and Gallery progress */
.tracked-gallery-tools {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin-bottom:14px;
}
.tracked-gallery-tools h2,
.campaign-map-heading h2 {
  margin:2px 0 3px;
}
.tracked-gallery-tools p {
  margin:0;
  color:var(--muted);
}
.campaign-planner-shell {
  display:grid;
  grid-template-columns:minmax(300px,.9fr) minmax(460px,1.35fr);
  gap:14px;
  margin-bottom:16px;
}
.campaign-planner-shell .campaign-story {
  grid-column:1;
  align-self:start;
}
.campaign-map-panel {
  grid-column:2;
  grid-row:1 / span 2;
}
.campaign-garrison {
  grid-column:1;
  margin:0;
}
.campaign-map-heading {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}
.load-strategy-note {
  max-width:220px;
  color:var(--muted);
  font-size:.78rem;
  text-align:right;
}
.starting-force-details {
  border-top:1px solid var(--line);
  padding-top:9px;
}
.starting-force-details summary {
  cursor:pointer;
  font-weight:700;
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}
.starting-force-details summary span {
  color:var(--muted);
  font-size:.8rem;
  font-weight:500;
}
.ransei-map {
  position:relative;
  min-height:560px;
  border:1px solid var(--line);
  border-radius:16px;
  overflow:hidden;
  background:
    radial-gradient(circle at 46% 48%, rgba(113,87,125,.12), transparent 29%),
    linear-gradient(135deg, rgba(242,235,218,.92), rgba(235,229,237,.92));
}
.ransei-map::before {
  content:"";
  position:absolute;
  inset:8% 10%;
  border-radius:42% 55% 47% 50%;
  border:1px dashed rgba(113,87,125,.2);
  transform:rotate(-7deg);
}
.kingdom-node {
  position:absolute;
  width:116px;
  min-height:52px;
  display:flex;
  align-items:center;
  gap:7px;
  padding:5px 7px;
  border:1px solid rgba(95,78,63,.23);
  border-radius:12px;
  background:rgba(255,253,248,.94);
  box-shadow:0 3px 10px rgba(49,38,31,.08);
  text-align:left;
  z-index:1;
}
.kingdom-node:hover,
.kingdom-node:focus-visible {
  transform:translateY(-2px);
  border-color:var(--accent);
  z-index:3;
}
.kingdom-node.selected {
  border:2px solid var(--accent);
  background:#fff;
  box-shadow:0 5px 15px rgba(113,87,125,.22);
}
.kingdom-node img {
  width:30px;
  height:30px;
  object-fit:contain;
  image-rendering:pixelated;
  flex:0 0 auto;
}
.kingdom-node span {
  min-width:0;
}
.kingdom-node b,
.kingdom-node small {
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.kingdom-node b {
  font-size:.76rem;
}
.kingdom-node small {
  color:var(--muted);
  font-size:.61rem;
}
/* Topological, not geographic, placement. */
.kingdom-pos-0{left:41%;top:44%}.kingdom-pos-1{left:18%;top:39%}.kingdom-pos-2{left:58%;top:48%}
.kingdom-pos-3{left:61%;top:65%}.kingdom-pos-4{left:73%;top:56%}.kingdom-pos-5{left:34%;top:60%}
.kingdom-pos-6{left:44%;top:72%}.kingdom-pos-7{left:12%;top:58%}.kingdom-pos-8{left:73%;top:32%}
.kingdom-pos-9{left:55%;top:20%}.kingdom-pos-10{left:34%;top:25%}.kingdom-pos-11{left:5%;top:24%}
.kingdom-pos-12{left:80%;top:14%}.kingdom-pos-13{left:18%;top:8%}.kingdom-pos-14{left:48%;top:5%}
.kingdom-pos-15{left:7%;top:76%}.kingdom-pos-16{left:72%;top:80%}
.garrison-preview {
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin:10px 0;
}
.garrison-preview span {
  display:flex;
  align-items:center;
  padding:3px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--soft);
}
.garrison-preview img {
  width:32px;
  height:28px;
  object-fit:contain;
  image-rendering:pixelated;
}
.garrison-preview img+img { margin-left:-5px; }
.player-entry-toggle,
.player-slot-toggle {
  display:inline-flex;
  gap:2px;
  margin-top:5px;
  padding:2px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--soft);
}
.player-entry-toggle button,
.player-slot-toggle button {
  padding:3px 7px;
  border:0;
  border-radius:6px;
  background:transparent;
  font-size:.67rem;
}
.player-entry-toggle button.active,
.player-slot-toggle button.active {
  color:#fff;
  background:var(--accent);
}
.slot-title-identity {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
}
.slot-title-identity h2 { margin-right:1px; }
.rank-inline {
  display:inline-flex;
  align-items:center;
  gap:4px;
  color:var(--muted);
  font-size:.7rem;
  font-weight:700;
}
.rank-inline select {
  min-width:56px;
  width:auto;
  padding:4px 22px 4px 7px;
  font-size:.72rem;
}
.perfect-dashboard {
  margin-bottom:14px;
}
.perfect-dashboard-head {
  display:flex;
  justify-content:space-between;
  gap:18px;
  align-items:center;
}
.perfect-dashboard-head h2 { margin:2px 0 4px; }
.perfect-dashboard-head p { margin:0;color:var(--muted); }
.perfect-progress-ring {
  width:88px;
  height:88px;
  display:grid;
  place-content:center;
  text-align:center;
  flex:0 0 auto;
  border:7px solid rgba(113,87,125,.18);
  border-top-color:var(--accent);
  border-radius:50%;
}
.perfect-progress-ring b { font-size:1.45rem; }
.perfect-progress-ring span { color:var(--muted);font-size:.7rem; }
.perfect-filter {
  width:max-content;
  max-width:100%;
  margin:14px 0 10px;
}
.perfect-checklist summary {
  display:flex;
  justify-content:space-between;
  cursor:pointer;
  font-weight:700;
  padding:8px 0;
  border-top:1px solid var(--line);
}
.perfect-checklist summary span { color:var(--muted);font-weight:500; }
.perfect-checklist-rows {
  max-height:480px;
  overflow:auto;
  display:grid;
  gap:7px;
  padding:7px;
  border:1px solid var(--line);
  border-radius:13px;
  background:color-mix(in srgb,var(--panel-2) 58%,transparent);
  scrollbar-gutter:stable;
}
.perfect-check-row {
  display:grid;
  grid-template-columns:42px minmax(150px,1fr) auto auto;
  align-items:center;
  gap:10px;
  min-height:54px;
  padding:8px 10px;
  border:1px solid color-mix(in srgb,var(--line) 82%,transparent);
  border-radius:10px;
  background:var(--panel);
  box-shadow:0 1px 0 rgba(255,255,255,.35) inset;
}
.perfect-check-row:hover {
  border-color:color-mix(in srgb,var(--accent) 34%,var(--line));
  background:color-mix(in srgb,var(--panel) 94%,var(--accent));
}
.perfect-check-row>img {
  width:40px;
  height:28px;
  object-fit:contain;
  image-rendering:pixelated;
}
.perfect-check-row small {
  display:block;
  color:var(--muted);
  font-size:.73rem;
}
.perfect-target-icons {
  display:flex;
}
.perfect-target-icons img {
  width:30px;
  height:30px;
  object-fit:contain;
  image-rendering:pixelated;
}
.perfect-target-icons img+img { margin-left:-5px; }
.perfect-state.complete {
  color:#3f7554;
  font-size:.78rem;
  font-weight:700;
}
.starter-gender-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.starter-gender-grid button {
  display:grid;
  justify-items:center;
  gap:5px;
  padding:14px;
}
.starter-gender-grid img {
  width:64px;
  height:38px;
  object-fit:contain;
  image-rendering:pixelated;
}
.starter-gender-grid span { color:var(--muted);font-size:.8rem; }

@media (max-width:1050px) {
  .campaign-planner-shell { grid-template-columns:1fr; }
  .campaign-planner-shell .campaign-story,
  .campaign-map-panel,
  .campaign-garrison { grid-column:1;grid-row:auto; }
  .ransei-map { min-height:520px; }
}
@media (max-width:720px) {
  .tracked-gallery-tools,
  .perfect-dashboard-head { display:grid; }
  .ransei-map { min-height:690px; }
  .kingdom-node { width:104px; }
  .kingdom-pos-0{left:34%;top:43%}.kingdom-pos-1{left:3%;top:38%}.kingdom-pos-2{left:63%;top:46%}
  .kingdom-pos-3{left:55%;top:62%}.kingdom-pos-4{left:68%;top:71%}.kingdom-pos-5{left:25%;top:56%}
  .kingdom-pos-6{left:32%;top:69%}.kingdom-pos-7{left:1%;top:57%}.kingdom-pos-8{left:65%;top:31%}
  .kingdom-pos-9{left:50%;top:18%}.kingdom-pos-10{left:30%;top:27%}.kingdom-pos-11{left:1%;top:22%}
  .kingdom-pos-12{left:67%;top:7%}.kingdom-pos-13{left:7%;top:6%}.kingdom-pos-14{left:37%;top:4%}
  .kingdom-pos-15{left:1%;top:78%}.kingdom-pos-16{left:53%;top:84%}
  .perfect-check-row { grid-template-columns:38px minmax(120px,1fr) auto; }
  .perfect-target-icons { display:none; }
  .starter-gender-grid { grid-template-columns:1fr; }
}


/* v0.9: separated planners, official Ransei map, Kingdom viewer */
.campaign-top-controls,
.kingdom-view-controls {
  display:grid;
  grid-template-columns:minmax(260px,1fr) minmax(260px,1fr) 2fr;
  gap:14px;
  align-items:end;
  margin-bottom:14px;
}
.campaign-top-controls p {
  margin:0;
  color:var(--muted);
  line-height:1.45;
}
.team-context-summary {
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:8px 12px;
  border-left:1px solid var(--line);
}
.team-context-summary small { color:var(--muted); }
.builder-source-actions { align-items:center; justify-content:flex-start; flex-wrap:wrap; }
.ransei-map-frame { display:grid; gap:12px; }
.ransei-map-art {
  position:relative;
  width:min(100%,760px);
  margin-inline:auto;
  aspect-ratio:544 / 416;
  overflow:hidden;
  border-radius:14px;
  background:#0b4d91;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.22);
}
.ransei-map-art > img,
.kingdom-map-editor-canvas > img {
  width:100%;
  height:100%;
  display:block;
  object-fit:contain;
}
.kingdom-map-pin {
  position:absolute;
  transform:translate(-50%,-50%);
  display:grid;
  justify-items:center;
  gap:2px;
  padding:3px 5px;
  min-width:48px;
  border:1px solid rgba(255,255,255,.9);
  border-radius:10px;
  background:rgba(255,250,242,.92);
  box-shadow:0 3px 12px rgba(0,0,0,.28);
  z-index:2;
}
.kingdom-map-pin img { width:34px; height:20px; object-fit:contain; image-rendering:pixelated; }
.kingdom-map-pin span { font-size:.67rem; font-weight:700; line-height:1; }
.kingdom-map-pin.selected { outline:3px solid var(--accent); z-index:3; }
.map-unplotted-note {
  position:absolute;
  left:50%;
  bottom:12px;
  transform:translateX(-50%);
  padding:7px 10px;
  border-radius:999px;
  background:rgba(255,250,242,.92);
  font-size:.8rem;
}
.kingdom-selector-strip {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  gap:7px;
}
.kingdom-selector {
  display:grid;
  grid-template-columns:42px 1fr;
  align-items:center;
  gap:7px;
  padding:7px;
  text-align:left;
}
.kingdom-selector img { width:40px; height:24px; object-fit:contain; image-rendering:pixelated; }
.kingdom-selector small { display:block; color:var(--muted); }
.kingdom-selector.selected { border-color:var(--accent); background:var(--accent-soft); }
.kingdom-view-layout {
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr);
  gap:14px;
}
.kingdom-map-card { align-self:start; }
.kingdom-detail-heading {
  display:flex;
  align-items:center;
  gap:12px;
  padding-bottom:12px;
  border-bottom:1px solid var(--line);
}
.kingdom-detail-heading img { width:78px; height:48px; object-fit:contain; image-rendering:pixelated; }
.kingdom-detail-heading h2 { margin:2px 0; font-size:2rem; }
.kingdom-facts { grid-template-columns:repeat(4,minmax(0,1fr)); }
.facility-list { display:grid; gap:7px; }
.facility-list > div {
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:9px;
}
.facility-list small { display:block; color:var(--muted); }
.kingdom-garrison-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; }
.kingdom-garrison-list a {
  display:grid;
  grid-template-columns:auto 1fr;
  gap:7px;
  align-items:center;
  padding:7px;
  border:1px solid var(--line);
  border-radius:9px;
  text-decoration:none;
}
.kingdom-garrison-list a span { grid-row:1 / 3; display:flex; }
.kingdom-garrison-list img { width:38px; height:26px; object-fit:contain; image-rendering:pixelated; }
.kingdom-garrison-list img + img { margin-left:-7px; }
.kingdom-garrison-list small { color:var(--muted); }
.kingdom-shop-items,
.story-availability-chips {
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.kingdom-shop-items a,
.story-availability-chips a {
  padding:5px 8px;
  border:1px solid var(--line);
  border-radius:999px;
  text-decoration:none;
  font-size:.79rem;
}
.dex-availability { margin-top:20px; }
.availability-heading {
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:12px;
}
.availability-heading h3 { margin:0; }
.availability-heading span { color:var(--muted); font-size:.84rem; }
.dex-availability-group {
  margin-top:7px;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:9px;
}
.dex-availability-group summary {
  cursor:pointer;
  display:flex;
  justify-content:space-between;
  font-weight:700;
}
.story-availability-chips { margin-top:9px; }
.standard-warrior-panel .expression-stage {
  min-height:270px;
  display:grid;
  place-items:center;
}
.standard-warrior-portrait {
  width:min(90%,300px);
  height:auto;
  image-rendering:pixelated;
  transform:scale(3);
}
.kingdom-map-editor-canvas {
  position:relative;
  width:min(100%,820px);
  margin:16px auto;
  aspect-ratio:544 / 416;
  cursor:crosshair;
  overflow:hidden;
  border-radius:14px;
  background:#0b4d91;
}
.map-coordinate-readout {
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:8px 12px;
  border-left:1px solid var(--line);
}
.workshop-map-pin { cursor:pointer; }
@media (max-width:980px) {
  .campaign-top-controls,
  .kingdom-view-controls,
  .kingdom-view-layout { grid-template-columns:1fr; }
  .kingdom-facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:620px) {
  .kingdom-garrison-list { grid-template-columns:1fr; }
  .kingdom-selector-strip { grid-template-columns:repeat(2,minmax(0,1fr)); }
}


/* v0.10 — Kingdom content, dedicated map icons, item provenance */
.builder-controls.compact-controls { grid-template-columns:minmax(240px,380px) 1fr; }
.kingdom-map-pin { width:76px; height:76px; padding:4px; border:0; background:transparent; box-shadow:none; display:flex; flex-direction:column; justify-content:center; align-items:center; cursor:pointer; }
.kingdom-map-pin::before { content:""; position:absolute; inset:7px; border-radius:50%; background:rgba(255,250,242,.72); box-shadow:0 2px 10px rgba(0,0,0,.22); z-index:-1; }
.kingdom-map-pin:hover::before,.kingdom-map-pin:focus-visible::before { background:#fffaf2; outline:3px solid var(--accent); }
.kingdom-map-pin img { width:54px; height:54px; object-fit:contain; image-rendering:pixelated; pointer-events:none; }
.kingdom-map-pin span { margin-top:-7px; padding:2px 5px; border-radius:999px; background:rgba(255,250,242,.94); font-size:.64rem; pointer-events:none; }
.kingdom-map-pin.selected { outline:0; }
.kingdom-map-pin.selected::before { outline:4px solid var(--accent); }
.kingdom-view-controls { grid-template-columns:minmax(280px,420px) 1fr; }
.kingdom-view-controls p { margin:0; align-self:center; }
.kingdom-overview-card,.kingdom-content-card { margin-top:14px; }
.kingdom-section-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; border-bottom:1px solid var(--line); padding-bottom:10px; margin-bottom:12px; }
.kingdom-section-heading h2 { margin:2px 0 0; }
.kingdom-section-heading > span { color:var(--muted); }
.facility-card-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:8px; }
.facility-card { display:grid; grid-template-columns:52px 1fr auto; gap:10px; align-items:center; padding:9px; border:1px solid var(--line); border-radius:10px; }
.facility-card > img { width:48px; height:48px; object-fit:contain; image-rendering:pixelated; }
.facility-card p { margin:2px 0 0; color:var(--muted); font-size:.82rem; }
.facility-card > span { font-size:.78rem; font-weight:700; }
.facility-card.locked { opacity:.55; }
.shop-levels { display:grid; gap:14px; }
.shop-level { border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.shop-level > header { display:flex; justify-content:space-between; padding:10px 12px; background:var(--soft); }
.shop-level > header h3 { margin:0; }
.shop-level > header span { color:var(--muted); font-size:.82rem; }
.shop-level.locked { opacity:.58; }
.shop-item-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:7px; padding:10px; }
.shop-item-card { display:grid; grid-template-columns:36px 1fr auto; align-items:center; gap:8px; padding:8px; border:1px solid var(--line); border-radius:9px; text-decoration:none; }
.shop-item-card > img { width:32px; height:32px; object-fit:contain; image-rendering:pixelated; }
.shop-item-card small { display:block; color:var(--muted); }
.gold-value { display:inline-flex; align-items:center; gap:4px; white-space:nowrap; }
.gold-value img { width:12px; height:18px; object-fit:contain; image-rendering:pixelated; }
.wild-location-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(330px,1fr)); gap:12px; }
.wild-location-card { border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.wild-location-card > header { display:grid; grid-template-columns:48px 1fr auto; gap:9px; align-items:center; padding:10px; background:var(--soft); }
.wild-location-card > header > img { width:44px; height:44px; object-fit:contain; image-rendering:pixelated; }
.wild-location-card h3 { margin:0; }
.wild-location-card header p { margin:2px 0 0; color:var(--muted); font-size:.8rem; }
.wild-location-card header > span { font-weight:700; font-size:.8rem; }
.wild-level-groups { display:grid; }
.wild-level-group { padding:9px 10px; border-top:1px solid var(--line); }
.wild-level-group > b { display:block; margin-bottom:7px; font-size:.83rem; }
.wild-level-group > div { display:flex; flex-wrap:wrap; gap:6px; }
.wild-level-group.locked { opacity:.45; background:rgba(0,0,0,.025); }
.wild-pokemon-chip { display:flex; align-items:center; gap:5px; max-width:190px; padding:4px 7px; border:1px solid var(--line); border-radius:8px; text-decoration:none; background:var(--panel); }
.wild-pokemon-chip img { width:30px; height:30px; object-fit:contain; image-rendering:pixelated; }
.wild-pokemon-chip small { display:block; color:var(--muted); font-size:.64rem; line-height:1.15; }
.special-pokemon-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:7px; padding:10px; }
.special-pokemon-grid > div { display:flex; align-items:center; justify-content:space-between; gap:7px; }
.merchant-source-card,.carry-over-card { display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; margin:12px 0; padding:11px; border:1px solid var(--line); border-radius:11px; background:var(--soft); }
.merchant-source-card > img { width:58px; height:42px; object-fit:contain; image-rendering:pixelated; }
.merchant-source-card p,.carry-over-card p { margin:3px 0 0; color:var(--muted); }
@media(max-width:680px){ .builder-controls.compact-controls,.kingdom-view-controls { grid-template-columns:1fr; } .wild-location-grid { grid-template-columns:1fr; } .shop-item-grid { grid-template-columns:1fr; } }


/* v0.11 — stable map pins, facility planning, evolutions and full portraits */
.kingdom-map-anchor {
  position:absolute;
  transform:translate(-50%,-50%);
  width:74px;
  height:82px;
  display:grid;
  grid-template-rows:64px 18px;
  place-items:center;
  z-index:2;
}
.kingdom-map-pin {
  position:relative;
  inset:auto;
  transform:none;
  width:64px;
  height:64px;
  padding:4px;
  display:grid;
  place-items:center;
  border:0;
  background:transparent;
  box-shadow:none;
}
.kingdom-map-pin::before {
  content:"";
  position:absolute;
  inset:3px;
  border-radius:50%;
  background:rgba(255,250,242,.76);
  box-shadow:0 2px 10px rgba(0,0,0,.24);
  z-index:-1;
}
.kingdom-map-pin img {
  width:56px;
  height:56px;
  margin:0;
  object-fit:contain;
  image-rendering:pixelated;
  pointer-events:none;
}
.kingdom-map-pin span { display:none; }
.kingdom-map-label {
  align-self:start;
  padding:2px 5px;
  border-radius:999px;
  background:rgba(255,250,242,.95);
  font-size:.64rem;
  font-weight:700;
  line-height:1;
  pointer-events:none;
  white-space:nowrap;
}
.kingdom-map-pin:hover::before,
.kingdom-map-pin:focus-visible::before,
.kingdom-map-pin.selected::before { outline:3px solid var(--accent); background:#fffaf2; }
.kingdom-map-anchor:has(.selected) { z-index:4; }

.campaign-facilities { margin-top:14px; }
.campaign-facility-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:8px;
  margin-top:10px;
}
.campaign-facility {
  display:grid;
  grid-template-columns:48px 1fr auto;
  gap:9px;
  align-items:center;
  padding:8px;
  border:1px solid var(--line);
  border-radius:10px;
}
.campaign-facility > img { width:44px; height:44px; object-fit:contain; image-rendering:pixelated; }
.campaign-facility small { display:block; color:var(--muted); }
.facility-stepper { display:grid; grid-template-columns:30px minmax(60px,auto) 30px; gap:4px; align-items:center; text-align:center; }
.facility-stepper button { width:30px; height:30px; padding:0; }

.evolution-panel,.transformation-panel,.legendary-dex-locations { margin-top:20px; }
.evolution-row {
  display:grid;
  grid-template-columns:92px minmax(150px,220px) 1fr;
  gap:10px;
  align-items:center;
  padding:9px 0;
  border-top:1px solid var(--line);
}
.evolution-row > span { color:var(--muted); font-size:.82rem; }
.evolution-row p { margin:0; line-height:1.45; }
.evolution-species {
  display:flex;
  align-items:center;
  gap:7px;
  text-decoration:none;
  font-weight:700;
}
.evolution-species img { width:38px; height:38px; object-fit:contain; image-rendering:pixelated; }
.transformation-panel article {
  margin-top:8px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:10px;
}
.transformation-panel article header { display:flex; justify-content:space-between; align-items:center; }
.transformation-panel ul,.legendary-dex-locations ul,.legendary-location-card ul { margin:7px 0 0; padding-left:20px; }
.legendary-dex-locations article {
  display:grid;
  grid-template-columns:76px 1fr;
  gap:12px;
  padding:10px;
  margin-top:8px;
  border:1px solid var(--line);
  border-radius:10px;
}
.legendary-dex-locations article > img {
  width:72px; height:72px; object-fit:contain; image-rendering:pixelated;
}
.legendary-location-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:10px; }
.legendary-location-card {
  display:grid;
  grid-template-columns:92px 1fr;
  gap:12px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
}
.legendary-location-card > img { width:88px; height:88px; object-fit:contain; image-rendering:pixelated; }
.legendary-location-card h3 { margin:0 0 5px; }
.legendary-pokemon-list { display:flex; flex-wrap:wrap; gap:8px; }
.standard-warrior-panel .expression-stage {
  min-height:340px;
  overflow:hidden;
}
.standard-warrior-portrait {
  width:min(100%,320px);
  max-height:330px;
  object-fit:contain;
  image-rendering:pixelated;
  transform:none;
}
@media(max-width:680px) {
  .evolution-row { grid-template-columns:1fr; }
  .legendary-location-card,.legendary-dex-locations article { grid-template-columns:1fr; }
}


/* v0.12 — uncluttered Ransei, upgrade trees, Passwords and layout repair */
* { min-width:0; }
p,li,small,b,strong,a,span { overflow-wrap:anywhere; }
.card,.detail,.sidebar,.result-row,.shop-item-card,.evolution-row,.mechanic-link,.rank-card { min-width:0; }
.segmented { flex-wrap:wrap; }
.segmented button { flex:1 1 92px; }
.ransei-map-frame { display:block; }
.kingdom-selector-strip { display:none !important; }
.kingdom-map-anchor { width:58px; height:58px; display:grid; place-items:center; z-index:2; }
.kingdom-map-pin { width:58px; height:58px; padding:0; background:transparent; border:0; border-radius:6px; box-shadow:none; }
.kingdom-map-pin::before,.kingdom-map-label { display:none !important; }
.kingdom-map-pin img { width:58px; height:58px; object-fit:contain; image-rendering:pixelated; filter:drop-shadow(0 2px 2px rgba(0,0,0,.4)); }
.kingdom-map-pin:hover,.kingdom-map-pin:focus-visible,.kingdom-map-pin.selected { outline:3px solid #fff; outline-offset:2px; background:rgba(255,255,255,.18); }
.upgrade-tree { margin:12px 0 16px; padding:12px; border:1px solid var(--line); border-radius:12px; background:var(--panel-2); }
.upgrade-tree h3 { margin:0 0 10px; }
.upgrade-tree-branch { display:grid; grid-template-columns:minmax(0,1fr) 34px minmax(130px,.55fr); gap:8px; align-items:center; padding:8px 0; border-top:1px solid var(--line); }
.upgrade-tree-branch:first-of-type { border-top:0; }
.upgrade-tree-requirements { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.upgrade-tree-node { display:grid; grid-template-columns:36px 1fr; gap:6px; align-items:center; padding:6px 8px; border:1px solid var(--line); border-radius:9px; background:var(--panel); }
.upgrade-tree-node img { grid-row:1/3; width:34px; height:34px; object-fit:contain; image-rendering:pixelated; }
.upgrade-tree-node small { color:var(--muted); }
.upgrade-tree-node.locked { opacity:.5; }
.upgrade-and,.upgrade-arrow { color:var(--muted); text-align:center; }
.campaign-facility.dependency-locked { opacity:.55; }
.story-availability-categories { display:grid; gap:8px; margin-top:9px; }
.story-category-row { display:grid; grid-template-columns:minmax(130px,190px) 1fr; gap:8px; align-items:start; }
.story-category-row > b { padding-top:5px; font-size:.78rem; color:var(--muted); }
.story-category-row > div { display:flex; flex-wrap:wrap; gap:5px; }
.story-category-row a { padding:5px 8px; border:1px solid var(--line); border-radius:999px; text-decoration:none; font-size:.78rem; }
.availability-caveat { margin-top:10px; padding:9px 11px; border-left:3px solid var(--accent); background:var(--panel-2); }
.standard-warrior-panel { max-width:270px; justify-self:end; }
.standard-warrior-panel .expression-stage { min-height:250px; max-height:285px; }
.standard-warrior-portrait { width:auto; max-width:245px; max-height:270px; object-fit:contain; image-rendering:pixelated; }
.item-hero > img { width:64px !important; height:64px !important; image-rendering:pixelated; transform:scale(1.25); }
.kingdom-chip-list { display:flex; flex-wrap:wrap; gap:7px; }
.kingdom-chip-list a { display:flex; align-items:center; gap:5px; padding:5px 8px; border:1px solid var(--line); border-radius:10px; text-decoration:none; }
.kingdom-chip-list img { width:34px; height:34px; object-fit:contain; image-rendering:pixelated; }
.availability-notice { margin-top:8px; }
.craft-item-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:8px; }
.craft-item-card { display:grid; grid-template-columns:42px 1fr; gap:8px; align-items:center; padding:8px; border:1px solid var(--line); border-radius:9px; text-decoration:none; }
.craft-item-card img { width:38px; height:38px; object-fit:contain; image-rendering:pixelated; }
.craft-item-card small { display:block; color:var(--muted); }
.craft-condition { margin-top:9px; padding:9px; border:1px dashed var(--line); border-radius:9px; }
.craft-condition > b { display:block; margin-bottom:7px; }
.item-evolution-targets { margin-top:20px; }
.item-evolution-target { display:grid; grid-template-columns:minmax(210px,.7fr) 1fr; gap:14px; margin-top:8px; padding:10px; border:1px solid var(--line); border-radius:10px; }
.evolution-pair { display:flex; align-items:center; gap:8px; }
.compact-perfect-links { display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; }
.compact-perfect-links > b { flex-basis:100%; }
.compact-perfect-links a { display:flex; align-items:center; gap:4px; padding:4px 6px; border:1px solid var(--line); border-radius:8px; text-decoration:none; font-size:.75rem; }
.compact-perfect-links img { width:30px; height:24px; object-fit:contain; image-rendering:pixelated; }
.condition-list { margin:0; padding-left:20px; }
.evolution-row { grid-template-columns:92px minmax(150px,210px) minmax(0,1fr); align-items:start; }
.shop-item-grid { grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); }
.shop-item-card { grid-template-columns:40px minmax(0,1fr); align-items:center; }
.shop-item-card > .gold-value,.shop-item-card > .plain-value { grid-column:2; justify-self:start; }
.shop-item-card b,.shop-item-card small { white-space:normal; }
.password-layout { display:grid; grid-template-columns:minmax(330px,.85fr) minmax(360px,1.15fr); gap:14px; }
.password-form-card { grid-row:span 2; }
.password-credit { padding:10px; margin-bottom:13px; border:1px solid var(--line); border-radius:10px; background:var(--panel-2); }
.password-credit p { margin:4px 0 8px; }
.password-credit div { display:flex; flex-wrap:wrap; gap:8px 14px; }
.password-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.password-output { margin-top:12px; }
.password-output input { font:700 1.25rem/1.2 var(--font-mono); letter-spacing:.08em; }
.flag-grid { display:grid; grid-template-columns:repeat(8,1fr); gap:4px; margin-top:12px; }
.flag-grid button { padding:6px 2px; font-size:.72rem; }
.flag-grid button.used { background:#e5d7ea; text-decoration:line-through; }
.flag-grid button.selected { outline:2px solid var(--accent); }
.password-links { grid-column:2; }
.password-pokemon-heading { display:grid; grid-template-columns:96px 1fr; gap:12px; align-items:center; margin-bottom:12px; }
.password-pokemon-heading img { width:92px; height:92px; object-fit:contain; image-rendering:pixelated; }
.password-link-group { margin-top:11px; }
.password-link-group header { display:flex; justify-content:space-between; align-items:center; }
.password-link-group h3 { margin:0; }
.password-link-group > div { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:6px; margin-top:7px; }
.password-link-group a { display:grid; grid-template-columns:48px minmax(0,1fr) auto; gap:7px; align-items:center; padding:7px; border:1px solid var(--line); border-radius:9px; text-decoration:none; }
.password-link-group img { width:46px; height:34px; object-fit:contain; image-rendering:pixelated; }
.password-link-group small { display:block; color:var(--muted); }
.skill-user-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:7px; }
.skill-user-grid a { display:grid; grid-template-columns:52px 1fr; gap:7px; align-items:center; padding:7px; border:1px solid var(--line); border-radius:9px; text-decoration:none; }
.skill-user-grid img { width:50px; height:34px; object-fit:contain; image-rendering:pixelated; }
.skill-user-grid small { display:block; color:var(--muted); }
.long-description,.short-description,.rank-s-block,.source-location,.facility-card,.campaign-facility,.wild-pokemon-chip { overflow-wrap:anywhere; }
@media(max-width:920px){.password-layout{grid-template-columns:1fr}.password-form-card{grid-row:auto}.password-links{grid-column:auto}}
@media(max-width:700px){.upgrade-tree-branch,.story-category-row,.item-evolution-target{grid-template-columns:1fr}.upgrade-arrow{transform:rotate(90deg)}.password-fields{grid-template-columns:1fr}.flag-grid{grid-template-columns:repeat(4,1fr)}.evolution-row{grid-template-columns:1fr}}


/* v0.13 — Campaign Planner breathing room and icon-led Password selection */
p,li,small,b,strong,a,span {
  overflow-wrap:break-word;
  word-break:normal;
}
.campaign-planner-shell {
  grid-template-columns:minmax(440px,.95fr) minmax(560px,1.2fr);
  align-items:start;
}
.campaign-planner-shell .campaign-story {
  grid-column:1;
  grid-row:1;
}
.campaign-map-panel {
  grid-column:2;
  grid-row:1;
}
.campaign-facilities {
  grid-column:1 / -1;
  grid-row:2;
  margin:0;
}
.campaign-garrison {
  grid-column:1 / -1;
  grid-row:3;
}
.campaign-story,
.campaign-map-panel,
.campaign-facilities,
.campaign-garrison {
  min-width:0;
}
.campaign-facility-grid {
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:10px;
}
.campaign-facility {
  grid-template-columns:58px minmax(170px,1fr) auto;
  min-height:92px;
  gap:12px;
  padding:11px 12px;
}
.campaign-facility-art {
  display:grid;
  place-items:center;
  width:52px;
  height:52px;
}
.campaign-facility-art img {
  width:48px;
  height:48px;
  object-fit:contain;
  image-rendering:pixelated;
}
.campaign-facility-copy {
  align-self:center;
}
.campaign-facility-copy b,
.campaign-facility-copy small,
.facility-lock-note {
  display:block;
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
}
.campaign-facility-copy b {
  font-size:1rem;
  line-height:1.25;
}
.campaign-facility-copy small {
  margin-top:3px;
  max-width:40ch;
  line-height:1.4;
}
.facility-lock-note {
  margin-top:5px;
  color:var(--muted);
  font-size:.72rem;
  line-height:1.35;
}
.facility-stepper {
  align-self:center;
  white-space:nowrap;
}
.password-layout {
  grid-template-columns:minmax(430px,.95fr) minmax(480px,1.15fr);
  align-items:start;
}
.password-form-card {
  grid-row:span 2;
}
.password-pokemon-picker {
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid var(--line);
}
.password-picker-heading {
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:12px;
  margin-bottom:9px;
}
.password-picker-heading small {
  display:block;
  margin-top:2px;
  color:var(--muted);
}
.password-picker-heading label {
  width:min(210px,45%);
}
.password-pokemon-grid {
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(44px,1fr));
  gap:5px;
  max-height:370px;
  overflow:auto;
  padding:3px;
}
.password-pokemon-option {
  position:relative;
  display:grid;
  place-items:center;
  min-height:48px;
  padding:3px;
  border-radius:8px;
}
.password-pokemon-option img {
  width:36px;
  height:36px;
  object-fit:contain;
  image-rendering:pixelated;
}
.password-pokemon-option span {
  position:absolute;
  right:2px;
  bottom:1px;
  padding:0 2px;
  border-radius:4px;
  background:rgba(255,250,242,.9);
  color:var(--muted);
  font-size:.55rem;
  line-height:1.2;
}
.password-pokemon-option.selected {
  outline:3px solid var(--accent);
  background:var(--panel-2);
}
.password-pokemon-option.unavailable {
  opacity:.28;
}
.password-pokemon-heading {
  grid-template-columns:68px 1fr;
}
.password-pokemon-heading img {
  width:56px;
  height:56px;
  object-fit:contain;
  image-rendering:pixelated;
}
.password-used-entry {
  display:grid;
  grid-template-columns:minmax(220px,1fr) auto;
  gap:8px;
  align-items:end;
  margin:10px 0;
}
.flag-grid {
  grid-template-columns:repeat(8,minmax(54px,1fr));
  gap:5px;
}
.flag-cell {
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center;
  gap:2px;
  padding:2px 3px 2px 0;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
}
.flag-cell > button {
  border:0;
  background:transparent;
  padding:7px 2px;
}
.flag-cell > label {
  display:grid;
  place-items:center;
  gap:0;
  padding:1px;
  color:var(--muted);
  font-size:.52rem;
  line-height:1;
}
.flag-cell > label input {
  width:14px;
  height:14px;
  margin:0;
}
.flag-cell.used {
  background:#e5d7ea;
}
.flag-cell.selected {
  outline:2px solid var(--accent);
  outline-offset:1px;
}
.flag-cell.used > button {
  font-weight:700;
}
.preserve-lines {
  white-space:pre-line;
}
@media(max-width:1180px) {
  .campaign-planner-shell,
  .password-layout {
    grid-template-columns:1fr;
  }
  .campaign-planner-shell .campaign-story,
  .campaign-map-panel,
  .campaign-facilities,
  .campaign-garrison,
  .password-form-card,
  .password-flags,
  .password-links {
    grid-column:1;
    grid-row:auto;
  }
}
@media(max-width:720px) {
  .campaign-facility-grid {
    grid-template-columns:1fr;
  }
  .campaign-facility {
    grid-template-columns:52px minmax(0,1fr);
  }
  .facility-stepper {
    grid-column:1 / -1;
    justify-self:start;
    margin-left:64px;
  }
  .password-picker-heading {
    display:grid;
  }
  .password-picker-heading label {
    width:100%;
  }
  .password-used-entry {
    grid-template-columns:1fr;
  }
  .flag-grid {
    grid-template-columns:repeat(4,minmax(54px,1fr));
  }
}

.result-row b,
.mechanic-link b,
.skill-user-grid b,
.password-link-group b,
.story-force-tile b,
.campaign-facility b,
.upgrade-tree-node b {
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
}
.password-pokemon-option[hidden] {
  display:none;
}

.campaign-story .story-force-grid {
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
}


/* v0.14 — free Teambuilder and independent Campaign Planner */
body,button,input,select,textarea { word-break:normal; }
p,li,small,b,strong,a,span,h1,h2,h3,label { overflow-wrap:break-word; word-break:normal; hyphens:none; }
.free-builder-note { display:flex; gap:10px; align-items:center; margin:0 0 12px; padding:9px 12px; border-left:4px solid var(--accent); background:var(--panel-2); border-radius:0 9px 9px 0; }
.team-slot.nonstandard { border-color:#d7a64c; box-shadow:0 0 0 2px rgba(215,166,76,.12); }
.campaign-planner-shell { display:grid; grid-template-columns:1fr; gap:14px; }
.campaign-overview-grid { display:grid; grid-template-columns:minmax(400px,.82fr) minmax(620px,1.18fr); gap:14px; align-items:start; }
.campaign-overview-grid > .campaign-story,.campaign-overview-grid > .campaign-map-panel { grid-column:auto; grid-row:auto; min-width:0; }
.campaign-story-description { font-size:1rem; line-height:1.55; max-width:68ch; }
.campaign-story-objective { line-height:1.45; }
.story-force-grid { grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); }
.story-force-tile { grid-template-columns:68px minmax(0,1fr) auto; min-height:76px; }
.story-force-art img { width:46px; height:38px; }
.campaign-map-panel .ransei-map-art { max-width:820px; margin-inline:auto; }
.campaign-facilities,.campaign-garrison-editor { grid-column:1; grid-row:auto; margin:0; }
.campaign-facility-grid { grid-template-columns:repeat(auto-fit,minmax(360px,1fr)); }
.campaign-facility { grid-template-columns:58px minmax(220px,1fr) auto; }
.campaign-garrison-heading { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:16px; align-items:start; }
.campaign-garrison-heading h2 { display:flex; align-items:center; gap:8px; margin:2px 0 5px; }
.campaign-garrison-heading h2 img { width:58px; height:58px; object-fit:contain; image-rendering:pixelated; }
.campaign-garrison-heading p { max-width:78ch; margin:0; color:var(--muted); line-height:1.5; }
.campaign-pair-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(310px,1fr)); gap:9px; margin:13px 0; }
.campaign-pair-card { display:grid; grid-template-columns:78px minmax(0,1fr) auto; gap:10px; align-items:center; padding:10px; border:1px solid var(--line); border-radius:11px; background:var(--panel); }
.campaign-pair-art { position:relative; display:flex; align-items:center; width:76px; }
.campaign-pair-art > span { position:absolute; left:0; top:-8px; display:grid; place-items:center; width:22px; height:22px; border-radius:50%; background:var(--accent); color:#fff; font-size:.72rem; z-index:2; }
.campaign-pair-art img { width:48px; height:40px; object-fit:contain; image-rendering:pixelated; }
.campaign-pair-art img+img { margin-left:-15px; }
.campaign-pair-copy > div { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.campaign-pair-copy h3,.campaign-pair-copy p { margin:0; }
.campaign-pair-copy p { margin-top:3px; }
.campaign-pair-copy small { display:block; margin-top:3px; color:var(--muted); line-height:1.4; }
.campaign-pair-actions { display:grid; gap:5px; }
.campaign-empty-garrison { grid-column:1/-1; padding:18px; text-align:center; color:var(--muted); border:1px dashed var(--line); border-radius:10px; }
.campaign-pair-editor-heading { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.campaign-pair-editor-heading img { width:64px; height:48px; object-fit:contain; image-rendering:pixelated; }
.campaign-pair-editor-heading h2 { margin:2px 0; }
.campaign-advanced { border:1px solid var(--line); border-radius:9px; padding:9px; }
.campaign-advanced summary { cursor:pointer; font-weight:700; }
.campaign-iv-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:7px; margin-top:9px; }
.campaign-roster-row { grid-template-columns:72px minmax(0,1fr); }
.password-fields { grid-template-columns:repeat(2,minmax(0,1fr)); }
.password-pokemon-option span { display:none; }
.password-pokemon-heading { grid-template-columns:132px minmax(0,1fr); align-items:center; }
.password-pokemon-heading img { width:120px; height:120px; max-width:100%; object-fit:contain; object-position:center; image-rendering:auto; }
.password-pokemon-heading p { margin:5px 0 0; color:var(--muted); }
.kingdom-detail-heading img { width:96px; height:96px; object-fit:contain; image-rendering:pixelated; }
.wild-location-grid { grid-template-columns:repeat(2,minmax(360px,1fr)); }
.wild-location-card.special-location { grid-column:1/-1; }
.special-location > header { grid-template-columns:1fr auto; }
.special-location .special-pokemon-grid { grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }
.wild-location-card header p,.facility-card p,.campaign-facility-copy small { max-width:none; }
@media(max-width:1180px){
  .campaign-overview-grid { grid-template-columns:1fr; }
  .campaign-map-panel { order:-1; }
  .campaign-pair-grid { grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); }
}
@media(max-width:760px){
  .campaign-garrison-heading { grid-template-columns:1fr; }
  .campaign-pair-card { grid-template-columns:68px minmax(0,1fr); }
  .campaign-pair-actions { grid-column:1/-1; grid-template-columns:1fr 1fr; }
  .campaign-facility { grid-template-columns:52px minmax(0,1fr); }
  .campaign-iv-grid,.password-fields { grid-template-columns:1fr 1fr; }
  .wild-location-grid { grid-template-columns:1fr; }
  .wild-location-card.special-location { grid-column:auto; }
}
@media(max-width:520px){
  .campaign-iv-grid,.password-fields { grid-template-columns:1fr; }
}

/* v0.14 final wrapping guard */
.long-description,.short-description,.rank-s-block,.source-location,.facility-card,.campaign-facility,.wild-pokemon-chip,.story-force-tile,.campaign-pair-card { overflow-wrap:break-word; word-break:normal; hyphens:none; }


/* v0.15 — detailed garrisons, effective stats and truthful facility references */
.pair-section-label {
  margin: 12px 0 6px;
  font-size: .82rem;
  color: var(--muted);
  letter-spacing: .03em;
  text-transform: uppercase;
}
.warrior-effective-stats {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
}
.warrior-effective-stats > div {
  padding:8px;
  border-radius:8px;
  background:var(--soft);
}
.warrior-effective-stats span,
.warrior-effective-stats small { display:block; color:var(--muted); }
.warrior-effective-stats b { display:block; margin:2px 0; font-size:1.05rem; }
.warrior-effective-stats.compact > div { padding:7px; }
.builder-stat-strip { grid-template-columns:repeat(6,minmax(0,1fr)); }
.compact-stat-strip {
  display:grid;
  grid-template-columns:repeat(6,minmax(78px,1fr));
  gap:6px;
}
.compact-stat-strip .stat {
  padding:7px;
  border-radius:8px;
  background:var(--soft);
}
.fixed-stat { cursor:default; }
.strength-stat { background:#efe7f3 !important; }
.equipped-effect-note {
  display:grid;
  grid-template-columns:38px minmax(0,1fr);
  gap:9px;
  align-items:start;
  margin-top:9px;
  padding:9px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--panel-2);
}
.equipped-effect-note img { width:34px; height:34px; object-fit:contain; image-rendering:pixelated; }
.equipped-effect-note span { display:block; color:var(--muted); margin-top:2px; }
.equipped-effect-note.compact { margin-top:7px; padding:7px; }
.campaign-pair-grid {
  grid-template-columns:repeat(auto-fit,minmax(480px,1fr));
}
.campaign-pair-card.detailed {
  display:block;
  padding:11px;
}
.campaign-pair-card.detailed > header {
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
}
.campaign-pair-card.detailed h4 {
  margin:10px 0 5px;
  font-size:.78rem;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.03em;
}
.campaign-loadout-line {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
  margin-top:9px;
}
.campaign-loadout-line span {
  padding:7px;
  border:1px solid var(--line);
  border-radius:8px;
}
.campaign-loadout-line b { display:block; font-size:.68rem; color:var(--muted); text-transform:uppercase; }
.campaign-editor-preview {
  margin:12px 0;
  padding:10px;
  border:1px solid var(--line);
  border-radius:10px;
}
.campaign-editor-preview h3 { margin-top:0; }
.upgrade-target { display:grid; gap:5px; }
.upgrade-target > p {
  margin:0;
  color:var(--muted);
  font-size:.78rem;
  line-height:1.4;
}
.facility-card small { display:block; margin-top:4px; color:var(--muted); line-height:1.35; }
.item-mechanical-effects {
  margin:12px 0;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel-2);
}
.item-mechanical-effects h3 { margin-top:0; }
.item-mechanical-effects ul,
.event-source-card ul { margin:6px 0 0; padding-left:20px; }
.event-source-card { grid-template-columns:1fr; }
.pokemon-hero { position:relative; padding-right:96px; }
.pokemon-password-action {
  position:absolute;
  top:0;
  right:0;
}
.pokemon-password-action button { padding:7px 10px; }
.gallery-warrior-kind { color:var(--muted); font-size:.82rem; }
@media(max-width:1050px){
  .campaign-pair-grid { grid-template-columns:1fr; }
  .campaign-loadout-line { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:720px){
  .warrior-effective-stats,
  .compact-stat-strip,
  .builder-stat-strip { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .campaign-pair-card.detailed > header { grid-template-columns:1fr; }
  .campaign-loadout-line { grid-template-columns:1fr; }
  .pokemon-hero { padding-right:0; }
  .pokemon-password-action { position:static; }
}

.hidden-field { display:none !important; }


/* v0.16 — ideal imports, Skill simulation and unified stat presentation */
.warrior-stat-strip{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:0}.warrior-stat-strip .stat{border:1px solid var(--line)}
.stat-section-head{display:flex;align-items:end;justify-content:space-between;gap:10px;margin-top:10px}.stat-section-head .pair-section-label{margin:0}
.iv-preset-controls{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.iv-preset-controls>span{color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.iv-preset-controls button{padding:5px 8px;font-size:.72rem}
.skill-apply-toggle{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:7px;align-items:center;margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#f4edf7}.skill-apply-toggle input{grid-row:1/3}.skill-apply-toggle span{font-weight:700}.skill-apply-toggle small{display:block;color:var(--muted)}
.active-skill-note{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;align-items:start;margin-top:8px;padding:8px;border:1px solid #d6c1df;border-radius:9px;background:#f4edf7}.active-skill-note span:not(.slot-number){display:block;color:var(--muted);margin-top:2px}.active-skill-note.compact{padding:7px}
.equipped-effect-note{grid-template-columns:38px minmax(0,1fr) auto;align-items:center}.equipped-effect-note .change-item{align-self:center;white-space:nowrap}.empty-item-icon{display:grid;place-items:center;width:34px;height:34px;border:1px dashed var(--line);border-radius:50%}
.streamlined-fields{grid-template-columns:minmax(180px,1fr) minmax(140px,.75fr)!important}.streamlined-fields .wide{grid-column:1/-1!important}
.warrior-picker-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:center;padding:9px;border-bottom:1px solid var(--line)}.picker-row-main{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:9px;align-items:center}.picker-row-main>img{width:56px;height:42px;object-fit:contain;image-rendering:pixelated}.picker-row-main small{display:block;color:var(--muted)}.picker-row-actions{display:flex;flex-direction:column;gap:5px;min-width:150px}.picker-row-actions button{white-space:normal}.campaign-skill-toggle{margin:0}.campaign-advanced .iv-preset-controls{margin:10px 0}
@media(max-width:760px){.warrior-stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-section-head{align-items:start;flex-direction:column}.equipped-effect-note{grid-template-columns:34px minmax(0,1fr)}.equipped-effect-note .change-item{grid-column:1/-1}.warrior-picker-card{grid-template-columns:1fr}.picker-row-actions{flex-direction:row;min-width:0}}


/* v0.17 — vanilla limits, matching pair cards and Poképaste export */
.slot-title-actions{display:flex;align-items:center;gap:8px}.pair-strength-badge{display:flex;align-items:baseline;gap:5px;padding:6px 9px;border:1px solid #d9cbe0;border-radius:9px;background:#f1e7f5}.pair-strength-badge small{color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.pair-strength-badge b{font-size:1rem}
.hack-link-toggle{display:grid!important;grid-template-columns:auto minmax(0,1fr);column-gap:7px;align-items:center;padding:7px 9px;border:1px solid var(--line);border-radius:9px}.hack-link-toggle input{grid-row:1/3}.hack-link-toggle small{display:block;color:var(--muted)}
.campaign-pair-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.campaign-team-slot{min-height:0}.campaign-team-slot .slot-art{min-height:100%}.campaign-team-slot .slot-main{padding-bottom:12px}.campaign-team-slot .equipped-effect-note{grid-template-columns:38px minmax(0,1fr) auto}.campaign-team-slot .pair-controls button{cursor:pointer}.campaign-team-slot .slot-fields{margin-top:9px}.campaign-team-slot .stat-strip{grid-template-columns:repeat(5,minmax(0,1fr))}.picker-row>img{width:38px;height:38px;object-fit:contain;image-rendering:pixelated}.strength-stat{display:none!important}
@media(max-width:1120px){.campaign-pair-grid{grid-template-columns:1fr}}@media(max-width:720px){.slot-title-actions{align-items:flex-end;flex-direction:column}.campaign-team-slot .stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.18 — compact hack mode and explicit graphic preview */
.builder-controls.compact-controls{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;align-items:end;gap:12px}
.allow-hacks-toggle{display:flex!important;align-items:center;gap:7px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;white-space:nowrap}
.allow-hacks-toggle input{margin:0}
.gallery-roster-button{min-height:42px;max-width:270px;white-space:normal}
.hacked-mechanics{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.hacked-mechanics label{display:grid;gap:4px}.hacked-mechanics label>span{color:var(--muted);font-size:.72rem}
.warrior-stat-edit{cursor:pointer;text-align:left}
.team-graphic-modal{width:min(96vw,1250px)}
.team-graphic-shell{display:grid;gap:12px}
.team-graphic-stage{display:grid;place-items:center;max-height:72vh;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:10px;background:#09090b}
.team-graphic-canvas{display:block;width:min(100%,1100px);height:auto}
.team-graphic-actions{justify-content:flex-start}
@media(max-width:900px){.builder-controls.compact-controls{grid-template-columns:1fr}.allow-hacks-toggle,.gallery-roster-button{width:100%;max-width:none}}
@media(max-width:650px){.hacked-mechanics{grid-template-columns:1fr}}

/* v0.20 — copyable battle result and aftermath model */
.damage-layout{display:grid;gap:16px}.damage-pair-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.damage-unit{padding:16px;min-width:0}.damage-unit.attacker{border-top:4px solid var(--accent)}.damage-unit.defender{border-top:4px solid var(--accent-2)}.damage-unit-head{display:grid;grid-template-columns:86px minmax(0,1fr);gap:13px;align-items:center;margin-bottom:14px}.damage-unit-head h2{margin:2px 0 4px;font:650 21px/1.2 var(--font-text)}.damage-unit-head p{margin:0;color:var(--muted);font-size:12px}.damage-unit-art{position:relative;width:82px;height:72px}.damage-unit-art img:first-child{position:absolute;left:0;top:0;width:60px;height:60px;object-fit:contain;image-rendering:pixelated}.damage-unit-art img:last-child{position:absolute;right:0;bottom:0;width:45px;height:45px;object-fit:contain;image-rendering:pixelated;background:rgba(255,255,255,.86);border-radius:50%}.damage-unit-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:10px}.damage-unit-fields label{position:relative}.field-suffix{position:absolute;right:10px;bottom:10px;color:var(--muted);font-weight:500}.damage-link-field{display:block;margin-top:11px}.damage-link-field>span{float:right;color:var(--ink)}.damage-stat-summary{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:11px}.damage-stat-summary div{padding:7px 5px;border-radius:7px;background:var(--panel-2);text-align:center}.damage-stat-summary small,.damage-stat-summary b{display:block}.damage-stat-summary small{color:var(--muted);font-size:.67rem}.damage-unit-advanced,.damage-research,.damage-breakdown{margin-top:12px;border:1px solid var(--line);border-radius:9px;background:#fff}.damage-unit-advanced>summary,.damage-research>summary,.damage-breakdown>summary{cursor:pointer;padding:10px 12px;font-weight:700;color:var(--accent)}.damage-advanced-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:0 12px 12px}.damage-skill-note{margin:9px 0 0}.damage-conditions{padding:17px}.damage-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:12px}.damage-section-heading h2{margin:2px 0 0;font:650 20px/1.2 var(--font-text)}.damage-condition-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.damage-condition-grid .wide{grid-column:span 2}.damage-toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.damage-toggle-grid>label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center;min-height:42px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2);color:var(--ink)}.damage-toggle-grid>label:has(select){grid-template-columns:1fr}.damage-toggle-grid input[type="checkbox"]{margin:0}.damage-research{grid-column:1/-1;background:#fff8dd}.damage-research p{padding:0 12px}.damage-research .damage-toggle-grid{padding:0 12px 12px}.damage-result{padding:20px}.damage-result-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.damage-result h2{margin:3px 0 3px;font:700 42px/1 var(--font-text)}.damage-result p{margin:0;color:var(--muted)}.damage-accuracy{min-width:145px;padding:12px 14px;border-radius:11px;background:var(--accent-soft);text-align:center}.damage-accuracy small,.damage-accuracy b{display:block}.damage-accuracy small{color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.damage-accuracy b{font-size:24px;margin-top:2px}.damage-result-facts{display:flex;flex-wrap:wrap;gap:7px;margin-top:15px}.damage-result-facts span{padding:6px 9px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);font-size:12px}.damage-breakdown{margin-top:16px}.damage-breakdown>p{padding:0 12px}.damage-trace-table{display:grid;padding:0 12px 12px}.damage-trace-table>div{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(90px,.35fr) minmax(220px,1.5fr);gap:12px;align-items:start;padding:9px 0;border-top:1px solid var(--line)}.damage-trace-table span{font-weight:700}.damage-trace-table b{font-family:var(--font-mono)}.damage-trace-table small{color:var(--muted);line-height:1.4}.eyebrow{color:var(--muted);font-size:.68rem;font-weight:750;text-transform:uppercase;letter-spacing:.07em}
@media(max-width:1050px){.damage-pair-grid{grid-template-columns:1fr}.damage-stat-summary{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:760px){.damage-unit-fields,.damage-condition-grid,.damage-toggle-grid{grid-template-columns:1fr}.damage-condition-grid .wide{grid-column:auto}.damage-advanced-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.damage-result-heading{display:grid}.damage-accuracy{min-width:0}.damage-trace-table>div{grid-template-columns:1fr}.damage-trace-table b{order:2}.damage-trace-table small{order:3}}@media(max-width:480px){.damage-unit-fields,.damage-advanced-grid{grid-template-columns:1fr}.damage-stat-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

.damage-copy-line{display:grid;width:100%;gap:5px;margin:0 0 18px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));border-radius:11px;background:linear-gradient(135deg,var(--accent-soft),#fff);text-align:left;cursor:pointer}.damage-copy-line:hover{border-color:var(--accent);box-shadow:0 5px 16px rgba(45,37,57,.08)}.damage-copy-line:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:2px}.damage-copy-line span{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.damage-copy-line code{white-space:normal;font:600 13px/1.55 var(--font-mono);color:var(--ink)}

/* Damage calculator v0.21–v0.22 */
.damage-unit-condition-list{display:grid;gap:8px;margin-top:11px}.damage-unit-condition-list>label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:start;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}.damage-unit-condition-list input{margin-top:3px}.damage-unit-condition-list span,.damage-unit-condition-list small{display:block}.damage-unit-condition-list small{margin-top:2px;color:var(--muted);font-weight:400;line-height:1.35}.damage-manual-controls{padding:0 12px 12px}.damage-manual-toggle{display:flex;gap:9px;align-items:center;padding:10px;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));border-radius:9px;background:var(--accent-soft);font-weight:700}.damage-manual-toggle input{margin:0}.damage-manual-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:10px}.damage-manual-grid label:nth-last-child(-n+3){grid-column:span 1}.damage-copy-line code{overflow-wrap:anywhere}.damage-result-heading{align-items:center}
@media(max-width:760px){.damage-manual-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.damage-result-heading{align-items:flex-start}.damage-accuracy{min-width:118px}}
.damage-manual-controls>.damage-advanced-grid{margin-top:10px;padding:0}

/* v0.22 mass damage calculator */
.damage-mass-layout{display:grid;gap:16px}.damage-mass-attacker{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:14px;align-items:center;padding:16px;border-top:4px solid var(--accent)}.damage-mass-attacker-art img{width:64px;height:64px;object-fit:contain;image-rendering:pixelated}.damage-mass-attacker h2,.damage-mass-results h2{margin:2px 0 4px;font:650 21px/1.2 var(--font-text)}.damage-mass-attacker p,.damage-mass-results p,.damage-mass-controls .damage-section-heading p{margin:0;color:var(--muted)}.damage-mass-attacker label{display:block;margin-top:10px;max-width:620px}.damage-mass-controls{padding:17px}.damage-mass-controls .damage-section-heading{align-items:start}.damage-mass-controls .damage-section-heading p{max-width:520px;text-align:right;font-size:12px;line-height:1.45}.damage-mass-control-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.damage-mass-control-grid label{position:relative}.damage-mass-warrior-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.damage-mass-warrior-stats span{display:grid;align-content:center;padding:8px 10px;border-radius:9px;background:var(--accent-soft);text-align:center}.damage-mass-warrior-stats small,.damage-mass-warrior-stats b{display:block}.damage-mass-warrior-stats small{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.68rem}.damage-mass-warrior-stats b{font:700 24px/1.1 var(--font-text)}.damage-mass-advanced{margin-top:12px;border:1px solid var(--line);border-radius:9px;background:#fff}.damage-mass-advanced>summary{cursor:pointer;padding:10px 12px;font-weight:700;color:var(--accent)}.damage-mass-advanced .damage-mass-control-grid{padding:0 12px 12px}.damage-mass-preset-row{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:0 12px 10px}.damage-mass-preset-row span{font-size:.76rem;font-weight:700;color:var(--muted)}.damage-mass-preset-row button{padding:6px 9px}.damage-mass-check{display:flex!important;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}.damage-mass-check input{width:auto}.damage-mass-check span,.damage-mass-check small{display:block}.damage-mass-check small{margin-top:2px;color:var(--muted);font-weight:400}.damage-mass-results{padding:17px}.damage-mass-results-head{display:flex;justify-content:space-between;align-items:start;gap:16px}.damage-mass-filters{display:grid;grid-template-columns:1.2fr repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.damage-mass-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}.damage-mass-table{width:100%;border-collapse:collapse;min-width:1160px;background:#fff}.damage-mass-table th,.damage-mass-table td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.damage-mass-table th{position:sticky;top:0;z-index:1;background:var(--panel-2);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.damage-mass-table tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 48%,#fff)}.damage-mass-table tbody tr.defensive-variant{background:#fff8dd}.damage-mass-table tbody tr.defensive-variant:hover{background:#fff2bf}.damage-mass-pokemon{display:flex;align-items:center;gap:8px;padding:0;border:0;background:transparent;text-align:left;color:inherit}.damage-mass-pokemon img{width:38px;height:38px;object-fit:contain;image-rendering:pixelated}.damage-mass-pokemon span,.damage-mass-pokemon b,.damage-mass-pokemon small{display:block}.damage-mass-pokemon small{color:var(--muted);font-size:.7rem}.damage-mass-copy{padding:5px 8px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:7px;background:var(--accent-soft);font:700 13px/1.2 var(--font-mono);color:var(--ink)}.damage-mass-priority{display:inline-block;margin:0 6px 3px 0;padding:2px 5px;border-radius:999px;background:var(--accent);color:#fff;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.type-chip{display:inline-block;margin:1px;padding:3px 6px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);font-size:.68rem}
@media(max-width:1050px){.damage-mass-control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.damage-mass-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.damage-mass-attacker{grid-template-columns:58px minmax(0,1fr)}.damage-mass-attacker>button{grid-column:1/-1}.damage-mass-attacker-art img{width:52px;height:52px}.damage-mass-controls .damage-section-heading{display:grid}.damage-mass-controls .damage-section-heading p{text-align:left}.damage-mass-results-head{display:grid}.damage-mass-control-grid,.damage-mass-filters{grid-template-columns:1fr}}

/* v0.24: integrated mass-calculator workbench and nearby Ability support */
.damage-attacker-support{display:grid;gap:7px;margin-top:10px;padding:10px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:10px;background:var(--accent-soft)}
.damage-attacker-support>.eyebrow{margin-bottom:1px}
.damage-attacker-support>label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:start;padding:8px 9px;border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:8px;background:rgba(255,255,255,.72)}
.damage-attacker-support input{margin-top:3px}
.damage-attacker-support span,.damage-attacker-support small{display:block}
.damage-attacker-support small{margin-top:2px;color:var(--muted);font-weight:400;line-height:1.35}
.damage-result.absorbed{border-top:4px solid var(--accent)}
.damage-result.absorbed h2{color:var(--accent)}
.damage-mass-workbench{display:grid;gap:0}
.damage-mass-tabs{display:flex;gap:6px;padding:0 10px;position:relative;z-index:2}
.damage-mass-tabs button{padding:10px 16px;border:1px solid var(--line);border-bottom:0;border-radius:10px 10px 0 0;background:var(--panel-2);color:var(--muted);font-weight:700}
.damage-mass-tabs button.active{background:#fff;color:var(--accent);border-top:3px solid var(--accent);padding-top:8px}
.damage-mass-tab-panel{display:grid;gap:16px;padding:16px;border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:12px;background:var(--panel)}
.damage-mass-attacker-editor{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.damage-mass-attacker-editor>.damage-unit,.damage-mass-attacker-editor>.damage-conditions{margin:0}
.damage-mass-link-override{padding:10px 12px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:9px;background:var(--accent-soft);line-height:1.4}
.damage-mass-defender-intro{position:relative;display:flex;align-items:flex-start;min-height:92px;padding:10px 150px 0 4px;overflow:visible}
.damage-mass-defender-intro h2{margin:2px 0 5px;font:650 22px/1.2 var(--font-text)}
.damage-mass-defender-intro p{margin:0;color:var(--muted);max-width:680px}
.damage-mass-defender-intro img{position:absolute;right:8px;bottom:-22px;z-index:1;object-fit:contain}
.damage-mass-defender-intro img.chiyome{width:128px;height:128px}
.damage-mass-defender-intro img.standard{width:88px;height:88px;image-rendering:pixelated}
.damage-mass-tab-panel>.damage-mass-controls{position:relative;z-index:2;margin:0}
.damage-mass-table tbody tr.absorption-variant{background:color-mix(in srgb,var(--accent-soft) 68%,#fff)}
.damage-mass-table tbody tr.absorption-variant:hover{background:color-mix(in srgb,var(--accent-soft) 86%,#fff)}
.damage-mass-table tbody tr.absorption-variant .damage-mass-copy{font-weight:800}

@media(max-width:1050px){
  .damage-mass-attacker-editor{grid-template-columns:1fr}
}
@media(max-width:760px){
  .damage-mass-tabs{display:grid;grid-template-columns:1fr 1fr;padding:0}
  .damage-mass-tabs button{border-bottom:1px solid var(--line);border-radius:9px}
  .damage-mass-tab-panel{border-top-width:3px;padding:12px}
  .damage-mass-defender-intro{min-height:76px;padding-right:92px}
  .damage-mass-defender-intro img.chiyome{width:88px;height:88px;bottom:-12px}
  .damage-mass-defender-intro img.standard{width:66px;height:66px}
}
@media(max-width:480px){
  .damage-mass-tabs{grid-template-columns:1fr}
  .damage-mass-defender-intro{padding-right:4px;padding-bottom:74px}
  .damage-mass-defender-intro img{right:50%;transform:translateX(50%)}
}


/* v0.25 — mass-workbench portrait underlay and clearer absorption outcomes */
.damage-mass-workbench {
  position: relative;
  isolation: isolate;
  overflow: visible;
  padding-top: 12px;
}
.damage-mass-tabs,
.damage-mass-tab-panel {
  position: relative;
  z-index: 2;
}
.damage-mass-chiyome-underlay {
  position: absolute;
  z-index: 1;
  top: -74px;
  right: 28px;
  width: 142px;
  height: auto;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
}
.damage-mass-defender-intro img.warrior-icon {
  width: 64px;
  height: 64px;
  right: 18px;
  bottom: 8px;
  image-rendering: pixelated;
}
.damage-mass-copy span,
.damage-mass-copy small,
.damage-mass-table td > span,
.damage-mass-table td > small {
  display: block;
}
.damage-mass-copy small,
.damage-mass-table td > small {
  margin-top: 3px;
  color: var(--muted);
  font: 500 10px/1.3 var(--font-text);
}
.damage-mass-copy {
  white-space: normal;
  text-align: left;
}
@media(max-width:760px) {
  .damage-mass-chiyome-underlay {
    top: -52px;
    right: 8px;
    width: 104px;
    opacity: .9;
  }
  .damage-mass-defender-intro img.warrior-icon {
    width: 56px;
    height: 56px;
    right: 10px;
    bottom: 8px;
    transform: none;
  }
}
@media(max-width:520px) {
  .damage-mass-chiyome-underlay {
    display: none;
  }
}

/* -------------------------------------------------------------------------
   Simulator-ready battlefield viewer
   ------------------------------------------------------------------------- */
.stage-toolbar { padding:16px; margin-bottom:18px; }
.stage-picker-row { display:grid; grid-template-columns:128px minmax(220px,320px) minmax(0,1fr) auto; gap:18px; align-items:end; }
.stage-title-block h2 { margin:2px 0 4px; font:650 22px/1.2 var(--font-text); }
.stage-title-block p { margin:0; color:var(--muted); line-height:1.45; }
.stage-layer-controls { display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 0; padding:0; border:0; }
.stage-layer-controls legend { width:100%; margin-bottom:2px; color:var(--muted); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
.stage-layer-controls label { display:flex; align-items:center; gap:6px; padding:7px 10px; border:1px solid var(--line); border-radius:999px; background:var(--panel-2); color:var(--ink); font-size:12px; font-weight:600; }
.stage-layer-controls input { margin:0; accent-color:var(--accent); }
.stage-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:15px; }
.stage-metrics > div { padding:10px 12px; border-radius:9px; background:var(--panel-2); }
.stage-metrics small,.stage-metrics b { display:block; }
.stage-metrics small { margin-bottom:2px; color:var(--muted); }
.stage-research-picker { margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }
.stage-research-picker summary { cursor:pointer; font-weight:650; }
.stage-research-picker p { color:var(--muted); font-size:13px; }
.stage-research-picker label { max-width:420px; }
.stage-workbench { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(340px,.7fr); gap:18px; align-items:start; }
.stage-model-panel { grid-column:1; padding:16px; min-width:0; }
.stage-tactical-panel { grid-column:2; padding:16px; min-width:0; }
.stage-inspector-panel { grid-column:2; padding:16px; min-width:0; }
.stage-section-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:12px; }
.stage-section-heading h2 { margin:2px 0 0; font:650 20px/1.2 var(--font-text); }
.stage-section-heading > span { color:var(--muted); font-size:12px; }
.stage-webgl { position:relative; min-height:620px; overflow:hidden; border:1px solid var(--line); border-radius:10px; background:#dcdee0; }
.stage-webgl-canvas { display:block; width:100%; height:100%; min-height:620px; touch-action:none; cursor:grab; }
.stage-webgl-canvas:active { cursor:grabbing; }
.stage-webgl-loading,.stage-webgl-error { position:absolute; inset:0; display:grid; place-content:center; text-align:center; padding:24px; color:var(--muted); }
.stage-webgl-error b { color:var(--ink); font-size:18px; }
.stage-webgl-footer { display:flex; justify-content:space-between; gap:12px; margin-top:9px; color:var(--muted); font-size:11px; line-height:1.4; }
.stage-map-shell { width:100%; }
.stage-map { display:grid; grid-template-columns:repeat(var(--stage-width),minmax(0,1fr)); grid-template-rows:repeat(var(--stage-height),minmax(0,1fr)); gap:2px; width:100%; max-height:650px; }
.stage-map-cell { position:relative; display:grid; place-items:center; min-width:0; min-height:0; padding:0; overflow:hidden; border:1px solid rgba(48,42,52,.26); border-radius:3px; background:var(--terrain); opacity:var(--cell-opacity); color:#211e24; font-size:10px; box-shadow:none; }
.stage-map-cell:hover { z-index:2; border-color:var(--accent); box-shadow:0 0 0 2px rgba(109,63,132,.24); }
.stage-map-cell.selected { z-index:3; border-color:#b17516; box-shadow:0 0 0 3px rgba(231,176,61,.65); }
.stage-map-cell.blocked { background-image:repeating-linear-gradient(135deg,transparent 0 5px,rgba(255,255,255,.32) 5px 8px); }
.stage-map-cell.unknown-bounds { outline:1px dashed #a24d68; outline-offset:-3px; }
.stage-cell-elevation { display:inline-block; padding:1px 3px; border-radius:4px; background:rgba(255,255,255,.72); font-size:9px; font-weight:650; }
.stage-cell-spawns { position:absolute; left:2px; top:2px; display:flex; flex-wrap:wrap; gap:1px; }
.stage-cell-spawns b { display:grid; place-items:center; min-width:15px; height:15px; padding:0 2px; border-radius:3px; color:#fff; font-size:7px; line-height:1; }
.stage-cell-spawns b.team-a { background:#3679c9; }
.stage-cell-spawns b.team-b { background:#c74e49; }
.stage-cell-special { position:absolute; right:2px; top:2px; display:grid; place-items:center; width:14px; height:14px; border-radius:50%; background:#84529b; color:#fff; font-size:8px; font-weight:700; }
.stage-cell-gimmick { position:absolute; right:2px; bottom:2px; display:grid; place-items:center; min-width:15px; height:15px; padding:0 3px; border-radius:50%; background:#6d3f84; color:#fff; font-size:8px; font-weight:700; }
.stage-map-key { display:flex; flex-wrap:wrap; gap:10px; margin-top:10px; color:var(--muted); font-size:11px; }
.stage-map-key span { display:flex; align-items:center; gap:5px; }
.stage-map-key i { width:11px; height:11px; border-radius:3px; }
.stage-map-key i.team-a { background:#3679c9; }
.stage-map-key i.team-b { background:#c74e49; }
.stage-map-key i.gimmick { background:#6d3f84; border-radius:50%; }
.stage-inspector { min-width:0; }
.stage-inspector p { line-height:1.5; }
.stage-tile-badge { padding:4px 8px; border-radius:999px; background:var(--accent-soft); color:var(--accent)!important; font-weight:650; }
.stage-property-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:0; }
.stage-property-grid > div { min-width:0; padding:9px 10px; border-radius:8px; background:var(--panel-2); }
.stage-property-grid dt { color:var(--muted); font-size:11px; }
.stage-property-grid dd { margin:3px 0 0; overflow-wrap:anywhere; font-weight:650; }
.stage-inspector h3 { margin:17px 0 8px; font:650 16px/1.2 var(--font-text); }
.stage-elevation-samples { display:grid; grid-template-columns:repeat(3,1fr); gap:4px; max-width:260px; }
.stage-elevation-samples span { display:grid; place-items:center; min-height:36px; padding:5px; border:1px solid var(--line); border-radius:6px; background:#fff; font-size:12px; font-variant-numeric:tabular-nums; }
.stage-elevation-samples span.centre { border-color:#c18d25; background:#fff3cf; font-weight:750; }
.stage-chip-list { display:flex; flex-wrap:wrap; gap:6px; }
.stage-chip-list button { padding:6px 8px; font-size:11px; }
.stage-raw-details { margin-top:16px; }
.stage-raw-details summary,.stage-source-details summary,.stage-data-section details summary { cursor:pointer; font-weight:650; }
.stage-raw-details pre { max-height:260px; overflow:auto; padding:10px; border-radius:8px; background:#242229; color:#f1edf3; font:11px/1.45 var(--font-mono); }
.stage-reference-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:18px; }
.stage-data-section { padding:16px; min-width:0; }
.stage-deployment-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; }
.stage-deployment-card { display:flex; flex-direction:column; align-items:flex-start; min-width:0; padding:9px; text-align:left; }
.stage-deployment-card b,.stage-deployment-card span,.stage-deployment-card small { display:block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.stage-deployment-card span { margin-top:2px; color:var(--ink); }
.stage-deployment-card small { margin-top:2px; color:var(--muted); }
.stage-deployment-card.unavailable { background:var(--panel-2); }
.stage-special-list,.stage-internal-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin-top:10px; }
.stage-special-list button,.stage-internal-list button { display:flex; flex-direction:column; align-items:flex-start; min-width:0; text-align:left; }
.stage-special-list span,.stage-internal-list span { color:var(--ink); }
.stage-special-list small,.stage-internal-list small { color:var(--muted); }
.stage-gimmick-list { display:grid; gap:6px; }
.stage-gimmick-list > button { display:grid; grid-template-columns:32px minmax(0,1fr) auto; gap:9px; align-items:center; width:100%; text-align:left; }
.stage-gimmick-list b,.stage-gimmick-list small { display:block; }
.stage-gimmick-list small { margin-top:2px; color:var(--muted); }
.stage-gimmick-list em { color:var(--muted); font-size:10px; font-style:normal; }
.stage-gimmick-icon { display:grid; place-items:center; width:30px; height:30px; border-radius:7px; background:var(--accent-soft); color:var(--accent); font-size:15px; }
.stage-gimmick-icon img { max-width:24px; max-height:24px; object-fit:contain; image-rendering:pixelated; }
.stage-source-details { margin-top:18px; padding:16px; }
.stage-source-details p { max-width:920px; line-height:1.55; }

@media (max-width:1100px) {
  .stage-workbench { grid-template-columns:1fr; }
  .stage-model-panel,.stage-tactical-panel,.stage-inspector-panel { grid-column:1; }
  .stage-tactical-panel { max-width:760px; }
  .stage-webgl,.stage-webgl-canvas { min-height:520px; }
}
@media (max-width:760px) {
  .stage-picker-row { grid-template-columns:1fr; }
  .stage-picker-row > button { justify-self:start; }
  .stage-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stage-reference-grid { grid-template-columns:1fr; }
  .stage-deployment-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stage-webgl,.stage-webgl-canvas { min-height:410px; }
  .stage-webgl-footer { flex-direction:column; }
}
@media (max-width:480px) {
  .stage-deployment-grid,.stage-special-list,.stage-internal-list,.stage-property-grid { grid-template-columns:1fr; }
  .stage-map { gap:1px; }
  .stage-map-cell { border-radius:1px; }
  .stage-cell-elevation { font-size:7px; }
}

/* Battlefield layers can be disabled without changing the underlying stage data. */
.stage-map.no-grid .stage-map-cell {
  border-color: transparent;
}
.stage-simulator-preview { margin-top:12px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:var(--panel-2); }
.stage-simulator-preview summary { cursor:pointer; font-weight:650; }
.stage-simulator-preview-body { display:grid; grid-template-columns:minmax(150px,220px) minmax(0,1fr); gap:14px; align-items:end; margin-top:10px; }
.stage-simulator-preview-body p { margin:0; color:var(--muted); font-size:12px; line-height:1.5; }
.stage-map-cell.movement-reachable { box-shadow:inset 0 0 0 2px rgba(25,145,111,.78); }
.stage-map-cell.movement-start { box-shadow:inset 0 0 0 3px rgba(25,145,111,.96); }
.stage-map-cell.movement-reachable.selected,.stage-map-cell.movement-start.selected { box-shadow:0 0 0 3px rgba(231,176,61,.65),inset 0 0 0 2px rgba(25,145,111,.82); }
.stage-cell-move-cost { position:absolute; left:2px; bottom:2px; display:grid; place-items:center; min-width:15px; height:15px; padding:0 3px; border-radius:4px; background:#197f66; color:#fff; font-size:8px; font-weight:750; }
.stage-map-key i.movement { background:#197f66; }
@media (max-width:760px) {
  .stage-simulator-preview-body { grid-template-columns:1fr; }
}

/* Naka Data v0.34: compact Pokédex battle-animation preview */
.pokemon-hero {
  grid-template-columns:112px minmax(0,1fr) 148px;
  min-height:156px;
  padding-right:0;
  align-items:center;
}
.pokemon-detail-image {
  width:96px !important;
  height:96px !important;
  max-width:96px !important;
  max-height:96px !important;
}
.pokemon-hero-copy { align-self:center; }
.pokemon-detail-aside {
  justify-self:end;
  width:132px;
}
.pokemon-animation-panel {
  display:grid;
  justify-items:center;
  gap:6px;
}
.pokemon-animation-password {
  justify-self:end;
  margin-bottom:1px;
  padding:6px 9px;
  font-size:11px;
}
.pokemon-animation-stage {
  display:grid;
  place-items:center;
  width:120px;
  height:120px;
  padding:0;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:10px;
  background:linear-gradient(180deg,#f8f5ef,#efe9df);
  box-shadow:none;
}
.pokemon-animation-stage:hover { border-color:#c9afd5; background:var(--accent-soft); }
.pokemon-animation-canvas {
  display:block;
  width:120px;
  height:120px;
  image-rendering:pixelated;
}
.pokemon-animation-tabs {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:4px;
  width:120px;
}
.pokemon-animation-tabs button {
  min-width:0;
  padding:4px 0;
  border-radius:6px;
  font-size:10px;
  line-height:1;
}
.pokemon-animation-tabs button[aria-pressed="true"] {
  border-color:#c9afd5;
  background:var(--accent-soft);
  color:var(--accent);
  font-weight:750;
}
.pokemon-animation-panel > small {
  color:var(--muted);
  font-size:9px;
  line-height:1.25;
  text-align:center;
}
.pokemon-animation-panel.animation-unavailable .pokemon-animation-stage { opacity:.45; }

@media (max-width:760px) {
  .pokemon-hero {
    grid-template-columns:88px minmax(0,1fr) 126px;
    min-height:140px;
  }
  .pokemon-detail-image {
    width:76px !important;
    height:76px !important;
    max-width:76px !important;
    max-height:76px !important;
  }
  .pokemon-detail-aside { width:116px; }
  .pokemon-animation-stage,
  .pokemon-animation-canvas { width:104px; height:104px; }
  .pokemon-animation-tabs { width:104px; }
}

@media (max-width:520px) {
  .pokemon-hero {
    grid-template-columns:76px minmax(0,1fr);
    min-height:0;
  }
  .pokemon-detail-image {
    width:68px !important;
    height:68px !important;
    max-width:68px !important;
    max-height:68px !important;
  }
  .pokemon-detail-aside {
    grid-column:1/-1;
    justify-self:start;
    width:auto;
    margin-top:8px;
  }
  .pokemon-animation-panel {
    grid-template-columns:auto 96px 112px;
    justify-items:start;
    align-items:center;
    column-gap:8px;
  }
  .pokemon-animation-password { margin:0; }
  .pokemon-animation-stage,
  .pokemon-animation-canvas { width:96px; height:96px; }
  .pokemon-animation-tabs { width:112px; }
  .pokemon-animation-panel > small { display:none; }
}

/* Naka Data v0.35: correct Pokédex sprite indexing and native portrait presentation */
.pokemon-hero {
  grid-template-columns:136px minmax(0,1fr) 132px;
  gap:20px;
  min-height:174px;
  align-items:center;
}
.pokemon-portrait-frame {
  display:grid;
  place-items:center;
  width:128px;
  height:128px;
  padding:2px;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:10px;
  background:linear-gradient(180deg,#f8f5ef,#efe9df);
}
.pokemon-portrait-frame .pokemon-detail-image {
  display:block;
  width:128px !important;
  height:128px !important;
  max-width:none !important;
  max-height:none !important;
  object-fit:none !important;
  image-rendering:auto;
}
.pokemon-detail-aside {
  align-self:center;
  justify-self:end;
  width:120px;
}
.pokemon-animation-panel {
  grid-template-rows:24px 120px auto;
  gap:5px;
}
.pokemon-animation-action-slot {
  display:grid;
  place-items:center;
  width:120px;
  min-height:24px;
}
.pokemon-animation-password {
  width:120px;
  margin:0;
  padding:5px 8px;
  text-align:center;
}

@media (max-width:760px) {
  .pokemon-hero {
    grid-template-columns:108px minmax(0,1fr) 116px;
    gap:14px;
    min-height:154px;
  }
  .pokemon-portrait-frame {
    width:100px;
    height:100px;
    padding:1px;
  }
  .pokemon-portrait-frame .pokemon-detail-image {
    width:96px !important;
    height:96px !important;
    object-fit:contain !important;
  }
  .pokemon-detail-aside { width:104px; }
  .pokemon-animation-panel { grid-template-rows:24px 104px auto; }
  .pokemon-animation-action-slot,
  .pokemon-animation-password,
  .pokemon-animation-stage,
  .pokemon-animation-canvas,
  .pokemon-animation-tabs { width:104px; }
  .pokemon-animation-stage,
  .pokemon-animation-canvas { height:104px; }
}

@media (max-width:520px) {
  .pokemon-hero {
    grid-template-columns:108px minmax(0,1fr);
    gap:12px;
  }
  .pokemon-detail-aside {
    grid-column:1/-1;
    justify-self:start;
    width:auto;
    margin-top:8px;
  }
  .pokemon-animation-panel {
    grid-template-columns:104px 112px;
    grid-template-rows:24px 104px;
    column-gap:8px;
    row-gap:5px;
    align-items:center;
  }
  .pokemon-animation-action-slot {
    grid-column:1/-1;
    width:104px;
  }
  .pokemon-animation-stage,
  .pokemon-animation-canvas { width:104px; height:104px; }
  .pokemon-animation-tabs { width:112px; }
}

/* Naka Data v0.36: native-resolution Pokédex and Link-list icons */
.result-row {
  grid-template-columns:72px minmax(0,1fr);
}
.result-art {
  width:64px;
  height:48px;
}
.result-art img {
  width:auto !important;
  height:auto !important;
  max-width:none;
  max-height:none;
  object-fit:none;
  image-rendering:pixelated;
}

/* Pokémon shown in a Warrior's Link list are native 32×32 sprites. */
.warrior-link-grid {
  grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
}
.warrior-link {
  grid-template-columns:32px minmax(0,1fr) auto;
}
.warrior-link img {
  width:auto;
  height:auto;
  max-width:none;
  max-height:none;
  object-fit:none;
}
.warrior-link span {
  overflow-wrap:normal;
  word-break:normal;
}

/* Warriors shown in a Pokémon's Link list are native 64×32 sprites. */
.pokemon-link-grid {
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
}
.pokemon-link {
  grid-template-columns:64px minmax(0,1fr) auto;
}
.pokemon-link img {
  width:auto;
  height:auto;
  max-width:none;
  max-height:none;
  object-fit:none;
}
.pokemon-link span,
.pokemon-link b,
.pokemon-link small {
  overflow-wrap:normal;
  word-break:normal;
}

@media (max-width:700px) {
  .result-row {
    grid-template-columns:64px minmax(0,1fr);
  }
  .warrior-link-grid,
  .pokemon-link-grid {
    grid-template-columns:1fr;
  }
}

/* Naka Data v0.38: corrected composite-sheet animation downloads */
.pokemon-animation-panel {
  grid-template-rows:24px 120px auto auto;
}
.pokemon-animation-downloads {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5px;
  width:120px;
}
.pokemon-animation-downloads a {
  display:grid;
  place-items:center;
  min-height:25px;
  padding:4px 5px;
  border:1px solid var(--line);
  border-radius:6px;
  background:var(--panel);
  color:var(--ink);
  font-size:11px;
  line-height:1;
  text-decoration:none;
}
.pokemon-animation-downloads a:hover {
  border-color:#c9afd5;
  background:var(--accent-soft);
}

@media (max-width:760px) {
  .pokemon-animation-panel { grid-template-rows:24px 104px auto auto; }
  .pokemon-animation-downloads { width:104px; }
}

@media (max-width:520px) {
  .pokemon-animation-panel {
    grid-template-columns:104px 112px;
    grid-template-rows:24px 104px auto;
  }
  .pokemon-animation-downloads {
    grid-column:1/-1;
    width:224px;
  }
}


/* Naka Data v0.39: Story routes, source citations, history links and IV calculator */
.story-icon-link { display:inline-flex; align-items:center; gap:6px; min-height:30px; }
.story-icon-link img { width:32px; height:16px; object-fit:none; image-rendering:pixelated; flex:0 0 auto; }
.story-icon-link.selected { border-color:#a77ab7; background:var(--accent-soft); font-weight:700; }
.campaign-story-title { display:flex; align-items:center; gap:10px; }
.campaign-story-title > img { width:64px; height:32px; object-fit:none; image-rendering:pixelated; }
.story-unlock-panel { margin:16px 0; padding:13px; border:1px solid var(--line); border-radius:12px; background:var(--panel-2); }
.story-unlock-chain { display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.unlock-arrow { color:var(--muted); font-weight:800; }
.story-unlock-note { line-height:1.5; }
.story-password-unlock { display:grid; grid-template-columns:minmax(180px,1fr) minmax(210px,auto); gap:12px; align-items:center; }
.story-password-unlock > div { display:grid; grid-template-columns:1fr auto; gap:5px 8px; align-items:center; }
.story-password-unlock small { grid-column:1/-1; color:var(--muted); }
.story-password-code { font-family:var(--font-mono); letter-spacing:.04em; }
.story-prerequisite-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:6px; }
.source-citations { margin-top:14px; padding:11px 12px; border:1px solid var(--line); border-radius:10px; background:var(--panel-2); }
.source-citations > b { display:block; margin-bottom:7px; font-size:.78rem; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; }
.source-citations > div { display:flex; flex-wrap:wrap; gap:6px; }
.source-citations a,.source-citations span,.historical-origin-link,.iv-calculator-link { display:inline-flex; align-items:center; padding:6px 9px; border:1px solid var(--line); border-radius:999px; background:var(--panel); color:var(--ink); text-decoration:none; font-size:.78rem; }
.historical-origin-link,.iv-calculator-link { width:max-content; }
.iv-layout { display:grid; grid-template-columns:minmax(330px,.85fr) minmax(440px,1.15fr); gap:16px; align-items:start; }
.iv-controls { position:sticky; top:76px; }
.iv-pair-preview { display:grid; grid-template-columns:64px auto 32px minmax(0,1fr); gap:8px; align-items:center; margin-bottom:15px; padding:10px; border-radius:11px; background:var(--panel-2); }
.iv-pair-preview > img:first-child { width:64px; height:32px; object-fit:none; image-rendering:pixelated; }
.iv-pair-preview > img:nth-of-type(2) { width:32px; height:32px; image-rendering:pixelated; }
.iv-pair-preview > span { color:var(--muted); font-weight:800; }
.iv-pair-preview small { display:block; margin-top:3px; color:var(--muted); }
.iv-control-grid,.iv-observed-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.iv-control-grid label,.iv-observed-grid label { display:grid; gap:5px; }
.iv-control-grid label span,.iv-observed-grid label span { font-size:.8rem; font-weight:700; }
.iv-control-grid small,.iv-observed-grid small { color:var(--muted); }
.iv-observed-grid { margin-top:14px; }

.iv-modifier-controls { margin-top:14px; padding:10px; border:1px solid var(--line); border-radius:11px; background:var(--panel-2); }
.iv-modifier-controls summary { cursor:pointer; font-weight:800; }
.iv-modifier-controls > p { margin:8px 0 10px; color:var(--muted); font-size:.82rem; }
.iv-modifier-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.iv-modifier-grid label { display:grid; gap:5px; }
.iv-modifier-grid label span { font-size:.8rem; font-weight:700; }
.iv-modifier-grid small { color:var(--muted); }
.iv-modifier-controls > button { margin-top:10px; }
.iv-calculator-warning { margin-top:16px; }
.iv-result-root { display:grid; gap:16px; }
.iv-result-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.iv-result { display:grid; gap:4px; padding:13px; border:1px solid var(--line); border-radius:11px; background:var(--panel-2); }
.iv-result small,.iv-result span { color:var(--muted); }
.iv-result b { font-size:1.08rem; }
.iv-result.impossible { border-color:#d49b92; background:#fff5f2; }
.iv-evolution-checks { display:grid; gap:9px; }
.iv-evolution-checks > article { display:grid; grid-template-columns:minmax(220px,auto) 1fr auto; gap:10px 14px; align-items:center; padding:12px; border:1px solid var(--line); border-radius:11px; background:var(--panel-2); }
.iv-evolution-checks > article > div { display:flex; align-items:center; gap:7px; }
.iv-evolution-checks > article p { margin:0; }
.iv-evolution-checks > article small { grid-column:3; color:var(--muted); }
@media(max-width:980px){.iv-layout{grid-template-columns:1fr}.iv-controls{position:static}.iv-evolution-checks>article{grid-template-columns:1fr}.iv-evolution-checks>article small{grid-column:auto}}
@media(max-width:620px){.iv-control-grid,.iv-observed-grid,.iv-result-grid,.iv-modifier-grid{grid-template-columns:1fr}.story-password-unlock{grid-template-columns:1fr}.iv-pair-preview{grid-template-columns:64px auto 32px minmax(0,1fr)}}

/* v0.44–v0.45 battle simulator */
.minimap-first-frame{position:relative;width:128px;height:96px;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--panel);flex:none}
.minimap-first-frame img{display:block;width:128px;height:384px;max-width:none;image-rendering:pixelated;object-fit:fill;object-position:top left}
.minimap-first-frame.large{width:128px;height:96px}
.minimap-first-frame.tiny{display:inline-block;width:64px;height:48px;vertical-align:middle}
.minimap-first-frame.tiny img{width:64px;height:192px}
.minimap-first-frame.empty{display:grid;place-items:center;color:var(--muted);font-size:24px}
.sim-alpha-warning{margin:0 0 16px;padding:12px 14px;border:1px solid #b98526;border-radius:9px;background:#fff6dc;color:#513709;line-height:1.45}
.sim-alpha-warning.compact{font-size:13px;padding:9px 12px}
.sim-battle-settings{display:grid;grid-template-columns:minmax(280px,1.4fr) minmax(180px,.7fr) minmax(130px,.4fr) minmax(220px,1fr);gap:14px;padding:16px;align-items:end}
.sim-battle-settings label{display:grid;gap:6px;font-size:13px;color:var(--muted)}
.sim-battle-settings input,.sim-battle-settings select{width:100%}
.sim-battle-settings fieldset{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:10px 20px;border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.sim-battle-settings legend{padding:0 5px;font-weight:700;color:var(--ink)}
.sim-stage-pick{display:flex;gap:13px;align-items:center;flex-wrap:wrap}.sim-stage-pick label{flex:1;min-width:220px}.sim-stage-pick>button{white-space:nowrap}
.sim-toggle{display:flex!important;grid-template-columns:none!important;align-items:center;gap:7px!important;color:var(--ink)!important}.sim-toggle input{width:auto!important}
.sim-army-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.sim-army-setup{padding:15px}.sim-army-setup>header,.sim-roster>header,.sim-log>header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.sim-army-setup h2,.sim-roster h2,.sim-log h2{margin:0;font-size:18px}.sim-army-setup p{margin:3px 0 0;color:var(--muted);font-size:12px}.sim-unit-count{font-weight:800}
.sim-setup-units{display:grid;gap:7px;min-height:62px}.sim-setup-unit{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:7px 8px}.sim-setup-unit>img{width:40px;height:40px;object-fit:contain;image-rendering:pixelated}.sim-setup-unit div{display:grid;gap:2px;min-width:0}.sim-setup-unit small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sim-setup-unit button{font-size:20px;padding:2px 8px}
.sim-start-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding:15px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.sim-start-footer div{display:grid;gap:2px}.sim-start-footer small{color:var(--muted)}
.sim-phase-strip{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:-4px 0 12px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.sim-range-legend{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:var(--muted);font-size:11px}.sim-range-legend i{display:inline-block;width:16px;height:10px;border:2px solid;border-radius:2px;margin-left:5px}.sim-range-legend .move{background:rgba(86,180,233,.42);border-color:#0072b2}.sim-range-legend .attack{background:rgba(230,159,0,.46);border-color:#8a5800}.sim-range-legend .enemy-move{background:rgba(0,158,115,.36);border-color:#006b4c}.sim-range-legend .enemy-threat{background:rgba(213,94,0,.40);border-color:#8b3500}
.sim-battle-layout{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:16px;align-items:start}.sim-webgl{min-height:680px}.sim-webgl .stage-webgl-canvas{min-height:680px}
.sim-canvas-host{position:absolute;inset:0}.sim-canvas-host .stage-webgl-canvas{height:100%!important}
.battle-unit-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.battle-unit-sprite{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;border:0;background:transparent;padding:0;cursor:pointer;filter:drop-shadow(0 2px 1px rgba(0,0,0,.68));transform-origin:center bottom}
.battle-unit-frame{position:absolute;display:block;overflow:visible;pointer-events:none}.battle-unit-frame.static-frame{overflow:hidden}.battle-unit-sprite img{position:absolute;display:block;max-width:none;image-rendering:pixelated;transform-origin:center center;pointer-events:none}
.battle-unit-footprint{position:absolute!important;left:50%!important;bottom:-2px!important;transform:translateX(-50%)!important;width:calc(var(--unit-tile-size,48px)*.58)!important;height:calc(var(--unit-tile-size,48px)*.19)!important;min-width:0!important;padding:0!important;border:3px solid;border-radius:50%!important;background:rgba(20,20,24,.16)!important;z-index:-1}
.battle-unit-sprite.player .battle-unit-footprint{border-color:#1264bd}.battle-unit-sprite.enemy .battle-unit-footprint{border-color:#b92922}
.battle-unit-hp{position:absolute!important;left:50%!important;bottom:-15px!important;transform:translateX(-50%)!important;min-width:30px!important;padding:1px 5px!important;border:1px solid rgba(255,255,255,.7)!important;border-radius:10px!important;background:rgba(17,17,22,.9)!important;color:#fff!important;font-size:10px!important;font-weight:800!important;line-height:1.25!important;z-index:3}
.battle-unit-sprite:hover,.battle-unit-sprite:focus-visible{border-color:transparent;background:transparent;outline:none;filter:drop-shadow(0 0 4px rgba(255,255,255,.95)) drop-shadow(0 2px 1px rgba(0,0,0,.68))}
.battle-unit-sprite.selected .battle-unit-footprint{box-shadow:0 0 0 3px rgba(255,190,30,.7)}.battle-unit-sprite.range-movement .battle-unit-footprint{box-shadow:0 0 0 3px rgba(73,40,184,.72)}.battle-unit-sprite.range-threat .battle-unit-footprint{box-shadow:0 0 0 3px rgba(196,15,73,.78)}
.battle-unit-sprite.acted{filter:drop-shadow(0 2px 1px rgba(0,0,0,.45))}.battle-unit-sprite.acted .battle-unit-frame{filter:grayscale(.9);opacity:.64}
.battle-unit-sprite.trapped .battle-unit-footprint{border-color:#51412f!important;background:rgba(36,25,18,.72)!important;box-shadow:0 0 0 3px rgba(49,34,22,.28)}.battle-unit-sprite.trapped .battle-unit-frame{filter:saturate(.72) brightness(.82)}
.battle-unit-cage{display:none;position:absolute;left:50%;bottom:calc(var(--unit-tile-size,48px)*-.08);width:calc(var(--unit-tile-size,48px)*.82);height:calc(var(--unit-tile-size,48px)*.98);transform:translateX(-50%);pointer-events:none;z-index:2;border:calc(var(--unit-tile-size,48px)*.045) solid #6b4527;border-top-width:calc(var(--unit-tile-size,48px)*.07);border-bottom-width:calc(var(--unit-tile-size,48px)*.07);border-radius:48% 48% 25% 25%/17% 17% 12% 12%;background:repeating-linear-gradient(90deg,transparent 0 8%,rgba(91,55,29,.94) 8% 12%,transparent 12% 20%);box-shadow:inset 0 calc(var(--unit-tile-size,48px)*.24) 0 -1px rgba(109,69,37,.92),inset 0 calc(var(--unit-tile-size,48px)*-.20) 0 -1px rgba(82,49,27,.92),0 2px 3px rgba(0,0,0,.42);filter:drop-shadow(0 1px 0 rgba(238,188,113,.55))}
.battle-unit-cage::before,.battle-unit-cage::after{content:"";position:absolute;left:50%;transform:translateX(-50%);width:88%;height:14%;border:calc(var(--unit-tile-size,48px)*.035) solid #7b512f;border-radius:50%;box-sizing:border-box}
.battle-unit-cage::before{top:-7%;background:rgba(82,49,27,.18)}.battle-unit-cage::after{bottom:-7%;background:rgba(46,29,18,.18)}
.battle-unit-sprite.fence-trapped.css-cage-fallback .battle-unit-cage{display:block;animation:battle-cage-drop .24s cubic-bezier(.18,.88,.34,1.18) both}
@keyframes battle-cage-drop{from{opacity:0;transform:translate(-50%,-28%)}to{opacity:1;transform:translate(-50%,0)}}
.sim-command-panel{position:sticky;top:80px;border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:15px;min-height:300px}.sim-command-panel h2{margin:0 0 7px}.sim-command-panel p{color:var(--muted);line-height:1.45}.sim-selected-head{display:flex;gap:12px;align-items:center;margin-bottom:12px}.sim-selected-head img{width:72px;height:72px;object-fit:contain;image-rendering:pixelated}.sim-selected-head p{margin:0}.sim-pre-move-actions{display:grid;gap:8px;margin:12px 0}
.sim-direction-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-areas:". north ." "west south east";gap:7px;margin:12px 0}.sim-direction-grid button{display:grid;place-items:center;gap:1px;min-height:55px;text-transform:capitalize}.sim-direction-grid button.selected{border-color:#7b3900;background:#ffe3ad;box-shadow:0 0 0 2px rgba(123,57,0,.25)}.sim-direction-grid button[data-attack-direction=north]{grid-area:north}.sim-direction-grid button[data-attack-direction=east]{grid-area:east}.sim-direction-grid button[data-attack-direction=south]{grid-area:south}.sim-direction-grid button[data-attack-direction=west]{grid-area:west}.sim-direction-grid button:first-line{font-size:22px}.sim-direction-grid span{font-size:11px}
.sim-attack-preview{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}.sim-attack-preview h3{margin:0 0 8px}.sim-attack-preview>div{display:grid;gap:2px;margin-bottom:8px}.sim-attack-preview span{font-size:12px;color:var(--muted)}
.sim-inline-confirm{margin-top:12px;padding:13px;border:2px solid #b47a1b;border-radius:10px;background:#fff7df}.sim-inline-confirm p{margin:6px 0 12px;color:#56401b}.sim-inline-confirm .actions{justify-content:flex-start}
.sim-resolving{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px 12px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}.sim-resolving-spinner{width:18px;height:18px;border:3px solid #bbb;border-top-color:var(--accent);border-radius:50%;animation:sim-spin .8s linear infinite}.sim-resolving-copy{display:grid;gap:3px;min-width:0}.sim-resolving-copy b{line-height:1.35}.sim-resolving-copy small{color:var(--muted);line-height:1.35}@keyframes sim-spin{to{transform:rotate(360deg)}}
.sim-roster-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.sim-roster{padding:14px;overflow:visible}.sim-roster.active{outline:2px solid var(--accent);outline-offset:-2px}.sim-roster-unit{position:relative;width:100%;display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:9px;align-items:center;text-align:left;margin-top:6px;padding:7px;border:1px solid var(--line);border-radius:8px;background:var(--panel);overflow:visible}.sim-roster-unit>img{width:52px;height:52px;object-fit:contain;image-rendering:pixelated}.sim-roster-summary{display:grid;gap:3px;min-width:0}.sim-roster-unit small{color:var(--muted)}.sim-hp-track{display:block;height:7px;border-radius:5px;background:#d7d7d7;overflow:hidden}.sim-hp-track>em{display:block;height:100%;background:#55a65d}.sim-roster-unit.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.sim-roster-unit.range-movement{border-color:#351889;background:#f3efff}.sim-roster-unit.range-threat{border-color:#9c0a3b;background:#fff0f5}.sim-roster-unit.acted{filter:grayscale(.8);opacity:.72}.sim-roster-unit.fainted{opacity:.38;text-decoration:line-through}
.sim-log{margin-top:16px;padding:14px}.sim-log>header label{font-size:12px;color:var(--muted)}.sim-log ol{margin:0;padding-left:24px;display:grid;gap:5px;max-height:360px;overflow:auto}.sim-log li{line-height:1.4}.sim-log details{margin-top:4px}.sim-log pre{max-height:220px;overflow:auto;font-size:11px;white-space:pre-wrap;background:var(--surface);padding:8px;border-radius:6px}.sim-result{display:flex;gap:14px;align-items:center;margin-bottom:14px;padding:14px;border:2px solid var(--accent);border-radius:10px;background:var(--panel)}.sim-result b{font-size:20px}.sim-result span{color:var(--muted)}
.sim-banlists{grid-column:1/-1;border-top:1px solid var(--line);padding-top:8px}.sim-banlists summary{cursor:pointer;font-weight:700}.sim-banlists>div{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:10px}.sim-banlists p{margin:6px 0 0;color:var(--muted);font-size:12px}.sim-unit-deployment{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}.sim-unit-deployment label{display:grid;gap:2px;font-size:10px;color:var(--muted)}.sim-unit-deployment select{min-width:0;width:100%;font-size:11px;padding:4px}

/* Compact battle Teambuilder modal */
.battle-team-modal{width:min(1180px,96vw);grid-template-rows:auto 1fr}
.battle-team-modal .modal-results{padding:14px 16px}
.battle-team-editor{display:grid;gap:14px}
.battle-team-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid var(--line)}
.battle-team-toolbar .actions{justify-content:flex-start}
.battle-team-slots{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.battle-team-slot{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.battle-team-slot>img{width:46px;height:46px;object-fit:contain;image-rendering:pixelated}
.battle-team-slot-fields{display:grid;grid-template-columns:1fr 1fr;gap:7px}.battle-team-slot-fields label{display:grid;gap:3px;color:var(--muted);font-size:11px}.battle-team-slot-fields label.wide{grid-column:1/-1}.battle-team-slot-fields select,.battle-team-slot-fields input{min-width:0;width:100%;padding:6px;font-size:12px}
.battle-team-slot-empty{display:grid;place-items:center;min-height:150px;border:1px dashed var(--line);border-radius:10px;background:var(--panel-2)}
.battle-team-import{padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.battle-team-import textarea{width:100%;min-height:220px;font:12px/1.45 var(--font-mono)}
.battle-team-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:12px;border-top:1px solid var(--line)}
@media(max-width:1050px){.sim-battle-settings{grid-template-columns:1fr 1fr}.sim-battle-layout{grid-template-columns:1fr}.sim-command-panel{position:static}.sim-webgl,.sim-webgl .stage-webgl-canvas{min-height:580px}}
@media(max-width:760px){.sim-army-grid,.sim-roster-grid,.sim-battle-settings,.battle-team-slots{grid-template-columns:1fr}.sim-stage-pick{align-items:flex-start}.sim-start-footer,.battle-team-footer{align-items:stretch;flex-direction:column}.sim-webgl,.sim-webgl .stage-webgl-canvas{min-height:450px}.sim-battle-settings fieldset{grid-column:auto}.sim-banlists>div{grid-template-columns:1fr}.sim-unit-deployment{grid-template-columns:1fr}.battle-team-slot-fields{grid-template-columns:1fr}.battle-team-slot-fields label.wide{grid-column:auto}}


.sim-move-summary{display:grid;grid-template-columns:1fr auto;gap:7px 10px;align-items:center;border:1px solid var(--line);border-radius:9px;padding:10px;margin:0 0 12px;background:var(--panel-soft)}
.sim-move-summary>b{font-size:15px}.sim-move-summary>span{border:1px solid currentColor;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.sim-move-summary dl{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}.sim-move-summary dl div{display:flex;justify-content:space-between;gap:8px}.sim-move-summary dt{color:var(--muted)}.sim-move-summary dd{margin:0;font-weight:700}
.battle-gimmick-target{position:absolute;transform:translate(-50%,-50%);border:2px dashed transparent;border-radius:18%;background:transparent;padding:0;cursor:crosshair}.battle-gimmick-target:hover,.battle-gimmick-target:focus-visible{border-color:#e69f00;background:rgba(230,159,0,.2)}
.battle-unit-float{position:absolute;left:50%;bottom:72%;z-index:20;transform:translateX(-50%);white-space:nowrap;border:2px solid #000;border-radius:999px;padding:2px 7px;background:#fff;color:#000;font-size:12px;font-weight:800;animation:battleFloat .72s ease-out forwards;pointer-events:none}.battle-unit-float.damage{background:#d55e00;color:#fff}.battle-unit-float.heal{background:#009e73;color:#fff}.battle-unit-float.ability{background:#f0e442;color:#000}
@keyframes battleFloat{0%{opacity:0;transform:translate(-50%,8px) scale(.85)}18%,72%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-14px) scale(1)}}

.battle-unit-facing{position:absolute;left:50%;bottom:-2%;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:12px solid #f0e442;filter:drop-shadow(0 0 1px #000);transform-origin:50% 100%;pointer-events:none;z-index:4}
.battle-gimmick-target.available{border-color:rgba(230,159,0,.82);background:rgba(230,159,0,.13)}
/* Wong palette used by simulator tactical overlays. */
#sim-battle-shell{--sim-black:#000000;--sim-orange:#e69f00;--sim-sky-blue:#56b4e9;--sim-bluish-green:#009e73;--sim-yellow:#f0e442;--sim-blue:#0072b2;--sim-vermillion:#d55e00}

/* v0.46 battle-turn and Gimmick interaction refinements */
.sim-gimmick-info{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:9px;background:rgba(230,159,0,.07)}
.sim-gimmick-info.compact{padding:9px;margin:10px 0;background:rgba(230,159,0,.045)}
.sim-gimmick-head{display:flex;align-items:center;gap:10px}.sim-gimmick-head img,.sim-gimmick-icon-fallback{width:48px;height:48px;object-fit:contain;image-rendering:pixelated;display:grid;place-items:center;font-size:28px}
.sim-gimmick-head h3{margin:0}.sim-gimmick-head small{color:var(--muted)}
.sim-gimmick-info p{margin:9px 0}.sim-gimmick-info dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:8px 0}.sim-gimmick-info dl div{padding:7px;border:1px solid var(--line);border-radius:7px;background:var(--panel)}.sim-gimmick-info dt{font-size:11px;color:var(--muted)}.sim-gimmick-info dd{margin:2px 0 0;font-weight:700}
.battle-gimmick-target{cursor:help;border-color:transparent;background:transparent}
.battle-gimmick-target:hover,.battle-gimmick-target:focus-visible,.battle-gimmick-target.inspected{border-color:#000;background:rgba(240,228,66,.22)}
.battle-gimmick-target.targetable{cursor:crosshair;border-color:rgba(230,159,0,.58);background:rgba(230,159,0,.08)}
.battle-gimmick-target.targetable:hover,.battle-gimmick-target.targetable:focus-visible,.battle-gimmick-target.available{border-color:#e69f00;background:rgba(230,159,0,.24);box-shadow:0 0 0 2px rgba(0,0,0,.5)}
@media(max-width:620px){.sim-gimmick-info dl{grid-template-columns:1fr}}

/* v0.48 sprite-only occlusion and two-turn move presentation */
.battle-unit-sprite.occluded .battle-unit-frame{opacity:.62}
.battle-unit-sprite.move-invulnerable .battle-unit-frame{opacity:.52}
.battle-unit-sprite.sky-drop-active .battle-unit-frame{filter:drop-shadow(0 7px 4px rgba(0,0,0,.35))}
.battle-unit-sprite.dig-active .battle-unit-frame{opacity:.30;filter:saturate(.72)}
.battle-unit-sprite.occluded.selected .battle-unit-frame,.battle-unit-sprite.occluded:hover .battle-unit-frame{opacity:.82}

/* v0.48 compact battle Teambuilder identity layout */
.battle-team-slot{grid-template-columns:72px minmax(0,1fr) auto}
.battle-team-slot-avatar{position:relative;width:68px;height:72px}
.battle-team-slot-avatar img{position:absolute;object-fit:contain;image-rendering:pixelated}
.battle-team-slot-avatar .warrior{left:0;top:0;width:44px;height:44px;z-index:2;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.battle-team-slot-avatar .pokemon{right:0;bottom:0;width:48px;height:48px;z-index:1}
.battle-team-slot-main{min-width:0}
.battle-team-slot-main>h3{margin:0 0 8px;font:700 13px/1.3 var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.battle-unit-sprite.sky-drop-carried .battle-unit-frame{opacity:.44;filter:drop-shadow(0 3px 2px rgba(0,0,0,.35))}

/* v0.49 line-of-sight, feedback and camera-target corrections */
.battle-unit-float.ability{
  bottom:calc(105% + var(--float-stack,0) * 22px);
}
.battle-unit-float.damage,.battle-unit-float.heal{
  bottom:72%;
}
.battle-gimmick-target.targetable{
  border-color:transparent;
  background:transparent;
}
.battle-gimmick-target.targetable:hover,
.battle-gimmick-target.targetable:focus-visible,
.battle-gimmick-target.available{
  border-color:#e69f00;
  background:rgba(230,159,0,.24);
  box-shadow:0 0 0 2px rgba(0,0,0,.5);
}

.battle-gimmick-target.warp-pad[data-warp-colour="blue"]{border-color:#0072B2;background:rgba(0,114,178,.22)}
.battle-gimmick-target.warp-pad[data-warp-colour="orange"]{border-color:#E69F00;background:rgba(230,159,0,.22)}
.battle-gimmick-target.warp-pad[data-warp-colour="green"]{border-color:#009E73;background:rgba(0,158,115,.22)}
.battle-gimmick-target.floating-cube{border-color:#56B4E9;background:rgba(86,180,233,.16)}

/* Naka Data v0.56: searchable pair builders, team library, and simulator clauses */
.team-library-controls{grid-template-columns:minmax(230px,1fr) auto auto minmax(190px,.8fr) auto minmax(200px,.9fr)!important}
.saved-team-select{min-width:0}.saved-team-select select{width:100%}.saved-team-actions{display:flex;gap:7px;align-items:end}.saved-team-actions button{min-height:42px}
.empty-slot-actions{display:flex;flex-wrap:wrap;gap:7px}.empty-slot-actions button{flex:1 1 145px}
.slot-identity-button{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:end;padding:0;border:0;background:transparent;text-align:left;color:inherit}
.slot-identity-button span{grid-column:1/-1;color:var(--muted);font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.slot-identity-button b{font:650 22px/1.2 var(--font-text)}.slot-identity-button em{font-style:normal;color:var(--accent);font-size:.72rem;font-weight:700}.slot-identity-button:hover b,.slot-identity-button:focus-visible b{color:var(--accent)}
.picker-filter-modal{width:min(1220px,96vw);grid-template-rows:auto 1fr}.picker-filter-modal .modal-results{padding:0}
.picker-workbench{display:grid;grid-template-columns:330px minmax(0,1fr);min-height:min(690px,82vh)}
.picker-filters{display:grid;align-content:start;gap:12px;padding:16px;border-right:1px solid var(--line);background:var(--panel-2);overflow:auto}
.picker-filters>label,.picker-filter-grid label{display:grid;gap:4px;color:var(--muted);font-size:.72rem;font-weight:700}.picker-filters input,.picker-filters select{width:100%;min-width:0}
.picker-filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.picker-filters details{padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}.picker-filters summary{cursor:pointer;font-weight:700}
.picker-stat-filter-grid{display:grid;gap:7px;margin-top:9px}.picker-stat-filter{display:grid;grid-template-columns:72px minmax(0,1fr) 78px;gap:6px;align-items:center}.picker-stat-filter>span{font-size:.7rem;color:var(--ink)}.picker-stat-filter select,.picker-stat-filter input{padding:6px;font-size:.72rem}
.picker-workbench>section:last-child{min-width:0;overflow:auto;padding:12px}.picker-result-count{position:sticky;top:-12px;z-index:2;margin:-12px -12px 8px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:.75rem;font-weight:700}
.pokemon-picker-row{grid-template-columns:44px minmax(0,1fr) auto;border-bottom:1px solid var(--line);border-radius:0}.pokemon-picker-row>.pokemon-picker-sprite{width:auto;height:auto;max-width:none;max-height:none;justify-self:center}.pokemon-picker-row .badge{white-space:nowrap}
.team-set-import{width:min(900px,94vw)}.team-set-import textarea{min-height:430px}
.battle-saved-team{display:flex!important;align-items:center;gap:6px;color:var(--muted);font-size:.72rem}.battle-saved-team select{width:170px;min-width:0}.sim-clause-warning{margin:8px 0}.sim-setup-clause-warning{margin:14px 0}
@media(max-width:1180px){.team-library-controls{grid-template-columns:minmax(220px,1fr) auto auto minmax(180px,1fr)!important}.team-library-controls .gallery-roster-button{grid-column:1/-1;max-width:none}.saved-team-actions{align-self:end}}
@media(max-width:850px){.picker-workbench{grid-template-columns:1fr}.picker-filters{border-right:0;border-bottom:1px solid var(--line);max-height:48vh}.team-library-controls{grid-template-columns:1fr 1fr!important}.saved-team-select,.team-library-controls .gallery-roster-button{grid-column:1/-1}.saved-team-actions{justify-content:flex-start}}
@media(max-width:560px){.picker-filter-grid{grid-template-columns:1fr}.picker-stat-filter{grid-template-columns:64px minmax(0,1fr) 72px}.team-library-controls{grid-template-columns:1fr!important}.saved-team-actions{display:grid;grid-template-columns:1fr 1fr}.slot-identity-button b{font-size:19px}}
.team-save-actions{display:flex;flex-wrap:wrap;gap:7px;align-items:end}.team-save-actions button{min-height:42px}
@media(max-width:1180px){.team-save-actions{align-self:end}}
@media(max-width:560px){.team-save-actions{display:grid;grid-template-columns:1fr 1fr}.team-save-actions .primary{grid-column:1/-1}}

/* Naka Data v0.57: native Pokémon picker sprites and Link-first Warrior pairing */
.warrior-picker-card.perfect-link-choice{box-shadow:inset 4px 0 0 var(--accent)}


/* Naka Data v0.58: Link thresholds and tactical Pokémon chooser cards */
.pokemon-picker-copy{display:grid;gap:5px;min-width:0}
.pokemon-picker-title{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.pokemon-picker-title>b{font-size:1rem}
.pokemon-picker-types{display:flex;flex-wrap:wrap;gap:3px}
.pokemon-picker-move{display:grid;grid-template-columns:52px minmax(0,1fr);gap:9px;align-items:center;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}
.pokemon-picker-move-range{width:48px!important;height:48px!important;max-width:48px!important;max-height:48px!important;object-fit:contain;image-rendering:pixelated;justify-self:center}
.pokemon-picker-label{margin:0!important;color:var(--muted);font-size:.62rem!important;font-weight:800;text-transform:uppercase;letter-spacing:.07em}
.pokemon-picker-move-title{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:1px 0 2px}
.pokemon-picker-move-title strong{font-size:.88rem;color:var(--ink)}
.pokemon-picker-move small{margin:0}
.pokemon-picker-copy>.small,.pokemon-picker-copy>small{margin-top:0}
.inline-label{font-weight:800;color:var(--ink)}
.type-chip{font-weight:750;border-color:transparent;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.28)}
.type-normal{background:#77756b}.type-fire{background:#c74b28}.type-water{background:#3974b8}.type-electric{background:#b58a08}.type-grass{background:#4d8b3d}.type-ice{background:#4e9299}.type-fighting{background:#963a32}.type-poison{background:#78418a}.type-ground{background:#9d7332}.type-flying{background:#6d65a8}.type-psychic{background:#b74470}.type-bug{background:#71802d}.type-rock{background:#85712f}.type-ghost{background:#55456f}.type-dragon{background:#57429a}.type-dark{background:#51443d}.type-steel{background:#74778c}
.pokemon-type-chip{font-size:.62rem}.move-type-chip{font-size:.64rem}
@media(max-width:650px){.pokemon-picker-row{grid-template-columns:38px minmax(0,1fr)}.pokemon-picker-row>.badge{grid-column:2;justify-self:start}.pokemon-picker-move{grid-template-columns:44px minmax(0,1fr)}.pokemon-picker-move-range{width:40px!important;height:40px!important;max-width:40px!important;max-height:40px!important}}

/* Naka Data v0.58: Showdown-style sortable result headings */
.picker-result-toolbar{position:sticky;top:-12px;z-index:3;margin:-12px -12px 8px;border-bottom:1px solid var(--line);background:var(--panel)}
.picker-result-toolbar .picker-result-count{position:static;margin:0;padding:9px 12px 5px;border:0;background:transparent}
.picker-sort-tabs{display:flex;align-items:stretch;gap:2px;min-width:0;padding:0 8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}
.picker-sort-tab{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;gap:5px;min-width:58px;padding:8px 10px 9px;border:0;border-bottom:3px solid transparent;border-radius:7px 7px 0 0;background:transparent;color:var(--muted);font-size:.72rem;font-weight:800;line-height:1;white-space:nowrap}
.picker-sort-tab:hover,.picker-sort-tab:focus-visible{background:var(--panel-2);color:var(--ink)}
.picker-sort-tab.active{border-bottom-color:var(--accent);background:var(--accent-soft);color:var(--ink)}
.picker-sort-tab b{font-size:.62rem;color:var(--accent)}
@media(max-width:650px){.picker-sort-tab{min-width:52px;padding-inline:8px}.picker-result-toolbar .picker-result-count{padding-bottom:4px}}


/* v0.61 compact cell inspection and tactical roster details */
.sim-cell-info{display:grid;gap:7px;margin:0 0 10px;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:var(--panel-soft)}
.sim-cell-info>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.sim-cell-info>header div{display:grid;gap:1px}.sim-cell-info>header small{color:var(--muted);font-size:10px}.sim-cell-info>header b{font-size:13px}.sim-cell-info>header button{min-width:28px;padding:2px 7px;border-radius:7px;font-size:18px;line-height:1.15}
.sim-cell-gimmicks{display:flex;gap:5px;flex-wrap:wrap}.sim-cell-gimmicks>div{display:flex;align-items:center;gap:5px;padding:3px 6px;border:1px solid var(--line);border-radius:999px;background:var(--panel)}.sim-cell-gimmicks span{font-size:11px;font-weight:750}.sim-cell-gimmicks small{font-size:9px;color:var(--muted)}
.sim-roster-name{display:flex;align-items:center;gap:7px;min-width:0}.sim-roster-name>b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sim-roster-name>span{display:flex;gap:3px;flex-wrap:wrap}
.sim-type-chip{display:inline-block;border:1px solid rgba(255,255,255,.55);border-radius:999px;padding:1px 5px;color:#fff;font-size:8px;font-weight:800;line-height:1.2;text-transform:uppercase;text-shadow:0 1px 1px rgba(0,0,0,.28)}
.sim-roster-statuses{display:flex;gap:4px;flex-wrap:wrap}.sim-roster-statuses em{border-radius:999px;padding:1px 5px;background:#eee2bb;color:#4d3500;font-size:9px;font-style:normal;font-weight:750}
.sim-roster-hp{white-space:nowrap}
.sim-roster-detail-overlay{position:absolute;left:58px;right:7px;top:calc(100% - 2px);z-index:40;display:none;gap:4px;padding:9px;border:1px solid #9b824d;border-radius:8px;background:#fffaf0;color:#241d13;box-shadow:0 8px 20px rgba(0,0,0,.24);pointer-events:none;text-decoration:none;filter:none;opacity:1}
.sim-roster-unit:hover .sim-roster-detail-overlay,.sim-roster-unit:focus-visible .sim-roster-detail-overlay{display:grid}.sim-roster-unit:focus-visible{z-index:42}.sim-roster-unit:hover{z-index:41}
.sim-roster-detail-overlay>b{font-size:11px}.sim-roster-detail-overlay>span{display:grid;grid-template-columns:minmax(92px,1fr) 58px repeat(5,38px);gap:5px;align-items:center}.sim-roster-detail-overlay i{height:auto!important;border-radius:0!important;background:transparent!important;overflow:visible!important;font-size:9px;font-style:normal;color:#655c4e}.sim-roster-detail-overlay strong{font-size:10px;text-align:right}.sim-stat-range-head{padding-bottom:3px;border-bottom:1px solid #d8ccb4}.sim-stat-range-head i:not(:first-child){text-align:right;font-weight:700;color:#30291f}
.battle-unit-sprite.roulette-selected{animation:rouletteChosen .62s ease-in-out both;filter:drop-shadow(0 0 8px #8f29c7) drop-shadow(0 0 16px #d175ff)}
@keyframes rouletteChosen{0%{transform:translate(-50%,-100%) scale(1)}28%{transform:translate(-50%,-112%) scale(1.24) rotate(-5deg)}55%{transform:translate(-50%,-118%) scale(.92) rotate(5deg)}100%{transform:translate(-50%,-128%) scale(.25);opacity:.15}}

/* v0.62 contextual Link availability */
.picker-obtainability-toggle{display:grid!important;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.picker-obtainability-toggle input{width:auto!important;margin-top:2px}.picker-obtainability-toggle span{display:grid;gap:2px}.picker-obtainability-toggle b{color:var(--ink);font-size:.78rem}.picker-obtainability-toggle small{color:var(--muted);font-weight:500;line-height:1.35}
.unobtainable-link-choice{background:var(--danger-soft)}.unobtainable-link-choice:hover{background:var(--danger-soft)}.unobtainable-link-reason{color:var(--danger)!important;font-weight:700}.warrior-picker-card.unobtainable-link-choice{box-shadow:inset 4px 0 0 var(--danger)}

/* v0.63 battle AI controls */
.sim-army-controller{display:flex;gap:10px;align-items:flex-end}.sim-army-controller label{display:grid;gap:4px;font-size:11px;color:var(--muted)}.sim-army-controller select{min-width:112px}.sim-ai-controller{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}.sim-ai-controller>b{font-size:16px}.sim-ai-controller p{margin:0}.sim-ai-controller .sim-toggle{margin-top:2px}
@media(max-width:650px){.sim-army-setup>header{align-items:stretch;flex-direction:column}.sim-army-controller{justify-content:space-between}.sim-army-controller label{flex:1}.sim-army-controller select{width:100%}}

.sim-ai-resolving{align-items:center}.sim-ai-resolving button{grid-column:1/-1;width:100%;margin:2px 0 0;padding:9px 12px}.sim-ai-resolving button:disabled{opacity:.7;cursor:default}.sim-log ol{padding:0;list-style:none;gap:7px}.sim-log li{padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:var(--panel-2)}


/* v0.65 battle Info and Pokédex base-stat presentation */
.sim-roster-detail-overlay .sim-info-line{display:grid;grid-template-columns:92px minmax(0,1fr)!important;gap:8px}.sim-roster-detail-overlay .sim-info-line strong{text-align:left;white-space:normal}.sim-roster-detail-overlay .sim-stat-range-head,.sim-roster-detail-overlay>span:not(.sim-info-line){grid-template-columns:minmax(72px,1fr) 58px repeat(5,38px)!important}
.pokemon-base-stat-gauges{display:grid;gap:8px;margin:8px 0 4px}.pokemon-base-stat-row{display:grid;grid-template-columns:72px minmax(120px,1fr) 42px;align-items:center;gap:10px}.pokemon-base-stat-row>span{font-size:12px;font-weight:700}.pokemon-base-stat-row>i{height:12px;border-radius:999px;background:var(--panel-soft,#eee5d2);overflow:hidden;border:1px solid rgba(64,48,25,.18)}.pokemon-base-stat-row>i>em{display:block;height:100%;background:linear-gradient(90deg,#b8903e,#6e9b56)}.pokemon-base-stat-row>b{text-align:right;font-variant-numeric:tabular-nums}.pokemon-stat-range-note{font-size:12px;color:var(--muted,#6d6253);max-width:72ch}

.pokemon-base-stat-row{position:relative}.pokemon-base-stat-row>small{position:absolute;left:76px;top:calc(100% + 4px);z-index:12;display:none;min-width:190px;padding:7px 9px;border:1px solid #9b824d;border-radius:7px;background:#fffaf0;box-shadow:0 7px 18px rgba(0,0,0,.2);font-size:10px;line-height:1.35;color:#3c3429}.pokemon-base-stat-row:hover>small,.pokemon-base-stat-row:focus>small,.pokemon-base-stat-row:focus-visible>small{display:block}.pokemon-base-stat-row:focus{outline:2px solid rgba(115,143,76,.55);outline-offset:2px}

/* v0.67 random team generator */
.battle-team-randomizer{padding:12px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:10px;background:var(--accent-soft)}
.battle-team-randomizer>summary{cursor:pointer;font-weight:800;color:var(--accent)}
.battle-randomizer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:11px}
.battle-randomizer-grid>label{display:grid;gap:4px;color:var(--muted);font-size:11px}
.battle-randomizer-grid select,.battle-randomizer-grid input{width:100%;min-width:0}
.battle-randomizer-grid .battle-random-check{display:flex;align-items:center;gap:7px;padding:8px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.7);color:var(--ink);font-size:12px}
.battle-randomizer-grid .battle-random-check input{width:auto}
.randomizer-story-hidden{visibility:hidden;pointer-events:none}
.battle-randomizer-actions{display:flex;align-items:center;gap:9px;margin-top:11px;flex-wrap:wrap}
.battle-randomizer-actions span{color:var(--muted);font-size:12px}
@media(max-width:760px){.battle-randomizer-grid{grid-template-columns:1fr}.randomizer-story-hidden{display:none}.battle-randomizer-actions{align-items:stretch;flex-direction:column}}

/* v0.68 responsive random-team generation */
.battle-randomizer-progress{display:none;margin-top:11px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.72)}
.battle-randomizer-progress.is-active{display:grid;gap:7px}
.battle-randomizer-progress>div{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:12px}
.battle-randomizer-progress progress{display:block;width:100%;height:13px;accent-color:var(--accent)}
.battle-randomizer-grid :disabled{opacity:.58;cursor:not-allowed}

.battle-random-seed-field{grid-column:span 2}.battle-randomizer-actions span{flex:1;min-width:220px}
@media(max-width:760px){.battle-random-seed-field{grid-column:auto}.sim-stage-pick>button{width:100%}}


/* v0.71 quick Random Team split control */
.sim-random-team-split{display:inline-flex;align-items:stretch;position:relative}.sim-random-team-split>button{border-top-right-radius:0;border-bottom-right-radius:0}.sim-random-team-split>details{position:relative}.sim-random-team-split>details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:34px;height:100%;padding:0 9px;border:1px solid var(--line,#d8cfc2);border-left:0;border-radius:0 9px 9px 0;background:var(--paper,#fff);user-select:none}.sim-random-team-split>details>summary::-webkit-details-marker{display:none}.sim-random-team-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;display:grid;gap:8px;min-width:250px;padding:12px;border:1px solid var(--line,#d8cfc2);border-radius:10px;background:var(--paper,#fff);box-shadow:0 12px 30px rgba(30,20,10,.18)}.sim-random-team-menu label{display:flex;gap:8px;align-items:flex-start;font-size:.92rem}.sim-random-team-menu button{margin-top:3px;width:100%}

/* Naka Data v0.74: RanseiLink Warrior records, specialties and hidden units */
.warrior-mechanical-profile{display:grid;gap:10px;margin:12px 0 4px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.warrior-record-facts{grid-template-columns:repeat(4,minmax(0,1fr));margin:0}
.warrior-type-profile{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.warrior-type-profile>div{display:grid;gap:5px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.warrior-type-profile small{color:var(--muted);font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.warrior-type-profile span{display:flex;flex-wrap:wrap;gap:4px}.warrior-type-profile em{color:var(--muted);font-size:.76rem}
.warrior-type-chip{text-transform:none}
.hidden-warrior-notice{border-color:#c69b4a;background:#fff7df}
.hidden-warrior-notice p{margin:4px 0}.hidden-warrior-notice small{display:block;color:var(--muted)}

.reference-warrior-filters{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:8px 0}.reference-warrior-filters label{display:grid;gap:3px;font-size:.7rem;font-weight:800;color:var(--muted)}.reference-warrior-filters select{min-width:0;width:100%}
@media(max-width:700px){.reference-warrior-filters{grid-template-columns:1fr}}
@media(max-width:700px){.warrior-record-facts{grid-template-columns:1fr 1fr}.warrior-type-profile{grid-template-columns:1fr}}

/* v0.81: persistent AI-vs-AI controls and uncluttered resolving panel. */
#sim-ai-toolbar:empty{display:none}
.sim-ai-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:10px 0 12px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.sim-ai-toolbar>div:first-child{display:grid;gap:2px;min-width:0}.sim-ai-toolbar>div:first-child span{color:var(--muted);font-size:12px;line-height:1.35;white-space:normal}
.sim-ai-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.sim-ai-toolbar-actions button{white-space:nowrap}.sim-ai-toolbar .sim-toggle.compact{margin:0;padding:0;background:transparent;border:0}
.sim-ai-resolving{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px 12px;padding:13px}
.sim-ai-resolving .sim-resolving-spinner{grid-column:1;grid-row:1;align-self:start;margin-top:2px}
.sim-ai-resolving .sim-resolving-copy{grid-column:2;grid-row:1;overflow-wrap:anywhere}
.sim-ai-resolving>button{grid-column:1/-1!important;grid-row:2;width:100%;min-height:38px;margin:0!important}
@media(max-width:760px){.sim-ai-toolbar{align-items:stretch;flex-direction:column}.sim-ai-toolbar-actions{justify-content:stretch}.sim-ai-toolbar-actions>*{flex:1 1 170px}.sim-ai-toolbar-actions button{width:100%}}

/* v0.85 battle-state feedback */
.battle-unit-float.buff{background:#2f8f45;color:#fff}
.battle-unit-float.debuff{background:#8e3c96;color:#fff}
.battle-unit-status-symbols{position:absolute;left:50%;bottom:72%;width:100%;height:42%;transform:translateX(-50%);pointer-events:none;z-index:8}
.battle-unit-status-symbols i{display:none;position:absolute;font-style:normal;font-weight:900;text-shadow:0 1px 0 #fff,0 0 3px #000}
.battle-unit-status-symbols .sleep-z{right:4%;top:-12%;color:#d7e7f4;font-size:calc(var(--unit-tile-size,48px)*.28);animation:battleSleepZ 1.25s ease-in-out infinite}
.battle-unit-status-symbols .confusion-stars{left:50%;top:-15%;color:#f4d64f;font-size:calc(var(--unit-tile-size,48px)*.25);animation:battleConfusionStars 1s linear infinite}
.battle-unit-sprite.status-asleep .sleep-z{display:block}
.battle-unit-sprite.status-confused .confusion-stars{display:block}
.battle-unit-sprite.status-paralyzed .battle-unit-frame img{filter:sepia(.35) saturate(1.75) hue-rotate(2deg) brightness(1.06)}
.battle-unit-sprite.status-burned .battle-unit-frame img{filter:sepia(.3) saturate(1.55) hue-rotate(320deg) brightness(.98)}
.battle-unit-sprite.status-frozen .battle-unit-frame img{filter:sepia(.15) saturate(1.25) hue-rotate(155deg) brightness(1.12)}
.battle-unit-sprite.status-asleep .battle-unit-frame img{filter:grayscale(.18) sepia(.08) saturate(.72) hue-rotate(165deg) brightness(.94)}
.battle-unit-sprite.status-poisoned .battle-unit-frame img{filter:sepia(.22) saturate(1.45) hue-rotate(235deg) brightness(.96)}
.battle-unit-sprite.status-flinched .battle-unit-frame{animation:battleFlinch .22s linear 2}
.battle-unit-sprite.future-sight-marked .battle-unit-footprint{box-shadow:0 0 0 3px rgba(143,65,190,.45)}
.battle-unit-sprite.future-sight-pulse .battle-unit-frame{animation:battleFutureSightPulse .52s ease-in-out both}
@keyframes battleSleepZ{0%,100%{opacity:.25;transform:translate(0,5px) scale(.78)}50%{opacity:1;transform:translate(7px,-8px) scale(1.05)}}
@keyframes battleConfusionStars{from{transform:translateX(-50%) rotate(0deg)}to{transform:translateX(-50%) rotate(360deg)}}
@keyframes battleFlinch{0%,100%{transform:translateX(0)}25%{transform:translateX(-5%)}75%{transform:translateX(5%)}}
@keyframes battleFutureSightPulse{0%{filter:drop-shadow(0 0 0 rgba(145,60,190,0))}45%{filter:drop-shadow(0 0 9px rgba(145,60,190,.95));transform:scale(1.08)}100%{filter:drop-shadow(0 0 2px rgba(145,60,190,.3));transform:scale(1)}}

/* v0.89 Conquest-style four-angle camera controls */
.sim-camera-controls{position:absolute;right:12px;bottom:12px;z-index:80;display:flex;align-items:stretch;gap:0;padding:4px;border:1px solid rgba(54,43,31,.55);border-radius:11px;background:rgba(255,250,242,.9);box-shadow:0 4px 14px rgba(0,0,0,.2);backdrop-filter:blur(3px)}
.sim-camera-controls button{min-width:42px;height:38px;padding:0 11px;border-radius:0;border-color:rgba(93,72,45,.38);background:#fffaf2;color:var(--ink);font-size:20px;line-height:1}
.sim-camera-controls button:first-child{border-radius:7px 0 0 7px}
.sim-camera-controls button:last-child{border-radius:0 7px 7px 0}
.sim-camera-controls button+button{border-left:0}
.sim-camera-controls .sim-camera-lock{font-size:17px}
.sim-camera-controls .sim-camera-lock.active{background:var(--accent);color:#fff;border-color:var(--accent)}
@media(max-width:760px){.sim-camera-controls{right:8px;bottom:8px}.sim-camera-controls button{min-width:38px;height:36px;padding:0 9px}}

.sim-roster-detail-overlay .sim-stage{display:inline;font-size:8px;font-weight:800;margin-left:1px}.sim-roster-detail-overlay .sim-stage.positive{color:#18743a}.sim-roster-detail-overlay .sim-stage.negative{color:#b23a32}

/* Naka Data v0.94: compact Showdown-style data rows and reliable sorting */
.reference-split{grid-template-columns:minmax(560px,650px) minmax(0,1fr);align-items:start;min-height:calc(100vh - 170px)}
.reference-split.warrior-reference-split{grid-template-columns:minmax(405px,470px) minmax(0,1fr)}
.reference-sidebar{display:flex;flex-direction:column;height:calc(100vh - 110px);max-height:calc(100vh - 110px);min-height:0;overflow:hidden}
.reference-sidebar>.segmented,.reference-sidebar>input,.reference-sidebar>.reference-warrior-filters,.reference-list-toolbar{flex:0 0 auto}
.reference-list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding:3px 1px 4px;border-bottom:1px solid var(--line)}
.reference-result-count{color:var(--muted);font-size:11px;font-weight:750;white-space:nowrap}
.reference-stat-sort-buttons{display:grid;grid-template-columns:minmax(38px,1.35fr) minmax(48px,1.6fr) repeat(6,minmax(27px,1fr));gap:2px;width:270px;max-width:100%;overflow-x:auto}
.reference-stat-sort-buttons button{display:flex;align-items:center;justify-content:center;gap:1px;min-width:0;padding:3px 2px;border:0;border-radius:4px;background:transparent;color:#77717d;font-size:8px;font-weight:750;line-height:1;cursor:pointer}
.reference-stat-sort-buttons button:hover,.reference-stat-sort-buttons button:focus-visible,.reference-stat-sort-buttons button.active{background:var(--accent-soft);color:var(--accent);outline:none}
.reference-stat-sort-buttons button b{font-size:8px}
.warrior-list-toolbar .reference-stat-sort-buttons{grid-template-columns:minmax(38px,1.35fr) minmax(48px,1.6fr) repeat(4,minmax(25px,1fr));width:216px}
.reference-sidebar .result-list{flex:1 1 0;min-height:0;max-height:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;margin-right:-6px;padding-right:6px;touch-action:pan-y;-webkit-overflow-scrolling:touch}
.showdown-row{width:100%;display:grid!important;align-items:center;gap:7px;padding:5px 7px!important;border:1px solid transparent;border-radius:7px;text-align:left;text-decoration:none;background:transparent;min-width:0}
.showdown-row:hover,.showdown-row.active{border-color:#d9c7e2;background:var(--accent-soft)}
.pokemon-showdown-row{grid-template-columns:38px minmax(92px,1.05fr) minmax(74px,.8fr) minmax(90px,1fr) auto!important}
.warrior-showdown-row{grid-template-columns:40px minmax(72px,1fr) minmax(82px,.95fr) 116px!important;gap:5px}
.showdown-art{width:38px;height:38px;display:grid;place-items:center}
.warrior-showdown-row .showdown-art{width:40px}
.showdown-art img{width:auto!important;height:auto!important;max-width:38px!important;max-height:38px!important;object-fit:contain;image-rendering:pixelated}
.warrior-showdown-row .showdown-art img{max-width:40px!important;max-height:30px!important}
.showdown-name,.showdown-move,.showdown-skill,.showdown-abilities{display:grid;gap:2px;min-width:0}
.showdown-name>b,.showdown-move>b,.showdown-skill>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.showdown-name>small,.showdown-move>small,.showdown-skill>small{margin:0;color:var(--muted);font-size:8px;line-height:1.05}
.showdown-types{display:flex;gap:2px;flex-wrap:wrap}
.showdown-types .type-chip{padding:1px 4px;font-size:7px;line-height:1.1}
.showdown-abilities{font-size:9px;line-height:1.15;color:var(--ink)}
.showdown-abilities span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.showdown-stats{display:grid;grid-template-columns:repeat(6,minmax(24px,1fr));gap:0 3px;align-items:end;min-width:182px;text-align:right}
.showdown-stats small{margin:0;color:#928d98;font-size:7px;font-weight:700;line-height:1;text-align:right}
.showdown-stats b{font-size:10px;font-weight:650;line-height:1.15;text-align:right}
.warrior-stat-grid{grid-template-columns:repeat(4,minmax(22px,1fr));min-width:116px;width:116px}
.static-row{color:inherit}
.showdown-picker-wrap{position:relative;display:grid;border-bottom:1px solid var(--line)}
.showdown-picker-wrap:last-child{border-bottom:0}
.showdown-picker-wrap>.showdown-row{border-radius:0;padding:6px 8px!important}
.showdown-picker-wrap.perfect-link-choice{box-shadow:inset 3px 0 0 var(--accent)}
.showdown-picker-wrap.unobtainable-link-choice{box-shadow:inset 3px 0 0 var(--danger);background:var(--danger-soft)}
.picker-gallery-shortcut{position:absolute;right:8px;bottom:5px;padding:3px 6px;border-radius:6px;font-size:9px}
.showdown-row-note{display:block;padding:0 8px 5px 53px;font-size:9px}
#warrior-picker-results,#pokemon-picker-results{display:grid;align-content:start;min-height:0}
.picker-workbench>section:last-child{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}

.content-page{padding:22px;display:grid;gap:24px}
.content-page>p{margin:0;max-width:850px;line-height:1.65}
.content-page>section{padding-top:18px;border-top:1px solid var(--line)}
.content-page h2{margin:0 0 10px;font:650 20px/1.2 var(--font-text)}
.content-placeholder{margin:0}
.credit-entry-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.credit-entry-list article{padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}
.credit-entry-list p{margin:4px 0;color:var(--muted);font-size:12px;line-height:1.45}
.credit-entry-list a{font-size:11px;color:var(--accent)}

.format-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(275px,1fr));gap:14px}
.format-card{display:grid;gap:12px;padding:16px}
.format-card>header,.format-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.format-card h2,.format-heading h2{margin:2px 0 0;font:650 20px/1.2 var(--font-text)}
.format-card p{margin:0;line-height:1.5}
.format-card-facts{display:flex;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:11px}
.format-card-facts span{padding:4px 7px;border-radius:999px;background:var(--panel-2)}
.format-card>.button{justify-self:start}
.eyebrow{color:var(--accent);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.format-section{padding:18px;margin-bottom:14px}
.format-section>h2{margin:0 0 13px;font:650 21px/1.2 var(--font-text)}
.format-rule-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.format-rule-grid div{min-height:64px}
.format-stage-group+ .format-stage-group{margin-top:18px}
.format-stage-group h3{display:flex;align-items:baseline;gap:7px;margin:0 0 8px;font-size:14px}
.format-stage-group h3 small{color:var(--muted);font-size:10px}
.format-stage-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:7px}
.format-stage-list article{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;align-items:center;padding:7px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}
.format-stage-list b,.format-stage-list small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.format-stage-list b{font-size:11px}.format-stage-list small{margin-top:2px;color:var(--muted);font-size:8px}
.format-stage-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:var(--accent);color:#fff;font:700 15px/1 var(--font-text)}
.format-name-list{display:flex;flex-wrap:wrap;gap:6px}.format-name-list span{padding:5px 8px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);font-size:11px}
.format-banlist{display:flex;flex-wrap:wrap;gap:8px}
.format-banlist a{display:flex;align-items:center;gap:6px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;text-decoration:none;background:var(--panel-2)}
.format-banlist img{width:32px;height:28px;object-fit:contain;image-rendering:pixelated}.format-banlist b{font-size:11px}
.format-roster{margin-bottom:12px;overflow:hidden}
.format-roster>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 16px;cursor:pointer;font-weight:750}
.format-roster>summary span{color:var(--muted);font-size:11px}
.format-roster-scroll{max-height:560px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:5px 8px 10px;border-top:1px solid var(--line)}

@media(max-width:980px){
  .reference-split{grid-template-columns:1fr;min-height:0}
  .reference-sidebar{position:static;max-height:72vh}
  .reference-sidebar .result-list{min-height:260px}
}
@media(max-width:650px){
  .pokemon-showdown-row{grid-template-columns:34px minmax(90px,1fr) auto!important}
  .pokemon-showdown-row .showdown-move,.pokemon-showdown-row .showdown-abilities{display:none}
  .showdown-stats{min-width:164px}
  .warrior-showdown-row{grid-template-columns:42px minmax(90px,1fr) auto!important}
  .warrior-showdown-row .showdown-skill{display:none}
  .format-stage-list{grid-template-columns:1fr}
}

/* Naka Data v0.92: format-aware simulator setup */
.sim-format-pick{grid-column:1/-1;display:grid;grid-template-columns:minmax(190px,1fr) minmax(150px,.7fr) auto auto;gap:10px;align-items:end;padding-bottom:12px;border-bottom:1px solid var(--line)}
.sim-format-pick>div{display:grid;gap:4px;align-self:center}.sim-format-pick>div small{color:var(--muted);font-size:9px}.sim-format-pick>div b{font-size:12px}
.sim-stage-method-note{align-self:center;color:var(--muted);font-size:11px;font-weight:650}
.sim-stage-striking{margin:14px 0;padding:16px}
.sim-stage-striking>header,.sim-connectivity-foundation>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.sim-stage-striking h2,.sim-connectivity-foundation h2{margin:0 0 4px;font:650 18px/1.2 var(--font-text)}.sim-stage-striking p,.sim-connectivity-foundation p{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.sim-team-preview{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.sim-team-preview-side{padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}
.sim-team-preview-side h3{margin:0 0 7px;font-size:12px}.sim-team-preview-side>div{display:grid;grid-template-columns:32px minmax(0,1fr);gap:7px;align-items:center;padding:4px 0;border-top:1px solid rgba(0,0,0,.05)}
.sim-team-preview-side>div:first-of-type{border-top:0}.sim-team-preview-side img{width:30px;height:30px;object-fit:contain;image-rendering:pixelated}.sim-team-preview-side b,.sim-team-preview-side small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sim-team-preview-side b{font-size:10px}.sim-team-preview-side small{color:var(--muted);font-size:8px}
.sim-strike-stage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:7px}
.sim-strike-stage-grid button{display:grid;grid-template-columns:42px minmax(0,1fr);gap:7px;align-items:center;text-align:left;padding:7px}.sim-strike-stage-grid .minimap-first-frame{width:40px;height:40px}.sim-strike-stage-grid b,.sim-strike-stage-grid small{display:block}.sim-strike-stage-grid b{font-size:10px}.sim-strike-stage-grid small{margin-top:2px;color:var(--muted);font-size:8px}.sim-strike-stage-grid button.struck{opacity:.42;text-decoration:line-through}.sim-strike-stage-grid button.selected{border-color:var(--accent);background:var(--accent-soft);opacity:1;text-decoration:none}
.sim-connectivity-foundation{padding:14px 16px;margin:14px 0}.sim-connectivity-foundation .data-grid{margin-top:0}
@media(max-width:760px){.sim-format-pick{grid-template-columns:1fr 1fr}.sim-format-pick>button,.sim-format-pick>.sim-toggle{align-self:end}.sim-team-preview{grid-template-columns:1fr}}
.format-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.format-stat-grid h3{margin:0 0 7px;font-size:13px}.format-stat-table{border:1px solid var(--line);border-radius:8px;overflow:hidden}.format-stat-table>div{display:grid;grid-template-columns:minmax(0,1fr) 54px 68px;gap:7px;padding:6px 8px;border-top:1px solid var(--line);font-size:10px}.format-stat-table>div:first-child{border-top:0}.format-stat-table .head{background:var(--panel-2);color:var(--muted);font-size:8px;text-transform:uppercase}.format-stat-table span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.format-stat-table b{text-align:right}
.format-stat-table.four-column>div{grid-template-columns:minmax(0,1fr) 48px 48px 68px}
.format-stat-table.stage-stat-table>div{grid-template-columns:minmax(0,1fr) 44px 70px 64px}

/* v0.93 regression repairs */
.sortable-stat-label{cursor:pointer;border-radius:3px;user-select:none}
.sortable-stat-label:hover,.sortable-stat-label:focus,.sortable-stat-label.active{color:var(--accent);background:var(--accent-soft);outline:none}
.compact-warrior-type-profile{margin-top:12px;padding:0;background:transparent;border:0}
.compact-warrior-type-profile>div{background:var(--panel-2)}
@media(max-width:980px){.reference-split.warrior-reference-split{grid-template-columns:1fr}.reference-sidebar{height:72vh;max-height:72vh}}

/* v0.94 cache-safe and compact Warrior list adjustments */
.showdown-stats small{cursor:default}

/* Japanese game-name aliases imported from the VPYJ ROM. */
.jp-name {
  display: block;
  margin-top: 0.14rem;
  font-family: var(--font-text);
  font-size: 0.78em;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.035em;
  color: var(--muted);
  text-transform: none;
}
.jp-name.compact {
  margin-top: 0.08rem;
  font-size: 0.74em;
  line-height: 1.15;
}
.jp-name.hero {
  margin-top: 0.2rem;
  font-size: 0.62em;
  font-weight: 500;
}
.jp-name.heading {
  margin-top: 0.12rem;
  font-size: 0.72em;
}
.showdown-name > .jp-name,
.result-row > span > .jp-name {
  margin-bottom: 0.18rem;
}
.showdown-move .jp-name,
.showdown-skill .jp-name,
.showdown-abilities .jp-name {
  color: var(--muted);
}
.stage-title-block h2 .jp-name,
.kingdom-detail-heading h2 .jp-name,
.detail-hero h2 .jp-name {
  max-width: 100%;
}

/* v0.96: touch-friendly type details. */
.pokemon-type-matchup{appearance:none;display:inline-flex;align-items:center;justify-content:center;margin:0;padding:4px 8px;border:1px solid rgba(0,0,0,.2);border-radius:999px;font:inherit;font-size:.68rem;font-weight:800;line-height:1;cursor:pointer;box-shadow:none}
.pokemon-type-matchup:hover{filter:brightness(1.06);transform:translateY(-1px)}
.pokemon-type-matchup:focus-visible{outline:3px solid var(--focus,#56b4e9);outline-offset:2px}
.pokemon-type-summary{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:6px 0 8px}.pokemon-type-summary>span:first-child{font-size:.7rem;color:var(--muted);font-weight:700;text-transform:uppercase}.pokemon-type-summary>small{flex-basis:100%;line-height:1.45;color:var(--muted)}
.type-matchup-modal{width:min(640px,94vw)}.type-matchup-summary{display:grid;gap:12px}.type-matchup-heading{display:flex;align-items:center;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}.type-matchup-heading img{width:54px;height:54px;object-fit:contain;image-rendering:pixelated}.type-matchup-heading>div{display:grid;gap:4px}.type-matchup-heading small{color:var(--muted)}.type-matchup-summary section{display:grid;gap:7px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}.type-matchup-summary section h3{margin:0}.type-matchup-summary section>div{display:flex;flex-wrap:wrap;gap:6px}.type-matchup-row{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid var(--line);border-radius:999px;background:var(--panel)}.type-matchup-row b{font-size:.7rem}

/* v0.96: Story unlock tree in the Campaign Planner. */
.campaign-story-unlock-control{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}.campaign-story-unlock-control span{color:var(--muted);font-size:.76rem}.campaign-story-unlock-control button{white-space:nowrap}
.story-unlock-tree-modal{width:min(1120px,96vw)}.story-unlock-tree-modal .modal-results{max-height:min(78vh,860px);overflow:auto}.story-unlock-tree-modal-content{display:grid;gap:16px}.story-tree-introduction{display:flex;align-items:start;justify-content:space-between;gap:16px}.story-tree-introduction p{margin:3px 0;color:var(--muted)}.story-tree-introduction>span{padding:5px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.72rem;font-weight:700}.story-tree-main{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2)}.story-tree-main h3,.story-tree-special-grid h3{margin:0 0 10px}.story-tree-scroll{overflow:auto;padding:4px 4px 12px}.story-unlock-tree-list,.story-unlock-tree-list ul{list-style:none;margin:0;padding:0}.story-unlock-tree-list{display:flex;min-width:max-content}.story-unlock-tree-list ul{display:flex;gap:12px;margin-left:24px;padding-left:22px;border-left:1px solid var(--line)}.story-unlock-tree-list li{position:relative;display:flex;align-items:center}.story-unlock-tree-list li>ul:before{content:'→';align-self:center;margin-left:-32px;color:var(--muted)}.story-tree-node{min-width:165px;padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.story-tree-node.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.story-tree-node .story-icon-link{width:100%}.story-tree-special-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.story-tree-special-grid>section{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.story-tree-special-grid p{margin:8px 0 0;color:var(--muted);font-size:.75rem;line-height:1.45}

/* v0.96: historical-figure workshop. */
.historical-workshop-summary{margin-bottom:14px}.historical-figure-editor{align-items:start}.historical-figure-identity{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}.historical-figure-identity img{width:48px;height:48px;object-fit:contain;image-rendering:pixelated}.historical-figure-identity>div{display:grid;gap:2px}.historical-figure-identity span{font-family:var(--font-japanese,var(--font-text))}.historical-figure-identity small{color:var(--muted)}
.story-availability-list{display:grid;gap:6px}.story-availability-entry{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(0,1.2fr);align-items:center;gap:10px;padding:6px;border-bottom:1px solid var(--line)}.story-location-summary{display:flex;flex-wrap:wrap;gap:5px}.story-location-summary>span{display:inline-flex;align-items:center;gap:3px;padding:4px 7px;border-radius:999px;background:var(--panel-2);font-size:.7rem}.story-location-summary small{color:var(--muted)}
@media(max-width:760px){.story-tree-special-grid{grid-template-columns:1fr}.campaign-story-unlock-control{align-items:stretch;flex-direction:column}.story-availability-entry{grid-template-columns:1fr}.story-tree-introduction{display:grid}}

/* v0.97: compact Wikipedia language controls and restrained Pokédex aliases. */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.wikipedia-language-links{display:inline-flex;align-items:stretch;width:max-content;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel);box-shadow:0 1px 2px rgba(40,31,22,.08)}
.wikipedia-language-links .wikipedia-mark{display:grid;place-items:center;min-width:35px;padding:3px 7px;background:var(--panel-2);border-right:1px solid var(--line)}
.wikipedia-language-links .wikipedia-mark img{width:24px;height:24px;object-fit:contain;display:block}
.wikipedia-language-links a{display:grid;place-items:center;min-width:34px;padding:4px 7px;color:inherit;text-decoration:none;border-left:1px solid var(--line);background:var(--panel)}
.wikipedia-language-links .wikipedia-mark+a{border-left:0}
.wikipedia-language-links a:hover,.wikipedia-language-links a:focus-visible{background:var(--accent-soft);outline:none}
.wikipedia-flag{font-size:18px;line-height:1}
.historical-workshop-wikipedia{align-self:center}
.historical-open-links{display:flex;align-items:center;flex-wrap:wrap;gap:8px}

/* Japanese aliases in Pokédex rows belong only to the selected record name. */
.showdown-name>.jp-name{margin:0;font-size:8px;line-height:1.05;letter-spacing:.02em}
.showdown-name{gap:1px}
.showdown-move,.showdown-skill,.showdown-abilities{align-self:center}
.pokemon-showdown-row,.warrior-showdown-row{align-items:center}

/* v0.98: preserve the Pokédex/Teambuilder rows as compact horizontal lists. */
.showdown-types{flex-wrap:nowrap;white-space:nowrap;overflow:hidden}
.showdown-types .type-chip{flex:0 0 auto}

.warrior-detail-hero>.historical-wikipedia-control{align-self:start;justify-self:end;margin:0}
.warrior-detail-hero{grid-template-columns:100px minmax(0,1fr) auto}
@media(max-width:700px){.warrior-detail-hero{grid-template-columns:72px minmax(0,1fr) auto}.warrior-detail-hero>.historical-wikipedia-control{grid-column:3;grid-row:1}}

.story-category-availability-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px 0}
.story-category-availability-card{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:inherit;text-decoration:none}
.story-category-availability-card:hover,.story-category-availability-card:focus-visible{border-color:var(--accent);background:var(--accent-soft);outline:none}
.story-category-availability-card span{font-size:.76rem;color:var(--muted)}
.story-category-availability-card.unavailable{opacity:.72;background:var(--panel-2)}
.reference-stat-sort-buttons button span{white-space:nowrap}
@media(max-width:700px){.story-category-availability-grid{grid-template-columns:1fr}}

/* v0.100: historical relationship workshop and public cross-links. */
.subtabs{display:flex;gap:6px;margin:0 0 14px;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.subtabs button{flex:1;border:0;background:transparent}
.subtabs button.active{background:var(--panel);box-shadow:0 1px 4px rgb(0 0 0 / .08)}
.historical-connections{margin-top:24px}
.historical-connection-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}
.historical-connection{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);text-decoration:none;min-width:0}
.historical-connection:hover{background:var(--panel-2)}
.historical-connection img{width:42px;height:42px;object-fit:contain;image-rendering:pixelated;flex:none}
.historical-connection span{display:grid;min-width:0}.historical-connection b,.historical-connection small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.historical-connection small{color:var(--muted);text-transform:capitalize}
.historical-group-list{display:grid;gap:8px;margin-top:10px}
.historical-group-chip{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.historical-group-chip>span{display:grid}.historical-group-chip small{color:var(--muted)}
.historical-group-wikipedia{flex:none}
.historical-relation-section{border-top:1px solid var(--line);padding-top:12px}
.historical-relation-section h3{margin:0 0 10px}
.historical-relation-table{display:grid;gap:7px}
.historical-relation-table>div{display:grid;grid-template-columns:38px minmax(120px,1fr) minmax(120px,180px) minmax(130px,1fr) auto;gap:8px;align-items:center}
.historical-relation-table img{width:36px;height:36px;object-fit:contain;image-rendering:pixelated}
.historical-relation-add{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(110px,.8fr) minmax(120px,1fr) auto minmax(110px,.8fr) minmax(120px,1fr) auto;gap:8px;align-items:center}
.historical-draft-list{display:grid;gap:7px;max-height:360px;overflow:auto;padding-right:4px}
.historical-draft-list>label{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.historical-draft-pair{display:flex;align-items:center;gap:6px;min-width:0}.historical-draft-pair img{width:30px;height:30px;object-fit:contain;image-rendering:pixelated}.historical-draft-list small{color:var(--muted);text-align:right}
.historical-member-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;max-height:390px;overflow:auto;padding:6px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.historical-member-picker label{display:flex;align-items:center;gap:7px;padding:6px 7px;border-radius:8px;background:var(--panel)}
.historical-member-picker img{width:34px;height:34px;object-fit:contain;image-rendering:pixelated}.historical-member-picker span{display:grid;min-width:0}.historical-member-picker .jp-name{font-size:.72rem}
@media(max-width:900px){.historical-relation-table>div,.historical-relation-add{grid-template-columns:38px 1fr}.historical-relation-table>div>*:not(img),.historical-relation-add>*{grid-column:2}.historical-relation-add>.inline-check{grid-column:2}}
.historical-draft-heading,.historical-member-filter{display:flex;align-items:end;justify-content:space-between;gap:10px;flex-wrap:wrap}
.historical-draft-heading h3{margin:0}
.historical-draft-toolbar{display:flex;align-items:end;gap:8px;flex-wrap:wrap}
.historical-draft-toolbar label,.historical-member-filter label{display:grid;gap:4px;min-width:160px;color:var(--muted);font-size:.75rem}
.historical-draft-toolbar select{min-width:145px}
.historical-draft-list small a{color:inherit}
.historical-member-filter>.actions{margin-left:auto}
@media(max-width:700px){.historical-draft-heading,.historical-member-filter{align-items:stretch;flex-direction:column}.historical-draft-toolbar{align-items:stretch}.historical-draft-toolbar label{flex:1}.historical-member-filter>.actions{margin-left:0}}


/* v0.101: quick Wikipedia references in the relationship review workspace. */
.historical-relation-warrior-identity{display:grid;grid-template-columns:auto minmax(0,1fr) auto}
.historical-relation-warrior-identity>.historical-workshop-warrior-wikipedia{align-self:center;justify-self:end}
@media(max-width:620px){.historical-relation-warrior-identity{grid-template-columns:auto minmax(0,1fr)}.historical-relation-warrior-identity>.historical-workshop-warrior-wikipedia{grid-column:1/-1;justify-self:start;margin-top:4px}}

/* v0.102 online rooms and stage-selection artwork */
.minimap-first-frame.kingdom-icon img,
.minimap-first-frame.facility-icon img{width:100%;height:100%;object-fit:contain;object-position:center;padding:7px;box-sizing:border-box}
.minimap-first-frame.kingdom-icon{background:#fbf7ef}
.minimap-first-frame.facility-icon{background:var(--panel-2)}
.sim-strike-stage-grid .minimap-first-frame.kingdom-icon img,
.sim-strike-stage-grid .minimap-first-frame.facility-icon img{width:100%;height:100%;padding:3px}
.sim-network-mode{display:grid;grid-template-columns:minmax(160px,.55fr) minmax(260px,1.45fr);gap:10px;margin-bottom:10px}
.sim-network-mode label,.sim-network-room label,.sim-match-rules label{display:grid;gap:5px;color:var(--muted);font-size:11px}
.sim-network-room{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin-bottom:10px}.sim-network-room label{min-width:150px;flex:1}.sim-network-room input{text-transform:uppercase;letter-spacing:.12em;font-weight:750}
.sim-match-rules{display:grid!important;grid-template-columns:minmax(240px,1.2fr) minmax(210px,1fr) 90px!important;align-items:end!important;gap:10px!important;margin:10px 0!important}.sim-match-rules:disabled{opacity:.72}
.sim-network-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--line)}.sim-network-actions span{color:var(--muted);font-size:11px}
.sim-network-error{margin:10px 0 0!important;padding:8px 10px;border:1px solid #c77c72;border-radius:7px;background:#fff3f0!important;color:#792a22!important}
.sim-hidden-army{min-height:240px}.sim-team-hidden-mark{display:grid;place-items:center;min-height:130px;border:1px dashed var(--line);border-radius:9px;background:var(--panel-2);color:var(--muted);font-size:46px;font-weight:800}
.sim-network-wait{padding:14px;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}.sim-network-wait p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45}
@media(max-width:760px){.sim-network-mode,.sim-match-rules{grid-template-columns:1fr!important}.sim-network-room>*{width:100%}.sim-network-room label{min-width:0}}

/* v0.104: deployment polish, format readability, and dynamic evolution checks. */
.credit-entry-list article{display:grid;align-content:start;gap:5px;min-width:0}
.credit-entry-list article>b{font-size:13px;line-height:1.25}
.credit-entry-list article>a{justify-self:start;margin-top:2px;text-decoration:none}
.credit-entry-list article>a:hover,.credit-entry-list article>a:focus-visible{text-decoration:underline}

.format-rule-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:12px}
.format-rule-groups>section{padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--panel-2)}
.format-rule-groups h3{margin:0;font-size:15px}
.format-rule-groups>section>p{margin:4px 0 11px;color:var(--muted);font-size:11px;line-height:1.45}
.format-rule-groups .format-rule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.format-rule-groups .format-rule-grid>div{min-height:0;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.format-rule-groups .format-rule-grid small{display:block;margin-bottom:2px;color:var(--muted);font-size:9px;line-height:1.25}
.format-rule-groups .format-rule-grid b{display:block;font-size:11px;line-height:1.28}
.format-stage-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.format-stage-list article{grid-template-columns:48px minmax(0,1fr);min-height:58px;padding:8px 10px}
.format-stage-icon{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:9px;background:var(--panel);overflow:hidden}
.format-stage-icon img{display:block;width:100%;height:100%;padding:4px;box-sizing:border-box;object-fit:contain;image-rendering:pixelated}
.format-stage-icon.fallback{font-size:20px;color:var(--muted)}
.format-stage-list b{font-size:12px;line-height:1.2}
.format-stage-list .jp-name{margin-top:2px;font-size:9px;line-height:1.1}
.format-stage-list small{font-size:9px;line-height:1.25;text-transform:none}
.format-stage-group h3{text-transform:none}

.sim-battle-settings>.sim-clause-group{align-items:flex-start;padding:12px 14px;gap:9px 18px}
.sim-battle-settings>.sim-clause-group>p{flex-basis:100%;margin:0 0 2px;color:var(--muted);font-size:11px;line-height:1.45}
.sim-battle-settings>.sim-cartridge-clauses{background:var(--panel)}
.sim-battle-settings>.sim-softmod-clauses{background:var(--panel-2)}
.sim-battle-settings>.sim-automation-options{background:var(--accent-soft)}
.sim-battle-settings>.sim-automation-options .sim-toggle{font-weight:700;color:var(--ink)}

.iv-evolution-checks{display:grid;gap:10px;margin-top:14px;padding:16px}
.iv-evolution-checks>.availability-heading{margin-bottom:0}
.iv-evolution-note{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.iv-evolution-checks>article{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(260px,1.25fr) minmax(210px,.9fr);gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.iv-evolution-pair{display:flex;align-items:center;gap:8px;min-width:0}
.iv-evolution-pair>a{display:flex;align-items:center;gap:6px;min-width:0;color:inherit;text-decoration:none;font-weight:700}
.iv-evolution-pair img{width:34px;height:34px;object-fit:contain;image-rendering:pixelated}
.iv-evolution-requirement{display:grid;gap:5px;min-width:0}
.iv-evolution-requirement p{margin:0;font-size:11px;line-height:1.4}
.iv-evolution-requirement code{display:block;max-width:100%;padding:6px 7px;border-radius:7px;background:var(--panel);font-size:9px;line-height:1.35;white-space:normal;overflow-wrap:anywhere}
.iv-evolution-result{display:block;font-size:12px;line-height:1.35}
.iv-evolution-result.impossible{color:var(--danger,#a22)}
.iv-evolution-checks>article>div:last-child small{display:block;margin-top:4px;color:var(--muted);font-size:10px;line-height:1.35}

@media(max-width:900px){
  .format-rule-groups{grid-template-columns:1fr}
  .iv-evolution-checks>article{grid-template-columns:1fr}
}
@media(max-width:620px){
  .format-rule-groups .format-rule-grid{grid-template-columns:1fr}
  .format-stage-list{grid-template-columns:1fr}
}

/* v0.106 public multiplayer lobby. */
#sim-room-password{text-transform:none;letter-spacing:normal;font-weight:500}
.sim-room-create-options{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:-2px 0 12px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}
.sim-room-create-options>span{color:var(--muted);font-size:11px}
.sim-lobby-directory{margin:10px 0 14px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel)}
.sim-lobby-directory>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border-bottom:1px solid var(--line);background:var(--panel-2)}
.sim-lobby-directory h3{margin:0;font-size:14px}.sim-lobby-directory header p{margin:3px 0 0;color:var(--muted);font-size:10px;line-height:1.35}
.sim-lobby-list{display:grid;max-height:280px;overflow:auto}
.sim-lobby-list>.data-missing{margin:0;padding:18px;text-align:center}
.sim-lobby-row{display:grid;grid-template-columns:minmax(120px,.65fr) minmax(190px,1.4fr) minmax(120px,.65fr) auto;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--line)}
.sim-lobby-row:last-child{border-bottom:0}.sim-lobby-row>div{min-width:0}.sim-lobby-row b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.sim-lobby-row small{display:block;margin-top:3px;color:var(--muted);font-size:9px;line-height:1.3}
.sim-lobby-room-code{display:flex!important;align-items:center;gap:6px}.sim-lobby-room-code>b{letter-spacing:.1em}.sim-lobby-room-code .badge{font-size:8px;padding:2px 5px}
@media(max-width:760px){.sim-lobby-row{grid-template-columns:minmax(0,1fr) auto}.sim-lobby-row>div:nth-child(2),.sim-lobby-row>div:nth-child(3){grid-column:1/-1}.sim-lobby-row>button{grid-column:2;grid-row:1}.sim-room-create-options{align-items:flex-start;flex-direction:column;gap:5px}}
