@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:400;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-cyrillic-ext-400.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0NSDulI.woff2) format("woff2");
unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:400;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-cyrillic-400.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh2dSDulI.woff2) format("woff2");
unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:400;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-greek-ext-400.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0dSDulI.woff2) format("woff2");
unicode-range:U+1F00-1FFF
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:400;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-greek-400.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3tSDulI.woff2) format("woff2");
unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:400;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-symbols2-400.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bhZ_Wmh2uX.woff2) format("woff2");
unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:400;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-latin-ext-400.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh09SDulI.woff2) format("woff2");
unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:400;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-latin-400.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3dSD.woff2) format("woff2");
unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:600;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-cyrillic-ext-600.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0NSDulI.woff2) format("woff2");
unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:600;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-cyrillic-600.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh2dSDulI.woff2) format("woff2");
unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:600;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-greek-ext-600.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0dSDulI.woff2) format("woff2");
unicode-range:U+1F00-1FFF
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:600;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-greek-600.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3tSDulI.woff2) format("woff2");
unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:600;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-symbols2-600.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bhZ_Wmh2uX.woff2) format("woff2");
unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:600;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-latin-ext-600.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh09SDulI.woff2) format("woff2");
unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF
}

@font-face {
font-family:'Fira Code';
font-style:normal;
font-weight:600;
font-display:swap;
src:url(../runtime/fonts/fira-code-v27-latin-600.woff2) format("woff2"),url(https://fonts.gstatic.com/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3dSD.woff2) format("woff2");
unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD
}

@font-face {
font-family:"IBM Plex Mono";
font-style:normal;
font-weight:400;
font-display:swap;
src:local("IBM Plex Mono"),local(IBMPlexMono),url(../runtime/fonts/ibm-plex-mono-v20-latin-regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/@fontsource/ibm-plex-mono@5.0.0/files/ibm-plex-mono-latin-400-normal.woff2) format("woff2")
}

@font-face {
font-family:"IBM Plex Mono";
font-style:normal;
font-weight:600;
font-display:swap;
src:local("IBM Plex Mono SemiBold"),local(IBMPlexMono-SemiBold),url(../runtime/fonts/ibm-plex-mono-v20-latin-600.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/@fontsource/ibm-plex-mono@5.0.0/files/ibm-plex-mono-latin-600-normal.woff2) format("woff2")
}

@font-face {
font-family:"JetBrains Mono";
font-style:normal;
font-weight:400;
font-display:block;
src:local("JetBrains Mono"),local(JetBrainsMono-Regular),url(../runtime/fonts/JetBrainsMono-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono@master/fonts/webfonts/JetBrainsMono-Regular.woff2) format("woff2")
}

:root {
--font-main:Inter,"Segoe UI","Helvetica Neue",Arial,sans-serif;
--font-mono:JetBrainsMono-Regular,"JetBrains Mono","IBM Plex Mono","Fira Code",Consolas,monospace;
--font-size-body:1.5rem;
--font-size-col:1.35rem;
--font-size-table:1.1rem;
--font-size-code:1rem;
--font-size-h2:2rem;
--font-size-h3:1.7rem;
--font-size-h4:1.35rem;
--color-body:#edf2f4;
--color-col-black:#fff;
--color-col-white:#1a1a2e;
--color-col-orange:#edf2f4;
--color-col-yellow:#edf2f4;
--color-col-blue:#edf2f4;
--color-col-green:#edf2f4;
--color-col-red:#edf2f4;
--color-light-box:#000;
--color-dark-box:#fff;
--color-accent:#e8c547;
--color-muted:#a0aec0;
--bg-col-black:#000000d0;
--bg-col-white:#ffffffd0;
--bg-col-blue:#3169b9d0;
--bg-col-orange:#ed8127d0;
--bg-col-yellow:#ecc309d0;
--bg-col-green:#4a9b35d0;
--bg-col-red:#df0c26d0;
--bg-box:#ffffffd0;
--bg-dark-box:#000000d0;
--line-height-body:1.45;
--line-height-code:1.49;
--padding-section:5%;
--border-radius-custom:8px;
--r-code-font:"Fira Code"
}

.reveal p,.reveal li,.reveal ul,.reveal ol {
color:var(--color-body);
width:100%;
margin-left:2em;
font:400 var(--font-size-body)/var(--line-height-body) var(--font-main)
}

.reveal ul,.reveal ol {
margin-left:1em
}

.reveal li {
margin-bottom:.2em;
margin-left:2em
}

.reveal strong {
font-weight:600
}

.reveal em {
font-style:italic;
opacity:.92
}

.reveal .mermaid {
display:flex!important;
justify-content:center!important;
align-items:flex-start!important;
width:100%!important;
max-height:48vh!important;
overflow:hidden!important;
margin-top:10px
}

.reveal .mermaid svg {
max-height:100%!important;
width:auto!important;
height:auto!important;
max-width:100%!important;
display:block;
margin:0 auto
}

.reveal .mermaid .nodeLabel p,.reveal .mermaid .nodeLabel span,.reveal .mermaid .edgeLabel p,.reveal .mermaid .edgeLabel span,.reveal .mermaid .label p,.reveal .mermaid .label span {
all:revert!important;
color:inherit!important;
margin:0!important;
font:inherit var(--font-main)!important
}

.reveal .mermaid foreignObject div {
font-size:inherit!important;
line-height:1.5!important;
color:inherit!important
}

.reveal .mermaid .grid {
fill:none
}

.reveal h1 {
font-family:var(--font-main);
color:#fff;
text-transform:uppercase;
text-shadow:2px 2px 4px #00000080
}

.reveal h2 {
color:#fff;
text-align:left!important;
text-transform:uppercase;
letter-spacing:.04em;
margin-bottom:.1em;
font:700 var(--font-size-h2) var(--font-main)!important
}

.reveal h2.hidden-title {
display:none
}

.reveal h3 {
color:var(--color-accent);
text-align:left!important;
text-transform:uppercase;
margin-bottom:.2em;
margin-top:0;
font:600 var(--font-size-h3) var(--font-main)!important
}

.reveal .slides .h3-surrogate,.reveal .slides div.h3-surrogate p {
color:var(--color-accent);
text-align:left!important;
text-transform:uppercase;
margin-bottom:.2em;
margin-top:0;
font:600 var(--font-size-h3) var(--font-main)!important
}

.reveal h3.hidden-title {
display:none
}

.reveal h4 {
color:#fff;
text-align:left!important;
font:600 var(--font-size-h4) var(--font-main)!important
}

.reveal .slides section#title-slide {
display:flex!important;
flex-direction:column!important;
justify-content:center!important;
align-items:flex-start!important;
text-align:left!important;
padding-left:8%!important;
height:100%!important;
width:100%!important
}

