/* Shared onboarding and evidence/governance patterns for every module. */
.module-start{width:min(calc(100% - 40px),var(--shell));margin:18px auto 24px;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:var(--radius-md);box-shadow:none}
.module-start-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.45fr);gap:14px 28px;align-items:start}
.module-meta,.module-start-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px 16px}
.module-meta{margin-bottom:7px;color:var(--muted);font:600 10.5px/1.4 var(--mono)}
.module-status{color:var(--blue)}
.module-start h2{margin:0 0 5px!important;font:700 1.25rem/1.25 var(--serif)!important;color:var(--ink)!important}
.module-start-instruction{max-width:72ch;margin:0;color:var(--muted);font:400 .88rem/1.5 var(--sans)}
.module-start-actions{margin-top:11px}
.module-start-actions>a:not(.button){color:var(--blue-dark);font-size:.82rem;font-weight:650}
.module-start-actions .button{min-height:44px!important;padding:9px 13px!important;font:700 .78rem/1.2 var(--sans)!important}

/* --- Workspace entry action: shown only where it has somewhere to go ---------------
   "Open interactive workspace" describes a destination. On a wide layout the module is
   already visible below Start Here, so the control opened nothing — it scrolled, while
   promising a workspace the learner was already looking at.

   The action is therefore hidden wherever no focused workspace exists to enter. Because
   each module's focused breakpoint differs (tka-sagittal 599px, hip-spine 759px) and two
   modules have no focused mode at all, the breakpoint cannot live here. Instead a module
   sets `--enter-action:inline-flex` inside its own focused media query, and this rule
   reveals the control only then. Modules that never enter a workspace never set it, so
   their entry action stays hidden at every width and the learner simply scrolls to the
   model. The flag is a custom property so it can cross the module/platform boundary: the
   module owns the breakpoint, this shared rule owns the presentation.

   Hiding the row (not just the button) when the entry control is its only child keeps
   radiograph-viewer — whose Start Here has no second action — from leaving an empty flex
   row and its 11px top margin as dead space under the instruction.                    */
.module-start-actions [data-enter-workspace]{display:var(--enter-action,none)}
.module-start-actions:not(:has(> :not([data-enter-workspace]))){display:var(--enter-action,none)}

.module-objectives,.module-evidence-card,.module-references{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md)}
.module-objectives summary,.module-evidence-card summary,.module-references summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:12px 14px;cursor:pointer;color:var(--ink);font:700 .86rem/1.35 var(--sans)}
.module-objectives summary span,.module-references summary span{color:var(--muted);font:500 11px/1.4 var(--mono)}
.module-objectives ul,.module-objectives ol,.module-evidence-card>:not(summary),.module-references>:not(summary){margin-top:0;padding-right:18px;padding-bottom:18px;padding-left:18px}
.module-objectives li,.module-evidence-card li,.module-references li{margin-block:7px}
.module-safeguard{display:none}
.module-evidence{padding:20px 0 36px;background:var(--bg);scroll-margin-top:90px}
.module-evidence-panel{width:min(calc(100% - 40px),var(--shell));margin:0 auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}
.module-evidence-panel>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 20px;cursor:pointer;color:var(--ink);font:700 1rem/1.35 var(--sans);list-style:none}
.module-evidence-panel>summary::-webkit-details-marker{display:none}
.module-evidence-panel>summary::after{content:'+';display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-subtle);color:var(--blue);font-size:1.15rem}
.module-evidence-panel[open]>summary::after{content:'−'}
.module-evidence-panel>summary span{color:var(--muted);font:500 11px/1.4 var(--mono)}
.module-evidence-body{padding:8px 20px 22px;border-top:1px solid var(--line)}
.module-evidence-body>.section-heading{margin:18px 0}
.module-evidence-body>.section-heading h2{margin:5px 0 0;font:700 clamp(1.25rem,2.5vw,1.65rem)/1.25 var(--serif)}
.module-evidence-grid{display:grid;grid-template-columns:1fr;gap:10px}
.module-evidence-card{scroll-margin-top:90px}
.module-evidence-card p{margin:0;color:var(--muted)}
.module-evidence-card ul{margin-top:0}
.module-evidence-card a,.module-references a{color:var(--blue-dark)}
.module-references{margin-top:16px;scroll-margin-top:90px}
.module-evidence-grid>.module-references{grid-column:1/-1;order:5;margin-top:0}
.module-evidence-grid>#attribution-and-provenance,.module-evidence-grid>#attribution{order:3}
.module-references ol{margin-top:0}
.module-reference-note{margin:0 18px 18px;color:var(--muted);font-size:.82rem}
.module-bottom-actions{width:min(calc(100% - 40px),var(--shell));margin:12px auto 0;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 16px;color:var(--muted);font-size:.78rem}
.module-bottom-actions a{color:var(--blue-dark);font-weight:650}
.module-objectives summary:focus-visible,.module-evidence-panel>summary:focus-visible,.module-evidence-card summary:focus-visible,.module-references summary:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-3px;border-radius:var(--radius-sm)}
@media(max-width:760px){.module-start,.module-evidence-panel,.module-bottom-actions{width:min(calc(100% - 24px),var(--shell))}.module-start-grid,.module-evidence-grid{grid-template-columns:1fr}.module-safeguard{display:none}}
@media(prefers-reduced-motion:reduce){.module-start *,.module-evidence *{scroll-behavior:auto!important}}
