/* main.css - EnergyAtlas Design System matching official website */

@import url('https://fonts.googleapis.com/css2?family=Roboto+Flex:wdth,wght@25..151,100..1000&display=swap');

:root {
    --primary-color: #003978;
    --secondary-color: #f1392a;
    --accent-color: #4da3ff;
    --text-dark: #e5e5e5; /* Light text for dark background */
    --text-light: #b0b0b0; /* Lighter grey for secondary text */
    --text-muted: #808080; /* Muted text */
    --bg-light: #2a2a2a; /* Light grey for cards/buttons */
    --bg-white: #3a3a3a; /* Slightly lighter grey for elevated surfaces */
    --bg-dark-surface: #1a1a1a; /* Dark grey for panels */
    --bg-gradient-dark: #000000; /* Pure black */
    --border-color: #404040; /* Dark grey borders */
    --success-color: #28a745;
    --error-color: #f44336;
    --warning-color: #ffc107;
    
    --font-family: 'Roboto Flex', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-family-mono: 'Cascadia Code', 'Cascadia Mono', Consolas, 'Courier New', monospace;
    --font-size-xs: 0.75rem;
    --font-size-sm: 0.875rem;
    --font-size-base: 1rem;
    --font-size-lg: 1.125rem;
    --font-size-xl: 1.25rem;
    --font-size-2xl: 1.5rem;
    --font-size-3xl: 1.875rem;
    --font-size-4xl: 2.25rem;
    --font-size-5xl: 3rem;
    
    --spacing-xs: 0.25rem;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 1.5rem;
    --spacing-xl: 2rem;
    --spacing-2xl: 3rem;
    --spacing-3xl: 4rem;
    
    --max-width: 1200px;
    --border-radius: 8px;
    --border-radius-sm: 4px;
    --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

/* Scrollbar styling (dark theme) */
* {
    scrollbar-width: thin;
    scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
}

::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.2);
    border-radius: 8px;
}

::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.35);
}

::-webkit-scrollbar-corner {
    background: transparent;
}

/* Page transition animations */
.menu-column-content {
    /* Animation disabled - handled by JavaScript for better back button support */
    /* animation: fadeIn 0.3s ease-in-out; */
    opacity: 1; /* Ensure visible by default */
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.md-content {
    animation: fadeInContent 0.4s ease-in-out;
}

@keyframes fadeInContent {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

body {
    font-family: var(--font-family);
    font-weight: 200;
    font-variation-settings: 'wdth' 100, 'wght' 200;
    line-height: 1.6;
    color: var(--text-dark);
    background: var(--bg-gradient-dark);
    font-size: var(--font-size-base);
    min-height: 100vh;
}

body:not(.landing):not(.menu):not(.joblist) {
    background: var(--bg-gradient-dark);
    padding: var(--spacing-3xl) 0;
    color: var(--text-dark);
}

.container {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 0 var(--spacing-lg);
}

/* Landing Page Styles */
body.landing {
    background: #000000; /* Pure black */
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

body.landing::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: transparent; /* No overlay on pure black */
    z-index: 0;
}

.landing-content {
    position: relative;
    z-index: 2;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-2xl);
    padding: var(--spacing-3xl) 0;
}

.app-icon {
    width: 120px;
    height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.app-icon img {
    width: 80px;
    height: 80px;
    object-fit: contain;
}

.app-title {
    color: var(--text-dark);
    font-size: var(--font-size-5xl);
    font-weight: 600;
    font-family: var(--font-family);
    font-variation-settings: 'wdth' 150, 'wght' 700;
    letter-spacing: -0.05em;
    margin: 0;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}

.btn {
    display: inline-block;
    padding: var(--spacing-xs) var(--spacing-md);
    text-decoration: none;
    border-radius: var(--border-radius);
    font-weight: 400;
    font-size: var(--font-size-sm);
    font-family: var(--font-family);
    font-variation-settings: 'wdth' 150, 'wght' 200;
    letter-spacing: -0.02em;
    transition: all 0.2s ease;
    min-height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border: none;
}

button,
.btn {
    box-shadow: none !important;
}

.btn-primary {
    background: var(--bg-light);
    color: var(--text-dark);
    border: 1px solid var(--border-color);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.btn-primary:hover {
    background: var(--accent-color);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);
}

.btn-secondary {
    background: var(--bg-light);
    color: var(--text-dark);
    border: 1px solid var(--border-color);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.btn-secondary:hover {
    background: var(--accent-color);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);
}

.btn:focus {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}

.toolbar {
    box-shadow: none !important;
}

/* Menu Page Styles */
body.menu {
    background: var(--bg-light);
    padding: 0 !important;
    margin: 0;
    color: var(--text-dark);
}

.wiki-topbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    background: var(--bg-dark-surface);
    border-bottom: 1px solid var(--border-color);
    display: flex;
    align-items: center;
    z-index: 2000;
}

.wiki-topbar-inner {
    width: 100%;
    max-width: var(--max-width);
    margin: 0 auto;
    padding: var(--spacing-md) var(--spacing-lg);
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
}

.wiki-topbar-left-group {
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
}

.wiki-topbar-left {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    color: var(--text-dark);
    text-decoration: none;
}

.wiki-topbar-left:hover {
    color: var(--text-dark);
}

.wiki-topbar-icon {
    width: 32px;
    height: 32px;
}

.wiki-topbar-title {
    font-size: var(--font-size-xl);
    font-weight: 600;
    font-family: var(--font-family);
    font-variation-settings: 'wdth' 150, 'wght' 700;
    letter-spacing: -0.05em;
}

.wiki-topbar-title-light {
    font-size: var(--font-size-xl);
    font-weight: 300;
    font-variation-settings: 'wdth' 150, 'wght' 200;
    letter-spacing: -0.05em;
}

.wiki-topbar-nav {
    display: flex;
    align-items: center;
    flex: 1;
    justify-content: flex-end;
}

.wiki-topbar-nav-list {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: var(--spacing-xl);
}

.wiki-topbar-nav-link {
    text-decoration: none;
    color: var(--text-dark);
    font-weight: 300;
    font-size: var(--font-size-sm);
    font-variation-settings: 'wdth' 150, 'wght' 200;
    letter-spacing: -0.02em;
    transition: color 0.2s ease;
}

.wiki-topbar-nav-link:hover {
    color: var(--accent-color);
}

.wiki-topbar-link {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    color: var(--text-dark);
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 300;
    font-variation-settings: 'wdth' 150, 'wght' 200;
    letter-spacing: -0.02em;
    transition: color 0.2s ease;
}

.wiki-topbar-link:hover {
    color: var(--accent-color);
}

.wiki-topbar-link {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    color: var(--text-light);
    text-decoration: none;
    font-size: var(--font-size-xs);
    font-weight: 500;
    padding: 4px 8px;
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius-sm);
    background: var(--bg-light);
}