.reveal #title-slide h1.title {
font-size:3.2rem!important;
line-height:1.2;
margin-bottom:.4em;
text-align:left!important
}

.reveal #title-slide p.subtitle {
font-size:1.8rem!important;
color:var(--color-accent);
font-weight:400;
font-style:italic;
margin:.2em 0 .6em
}

.reveal #title-slide p.author,.reveal #title-slide p.date {
font-size:1.6rem!important;
margin:.2em 0;
opacity:.85
}

.reveal table {
border-collapse:collapse;
width:100%;
margin:.4em 0;
color:var(--color-body);
font:var(--font-size-table) var(--font-main)
}

.reveal table th {
font-weight:600;
background:#e8c54726;
color:var(--color-accent);
padding:.4em .7em;
border-bottom:2px solid var(--color-accent);
text-align:left
}

.reveal table td {
padding:.35em .7em;
border-bottom:1px solid #ffffff1f;
vertical-align:top
}

.reveal table tr:last-child td {
border-bottom:none
}

.reveal table tbody tr:nth-child(even) td {
background:#ffffff0a
}

.reveal table td code,.reveal table th code {
font-size:.9em;
background:#ffffff1a;
padding:.1em .3em;
border-radius:3px
}

.reveal blockquote {
color:var(--color-muted);
border-left:4px solid var(--color-accent);
padding:.5em 1.2em;
margin:.8em 0;
background:#ffffff0a;
border-radius:0 6px 6px 0;
width:auto;
font:italic 1.3rem var(--font-main)
}

.reveal blockquote p {
font-size:inherit;
color:inherit;
font-style:inherit;
line-height:1.5
}

.reveal .cols {
display:flex;
gap:2%;
align-items:flex-start;
width:100%
}

.reveal .col {
display:flex;
flex-direction:column
}

.reveal .col p,.reveal .col li,.reveal .col ul,.reveal .col ol {
font-size:var(--font-size-col);
line-height:1.4
}

.reveal .col h4 {
font-size:var(--font-size-h4)!important;
margin-bottom:.3em
}

.cols-full {
position:relative;
width:100%;
height:100%;
top:0;
left:0;
margin:0;
padding:0;
display:flex;
justify-content:space-between
}

.cols-raw {
flex:1;
position:relative;
width:100%;
height:100%;
min-width:100%;
top:0;
left:0;
margin:0;
padding:0;
display:flex;
justify-content:space-between
}

.rounded {
border-radius:var(--border-radius-custom)!important
}

.rounded-tl {
border-top-left-radius:var(--border-radius-custom)!important
}

.rounded-tr {
border-top-right-radius:var(--border-radius-custom)!important
}

.rounded-bl {
border-bottom-left-radius:var(--border-radius-custom)!important
}

.rounded-br {
border-bottom-right-radius:var(--border-radius-custom)!important
}

.rounded-top {
border-top-left-radius:var(--border-radius-custom)!important;
border-top-right-radius:var(--border-radius-custom)!important
}

.rounded-bottom {
border-bottom-left-radius:var(--border-radius-custom)!important;
border-bottom-right-radius:var(--border-radius-custom)!important
}

.rounded-left {
border-top-left-radius:var(--border-radius-custom)!important;
border-bottom-left-radius:var(--border-radius-custom)!important
}

.rounded-right {
border-top-right-radius:var(--border-radius-custom)!important;
border-bottom-right-radius:var(--border-radius-custom)!important
}

.bg-black {
background-color:var(--bg-col-black);
color:var(--color-col-black)
}

.bg-white {
background-color:var(--bg-col-white);
color:var(--color-col-white)
}

.reveal .bg-white .light-box h4 blockquote p {
color:#000
}

.bg-yellow {
background-color:var(--bg-col-yellow);
color:var(--color-col-yellow)
}

.bg-orange {
background-color:var(--bg-col-orange);
color:var(--color-col-orange)
}

.bg-red {
background-color:var(--bg-col-red);
color:var(--color-col-red)
}

.bg-green {
background-color:var(--bg-col-green);
color:var(--color-col-green)
}

.bg-blue {
background-color:var(--bg-col-blue);
color:var(--color-col-blue)
}

.col-raw {
flex:1;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
align-self:stretch
}

.col-raw p,.col-raw li,.col-raw ul,.col-raw ol {
text-align:left;
margin-left:.8em;
font:400 var(--font-size-col)/1.45 var(--font-main)
}

.col-full {
padding:0;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
align-self:stretch
}

.col-full p,.col-full li,.col-full ul,.col-full ol {
text-align:left;
margin-left:.8em;
font:400 var(--font-size-col)/1.45 var(--font-main)
}

.col-full {
box-sizing:border-box!important;
min-width:0!important;
overflow:hidden!important;
padding:1.5rem 2rem!important
}

.col-full p,.col-full ol,.col-full ul {
display:block!important;
width:100%!important;
max-width:90%!important;
box-sizing:border-box!important;
text-align:left!important;
margin-right:auto!important;
white-space:normal!important
}

.col-full .light-box,.col-full p:has(img),.col-full img {
max-width:100%!important;
margin-left:auto!important;
margin-right:auto!important
}

