:root { color-scheme: dark; font-family: Inter, ui-sans-serif, system-ui, sans-serif; background: #050b0a; color: #d7fff1; --ink: #d7fff1; --muted: #82a99d; --line: #1c5549; --glow: #61ffd0; --green: #149b78; }
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: radial-gradient(ellipse at 78% 8%, #164e40 0%, #0b241f 22%, transparent 52%), radial-gradient(ellipse at 10% 100%, #102d27 0%, transparent 45%), #050b0a; overflow-x: hidden; }
body::before { content: ''; position: fixed; inset: 0; pointer-events: none; opacity: .07; background: repeating-linear-gradient(0deg, transparent 0, transparent 3px, #7fffd4 4px); mix-blend-mode: screen; z-index: 20; }
.matrix-rain { position: fixed; inset: 0; z-index: -1; opacity: .07; color: #7fffd4; font: 700 1.1rem/2.2 monospace; letter-spacing: .8rem; word-spacing: 1.3rem; transform: rotate(-8deg) scale(1.2); pointer-events: none; }
.site-header { position: relative; display: flex; justify-content: space-between; align-items: center; gap: 2rem; padding: 1.2rem 5vw; border-bottom: 1px solid #1b5b4d; background: #050b0acc; backdrop-filter: blur(14px); z-index: 2; }.site-header::after { content: 'SECURE NODE / ONLINE'; position: absolute; right: 5vw; bottom: -.55rem; padding: .15rem .4rem; color: #61ffd0; background: #07110f; font: .56rem monospace; letter-spacing: .1em; }
.brand, a { color: #7fffd4; text-decoration: none; }.brand { display: inline-flex; align-items: center; gap: .6rem; font: 800 1rem monospace; letter-spacing: .18em; }.brand::before { content: '◈'; color: #61ffd0; text-shadow: 0 0 14px #61ffd0; }
nav { display: flex; gap: .35rem; flex-wrap: wrap; }nav a { padding: .45rem .7rem; border: 1px solid transparent; color: #a7d9ca; font: .73rem monospace; letter-spacing: .04em; }nav a:hover, nav a:focus-visible { border-color: #2d846f; background: #123a31; color: #fff; }
.page-shell { position: relative; max-width: 1180px; margin: 0 auto; padding: 6rem 5vw 8rem; }
.hero { max-width: 1100px; }
.hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, .8fr); align-items: center; gap: 3rem; }
.eyebrow { color: #43d7b0; letter-spacing: .16em; font-size: .75rem; }
h1 { max-width: 11ch; font-size: clamp(3rem, 8vw, 7rem); line-height: .88; letter-spacing: -.06em; margin: 1rem 0; text-wrap: balance; }h2 { letter-spacing: -.03em; }p { line-height: 1.65; }
.accent { color: #7fffd4; text-shadow: 0 0 24px #38b996; }
.lede { max-width: 52ch; font-size: 1.25rem; color: #b6dacf; }
.hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 2rem; }
.button, .panel { border: 1px solid #38b996; border-radius: .35rem; padding: .8rem 1rem; background: linear-gradient(135deg, #113d32, #092019); box-shadow: 0 12px 30px #0003, inset 0 1px #ffffff0b; }.button { display: inline-flex; align-items: center; gap: .5rem; font: 700 .75rem monospace; letter-spacing: .04em; text-transform: uppercase; }
.button.secondary { border-color: #356f63; color: #d7fff1; }
.button:hover, .button:focus-visible { background: #16473c; box-shadow: 0 0 0 .2rem #38b99644; }
.glyph-orbit { position: relative; min-height: 360px; display: grid; place-items: center; filter: drop-shadow(0 0 28px #27c79a33); }
.orbit { position: absolute; border: 1px solid #38b99688; border-radius: 50%; transform: rotate(-18deg); }
.orbit-one { width: 310px; height: 180px; }
.orbit-two { width: 250px; height: 310px; transform: rotate(48deg); }
.orbit-core { display: grid; place-items: center; width: 130px; height: 130px; border: 1px solid #7fffd4; border-radius: 50%; color: #7fffd4; text-align: center; font: 700 1.2rem/1.1 monospace; box-shadow: 0 0 45px #38b99666, inset 0 0 30px #38b99633; }
.orbit-core small { font-size: .48rem; letter-spacing: .1em; }
.glyph { position: absolute; color: #7fffd4; font: .72rem monospace; letter-spacing: .08em; background: #07110fcc; padding: .25rem .4rem; border: 1px solid #38b99666; }
.glyph-a { top: 12%; right: 2%; }.glyph-b { bottom: 16%; left: 4%; }.glyph-c { top: 47%; right: -5%; }
.dashboard-strip { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 5rem; }
.dashboard-strip article { border-top: 1px solid #38b996; padding: 1rem 0; }.dashboard-strip strong { display: block; margin: .5rem 0; color: #7fffd4; font: 700 1.4rem monospace; }.dashboard-strip p { color: #8fb7aa; margin: 0; }.metric-label { color: #43d7b0; font: .7rem monospace; letter-spacing: .12em; }
.site-footer { display: flex; justify-content: space-between; gap: 1rem; padding: 1rem 5vw; border-top: 1px solid #1b5b4d; color: #6f9e91; font: .65rem monospace; letter-spacing: .04em; background: #050b0acc; }
.library-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; margin-top: 2rem; }
.panel { display: block; min-height: 140px; }
.section-heading { max-width: 760px; }.section-heading h1 { margin-bottom: .8rem; }
.toolbar { display: flex; align-items: end; gap: 1rem; margin: 2.5rem 0 1rem; flex-wrap: wrap; }.search-field { flex: 1; min-width: 240px; }.search-field input { margin-top: .4rem; }.chip, .status-live { display: inline-block; padding: .35rem .55rem; border: 1px solid #356f63; border-radius: 999px; color: #8fb7aa; font: .65rem monospace; letter-spacing: .08em; }.feature-grid { margin-top: 1rem; }.feature-panel { position: relative; min-height: 205px; transition: transform .2s ease, border-color .2s ease; }.feature-panel:hover { transform: translateY(-3px); border-color: #7fffd4; }.panel-kicker, .section-label { display: block; color: #43d7b0; font: .65rem monospace; letter-spacing: .12em; }.feature-panel h2 { margin: 1.2rem 0 .5rem; }.feature-panel p { color: #9ac2b5; }.panel-link { display: inline-block; margin-top: 1rem; color: #7fffd4; font: .75rem monospace; }.split-feed { display: grid; grid-template-columns: 1.5fr 1fr; gap: 2rem; margin-top: 4rem; }.feed-item { display: grid; grid-template-columns: auto 1fr auto; gap: .8rem; align-items: start; padding: 1rem 0; border-bottom: 1px solid #1b5b4d; }.feed-item strong, .feed-item p { display: block; margin: 0; }.feed-item p { color: #8fb7aa; margin-top: .25rem; }.feed-item time { color: #6f9e91; font: .65rem monospace; }.status-dot { width: .55rem; height: .55rem; margin-top: .35rem; border-radius: 50%; background: #7fffd4; box-shadow: 0 0 12px #7fffd4; }.status-dot.muted { background: #356f63; box-shadow: none; }.side-note { align-self: start; border-left: 2px solid #38b996; padding: 1rem 1.2rem; background: #0a211d99; color: #9ac2b5; }.console-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 3rem; }.console-card { min-height: 190px; }.console-card strong { display: block; margin: 1.5rem 0 .5rem; font: 1.35rem monospace; color: #d7fff1; }.console-card p { color: #9ac2b5; }.empty-state { max-width: 620px; margin-top: 3rem; padding: 3rem; text-align: center; border: 1px dashed #356f63; background: #0a211d99; }.empty-glyph { margin: 0 auto 1.5rem; width: 76px; height: 76px; display: grid; place-items: center; border: 1px solid #38b996; border-radius: 50%; color: #7fffd4; font: 1.1rem monospace; }
.form-card { max-width: 34rem; padding: 2rem; border: 1px solid #1b5b4d; background: #0a211d; border-radius: .5rem; }
form { display: grid; gap: 1rem; }
label { display: grid; gap: .4rem; color: #b6dacf; }
input { width: 100%; padding: .75rem; border: 1px solid #356f63; border-radius: .35rem; background: #07110f; color: #d7fff1; }
button { font: inherit; cursor: pointer; }
@media (max-width: 700px) { .site-header, .site-footer { align-items: flex-start; flex-direction: column; } .page-shell { padding-top: 3rem; } .hero-grid { grid-template-columns: 1fr; } .glyph-orbit { min-height: 290px; transform: scale(.88); transform-origin: top center; margin-bottom: -2rem; } .dashboard-strip, .console-grid, .split-feed { grid-template-columns: 1fr; margin-top: 2rem; } .empty-state { padding: 2rem 1rem; } }
.form-error { padding: .7rem; border-left: 2px solid #ff7d8a; background: #4a182266; color: #ffb4bc; }.admin-table { margin-top: 2rem; overflow-x: auto; }.admin-table table { width: 100%; margin-top: 1rem; border-collapse: collapse; }.admin-table th, .admin-table td { padding: .7rem; border-bottom: 1px solid #1b5b4d; text-align: left; color: #a7d9ca; }.admin-table th { color: #61ffd0; font: .7rem monospace; letter-spacing: .08em; }
.form-success { padding: .7rem; border-left: 2px solid #61ffd0; background: #123a31; color: #b8ffe8; }.character-library { margin-top: 2rem; }.upload-form { display: flex; align-items: end; gap: 1rem; margin: 1.2rem 0 2rem; }.upload-form label { flex: 1; }.upload-form input[type=file] { padding: .55rem; }.document-list { display: grid; gap: .5rem; }.document-row { display: flex; justify-content: space-between; gap: 1rem; padding: 1rem 0; border-top: 1px solid #1b5b4d; }.document-row strong, .document-row span { display: block; }.document-row span, .document-date, .muted { color: #8fb7aa; font-size: .8rem; }.document-date { white-space: nowrap; }
.site-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 3rem; }.site-card { min-height: 240px; padding: 1.5rem; border: 1px solid #2d846f; background: linear-gradient(150deg, #113d32, #071713); }.site-card h2 { margin: 2rem 0 .5rem; color: #e2fff6; }.site-card p { color: #9ac2b5; }.site-card:hover { border-color: #61ffd0; transform: translateY(-3px); }.site-planned { border-color: #376b60; opacity: .85; }.site-code { display: block; margin-top: 2rem; color: #61ffd0; font: .65rem monospace; letter-spacing: .1em; }.site-note { margin-top: 2rem; max-width: 650px; }.site-note p { color: #9ac2b5; }
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; } }
@media (max-width: 700px) { .upload-form, .document-row { align-items: stretch; flex-direction: column; } }
/* Keep state-changing navigation controls visually consistent with links. */
.nav-form { display: inline; margin: 0; }
.nav-link { appearance: none; background: none; border: 0; color: inherit; cursor: pointer; font: inherit; padding: 0; }

/* Admin topic navigation */
.admin-menu {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    margin: 1.5rem 0;
    padding: .75rem;
}
.admin-menu a {
    align-items: center;
    border: 1px solid rgba(109, 255, 190, .28);
    color: inherit;
    display: inline-flex;
    gap: .45rem;
    padding: .65rem .85rem;
    text-decoration: none;
}
.admin-menu a:hover,
.admin-menu a.active {
    background: rgba(109, 255, 190, .12);
    border-color: var(--accent, #6dffbe);
    color: var(--accent, #6dffbe);
}
@media (max-width: 640px) {
    .admin-menu a { flex: 1 1 40%; justify-content: center; }
}
.form-warning { border: 1px solid rgba(255, 193, 7, .55); color: #ffd66d; padding: .75rem 1rem; }
.account-page { max-width: 1100px; margin: 0 auto; }
.account-hero { margin-bottom: 2rem; }
.account-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.account-card { min-height: 100%; padding: 1.35rem; }
.account-card-heading { align-items: center; display: flex; justify-content: space-between; gap: 1rem; }
.account-card h2, .account-card h3 { margin-top: .45rem; }
.account-section { margin-top: 3rem; }
.account-section-heading { margin-bottom: 1rem; }
.account-section-heading h2 { margin: .25rem 0; }
.account-alert { border-color: rgba(109, 255, 190, .5); margin-bottom: 1rem; }
/* Renders as a fixed-position overlay (not inline in document flow) so a
   freshly issued one-time secret - an API token or a set of MFA recovery
   codes - is immediately visible front-and-center regardless of scroll
   position after the triggering form's POST redirects back here. No JS
   required: the panel is simply always rendered this way whenever its
   one-time flash is present. */
.secret-overlay { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; padding: 1.5rem; background: rgba(2, 8, 6, .82); backdrop-filter: blur(3px); }
.secret-overlay-card { max-width: 34rem; width: 100%; max-height: 90vh; overflow-y: auto; border-color: var(--glow, #61ffd0); box-shadow: 0 25px 60px #000a, 0 0 0 .2rem color-mix(in srgb, var(--glow, #61ffd0) 35%, transparent); }
.secret-overlay-card .button { margin-top: 1rem; }
.token-name { display: block; margin: .15rem 0; }
.status-dot { border-radius: 50%; display: inline-block; height: .65rem; width: .65rem; }
.status-dot--active { background: var(--accent, #6dffbe); box-shadow: 0 0 12px var(--accent, #6dffbe); }
.status-line { color: var(--accent, #6dffbe); font-size: .9rem; }
.status-line--warning { color: #ffd66d; }
.muted, .account-card small { color: rgba(255, 255, 255, .62); }
.stacked-form { display: grid; gap: .8rem; margin-top: 1rem; }
.stacked-form label { display: grid; gap: .35rem; }
.stacked-form fieldset { border: 1px solid rgba(255, 255, 255, .15); border-radius: 4px; padding: .8rem; display: grid; gap: .4rem; }
.stacked-form legend { padding: 0 .3rem; font-size: .85rem; }
.grant-permissions-row { display: flex !important; flex-direction: row !important; flex-wrap: wrap; align-items: center; gap: 1.5rem; margin-top: .4rem; }
.grant-permissions-row .checkbox-label { display: inline-flex !important; flex-direction: row !important; }
.checkbox-label { display: inline-flex; flex-direction: row; align-items: center; gap: .4rem; white-space: nowrap; width: auto; }
.security-badge { border: 1px solid rgba(109, 255, 190, .35); color: var(--accent, #6dffbe); font-size: .7rem; letter-spacing: .08em; padding: .25rem .45rem; }
.recovery-codes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; margin-top: 1rem; }
.recovery-codes code, .token-display { background: rgba(0, 0, 0, .28); display: block; padding: .55rem; word-break: break-all; }
.account-token-list ul { list-style: none; margin: 0; padding: 0; }
.account-token-list li { align-items: center; border-bottom: 1px solid rgba(255, 255, 255, .1); display: flex; justify-content: space-between; gap: 1rem; padding: .85rem 0; }
.account-token-list li:last-child { border-bottom: 0; }
.account-token-list small { display: block; margin-top: .25rem; }
.button--quiet { background: transparent; border-color: rgba(255, 255, 255, .25); }
.button--danger { background: linear-gradient(135deg, #4d1414, #200909); border-color: #b93838; color: #ffb8b8; }
.button--danger:disabled { opacity: .45; cursor: not-allowed; }
.document-row { flex-wrap: wrap; align-items: center; }
.document-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.revision-row strong { display: flex; align-items: center; gap: .5rem; font-size: .85rem; }
.quota-panel { margin-top: 2rem; }
.quota-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.2rem; margin-top: .8rem; }
.quota-item strong { display: block; margin: .2rem 0 .5rem; font: 1.1rem monospace; color: #d7fff1; }
.quota-bar { height: .4rem; border-radius: 999px; background: #0a211d; overflow: hidden; }
.quota-bar-fill { height: 100%; background: linear-gradient(90deg, #38b996, #7fffd4); }
.section-heading--spaced { margin-top: 4rem; }
.permission-chip { border-bottom: 1px dotted #8fb7aa; cursor: help; text-transform: capitalize; }
.checkbox-label[title] { cursor: help; }
@media (max-width: 720px) {
    .account-grid { grid-template-columns: 1fr; }
    .recovery-codes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .account-token-list li { align-items: flex-start; flex-direction: column; }
}

/* DSA (Das Schwarze Auge) site theme - a warm guild-hall/parchment identity
   in place of RunnersPoint's dark cyberpunk one. Scoped under body.theme-dsa
   rather than rewritten as shared CSS custom properties, since most colors
   above are hardcoded per-selector rather than variable-driven - this keeps
   the theme addition isolated and low-risk against the existing styles. */
body.theme-dsa { background: radial-gradient(ellipse at 78% 8%, #4a3418 0%, #241a0d 22%, transparent 52%), radial-gradient(ellipse at 10% 100%, #2d2210 0%, transparent 45%), #100c06; --ink: #f2e4c8; --muted: #b89a6a; --line: #6b4f22; --glow: #e0a83f; --green: #b8862f; color: #f2e4c8; }
body.theme-dsa::before { display: none; }
body.theme-dsa .parchment-grain { position: fixed; inset: 0; z-index: -1; opacity: .08; background: repeating-linear-gradient(115deg, transparent 0, transparent 3px, #e0c98f 4px), repeating-linear-gradient(25deg, transparent 0, transparent 5px, #e0c98f66 6px); pointer-events: none; }
body.theme-dsa .site-header { border-bottom-color: #6b4f22; background: #100c06cc; }
body.theme-dsa .site-header::after { content: 'GUILD HALL / OPEN'; color: #e0a83f; background: #1b1409; }
body.theme-dsa .brand, body.theme-dsa a { color: #e8c988; }
body.theme-dsa .brand::before { content: '⚜'; color: #e0a83f; text-shadow: 0 0 14px #e0a83f; }
body.theme-dsa nav a { color: #c9a86a; }
body.theme-dsa nav a:hover, body.theme-dsa nav a:focus-visible { border-color: #8a6a2f; background: #362810; color: #fff3da; }
body.theme-dsa .eyebrow, body.theme-dsa .metric-label, body.theme-dsa .panel-kicker, body.theme-dsa .section-label { color: #d1a959; }
body.theme-dsa .accent { color: #f0c878; text-shadow: 0 0 24px #b8862f; }
body.theme-dsa .lede, body.theme-dsa p { color: #d9c199; }
body.theme-dsa .button, body.theme-dsa .panel { border-color: #8a6a2f; background: linear-gradient(135deg, #3a2a10, #1b1409); }
body.theme-dsa .button.secondary { border-color: #6b4f22; color: #f2e4c8; }
body.theme-dsa .button:hover, body.theme-dsa .button:focus-visible { background: #4a3616; box-shadow: 0 0 0 .2rem #b8862f44; }
body.theme-dsa .orbit { border-color: #b8862f88; }
body.theme-dsa .orbit-core { border-color: #e0a83f; color: #e0a83f; box-shadow: 0 0 45px #b8862f66, inset 0 0 30px #b8862f33; }
body.theme-dsa .glyph { color: #e0a83f; background: #1b1409cc; border-color: #b8862f66; }
body.theme-dsa .dashboard-strip article { border-top-color: #8a6a2f; }
body.theme-dsa .dashboard-strip strong { color: #e0a83f; }
body.theme-dsa .dashboard-strip p { color: #c2a878; }
body.theme-dsa .site-footer { border-top-color: #6b4f22; color: #b39a6c; background: #100c06cc; }
body.theme-dsa .form-card { border-color: #6b4f22; background: #1b1409; }
body.theme-dsa label { color: #d9c199; }
body.theme-dsa input { border-color: #6b4f22; background: #100c06; color: #f2e4c8; }
body.theme-dsa .site-card { border-color: #8a6a2f; background: linear-gradient(150deg, #3a2a10, #1b1409); }
body.theme-dsa .site-card h2 { color: #fff3da; }
body.theme-dsa .site-card p { color: #c2a878; }
body.theme-dsa .site-card:hover { border-color: #e0a83f; }
body.theme-dsa .site-card .site-code { color: #e0a83f; }

/* Site picker page itself always renders in the default (RunnersPoint)
   theme - this hints at the DSA identity on its card without requiring
   body.theme-dsa, so the choice is visible before you click through. */
.site-card.theme-dsa { border-color: #8a6a2f; background: linear-gradient(150deg, #3a2a10, #1b1409); }
.site-card.theme-dsa h2 { color: #fff3da; }
.site-card.theme-dsa p { color: #c2a878; }
.site-card.theme-dsa:hover { border-color: #e0a83f; }
.site-card.theme-dsa .site-code { color: #e0a83f; }

/* AdventureHub (hub) theme has since been redesigned as a light "platform"
   identity - see the .theme-hub rules under the "Print-catalog" comment
   further down for the current colors. This dark blue/violet version is
   gone; it used to win over the light one by CSS specificity accident
   (body.theme-hub .site-header beat .theme-hub .site-header), which is
   exactly the bug that made the header stay dark navy instead of white
   once platform pages started forcing theme-hub site-wide. */

/* Site picker page itself always renders in the default theme - same
   reasoning as .site-card.theme-dsa above. */
.site-card.theme-hub { border-color: #4f5fc9; background: linear-gradient(150deg, #1c2160, #11143a); }
.site-card.theme-hub h2 { color: #f0f2ff; }
.site-card.theme-hub p { color: #a9b0e8; }
.site-card.theme-hub:hover { border-color: #8b9bff; }
.site-card.theme-hub .site-code { color: #8b9bff; }

/* Private library file explorer - a nested, drag-and-drop folder tree
   (public/scripts/library-explorer.js) built on the same per-document/
   per-folder form endpoints the no-JS fallback controls already use. Uses
   the theme custom properties (--ink/--muted/--line/--glow/--green) so it
   re-themes for DSA/hub automatically without a separate override block. */
.folder-create { margin: 1rem 0; }
.folder-create summary { cursor: pointer; list-style: none; }
.folder-create summary::-webkit-details-marker { display: none; }
.folder-create[open] summary { margin-bottom: 1rem; }
.file-explorer { margin-top: .5rem; }
.folder-tree, .document-files { list-style: none; margin: 0; padding: 0; }
.folder-tree { margin-left: 1.2rem; }
.folder-node { margin: .15rem 0; }
.folder-row { display: flex; align-items: center; gap: .5rem; padding: .5rem .6rem; border: 1px solid transparent; border-radius: .35rem; cursor: grab; }
.folder-row:hover { border-color: var(--line); background: color-mix(in srgb, var(--line) 25%, transparent); }
.folder-row.drop-target-hover { border-color: var(--glow); background: color-mix(in srgb, var(--glow) 18%, transparent); box-shadow: 0 0 0 .15rem color-mix(in srgb, var(--glow) 45%, transparent); }
.folder-toggle { appearance: none; background: none; border: 0; color: var(--muted); cursor: pointer; font: inherit; padding: 0 .2rem; }
.folder-icon { opacity: .85; }
.folder-name { flex: 1; font-weight: 600; }
.folder-count { color: var(--muted); font: .7rem monospace; }
.folder-inline-actions { display: flex; align-items: center; gap: .35rem; }
.folder-inline-actions form { display: inline; margin: 0; }
.folder-rename { position: relative; }
.folder-rename summary { list-style: none; }
.folder-rename summary::-webkit-details-marker { display: none; }
.folder-rename[open] summary { color: var(--glow); }
.folder-rename-form { position: absolute; z-index: 5; top: 100%; right: 0; display: flex; gap: .35rem; padding: .6rem; margin-top: .25rem; border: 1px solid var(--line); border-radius: .35rem; background: #07110f; white-space: nowrap; }
.folder-rename-form input[type=text] { width: 12rem; }
.icon-button { appearance: none; background: none; border: 1px solid transparent; border-radius: .35rem; color: var(--muted); cursor: pointer; font: inherit; padding: .2rem .4rem; }
.icon-button:hover { border-color: var(--line); color: var(--ink); }
.folder-contents { margin-left: .6rem; padding-left: .6rem; border-left: 1px dashed var(--line); }
.document-files { margin-left: 1.8rem; display: grid; gap: .35rem; padding: .3rem 0; }
.document-files--root { margin-left: 0; min-height: 3rem; border-radius: .35rem; }
.document-file { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1rem; padding: .55rem .6rem; border: 1px solid var(--line); border-radius: .35rem; background: #07110f55; cursor: grab; }
.document-file:active { cursor: grabbing; }
.document-file.drop-target-hover, .document-files--root.drop-target-hover { border-color: var(--glow); box-shadow: 0 0 0 .15rem color-mix(in srgb, var(--glow) 45%, transparent); }
.file-icon { opacity: .85; }
.file-name { font-weight: 600; }
.file-meta, .file-date { color: var(--muted); font-size: .78rem; }
.file-date { margin-left: auto; white-space: nowrap; }
.file-actions { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; width: 100%; margin-top: .3rem; }
.file-move-select { display: inline-flex; gap: .35rem; margin: 0; }
.file-move-select select { padding: .4rem; }
@media (max-width: 700px) {
    .folder-tree, .document-files { margin-left: .8rem; }
    .file-actions { justify-content: flex-start; }
}

/* Operations-center refresh: hierarchy first, atmosphere second. */
.site-header { backdrop-filter: blur(14px); }
.site-header-inner { align-items: center; display: flex; justify-content: space-between; gap: 2rem; margin: 0 auto; max-width: 1240px; width: 100%; }
.brand { align-items: center; display: inline-flex; flex-wrap: wrap; gap: .55rem; line-height: 1; }
.brand small { flex-basis: 100%; color: var(--muted, #6f9e91); font: .52rem monospace; letter-spacing: .16em; margin-left: 1.65rem; margin-top: -.2rem; }
.brand-mark { color: var(--glow, #7fffd4); font-size: .8rem; text-shadow: 0 0 14px currentColor; }
.ops-hero { align-items: center; display: grid; gap: 3rem; grid-template-columns: minmax(0, .85fr) minmax(420px, 1.15fr); min-height: 600px; padding: 4rem 0 3rem; }
.ops-copy { position: relative; z-index: 1; }
.ops-copy h1 { font-size: clamp(3.8rem, 8vw, 7.5rem); letter-spacing: -.08em; line-height: .88; margin: 1.2rem 0 1.5rem; max-width: 8ch; }
.ops-copy .lede { max-width: 34rem; }
.signal-live { background: var(--glow, #7fffd4); border-radius: 50%; box-shadow: 0 0 12px var(--glow, #7fffd4); display: inline-block; height: .45rem; margin-right: .3rem; width: .45rem; }
.ops-meta { color: var(--muted, #6f9e91); display: flex; flex-wrap: wrap; font: .62rem monospace; gap: 1.2rem; letter-spacing: .08em; margin-top: 2rem; }
.network-stage { min-height: 520px; overflow: hidden; position: relative; }
.network-stage::before, .network-stage::after { display: none; }
.network-globe { background: transparent; border: 1px solid color-mix(in srgb, var(--glow, #7fffd4) 72%, transparent); border-radius: 50%; box-shadow: 0 0 30px color-mix(in srgb, var(--glow, #7fffd4) 18%, transparent); height: min(38vw, 490px); margin: 1rem auto; max-height: 490px; max-width: 490px; min-height: 340px; min-width: 340px; overflow: hidden; position: relative; transform: rotate(-8deg); width: min(38vw, 490px); }
.network-globe::before { display: none; }
.network-globe::after { display: none; }
.globe-core { align-items: center; border: 1px solid var(--glow, #7fffd4); border-radius: 50%; box-shadow: 0 0 36px color-mix(in srgb, var(--glow, #7fffd4) 40%, transparent), inset 0 0 25px color-mix(in srgb, var(--glow, #7fffd4) 35%, transparent); color: var(--glow, #7fffd4); display: flex; flex-direction: column; font: 2rem monospace; height: 8rem; justify-content: center; left: calc(50% - 4rem); position: absolute; text-align: center; top: calc(50% - 4rem); transform: rotate(8deg); width: 8rem; }
.globe-core small { font-size: .5rem; letter-spacing: .16em; line-height: 1.5; margin-top: .4rem; }
.globe-code { color: color-mix(in srgb, var(--glow, #7fffd4) 68%, transparent); font: .58rem monospace; left: 9%; letter-spacing: .08em; position: absolute; transform: rotate(8deg); white-space: nowrap; }
.globe-code-a { top: 27%; }.globe-code-b { bottom: 25%; left: 19%; }
.marker { align-items: center; background: var(--glow, #7fffd4); box-shadow: 0 0 0 .3rem color-mix(in srgb, var(--glow, #7fffd4) 18%, transparent), 0 0 18px var(--glow, #7fffd4); color: #06110f; display: flex; font: .5rem monospace; height: 1.1rem; justify-content: center; position: absolute; transform: rotate(8deg); width: 1.1rem; z-index: 2; }
.marker-run { border-radius: 50%; }.marker-news { background: #f4bc67; box-shadow: 0 0 0 .3rem #f4bc6733, 0 0 18px #f4bc67; transform: rotate(45deg); }.marker-news::first-letter { transform: rotate(-45deg); }
.marker-one { left: 29%; top: 37%; }.marker-two { bottom: 31%; right: 22%; }.marker-three { right: 28%; top: 24%; }
.signals-layout { border-top: 1px solid var(--line, #1b5b4d); display: grid; gap: 4rem; grid-template-columns: 1.3fr .7fr; padding: 3.5rem 0; }
.signal-feed h2 { font-size: clamp(2rem, 4vw, 3.5rem); margin: .4rem 0; }.signal-list { list-style: none; margin: 2rem 0 0; padding: 0; }.signal-list li { align-items: center; border-bottom: 1px solid var(--line, #1b5b4d); display: grid; gap: 1rem; grid-template-columns: 2rem 1fr auto; padding: 1rem 0; }.signal-list strong, .signal-list small { display: block; }.signal-list small { color: var(--muted, #6f9e91); margin-top: .25rem; }.signal-list b { color: var(--muted, #6f9e91); font: .58rem monospace; letter-spacing: .12em; }.signal-icon { align-items: center; border: 1px solid var(--glow, #7fffd4); border-radius: 50%; color: var(--glow, #7fffd4); display: inline-flex; font-size: 1.2rem; height: 1.7rem; justify-content: center; width: 1.7rem; }.signal-icon--news { border-color: #f4bc67; color: #f4bc67; transform: rotate(45deg); }.signal-icon--node { border-radius: 0; }.signal-console { align-self: start; border-left: 1px solid var(--glow, #7fffd4); padding: 1.5rem 0 1.5rem 2rem; }.signal-console h3 { font-size: 1.5rem; margin: .8rem 0 1.2rem; }.signal-console a { border-top: 1px solid var(--line, #1b5b4d); color: var(--ink, #d7fff1); display: flex; justify-content: space-between; padding: .9rem 0; text-decoration: none; }.signal-console a:hover { color: var(--glow, #7fffd4); }
@media (max-width: 820px) { .site-header-inner { align-items: flex-start; flex-direction: column; gap: 1rem; }.site-header nav { width: 100%; }.ops-hero { grid-template-columns: 1fr; padding-top: 3rem; }.network-stage { min-height: 390px; }.signals-layout { grid-template-columns: 1fr; gap: 2rem; }.signal-console { border-left: 0; border-top: 1px solid var(--glow, #7fffd4); padding: 1.5rem 0; } }
@keyframes globe-surface { from { background-position: 0 0, 0 0; transform: rotate(12deg) translateX(-6%); } to { background-position: 110px 0, -80px 0; transform: rotate(12deg) translateX(6%); } }
@keyframes globe-meridian { 0%, 100% { transform: translateX(-50%) scaleX(.18); opacity: .35; } 50% { transform: translateX(-50%) scaleX(1); opacity: .8; } }
@media (prefers-reduced-motion: reduce) { .network-globe, .network-globe::before, .network-globe::after { animation: none; } .network-globe { transform: none; } }

/* DSA discovery adapter: town atmosphere with a live guild ledger. */
.ops-hero { grid-template-columns: minmax(0, .7fr) minmax(480px, 1.3fr); min-height: 700px; }
.network-stage { min-height: 650px; overflow: visible; }
.network-globe { isolation: isolate; height: min(54vw, 650px); max-height: 650px; max-width: 650px; min-height: 440px; min-width: 440px; width: min(54vw, 650px); }
.network-globe::before { opacity: .18; }
.matrix-glyph-field { border-radius: 50%; inset: 0; overflow: hidden; position: absolute; z-index: 0; }
.matrix-glyph-canvas { border-radius: 50%; inset: 0; pointer-events: none; position: absolute; z-index: 1; }
.matrix-glyph-canvas--error { display: none; }
.network-globe { cursor: grab; touch-action: none; }.network-globe.is-dragging { cursor: grabbing; }
.matrix-glyph-field::after { background: radial-gradient(circle at 35% 30%, transparent 0 35%, #06110f12 62%, #020706cc 100%); content: ''; inset: 0; pointer-events: none; position: absolute; }
.matrix-glyph-field span { font: 600 clamp(.42rem, .72vw, .65rem)/1 monospace; position: absolute; text-shadow: 0 0 7px currentColor; white-space: nowrap; }
.glyph-layer-1 { filter: blur(.15px); }.glyph-layer-2 { filter: blur(.35px); transform-origin: center; }
.matrix-glyph-field--error { align-items: center; color: #2f8c76; display: flex; font: .55rem monospace; justify-content: center; letter-spacing: .12em; }
.glyph-ocean { color: #1e6a5a; }.glyph-land { color: #a5ffe4; font-weight: 800 !important; text-shadow: 0 0 9px #61ffd0, 0 0 18px #38b996; }
.globe-core, .globe-code { z-index: 10; }.marker { align-items: center; animation: marker-pulse 2.4s ease-in-out infinite; appearance: none; background: transparent; border: 0; color: transparent; cursor: pointer; display: grid; height: 1.4rem; left: 50%; padding: 0; pointer-events: auto; position: absolute; top: 50%; transform: translate(-50%, -50%); width: 1.4rem; z-index: 20; }.marker b { align-items: center; background: var(--glow, #7fffd4); border-radius: 50%; box-shadow: 0 0 0 .3rem color-mix(in srgb, var(--glow, #7fffd4) 18%, transparent), 0 0 18px var(--glow, #7fffd4); color: #06110f; display: flex; font: .5rem monospace; height: 1.1rem; justify-content: center; pointer-events: none; width: 1.1rem; }.marker-news b { background: #f4bc67; border-radius: 0; box-shadow: 0 0 0 .3rem #f4bc6733, 0 0 18px #f4bc67; transform: rotate(45deg); }.marker:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }.marker-tag { background: #06110fee; border: 1px solid var(--glow, #7fffd4); color: var(--ink, #d7fff1); display: none; font: .55rem monospace; left: 1.5rem; padding: .35rem .5rem; position: absolute; top: .1rem; white-space: nowrap; }.marker:hover .marker-tag, .marker:focus-visible .marker-tag { display: block; }
@keyframes marker-pulse { 0%,100% { filter: brightness(.9); } 50% { filter: brightness(1.35); } }
@media (max-width: 820px) { .ops-hero { grid-template-columns: 1fr; }.network-globe { height: min(calc(100vw - 2rem),560px); min-height: 0; min-width: 0; width: min(calc(100vw - 2rem),560px); }.network-stage { min-height: min(calc(100vw + 3rem),580px); overflow: visible; } }

/* Matrix globe: a live glyph sphere with readable run/news anchors. */
.guild-hero { align-items: center; display: grid; gap: 2rem; grid-template-columns: .85fr 1.15fr; min-height: 600px; padding: 4rem 0 3rem; }.guild-copy { position: relative; z-index: 1; }.guild-copy h1 { font-size: clamp(3.5rem, 7vw, 6.8rem); letter-spacing: -.08em; line-height: .88; margin: 1.2rem 0 1.5rem; max-width: 8ch; }.guild-copy .lede { max-width: 34rem; }.guild-lantern { background: #f0c878; border-radius: 50%; box-shadow: 0 0 14px #f0c878; display: inline-block; height: .5rem; margin-right: .35rem; width: .5rem; }.guild-meta { color: var(--muted, #b89a6a); display: flex; flex-wrap: wrap; font: .62rem monospace; gap: 1.2rem; letter-spacing: .08em; margin-top: 2rem; }
.town-scene { background: linear-gradient(#19162a 0 52%, #3b2815 53% 100%); border: 1px solid #8a6a2f; box-shadow: inset 0 -50px 70px #130c05, 0 20px 50px #0b070355; min-height: 490px; overflow: hidden; position: relative; }.town-sky { inset: 0 0 47%; overflow: hidden; position: absolute; }.town-moon { color: #f0c878; font-size: 3.5rem; position: absolute; right: 16%; top: 12%; text-shadow: 0 0 24px #e0a83f; }.town-star { color: #e0c98f; font-style: normal; position: absolute; }.star-a { left: 22%; top: 24%; }.star-b { left: 40%; top: 15%; }.star-c { right: 32%; top: 38%; }.town-hill { background: #1a221c; border-radius: 50% 50% 0 0; bottom: 40%; height: 32%; left: -10%; position: absolute; transform: rotate(-4deg); width: 120%; }.town-road { background: linear-gradient(83deg, transparent 25%, #70502a 26% 65%, transparent 66%); bottom: 0; height: 48%; left: 20%; position: absolute; transform: skewX(-15deg); width: 65%; }.town-building { background: linear-gradient(90deg, #4b2f18, #80532b 52%, #3a2314); border: 2px solid #b8862f; bottom: 27%; height: 28%; position: absolute; width: 20%; z-index: 2; }.town-building::after { background: #f0c878; box-shadow: 0 0 16px #f0c878; content: ''; height: 18%; left: 42%; position: absolute; top: 43%; width: 16%; }.building-roof { background: #28150e; border: 2px solid #b8862f; border-bottom: 0; height: 42%; left: -12%; position: absolute; top: -35%; transform: perspective(30px) rotateX(8deg); width: 124%; }.building-window { color: #f0c878; font-size: 1rem; left: 44%; position: absolute; top: 48%; z-index: 2; }.building-label { bottom: 7%; color: #f0d797; font: .55rem monospace; left: 0; letter-spacing: .13em; position: absolute; text-align: center; width: 100%; }.town-tavern { left: 8%; }.town-guild { bottom: 24%; height: 34%; left: 40%; width: 24%; }.town-market { bottom: 25%; right: 7%; width: 18%; }.town-gate { bottom: 19%; color: #f0d797; position: absolute; right: 1%; text-align: center; z-index: 2; }.town-gate span { border: 4px solid #8a6a2f; border-bottom: 0; border-radius: 4rem 4rem 0 0; display: block; height: 5rem; width: 4rem; }.town-gate small { font: .5rem monospace; letter-spacing: .15em; }.town-bubble { background: #f5e6c4; border: 2px solid #8a6a2f; border-radius: .35rem .35rem .35rem 0; color: #30200f; font: .55rem sans-serif; left: 78%; padding: .55rem .7rem; position: absolute; top: -35%; white-space: nowrap; width: max-content; }.town-bubble::after { border-right: 8px solid transparent; border-top: 8px solid #8a6a2f; bottom: -9px; content: ''; left: -2px; position: absolute; }.guild-hero + .quest-layout { border-top-color: #6b4f22; }.quest-layout { border-top: 1px solid var(--line, #6b4f22); display: grid; gap: 4rem; grid-template-columns: 1.3fr .7fr; padding: 3.5rem 0; }.quest-ledger h2 { font-size: clamp(2rem, 4vw, 3.5rem); margin: .4rem 0; }.quest-list { list-style: none; margin: 2rem 0 0; padding: 0; }.quest-list li { align-items: center; border-bottom: 1px solid var(--line, #6b4f22); display: grid; gap: 1rem; grid-template-columns: 2rem 1fr auto; padding: 1rem 0; }.quest-list strong, .quest-list small { display: block; }.quest-list small { color: var(--muted, #b89a6a); margin-top: .25rem; }.quest-list b { color: var(--muted, #b89a6a); font: .58rem monospace; letter-spacing: .12em; }.quest-seal { align-items: center; border: 1px solid #e0a83f; border-radius: 50%; color: #f0c878; display: inline-flex; height: 1.7rem; justify-content: center; width: 1.7rem; }.quest-seal--news { border-radius: .2rem; transform: rotate(45deg); }.guild-console { align-self: start; border-left: 1px solid #e0a83f; padding: 1.5rem 0 1.5rem 2rem; }.guild-console h3 { font-size: 1.5rem; margin: .8rem 0 1.2rem; }.guild-console a { border-top: 1px solid #6b4f22; color: var(--ink, #f2e4c8); display: flex; justify-content: space-between; padding: .9rem 0; text-decoration: none; }.guild-console a:hover { color: #f0c878; }
@media (max-width: 820px) { .guild-hero { grid-template-columns: 1fr; padding-top: 3rem; }.town-scene { min-height: 390px; }.quest-layout { grid-template-columns: 1fr; gap: 2rem; }.guild-console { border-left: 0; border-top: 1px solid #e0a83f; padding: 1.5rem 0; }.town-bubble { font-size: .48rem; left: 50%; }.town-tavern { left: 5%; }.town-market { right: 3%; } }
.town-scene { background-image: linear-gradient(90deg, #100c0666, transparent 42%, #100c0633), url('/images/dsa-guildhall-background.png'); background-position: center; background-size: cover; }
.town-scene::before { display: none; }
.town-signal { background: #f5e6c4; border: 2px solid #8a6a2f; border-radius: .35rem .35rem .35rem 0; color: #30200f; font: .58rem sans-serif; padding: .55rem .7rem; position: absolute; z-index: 3; }.town-signal::after { border-right: 8px solid transparent; border-top: 8px solid #8a6a2f; bottom: -9px; content: ''; left: -2px; position: absolute; }.town-signal--left { left: 18%; top: 43%; }.town-signal--right { right: 17%; top: 35%; }
.dsa-town-hero { align-items: center; display: grid; gap: 3rem; grid-template-columns: .8fr 1.2fr; min-height: 680px; padding: 3rem 0 4rem; }.dsa-town-copy { position: relative; z-index: 2; }.dsa-town-copy h1 { color: #f7dfab; font-size: clamp(4rem, 8vw, 7.5rem); letter-spacing: -.08em; line-height: .82; margin: 1rem 0 1.5rem; max-width: 7ch; text-shadow: 0 3px 0 #2a1b0c; }.dsa-town-copy .lede { color: #d9c199; max-width: 32rem; }.dsa-town-map { background: linear-gradient(90deg, #100c0666, transparent 45%, #100c0633), url('/images/dsa-guildhall-background.png') center / cover; border: 1px solid #8a6a2f; box-shadow: 0 24px 60px #0b070577, inset 0 0 60px #100c0666; min-height: 540px; overflow: hidden; position: relative; }.dsa-town-map::after { background: linear-gradient(transparent 70%, #100c06aa), radial-gradient(circle at 50% 48%, transparent 0 38%, #100c0644 100%); content: ''; inset: 0; pointer-events: none; position: absolute; }.dsa-town-waypoint { align-items: center; background: #1b140ddd; border: 1px solid #d1a959; box-shadow: 0 5px 16px #100c0699; color: #f5e6c4; display: flex; flex-direction: column; padding: .6rem .75rem; position: absolute; text-align: center; z-index: 1; }.dsa-town-waypoint span { color: #f0c878; font-size: 1.3rem; }.dsa-town-waypoint b { font: .58rem monospace; letter-spacing: .1em; margin-top: .2rem; }.dsa-town-waypoint small { color: #d9c199; font-size: .65rem; margin-top: .25rem; }.dsa-waypoint-guild { left: 57%; top: 43%; }.dsa-waypoint-inn { bottom: 31%; left: 12%; }.dsa-waypoint-road { bottom: 12%; right: 16%; }.dsa-board-layout { border-top: 1px solid #6b4f22; display: grid; gap: 4rem; grid-template-columns: 1.3fr .7fr; padding: 4rem 0; }.dsa-board { background: #3a2815; border: 1px solid #a87a32; box-shadow: 0 18px 35px #0b070644, inset 0 0 30px #1b0f05; padding: 2rem; position: relative; transform: rotate(-.6deg); }.dsa-board::before { border: 1px solid #d1a95966; content: ''; inset: .55rem; pointer-events: none; position: absolute; }.dsa-board-pin { color: #e0a83f; font-size: 1.5rem; position: absolute; right: 1.4rem; top: .7rem; }.dsa-board h2 { color: #f7dfab; font-family: Georgia, serif; font-size: clamp(2rem, 4vw, 3.5rem); margin: .5rem 0; }.dsa-town-actions { align-self: center; border-left: 2px solid #e0a83f; padding: 1.5rem 0 1.5rem 2rem; }.dsa-town-actions h3 { color: #f7dfab; font-family: Georgia, serif; font-size: 1.8rem; margin: .6rem 0 1.4rem; }.dsa-town-actions a { border-top: 1px solid #6b4f22; color: #f2e4c8; display: flex; justify-content: space-between; padding: 1rem 0; }.dsa-town-actions a:hover { color: #f0c878; }.dsa-town-stats { border-top: 1px solid #6b4f22; display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; padding: 2rem 0 4rem; }.dsa-town-stats article { border-left: 3px solid #8a6a2f; padding-left: 1rem; }.dsa-town-stats span { color: #d1a959; font: .65rem monospace; letter-spacing: .12em; }.dsa-town-stats strong { color: #f0c878; display: block; font: 1.5rem monospace; margin: .4rem 0; }.dsa-town-stats p { color: #c2a878; margin: 0; }
@media (max-width: 820px) { .dsa-town-hero, .dsa-board-layout { grid-template-columns: 1fr; }.dsa-town-map { min-height: 420px; }.dsa-town-stats { grid-template-columns: 1fr; gap: 1rem; }.dsa-town-actions { border-left: 0; border-top: 1px solid #e0a83f; padding: 1.5rem 0; } }

/* DSA standalone visual language: a daylight parchment codex, not a recolored console. */
body.theme-dsa { background: #d8c39b; color: #30251b; font-family: Georgia, 'Times New Roman', serif; --ink: #30251b; --muted: #6b5742; --line: #9c815b; --glow: #8d302c; --green: #8d302c; }
body.theme-dsa .page-shell { max-width: 1240px; padding-top: 3rem; }
body.theme-dsa .site-header { background: #eadbb9ee; border-bottom: 3px double #8d7250; box-shadow: 0 2px 12px #4b321522; }
body.theme-dsa .site-header::after { background: #eadbb9; color: #8d302c; content: 'GUILD LEDGER / OPEN'; font-family: Georgia, serif; }
body.theme-dsa .brand { color: #5e2824; font-family: Georgia, serif; letter-spacing: .08em; }.theme-dsa .brand-mark { color: #8d302c; text-shadow: none; }.theme-dsa .brand small { color: #8b7152; font-family: Georgia, serif; letter-spacing: .1em; }
body.theme-dsa nav a { color: #5e4935; font-family: Georgia, serif; }.theme-dsa nav a:hover, .theme-dsa nav a:focus-visible { background: #cdb486; border-color: #8d302c; color: #3d211d; }
body.theme-dsa .eyebrow, .theme-dsa .section-label, .theme-dsa .panel-kicker, .theme-dsa .metric-label { color: #8d302c; font-family: Georgia, serif; font-weight: 700; letter-spacing: .08em; }.theme-dsa h1, .theme-dsa h2, .theme-dsa h3, .theme-dsa p, .theme-dsa .lede { text-shadow: none; }.theme-dsa .accent { color: #8d302c; text-shadow: none; }
body.theme-dsa .button { background: #8d302c; border-color: #6a211e; border-radius: 0; box-shadow: 3px 3px 0 #5f4632; color: #f6e8c8; font-family: Georgia, serif; }.theme-dsa .button.secondary { background: #eadbb9; border: 1px solid #8d302c; box-shadow: 3px 3px 0 #9c815b; color: #6a211e; }.theme-dsa .button:hover, .theme-dsa .button:focus-visible { background: #a83a34; }
body.theme-dsa .dsa-town-copy h1 { color: #30251b; font-family: Georgia, serif; font-weight: 700; text-shadow: 2px 2px 0 #eadbb9; }.theme-dsa .dsa-town-copy .lede { color: #4f3d2c; }
body.theme-dsa .dsa-town-map { border: 8px solid #5c3f27; box-shadow: 8px 8px 0 #9c815b, 0 16px 28px #4b321544; }.theme-dsa .dsa-town-waypoint { background: #f2e6c9; border: 2px solid #8d302c; box-shadow: 3px 3px 0 #5c3f27; color: #30251b; font-family: Georgia, serif; }.theme-dsa .dsa-town-waypoint span { color: #8d302c; }.theme-dsa .dsa-town-waypoint small { color: #6b5742; }
body.theme-dsa .dsa-board { background: #f0e2c2; border: 1px solid #a38357; box-shadow: 7px 7px 0 #765536, inset 0 0 45px #9c815b33; }.theme-dsa .dsa-board::before { border-color: #8d302c55; }.theme-dsa .dsa-board-pin { color: #8d302c; }.theme-dsa .dsa-board h2 { color: #30251b; }.theme-dsa .quest-list li { border-bottom-color: #b4986f; }.theme-dsa .quest-seal { border-color: #8d302c; color: #8d302c; }.theme-dsa .quest-list b { color: #8d302c; }
body.theme-dsa .dsa-town-actions { border-left-color: #8d302c; }.theme-dsa .dsa-town-actions h3 { color: #30251b; }.theme-dsa .dsa-town-actions a { border-top-color: #b4986f; color: #5e4935; }.theme-dsa .dsa-town-actions a:hover { color: #8d302c; }
body.theme-dsa .dsa-town-stats { border-top-color: #9c815b; }.theme-dsa .dsa-town-stats article { border-left-color: #8d302c; }.theme-dsa .dsa-town-stats span, .theme-dsa .dsa-town-stats strong { color: #8d302c; }.theme-dsa .dsa-town-stats p { color: #6b5742; }
body.theme-dsa .site-footer { background: #eadbb9; border-top: 3px double #8d7250; color: #6b5742; font-family: Georgia, serif; }
body.theme-space { background: #060817; color: #dfe8ff; --ink: #dfe8ff; --muted: #8996bb; --line: #27335e; --glow: #9ab7ff; --green: #667eea; }
body.theme-space .starfield { background-image: radial-gradient(circle, #dce7ff 0 1px, transparent 1px), radial-gradient(circle, #899cff 0 1px, transparent 1px); background-position: 0 0, 31px 47px; background-size: 83px 97px, 137px 151px; inset: 0; opacity: .3; pointer-events: none; position: fixed; z-index: -1; }.theme-space .site-header { background: #080b1ddd; border-bottom-color: #27335e; }.theme-space .site-header::after { background: #0b1025; color: #9ab7ff; content: 'DEEP SPACE / ONLINE'; }.theme-space .brand, .theme-space a { color: #b9caff; }.theme-space .brand::before { color: #9ab7ff; text-shadow: 0 0 14px #9ab7ff; }.theme-space nav a { color: #aab6d7; }.theme-space nav a:hover, .theme-space nav a:focus-visible { background: #172044; border-color: #667eea; color: #fff; }.theme-space .eyebrow, .theme-space .section-label, .theme-space .panel-kicker, .theme-space .metric-label { color: #9ab7ff; }.theme-space .accent { color: #c9d6ff; text-shadow: 0 0 24px #667eea; }.theme-space .lede, .theme-space p { color: #b6c1df; }.theme-space .button, .theme-space .panel { background: linear-gradient(135deg, #182551, #0b1025); border-color: #667eea; }.theme-space .button.secondary { border-color: #3d4b7e; color: #dfe8ff; }.theme-space .site-footer { background: #080b1ddd; border-top-color: #27335e; color: #8996bb; }
.space-chart { min-height: 680px; overflow: hidden; position: relative; }.space-chart-copy { max-width: 32rem; padding: 5rem 0; position: relative; z-index: 2; }.space-chart-copy h1 { font-size: clamp(4rem, 9vw, 8rem); letter-spacing: -.09em; line-height: .82; margin: 1rem 0 1.5rem; max-width: 7ch; }.galaxy-map { border: 1px solid #7188d866; border-radius: 50%; box-shadow: 0 0 90px #667eea22, inset 0 0 90px #02030d; height: min(66vw, 720px); position: absolute; right: -8%; top: 2rem; width: min(66vw, 720px); }.galaxy-arm { border: 1px solid #92aaff33; border-radius: 50%; inset: 15% 4%; position: absolute; transform: rotate(-24deg) skewX(-18deg); }.galaxy-arm-two { inset: 7% 20%; transform: rotate(38deg) skewX(22deg); }.galaxy-core { align-items: center; border: 1px solid #b4c5ff; border-radius: 50%; box-shadow: 0 0 40px #829bff66, inset 0 0 30px #829bff33; color: #dbe5ff; display: flex; flex-direction: column; font: 1.4rem monospace; height: 8rem; justify-content: center; left: calc(50% - 4rem); position: absolute; text-align: center; top: calc(50% - 4rem); width: 8rem; }.galaxy-core small { color: #9ab7ff; font-size: .5rem; letter-spacing: .15em; margin-top: .4rem; }.space-marker { align-items: center; animation: star-blink 2.8s ease-in-out infinite; background: #b9caff; border-radius: 50%; box-shadow: 0 0 0 .35rem #9ab7ff33, 0 0 25px #9ab7ff; color: #060817; display: flex; font: .5rem monospace; height: 1.2rem; justify-content: center; position: absolute; width: 1.2rem; z-index: 2; }.space-marker span { background: #0b1025dd; border: 1px solid #667eea; color: #c9d6ff; display: none; left: 1.6rem; padding: .35rem .5rem; position: absolute; white-space: nowrap; }.space-marker:hover span, .space-marker:focus-visible span { display: block; }.space-marker-run { left: 28%; top: 31%; }.space-marker-news { background: #f4bc67; box-shadow: 0 0 0 .35rem #f4bc6733, 0 0 25px #f4bc67; right: 20%; top: 22%; transform: rotate(45deg); }.space-marker-news span { transform: rotate(-45deg); }.star { background: #e5edff; border-radius: 50%; box-shadow: 0 0 12px #b9caff; height: 2px; position: absolute; width: 2px; }.star-a { left: 15%; top: 23%; }.star-b { left: 29%; top: 10%; }.star-c { left: 68%; top: 16%; }.star-d { left: 81%; top: 48%; }.star-e { left: 57%; top: 82%; }.star-f { left: 17%; top: 71%; }.star-g { left: 47%; top: 30%; }.space-log { border-top: 1px solid #27335e; display: grid; gap: 2rem; grid-template-columns: repeat(3, 1fr); padding: 2rem 0 5rem; }.space-log article { border-left: 2px solid #667eea; padding-left: 1rem; }.space-log span { color: #9ab7ff; font: .65rem monospace; letter-spacing: .12em; }.space-log strong { color: #dfe8ff; display: block; font: 1.5rem monospace; margin: .5rem 0; }.space-log p { color: #8996bb; margin: 0; }
@keyframes star-blink { 0%,100% { opacity: .65; transform: scale(.9); } 50% { opacity: 1; transform: scale(1.18); } }
@media (max-width: 820px) { .space-chart { min-height: 800px; }.galaxy-map { height: min(94vw, 600px); right: -18%; top: 21rem; width: min(94vw, 600px); }.space-chart-copy { padding-top: 3rem; }.space-log { grid-template-columns: 1fr; gap: 1rem; } }
/* Starfarer panorama: realistic Milky Way background replaces the cropped orbit sketch. */
.theme-space .space-chart { background: linear-gradient(90deg, #060817ee 0%, #060817bb 36%, transparent 72%), url('/images/starfarer-milkyway.png') center / cover; margin-left: -5vw; margin-right: -5vw; padding-left: 5vw; padding-right: 5vw; }.theme-space .galaxy-map { border: 0; box-shadow: none; height: min(53vw, 650px); overflow: visible; right: 1%; top: 1rem; width: min(53vw, 650px); }.theme-space .galaxy-arm { display: none; }.theme-space .galaxy-core { background: #070a18aa; }.theme-space .space-chart-copy { max-width: 35rem; }.theme-space .space-marker { z-index: 3; }.theme-space .space-log { margin-left: -5vw; margin-right: -5vw; padding-left: 5vw; padding-right: 5vw; }
@media (max-width: 820px) { .theme-space .space-chart { background-position: 62% center; margin-left: -5vw; margin-right: -5vw; padding-left: 5vw; padding-right: 5vw; }.theme-space .galaxy-map { height: min(82vw, 520px); right: 3%; top: 20rem; width: min(82vw, 520px); }.theme-space .space-chart-copy { padding-top: 2rem; } }
/* AdventureHub platform style: quiet slate workspace for library, admin, and sitemap. */
body.theme-hub { background: #eef1f5; color: #202a38; --ink: #202a38; --muted: #657285; --line: #cbd3de; --glow: #315d8f; --green: #315d8f; }
body.theme-hub::before { display: none; }.theme-hub .site-header { background: #fff; border-bottom: 1px solid #cbd3de; box-shadow: 0 2px 8px #1f2d3d0d; }.theme-hub .site-header::after { background: #fff; color: #315d8f; content: 'PLATFORM / READY'; }.theme-hub .brand, .theme-hub a { color: #244c78; }.theme-hub .brand::before { color: #315d8f; text-shadow: none; }.theme-hub nav a { color: #516174; }.theme-hub nav a:hover, .theme-hub nav a:focus-visible { background: #e7edf5; border-color: #315d8f; color: #1f4269; }.theme-hub .page-shell { max-width: 1240px; padding-top: 3.5rem; }.theme-hub h1, .theme-hub h2, .theme-hub h3 { color: #202a38; letter-spacing: -.03em; }.theme-hub .eyebrow, .theme-hub .section-label, .theme-hub .panel-kicker, .theme-hub .metric-label { color: #315d8f; }.theme-hub .accent { color: #315d8f; text-shadow: none; }.theme-hub .lede, .theme-hub p { color: #657285; }.theme-hub .button, .theme-hub .panel { background: #fff; border: 1px solid #cbd3de; border-radius: .45rem; box-shadow: 0 8px 20px #1f2d3d0d; color: #244c78; }.theme-hub .button:hover, .theme-hub .button:focus-visible { background: #e7edf5; box-shadow: 0 0 0 .2rem #315d8f22; }.theme-hub .button.secondary { border-color: #9eabba; color: #516174; }.theme-hub .site-footer { background: #fff; border-top: 1px solid #cbd3de; color: #657285; }.theme-hub .library-grid, .theme-hub .console-grid, .theme-hub .admin-table, .theme-hub .account-card { color: #202a38; }.theme-hub .feature-panel, .theme-hub .console-card, .theme-hub .site-card, .theme-hub .form-card, .theme-hub .empty-state { background: #fff; border-color: #cbd3de; box-shadow: 0 8px 20px #1f2d3d0d; }.theme-hub .site-card:hover, .theme-hub .feature-panel:hover { border-color: #315d8f; }.theme-hub input { background: #fff; border-color: #b7c2cf; color: #202a38; }.theme-hub label { color: #516174; }.theme-hub .admin-menu { background: #fff; border: 1px solid #cbd3de; }.theme-hub .admin-menu a { border-color: #d6dde6; color: #516174; }.theme-hub .admin-menu a:hover, .theme-hub .admin-menu a.active { background: #e7edf5; border-color: #315d8f; color: #244c78; }
.directory-page { background: #e2e9f5; color: #26313c; margin: -3rem -5vw -5rem; min-height: calc(100vh - 8rem); padding: 5rem max(5vw, 2rem) 4rem; }.directory-heading { margin: 0 auto; max-width: 1180px; }.directory-kicker { color: #5c6b7f; font: .7rem monospace; letter-spacing: .16em; }.directory-heading h1 { color: #26313c; font: 700 clamp(3rem, 7vw, 6.5rem)/.88 Georgia, serif; letter-spacing: -.06em; margin: 1rem 0; }.directory-heading p { color: #5c6b7f; font-size: 1.1rem; max-width: 36rem; }.directory-rule { align-items: center; border-bottom: 1px solid #ccd6e0; border-top: 1px solid #ccd6e0; color: #6d7c8e; display: flex; font: .65rem monospace; justify-content: space-between; letter-spacing: .08em; margin: 3rem auto 1.5rem; max-width: 1180px; padding: .8rem 0; text-transform: uppercase; }.directory-grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(4, 1fr); margin: 0 auto; max-width: 1180px; }.directory-card { background: #fff; border: 1px solid #d3dbe4; box-shadow: 0 10px 24px #26313c12; color: #26313c; display: flex; flex-direction: column; min-height: 285px; padding: 1.4rem; position: relative; transition: box-shadow .2s, transform .2s; }.directory-card:hover, .directory-card:focus-visible { box-shadow: 0 14px 28px #26313c22; color: #26313c; transform: translateY(-4px); }.directory-card--matrix { border-top: 4px solid #15856b; }.directory-card--guild { border-top: 4px solid #a66a2b; }.directory-card--space { border-top: 4px solid #586fbe; }.directory-card--platform { border-top: 4px solid #315d8f; }.directory-card--owner { border-top: 4px solid #315d8f; }.directory-card--public { border-top: 4px solid #5c8a3f; }.directory-card--approved { border-top: 4px solid #6a4a8a; }.directory-status { color: #6d7c8e; font: .58rem monospace; letter-spacing: .1em; }.directory-icon { color: #315d8f; font: 2rem Georgia, serif; margin: 2.5rem 0 1rem; }.directory-card--matrix .directory-icon { color: #15856b; font-family: monospace; }.directory-card--guild .directory-icon { color: #a66a2b; }.directory-card--space .directory-icon { color: #586fbe; }.directory-card--owner .directory-icon { color: #315d8f; }.directory-card--public .directory-icon { color: #5c8a3f; }.directory-card--approved .directory-icon { color: #6a4a8a; }.directory-card h2 { color: #26313c; font: 700 1.5rem Georgia, serif; margin: 0 0 .6rem; }.directory-card p { color: #5c6b7f; font-size: .9rem; line-height: 1.5; margin: 0; }.directory-enter { border-top: 1px solid #ccd6e0; color: #315d8f; font: .7rem monospace; letter-spacing: .06em; margin-top: auto; padding-top: 1rem; }.directory-enter b { float: right; font-size: 1rem; }.directory-footer { border-top: 1px solid #ccd6e0; margin: 4rem auto 0; max-width: 1180px; padding-top: 1rem; }.directory-footer span { color: #5c6b7f; font: .65rem monospace; letter-spacing: .1em; }.directory-footer p { color: #6d7c8e; margin: .5rem 0; }
@media (max-width: 900px) { .directory-grid { grid-template-columns: repeat(2, 1fr); } }@media (max-width: 560px) { .directory-page { margin-left: -5vw; margin-right: -5vw; padding-left: 5vw; padding-right: 5vw; }.directory-grid { grid-template-columns: 1fr; }.directory-rule { align-items: flex-start; flex-direction: column; gap: .5rem; } }
/* DSA page structure: panorama, codex rail, and individual pinned notices. */
.dsa-panorama { height: min(68vw, 650px); min-height: 500px; position: relative; }.dsa-panorama-image { background: linear-gradient(90deg, #120d08cc, transparent 58%), linear-gradient(0deg, #120d08aa, transparent 42%), url('/images/dsa-guildhall-background.png') center / cover; border: 8px solid #5c3f27; box-shadow: 8px 8px 0 #9c815b, 0 18px 35px #4b321544; inset: 0; position: absolute; }.dsa-panorama-title { color: #f5e6c4; left: 7%; position: absolute; top: 17%; text-shadow: 2px 2px #21140c; }.dsa-panorama-title h1 { font-size: clamp(3.5rem, 8vw, 7rem); line-height: .86; margin: .8rem 0; max-width: 7ch; }.dsa-panorama-title p:last-child { font-family: Georgia, serif; font-size: 1.25rem; font-style: italic; }.dsa-panorama-route { background: #f0e2c2; border: 2px solid #8d302c; bottom: 9%; color: #30251b; display: grid; gap: .2rem; padding: .8rem 1rem; position: absolute; right: 7%; transform: rotate(1.5deg); width: 15rem; }.dsa-panorama-route span, .dsa-panorama-route small { color: #8d302c; font: .6rem monospace; letter-spacing: .08em; }.dsa-panorama-route b { font-family: Georgia, serif; }.dsa-codex-layout { display: grid; gap: 4rem; grid-template-columns: 16rem 1fr; padding: 6rem 0 4rem; }.dsa-codex-nav { border-right: 1px solid #a38357; padding-right: 2rem; }.dsa-codex-nav h2, .dsa-notices h2 { color: #30251b; font-family: Georgia, serif; margin: .4rem 0 1rem; }.dsa-codex-nav p { color: #6b5742; line-height: 1.55; }.dsa-codex-nav .button { display: block; text-align: center; }.dsa-ink-link { color: #8d302c; display: block; font-family: Georgia, serif; margin-top: 1rem; }.dsa-codex-note { border-top: 1px solid #a38357; color: #8d302c; font-style: italic; margin-top: 3rem; padding-top: 1rem; }.dsa-notice-grid { display: grid; gap: 1rem; grid-template-columns: repeat(3, 1fr); margin-top: 2rem; }.dsa-notice { background: #f0e2c2; border: 1px solid #a38357; box-shadow: 4px 5px 0 #765536; color: #30251b; display: block; min-height: 250px; padding: 1.4rem; position: relative; transform: rotate(-1deg); }.dsa-notice:nth-child(2) { transform: rotate(1.2deg); }.dsa-notice:nth-child(3) { transform: rotate(-.3deg); }.dsa-notice:hover { border-color: #8d302c; transform: translateY(-5px) rotate(0); }.dsa-notice-seal { color: #8d302c; font-size: 1.8rem; position: absolute; right: 1rem; top: .7rem; }.dsa-notice small { color: #8d302c; display: block; font: .6rem monospace; letter-spacing: .1em; }.dsa-notice strong { display: block; font-family: Georgia, serif; font-size: 1.35rem; margin: 1.8rem 0 .6rem; }.dsa-notice p { color: #6b5742; font-size: .9rem; line-height: 1.5; }.dsa-notice b { bottom: 1.2rem; color: #8d302c; font: .6rem monospace; left: 1.4rem; position: absolute; }.dsa-travel-strip { align-items: center; border-bottom: 1px solid #a38357; border-top: 1px solid #a38357; display: flex; gap: 2rem; margin-bottom: 3rem; padding: 1.2rem 0; }.dsa-travel-strip > span { color: #8d302c; font: .6rem monospace; letter-spacing: .1em; margin-right: auto; }.dsa-travel-strip a { color: #5e4935; font-family: Georgia, serif; }.dsa-travel-strip a:hover { color: #8d302c; }
@media (max-width: 820px) { .dsa-panorama { height: 520px; }.dsa-panorama-title { left: 8%; top: 12%; }.dsa-panorama-route { bottom: 6%; right: 6%; }.dsa-codex-layout { grid-template-columns: 1fr; gap: 2rem; padding-top: 4rem; }.dsa-codex-nav { border-bottom: 1px solid #a38357; border-right: 0; padding: 0 0 2rem; }.dsa-notice-grid { grid-template-columns: 1fr; }.dsa-notice { min-height: 210px; }.dsa-travel-strip { align-items: flex-start; flex-direction: column; gap: .8rem; }.dsa-travel-strip > span { margin: 0; } }

/* Print-catalog "own visual system" pages (sites directory, library, admin)
   deliberately break out of the active site's dark theme via a negative
   margin trick on their top-level wrapper, same as .directory-page - only
   the content area re-skins; site-header/site-footer chrome stays whatever
   the resolved site theme says. Each area gets its own distinct palette so
   they read as separate rooms, not reskins of one another. The CRT
   scanline overlay (body::before) is suppressed wherever any of these
   apply - it reads as a glitch, not a feature, against light paper. */
body:has(.directory-page)::before, body:has(.admin-console-page)::before { display: none; }

/* Sites/Library/Account/Login/Register all share this one "print catalog"
   system (warm paper, Georgia serif, platform-blue accent) - the same
   .directory-page the sites index already used, extended here to cover
   panels, forms and account components too, so it now works as a full
   page skin rather than just a card grid. Admin keeps its own separate
   .admin-console-page look. --accent is overridden locally so every
   var(--accent, #6dffbe) consumer (status dots, security badges, status
   lines) re-themes automatically without needing individual overrides. */
.directory-page { --accent: #315d8f; }
.directory-page .section-heading, .directory-page .section-heading--spaced, .directory-page .account-hero, .directory-page .account-grid, .directory-page .account-section { max-width: 1180px; margin-left: auto; margin-right: auto; }
.directory-page .eyebrow, .directory-page .section-label, .directory-page .panel-kicker, .directory-page .account-section-heading .eyebrow { color: #315d8f; font: .7rem monospace; letter-spacing: .16em; }
.directory-page .section-heading h1, .directory-page .section-heading--spaced h1, .directory-page .account-hero h1, .directory-page .form-card h1 { color: #26313c; font: 700 clamp(2.2rem, 5.5vw, 4.5rem)/.92 Georgia, serif; letter-spacing: -.04em; }
.directory-page h2, .directory-page h3 { color: #26313c; font-family: Georgia, serif; }
.directory-page .lede, .directory-page p { color: #5c6b7f; }
.directory-page .accent { color: #315d8f; text-shadow: none; }
.directory-page a { color: #315d8f; }
.directory-page .panel, .directory-page .feature-panel, .directory-page .form-card { background: #fff; border: 1px solid #d3dbe4; box-shadow: 0 10px 24px #26313c12; color: #26313c; }
.directory-page .feature-panel:hover { border-color: #315d8f; transform: translateY(-3px); }
.directory-page .button { background: #26313c; border-color: #26313c; color: #e2e9f5; }
.directory-page .button:hover, .directory-page .button:focus-visible { background: #315d8f; border-color: #315d8f; box-shadow: none; }
.directory-page .button--quiet { background: transparent; border-color: #d3dbe4; color: #26313c; }
.directory-page .button--danger { background: #fff; border-color: #b3413a; color: #b3413a; }
.directory-page .button.secondary { border-color: #d3dbe4; color: #26313c; }
.directory-page .document-row, .directory-page .document-list, .directory-page .folder-contents, .directory-page .document-file, .directory-page .folder-row:hover, .directory-page .account-token-list li, .directory-page .stacked-form fieldset { border-color: #d3dbe4; }
.directory-page .document-date, .directory-page .muted, .directory-page .account-card small, .directory-page .file-meta, .directory-page .file-date, .directory-page .folder-count { color: #6d7c8e; }
.directory-page .toolbar input, .directory-page .upload-form input, .directory-page label { color: #26313c; }
.directory-page input, .directory-page select { background: #fff; border-color: #d3dbe4; color: #26313c; }
.directory-page .chip { border-color: #d3dbe4; color: #5c6b7f; }
.directory-page .side-note { background: #ffffffaa; border-left-color: #315d8f; }
.directory-page .status-dot { background: #315d8f; }
.directory-page .status-dot.muted { background: #d3dbe4; }
.directory-page .secret-overlay { background: #26313ccc; }
.directory-page .secret-overlay-card { background: #fff; border-color: #315d8f; color: #26313c; }
.directory-page .quota-item strong { color: #26313c; }
.directory-page .quota-bar { background: #e5e0d5; }
.directory-page .quota-bar-fill { background: linear-gradient(90deg, #315d8f, #6f93bd); }
.directory-page .recovery-codes code, .directory-page .token-display { background: #e2e9f5; color: #26313c; }
.directory-page .checkbox-label { color: #26313c; }
.directory-page .security-badge { border-color: #315d8f; }
@media (max-width: 560px) { .directory-page { margin-left: -5vw; margin-right: -5vw; padding-left: 5vw; padding-right: 5vw; } }

/* Admin: a stark, high-contrast "control registry" system - near-black on
   near-white, system-ui sans headings (deliberately not serif or
   monospace, unlike every other area), rust/amber accent signaling
   privileged access. */
.admin-console-page { background: #f4f4f2; color: #1a1a18; margin: -3rem -5vw -5rem; min-height: calc(100vh - 8rem); padding: 5rem max(5vw, 2rem) 4rem; }
.admin-console-page .section-heading { max-width: 1180px; margin-left: auto; margin-right: auto; }
.admin-console-page .eyebrow, .admin-console-page .section-label, .admin-console-page .panel-kicker { color: #9a5b12; font: .7rem monospace; letter-spacing: .16em; }
.admin-console-page h1, .admin-console-page h2 { color: #1a1a18; font: 800 clamp(2.2rem, 5.5vw, 4.5rem)/.92 system-ui, sans-serif; letter-spacing: -.04em; }
.admin-console-page .lede, .admin-console-page p { color: #4a4a45; }
.admin-console-page .accent { color: #b5651d; text-shadow: none; }
.admin-console-page a { color: #9a5b12; }
.admin-console-page .panel, .admin-console-page .console-card { background: #fff; border: 1px solid #ddd8ce; box-shadow: 0 10px 24px #1a1a1812; color: #1a1a18; }
.admin-console-page .console-card strong { color: #1a1a18; }
.admin-console-page .button { background: #1a1a18; border-color: #1a1a18; color: #f4f4f2; }
.admin-console-page .button:hover, .admin-console-page .button:focus-visible { background: #b5651d; border-color: #b5651d; box-shadow: none; }
.admin-console-page .admin-menu { background: #fff; border-color: #ddd8ce; }
.admin-console-page .admin-menu a { border-color: transparent; color: #1a1a18; }
.admin-console-page .admin-menu a:hover { background: #f4f4f2; border-color: #ddd8ce; }
.admin-console-page .admin-menu a.active { background: #1a1a18; border-color: #1a1a18; color: #f4f4f2; }
.admin-console-page .admin-table th, .admin-console-page .admin-table td { border-color: #ddd8ce; color: #1a1a18; }
.admin-console-page .admin-table th { color: #9a5b12; }
.admin-console-page input, .admin-console-page select, .admin-console-page label { background: #fff; border-color: #ddd8ce; color: #1a1a18; }
.admin-console-page .status-line { color: #9a5b12; }
@media (max-width: 560px) { .admin-console-page { margin-left: -5vw; margin-right: -5vw; padding-left: 5vw; padding-right: 5vw; } }

/* Legal pages (imprint/privacy) - plain readable prose, no themed redesign
   like sites/library/admin above; just a comfortable line length. */
.legal-page { max-width: 42rem; margin: 0 auto; }
.legal-page h1 { font-size: clamp(2.2rem, 5vw, 3.2rem); margin: 1rem 0 .5rem; }
.legal-page h2 { margin: 2.2rem 0 .8rem; font-size: 1.3rem; }
.legal-page p, .legal-page li { line-height: 1.7; color: var(--muted, #b6dacf); }
.legal-page ul { padding-left: 1.2rem; }
.legal-page li { margin: .5rem 0; }
.legal-page a { color: var(--glow, #7fffd4); }

/* Library's own three-card grid reuses .directory-card exactly (see /sites)
   but only has 3 cards, not 4 - override the column count so it doesn't
   leave an awkward empty slot. */
.library-directory-grid { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .library-directory-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .library-directory-grid { grid-template-columns: 1fr; } }
