/* Slide decks of the Electricity section (electricity-lesson.html, materials-lesson.html).
   Slides are drawn on a 960×540 canvas scaled to the window; below 768 px they flow instead.
   Every text exists twice, lang="en" and lang="fr"; only the language of <html> is shown. */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --navy:#1A1B4B;--navy-deep:#0F1033;--cream:#FFF8EC;--cream-soft:#FAEFD9;
  --gold:#FFD166;--coral:#EF476F;--teal:#06D6A0;--sky:#7DD3FC;
  --ink:#1A1B4B;--muted:#6B6B8C;--earth-blue:#118AB2;
  --code-dim:#8B8BB0;--icy-blue:#CADCFC;
  --amber:#E09F00;--electron:#118AB2;
}

html[lang="fr"] body [lang="en"],html[lang="en"] body [lang="fr"]{display:none !important}

html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  background:#111;color:var(--ink);
}

/* ================================================================
   DECK & SLIDE SHELL
   ================================================================ */
.deck{position:relative;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center}
.slide{
  position:absolute;inset:0;display:none;
  align-items:center;justify-content:center;
  overflow:hidden;
}
.slide.active{display:flex}
.slide:focus{outline:none}
.slide.light{background:var(--cream)}
.slide.dark{background:var(--navy)}

/* Scaled inner canvas: 960×540 on desktop */
.slide-inner{
  position:relative;
  width:960px;height:540px;
  overflow:hidden;
  transform-origin:center center;
}

/* ================================================================
   ELEMENTS (desktop sizes, designed for the 960×540 canvas)
   ================================================================ */