.col-full ol,.col-full ul {
padding-left:2rem!important;
margin-left:0!important
}

.col-full ol li,.col-full ul li {
display:list-item!important;
width:100%!important;
max-width:100%!important;
box-sizing:border-box!important;
margin-bottom:.75rem!important;
overflow-wrap:anywhere!important;
word-wrap:break-word!important;
word-break:normal!important;
hyphens:none!important
}

.col-full ol li code,.col-full ol li strong,.col-full ol li em {
display:inline!important;
white-space:normal!important
}

.col-full pre.code-wrapper {
max-width:100%!important;
width:100%!important;
box-sizing:border-box!important;
overflow-x:auto!important
}

.col-full.center p,.col-full.center ul,.col-full.center ol,.col-full .center p,.col-full .center ul,.col-full .center ol,.col-full p.center,.col-full ul.center,.col-full ol.center {
text-align:center
}

.col-full.center li,.col-full .center li,.col-full li.center {
margin-left:6em
}

.col-full h4 {
font-size:var(--font-size-h4)!important;
margin-bottom:.3em
}

.reveal .col-full.bg-white h4 {
color:#000
}

.reveal .col-full.bg-white p {
color:#000
}

.reveal .row-full.bg-white h4 {
color:#000
}

.reveal .row-full.bg-white p {
color:#000
}

.cols-full ul {
padding:0;
margin:0;
text-align:left
}

.cols-raw ul {
padding:0;
margin:0;
text-align:left
}

.reveal .rows {
display:flex;
flex-direction:column;
gap:1%;
width:100%
}

.reveal .row {
display:flex;
flex-direction:row;
align-items:center;
width:100%
}

.reveal .rows-raw {
display:flex;
flex-direction:column;
gap:1%;
width:100%
}

.reveal .row p,.reveal .row li,.reveal .row ul,.reveal .row ol {
font-size:var(--font-size-col);
line-height:1.4
}

.reveal .row h4 {
font-size:var(--font-size-h4)!important;
margin-bottom:.3em
}

.rows-full {
position:relative;
width:100%;
height:100%;
top:0;
left:0;
margin:0;
padding:0;
display:flex;
flex-direction:column;
justify-content:space-between
}

.rows-full ul {
padding:0;
margin:0;
text-align:left
}

.rows-full li {
margin-bottom:12px;
margin-left:2em
}

.row-full {
flex:1;
display:flex;
flex-direction:row;
justify-content:flex-start;
align-items:center;
align-self:stretch;
width:100%;
padding:1.5rem 2rem!important
}

.row-full p,.row-full li,.row-full ul,.row-full ol {
font:400 var(--font-size-col)/1.45 var(--font-main)
}

.row-full h4 {
font-size:var(--font-size-h4)!important;
margin-bottom:.3em
}

.reveal .row-full.bg-white h4 {
color:#000
}

.reveal .slides section:has(> .rows-full) {
display:flex!important;
flex-direction:column!important;
padding:0!important;
height:100%!important
}

.reveal .slides section.slide.level2,.reveal .slides section.slide.level3 {
display:flex!important;
flex-direction:column!important;
justify-content:center!important;
height:100%!important;
box-sizing:border-box!important
}

.reveal .slides section.slide.level2::after,.reveal .slides section.slide.level3::after {
content:""!important;
display:block!important;
position:relative!important;
clear:both!important;
height:26px!important;
min-height:26px!important;
background:transparent!important;
pointer-events:none!important
}

.reveal .slides section:has(> .box) {
display:flex!important;
flex-direction:column!important;
padding:0!important
}

.reveal .slides section:has(> .light-box) {
display:flex!important;
flex-direction:column!important;
padding:0!important
}

.reveal .slides section:has(> .dark-box) {
display:flex!important;
flex-direction:column!important;
padding:0!important
}

.reveal .slides section:has(> .cols-full) {
display:flex!important;
flex-direction:column!important;
padding:0!important
}

.reveal .slides section:has(> .cols-raw) {
display:flex!important;
flex-direction:column!important;
padding:0!important
}

.light-box {
display:flex;
flex-direction:column;
width:100%;
min-width:100%;
height:100%;
box-sizing:border-box;
padding:var(--padding-section)!important;
background-color:var(--bg-box);
color:var(--color-dark-box);
text-align:left
}

.dark-box {
display:flex;
flex-direction:column;
width:100%;
min-width:100%;
height:100%;
box-sizing:border-box;
padding:var(--padding-section)!important;
background-color:var(--bg-dark-box);
color:var(--color-dark-box);
text-align:left
}

.reveal .dark-box,.reveal .light-box {
box-sizing:border-box!important;
min-width:0!important;
overflow:hidden!important;
padding:1.5rem 2rem!important
}

.dark-box p,.dark-box ol,.dark-box ul,.light-box p,.light-box ol,.light-box ul {
display:block!important;
width:100%!important;
max-width:92%!important;
box-sizing:border-box!important;
text-align:left!important;
margin-right:auto!important;
white-space:normal!important
}

.dark-box ol li,.dark-box ul li,.light-box ol li,.light-box ul li {
display:list-item!important;
width:100%!important;
max-width:100%!important;
box-sizing:border-box!important;
margin-bottom:.5rem!important;
overflow-wrap:anywhere!important;
word-wrap:break-word!important;
word-break:normal!important;
hyphens:none!important
}

.dark-box li code,.dark-box li strong,.light-box li code,.light-box li strong {
display:inline!important;
white-space:normal!important
}

.dark-box .mermaid,.light-box .mermaid,.dark-box svg,.light-box svg {
max-width:100%!important;
margin-left:auto!important;
margin-right:auto!important
}

