/* lessons/assets/lesson-engine.css - the stylesheet every lesson deck shares.
   Built by scripts/extract_deck_engine.py: every rule that most decks carried, in the order of lessons/english-es-a1-29/presentation.html.
   A deck keeps inline only the rules that are not here word for word. */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --ink:#1A1A1A;--paper:#F7F3EE;--surface:#FFFFFF;--cream:#F0EDE8;
  --amber:#B8860B;--amber-bg:rgba(184,134,11,.08);--amber-hover:rgba(184,134,11,.13);
  --muted:#6B6B6B;--hairline:#E5E5E5;
  --green:#2E7D52;--red:#C0392B;
  --serif:Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
}
body{font-family:var(--sans);background:#111;height:100vh;overflow:hidden;display:flex;flex-direction:column}
#topbar{display:flex;align-items:center;gap:12px;background:#111;padding:8px 20px;flex-shrink:0;border-bottom:2px solid var(--amber)}
#slide-label{font-weight:800;color:var(--amber);font-size:11px;white-space:nowrap;min-width:180px;letter-spacing:2px;text-transform:uppercase;font-family:var(--sans)}
#progress-wrap{flex:1;height:3px;background:rgba(255,255,255,.12);border-radius:2px;overflow:hidden}
#progress-fill{height:100%;background:var(--amber);border-radius:2px;transition:width .4s ease}
#slide-counter{font-size:11px;color:rgba(255,255,255,.4);white-space:nowrap;font-family:var(--sans);letter-spacing:.5px}
#timer{font-family:monospace;font-size:12px;color:rgba(255,255,255,.55);cursor:pointer;padding:4px 10px;border-radius:3px;border:1.5px solid rgba(255,255,255,.15);transition:.2s;white-space:nowrap;user-select:none;letter-spacing:1.5px}
#timer:hover{border-color:var(--amber);color:var(--amber)}
#timer.running{color:var(--amber);border-color:var(--amber)}
#notes-toggle{background:transparent;border:1.5px solid rgba(255,255,255,.15);color:rgba(255,255,255,.7);padding:4px 12px;border-radius:3px;cursor:pointer;font-size:10px;font-family:var(--sans);font-weight:800;letter-spacing:2px;text-transform:uppercase;transition:.2s;white-space:nowrap}
#notes-toggle:hover{border-color:var(--amber);color:var(--amber)}
#main{display:flex;flex:1;overflow:hidden}
#slide-viewport{flex:1;display:flex;align-items:center;justify-content:center;background:#0E0E0E;padding:14px;overflow:hidden}
#slides{position:relative;aspect-ratio:16/9;height:100%;border-radius:6px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.7)}
.slide{position:absolute;inset:0;background:var(--paper);display:none;flex-direction:column;overflow:hidden}
.slide.active{display:flex;animation:fadeIn .3s ease}
@keyframes fadeIn{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:translateX(0)}}
.slide-stripe{height:3px;background:var(--amber);flex-shrink:0}
.slide-body.center{align-items:center;justify-content:center;text-align:center}
.slide-body.scrollable{overflow-y:auto}
.slide-body.scrollable::-webkit-scrollbar{width:4px}
.slide-body.scrollable::-webkit-scrollbar-thumb{background:var(--hairline);border-radius:2px}
h1.big{font-family:var(--serif);font-size:54px;color:var(--ink);line-height:1;margin-bottom:6px;letter-spacing:-0.02em;font-weight:700}
h2.stitle{font-family:var(--sans);font-size:10.5px;font-weight:800;color:var(--amber);margin-bottom:14px;letter-spacing:2.5px;text-transform:uppercase;display:flex;align-items:center;gap:8px}
h2.stitle::before{content:'';display:inline-block;width:20px;height:2px;background:var(--amber);flex-shrink:0}
.subtitle{font-family:var(--serif);font-size:17px;color:var(--muted);font-style:italic}
.badge{display:inline-block;background:var(--ink);color:var(--paper);font-size:9px;font-weight:800;padding:3px 10px;border-radius:3px;text-transform:uppercase;letter-spacing:1.5px;margin:2px;font-family:var(--sans)}
.badge.red{background:var(--amber);color:var(--ink)}
.hl-box{background:var(--amber-bg);border:1.5px solid var(--amber);border-radius:6px;padding:10px 15px;font-size:12.5px;color:#5a3800;margin-top:10px;font-family:var(--sans)}
.hl-box strong{color:var(--ink)}
.vtable{width:100%;border-collapse:collapse;font-size:13.5px}
.vtable th{background:var(--ink);color:var(--paper);padding:8px 14px;text-align:left;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:2px;font-family:var(--sans)}
.vtable td{padding:8px 14px;border-bottom:1px solid var(--hairline)}
.vtable tr:last-child td{border-bottom:none}
.vtable tr:nth-child(even) td{background:var(--surface)}
.vtable tr:hover td{background:var(--amber-bg)}
.sp{font-weight:700;color:var(--amber);font-size:14.5px;font-family:var(--serif)}
.en{color:var(--ink)}
.pr{color:var(--muted);font-style:italic;font-size:11.5px;font-family:var(--sans)}
.ngrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.ncard{background:var(--surface);border:1.5px solid var(--hairline);border-radius:6px;padding:8px 4px;text-align:center;cursor:default;transition:border-color .18s,box-shadow .14s,transform .14s}
.nword{font-size:11px;color:var(--ink);font-weight:600;margin-top:1px;font-family:var(--sans)}
.npron{font-size:9.5px;color:var(--muted);font-style:italic;font-family:var(--sans)}
.cgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ccard{border-radius:6px;padding:14px 10px;text-align:center;color:white}
.cname-es{font-size:17px;font-weight:700;margin-bottom:2px;font-family:var(--serif)}
.cname-en{font-size:11px;opacity:.8;font-family:var(--sans)}
.cpron{font-size:10px;opacity:.7;font-style:italic;font-weight:400;font-family:var(--sans)}
.alist{list-style:none;display:flex;flex-direction:column;gap:7px}
.aitem{display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--surface);border-radius:6px;border:1.5px solid var(--hairline);border-left:4px solid transparent;transition:border-color .18s,box-shadow .18s,transform .14s}
.aicon{font-size:18px;min-width:24px}
.atext{font-weight:600;color:var(--ink);font-size:13.5px;font-family:var(--sans)}
.atime{margin-left:auto;font-size:10.5px;color:var(--muted);font-weight:600;font-family:var(--sans);letter-spacing:.5px}
.tip-card{display:flex;gap:14px;padding:10px 14px;background:var(--surface);border:1.5px solid var(--hairline);border-radius:6px;margin-bottom:7px;align-items:flex-start}
.tip-desc{font-size:13px;font-weight:700;color:var(--ink);font-family:var(--sans)}
.tip-eg{font-size:12px;color:var(--muted);margin-top:2px;font-family:var(--sans)}
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pcard{background:var(--surface);border-radius:6px;padding:10px 15px;display:flex;justify-content:space-between;align-items:center;border:1.5px solid var(--hairline);transition:border-color .18s,box-shadow .18s,transform .14s}
.pen{font-size:12.5px;color:var(--muted);font-family:var(--sans)}
.gtable{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:12px}
.gtable th{background:var(--ink);color:var(--paper);padding:8px 14px;text-align:left;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:2px;font-family:var(--sans)}
.gtable td{padding:8px 14px;border-bottom:1px solid var(--hairline)}
.gtable tr:nth-child(even) td{background:var(--surface)}
.gtable tr:hover td{background:var(--amber-bg)}
.ex{color:var(--muted);font-size:12px;font-style:italic;font-family:var(--sans)}
.blank.show{color:var(--amber);font-weight:700}
.qaitem{background:var(--surface);border-radius:6px;border:1.5px solid var(--hairline);padding:11px 16px;margin-bottom:7px;border-left:3px solid var(--amber)}
.qarow{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.qaq{font-weight:600;font-size:13px;margin-bottom:4px;font-family:var(--sans)}
.qaa{font-size:13px;color:var(--green);font-weight:700;display:none;margin-top:6px;font-family:var(--sans)}
.qaa.show{display:block}
.qaa[style]{font-family:var(--sans)}
.reveal-btn{background:transparent;border:1.5px solid var(--hairline);padding:3px 12px;border-radius:3px;font-size:10px;cursor:pointer;font-family:var(--sans);font-weight:800;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;transition:.2s;white-space:nowrap;flex-shrink:0}
.reveal-btn:hover{border-color:var(--amber);color:var(--amber)}
.phen{font-size:11.5px;color:var(--muted);margin-top:1px;font-family:var(--sans)}
.dbox{background:var(--cream);border-left:3px solid var(--amber);border-radius:4px;padding:16px 20px;font-size:13.5px;line-height:2.1;font-family:var(--sans)}
.db{color:var(--ink);font-weight:700}
.dtr{font-size:11px;color:var(--muted);font-style:italic;margin-left:6px}
.qtext{font-weight:700;margin-bottom:8px;font-size:13px;font-family:var(--sans)}
.qopts{display:flex;gap:8px;flex-wrap:wrap}
.qopt{padding:5px 15px;border-radius:3px;border:1.5px solid var(--hairline);background:var(--paper);font-size:12px;cursor:pointer;transition:.2s;font-family:var(--sans);font-weight:600}
.qopt:hover:not(.done){border-color:var(--amber);background:var(--amber-bg);color:var(--ink)}
.qopt.correct{background:rgba(46,125,82,.1);border-color:var(--green);color:var(--green);font-weight:700}
.qopt.wrong{background:rgba(192,57,43,.07);border-color:var(--red);color:var(--red)}
#notes-panel{width:250px;background:#F7F3EE;border-left:2px solid var(--amber);overflow:hidden;transition:width .3s ease;flex-shrink:0}
#notes-panel.hidden{width:0}
.notes-inner{padding:16px;min-width:250px}
.notes-head{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:2.5px;color:var(--amber);margin-bottom:10px;font-family:var(--sans)}
.note{font-size:11.5px;color:#444;margin-bottom:7px;padding:6px 10px;background:white;border-radius:4px;line-height:1.5;font-family:var(--sans)}
.note strong{color:var(--ink)}
.note.timing{border-left:2px solid var(--red)}
.note.tip{border-left:2px solid var(--amber)}
.note.activity{border-left:2px solid var(--green)}
#nav{display:flex;align-items:center;justify-content:center;gap:14px;padding:11px;background:#111;border-top:1px solid rgba(255,255,255,.06);flex-shrink:0}
.nbtn{background:transparent;border:1.5px solid rgba(255,255,255,.15);color:rgba(255,255,255,.7);width:36px;height:36px;border-radius:3px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;font-family:var(--sans);font-weight:700}
.nbtn:hover{border-color:var(--amber);color:var(--amber)}
.nbtn:disabled{opacity:.2;cursor:not-allowed}
#dots{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;max-width:400px}
.dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.18);cursor:pointer;transition:.2s;flex-shrink:0}
.dot.active{background:var(--amber);transform:scale(1.4)}
.dot:hover{background:rgba(255,255,255,.5)}
#kbhint{font-size:10px;color:rgba(255,255,255,.25);font-family:var(--sans);letter-spacing:.5px}
#qr-toggle{background:transparent;border:1.5px solid rgba(255,255,255,.15);color:rgba(255,255,255,.7);padding:4px 12px;border-radius:3px;cursor:pointer;font-size:10px;font-family:var(--sans);font-weight:800;letter-spacing:2px;text-transform:uppercase;transition:.2s;white-space:nowrap;margin-left:6px}
#qr-toggle:hover{border-color:var(--amber);color:var(--amber)}
#restart-toggle{background:transparent;border:1.5px solid rgba(255,255,255,.15);color:rgba(255,255,255,.7);padding:4px 12px;border-radius:3px;cursor:pointer;font-size:10px;font-family:var(--sans);font-weight:800;letter-spacing:2px;text-transform:uppercase;transition:.2s;white-space:nowrap;margin-left:6px}
#restart-toggle:hover{border-color:var(--amber);color:var(--amber)}
#resume-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink,#1A1A1A);color:#fff;padding:10px 20px;border-radius:6px;font-family:var(--sans);font-size:12px;font-weight:600;box-shadow:0 8px 24px rgba(0,0,0,.3);opacity:0;pointer-events:none;transition:opacity .3s ease,transform .3s ease;z-index:998}
#resume-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#qr-modal{position:fixed;inset:0;background:rgba(0,0,0,.75);display:none;align-items:center;justify-content:center;z-index:999}
#qr-modal.show{display:flex}
.qr-box{background:var(--surface);border-radius:10px;padding:24px 28px;text-align:center;max-width:280px}
.qr-box img{width:220px;height:220px;border-radius:6px}
.qr-box p{font-size:11px;color:var(--muted);margin:10px 0 14px;word-break:break-all;font-family:var(--sans)}
.qr-box button{background:var(--ink);color:var(--paper);border:none;padding:8px 20px;border-radius:3px;font-family:var(--sans);font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;cursor:pointer}
.img-container img{width:100%;height:100%;object-fit:cover;display:block}
.p-question{background:var(--surface);padding:16px;border-left:4px solid var(--amber);border-radius:6px;font-size:13.5px;font-weight:700;font-family:var(--sans);box-shadow:0 2px 8px rgba(0,0,0,.02)}
.p-hint{font-size:11.5px;color:var(--muted);margin-top:6px;font-weight:400}
#slide-canvas{position:relative;width:720px;height:405px;transform-origin:top left}
[onclick] { cursor: pointer; }
[onclick]:active { transform: scale(0.98); }
.blank[onclick], span.blank { border-bottom: 2px dashed var(--amber); cursor: pointer; }
.blank[onclick]:hover, span.blank:hover { background: var(--amber-bg); }
[data-audio] { cursor: pointer; }
[data-audio]::after {
  content: '';
  display: inline-block;
  vertical-align: middle;
  margin-left: 6px;
  width: 18px;
  height: 18px;
  border: 1px solid var(--hairline);
  border-radius: 4px;
  background: var(--amber);
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M1 6v4h3l4 3V3L4 6H1z'/%3E%3Cpath d='M11.5 5.5a3 3 0 0 1 0 5' stroke='%23000' stroke-width='1.4' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center/10px 10px;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M1 6v4h3l4 3V3L4 6H1z'/%3E%3Cpath d='M11.5 5.5a3 3 0 0 1 0 5' stroke='%23000' stroke-width='1.4' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center/10px 10px;
  opacity: 0.75;
  transition: opacity 0.15s;
}
[data-audio]:hover::after { opacity: 1; }
[data-audio]:active::after { opacity: 1; transform: scale(0.92); }
