/* Custom Header Accent for Dark Mode */
.slides h3 {
    color: rgb(255, 221, 164);
}

/* Floating Theme Toggle Button */
.slide-theme-toggle {
    position: fixed;
    top: 15px;
    right: 15px;
    z-index: 9999;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, 0.25);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 18px;
    user-select: none;
    transition: all 0.25s ease;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
}

.slide-theme-toggle:hover {
    transform: scale(1.1);
    background: rgba(255, 255, 255, 0.3);
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
}

/* ==========================================================
   Light Theme Overrides for Reveal.js Slides
   ========================================================== */
body.theme-light,
.theme-light .reveal-viewport,
.reveal-viewport.theme-light {
    --r-background-color: #f8f9fa !important;
    --r-main-color: #212529 !important;
    --r-heading-color: #0f3d68 !important;
    --r-link-color: #0d6efd !important;
    --quarto-body-bg: #f8f9fa !important;
    --quarto-body-color: #212529 !important;
    background-color: #f8f9fa !important;
    color: #212529 !important;
}

body.theme-light .slide-theme-toggle {
    background: rgba(0, 0, 0, 0.08);
    border: 1px solid rgba(0, 0, 0, 0.15);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
}

body.theme-light .slide-theme-toggle:hover {
    background: rgba(0, 0, 0, 0.15);
}

body.theme-light .slides h1,
body.theme-light .slides h2 {
    color: #0f3d68 !important;
}

body.theme-light .slides h3 {
    color: #1a5276 !important;
}

body.theme-light .reveal {
    color: #212529 !important;
}

body.theme-light .reveal .slides section,
body.theme-light .reveal p,
body.theme-light .reveal li,
body.theme-light .reveal dt,
body.theme-light .reveal dd {
    color: #212529 !important;
}

/* Code Blocks in Light Mode */
body.theme-light .reveal div.sourceCode,
.theme-light .reveal div.sourceCode {
    background-color: #f8f9fa !important;
    border: 1px solid #d0d7de !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    color: #24292f !important;
}

body.theme-light .reveal pre code,
body.theme-light .reveal div.sourceCode pre,
.theme-light .reveal pre code,
.theme-light .reveal div.sourceCode pre {
    background-color: #f8f9fa !important;
    color: #24292f !important;
}

/* Syntax Highlighting Tokens in Light Mode */
body.theme-light .reveal code span,
.theme-light .reveal code span {
    color: #24292f !important; /* Base text */
}

body.theme-light .reveal code span.kw,
.theme-light .reveal code span.kw { color: #cf222e !important; font-weight: bold; } /* Keyword */

body.theme-light .reveal code span.cf,
.theme-light .reveal code span.cf { color: #cf222e !important; font-weight: bold; } /* ControlFlow */

body.theme-light .reveal code span.fu,
.theme-light .reveal code span.fu { color: #8250df !important; } /* Function */

body.theme-light .reveal code span.bu,
.theme-light .reveal code span.bu { color: #0550ae !important; } /* BuiltIn */

body.theme-light .reveal code span.im,
.theme-light .reveal code span.im { color: #cf222e !important; } /* Import */

body.theme-light .reveal code span.st,
body.theme-light .reveal code span.sc,
body.theme-light .reveal code span.ss,
body.theme-light .reveal code span.vs,
body.theme-light .reveal code span.ch,
.theme-light .reveal code span.st,
.theme-light .reveal code span.sc,
.theme-light .reveal code span.ss,
.theme-light .reveal code span.vs,
.theme-light .reveal code span.ch { color: #0a3069 !important; } /* Strings & Chars */

body.theme-light .reveal code span.co,
body.theme-light .reveal code span.cv,
body.theme-light .reveal code span.do,
.theme-light .reveal code span.co,
.theme-light .reveal code span.cv,
.theme-light .reveal code span.do { color: #6e7781 !important; font-style: italic; } /* Comments & Docs */

body.theme-light .reveal code span.dv,
body.theme-light .reveal code span.fl,
body.theme-light .reveal code span.bn,
body.theme-light .reveal code span.cn,
.theme-light .reveal code span.dv,
.theme-light .reveal code span.fl,
.theme-light .reveal code span.bn,
.theme-light .reveal code span.cn { color: #0550ae !important; } /* Numbers & Constants */

body.theme-light .reveal code span.dt,
body.theme-light .reveal code span.at,
body.theme-light .reveal code span.va,
.theme-light .reveal code span.dt,
.theme-light .reveal code span.at,
.theme-light .reveal code span.va { color: #953800 !important; } /* Types, Attributes & Variables */

body.theme-light .reveal code span.op,
.theme-light .reveal code span.op { color: #24292f !important; } /* Operators */

body.theme-light .reveal code span.al,
body.theme-light .reveal code span.er,
.theme-light .reveal code span.al,
.theme-light .reveal code span.er { color: #cf222e !important; } /* Alerts & Errors */

body.theme-light .reveal code span.in,
body.theme-light .reveal code span.an,
.theme-light .reveal code span.in,
.theme-light .reveal code span.an { color: #6e7781 !important; } /* Info & Annotation */

body.theme-light .reveal pre.numberSource code > span > a:first-child::before,
.theme-light .reveal pre.numberSource code > span > a:first-child::before {
    color: #8c959f !important; /* Line numbers */
}

body.theme-light .reveal table th {
    color: #0f3d68 !important;
    border-bottom: 2px solid #adb5bd !important;
}

body.theme-light .reveal table td {
    color: #212529 !important;
    border-bottom: 1px solid #dee2e6 !important;
}

body.theme-light .reveal blockquote {
    color: #495057 !important;
    border-left-color: #0d6efd !important;
    background: rgba(13, 110, 253, 0.05) !important;
}

body.theme-light .reveal .slide-number {
    color: #6c757d !important;
    background-color: transparent !important;
}