.box.center p,.box.center ul,.box.center ol,.box .center p,.box .center ul,.box .center ol,.box p.center,.box ul.center,.box ol.center,.dark-box.center p,.dark-box.center ul,.dark-box.center ol,.dark-box .center p,.dark-box .center ul,.dark-box .center ol,.dark-box p.center,.dark-box ul.center,.dark-box ol.center,.light-box.center p,.light-box.center ul,.light-box.center ol,.light-box .center p,.light-box .center ul,.light-box .center ol,.light-box p.center,.light-box ul.center,.light-box ol.center {
text-align:center
}

.reveal .dark-box,.reveal .light-box {
box-sizing:border-box!important;
min-width:0!important;
overflow:hidden!important;
padding:1.5rem 2rem!important
}

.dark-box:not(.center) p:not(.center *):not(.center),.dark-box:not(.center) ol:not(.center *):not(.center),.dark-box:not(.center) ul:not(.center *):not(.center),.light-box:not(.center) p:not(.center *):not(.center),.light-box:not(.center) ol:not(.center *):not(.center),.light-box:not(.center) ul:not(.center *):not(.center) {
display:block!important;
width:100%!important;
max-width:92%!important;
box-sizing:border-box!important;
text-align:left!important;
margin-right:auto!important;
white-space:normal!important
}

.dark-box.center p,.dark-box.center ol,.dark-box.center ul,.light-box.center p,.light-box.center ol,.light-box.center ul,.dark-box .center p,.dark-box .center ol,.dark-box .center ul,.light-box .center p,.light-box .center ol,.light-box .center ul {
width:100%!important;
max-width:100%!important;
box-sizing:border-box!important;
text-align:center!important;
margin-left:auto!important;
margin-right:auto!important
}

.dark-box ol li,.dark-box ul li,.light-box ol li,.light-box ul li {
display:list-item!important;
width:100%!important;
max-width:100%!important;
box-sizing:border-box!important;
margin-bottom:.5rem!important;
overflow-wrap:anywhere!important;
word-wrap:break-word!important;
word-break:normal!important;
hyphens:none!important
}

.dark-box li code,.dark-box li strong,.light-box li code,.light-box li strong {
display:inline!important;
white-space:normal!important
}

.dark-box .mermaid,.light-box .mermaid,.dark-box svg,.light-box svg {
max-width:100%!important;
margin-left:auto!important;
margin-right:auto!important
}

.dark-box.center ul,.dark-box.center ol,.light-box.center ul,.light-box.center ol,.dark-box .center ul,.dark-box .center ol,.light-box .center ul,.light-box .center ol {
display:inline-block!important;
width:auto!important;
max-width:90%!important;
text-align:left!important;
margin-left:auto!important;
margin-right:auto!important;
padding-left:2rem!important;
padding-right:0!important
}

.dark-box.center ul li,.dark-box.center ol li,.light-box.center ul li,.light-box.center ol li,.dark-box .center ul li,.dark-box .center ol li,.light-box .center ul li,.light-box .center ol li {
direction:ltr!important;
text-align:left!important;
margin-bottom:.5rem!important
}

.center {
text-align:center
}

.box-center {
display:flex;
flex-direction:column;
width:100%;
min-width:100%;
height:100%
}

.box {
display:flex;
flex-direction:column;
width:100%;
min-width:100%;
height:100%;
box-sizing:border-box;
padding:var(--padding-section)!important
}

.reveal .light-box h4 {
color:#000
}

.light-box p,.light-box li,.light-box ul,.light-box ol {
color:var(--color-light-box);
font:400 var(--font-size-col)/1.45 var(--font-main)
}

.reveal .slide-background {
background-size:cover!important;
background-position:center!important
}

.fragment.grow,.fragment.shrink {
display:inline-block
}

.dark-box .fragment.grow,.light-box .fragment.grow {
transform-origin:left center!important;
display:inline-block!important
}

.dark-box p:has(.fragment.grow),.light-box p:has(.fragment.grow),.dark-box li:has(.fragment.grow),.light-box li:has(.fragment.grow) {
max-width:80%!important;
box-sizing:border-box!important
}

.dark-box p.fragment.grow,.light-box p.fragment.grow {
max-width:80%!important
}

.reveal.overview .cols-full,.reveal.overview .cols-raw,.reveal.overview .rows-full {
width:100%;
height:100%;
top:0;
left:0;
position:relative
}

.reveal-viewport canvas.chalkboard,#chalkboard canvas,#notescanvas canvas {
position:fixed!important;
top:0!important;
left:0!important;
width:100vw!important;
height:100vh!important;
z-index:20!important;
transform:none!important
}

canvas.chalkboard[style*="pointer-events: none"],#notescanvas[style*="pointer-events: none"] {
display:none!important
}

#chalkboard.r-overlay {
position:fixed!important;
top:0!important;
left:0!important;
width:100vw!important;
height:100vh!important;
z-index:21!important
}

.reveal .palette {
position:fixed!important;
z-index:1000!important;
left:0!important;
top:50%!important;
transform:translateY(-50%)!important;
pointer-events:auto!important;
background:#000c;
border-radius:0 10px 10px 0;
padding:10px!important
}

.reveal .palette[style*="visibility: hidden"] {
display:none!important
}

#notescanvas[style*="pointer-events: none"] .palette {
display:none!important
}

#chalkboard[style*="opacity: 0"] .palette {
display:none!important
}

.reveal .palette ul li {
cursor:pointer!important;
pointer-events:auto!important
}

.reveal-viewport div[style*="position: fixed"] {
z-index:1001!important
}

[x-cloak] {
display:none!important
}

.alert {
padding:1rem 1.5rem;
margin:1rem 0;
border-radius:8px;
border-left:6px solid;
text-align:left;
font-size:.8em
}

.alert.warning {
background-color:#ff910054;
border-color:#ff9100;
color:#ffcc80
}

.alert.info {
background-color:#00b0ff54;
border-color:#00b0ff;
color:#81d4fa
}

.btn-toggle {
display:block;
margin:10px 0;
padding:8px 15px;
background:#444;
color:#fff;
border:1px solid #666;
border-radius:4px;
cursor:pointer;
font-family:inherit;
font-size:.5em;
transition:all .2s ease
}

