/* History — the Hub's read-only fourth moment. Module rules only; the
   tables are the shared .hub-table and keep their classes untouched.
   All four sections share one gutter, so the page reads as one column. */

.hs-container {
    display: block;
}

.hs-wrap {
    max-width: 1360px;
    padding: 4px 24px 40px;
}

.hs-wrap .table-wrap {
    margin-left: 0;
    margin-right: 0;
}

.hs-section {
    margin-bottom: 26px;
}

/* Every header states what the section is and the window it covers; the
   two figures that are easy to misread carry their caveat beside them. */
.hs-head {
    display: flex;
    align-items: baseline;
    gap: 12px;
    margin-bottom: 12px;
    padding-bottom: 9px;
    border-bottom: 1px solid var(--ink-line-strong);
}

.hs-head h3 {
    margin: 0;
    color: var(--text-primary);
    font-size: 0.86rem;
    font-weight: 700;
    letter-spacing: 0.002em;
}

.hs-sub {
    color: var(--text-tertiary);
    font-size: 0.72rem;
}

.hs-right {
    margin-left: auto;
    color: var(--text-secondary);
    font-size: 0.72rem;
    white-space: nowrap;
}

.hs-right b {
    color: var(--accent);
    font-weight: 750;
}

.hs-caveat {
    color: var(--text-tertiary);
}

.hs-none {
    margin: 0;
    color: var(--text-tertiary);
    font-size: 0.75rem;
}

/* ── 1. The chase list ── */

.hs-chase {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 1px;
    border: 1px solid var(--ink-line);
    border-radius: var(--radius-md);
    background: var(--ink-line);
    overflow: hidden;
}

.hs-chase-item {
    display: flex;
    flex-direction: column;
    gap: 7px;
    padding: 13px 15px;
    background: var(--surface-raised);
}

.hs-chase-top {
    display: flex;
    align-items: baseline;
    gap: 9px;
}

.hs-chase-time {
    color: var(--text-primary);
    font-size: 0.8rem;
    font-weight: 700;
}

.hs-chase-task {
    color: var(--text-primary);
    font-size: 0.8rem;
    font-weight: 650;
}

.hs-chase-area {
    margin-left: auto;
    color: var(--text-tertiary);
    font-size: 0.62rem;
    font-weight: 650;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    white-space: nowrap;
}

.hs-chase-players {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.hs-pl {
    padding: 2px 9px;
    border: 1px solid var(--ink-line-strong);
    border-radius: var(--radius-pill);
    color: var(--text-primary);
    font-size: 0.72rem;
}

.hs-chase-foot {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--text-tertiary);
    font-size: 0.71rem;
}

.hs-own {
    color: var(--text-secondary);
}

/* Nobody to call is the thing worth seeing, so it takes the accent. */
.hs-none-named {
    color: var(--accent);
    font-weight: 650;
}

.hs-age {
    margin-left: auto;
    color: var(--text-secondary);
}

/* ── 2 to 4. The tables ── */

/* Layout only — the tables keep their shared class. */
.hs-table {
    width: 100%;
}

.hub-table.hs-table td,
.hub-table.hs-table th {
    font-size: 0.75rem;
}

.hs-zero {
    color: var(--text-tertiary);
}

.hs-open {
    color: var(--accent);
    font-weight: 700;
}

.hs-bar-col {
    width: 200px;
}

.hs-bar {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 150px;
}

.hs-track {
    position: relative;
    flex: 1;
    height: 5px;
    border-radius: var(--radius-pill);
    background: var(--ink-line-strong);
    overflow: hidden;
}

.hs-fill {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    background: var(--text-secondary);
}

.hs-ratio {
    color: var(--text-secondary);
    font-size: 0.71rem;
    white-space: nowrap;
}

.hs-cell b {
    color: var(--text-primary);
    font-weight: 700;
}

.hs-cell i {
    margin-left: 4px;
    color: var(--text-tertiary);
    font-size: 0.68rem;
    font-style: normal;
}

.hs-inline {
    color: var(--text-tertiary);
    font-size: 0.71rem;
}

.hs-controls {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}
