:root {
    --desk: #100e0c;
    --rail: #181512;
    --line: #2c2823;
    --text: #ece6dc;
    --muted: #8d8478;
    --copper: #d06a32;
    --paper: #f6f1e8;
    --ink: #1c1915;
    --rule: #e3dacd;
    --quiet: #6f675c;
}

* { box-sizing: border-box; }

html, body { height: 100%; margin: 0; }

body {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    background: var(--desk);
    color: var(--text);
    color-scheme: dark;
    font: 15px/1.45 "Segoe UI", system-ui, sans-serif;
    overflow: hidden;
}

button, select, input { font: inherit; color: inherit; }

button:focus, select:focus, input:focus { box-shadow: none; }

:focus-visible { outline: 2px solid var(--copper); outline-offset: 2px; }

.top {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) auto;
    gap: 24px;
    align-items: end;
    padding: 14px 20px 12px;
    border-bottom: 1px solid var(--line);
}

h1 {
    margin: 0;
    font-family: Palatino, "Palatino Linotype", Georgia, serif;
    font-weight: 500;
    font-size: 26px;
}

.context {
    display: flex;
    gap: 12px;
    align-items: end;
    justify-content: flex-end;
    flex-wrap: wrap;
}

label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
}

select, .filter {
    background: #241f1a;
    color: var(--text);
    border: 1px solid #3c342c;
    border-radius: 4px;
    padding: 7px 8px;
}

select {
    min-width: 9.5rem;
    font-size: 14px;
    letter-spacing: 0;
    text-transform: none;
}

.filter::placeholder { color: var(--muted); }

.shell {
    display: grid;
    grid-template-columns: 232px minmax(240px, 300px) minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    min-height: 0;
}

#rail, .index { border-right: 1px solid var(--line); }

#rail, .index, .sheet { min-width: 0; min-height: 0; }

#rail { grid-column: 1; grid-row: 1; overflow: auto; background: var(--rail); }

.section.active { display: contents; }

.section:not(.active) { display: none; }

.section .index { grid-column: 2; grid-row: 1; }

.section .sheet { grid-column: 3; grid-row: 1; }

.index {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.list { overflow: auto; flex: 1; min-height: 0; }

.list > .hidden { display: none; }

.block { border-bottom: 1px solid var(--line); }

.block .cats { display: none; }

.block.active .cats { display: block; }

.block > button, .cats button {
    display: flex;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 0;
    padding: 11px 16px;
    cursor: pointer;
}

.block > button { font-size: 14px; }

.block > button[aria-current="page"] { color: var(--paper); background: #221c17; }

.cats button {
    justify-content: space-between;
    gap: 12px;
    color: var(--muted);
    padding: 7px 16px 7px 28px;
    font-size: 13px;
}

.cats button[aria-current="true"] { color: var(--text); background: #2a211b; }

.cats span, .count { color: var(--muted); font-variant-numeric: tabular-nums; }

.index-head {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    padding: 12px 14px 8px;
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.filter {
    display: block;
    width: calc(100% - 28px);
    margin: 0 14px 8px;
}

.list .row {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 10px;
    width: 100%;
    max-width: none;
    margin: 0;
    border: 0;
    border-left: 2px solid transparent;
    border-radius: 0;
    text-align: left;
    background: transparent;
    padding: 11px 16px;
    cursor: pointer;
}

.list .row > * {
    flex-shrink: 1;
    width: auto;
    max-width: none;
    padding: 0;
    margin: 0;
}

.list .row[aria-current="true"] { background: #221c17; border-left-color: var(--copper); }

.list .row:hover { background: #1d1915; }

.list .row img {
    width: 28px;
    height: 28px;
    flex: none;
    object-fit: contain;
}

.list .row b { font-weight: 600; }

.row.hidden { display: none; }

.sheet { overflow: auto; background: var(--paper); color: var(--ink); color-scheme: light; }

.sheet-inner { padding: 36px 48px 64px; max-width: 980px; }

.kicker {
    margin: 0;
    color: var(--copper);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    font-size: 12px;
}

.sheet h2 {
    margin: 6px 0 0;
    font-family: Palatino, "Palatino Linotype", Georgia, serif;
    font-weight: 500;
    font-size: 40px;
    line-height: 1.05;
}

.levels { display: flex; flex-wrap: wrap; margin-top: 18px; }

.levels button {
    background: transparent;
    color: #3d362e;
    border: 1px solid #cfc6b8;
    margin: 0 0 -1px -1px;
    padding: 6px 12px;
    cursor: pointer;
}

.levels button:first-child { margin-left: 0; border-radius: 4px 0 0 4px; }

.levels button:last-child { border-radius: 0 4px 4px 0; }

.levels button[aria-selected="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); position: relative; }

.stage { display: none; }

.stage.active { display: block; }

.groups {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-auto-rows: 1px;
    column-gap: 48px;
    align-items: start;
    margin-top: 32px;
}

.groups > div { display: contents; }

.groups > div > *:empty { display: none; }

.group h3 {
    margin: 0 0 4px;
    font-family: Palatino, "Palatino Linotype", Georgia, serif;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}

.group h3 span {
    margin-left: 8px;
    color: var(--quiet);
    letter-spacing: 0;
    text-transform: none;
}

.group .group { margin-top: 16px; }

.group .weapon-item:empty { display: none; }

.group dl { margin: 0; }

.group dl div {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 16px;
    padding: 7px 0;
    border-bottom: 1px solid var(--rule);
}

.group dt { color: var(--quiet); overflow-wrap: break-word; }

.group dt .or {
    margin-right: 8px;
    color: var(--ink);
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.group dt .icon {
    width: 22px;
    height: 22px;
    margin-right: 8px;
    vertical-align: middle;
    object-fit: contain;
}

.group dd { margin: 0; font-variant-numeric: tabular-nums; overflow-wrap: break-word; }

.group dl div.subhead {
    display: block;
    border-bottom: 0;
    padding: 14px 0 0;
}

.group dl div.subhead dt {
    color: var(--ink);
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.group dl + h3 { margin-top: 18px; }

.group dd.lines { white-space: pre-line; }

.group .text-warning { color: #b8611a !important; }

.group .text-secondary { color: var(--quiet) !important; }

.group .faded { color: #b3aa9e !important; }

.award {
    margin: 0;
    padding: 7px 0;
    border-bottom: 1px solid var(--rule);
}

.empty { margin: 0; padding: 48px; color: var(--quiet); }

.list .empty { padding: 16px 14px; color: var(--muted); }

@media (max-width: 1100px) {
    .top { grid-template-columns: 1fr; }

    .shell {
        grid-template-columns: 200px minmax(0, 1fr);
        grid-template-rows: minmax(0, 240px) minmax(0, 1fr);
    }

    .section .index { grid-column: 2; grid-row: 1; border-bottom: 1px solid var(--line); }

    .section .sheet { grid-column: 1 / -1; grid-row: 2; }

    #rail { grid-row: 1; }

    .groups { grid-template-columns: 1fr; }

    .sheet-inner { padding: 24px; }
}