.btn-toggle:hover {
background:#555;
border-color:#f8c555
}

.stepper-box {
margin:20px 0;
border-radius:8px;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
width:100%;
min-width:100%;
height:100%;
box-sizing:border-box;
padding:var(--padding-section)!important;
color:var(--color-dark-box)
}

.stepper-box ul {
list-style:none!important;
margin:0 0 20px!important;
padding:0!important
}

.stepper-box ul li {
margin-bottom:12px!important;
transition:all .4s ease
}

.btn-next {
background:#f8c555;
color:#000;
border:none;
padding:6px 12px;
border-radius:4px;
font-weight:700;
font-size:.5em;
cursor:pointer;
box-shadow:0 4px 0 #b38a2e
}

.btn-next:active {
box-shadow:none;
transform:translateY(2px)
}

.btn-next:hover {
background:#fff
}

[x-data] button,[x-data] .button {
text-decoration:none!important;
outline:none
}

.reveal .chalkboard-container {
z-index:99!important
}

.reveal .canvas-container {
pointer-events:auto!important
}

.slide-menu-overlay {
pointer-events:none!important
}

.slide-menu--active ~ .slide-menu-overlay,.slide-menu-wrapper.active .slide-menu-overlay {
pointer-events:auto!important
}

.reveal .echarts-container {
display:block;
width:100%;
min-height:200px;
margin:0 auto;
border-radius:8px;
position:relative;
z-index:1;
overflow:visible!important
}

.reveal .echarts-container > div {
position:relative!important;
width:100%!important;
height:100%!important
}

.echarts-tooltip,.reveal .echarts-container div:nth-child(2) {
z-index:9999!important
}

.echarts-container {
pointer-events:auto!important;
user-select:none
}

.echarts-container canvas,.echarts-container svg,.echarts-container div {
pointer-events:auto!important
}

.echarts-tooltip,.reveal .slides section .echarts-container div:nth-child(2) {
z-index:10000!important
}

#chalkboard:not(.visible) {
pointer-events:none
}

.stepper-box li {
transition:opacity .4s ease;
margin-bottom:10px
}

.reveal .slides img {
cursor:zoom-in;
transition:opacity .2s ease,box-shadow .2s ease
}

.reveal .slides img:hover {
opacity:.88;
box-shadow:0 0 0 2px var(--color-accent)
}

#lightbox-overlay {
display:none;
position:fixed;
inset:0;
z-index:9999;
background:#000000eb;
backdrop-filter:blur(4px);
cursor:zoom-out;
align-items:center;
justify-content:center;
opacity:0;
transition:opacity .22s ease
}

#lightbox-overlay.lb-visible {
display:flex;
opacity:1
}

#lightbox-img {
width:92vw;
height:90vh;
object-fit:contain;
border-radius:6px;
box-shadow:0 8px 48px #000000b3 0 0 0 2px var(--color-accent);
transform:scale(0.94);
transition:transform .22s ease;
cursor:default
}

#lightbox-overlay.lb-visible #lightbox-img {
transform:scale(1)
}

#lightbox-close {
position:fixed;
top:18px;
right:22px;
z-index:10000;
background:#ffffff1a;
border:1px solid #ffffff40;
color:#fff;
font-size:22px;
line-height:1;
width:40px;
height:40px;
border-radius:50%;
cursor:pointer;
display:flex;
align-items:center;
justify-content:center;
transition:background .15s ease,border-color .15s ease
}

#lightbox-close:hover {
background:#e8c54740;
border-color:var(--color-accent);
color:var(--color-accent)
}

#lightbox-caption {
position:fixed;
bottom:20px;
left:50%;
transform:translateX(-50%);
color:var(--color-muted);
text-align:center;
max-width:80vw;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
pointer-events:none;
font:.85rem var(--font-main)
}

.reveal .slide-background {
background-size:cover!important;
background-position:center!important
}

.print-pdf .slide-background:not([style*="background-image"]) {
background-image:url(../assets/background_default.png)!important;
background-size:cover!important;
background-position:center!important;
print-color-adjust:exact;
-webkit-print-color-adjust:exact
}

.print-pdf .slide-background[style*="background-image"] {
background-size:cover!important;
background-position:center!important;
print-color-adjust:exact;
-webkit-print-color-adjust:exact
}

.print-pdf .slide-background-content:not([style*="background-image"]) {
background-image:url(../assets/background_default.png)!important;
background-size:cover!important;
background-position:center!important;
print-color-adjust:exact;
-webkit-print-color-adjust:exact
}

.print-pdf .slide-background-content[style*="background-image"] {
background-size:cover!important;
background-position:center!important;
print-color-adjust:exact;
-webkit-print-color-adjust:exact
}

.print-pdf .cols-full {
max-height:590px;
height:590px
}

.print-pdf .cols-raw {
max-height:590px;
height:590px
}

.print-pdf .rows-full {
max-height:590px;
height:590px
}

.print-pdf .cols {
max-height:590px
}

.print-pdf .rows-raw {
max-height:590px
}

.print-pdf .rows {
max-height:590px
}

.print-pdf .reveal .slides section {
box-sizing:border-box
}

.print-pdf .reveal .slides section:has(> .cols-full),.print-pdf .reveal .slides section:has(> .cols-raw),.print-pdf .reveal .slides section:has(> .rows-full),.print-pdf .reveal .slides section:has(> .box),.print-pdf .reveal .slides section:has(> .light-box),.print-pdf .reveal .slides section:has(> .dark-box) {
display:flex!important;
flex-direction:column!important;
padding:0!important;
height:706px!important;
overflow:hidden!important
}

.print-pdf .reveal .echarts-container {
width:100%!important;
max-height:460px!important;
min-height:0!important;
margin:0 auto!important;
position:relative!important;
overflow:hidden!important
}

