body {
    font-size: 1em;
    font-family: "Rubik", sans-serif;
    color: #000000;
    text-decoration: none;
    background-color: #e8e8f0;
}

td {
    font-size: 0.97em;
    color: #000000;
    text-decoration: none;
}

a {
    color: #3333aa;
    text-decoration: none;
}

a:visited {
    color: #3333aa;
    text-decoration: none;
}

a:active {
    color: #aa3300;
    text-decoration: none;
}

a:hover {
    color: #000000;
    background-color: #7b7bff;
}

/* ── Header banner ── */
.site-header {
    background-color: #3333aa;
    padding: 8px;
    display: flex;
    align-items: center;
    gap: 12px;
}

.site-header img {
    width: 40px;
}

.site-header-title {
    color: #7b7bff;
    font-size: 2em;
    font-weight: bold;
}

.site-header-subtitle {
    color: #aaaaff;
    font-size: 1em;
    margin-left: 10px;
}

/* ── Appetiser / intro text ── */
.intro {
    padding: 12px 8px;
    font-size: 1.1em;
    background-color: #e8e8f0;
}

/* ── Main layout ── */
.layout {
    width: 100%;
    border-collapse: collapse;
}

.layout-sidebar {
    width: 180px;
    vertical-align: top;
    padding: 10px;
    background-color: #d0d0e8;
    border: solid 1px #3333aa;
}

.layout-spacer {
    width: 12px;
}

.layout-content {
    vertical-align: top;
    padding: 10px;
    background-color: #ffffff;
    border: solid 1px #3333aa;
}

/* ── Sidebar navigation ── */
.layout-sidebar a {
    display: block;
    padding: 2px 0;
    color: #3333aa;
    text-decoration: none;
}

.layout-sidebar a:hover {
    color: #000000;
    background-color: #7b7bff;
}

.layout-sidebar a.active {
    font-weight: bold;
    color: #000000;
}

.layout-sidebar hr {
    border: none;
    border-top: 1px solid #3333aa;
    margin: 6px 0;
}

.layout-sidebar .nav-download {
    font-weight: bold;
    font-size: 1.05em;
}

/* ── Box / bordered sections ── */
.box {
    border: solid 1px #3333aa;
}

/* ── Alerts ── */
.alert {
    padding: 0.5rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: 0;
}

.alert-secondary {
    color: #383d41;
    background-color: #d0d0e8;
    border-color: #3333aa;
}

.alert-success {
    color: #155724;
    background-color: #d4edda;
    border-color: #c3e6cb;
}

.alert-warning {
    color: #664d03;
    background-color: #f8e096;
    border-color: #f2da81;
}

.alert-danger {
    color: #721c24;
    background-color: #f8d7da;
    border-color: #f5c6cb;
}

.alert p {
    margin: 0;
    padding: 0;
}

/* ── Typewriter / code spans ── */
.typewriter {
    background-color: #3333aa;
    color: #7b7bff;
    font-family: Consolas, "Lucida Console", Monaco, monospace;
    padding-left: 0.2rem;
    padding-right: 0.2rem;
    padding-top: 0.1rem;
    padding-bottom: 0.1rem;
    white-space: pre;
    font-size: 75%;
    display: inline-block;
}

/* ── Quote ── */
.quote {
    font-size: 1em;
    font-style: italic;
    color: #000000;
    text-decoration: none;
}

/* ── Map change links ── */
.mapchange {
    cursor: pointer;
    color: #3333aa;
}

.mapchange:hover {
    color: #000000;
    background-color: #7b7bff;
}

/* ── Misc ── */
#download {
    margin-left: 10px;
}

.m10 {
    margin-left: 10px;
}