/* Shared styles for the "Understand your body" health modules (heart, breathing, …).
   Scoped to .hmod / #h* so it never touches site chrome. Dark-theme native. */
.hmod-lead{color:#aeb9d6;max-width:64ch;line-height:1.6;margin:-2px 0 18px}
.hmod{display:grid;gap:20px;grid-template-columns:minmax(0,1fr) minmax(0,360px);align-items:start;margin:8px 0 8px}
@media(max-width:820px){.hmod{grid-template-columns:1fr}}
.hstage{position:relative;background:radial-gradient(120% 90% at 50% 12%,#15203c 0%,#0b0f1e 72%);
  border:1px solid rgba(120,150,220,.18);border-radius:16px;padding:14px;min-height:340px;overflow:hidden}
.hstage svg{display:block;width:100%;height:auto}
.hstage canvas{display:block;width:100%}
.hpanel{background:rgba(13,18,34,.55);border:1px solid rgba(120,150,220,.18);border-radius:14px;padding:16px 18px}
.hpanel h3{margin:.2rem 0 .3rem;font-size:.74rem;text-transform:uppercase;letter-spacing:.07em;color:#8ea3cf}
.hpanel p{margin:0 0 .9rem;font-size:.95rem;line-height:1.6;color:#d8e1f5}
.hpanel .note{background:rgba(120,150,220,.09);border:1px solid rgba(120,150,220,.2);border-radius:10px;padding:.6rem .75rem;color:#eaf0ff;font-size:.9rem}
.hreadouts{display:flex;flex-wrap:wrap;gap:10px;margin:2px 0 14px}
.hstat{flex:1 1 120px;background:rgba(20,28,50,.55);border:1px solid rgba(120,150,220,.16);border-radius:12px;padding:10px 12px}
.hstat .v{font-size:1.5rem;font-weight:700;color:#fff;line-height:1.1}
.hstat .u{font-size:.72rem;color:#9aa8cd;margin-left:2px}
.hstat .k{font-size:.72rem;color:#8ea3cf;text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
.hctrl{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
.hctrl label{font-size:.82rem;color:#b8c6ec;display:flex;justify-content:space-between;gap:10px}
.hctrl input[type=range]{width:100%;min-width:0;accent-color:#ff6f7a}
.hctrl .ends{display:flex;justify-content:space-between;font-size:.72rem;color:#8ea3cf}
.hbtn{border:1px solid rgba(150,170,220,.3);background:rgba(20,26,44,.7);color:#cdd8f2;border-radius:999px;padding:.35rem .8rem;font-size:.82rem;cursor:pointer}
.hbtn:hover{background:rgba(40,48,76,.9);color:#fff}
.hbtn.on{background:rgba(255,111,122,.24);border-color:rgba(255,111,122,.5);color:#fff}
.hmod-disc{margin-top:8px;font-size:.8rem;color:#8493b5;line-height:1.5}
.hsec{margin-top:22px}
.hsec h2{font-size:1.15rem;color:#fff;margin:0 0 6px}

/* "How Your Body Works" — system selector + 3D organ stage */
.sys-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;align-items:center}
.sys-tab{display:inline-flex;align-items:center;gap:7px;border:1px solid rgba(140,165,225,.24);
  background:rgba(20,26,44,.6);color:#cdd8f2;border-radius:999px;padding:7px 15px;font-size:.95rem;
  cursor:pointer;transition:background .15s,border-color .15s}
.sys-tab:hover{background:rgba(40,48,76,.8);color:#fff}
.sys-tab.on{background:rgba(255,111,122,.18);border-color:rgba(255,111,122,.55);color:#fff}
.sys-tab .st-ico{font-size:1.05rem;line-height:1}
.sys-soon{color:#7c88a8;font-size:.82rem;padding-left:2px}
.hstage #sysCanvas{width:100%;height:auto;display:block;touch-action:pan-y}
.sys-hint{position:absolute;left:0;right:0;bottom:12px;text-align:center;color:#9fb0d0;font-size:.85rem;pointer-events:none}
.sys-load{position:absolute;inset:0;display:grid;place-items:center;color:#8ea3cf;font-size:.9rem;background:rgba(11,15,30,.35)}
.sys-crosslink{display:inline-flex;align-items:center;gap:8px;margin:16px 0 2px;padding:10px 15px;
  border:1px solid rgba(120,150,220,.22);border-radius:12px;background:rgba(20,28,50,.45);
  color:#cdd8f2;text-decoration:none;font-size:.92rem}
.sys-crosslink:hover{border-color:rgba(140,165,225,.5);color:#fff}

/* Nutrition — food picker + plate */
.nut-picker{display:flex;flex-direction:column;gap:12px}
.nut-grp .nut-glabel{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#8ea3cf;margin-bottom:6px}
.nut-foods{display:flex;flex-wrap:wrap;gap:6px}
.nut-food{font-size:.85rem;padding:.3rem .6rem}
.nut-plate{display:flex;flex-wrap:wrap;gap:6px;min-height:2.4em;margin-bottom:10px}
.nut-empty{color:#8493b5;font-size:.88rem;line-height:1.5}
.nut-chip{border:1px solid rgba(150,170,220,.3);background:rgba(30,38,64,.7);color:#dfe7f7;border-radius:999px;padding:.25rem .6rem;font-size:.82rem;cursor:pointer}
.nut-chip:hover{background:rgba(255,111,122,.2);border-color:rgba(255,111,122,.5)}
.nut-bar{display:flex;height:16px;border-radius:8px;overflow:hidden;background:rgba(255,255,255,.06)}
.nut-bar span{display:block;height:100%}

/* DNA — helix + Punnett */
.hstage #dnaCanvas{width:100%;height:auto;display:block}
.dna-parents{display:flex;gap:16px;margin:12px 0}
.dna-plabel{font-size:.72rem;color:#8ea3cf;margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em}
.dna-alleles{display:flex;align-items:center;gap:5px;color:#8ea3cf}
.dna-allele{border:1px solid rgba(150,170,220,.35);background:rgba(30,38,64,.75);color:#fff;border-radius:8px;width:34px;height:34px;font-size:1rem;font-weight:700;cursor:pointer}
.dna-allele:hover{border-color:#f3c849}
.dna-punn-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;max-width:240px;margin:4px 0}
.dna-cell{aspect-ratio:1;display:grid;place-items:center;border-radius:8px;font-weight:700;font-size:.95rem}
.dna-cell.dna-hd{background:transparent;color:#8ea3cf}
.dna-cell.dom{background:rgba(107,208,160,.22);color:#bff0d6}
.dna-cell.rec{background:rgba(238,127,140,.2);color:#ffd0d6}

/* First aid — notice + CPR trainer */
.fa-notice{border:2px solid #f2a33c;background:rgba(242,163,60,.12);border-radius:14px;padding:14px 18px;margin:4px 0 18px;color:#ffe6c2;line-height:1.55;font-size:.95rem}
.fa-notice b{color:#ffcf8a}
.fa-cpr{display:flex;flex-direction:column;align-items:center;gap:14px;padding:16px 8px}
.fa-pulse{width:150px;height:150px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#ff8f97,#bb3f3b);display:grid;place-items:center;color:#fff;font-weight:700;font-size:1.05rem;text-align:center;transition:transform .09s ease-out;box-shadow:0 0 44px rgba(255,111,122,.35);user-select:none}
.fa-conc{border:1px solid rgba(120,150,220,.2);border-radius:12px;padding:13px 16px;margin:10px 0;background:rgba(20,28,50,.4)}
.fa-conc h3{margin:0 0 5px;color:#fff;font-size:1rem}
.fa-conc p{margin:0;color:#d0dbf2;font-size:.92rem;line-height:1.55}
.fa-conc .learn{display:block;margin-top:6px;color:#8fb0e6;font-size:.82rem}

/* "Test Yourself" quiz */
.quiz{max-width:600px;margin:6px auto;background:rgba(13,18,34,.55);border:1px solid rgba(120,150,220,.18);border-radius:16px;padding:20px 22px}
.quiz-top{display:flex;justify-content:space-between;font-size:.78rem;color:#8ea3cf;text-transform:uppercase;letter-spacing:.05em}
.quiz-bar{height:5px;border-radius:3px;background:rgba(255,255,255,.07);margin:8px 0 18px;overflow:hidden}
.quiz-bar i{display:block;height:100%;background:linear-gradient(90deg,#5b86ec,#ff6f7a);transition:width .3s}
.quiz-q{font-size:1.18rem;color:#fff;line-height:1.4;margin:0 0 16px}
.quiz-q b{color:#ffd27a}
.quiz-clue{display:block;color:#cdd8f2;font-size:1rem;font-weight:400;font-style:italic;margin-top:8px;line-height:1.5}
.quiz-opts{display:flex;flex-direction:column;gap:9px}
.quiz-opt{text-align:left;border:1px solid rgba(150,170,220,.28);background:rgba(20,26,44,.6);color:#dfe7f7;border-radius:12px;padding:.7rem .95rem;font-size:1rem;cursor:pointer;transition:background .13s,border-color .13s;font:inherit;font-size:1rem}
.quiz-opt:hover:not(:disabled){background:rgba(40,48,76,.9);border-color:rgba(140,165,225,.55)}
.quiz-opt:disabled{cursor:default;opacity:.85}
.quiz-opt.correct{background:rgba(107,208,160,.22);border-color:rgba(107,208,160,.65);color:#dff5e8;opacity:1}
.quiz-opt.wrong{background:rgba(238,127,140,.2);border-color:rgba(238,127,140,.6);color:#ffd9de}
.quiz-fb{margin-top:16px}
.quiz-verdict{font-weight:700;font-size:1.02rem}
.quiz-verdict.ok{color:#8fe6b6}
.quiz-verdict.no{color:#ff9aa6}
.quiz-expl{margin:.5rem 0 0;color:#d0dbf2;font-size:.94rem;line-height:1.55}
.quiz-fbfoot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}
.quiz-see{color:#8fb0e6;text-decoration:none;font-size:.9rem}
.quiz-see:hover{color:#fff;text-decoration:underline}
.quiz-start{text-align:center}
.quiz-startk{font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:#8ea3cf;margin-bottom:6px}
.quiz-startp{color:#d8e1f5;line-height:1.6;max-width:46ch;margin:0 auto 18px;font-size:1rem}
.quiz-go{font-size:1rem;padding:.6rem 1.5rem}
.quiz-end{text-align:center}
.quiz-scorebig{font-size:3.2rem;font-weight:800;color:#fff;line-height:1}
.quiz-scorebig span{font-size:1.5rem;color:#8ea3cf;font-weight:700}
.quiz-donetxt{color:#d8e1f5;line-height:1.6;max-width:44ch;margin:12px auto 20px;font-size:1.02rem}
.quiz-endbtns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.quiz-keys{margin:10px 0 0;font-size:.82rem;color:#8ea3cf}
.quiz-review{margin:4px auto 22px;max-width:52ch;text-align:start;background:rgba(120,150,220,.07);
  border:1px solid rgba(120,150,220,.16);border-radius:12px;padding:14px 16px}
.quiz-reviewk{font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:#8ea3cf;font-weight:700}
.quiz-reviewp{margin:6px 0 10px;font-size:.9rem;color:#d8e1f5}
.quiz-misslist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.quiz-misslist li{font-size:.92rem;line-height:1.45;color:#d8e1f5}
.quiz-missq{display:block;color:#aebadd}
.quiz-missq .quiz-clue{font-size:.88em}
.quiz-missa{display:block;margin-top:2px}
.quiz-missa a{font-weight:700}

/* How-it-works — custom system controls (nervous reaction test, endocrine glucose loop) */
.sys-inset{width:100%;height:132px;margin:2px 0 12px;border:1px solid rgba(120,150,220,.16);border-radius:10px;background:rgba(10,15,28,.5)}
.sys-controls{margin:6px 0 4px}
.sys-react{width:100%;border:0;border-radius:14px;padding:24px 12px;font-size:1.18rem;font-weight:700;color:#fff;cursor:pointer;transition:background .08s ease;font-family:inherit}
.sys-react.idle,.sys-react.result{background:#33507e}
.sys-react.idle:hover,.sys-react.result:hover{background:#3d5f95}
.sys-react.wait{background:#b3492f}
.sys-react.go{background:#2ea86a}
.sys-react.early{background:#8a4a2a}
.sys-reacthint{color:#8ea3cf;font-size:.85rem;text-align:center;margin:8px 0 0;line-height:1.4}
.sys-eatbtns{display:flex;gap:8px;margin-bottom:10px}
.sys-eat{flex:1;border:1px solid rgba(150,170,220,.3);background:rgba(20,26,44,.7);color:#e2e9fa;border-radius:10px;padding:.6rem .4rem;font-size:.9rem;cursor:pointer;font-family:inherit}
.sys-eat:hover{background:rgba(255,111,122,.18);border-color:rgba(255,111,122,.5)}
.sys-eat:active{transform:translateY(1px)}
.sys-modes{display:flex;gap:6px}
.sys-mode{flex:1;border:1px solid rgba(150,170,220,.24);background:rgba(20,26,44,.5);color:#b8c6ec;border-radius:999px;padding:.4rem .3rem;font-size:.8rem;cursor:pointer;font-family:inherit}
.sys-mode.on{background:rgba(91,134,236,.25);border-color:#6d97f0;color:#fff}

/* Senses — hearing scale + sight controls */
.sns-scale{position:relative;height:16px;margin-top:6px;font-size:.7rem;color:#8ea3cf}
.sns-scale span{position:absolute;transform:translateX(-50%)}
.sns-hint{color:#8ea3cf;font-size:.85rem;margin:8px 0 0;line-height:1.45}
.sns-note{margin-top:14px}
.sns-safe{background:rgba(242,163,60,.1)!important;border-color:rgba(242,163,60,.32)!important;color:#ffe6c2!important;margin-top:10px}
.sns-play{width:100%;padding:.6rem;font-size:1rem;margin-top:6px}
.sns-play.sns-playing{background:rgba(107,208,160,.25);border-color:rgba(107,208,160,.6);color:#fff}
.sns-modes{display:flex;gap:6px;margin-bottom:10px}

/* Muscles & movement */
.mus-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mus-stat{--mc:#b07472}
.mus-stat .v{display:flex;align-items:center;gap:7px;font-size:1rem;font-weight:600}
.mus-stat .k{margin-top:3px;font-weight:600}
.mus-dot{width:12px;height:12px;border-radius:50%;background:var(--mc);box-shadow:0 0 0 3px color-mix(in srgb,var(--mc) 22%,transparent);flex:none}
.mus-actions{display:flex;gap:6px;margin:12px 0 4px;flex-wrap:wrap}
.mus-actions .hbtn{flex:1;min-width:96px}
.mus-hint{color:#cfe0ff;font-size:.9rem;line-height:1.5;margin:10px 0 0;min-height:2.6em}
.mus-only{margin-top:12px;background:rgba(255,122,82,.1)!important;border-color:rgba(255,122,82,.3)!important;color:#ffd9c9!important}
.mus-types{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:4px}
.mus-type{background:rgba(120,140,200,.07);border:1px solid rgba(140,160,210,.16);border-radius:12px;padding:12px 14px}
.mus-type b{display:block;color:#e8eefb;margin-bottom:4px}
.mus-type span{color:#aeb9d6;font-size:.86rem;line-height:1.45}
.mus-xlinks{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.mus-xlinks .sys-crosslink{margin-top:0}
@media(max-width:640px){.mus-types{grid-template-columns:1fr}}

/* Joints & range of motion */
.jnt-picker{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:14px}
.jnt-pill{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;padding:10px 6px;border-radius:12px;cursor:pointer;background:rgba(120,140,200,.07);border:1px solid rgba(140,160,210,.16);color:#d8e1f5;transition:background .15s,border-color .15s}
.jnt-pill:hover{background:rgba(120,140,200,.14)}
.jnt-pill.on{background:rgba(122,167,240,.2);border-color:rgba(150,190,255,.6)}
.jnt-pill .ic{font-size:1.3rem;line-height:1}
.jnt-pill b{font-size:.82rem}
.jnt-pill .ex{font-size:.7rem;color:#8ea3cf;line-height:1.2}
.jnt-head{font-weight:700;color:#e8eefb;margin-bottom:10px;font-size:1.05rem}
.jnt-head .jnt-ex{color:#8ea3cf;font-weight:500;font-size:.92rem}
.jnt-stats{grid-template-columns:1fr 1fr}
.jnt-stats .v{font-size:1rem;line-height:1.3}
.jnt-cap{color:#cfe0ff;font-size:.92rem;line-height:1.55;margin:12px 0 0}
.jnt-btns{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 4px}
/* one dial per axis of freedom — the card count IS the lesson */
/* Up to three dials need the full 720px wrap, so this tool stacks stage-over-panel instead of
   side-by-side. A CLASS, never an inline grid-template-columns — see learn/health/CLAUDE.md. */
.hmod.jnt-mod{grid-template-columns:minmax(0,1fr)}
.jnt-stage{display:block;min-height:0}
.jnt-axes{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;width:100%}
.jnt-axes.one{grid-template-columns:minmax(0,320px);justify-content:center}
.jnt-axis{background:rgba(20,28,50,.45);border:1px solid rgba(120,150,220,.16);border-radius:12px;padding:10px 10px 12px;min-width:0}
/* min-height keeps the dials on one baseline when a long motion name wraps to two lines */
.jnt-axis .ja-title{font-size:.78rem;color:#cdd8f2;line-height:1.3;text-align:center;min-height:3.9em}
.jnt-axis .ja-plane{display:block;font-size:.68rem;color:#8ea3cf;text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
/* Touch contract: pan-y, NOT none — a thumb-drag over the dial must still scroll the page.
   See learn/health/CLAUDE.md. The range input below is the guaranteed touch path. */
.jnt-axis svg{display:block;width:100%;height:auto;touch-action:pan-y;cursor:grab;border-radius:10px}
.jnt-axis svg:active{cursor:grabbing}
.jnt-axis svg:focus-visible{outline:2px solid rgba(255,111,122,.85);outline-offset:2px}
.jnt-axis .ja-val{text-align:center;font-size:.9rem;font-weight:700;color:#fff;margin:2px 0 6px;min-height:1.3em}
.jnt-axis .ja-val.at-limit{color:#ffd27a}
.jnt-axis input[type=range]{width:100%;min-width:0;accent-color:#ff6f7a}
.jnt-axis .ja-note{font-size:.7rem;color:#ffd27a;text-align:center;line-height:1.3;min-height:1.8em;margin-top:3px}
@media(max-width:640px){.jnt-picker{grid-template-columns:repeat(3,1fr)}
  .jnt-axes{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}