.print-pdf .reveal .echarts-container svg,.print-pdf .reveal .echarts-container canvas {
max-width:100%!important;
max-height:460px!important
}

.print-pdf .reveal .echarts-container > div {
max-height:460px!important;
overflow:hidden!important
}

@media print {
@page {
size:1980px 1080px;
margin:0!important
}

* {
print-color-adjust:exact!important;
-webkit-print-color-adjust:exact!important
}

.reveal .controls,.reveal .progress,div[style*="position: fixed"] button,div[style*="z-index: 30"] {
display:none!important
}

[x-cloak] {
display:block!important
}

.stepper-box li,.btn-toggle + div,[x-show] {
display:block!important;
opacity:1!important;
visibility:visible!important
}

.btn-next,.btn-toggle,button,.reveal .controls,.reveal .progress {
display:none!important
}

.reveal .mermaid svg {
background:transparent!important;
max-height:100%!important
}

.reveal .mermaid .nodeLabel,.reveal .mermaid .edgeLabel {
color:#000!important
}

div[style*="position: fixed"] {
display:none!important
}

.print-pdf .pdf-page {
position:relative!important;
overflow:visible!important
}

.print-pdf .pdf-page img[src*="logo_small"],.print-pdf .pdf-page div[style*="text-align:center"] {
display:block!important;
visibility:visible!important;
opacity:1!important
}

.print-pdf .pdf-page > div:last-child {
display:flex!important;
visibility:visible!important;
opacity:1!important;
print-color-adjust:exact;
-webkit-print-color-adjust:exact
}
}

.reveal .slides section:has(> .stepper-box),.reveal .slides section:has(> .box),.reveal .slides section:has(> .light-box),.reveal .slides section:has(> .dark-box),.reveal .slides section:has(> .cols-full),.reveal .slides section:has(> .cols-raw),.reveal .slides section:has(> .rows-full) {
display:flex!important;
flex-direction:column!important;
padding:0!important;
height:100%!important
}

.echarts-tooltip,div[style*="position: absolute"][style*="z-index: 9999999"] {
font-size:1rem!important;
padding:6px 10px!important;
line-height:1.4!important;
max-width:185px!important;
white-space:nowrap!important;
overflow:auto
}

.reveal #chalkboard {
z-index:40!important
}

.reveal #chalkboard,.reveal #notescanvas {
cursor:crosshair!important;
pointer-events:auto!important
}

.reveal.show-chalkboard .slides {
pointer-events:none!important
}

.reveal.show-chalkboard .reveal-static-button,.reveal.show-chalkboard .customcontrols {
pointer-events:auto!important;
z-index:50!important
}

.custom-toolbar-container {
position:fixed;
bottom:5px;
left:5px;
z-index:30;
display:flex;
gap:5px;
align-items:center
}

#toolbar-toggle {
background:#fff3;
border:1px solid #fff6;
color:#fff;
cursor:pointer;
border-radius:5px;
padding:8px 12px;
font-size:20px;
opacity:.25
}

#toolbar-buttons1 {
display:none;
gap:5px;
align-items:center
}

#slide-footer {
position:fixed;
bottom:5px;
left:0;
width:100%;
display:flex;
align-items:center;
pointer-events:none;
z-index:29;
box-sizing:border-box;
padding:0 12px
}

#invisible-clickable-left,#invisible-clickable-right {
position:fixed;
top:15vh;
height:70vh;
width:4vw;
z-index:28;
background:transparent;
cursor:pointer
}

#invisible-clickable-left {
left:0
}

#invisible-clickable-right {
right:0
}

#invisible-clickable-first,#invisible-clickable-last {
position:fixed;
top:0;
width:5vw;
height:13vh;
z-index:28;
background:transparent;
cursor:pointer
}

#invisible-clickable-first {
left:0
}

#invisible-clickable-last {
right:0
}

@media (max-width: 740px) {
.custom-toolbar-container.toolbar-open #btn-qrcode {
display:none!important
}
}

@media (max-width: 840px) {
.custom-toolbar-container.toolbar-open #btn-print {
display:none!important
}
}

@media (max-width: 800px) {
.custom-toolbar-container.toolbar-open #btn-overview {
display:none!important
}
}

@media screen and (max-width: 1440px) {
.custom-toolbar-container.toolbar-open ~ #slide-footer {
display:none!important
}
}

@media (max-width: 960px) {
#slide-timer-chrono {
position:fixed!important;
top:15px!important;
right:15px!important;
bottom:auto!important;
left:auto!important;
z-index:40;
background:#000000a6;
padding:6px 12px;
border-radius:6px;
border:1px solid #ffffff26;
backdrop-filter:blur(4px);
margin-bottom:0!important
}

#slide-timer-chrono #slide-timer-target {
margin-right:0!important
}
}

@media print {
.custom-toolbar-container,#invisible-clickable-left,#invisible-clickable-right,#invisible-clickable-first,#invisible-clickable-last {
display:none!important
}
}

.wavedrom-container svg.WaveDrom {
width:100%!important;
height:auto!important;
max-height:500px!important;
display:block;
margin:0 auto
}

.wavedrom-container rect,.wavedrom-container rect.bg {
fill:transparent!important
}

.wavedrom-container .pinname {
fill:#00f
}

.wavedrom-container .wirename {
fill:#00f
}

.porphyry-container {
display:block;
width:100%;
position:relative;
border-radius:6px;
overflow:hidden
}

.porphyry-container svg {
pointer-events:auto!important;
display:block
}

.asciinema-container {
display:block;
width:100%;
height:100%;
margin:0 auto;
border-radius:6px;
overflow:hidden;
position:relative
}

.asciinema-player-wrapper {
width:100%;
height:100%
}

.reveal .asciinema-container .asciinema-player-wrapper,.reveal .asciinema-container asciinema-player {
max-height:55vh
}

.reveal .slides section .slide-container {
display:flex;
flex-direction:column;
width:100%;
height:100%;
box-sizing:border-box;
justify-content:center
}