.wiki-topbar-link:hover {
    color: var(--text-dark);
    border-color: var(--accent-color);
}

.wiki-topbar-link-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
}

.wiki-topbar-link-icon svg {
    width: 14px;
    height: 14px;
}

body.menu > .container {
    padding: var(--spacing-lg);
    padding-top: calc(32px + var(--spacing-md) * 2 + var(--spacing-xl));
}

body.menu > .status-bar {
    flex-shrink: 0;
}

.menu-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.menu-page-title {
    color: var(--text-dark);
    font-size: var(--font-size-2xl);
    font-weight: 400;
    font-family: var(--font-family);
    font-variation-settings: 'wdth' 150, 'wght' 500;
    letter-spacing: -0.02em;
    margin: 0;
}

.menu-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--spacing-lg);
}

.menu-column {
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    min-width: 0;
}

.menu-column-content {
    padding: 0;
    transition: opacity 0.3s ease-in-out;
    min-width: 0;
}

.menu-column-nav {
    position: sticky;
    top: calc(32px + var(--spacing-md) * 2 + var(--spacing-xl));
    align-self: start;
}

.menu-column-toc {
    position: sticky;
    top: calc(32px + var(--spacing-md) * 2 + var(--spacing-xl));
    align-self: start;
    max-height: calc(100vh - calc(32px + var(--spacing-md) * 2 + var(--spacing-xl)) - var(--spacing-lg));
    overflow-y: auto;
}

.menu-column > * {
    width: 100%;
}

/* Table of Contents Styles */
.toc-nav {
    padding: 0;
}

.toc-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.toc-sublist {
    list-style: none;
    padding-left: var(--spacing-md);
    margin-top: var(--spacing-xs);
    margin-bottom: var(--spacing-xs);
}

.toc-item {
    margin-bottom: var(--spacing-xs);
}

.toc-link {
    display: block;
    color: var(--text-dark);
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 300;
    font-variation-settings: 'wdth' 150, 'wght' 200;
    letter-spacing: -0.01em;
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--border-radius-sm);
    transition: all 0.2s ease;
    line-height: 1.4;
}

.toc-link:hover,
.toc-link.active {
    background: var(--accent-color);
    color: var(--bg-dark-surface);
    text-decoration: none;
}

.toc-link.active {
    font-weight: 600;
    font-variation-settings: 'wdth' 150, 'wght' 600;
}

.toc-item.toc-level-1 > .toc-link {
    font-weight: 400;
    font-variation-settings: 'wdth' 150, 'wght' 400;
    color: var(--text-dark);
}

.toc-item.toc-level-1 > .toc-link:hover,
.toc-item.toc-level-1 > .toc-link.active {
    background: var(--accent-color);
    color: var(--bg-dark-surface);
    font-weight: 600;
    font-variation-settings: 'wdth' 150, 'wght' 600;
}

.toc-item.toc-level-2 > .toc-link {
    font-size: var(--font-size-sm);
    color: var(--text-dark);
}

.toc-item.toc-level-2 > .toc-link:hover,
.toc-item.toc-level-2 > .toc-link.active {
    background: var(--accent-color);
    color: var(--bg-dark-surface);
    font-weight: 600;
    font-variation-settings: 'wdth' 150, 'wght' 600;
}

