/* =====================================================================
 * SPM ECG Simulator — core styles (dark monitor default + light paper)
 * Glass + WebGL chrome + unified Tweaks panel live in webgl.css.
 * ===================================================================== */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root,:root[data-theme="dark"]{
  --bg:#050a08;--bg2:#0a110e;--bg3:#0e1714;--bg4:#15201b;
  --border:#1c2a23;--border2:#28392f;
  --tx:#c8d6cd;--tx2:#6f8579;--tx3:#465a4f;--white:#e9f3ee;
  --acc:#00e676;--acc-dim:#00e67622;--acc-mid:#00e67655;--acc-glow:#00e67611;
  --amber:#ffb300;--red:#ff5252;--cyan:#00d4ff;--violet:#b388ff;
  --grid:#0c2018;--grid2:#123226;--trace:#27ff99;
  --mono:'JetBrains Mono','IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --serif:'DM Serif Text',Georgia,serif;--sans:'Instrument Sans',system-ui,-apple-system,sans-serif;
  --sidebar-w:264px;
}
:root[data-theme="light"]{
  --bg:#eef2ef;--bg2:#ffffff;--bg3:#f5f8f6;--bg4:#e6ece8;
  --border:#cfdbd3;--border2:#aebfb4;
  --tx:#1e2a24;--tx2:#56685e;--tx3:#8497;--white:#0c140f;
  --acc:#0a8f4d;--acc-dim:#0a8f4d1a;--acc-mid:#0a8f4d44;--acc-glow:#0a8f4d0d;
  --amber:#b97700;--red:#d11f1f;--cyan:#0883a3;--violet:#7c3aed;
  --grid:#f7d9d9;--grid2:#f0bcbc;--trace:#c0142a;
}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--bg);color:var(--tx);line-height:1.55;font-size:14px;min-height:100vh;
  -webkit-font-smoothing:antialiased;transition:background .3s,color .3s}

::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--acc-mid)}

.app{position:relative;z-index:1;display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:auto 1fr;min-height:100vh}

/* ===== TOPBAR ===== */
.topbar{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:10px 18px;flex-wrap:wrap;
  background:color-mix(in srgb,var(--bg2) 92%,transparent);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.brand{font-family:var(--mono);font-weight:700;font-size:.95rem;letter-spacing:.12em;color:var(--white);white-space:nowrap;display:flex;align-items:center;gap:8px}
.brand .dot{width:8px;height:8px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px var(--acc);animation:bp 1.1s infinite}
@keyframes bp{0%,100%{opacity:1;transform:scale(1)}45%{opacity:.4;transform:scale(.7)}}
.brand span{font-size:.6rem;color:var(--tx2);letter-spacing:.18em;font-weight:500}
.seg{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.seg button{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;padding:8px 16px;background:var(--bg3);color:var(--tx2);border:none;cursor:pointer;transition:.15s}
.seg button:hover{color:var(--white)}
.seg button.on{background:var(--acc-dim);color:var(--acc);font-weight:700}
.tools{display:flex;align-items:center;gap:7px;margin-left:auto}
.tbtn{font-family:var(--mono);font-size:.66rem;letter-spacing:.04em;text-transform:uppercase;padding:7px 11px;border-radius:6px;border:1px solid var(--border);
  background:var(--bg3);color:var(--tx2);cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.tbtn:hover{border-color:var(--acc);color:var(--acc)}
.disclaimer{font-size:.6rem;color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,transparent);padding:4px 9px;border-radius:5px;font-family:var(--mono);letter-spacing:.03em}

/* hub-style top-right sound toggle */
.sound-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:33px;padding:0;cursor:pointer;border-radius:9px;
  color:var(--tx2);background:var(--bg3);border:1px solid var(--border);transition:border-color .15s,color .15s}
.sound-toggle:hover{border-color:var(--acc);color:var(--white)}
.snd-ico{width:27px;height:15px}
.snd-line{stroke:var(--tx2);stroke-width:1.7;stroke-linecap:round;opacity:1;transition:opacity .2s}
.snd-bars{opacity:0;transition:opacity .2s}
.snd-bars .b{fill:var(--acc);transform-box:fill-box;transform-origin:center;transform:scaleY(.4)}
.sound-toggle.on .snd-line{opacity:0}.sound-toggle.on .snd-bars{opacity:1}
.sound-toggle.on .b{animation:eq .9s ease-in-out infinite}
.sound-toggle.on .b1{animation-delay:0s}.sound-toggle.on .b2{animation-delay:.18s}.sound-toggle.on .b3{animation-delay:.36s}.sound-toggle.on .b4{animation-delay:.12s}.sound-toggle.on .b5{animation-delay:.28s}
@keyframes eq{0%,100%{transform:scaleY(.32)}50%{transform:scaleY(1)}}

/* ===== SIDEBAR (Learn) ===== */
.sidebar{background:color-mix(in srgb,var(--bg2) 96%,transparent);border-right:1px solid var(--border);overflow-y:auto;max-height:calc(100vh - 53px);position:sticky;top:53px}
.side-head{padding:11px 16px;font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;color:var(--tx2);text-transform:uppercase;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg2);z-index:2}
.cat{border-bottom:1px solid var(--border)}
.cat-h{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--acc);padding:11px 16px 5px}
.rhy{display:flex;align-items:center;gap:9px;padding:7px 16px;cursor:pointer;transition:.12s;border-left:2px solid transparent}
.rhy:hover{background:var(--bg3)}
.rhy.act{background:var(--acc-glow);border-left-color:var(--acc)}
.rhy .rn{flex:1;font-size:.84rem;color:var(--tx);line-height:1.25}
.rhy.act .rn{color:var(--white);font-weight:600}

