:root {
    --gv-ink: #17211f;
    --gv-muted: #66746f;
    --gv-line: #dce5e2;
    --gv-surface: #f7faf8;
    --gv-accent: #0f766e;
    --gv-accent-dark: #115e59;
    --gv-admin: #1f2937;
}

[data-theme="dark"] {
    --gv-ink: #edf4f2;
    --gv-muted: #a9b8b3;
    --gv-line: #33413d;
    --gv-surface: #111816;
    background: #0c1110;
    color: var(--gv-ink);
}

body {
    color: var(--gv-ink);
    background: linear-gradient(180deg, var(--gv-surface), #fff 320px);
    min-height: 100vh;
}

[data-theme="dark"] body,
[data-theme="dark"] .site-main {
    background: #0c1110;
}

.gv-navbar {
    border-bottom: 1px solid var(--gv-line);
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(12px);
}

[data-theme="dark"] .gv-navbar,
[data-theme="dark"] .gv-card,
[data-theme="dark"] .record-card,
[data-theme="dark"] .metric-card {
    background: #121b18;
    color: var(--gv-ink);
}

.hero-band {
    display: grid;
    min-height: 330px;
    align-items: center;
    padding: 2rem;
    border: 1px solid var(--gv-line);
    border-radius: 0.5rem;
    background: radial-gradient(circle at 90% 20%, rgba(15, 118, 110, 0.12), transparent 30%), #fff;
}

.gv-card,
.record-card,
.metric-card,
.relationship-card {
    border: 1px solid var(--gv-line);
    border-radius: 0.5rem;
    background: #fff;
    box-shadow: 0 14px 36px rgba(23, 33, 31, 0.06);
}

.gv-card {
    padding: 1.25rem;
}

.record-card,
.metric-card,
.relationship-card {
    position: relative;
    padding: 1rem;
}

.metric-card span,
.relationship-card span,
.eyebrow {
    color: var(--gv-accent);
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.metric-card strong {
    display: block;
    margin-top: 0.5rem;
    font-size: 2rem;
}

.profile-list {
    display: grid;
    grid-template-columns: 8rem 1fr;
    gap: 0.5rem 1rem;
    margin: 1rem 0 0;
}

.profile-list dt {
    color: var(--gv-muted);
}

.timeline {
    border-left: 2px solid var(--gv-line);
    padding-left: 1rem;
}

.timeline-item {
    margin-bottom: 1rem;
}

.record-line {
    display: block;
    padding: 0.65rem 0;
}

.block-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.gv-block {
    display: flex;
    min-height: 230px;
    flex-direction: column;
    gap: 0.75rem;
    justify-content: flex-start;
    padding: 1rem;
    border: 1px solid var(--gv-line);
    border-radius: 0.5rem;
    background: #fff;
    box-shadow: 0 14px 36px rgba(23, 33, 31, 0.05);
}

[data-theme="dark"] .gv-block,
[data-theme="dark"] .block-list .list-group-item {
    background: #121b18;
    color: var(--gv-ink);
}

.gv-block-feature {
    grid-column: span 2;
    justify-content: space-between;
    background: linear-gradient(135deg, rgba(15, 118, 110, 0.12), #fff);
}

[data-theme="dark"] .gv-block-feature {
    background: #121b18;
}

.mini-stat-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}

.mini-stat-grid div,
.rank-list div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid var(--gv-line);
}

.mini-stat-grid div {
    display: block;
    border: 1px solid var(--gv-line);
    border-radius: 0.5rem;
    padding: 0.75rem;
}

.mini-stat-grid strong {
    display: block;
    font-size: 1.35rem;
}

.mini-stat-grid span,
.block-records span,
.block-list small {
    display: block;
    color: var(--gv-muted);
    font-size: 0.88rem;
}

.block-records {
    display: grid;
    gap: 0.3rem;
}

.block-records a,
.block-list .list-group-item {
    padding: 0.65rem 0;
    border-color: var(--gv-line);
    color: inherit;
    text-decoration: none;
}

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

.block-records a:hover,
.block-list .list-group-item:hover {
    color: var(--gv-accent);
}

.media-thumb,
.empty-visual {
    display: grid;
    min-height: 140px;
    place-items: center;
    border-radius: 0.5rem;
    background: var(--gv-surface);
    color: var(--gv-muted);
    font-weight: 800;
}

.admin-shell {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    min-height: 100vh;
}

.admin-sidebar {
    padding: 1rem;
    background: var(--gv-admin);
    color: #fff;
}

.admin-sidebar .nav-link,
.admin-brand {
    color: rgba(255, 255, 255, 0.86);
    border-radius: 0.4rem;
}

.admin-sidebar .nav-link:hover {
    background: rgba(255, 255, 255, 0.09);
    color: #fff;
}

.admin-brand {
    display: block;
    margin-bottom: 1rem;
    font-size: 1.1rem;
    font-weight: 800;
    text-decoration: none;
}

.tree-toolbar {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.tree-canvas {
    min-height: 420px;
    overflow: auto;
    border: 1px solid var(--gv-line);
    border-radius: 0.5rem;
    background: var(--gv-surface);
    padding: 1rem;
}

.tree-stage {
    transform-origin: 0 0;
    transition: transform 160ms ease;
}

.tree-node {
    display: inline-block;
    min-width: 190px;
    padding: 0.75rem;
    margin: 0.5rem;
    border: 1px solid var(--gv-line);
    border-radius: 0.5rem;
    background: #fff;
}

.install-card,
.auth-panel {
    max-width: 980px;
    padding: 1.5rem;
    border: 1px solid var(--gv-line);
    border-radius: 0.5rem;
    background: #fff;
}

.auth-panel {
    max-width: 440px;
}

.error-pre {
    white-space: pre-wrap;
}

@media (max-width: 900px) {
    .admin-shell {
        grid-template-columns: 1fr;
    }

    .admin-sidebar {
        position: static;
    }

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

    .gv-block-feature {
        grid-column: auto;
    }

    .mini-stat-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