.toc-item.toc-level-3 > .toc-link {
    font-size: var(--font-size-xs);
    color: var(--text-dark);
}

.toc-item.toc-level-3 > .toc-link:hover,
.toc-item.toc-level-3 > .toc-link.active {
    background: var(--accent-color);
    color: var(--bg-dark-surface);
    font-weight: 600;
    font-variation-settings: 'wdth' 150, 'wght' 600;
}

.toc-empty {
    color: var(--text-muted);
    font-size: var(--font-size-sm);
    font-style: italic;
    margin: 0;
    padding: var(--spacing-sm);
}

.menu-card {
    width: 100%;
}

.menu-column-header {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.menu-column-title {
    font-size: var(--font-size-lg);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    letter-spacing: -0.02em;
    color: var(--text-dark);
    margin: 0;
}

.menu-section-title {
    font-size: var(--font-size-sm);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    letter-spacing: -0.01em;
    color: var(--text-dark);
    margin: 0;
}

.menu-column-subtitle {
    font-size: var(--font-size-sm);
    color: var(--text-light);
    margin: 0;
}

.menu-paragraph {
    font-size: var(--font-size-sm);
    color: var(--text-light);
    margin: 0;
}

.menu-card {
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.menu-card-title {
    font-size: var(--font-size-base);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    color: var(--text-dark);
    margin: 0;
}

.menu-card-title.menu-card-title-btn {
    font-size: var(--font-size-base);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    color: var(--text-dark);
}

.menu-stage-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    cursor: pointer;
}

.menu-stage-toggle-label {
    display: inline-flex;
    align-items: center;
    cursor: pointer;
}

.menu-stage-toggle {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
}

.menu-stage-circle {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1px solid var(--text-light);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.menu-stage-toggle:focus + .menu-stage-circle {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}

.menu-stage-toggle:checked + .menu-stage-circle {
    background: var(--accent-color);
    border-color: var(--accent-color);
}

.menu-stage-toggle:checked + .menu-stage-circle::after {
    content: "";
    width: 4px;
    height: 6px;
    border-right: 2px solid var(--bg-dark-surface);
    border-bottom: 2px solid var(--bg-dark-surface);
    transform: rotate(45deg);
}

.menu-card-title-btn {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    color: inherit;
    font: inherit;
    line-height: inherit;
    text-align: left;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
}

.menu-workflow-card {
    transition: border-color 0.2s ease;
}

.menu-workflow-card.is-expanded {
    border-color: var(--accent-color);
}

.menu-workflow-card .menu-card-body {
    display: none;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.menu-workflow-card.is-expanded .menu-card-body {
    display: flex;
}

.menu-card-icon {
    width: 24px;
    height: 24px;
    border-radius: 6px;
    color: var(--text-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.menu-card-icon svg {
    width: 16px;
    height: 16px;
    display: block;
}

.menu-card-text {
    font-size: var(--font-size-sm);
    color: var(--text-light);
    margin: 0;
}

.md-content {
    width: 100%;
    min-width: 0;
}

.md-content h1:first-child,
.md-content h2:first-child,
.md-content h3:first-child {
    margin-top: 0;
}

.md-content h1,
.md-content h2,
.md-content h3,
.md-content h4,
.md-content h5,
.md-content h6 {
    scroll-margin-top: calc(32px + var(--spacing-md) * 2 + var(--spacing-lg));
}

.md-content h1 {
    font-size: var(--font-size-3xl);
    font-weight: 600;
}

.md-content h2 {
    font-size: var(--font-size-2xl);
    font-weight: 500;
}

.md-content h3 {
    font-size: var(--font-size-xl);
    font-weight: 500;
}

.md-content h4 {
    font-size: var(--font-size-lg);
    font-weight: 500;
}

/* Scroll progress bar */
.scroll-progress-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: transparent;
    z-index: 3600; /* above wiki-dev-notice-banner (3500) */
    width: 100%;
}

.scroll-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary-color) 0%, var(--secondary-color) 100%);
    width: 0%;
    transition: width 0.1s ease-out;
}

.menu-column-header {
    margin-bottom: var(--spacing-sm);
}

.md-content a[href^="http://"]::before,
.md-content a[href^="https://"]::before {
    content: "↪ ";
}

/* Image styling */
.md-content img {
    max-width: 100%;
    height: auto;
    display: block;
    margin: var(--spacing-lg) auto;
    border-radius: var(--border-radius);
}

/* Centered images */
.md-content p:has(img) {
    text-align: center;
}

/* Image with caption (using alt text or following paragraph) */
.md-content img + em,
.md-content img + p em {
    display: block;
    text-align: center;
    font-size: var(--font-size-xs);
    color: var(--text-muted);
    margin-top: var(--spacing-xs);
    font-style: italic;
}

/* Full-width images */
.md-content img.full-width {
    width: 100%;
    max-width: 100%;
}

/* Small/thumbnail images */
.md-content img.small {
    max-width: 300px;
}

.md-content img.medium {
    max-width: 500px;
}

.md-content img.large {
    max-width: 800px;
}

/* Float images */
.md-content img.float-left {
    float: left;
    margin: var(--spacing-md) var(--spacing-md) var(--spacing-md) 0;
}

.md-content img.float-right {
    float: right;
    margin: var(--spacing-md) 0 var(--spacing-md) var(--spacing-md);
}

/* Image containers for better control */
.md-content .image-container {
    text-align: center;
    margin: var(--spacing-lg) 0;
}

.md-content .image-container img {
    margin: 0;
}

.md-content .image-container p {
    margin-top: var(--spacing-xs);
    font-size: var(--font-size-xs);
    color: var(--text-muted);
    font-style: italic;
}

/*
 * Markdown tables
 * 1. Tables use normal table layout (display:table) and stretch to 100%.
 * 2. Cell text wraps so the table fits the container whenever possible.
 * 3. A JS-injected .table-scroll-wrapper provides a table-level horizontal
 *    scrollbar when min-content width still exceeds the container.
 */
.table-scroll-wrapper {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin: var(--spacing-md) 0;
}

.table-scroll-wrapper > table {
    margin: 0;
}

.md-content table {
    width: 100%;
    border-collapse: collapse;
    margin: var(--spacing-md) 0;
    font-size: var(--font-size-sm);
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius);
    background: var(--bg-white);
}