.rn-mark {
background:none;
color:inherit
}

#rn-overlay {
position:fixed;
top:0;
left:0;
width:0;
height:0;
overflow:visible;
pointer-events:none;
z-index:9998
}

.asciinema-container {
max-width:100%!important;
overflow-x:auto!important;
display:block;
margin:0 auto;
-webkit-text-size-adjust:none!important;
-moz-text-size-adjust:none!important;
-ms-text-size-adjust:none!important;
text-size-adjust:none!important
}

.asciinema-player,.asciinema-container .asciinema-terminal,.asciinema-container .asciinema-player .line,.asciinema-container .asciinema-player span {
font-family:"Fira Code","JetBrainsMono-Regular","JetBrains Mono","IBM Plex Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace!important;
font-variant-ligatures:none!important;
white-space:pre!important;
word-break:normal!important;
word-wrap:normal!important;
text-rendering:optimizeSpeed!important;
-webkit-font-smoothing:none!important;
-moz-osx-font-smoothing:none!important
}

.asciinema-container .asciinema-player .fg-2 {
font-family:"Fira Code","JetBrainsMono-Regular","JetBrains Mono","IBM Plex Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace!important;
font-weight:400!important;
display:inline-block!important;
letter-spacing:0!important
}

.asciinema-container .asciinema-player .terminal {
background:transparent!important
}

@media screen and (max-width: 768px) {
    .asciinema-container .asciinema-terminal {
    font-size:2.1vw!important;
    line-height:1!important
    }
}

#toolbar-container,.custom-toolbar-container,.reveal.drawing #toolbar-container,.reveal.chalkboard-active #toolbar-container {
display:flex!important;
visibility:visible!important;
opacity:1!important;
z-index:99999!important;
pointer-events:auto!important
}

#toolbar-toggle {
display:block!important;
visibility:visible!important;
pointer-events:auto!important
}

@media print {
#slide-footer,.print-pdf #slide-footer,.print-pdf .reveal .slides ~ footer,.print-pdf .reveal ~ footer,body.print-pdf > footer {
display:none!important;
visibility:hidden!important;
opacity:0!important
}
}

@media screen and (max-width: 500px)  {
  #toolbar-buttons2 {
    display: none;
    visibility:hidden!important;
  }
  #slide-footer {
    display:none!important
  }
  
  #invisible-clickable-left,#invisible-clickable-right {
    width:12vw;
  }
  
  
  #invisible-clickable-first,#invisible-clickable-last {
    width:12vw;
    height:14vh;
  }  
    
}

.graphviz-container {
  display: block;
  width: 100%;
  border-radius: var(--border-radius-custom, 8px);
  padding: 1rem;
  box-sizing: border-box;
  overflow: auto;
}

.graphviz-container svg {
  max-width: 100%;
  height: auto;
  display: block;
  margin: 0 auto;
}

/* ==========================================================================
   Intégration Graphviz Avancée & Sélective (MarS-doc)
   ========================================================================== */

/* 1. Supprimer le grand rectangle blanc de fond généré par Graphviz */
.reveal svg g#graph0 > polygon[fill="#ffffff"],
.reveal svg g.graph > polygon[fill="#ffffff"] {
    fill: transparent !important;
}

/* 2. Rendre le texte ET le contour adaptatifs uniquement pour les nœuds SANS fond coloré (ex: Child 1, 2, etc.)
   Si le nœud possède un polygone ou une ellipse avec fill="none", on passe le contour et le texte en clair */
