.character-archive { min-width:0; color:#30264f; }
.character-archive-tools { background:linear-gradient(130deg,#fff7df,#edfaff 66%,#f2e5ff); }
.character-archive .character-archive-intro { margin:0 0 18px; max-width:none; font:25px/1.4 var(--body,'VT323',monospace); }
.character-archive-filters { display:flex; flex-wrap:wrap; align-items:end; gap:14px; }
.character-archive-filters label { display:grid; gap:7px; margin:0; font:22px/1.25 var(--body,'VT323',monospace); }
.character-archive-filters label:first-child { flex:1 1 300px; }
.character-archive-filters :is(input,select) { width:100%; min-width:0; min-height:46px; font:23px/1.2 var(--body,'VT323',monospace); }
.character-archive .character-archive-counts { margin:19px 0 9px; padding:11px 13px; background:#e7dcff; border:2px solid #a389bf; font:23px/1.35 var(--body,'VT323',monospace); }
.character-archive .character-archive-help { margin:0; color:#5b456e; font:20px/1.4 var(--body,'VT323',monospace); max-width:none; }
.character-archive-groups { display:grid; gap:24px; margin-top:25px; }
.character-archive-character { min-width:0; border:4px solid #221b4d; background:#fff8e6; box-shadow:inset 2px 2px #fff,5px 5px #221b4d; }
.character-archive-character>summary { display:flex; gap:15px; align-items:center; cursor:pointer; list-style:none; padding:20px; border-bottom:3px solid transparent; background:linear-gradient(110deg,#cfefff,#ece0ff 64%,#ffe3ec); box-shadow:inset 2px 2px #fff; color:#322151; }
.character-archive-character>summary::-webkit-details-marker { display:none; }
.character-archive-character>summary::before { content:'+'; width:20px; flex:0 0 20px; font:28px/1 var(--body,'VT323',monospace); color:#694498; }
.character-archive-character[open]>summary { border-bottom-color:#796191; }
.character-archive-character[open]>summary::before { content:'−'; }
.character-archive-character>summary:focus-visible,.character-archive-entry h4>button:focus-visible { outline:3px solid #2277ff; outline-offset:4px; }
.character-archive-portrait { display:grid; place-items:center; flex:0 0 55px; width:55px; height:55px; overflow:hidden; border:3px solid #625081; box-shadow:2px 2px #b19bcb; background:#fff2c8; color:#574086; }
.character-archive-portrait img { width:100%; height:100%; object-fit:cover; }
.character-archive-identity { display:grid; gap:9px; flex:1; min-width:0; overflow-wrap:anywhere; }
.character-archive-identity>strong { font:12px/1.65 var(--pixel,'Press Start 2P',monospace); }
.character-archive-identity>span,.character-archive-identity>small { font:21px/1.2 var(--body,'VT323',monospace); }
.character-archive-identity>small { font-size:18px; color:#604c73; }
.character-archive-total { display:grid; gap:7px; justify-items:end; flex-shrink:0; padding:9px 12px; border:2px solid #ba9652; background:#fff1bd; color:#624217; }
.character-archive-total strong { font:27px/1 var(--body,'VT323',monospace); }
.character-archive-total small { font:18px/1.1 var(--body,'VT323',monospace); }
.character-archive-content { padding:22px; }
.character-archive-section-title { margin:3px 0 21px; color:#453075; font:12px/1.7 var(--pixel,'Press Start 2P',monospace); }
.character-archive-section-title>span { margin-left:6px; color:#8a3d74; }
.character-archive-roleplays { margin-top:29px; padding-top:24px; border-top:3px dashed #c098bd; }
.character-archive-roleplays:first-child { margin-top:0; padding-top:0; border-top:0; }
.character-archive-rank-section { --archive-rank:#596f89; --archive-tint:#e7eff9; margin:0 0 23px; }
.character-archive-rank-section:last-child { margin-bottom:0; }
.character-archive .rank-intermediate { --archive-rank:#367b6a; --archive-tint:#d7f2e7; }
.character-archive .rank-advanced { --archive-rank:#376ea5; --archive-tint:#dcefff; }
.character-archive .rank-saint { --archive-rank:#8052aa; --archive-tint:#edddff; }
.character-archive .rank-king { --archive-rank:#9c7024; --archive-tint:#ffedb9; }
.character-archive .rank-emperor { --archive-rank:#a2467a; --archive-tint:#ffdeee; }
.character-archive .rank-god { --archive-rank:#7058a3; --archive-tint:#e7dfff; }
.character-archive-rank-heading { display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; align-items:center; margin:0 0 14px; padding:12px 15px; border-left:5px solid var(--archive-rank,#746085); background:var(--archive-tint,#eee8f5); color:#33274f; }
.character-archive-rank-heading>span { font:10px/1.6 var(--pixel,'Press Start 2P',monospace); }
.character-archive-rank-heading>small { font:21px/1.2 var(--body,'VT323',monospace); }
.character-archive-entry-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr)); gap:16px; align-items:start; }
.character-archive-entry { min-width:0; padding:18px; border:2px solid #ab90b5; box-shadow:inset 2px 2px #fff,3px 3px #d6c2d8; background:linear-gradient(145deg,#fffdf2,#f3faff); overflow-wrap:anywhere; }
.character-archive-roleplays .character-archive-entry { background:linear-gradient(135deg,#fff6e8,#f7edff); }
.character-archive-entry.is-reversed { border-style:dashed; background:#fbf0f4; }
.character-archive-entry-meta { display:flex; flex-wrap:wrap; gap:8px; color:#634d74; font:19px/1.25 var(--body,'VT323',monospace); }
.character-archive-reversed { display:inline-block; background:#f4d6e5; border:1px solid #ae718e; padding:3px 6px; color:#722f50; }
.character-archive-entry h4 { margin:8px 0; }
.character-archive-entry h4>button { display:block; min-height:44px; width:100%; padding:7px 0; border:0; background:none; text-align:left; color:#483577; cursor:pointer; font:10px/1.8 var(--pixel,'Press Start 2P',monospace); overflow-wrap:anywhere; }
.character-archive-entry h4>button:hover { color:#235aa5; text-decoration:underline; text-underline-offset:4px; }
.character-archive-entry .character-archive-excerpt { margin:10px 0 14px; color:#473851; font:23px/1.4 var(--body,'VT323',monospace); }
.character-archive-entry .character-archive-award { margin:10px 0 0; padding:8px 11px; border-left:3px solid #c3933c; background:#fff0c1; color:#684719; font:22px/1.3 var(--body,'VT323',monospace); }
.character-archive-entry.is-reversed .character-archive-award { background:#f0e2ed; border-color:#a47c95; color:#694760; }
.character-archive-entry .character-archive-reversal-note,.character-archive .character-archive-credit-note { font:20px/1.35 var(--body,'VT323',monospace); color:#6d4264; }
.character-archive-credit-note { padding:11px 14px; margin:0 0 22px; background:#f8e4ee; border:2px dashed #c89ab7; }
.character-archive-entry .character-archive-difficulty { font:20px/1.4 var(--body,'VT323',monospace); color:#63436e; }
.character-archive-rank { display:inline-block; padding:4px 7px; margin:0 6px 3px 0; border:1px solid var(--archive-rank,#847093); background:var(--archive-tint,#eee6f5); color:#342748; }
.character-archive-empty { background:#fff7df; }
@media(max-width:700px) {
  .character-archive-filters { display:grid; grid-template-columns:1fr 1fr; }
  .character-archive-filters label:first-child { grid-column:1/-1; min-width:0; }
  .character-archive-filters .button { grid-column:1/-1; }
  .character-archive-character>summary { flex-wrap:wrap; gap:12px; padding:15px 12px; }
  .character-archive-identity>strong { font-size:10px; }
  .character-archive-total { flex-basis:100%; display:flex; justify-content:space-between; align-items:center; }
  .character-archive-portrait { flex-basis:43px; width:43px; height:43px; }
  .character-archive-content { padding:18px 13px; }
  .character-archive-entry { padding:15px; }
}
@media(max-width:400px) {
  .character-archive-filters { grid-template-columns:1fr; }
  .character-archive-filters label { min-width:0; }
  .character-archive-portrait { display:none; }
  .character-archive-total { flex-wrap:wrap; }
}