.md-content table th,
.md-content table td {
    border: 1px solid var(--border-color);
    padding: var(--spacing-sm);
    text-align: left;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.md-content table th {
    background: var(--bg-dark-surface);
    color: var(--text-dark);
    font-weight: 500;
}

.md-content table tr:nth-child(even) td {
    background: var(--bg-light);
}

.md-content table tr:nth-child(odd) td {
    background: var(--bg-white);
}

.md-content table tr:hover td {
    background: rgba(77, 163, 255, 0.08);
}

.md-content table thead th {
    background: var(--bg-dark-surface);
}

.md-content table tbody tr td {
    background: transparent;
}

/* Plotly charts */
.plotly-chart {
    width: 100%;
    min-height: 360px;
    margin: var(--spacing-md) 0;
}

.plotly-playground-error {
    color: var(--secondary-color);
    font-size: var(--font-size-sm);
    margin-bottom: var(--spacing-sm);
}

.plotly-playground-chart {
    margin-bottom: var(--spacing-md);
}

.plotly-playground-editor {
    width: 100%;
    min-height: 260px;
    background: transparent;
    color: var(--text-dark);
    border: none;
    padding: 0;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
    line-height: 1.6;
    resize: vertical;
    overflow-x: auto;
    white-space: pre;
}

.plotly-playground .code-block-lines {
    display: flex;
    flex-direction: column;
    padding-top: var(--spacing-sm);
    padding-bottom: var(--spacing-sm);
    overflow: hidden;
}

.plotly-playground .code-block-lines pre {
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
    white-space: pre;
    line-height: 1.6;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
    color: var(--text-dark);
}

.plotly-playground .code-block-content {
    overflow: hidden;
}

.plotly-playground-editor {
    padding-top: var(--spacing-sm);
    padding-bottom: var(--spacing-sm);
}

.copy-button,
.plotly-playground-copy {
    background: transparent;
    color: var(--accent-color);
    border: none;
    border-radius: var(--border-radius-sm);
    font-size: var(--font-size-xs);
    padding: 2px 6px;
    cursor: pointer;
}

.copy-button:hover,
.plotly-playground-copy:hover {
    color: var(--accent-color);
    text-decoration: underline;
}

/* Code block container structure */
.code-block-container {
    background: var(--bg-light);
    padding: var(--spacing-sm);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-sm);
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    overflow: hidden;
}

.code-block-inner {
    background: var(--bg-dark-surface);
    border-radius: var(--border-radius);
    border: 1px solid var(--border-color);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

.code-block-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 6px var(--spacing-sm);
    font-size: var(--font-size-xs);
    color: var(--text-muted);
    background: transparent;
}

.code-block-sep {
    height: 1px;
    background: var(--border-color);
}