/* ===== MAIN ===== */
.main{overflow-y:auto;max-height:calc(100vh - 53px);padding:18px clamp(14px,2.4vw,30px) 60px}

/* monitor */
.monitor{position:relative;border:1px solid var(--border2);border-radius:12px;overflow:hidden;background:#020805;box-shadow:inset 0 0 60px rgba(0,0,0,.6)}
:root[data-theme="light"] .monitor{background:#fff}
.monitor canvas{display:block;width:100%;height:auto}
.mon-hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;padding:10px 14px;pointer-events:none}
.mon-lead{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;color:var(--acc);text-transform:uppercase;text-shadow:0 0 8px var(--acc-mid)}
.mon-hr{font-family:var(--mono);text-align:right;line-height:1}
.mon-hr b{font-size:2.2rem;color:var(--acc);text-shadow:0 0 12px var(--acc-mid);font-weight:700}
.mon-hr small{display:block;font-size:.58rem;letter-spacing:.18em;color:var(--tx2);text-transform:uppercase;margin-top:2px}
.mon-name{position:absolute;left:14px;bottom:10px;font-family:var(--serif);font-size:1.05rem;color:var(--white);text-shadow:0 1px 6px rgba(0,0,0,.8)}
.mon-pace{position:absolute;right:14px;bottom:10px;font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;color:var(--tx2);text-transform:uppercase}

/* ===== LEARN info ===== */
.info{display:none;margin-top:18px}
.info.v{display:block;animation:fade .3s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.info h2{font-family:var(--serif);font-size:1.6rem;color:var(--white);line-height:1.15}
.info .sub{font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;color:var(--acc);text-transform:uppercase;margin-top:3px}
.crit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:16px 0}
.crit{background:var(--bg3);border:1px solid var(--border);border-radius:9px;padding:11px 13px}
.crit .cl{font-family:var(--mono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--tx2);margin-bottom:4px}
.crit .cv{font-size:.86rem;color:var(--tx);line-height:1.45}
.crit.rate .cv,.crit.qrs .cv{color:var(--white);font-weight:600}
.blk{margin-top:14px}
.blk .bh{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--acc);margin-bottom:5px}
.blk p{font-size:.92rem;color:var(--tx);line-height:1.6}
.blk.mgmt{border-left:3px solid var(--amber);background:color-mix(in srgb,var(--amber) 6%,transparent);padding:10px 13px;border-radius:0 8px 8px 0}
.blk.mgmt .bh{color:var(--amber)}

/* ===== views + centering ===== */
.view{display:none}
.view.v{display:block;animation:fade .25s ease}
.center{max-width:1180px;margin:0 auto;width:100%}
.center.wide{max-width:1360px}
body.solo .app{grid-template-columns:1fr}
body.solo .sidebar{display:none}