/* Chapter motif */
.motif{position:absolute;top:20px;left:28px;display:flex;align-items:center;gap:10px}
.motif .dot{width:10px;height:10px;border-radius:50%}
.motif .label{font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.motif .label .n{margin-right:1.1em}
.dark .motif .label{color:var(--code-dim)}

/* Letter-spaced capitals */
.spaced{letter-spacing:.42em;text-transform:uppercase}

/* Titles */
.slide-title{
  position:absolute;top:42px;left:28px;right:28px;
  font-family:Georgia,serif;font-weight:700;font-size:34px;color:var(--ink);
}
.slide-title.center{left:0;right:0;text-align:center;color:#fff}
.slide-sub{
  position:absolute;top:84px;left:28px;right:28px;
  font-style:italic;font-size:16px;color:var(--muted);
}

/* Page number */
.pg{position:absolute;bottom:10px;right:16px;font-size:12px;color:var(--muted)}
.dark .pg{color:var(--code-dim)}

/* Slide footer */
.slide-footer{
  position:absolute;bottom:24px;left:28px;right:28px;text-align:center;
  font-style:italic;font-size:14px;color:var(--muted);
}
.dark .slide-footer{color:var(--code-dim)}

/* Cards */
.card-row{
  position:absolute;left:28px;right:28px;
  display:flex;gap:20px;justify-content:center;
}
.card{
  background:#fff;border:1px solid rgba(0,0,0,.08);
  padding:20px;text-align:center;border-radius:3px;
  box-shadow:0 2px 6px rgba(0,0,0,.06);flex:1;min-width:0;
}
.card.navy-card{background:var(--navy-deep);color:#fff}
.card .icon{
  width:44px;height:44px;border-radius:50%;display:inline-flex;
  align-items:center;justify-content:center;font-size:22px;font-weight:700;color:#fff;
  margin-bottom:10px;
}
.card h4{font-size:14px;letter-spacing:.1em;font-weight:700;margin:6px 0}
.card h4.spaced{letter-spacing:.42em}
.card p{font-size:14px;color:var(--muted);line-height:1.5;margin:0}
.card.navy-card p{color:var(--icy-blue)}
.card .unit{font-size:12px;font-weight:700;margin-bottom:6px}
.card.border-left-coral{border-left:4px solid var(--coral)}
.card.border-left-teal{border-left:4px solid var(--teal)}
.card.border-left-gold{border-left:4px solid var(--gold)}
.card.border-left-blue{border-left:4px solid var(--earth-blue)}
.card.outline-coral{border:1.5px solid var(--coral)}
.card.outline-teal{border:1.5px solid var(--teal)}
.card.outline-gold{border:1.5px solid var(--gold)}
.card.outline-sky{border:1.5px solid var(--sky)}

/* Callouts */
.callout-teal{
  background:rgba(6,214,160,.1);border-left:4px solid var(--teal);
  padding:14px 18px;font-size:15px;line-height:1.6;
}
.callout-teal .callout-title{color:var(--teal);font-weight:700;font-size:14px;margin-bottom:6px}
.callout-teal.coral{border-left-color:var(--coral);background:rgba(239,71,111,.08)}
.callout-teal.coral .callout-title{color:var(--coral)}
.callout-teal.blue{border-left-color:var(--earth-blue);background:rgba(17,138,178,.08)}
.callout-teal.blue .callout-title{color:var(--earth-blue)}
.callout-teal.gold{border-left-color:var(--amber);background:rgba(255,209,102,.18)}
.callout-teal.gold .callout-title{color:var(--amber)}

/* Starfield */
.starfield{position:absolute;inset:0;z-index:0;pointer-events:none}

/* Closing pill */
.closing-pill{
  display:inline-block;background:var(--gold);color:var(--navy);
  padding:14px 32px;font-weight:700;font-size:18px;border-radius:0;text-decoration:none;
}
.closing-pill.teal{background:var(--teal)}
.closing-pill.sky{background:var(--sky)}
.closing-pill.coral{background:var(--coral);color:#fff}

/* Hero formula */
.hero-formula{text-align:center;font-family:Georgia,serif;font-size:80px;padding:20px 0}
.hero-formula .eq{color:#fff}

/* Math colors */
.math-coral{color:var(--coral)}
.math-teal{color:var(--teal)}
.math-gold{color:var(--gold)}
.math-sky{color:var(--sky)}

/* Slide body (flow content area) */
.slide-body{position:absolute;left:28px;right:28px}

/* Decorative elements on hero slides */
.deco{position:absolute}

/* Nav bar */
.nav-bar{
  position:fixed;bottom:0;left:0;right:0;
  display:flex;justify-content:center;align-items:center;gap:20px;
  padding:12px;background:rgba(0,0,0,.75);z-index:100;
  opacity:0;transition:opacity .3s;
}
.nav-bar:hover,.nav-bar.show,.nav-bar:focus-within{opacity:1}
.nav-bar button{
  background:var(--gold);color:var(--navy);border:none;
  padding:10px 24px;font-weight:700;font-size:15px;border-radius:6px;cursor:pointer;
}
.nav-bar button:hover{background:#ffe599}
.nav-bar button:disabled{opacity:.3;cursor:default}
.nav-bar .counter{color:#fff;font-size:15px;min-width:70px;text-align:center}
.nav-bar .lang-btn{background:#fff;min-width:56px;padding:10px 14px}
.nav-bar .etn-btn{background:var(--sky)}

/* Back link */
.back-link{
  position:fixed;top:12px;right:18px;z-index:100;
  background:rgba(0,0,0,.5);color:#fff;padding:8px 16px;
  border-radius:5px;font-size:14px;text-decoration:none;
  opacity:0;transition:opacity .3s;
}
.back-link:hover{background:rgba(0,0,0,.7)}
.back-link:focus{opacity:1}
.nav-bar:hover ~ .back-link,.back-link:hover,.nav-bar.show ~ .back-link{opacity:1}

/* ================================================================
   DIAGRAMS
   ================================================================ */
.diagram{display:block;width:100%;height:auto}
.diagram .wire{fill:none;stroke:var(--ink);stroke-width:4;stroke-linejoin:round;stroke-linecap:round}
.dark .diagram .wire{stroke:#CADCFC}
.diagram .flow{fill:none;stroke:var(--amber);stroke-width:6;stroke-linecap:round;
  stroke-dasharray:0.1 18;animation:flow 1.2s linear infinite}
.diagram .flow.slow{animation-duration:2.4s}
.diagram .flow.fast{animation-duration:.5s;stroke:var(--coral)}
.diagram .flow.blue{stroke:var(--electron)}
.diagram .flow.e{stroke:var(--electron);animation-direction:reverse}
.dark .diagram .flow{stroke:var(--gold)}
.dark .diagram .flow.e{stroke:var(--sky)}
@keyframes flow{to{stroke-dashoffset:-18.1}}
@keyframes flow36{to{stroke-dashoffset:-36}}
@keyframes flow54{to{stroke-dashoffset:-54}}
@keyframes jiggle{0%,100%{transform:translate(0,0)}25%{transform:translate(1.5px,-1px)}50%{transform:translate(-1px,1.5px)}75%{transform:translate(-1.5px,-1px)}}
.diagram .jiggle{animation:jiggle .9s ease-in-out infinite}
.diagram .jiggle.d2{animation-delay:-.3s}
.diagram .jiggle.d3{animation-delay:-.6s}
@media (prefers-reduced-motion:reduce){.diagram .flow,.diagram .jiggle{animation:none}}
.diagram .lbl{font:700 13px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;fill:var(--ink)}
.diagram .lbl.muted{font-weight:400;font-style:italic;fill:var(--muted)}
.diagram .lbl.c{fill:#05A57C}
.diagram .lbl.i{fill:var(--coral)}
.dark .diagram .lbl{fill:#fff}
.diagram .plus{fill:var(--coral)}
.diagram .minus{fill:var(--earth-blue)}
.diagram .lead{stroke:var(--muted);stroke-width:1.5;fill:none}

.two-col{display:flex;gap:24px}
.two-col>div{flex:1;min-width:0}
.mat-list{list-style:none;margin:10px 0 0;padding:0;font-size:15px;line-height:1.9;text-align:left}
.mat-list li::before{content:"";display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:10px;vertical-align:middle;background:currentColor}
.mat-list li span{color:var(--muted);font-size:13px}
.mat-list.tight{line-height:1.65}

.bullets{list-style:none;margin:0;padding:0;font-size:15px;line-height:1.55}
.bullets li{padding-left:22px;position:relative;margin-bottom:9px}
.bullets li::before{content:"";position:absolute;left:4px;top:8px;width:8px;height:8px;border-radius:50%;background:var(--coral)}
.bullets.teal li::before{background:var(--teal)}
.bullets.blue li::before{background:var(--earth-blue)}
.bullets.gold li::before{background:var(--amber)}
.bullets b{color:var(--ink)}
.bullets.small{font-size:14px}

.cmp{width:100%;border-collapse:collapse;font-size:14px;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.06)}
.cmp th,.cmp td{padding:10px 14px;text-align:left;border-bottom:1px solid rgba(0,0,0,.07);vertical-align:top}
.cmp th{font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.cmp td:first-child{font-weight:700;color:var(--ink);width:26%}
.cmp td{color:var(--muted)}

.sym-row{display:flex;gap:8px;justify-content:center}
.sym{flex:1;min-width:0;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:3px;padding:12px 4px 10px;text-align:center;box-shadow:0 2px 6px rgba(0,0,0,.06)}
.sym svg{width:100%;max-width:110px;height:60px}
.sym .nm{font-weight:700;font-size:13px;margin-top:6px}
.sym .ds{font-size:12px;color:var(--muted);margin-top:2px}
.res-box{display:flex;gap:24px;align-items:center;background:rgba(17,138,178,.08);border-left:4px solid var(--earth-blue);padding:16px 20px}
.res-syms{display:flex;gap:18px;flex:0 0 auto}
.res-syms>div{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:3px;padding:10px 12px;text-align:center}
.res-syms svg{width:150px;height:50px;display:block}
.res-syms .ds{font-size:12px;color:var(--muted);margin-top:4px}
.res-text{font-size:14px;line-height:1.6;color:var(--ink)}
.res-text .callout-title{color:var(--earth-blue);font-weight:700;margin-bottom:4px}

/* Conductor / insulator tags */
.tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:2px 8px;border-radius:999px;vertical-align:1px;white-space:nowrap}
.tag.c{background:rgba(6,214,160,.16);color:#05875F}
.tag.i{background:rgba(239,71,111,.13);color:#C23657}
.tag.w{background:rgba(255,209,102,.3);color:#9A6A00}

/* Horizontal bar chart */
.bars{display:flex;flex-direction:column;gap:7px}
.bar-row{display:grid;grid-template-columns:150px 1fr 44px;align-items:center;gap:10px;font-size:14px}
.bar-row .nm{font-weight:700;color:var(--ink)}
.bar-row .nm small{font-weight:400;color:var(--muted);font-size:12px}
.bar-row .track{height:16px;background:rgba(26,27,75,.07);border-radius:8px;overflow:hidden}
.bar-row .fill{height:100%;border-radius:8px}
.bar-row .val{font-weight:700;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}

/* Guess-then-check cards */
.guess-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.guess{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:3px;box-shadow:0 2px 6px rgba(0,0,0,.06);
  padding:10px 12px;font-size:14px;line-height:1.45}
.guess summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px}
.guess summary::-webkit-details-marker{display:none}
.guess summary:focus-visible{outline:3px solid var(--earth-blue);outline-offset:3px}
.guess .em{font-size:26px;line-height:1;flex:0 0 auto}
.guess .q{flex:1;font-weight:700;color:var(--ink)}
.guess .peek{flex:0 0 auto;font-size:12px;font-weight:700;color:var(--navy);background:var(--gold);padding:4px 10px;border-radius:999px}
.guess[open] .peek{background:rgba(26,27,75,.08);color:var(--muted)}
.guess .ans{margin-top:8px;color:var(--muted);font-size:13.5px}
.guess .ans b{color:var(--ink)}

/* Scale from insulators to conductors */
.scale{position:relative;height:150px}
.scale .band{position:absolute;left:0;right:0;top:62px;height:22px;border-radius:11px;
  background:linear-gradient(90deg,#EF476F 0%,#F6A07E 26%,#FFD166 50%,#8EDFC3 72%,#06D6A0 100%)}
.scale .end{position:absolute;top:62px;height:22px;line-height:22px;padding:0 12px;font-size:11px;font-weight:800;
  letter-spacing:.12em;text-transform:uppercase;color:#fff}
.scale .end.l{left:0}
.scale .end.r{right:0;text-align:right}
.scale .pin{position:absolute;transform:translateX(-50%);text-align:center;font-size:12.5px;line-height:1.25;color:var(--ink);width:110px}
.scale .pin.up{bottom:94px}
.scale .pin.down{top:92px}
.scale .pin::after{content:"";position:absolute;left:50%;width:2px;background:var(--ink);opacity:.45}
.scale .pin.up::after{top:100%;height:10px}
.scale .pin.down::after{bottom:100%;height:8px}
.scale .pin b{display:block;font-size:13px}
.scale .pin > span{color:var(--muted)}

/* Real objects split into parts */
.parts{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.part-card{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:3px;box-shadow:0 2px 6px rgba(0,0,0,.06);padding:10px 12px 12px}
.part-card svg{display:block;width:100%;height:96px}
.part-card h4{font-size:14px;font-weight:700;margin:6px 0 4px;color:var(--ink)}
.part-card ul{list-style:none;margin:0;padding:0;font-size:13px;line-height:1.5;color:var(--muted)}
.part-card li{margin-bottom:3px}

/* Links into the games */
.tryit{display:inline-block;background:var(--gold);color:var(--navy);font-size:13px;font-weight:700;
  padding:6px 14px;border-radius:999px;text-decoration:none;box-shadow:0 2px 0 rgba(26,27,75,.25)}
.tryit:hover{background:#ffe08f}
.tryit.teal{background:var(--teal)}
.tryit.sky{background:var(--sky)}

/* Chapter chips on a title slide */
.chips{display:flex;flex-wrap:wrap;gap:8px;max-width:560px}
.chip{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);
  color:#fff;border-radius:999px;padding:5px 12px 5px 5px;font:600 13px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;cursor:pointer}
.chip:hover{background:rgba(255,255,255,.16)}
.chip .num{display:inline-flex;width:22px;height:22px;border-radius:50%;align-items:center;justify-content:center;
  background:var(--gold);color:var(--navy);font-weight:800;font-size:12px}

/* Lamp states in a lab notebook */
.bulb{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid var(--ink);vertical-align:-2px;margin-right:6px;background:#fff}
.bulb.on{background:#FFD166;box-shadow:0 0 8px 3px rgba(255,209,102,.85)}
.bulb.dim{background:#FFF0C2;box-shadow:0 0 5px 1px rgba(255,209,102,.55)}
.notebook td,.notebook th{padding:8px 12px}
.notebook td:first-child{width:auto}
.notebook tr.surprise td{background:rgba(255,209,102,.16)}
.notebook .ok{color:#05875F;font-weight:800}
.notebook .no{color:#C23657;font-weight:800}

/* Emoji icons on cards */
.emo{font-size:30px;line-height:1;margin-bottom:6px;display:block}

/* ================================================================
   MOBILE: flowing layout instead of the scaled canvas
   ================================================================ */
@media (max-width:768px){
  html,body{overflow:hidden}

  .slide{
    align-items:flex-start;
    justify-content:flex-start;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
  }

  .slide-inner{
    width:100% !important;
    height:auto !important;
    min-height:100dvh;
    transform:none !important;
    padding:52px 18px 110px;
    display:flex;
    flex-direction:column;
    gap:14px;
  }

  /* Absolute positioning becomes flow */
  .motif{position:static;margin-bottom:0}
  .slide-title{position:static;font-size:24px}
  .slide-title.center{text-align:center}
  .slide-sub{position:static;font-size:14px;margin-bottom:4px}
  .slide-footer{position:static;text-align:center;font-size:13px;margin-top:auto;padding-top:12px}
  .pg{position:static;text-align:right;font-size:11px;margin-top:4px}
  .slide-body{position:static !important;left:auto;right:auto}

  .card-row{
    position:static !important;
    flex-direction:column;gap:12px;
    left:auto;right:auto;
  }
  .card{padding:16px}
  .card .icon{width:38px;height:38px;font-size:18px}

  .slide-body[style*="display:flex"]{flex-wrap:wrap !important}

  .hero-formula{font-size:48px}
  .closing-pill{font-size:15px;padding:12px 24px}
  .deco{display:none}

  .hero-content{position:static !important;padding:0}
  .hero-center{position:static !important;text-align:center;margin:auto 0}
  .hero-bottom{position:static !important;text-align:center;margin-top:auto;padding-top:12px}

  /* Nav bar always visible on mobile; arrows only */
  .nav-bar{opacity:1;padding:10px 8px;gap:8px}
  .nav-bar button{padding:8px 11px;font-size:13px;white-space:nowrap}
  .nav-bar .w{display:none}
  .nav-bar .lang-btn{min-width:0;padding:8px 11px}
  .nav-bar .counter{min-width:0;font-size:13px}
  .back-link{opacity:1;font-size:12px;padding:6px 12px;top:8px;right:10px}

  .two-col{flex-direction:column;gap:14px}
  .two-col>div{flex:0 0 auto !important}
  .sym-row{flex-wrap:wrap}
  .sym{flex:1 1 40%}
  .res-box{flex-direction:column;align-items:stretch}
  .res-syms{justify-content:center;flex-wrap:wrap}
  .res-syms svg{width:120px;height:40px}
  .cmp{font-size:12px}
  .cmp th,.cmp td{padding:7px 8px}
  .bar-row{grid-template-columns:110px 1fr 36px;font-size:13px}
  .guess-grid{grid-template-columns:1fr}
  .parts{grid-template-columns:1fr}
  .scale{height:auto;display:flex;flex-direction:column-reverse;gap:6px;padding-left:28px}
  .scale .band{top:0;bottom:0;left:0;right:auto;width:14px;height:auto;
    background:linear-gradient(180deg,#06D6A0 0%,#8EDFC3 28%,#FFD166 50%,#F6A07E 74%,#EF476F 100%)}
  .scale .end{position:static;height:auto;line-height:1.4;padding:0;color:var(--ink)}
  .scale .end.l{order:-1;color:#C23657}
  .scale .end.r{order:99;text-align:left;color:#05875F}
  .scale .pin{position:static !important;transform:none;width:auto;text-align:left}
  .scale .pin::after{display:none}
  .scale .pin b{display:inline;margin-right:6px}
  .chips{max-width:none}
  .notebook td,.notebook th{padding:6px 7px}
  .slide-body[style*="grid"]{display:flex !important;flex-direction:column}
}

/* ================================================================
   PRINT (make_pdf.py prints one slide per page, 960×540)
   ================================================================ */
@media print{
  @page{size:960px 540px;margin:0}
  html,body{width:auto !important;height:auto !important;overflow:visible !important;background:none !important}
  .deck{display:block !important;width:960px !important;height:auto !important}
  .slide{display:block !important;position:relative !important;inset:auto !important;
         width:960px !important;height:540px !important;break-after:page}
  .slide:last-child{break-after:auto}
  .slide-inner{transform:none !important}
  .nav-bar,.back-link{display:none !important}
  *{animation:none !important;transition:none !important}
}