.code-block-body {
    display: flex;
    background: transparent;
    gap: var(--spacing-xs);
    overflow: visible;
    align-items: flex-start;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

.code-block-lang {
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.code-block-inner .highlight,
.code-block-inner pre {
    margin: 0;
    padding: 0;
    background: transparent;
    border: none;
    overflow: visible;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

.code-block-body pre,
.code-block-body code {
    border: none;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
    line-height: 1.6;
    max-width: 100%;
    box-sizing: border-box;
}

.code-block-lines {
    width: 2.25em;
    padding-right: var(--spacing-xs);
    color: var(--text-dark);
    flex-shrink: 0;
}

.code-block-lines pre {
    margin: 0;
    background: transparent;
    border: none;
    white-space: pre;
    line-height: 1.6;
}

.code-block-content {
    flex: 1;
    overflow-x: auto;
    padding-left: var(--spacing-sm);
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
}

.code-block-content pre {
    margin: 0;
    background: transparent;
    border: none;
    white-space: pre;
    line-height: 1.6;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    overflow-x: auto;
}

.linenodiv pre,
.linenodiv a,
.linenums a {
    pointer-events: none;
    color: var(--text-muted);
    text-decoration: none;
}

/* Pygments syntax highlighting — Monokai theme */
.code-block-body .hll { background-color: #49483e }
.code-block-body .c { color: #959077 }
.code-block-body .err { color: #ED007E; background-color: #1E0010 }
.code-block-body .esc { color: #F8F8F2 }
.code-block-body .g { color: #F8F8F2 }
.code-block-body .k { color: #66D9EF }
.code-block-body .l { color: #AE81FF }
.code-block-body .n { color: #F8F8F2 }
.code-block-body .o { color: #FF4689 }
.code-block-body .x { color: #F8F8F2 }
.code-block-body .p { color: #F8F8F2 }
.code-block-body .ch { color: #959077 }
.code-block-body .cm { color: #959077 }
.code-block-body .cp { color: #959077 }
.code-block-body .cpf { color: #959077 }
.code-block-body .c1 { color: #959077 }
.code-block-body .cs { color: #959077 }
.code-block-body .gd { color: #FF4689 }
.code-block-body .ge { color: #F8F8F2; font-style: italic }
.code-block-body .ges { color: #F8F8F2; font-weight: bold; font-style: italic }
.code-block-body .gr { color: #F8F8F2 }
.code-block-body .gh { color: #F8F8F2 }
.code-block-body .gi { color: #A6E22E }
.code-block-body .go { color: #66D9EF }
.code-block-body .gp { color: #FF4689; font-weight: bold }
.code-block-body .gs { color: #F8F8F2; font-weight: bold }
.code-block-body .gu { color: #959077 }
.code-block-body .gt { color: #F8F8F2 }
.code-block-body .kc { color: #66D9EF }
.code-block-body .kd { color: #66D9EF }
.code-block-body .kn { color: #FF4689 }
.code-block-body .kp { color: #66D9EF }
.code-block-body .kr { color: #66D9EF }
.code-block-body .kt { color: #66D9EF }
.code-block-body .ld { color: #E6DB74 }
.code-block-body .m { color: #AE81FF }
.code-block-body .s { color: #E6DB74 }
.code-block-body .na { color: #A6E22E }
.code-block-body .nb { color: #F8F8F2 }
.code-block-body .nc { color: #A6E22E }
.code-block-body .no { color: #66D9EF }
.code-block-body .nd { color: #A6E22E }
.code-block-body .ni { color: #F8F8F2 }
.code-block-body .ne { color: #A6E22E }
.code-block-body .nf { color: #A6E22E }
.code-block-body .nl { color: #F8F8F2 }
.code-block-body .nn { color: #F8F8F2 }
.code-block-body .nx { color: #A6E22E }
.code-block-body .py { color: #F8F8F2 }
.code-block-body .nt { color: #FF4689 }
.code-block-body .nv { color: #F8F8F2 }
.code-block-body .ow { color: #FF4689 }
.code-block-body .pm { color: #F8F8F2 }
.code-block-body .w { color: #F8F8F2 }
.code-block-body .mb { color: #AE81FF }
.code-block-body .mf { color: #AE81FF }
.code-block-body .mh { color: #AE81FF }
.code-block-body .mi { color: #AE81FF }
.code-block-body .mo { color: #AE81FF }
.code-block-body .sa { color: #E6DB74 }
.code-block-body .sb { color: #E6DB74 }
.code-block-body .sc { color: #E6DB74 }
.code-block-body .dl { color: #E6DB74 }
.code-block-body .sd { color: #E6DB74 }
.code-block-body .s2 { color: #E6DB74 }
.code-block-body .se { color: #AE81FF }
.code-block-body .sh { color: #E6DB74 }
.code-block-body .si { color: #E6DB74 }
.code-block-body .sx { color: #E6DB74 }
.code-block-body .sr { color: #E6DB74 }
.code-block-body .s1 { color: #E6DB74 }
.code-block-body .ss { color: #E6DB74 }
.code-block-body .bp { color: #F8F8F2 }
.code-block-body .fm { color: #A6E22E }
.code-block-body .vc { color: #F8F8F2 }
.code-block-body .vg { color: #F8F8F2 }
.code-block-body .vi { color: #F8F8F2 }
.code-block-body .vm { color: #F8F8F2 }
.code-block-body .il { color: #AE81FF }

/* Fallback: apply same highlighting inside .md-content for pre-wrap rendering */
.md-content pre code .hll { background-color: #49483e }
.md-content pre code .c { color: #959077 }
.md-content pre code .err { color: #ED007E; background-color: #1E0010 }
.md-content pre code .k { color: #66D9EF }
.md-content pre code .l { color: #AE81FF }
.md-content pre code .n { color: #F8F8F2 }
.md-content pre code .o { color: #FF4689 }
.md-content pre code .p { color: #F8F8F2 }
.md-content pre code .ch { color: #959077 }
.md-content pre code .cm { color: #959077 }
.md-content pre code .cp { color: #959077 }
.md-content pre code .cpf { color: #959077 }
.md-content pre code .c1 { color: #959077 }
.md-content pre code .cs { color: #959077 }
.md-content pre code .gd { color: #FF4689 }
.md-content pre code .ge { font-style: italic }
.md-content pre code .gi { color: #A6E22E }
.md-content pre code .go { color: #66D9EF }
.md-content pre code .gp { color: #FF4689; font-weight: bold }
.md-content pre code .gs { font-weight: bold }
.md-content pre code .gu { color: #959077 }
.md-content pre code .kc { color: #66D9EF }
.md-content pre code .kd { color: #66D9EF }
.md-content pre code .kn { color: #FF4689 }
.md-content pre code .kp { color: #66D9EF }
.md-content pre code .kr { color: #66D9EF }
.md-content pre code .kt { color: #66D9EF }
.md-content pre code .ld { color: #E6DB74 }
.md-content pre code .m { color: #AE81FF }
.md-content pre code .s { color: #E6DB74 }
.md-content pre code .na { color: #A6E22E }
.md-content pre code .nb { color: #F8F8F2 }
.md-content pre code .nc { color: #A6E22E }
.md-content pre code .no { color: #66D9EF }
.md-content pre code .nd { color: #A6E22E }
.md-content pre code .ne { color: #A6E22E }
.md-content pre code .nf { color: #A6E22E }
.md-content pre code .nn { color: #F8F8F2 }
.md-content pre code .nt { color: #FF4689 }
.md-content pre code .nv { color: #F8F8F2 }
.md-content pre code .ow { color: #FF4689 }
.md-content pre code .w { color: #F8F8F2 }
.md-content pre code .mb { color: #AE81FF }
.md-content pre code .mf { color: #AE81FF }
.md-content pre code .mh { color: #AE81FF }
.md-content pre code .mi { color: #AE81FF }
.md-content pre code .mo { color: #AE81FF }
.md-content pre code .sa { color: #E6DB74 }
.md-content pre code .sb { color: #E6DB74 }
.md-content pre code .sc { color: #E6DB74 }
.md-content pre code .dl { color: #E6DB74 }
.md-content pre code .sd { color: #E6DB74 }
.md-content pre code .s2 { color: #E6DB74 }
.md-content pre code .se { color: #AE81FF }
.md-content pre code .sh { color: #E6DB74 }
.md-content pre code .si { color: #E6DB74 }
.md-content pre code .sx { color: #E6DB74 }
.md-content pre code .sr { color: #E6DB74 }
.md-content pre code .s1 { color: #E6DB74 }
.md-content pre code .ss { color: #E6DB74 }
.md-content pre code .bp { color: #F8F8F2 }
.md-content pre code .fm { color: #A6E22E }
.md-content pre code .vc { color: #F8F8F2 }
.md-content pre code .vg { color: #F8F8F2 }
.md-content pre code .vi { color: #F8F8F2 }
.md-content pre code .vm { color: #F8F8F2 }
.md-content pre code .il { color: #AE81FF }

.plotly-playground {
    position: relative;
}

.menu-card .btn {
    align-self: flex-start;
}

.btn-disabled {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: none;
}

.btn-disabled:hover {
    background: var(--bg-light);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    transform: none;
}

.menu-link-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.menu-link {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    color: var(--accent-color);
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    line-height: 1.2;
}

.menu-link:hover {
    text-decoration: underline;
}

.menu-link.disabled {
    color: var(--text-muted);
    cursor: not-allowed;
    pointer-events: none;
}

.menu-link-icon {
    width: 16px;
    height: 16px;
    border-radius: 4px;
    border: 1px solid var(--accent-color);
    background: rgba(18, 93, 174, 0.2);
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--accent-color);
}

.menu-link-icon svg {
    width: 10px;
    height: 10px;
    display: block;
}

.menu-link.disabled .menu-link-icon {
    border-color: var(--text-muted);
    background: transparent;
    color: var(--text-muted);
}

.menu-small-link {
    font-size: var(--font-size-xs);
    color: var(--accent-color);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    text-decoration: none;
}

.menu-small-link:hover {
    color: var(--text-dark);
}

.menu-small-link-button {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    cursor: pointer;
    font-size: var(--font-size-xs);
    color: var(--accent-color);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    text-decoration: none;
    align-self: flex-start;
}

.menu-small-link-button:hover {
    color: var(--text-dark);
}

.tutorial-overlay {
    position: fixed;
    inset: 0;
    display: none;
    pointer-events: none;
}

.tutorial-overlay.active {
    display: block;
}

.tutorial-dim {
    position: fixed;
    background: rgba(0, 0, 0, 0.6);
    z-index: 2000;
    pointer-events: auto;
}

.tutorial-highlight {
    position: relative;
    z-index: 2500;
    outline: 2px solid var(--accent-color);
    outline-offset: 4px;
    box-shadow: 0 0 0 2px rgba(77, 163, 255, 0.25);
}

.status-bar.tutorial-raise {
    z-index: 2500;
}

.tutorial-tooltip {
    position: absolute;
    max-width: 320px;
    background: var(--bg-light);
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-md);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
    color: var(--text-dark);
    z-index: 3000;
    pointer-events: auto;
}

.tutorial-tooltip-title {
    font-size: var(--font-size-base);
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    margin: 0 0 var(--spacing-xs);
}

.tutorial-tooltip-text {
    font-size: var(--font-size-sm);
    color: var(--text-light);
    margin: 0 0 var(--spacing-md);
}

.tutorial-tooltip-actions {
    display: flex;
    gap: var(--spacing-xs);
    justify-content: flex-end;
}

.tutorial-btn {
    min-width: 64px;
}

/* Job List Page Styles */
body.joblist {
    background: #000000; /* Pure black */
    padding: 0 !important;
    margin: 0;
    overflow: hidden;
    height: 100vh;
    display: flex;
    flex-direction: column;
    color: var(--text-dark);
}

body.joblist > .container {
    flex: 1;
    padding: var(--spacing-3xl) var(--spacing-lg);
    overflow-y: auto;
}

body.joblist > .status-bar {
    flex-shrink: 0;
}

h3 {
    font-size: var(--font-size-base);
    font-weight: 400;
    font-family: var(--font-family);
    font-variation-settings: 'wdth' 150, 'wght' 400;
    letter-spacing: -0.02em;
    color: var(--text-dark);
    margin-bottom: var(--spacing-lg);
}

#console, #jobs {
    padding: var(--spacing-md) 0;
}

/* Console output uses monospace font */
#console {
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
    line-height: 1.5;
}

.log {
    color: var(--text-dark);
    white-space: pre-wrap;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
}

.progress {
    color: var(--accent-color);
    white-space: pre;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
}

.binary {
    color: var(--text-light);
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
}

.done {
    color: var(--success-color);
    font-weight: 600;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
}

.error {
    color: var(--secondary-color);
    font-weight: 600;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
}

.warning {
    color: var(--warning-color);
    font-weight: 600;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
}

.job {
    padding: var(--spacing-lg);
    margin-bottom: var(--spacing-md);
    border-left: 4px solid var(--accent-color);
    background: var(--bg-light);
    border-radius: var(--border-radius);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    cursor: pointer;
    transition: all 0.2s ease;
}

.job:hover {
    background: var(--bg-white);
    border-left-color: var(--accent-color);
    transform: translateX(4px);
    box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);
}

.job-name {
    font-weight: 500;
    font-variation-settings: 'wdth' 150, 'wght' 500;
    letter-spacing: -0.02em;
    color: var(--text-dark);
    font-size: var(--font-size-lg);
    margin-bottom: var(--spacing-xs);
}

.job-desc {
    color: var(--text-light);
    margin-top: var(--spacing-xs);
    font-size: var(--font-size-sm);
    font-weight: 200;
    font-variation-settings: 'wdth' 150, 'wght' 200;
    letter-spacing: -0.02em;
    line-height: 1.5;
}

/* Shared Panel Layout - Used by multiple pages with map/tool layout */
.left-panel,
.right-panel {
    position: fixed;
    top: 0; /* Will be adjusted by toolbar height dynamically */
    width: 25%;
    min-width: 300px;
    max-width: 400px;
    height: auto;
    max-height: calc(100vh - 24px * 2 - var(--spacing-md) * 4); /* Status bar + top/bottom offsets */
    background: var(--bg-dark-surface);
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    z-index: 100;
    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.3);
}

.left-panel {
    left: var(--spacing-md);
}

.right-panel {
    right: var(--spacing-md);
    box-shadow: -2px 0 8px rgba(0, 0, 0, 0.3);
}

/* Responsive Design for Shared Panels */
@media (max-width: 1200px) {
    .left-panel,
    .right-panel {
        width: 30%;
        max-width: 350px;
    }
}

@media (max-width: 920px) {
    .left-panel,
    .right-panel {
        width: 100%;
        max-width: 100%;
        height: 50vh;
        bottom: auto;
    }
    
    .left-panel {
        top: auto;
        bottom: 24px;
    }
    
    .right-panel {
        top: 50vh;
    }
}

/* Responsive Design */
@media (max-width: 920px) {
    .container {
        padding: 0 var(--spacing-md);
        max-width: 100% !important;
        width: 100% !important;
        box-sizing: border-box;
    }

    .app-title {
        font-size: var(--font-size-4xl);
    }

    .menu-title {
        font-size: var(--font-size-2xl);
    }

    .menu-list {
        max-width: 100%;
    }

    h3 {
        font-size: var(--font-size-xl);
    }

    /* Hide navigation menu and GitHub button on tablets/phones */
    .wiki-topbar-nav {
        display: none;
    }

    .wiki-topbar-link {
        display: none;
    }

    /* Adjust topbar for narrow screens */
    .wiki-topbar-inner {
        padding: var(--spacing-sm) var(--spacing-md);
        max-width: 100% !important;
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Keep only logo and title visible */
    .wiki-topbar-left-group {
        gap: 0;
    }

    /* Hide left navigation panel and TOC on narrow screens */
    .menu-column-nav,
    .menu-column-toc {
        display: none;
    }

    /* Make content column full width */
    .menu-grid {
        grid-template-columns: 1fr !important;
    }

    /* Adjust main content padding */
    body.menu > .container {
        padding-top: calc(32px + var(--spacing-sm) * 2 + var(--spacing-xl));
    }

    /* Ensure code blocks resize properly on mobile */
    .code-block-container,
    .code-block-inner,
    .code-block-body,
    .code-block-content,
    .code-block-content pre,
    .code-block-body table,
    .code-block-body table td,
    .code-block-body table td pre,
    .code-block-body table td code {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box;
    }

    .md-content {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box;
    }

    .menu-column-content {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box;
    }

    /* Fix table-based code block layouts */
    .highlighttable {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        table-layout: auto !important;
    }

    .highlighttable td {
        width: auto !important;
        max-width: 100% !important;
    }

    .highlighttable td.linenos {
        width: auto !important;
        min-width: 0 !important;
    }

    .highlighttable td.code {
        width: auto !important;
        min-width: 0 !important;
    }
}

@media (max-width: 480px) {
    .app-title {
        font-size: var(--font-size-3xl);
    }

    .menu-title {
        font-size: var(--font-size-xl);
    }

    h3 {
        font-size: var(--font-size-lg);
    }

    /* Ensure code blocks resize properly on small mobile */
    .code-block-container,
    .code-block-inner,
    .code-block-body,
    .code-block-content,
    .code-block-content pre,
    .code-block-body table,
    .code-block-body table td,
    .code-block-body table td pre,
    .code-block-body table td code {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box;
    }

    .md-content {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box;
    }

    .menu-column-content {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box;
    }

    .highlighttable {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        table-layout: auto !important;
    }

    .highlighttable td {
        width: auto !important;
        max-width: 100% !important;
    }

    .highlighttable td.linenos {
        width: auto !important;
        min-width: 0 !important;
    }

    .highlighttable td.code {
        width: auto !important;
        min-width: 0 !important;
    }
}

/* Bottom “under development” banner (all pages using base layout) */
@keyframes wiki-dev-notice-banner-in {
    from {
        transform: translateY(100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

body.wiki-has-dev-banner {
    padding-bottom: clamp(7rem, 22vh, 11rem);
}

.wiki-dev-notice-banner {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 3500;
    padding: var(--spacing-md) var(--spacing-lg);
    padding-bottom: max(var(--spacing-md), env(safe-area-inset-bottom, 0px));
    background: var(--bg-dark-surface);
    border-top: 1px solid var(--border-color);
    box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.35);
}

.wiki-dev-notice-banner[hidden] {
    display: none;
}

.wiki-dev-notice-banner:not([hidden]) {
    animation: wiki-dev-notice-banner-in 0.4s ease-out;
}

.wiki-dev-notice-banner-inner {
    max-width: var(--max-width);
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--spacing-md);
    align-content: start;
}

.wiki-dev-notice-banner-actions {
    justify-self: start;
    margin-top: var(--spacing-xs);
}

.wiki-dev-notice-title {
    font-size: var(--font-size-lg);
    font-variation-settings: 'wdth' 150, 'wght' 600;
    color: var(--text-dark);
    margin: 0;
    letter-spacing: -0.02em;
}

.wiki-dev-notice-text {
    font-size: var(--font-size-sm);
    color: var(--text-light);
    line-height: 1.55;
    margin: 0;
}

.wiki-dev-notice-contact {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    line-height: 1.55;
    margin: 0;
}

.wiki-dev-notice-contact-label {
    display: inline;
    margin-right: var(--spacing-xs);
    font-variation-settings: 'wdth' 150, 'wght' 500;
    color: var(--text-light);
}

.wiki-dev-notice-contact-sep {
    margin: 0 var(--spacing-sm);
    color: var(--text-muted);
}

.wiki-dev-notice-link {
    color: var(--accent-color);
    text-decoration: none;
    border-radius: var(--border-radius-sm);
    padding: 0 var(--spacing-xs);
    margin: 0 calc(-1 * var(--spacing-xs));
}

.wiki-dev-notice-link:hover {
    text-decoration: underline;
}

.wiki-dev-notice-link:focus-visible {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}

.wiki-dev-notice-ok {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 5rem;
    padding: var(--spacing-sm) var(--spacing-lg);
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    font-variation-settings: 'wdth' 150, 'wght' 500;
    color: var(--bg-dark-surface);
    background: var(--accent-color);
    border: none;
    border-radius: var(--border-radius-sm);
    cursor: pointer;
}

.wiki-dev-notice-ok:hover {
    filter: brightness(1.08);
}

.wiki-dev-notice-ok:focus-visible {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}