/* ===== 12-LEAD montage ===== */
.tw-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px;flex-wrap:wrap}
.tw-sel-wrap{font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tx2);display:flex;align-items:center;gap:8px}
.tw-sel-wrap select{font-family:var(--sans);font-size:.85rem;text-transform:none;letter-spacing:0;padding:8px 12px;background:var(--bg3);color:var(--tx);border:1px solid var(--border);border-radius:8px;cursor:pointer}
.tw-sel-wrap select:focus{outline:none;border-color:var(--acc)}
.tw-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.tw-cell{position:relative;border:1px solid var(--border2);border-radius:7px;overflow:hidden;background:#020805}
:root[data-theme="light"] .tw-cell{background:#fff}
.tw-cell canvas{display:block;width:100%}
.tw-lab{position:absolute;top:3px;left:7px;font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.08em;color:var(--acc);text-shadow:0 0 6px var(--acc-mid)}
.tw-strip{grid-column:1/-1}
.tw-note{margin-top:12px;font-family:var(--mono);font-size:.62rem;letter-spacing:.03em;color:var(--tx3);line-height:1.5}
@media(max-width:780px){.tw-grid{grid-template-columns:repeat(2,1fr)}}

/* ===== BUILDER controls ===== */
.builder{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:18px}
.bctrl{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:12px 15px}
.bctrl-wide{grid-column:1/-1}
.bctrl-h{display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--tx2);margin-bottom:8px}
.bctrl-v{color:var(--acc);font-weight:600}
.bpresets{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.bpreset{font-family:var(--mono);font-size:.66rem;letter-spacing:.04em;padding:7px 12px;border-radius:7px;border:1px solid var(--border);background:var(--bg2);color:var(--tx2);cursor:pointer;transition:.15s}
.bpreset:hover{border-color:var(--acc);color:var(--acc)}

/* ===== GAME ===== */
.game{max-width:1080px;margin:0 auto}
.game-setup{text-align:center;padding:5vh 0}
.game-setup h1{font-family:var(--serif);font-size:2.2rem;color:var(--white);margin-bottom:8px}
.game-setup p{color:var(--tx2);max-width:60ch;margin:0 auto 18px}
.gs-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.gs-row select{font-family:var(--mono);font-size:.78rem;padding:9px 12px;background:var(--bg3);color:var(--tx);border:1px solid var(--border);border-radius:7px;cursor:pointer}
.btn{font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;padding:11px 22px;border-radius:8px;border:1px solid var(--acc);
  background:var(--acc-dim);color:var(--acc);cursor:pointer;transition:.15s;font-weight:700}
.btn:hover{background:var(--acc);color:#03130b}
.btn.sec{border-color:var(--border2);background:var(--bg3);color:var(--tx)}
.btn.sec:hover{border-color:var(--acc);color:var(--acc);background:var(--bg4)}

.hud{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;font-family:var(--mono);font-size:.72rem;color:var(--tx2);letter-spacing:.04em;flex-wrap:wrap}
.hud .stat b{color:var(--acc);font-size:1rem}
.hud .stat.streak b{color:var(--amber)}
.gbar{height:5px;border-radius:3px;background:var(--bg4);overflow:hidden;margin:10px 0 16px}
.gbar i{display:block;height:100%;background:var(--acc);width:100%;transition:width .25s linear}
.gbar.warn i{background:var(--red)}
.q-prompt{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--tx2);margin:16px 0 10px;text-align:center}
.choices{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(max-width:620px){.choices{grid-template-columns:1fr}}
.choice{display:flex;align-items:center;gap:11px;padding:13px 15px;border:1px solid var(--border);border-radius:9px;background:var(--bg3);cursor:pointer;
  transition:.15s;text-align:left;color:var(--tx);font-size:.92rem;font-family:inherit;line-height:1.3}
.choice:hover:not(:disabled){border-color:var(--acc);background:var(--bg4)}
.choice .ck{font-family:var(--mono);font-weight:700;color:var(--tx2)}
.choice.correct{border-color:var(--acc);background:var(--acc-dim);color:var(--white)}
.choice.correct .ck{color:var(--acc)}
.choice.wrong{border-color:var(--red);background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--white)}
.choice.wrong .ck{color:var(--red)}
.choice:disabled{cursor:default}
.feedback{margin-top:16px;padding:13px 15px;border-radius:9px;background:var(--bg3);border-left:3px solid var(--cyan);font-size:.9rem;color:var(--tx);line-height:1.55;display:none}
.feedback.v{display:block}
.feedback b{color:var(--cyan)}
.g-nav{display:flex;justify-content:space-between;gap:10px;margin-top:16px}
.result{text-align:center;padding:5vh 0}
.result .big{font-family:var(--serif);font-size:3rem;color:var(--acc);line-height:1}
.result .lbl{color:var(--tx2);font-family:var(--mono);letter-spacing:.05em;margin:8px 0 20px}

.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(80px);background:var(--acc);color:#03130b;
  font-family:var(--mono);font-size:.72rem;font-weight:700;padding:10px 22px;border-radius:7px;z-index:300;transition:transform .3s;letter-spacing:.06em}
.toast.show{transform:translateX(-50%) translateY(0)}

@media(max-width:880px){
  .app{grid-template-columns:1fr}
  .sidebar{position:static;max-height:40vh}
  .main{max-height:none}
  .brand span{display:none}
}
@media(max-width:560px){ .topbar{gap:8px;padding:9px 12px} .disclaimer{display:none} .mon-hr b{font-size:1.6rem} }