.reveal svg g.node ellipse[fill="none"],
.reveal svg g.node polygon[fill="none"] {
    stroke: var(--r-main-color, #ffffff) !important; /* Force le contour par défaut en blanc */
}

.reveal svg g.node ellipse[fill="none"] ~ text,
.reveal svg g.node polygon[fill="none"] ~ text {
    fill: var(--r-main-color, #ffffff) !important;   /* Force le texte par défaut en blanc */
}

/* 3. Ajuster les arêtes (les flèches et lignes de liaisons) pour le thème sombre */
.reveal svg g.edge path {
    stroke: rgba(255, 255, 255, 0.4) !important;
}
.reveal svg g.edge polygon {
    fill: rgba(255, 255, 255, 0.4) !important;
    stroke: rgba(255, 255, 255, 0.4) !important;
}

/* 4. Gestion des nœuds colorés personnalisés (Grandparents, Parent 1, 2, 3)
   - On s'assure que le texte à l'intérieur reste STRICTEMENT noir pour contraster avec le fond clair.
   - On annule toute inversion globale sur ces éléments spécifiques. */
.reveal svg g.node ellipse:not([fill="none"]):not([fill="#000000"]) ~ text,
.reveal svg g.node polygon:not([fill="none"]):not([fill="#000000"]) ~ text {
    fill: #000000 !important;
}

/* 5. Sécurité pour le cas où les bordures de vos nœuds colorés s'effacent
   Ici, on cible uniquement les nœuds colorés pour leur donner une bordure subtile sans écraser leur couleur */
.reveal svg g.node ellipse:not([fill="none"]):not([fill="#000000"]),
.reveal svg g.node polygon:not([fill="none"]):not([fill="#000000"]) {
    stroke: rgba(255, 255, 255, 0.2) !important; /* Bordure légère pour détacher le nœud du fond sombre */
}

/* 6. Traitement du bug de fallback noir (si Graphviz échoue à compiler la couleur de fond) */
.reveal svg g.node polygon[fill="#000000"],
.reveal svg g.node ellipse[fill="#000000"] {
    fill: rgba(255, 255, 255, 0.12) !important;
    stroke: var(--r-main-color, #ffffff) !important;
}
.reveal svg g.node polygon[fill="#000000"] ~ text,
.reveal svg g.node ellipse[fill="#000000"] ~ text {
    fill: var(--r-main-color, #ffffff) !important;
}



/* ==========================================================================
   5. Intégration Graphique & Légendes Interactives - Function Plot
   ========================================================================== */

.functionplot-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    margin: 15px auto;
    padding: 20px;
    background: #1e1e1e; /* Fond sombre de type carte préservé */
    border: 1px solid #333333;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
    max-width: fit-content;
}

/* Zone d'affichage SVG générée */
.functionplot-container svg {
    background-color: transparent !important;
}

/* Alignement et structure de la légende */
.functionplot-wrapper .controls {
    display: flex;
    gap: 12px;
    margin-top: 15px;
    flex-wrap: wrap;
    justify-content: center;
}

/* Badges stylisés pour les fonctions mathématiques */
.functionplot-wrapper .badge {
    display: inline-block;
    padding: 6px 14px;
    font-family: 'Fira Code', 'IBM Plex Mono', monospace;
    font-size: 0.8em !important;
    font-weight: 600;
    color: #ffffff !important;
    border-radius: 20px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.functionplot-wrapper .badge-f1 { background-color: #ff4081; }
.functionplot-wrapper .badge-f2 { background-color: #00e5ff; color: #121212 !important; }
.functionplot-wrapper .badge-f3 { background-color: #b388ff; color: #121212 !important; }

/* Message d'aide contextuel utilisateur */
.functionplot-wrapper .help-text {
    margin-top: 12px;
    font-size: 0.55em !important;
    color: #888888;
    font-style: italic;
}

/* Redéfinition des axes pour assurer la visibilité sur fond sombre */
.functionplot-container .axis path,
.functionplot-container .axis line {
    stroke: #555555 !important;
}
.functionplot-container .axis text {
    fill: #aaaaaa !important;
}


.nomnoml-container {
  display: block;
  width: 100%;
  border-radius: var(--border-radius-custom, 8px);
  padding: 1rem;
  box-sizing: border-box;
  overflow: auto;
  text-align: center;
}

.nomnoml-container canvas {
  max-width: 100%;
  height: auto;
  display: inline-block;
}

.markmap-container {
  display: block;
  width: 100%;
  border-radius: var(--border-radius-custom, 8px);
  box-sizing: border-box;
  overflow: hidden;
}

.markmap-container svg.markmap-svg {
  display: block;
  width: 100%;
  height: 100%;
}

.reveal .slides section:has(> .markmap-container) {
  display: flex !important;
  flex-direction: column !important;
  padding: 0 !important;
}


/* ============================================================
   Correction de la collision de styles entre WaveDrom et ABCJS
   ============================================================ */

/* Force la restauration des textes et titres propres à ABCJS */
.abc-container svg text,
.abc-container svg .title,
.abc-container svg text.title {
  font-family: "Times New Roman", Times, serif !important; /* Ou ta police de partition par défaut */
  font-size: 27px !important;                             /* Taille standard du titre ABC */
  fill: #000000 !important;                               /* Couleur par défaut (noir dans la lightbox blanche) */
  font-style: normal;
  font-weight: normal;
  text-anchor: middle;
}


/* Optionnel : Si ta partition est dans une box sombre, ajuste la couleur */
.dark-box .abc-container svg text,
.dark-box .abc-container svg .title {
  fill: #ffffff !important;
}


.abc-container {
  display: block;
  width: 100%;
  border-radius: var(--border-radius-custom, 8px);
  box-sizing: border-box;
  overflow: auto;
  /*background: #00000000;*/
  padding: 1rem;

}

.abcjs-container {
  color: #000000;
  fill: #000000;
}


.abc-notation svg {
  max-width: 100%;
  height: auto;
  display: block;
  margin: 0 auto;
}

.abc-audio {
  max-width: 100%;
  margin-top: 12px;
}

/* Même fix que ABCjs.html : le champ % de tempo est tronqué par défaut */
.abcjs-inline-audio .abcjs-tempo-wrapper input {
  width: 60px !important;
  padding: 2px 4px !important;
}

/* Ciblage du titre principal de la partition */
svg text.abcjs-title {
    font-family: Helvetica, Arial, sans-serif !important;
    font-size: 24px !important;
    font-weight: bold !important;
    fill: #2ed573 !important; /* Note : On utilise 'fill' pour la couleur du texte en SVG, pas 'color' */
}

.reveal .slides mark.mk-mark {
  --mk-color: #e8c547;
  --mk-stroke: 2px;
  --mk-padding: 4px;
  --mk-duration: 500ms;
  background: none !important;
  color: inherit !important;
  padding: 0 2px;
  border-radius: 3px;
  transition: box-shadow var(--mk-duration) ease,
              outline-color var(--mk-duration) ease,
              background-color var(--mk-duration) ease,
              clip-path var(--mk-duration) ease;
}

.reveal .slides mark.mk-underline {
  box-shadow: inset 0 calc(-1 * var(--mk-stroke)) 0 0 var(--mk-color) !important;
}

.reveal .slides mark.mk-box {
  outline: var(--mk-stroke) solid var(--mk-color) !important;
  outline-offset: var(--mk-padding);
}

.reveal .slides mark.mk-circle {
  outline: var(--mk-stroke) solid var(--mk-color) !important;
  outline-offset: var(--mk-padding);
  border-radius: 50%;
  padding: 0 var(--mk-padding);
}

.reveal .slides mark.mk-highlight {
  background-color: var(--mk-color) !important;
}

.reveal .slides mark.mk-strike-through {
  text-decoration: line-through !important;
  text-decoration-color: var(--mk-color) !important;
  text-decoration-thickness: var(--mk-stroke) !important;
}

.reveal .slides mark.mk-bracket {
  border-right: var(--mk-stroke) solid var(--mk-color) !important;
  padding-right: var(--mk-padding);
}

/* Fragment sans main levée : clip-path gauche→droite, piloté par Reveal.js */
.reveal .slides mark.mk-mark.fragment { clip-path: inset(0 100% 0 0); }
.reveal .slides mark.mk-mark.fragment.visible { clip-path: inset(0 0 0 0); }
