/* ARETE training platform — page stylesheet.
 * Extracted from training.html on 2026-06-01 (Batch 3).
 * Edit this file directly; no rebuild step required — express.static
 * serves it from /assets/training.css. The HTML <link> tag is in
 * training.html's <head>.
 *
 * The second style block in training.html (inside a JS template
 * literal that builds the PDF/print report) stays inline — it is
 * not page CSS but report-specific print rules generated on demand.
 */
:root{--edps-blue:#282875;--edps-blue-l:#3a3a9e;--edps-yellow:#ffcc00;--navy:#282875;--navy-l:#3a3a9e;--blue:#4b4dc0;--coral:#c75a2a;--green:#1d7a3f;--gold:#b8860b;--red:#b22222;--accent:#3f40a8;--accent-d:#2c2c86;--accent-soft:#eef1fc;--accent-line:#cdd0ee;--bg:#f2f3fa;--card:#fff;--text:#2a2a3a;--ts:#67687d;--border:#d6d7ea;--bl:#e7e8f5;--ib:#f7f8fd;--hl:#eef1fc;--sh:0 1px 3px rgba(20,20,55,.10)}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Source Sans 3',system-ui,sans-serif;font-size:14px;color:var(--text);background:var(--bg);line-height:1.55}
.app{max-width:1060px;margin:0 auto;background:var(--bg);min-height:100vh}
header{background:#fff;color:var(--edps-blue);padding:18px 28px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;border-top-left-radius:8px;border-top-right-radius:8px;border-bottom:3px solid var(--edps-yellow)}
header h1{font-family:system-ui,-apple-system,sans-serif;font-size:20px;font-weight:700;letter-spacing:0.5px;color:var(--edps-blue)}
header .sub{font-size:11px;color:var(--ts);margin-top:2px}
.tb{display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.btn{background:var(--edps-blue);border:none;color:#fff;padding:6px 12px;border-radius:3px;cursor:pointer;font-size:11px;font-family:inherit;font-weight:600;transition:all .15s;letter-spacing:.3px;text-transform:uppercase}
.btn:hover{background:var(--edps-blue-l)}
nav{background:var(--edps-blue-l);display:flex;overflow-x:auto}
nav button{background:none;border:none;color:rgba(255,255,255,.7);padding:14px 18px;cursor:pointer;font-size:13px;font-family:inherit;font-weight:600;border-bottom:3px solid transparent;transition:all .15s;white-space:nowrap}
nav button:hover{color:#fff;background:rgba(255,255,255,.05)}
nav button.active{color:#fff;border-bottom-color:var(--edps-yellow);background:var(--edps-blue)}
.pnl{display:none;padding:24px 28px 40px}.pnl.active{display:block}
.crd{background:var(--card);border:1px solid var(--bl);border-radius:6px;padding:20px;margin-bottom:16px;box-shadow:var(--sh)}
h2{font-family:system-ui,-apple-system,sans-serif;font-size:17px;color:var(--edps-blue);margin:0 0 14px;padding-bottom:8px;border-bottom:2px solid var(--edps-blue);font-weight:600}
h3{font-size:14px;color:var(--blue);margin:18px 0 8px;font-weight:600}
h4{font-size:12px;color:var(--coral);margin:14px 0 6px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}
.fld{margin-bottom:12px}.fld label{display:block;font-weight:600;font-size:12px;margin-bottom:3px;color:var(--navy)}
.req{color:var(--coral)}
.fld input[type=text],.fld input[type=date],.fld input[type=number],.fld textarea,.fld select{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:4px;font-size:13px;font-family:inherit;background:var(--ib);transition:border-color .15s}
.fld textarea{min-height:50px;resize:vertical}.fld select{cursor:pointer;background:var(--hl)}
.fld input:focus,.fld textarea:focus,.fld select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 2px rgba(46,109,173,.12)}
.fld .ht{font-size:11px;color:var(--ts);margin-top:2px}
.row{display:flex;gap:14px;flex-wrap:wrap}.row>.fld{flex:1;min-width:180px}
.sb{background:var(--ib);border:1px solid var(--bl);border-radius:5px;padding:14px;margin-bottom:10px}
.sb.imp{background:#fef8f4;border-color:#e8d5c8}
.sb .q{font-weight:600;font-size:12px;color:var(--navy);margin-bottom:4px}
.sb .g{font-size:11px;color:var(--ts);margin-bottom:8px;line-height:1.5}
.sr{display:flex;gap:10px;flex-wrap:wrap}.sr>.fld{flex:1;min-width:120px}.sr>.fld.j{flex:2.5;min-width:220px}
.shdr{background:var(--navy);color:#fff;padding:8px 14px;border-radius:4px;margin:18px 0 10px;font-weight:600;font-size:12px;letter-spacing:.4px;text-transform:uppercase}
.shdr.ih{background:var(--coral)}.shdr.ah{background:var(--gold)}
.dc{border:2px solid var(--edps-blue);border-radius:6px;margin-bottom:16px;overflow:hidden}
.dc .dh{background:var(--edps-blue);color:#fff;padding:8px 14px;display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;border-bottom:1px solid var(--edps-blue-l)}
.dc .db{padding:16px}
.rmbtn{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);color:#fff;padding:4px 12px;border-radius:3px;cursor:pointer;font-size:11px;font-weight:600;font-family:inherit}.rmbtn:hover{background:var(--red)}
.addb{background:var(--card);border:2px dashed var(--blue);color:var(--blue);padding:12px;border-radius:6px;text-align:center;cursor:pointer;font-size:13px;font-weight:600;transition:all .15s;margin-bottom:16px}.addb:hover{background:#eef4fb}
.rg{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.ri{display:flex;justify-content:space-between;padding:5px 10px;background:var(--ib);border-radius:3px;font-size:12px}
.ri .l{color:var(--ts)}.ri .v{font-weight:700;color:var(--navy)}
.rp{text-align:center;padding:16px;margin:10px 0;border-radius:8px}
.rp .sc{font-family:'Source Serif 4',serif;font-size:40px;font-weight:600}
.rp .lv{font-size:18px;font-weight:700;margin-top:2px;letter-spacing:.5px}
.rl{background:#e8f5e9;color:var(--green)}.rr{background:#fff8e1;color:var(--gold)}.rh{background:#fce4ec;color:var(--red)}
.ay{padding:8px 14px;margin-bottom:6px;border-radius:5px;font-size:13px;font-weight:600;background:#fce4ec;color:var(--red);border-left:4px solid var(--red)}
.an{padding:8px 14px;margin-bottom:6px;border-radius:5px;font-size:13px;font-weight:500;background:#e8f5e9;color:var(--green);border-left:4px solid var(--green)}

.af{background:var(--card);border:1px solid var(--bl);border-radius:4px;padding:8px 10px;margin-bottom:5px;display:flex;gap:8px;align-items:flex-start}
.af input[type=checkbox]{margin-top:3px;accent-color:var(--coral)}
.af .afc{flex:1}.af .afl{font-size:12px;font-weight:600}
.af .afe{width:100%;margin-top:3px;padding:4px 8px;border:1px solid var(--border);border-radius:3px;font-size:11px;font-family:inherit;background:var(--ib)}
.pb{background:var(--bl);height:4px;border-radius:2px;margin:8px 0;overflow:hidden}.pb .f{height:100%;border-radius:2px;transition:width .3s;background:var(--blue)}
.wb{background:#fff3e0;border:1px solid #ffe0b2;border-radius:6px;padding:12px;margin:12px 0;font-size:12px;color:#bf5600}

table.ref{width:100%;border-collapse:collapse;margin-bottom:14px;font-size:12px}
table.ref th{background:var(--navy);color:#fff;padding:7px 10px;text-align:left;font-weight:600;font-size:11px}
table.ref td{padding:7px 10px;border:1px solid var(--bl);vertical-align:top}table.ref tr:nth-child(even){background:var(--ib)}
table.mx{width:100%;border-collapse:collapse;margin:14px 0;text-align:center;font-size:12px}
table.mx th,table.mx td{padding:8px;border:1px solid var(--border);font-weight:600}table.mx th{background:var(--navy);color:#fff}
.cl{background:#e8f5e9}.cr{background:#fff8e1}.ch{background:#fce4ec}
.summary-hero{background:var(--navy);color:#fff;border-radius:8px;padding:24px;margin-bottom:16px;text-align:center}
.summary-hero .sh-score{font-family:'Source Serif 4',serif;font-size:52px;font-weight:600}
.summary-hero .sh-level{font-size:22px;font-weight:700;letter-spacing:1px;margin-top:4px}
.summary-hero .sh-sub{font-size:12px;opacity:.7;margin-top:8px}
.action-panel{background:var(--card);border:2px solid var(--navy);border-radius:8px;padding:20px;margin-bottom:16px}
.action-panel h3{margin:0 0 12px;color:var(--navy);font-size:15px}
.ds-result-card{background:var(--card);border:1px solid var(--bl);border-radius:6px;padding:16px;margin-bottom:12px;box-shadow:var(--sh)}
.ds-result-card .drc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.ds-result-card .drc-name{font-weight:600;font-size:14px;color:var(--navy)}
.ds-result-card .drc-badge{padding:4px 12px;border-radius:12px;font-size:11px;font-weight:700;color:#fff}
.badge-low{background:var(--green)}.badge-risk{background:var(--gold)}.badge-high{background:var(--red)}
.calc-detail{font-size:12px;color:var(--ts);background:var(--ib);border-radius:4px;padding:8px 12px;margin:8px 0;font-family:'Source Serif 4',serif}
details.meth>summary{cursor:pointer;font-family:system-ui,-apple-system,sans-serif;font-size:17px;color:var(--edps-blue);font-weight:600;padding:12px 0 8px;border-bottom:2px solid var(--edps-blue);list-style:none;user-select:none}
details.meth>summary::-webkit-details-marker{display:none}
details.meth>summary::before{content:'+';display:inline-block;width:18px;font-size:16px;font-weight:bold;color:var(--edps-blue);transition:transform .2s}
details.meth[open]>summary::before{content:'\2212'}
details.meth .meth-body{padding-top:12px}
@media print{body{background:#fff;font-size:11px}.app{box-shadow:none}header,.tb,nav,.addb,.rmbtn,.btn{display:none!important}.pnl{display:block!important;padding:12px;page-break-inside:avoid}details.meth{display:block}details.meth>summary{pointer-events:none}details.meth .meth-body{display:block!important}}
/* Visually hidden but exposed to assistive technology — used by aria-describedby helpers. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Workflow diagram on the Instructions tab */
.wf-diagram{width:100%;max-width:1000px;margin:16px auto 8px;display:block;height:auto}
.wf-step{cursor:pointer;transition:transform .15s}
.wf-step:hover, .wf-step:focus{outline:none}
.wf-step:hover circle, .wf-step:focus circle{fill:#003f7a}
.wf-step:hover .wf-title, .wf-step:focus .wf-title{fill:#003f7a;text-decoration:underline}
.wf-step:focus circle{stroke:#ff9800;stroke-width:4}
/* Step reminder banner reused across tabs 1-5 */
.step-reminder{display:flex;align-items:center;gap:12px;background:linear-gradient(90deg,#e3f2fd 0%,#fff 100%);border-left:4px solid #282875;border-radius:4px;padding:10px 14px;margin-bottom:12px;font-size:12px}
.step-reminder .sr-badge{flex:0 0 auto;width:36px;height:36px;border-radius:50%;background:#282875;color:#fff;display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:18px;font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,0.18)}
.step-reminder .sr-body{flex:1;line-height:1.4}
.step-reminder .sr-head{font-weight:700;color:#282875;font-size:13px}
.step-reminder .sr-hint{color:#555;font-size:11px;margin-top:2px}
/* Toolbar dropdown menu items */
.menu-item:hover, .menu-item:focus{background:#f0f4fa;outline:none}
/* Full-screen overlay modal (Settings, About) */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:30px 20px;overflow-y:auto;animation:overlay-in 0.15s ease-out}
@keyframes overlay-in{from{opacity:0}to{opacity:1}}
.overlay-panel{background:#fff;border-radius:8px;width:100%;max-width:1000px;box-shadow:0 10px 40px rgba(0,0,0,0.25);animation:panel-in 0.2s ease-out}
@keyframes panel-in{from{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}
.overlay-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:2px solid #ffcc00;background:var(--edps-blue,#282875);color:#fff;border-radius:8px 8px 0 0}
.overlay-header h2{color:#fff;margin:0;font-size:18px;font-family:Georgia,serif}
.overlay-close{background:none;border:1px solid rgba(255,255,255,0.4);color:#fff;cursor:pointer;font-size:18px;padding:4px 12px;border-radius:4px;line-height:1}
.overlay-close:hover{background:rgba(255,255,255,0.15)}
.overlay-body{padding:20px 24px;max-height:calc(100vh - 160px);overflow-y:auto}
/* Step navigation (Back / Next) at the bottom of each working tab */
.step-nav{display:flex;justify-content:space-between;align-items:center;margin-top:24px;padding:16px 0;border-top:1px solid #e0e0e0}
.step-nav .sn-btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border:none;border-radius:5px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}
.step-nav .sn-next{background:var(--edps-blue,#282875);color:#fff}
.step-nav .sn-next:hover{background:#003f7a}
.step-nav .sn-back{background:#fff;color:var(--navy,#282875);border:1px solid #ccc}
.step-nav .sn-back:hover{background:#f0f4fa}
.step-nav .sn-hint{font-size:11px;color:var(--ts,#888);max-width:300px;text-align:center}
/* Grouped scoring box: parent fieldset wraps the three likelihood / impact
   children in a single labelled container, so the L1/L2/L3 and I1/Vol/I2
   factors are visually nested under their parent heading. */
fieldset.score-group{border:2px solid var(--navy, #282875);border-radius:8px;padding:14px 16px 16px;margin:0 0 14px;background:#fff;position:relative}
fieldset.score-group.impact{border-color:var(--coral, #d63a30)}
fieldset.score-group>legend{font-weight:700;color:var(--navy, #282875);background:#282875;color:#fff;padding:4px 12px;border-radius:4px;font-size:12px;letter-spacing:0.2px;margin-left:4px}
fieldset.score-group.impact>legend{background:#b8860b}
fieldset.score-group>.score-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}
@media (max-width:840px){fieldset.score-group>.score-grid{grid-template-columns:1fr}}
.skip-link{position:absolute;left:-9999px;top:0;z-index:999;background:var(--edps-blue);color:#fff;padding:8px 16px;font-size:14px;text-decoration:none}
.skip-link:focus{left:0;outline:3px solid #ffcc00;outline-offset:2px}
/* Global focus-visible ring so keyboard users can see where they are. */
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [role="tab"]:focus-visible, [role="radiogroup"]:focus-visible{outline:3px solid #ffcc00;outline-offset:2px;box-shadow:0 0 0 1px var(--edps-blue,#282875)}
[role="tab"]:focus-visible{outline-offset:-3px}
/* Suppress the flash of uncompiled template ({{ ... }}) before PetiteVue mounts.
   PetiteVue strips the v-cloak attribute the moment it compiles an element, so
   anything still carrying it has not been hydrated yet and must stay hidden. */
[v-cloak]{display:none !important}
.toast{position:fixed;bottom:24px;right:24px;z-index:1000;padding:12px 20px;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,0.18);font-size:13px;font-weight:600;max-width:340px;animation:toast-in 0.18s ease-out}
.toast-success{background:#e8f5e9;color:#1b5e20;border:1px solid #66bb6a}
.toast-error{background:#ffebee;color:#b71c1c;border:1px solid #ef5350}
.toast-info{background:#e3f2fd;color:#0d47a1;border:1px solid #64b5f6}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.full-width .app{max-width:100%;padding:0 20px}
.tl-flow{display:flex;align-items:flex-start;gap:0;margin:8px 0 12px}
.tl-step{flex:1;text-align:center;position:relative}
.tl-step .tl-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--edps-blue);color:#fff;font-size:12px;font-weight:700;margin-bottom:6px}
.tl-step.tl-done .tl-num{background:var(--green)}
.tl-step .tl-lbl{font-size:11px;font-weight:600;color:var(--navy);margin-bottom:4px}
.tl-step .tl-hint{font-size:9px;color:var(--ts);margin-bottom:3px;min-height:24px;line-height:1.3}
.tl-step .tl-arrow{position:absolute;top:14px;right:-12px;color:var(--border);font-size:18px}
.tl-step:last-child .tl-arrow{display:none}
.cia-box{background:linear-gradient(135deg,#e3f2fd 0%,#fce4ec 100%);border:2px solid var(--edps-blue);border-radius:8px;padding:14px;margin-bottom:12px}
.cia-box h4{color:var(--edps-blue);font-size:13px;margin:0 0 4px;text-transform:none;letter-spacing:0}
.cia-box .cia-hint{font-size:10px;color:var(--ts);margin-top:6px;line-height:1.4}
.cia-chk{display:flex;gap:16px;margin-top:8px}
.cia-chk label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;cursor:pointer;padding:6px 14px;border-radius:6px;border:2px solid var(--border);transition:all .15s}
.cia-chk label:has(input:checked){border-color:var(--edps-blue);background:rgba(40,40,117,0.08)}
.cia-chk label input{width:16px;height:16px;accent-color:var(--edps-blue)}
.risk-viz{margin-bottom:16px}
.risk-viz h3{color:var(--navy);margin:0 0 12px;font-size:14px;font-weight:600}
.viz-row{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:flex-start}
*:focus-visible{outline:2px solid var(--edps-blue);outline-offset:2px;border-radius:2px}
nav button:focus-visible{outline-color:var(--edps-yellow)}
@media(max-width:768px){
  header{flex-direction:column;align-items:flex-start;padding:16px;gap:16px;}
  .tb{width:100%;justify-content:flex-start;overflow-x:auto;padding-bottom:4px;}
  .pnl{padding:16px;}
  .row,.sr{flex-direction:column;gap:12px;}
  .fld input,.fld select,.fld textarea{font-size:16px;} /* prevents iOS zoom */
  .crd{padding:14px;}
}

/* ========================================================================
 * GUIDED MODE WIZARD STYLES
 * ========================================================================
 * Used only when state.mode === 'guided'. Kept self-contained so removing
 * the wizard would just mean stripping this block plus the v-if branches
 * in the body. Class names are prefixed `wiz-` to avoid clashing with the
 * expert-mode CSS, except where reuse is intentional (.btn).
 */
/* Wizard body width: previously 920 px while the parent .app is 1060 px,
   producing a visibly narrower body than the header above. Aligned to
   1060 px so the wizard cards span the same width as the header banner.
   Reported during the 2026-06-01 S2 walkthrough. */
.wiz-shell{max-width:1060px;margin:0 auto;padding:0 24px}
.wiz-progress{padding:12px 0 8px;border-bottom:1px solid var(--bl);background:#fff;position:sticky;top:0;z-index:10}
.wiz-progress-inner{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;font-size:11px;color:var(--ts);max-width:1060px;margin:0 auto;padding:0 24px;width:100%}
.wiz-step{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:14px;background:#eef2f7;color:var(--ts);white-space:nowrap;font-size:10.5px}
.wiz-step.done{background:#d4edda;color:var(--green,#1d7a3f)}
.wiz-step.current{background:var(--edps-blue);color:#fff;font-weight:600}
/* Clickable variant — only applied to already-completed steps. Visually a
   button: cursor pointer, subtle hover, no default button chrome. */
.wiz-step-clickable{border:1px solid transparent;cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s}
.wiz-step-clickable:hover{background:#a5d6a7;border-color:var(--green,#1d7a3f)}
.wiz-step-clickable:focus-visible{outline:2px solid var(--edps-blue);outline-offset:1px}
/* Yellow flag — steps the trainee must fill in the pre-loaded workshop tools
   (S2 + Inject 1), where almost everything else is pre-decided. Driven by
   input_step in WIZARD_STEPS + the wiz-step-input binding in training.html.
   Placed after .done/.current so it wins on equal specificity. */
.wiz-step.wiz-step-input{background:#fff3cf;color:#7a5c00;border:1px solid #e6b800;font-weight:600}
.wiz-step.wiz-step-input.current{background:#f4b400;color:#3a2c00}
.wiz-step-clickable.wiz-step-input:hover{background:#ffe28a;border-color:#c79100}
.wiz-bar{flex:0 0 12px;height:2px;background:#eef2f7;border-radius:1px}
.wiz-bar.done{background:var(--green,#1d7a3f)}
@media (max-width:720px){
  .wiz-progress-inner{padding:0 14px;gap:3px 4px}
  .wiz-step{font-size:10px;padding:2px 6px}
  .wiz-bar{display:none}
}
.wiz-card{background:#fff;border:1px solid var(--bl);border-radius:8px;padding:24px 28px;margin:18px 0;box-shadow:0 1px 3px rgba(0,0,0,0.04)}
.wiz-card h2{margin:0 0 6px;font-family:Georgia,serif;color:var(--navy);font-size:22px;font-weight:600;line-height:1.3}
.wiz-card .lead{margin:0 0 18px;color:var(--ts);font-size:14px;line-height:1.55}
.wiz-options{display:flex;flex-direction:column;gap:10px;margin:14px 0}
/* Two-column grid for the harms list (Step 4 — Harms). Single column on
   narrow viewports via the @media (max-width:720px) rule below. */
.wiz-harms-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}
@media (max-width:720px){
  .wiz-harms-grid{grid-template-columns:1fr}
}
.wiz-option{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border:2px solid var(--bl);border-radius:6px;cursor:pointer;background:#fff;transition:all .12s;text-align:left;font-family:inherit;font-size:14px;color:var(--navy);width:100%}
.wiz-option:hover{border-color:var(--edps-blue);background:#f3f8ff}
.wiz-option.selected{border-color:var(--edps-blue);background:#eef4fb;box-shadow:0 0 0 1px var(--edps-blue)}
.wiz-option-radio{flex-shrink:0;width:16px;height:16px;border-radius:50%;border:2px solid var(--bl);margin-top:2px;position:relative;background:#fff}
.wiz-option.selected .wiz-option-radio{border-color:var(--edps-blue)}
.wiz-option.selected .wiz-option-radio::after{content:'';position:absolute;inset:2px;border-radius:50%;background:var(--edps-blue)}
.wiz-option-check{flex-shrink:0;width:16px;height:16px;border-radius:3px;border:2px solid var(--bl);margin-top:2px;position:relative;background:#fff}
.wiz-option.selected .wiz-option-check{border-color:var(--edps-blue);background:var(--edps-blue)}
.wiz-option.selected .wiz-option-check::after{content:'\2713';position:absolute;top:-3px;left:1px;color:#fff;font-size:13px;font-weight:bold}
.wiz-option-body{flex:1}
.wiz-option-title{font-weight:600;color:var(--navy);margin-bottom:2px}
.wiz-option-hint{font-size:12px;color:var(--ts);line-height:1.5}
.wiz-actions{display:flex;justify-content:space-between;align-items:center;margin-top:24px;padding-top:18px;border-top:1px solid var(--bl)}
.wiz-expert{margin:14px 0;border:1px solid var(--bl);border-radius:5px;background:var(--ib,#fafbfd)}
.wiz-expert summary{padding:8px 12px;cursor:pointer;font-size:12px;font-weight:600;color:var(--blue);user-select:none}
.wiz-expert summary:hover{background:#eef4fb}
.wiz-expert[open] summary{border-bottom:1px solid var(--bl)}
.wiz-expert .body{padding:12px 14px;font-size:12px;color:var(--ts);line-height:1.55}
.wiz-warn{background:#fff8e1;border:1px solid #ffd54f;border-radius:5px;padding:10px 13px;margin:10px 0;font-size:12.5px;color:#5d4500}
.wiz-warn b{color:#7e5700}
.wiz-success{background:#e8f5e9;border:1px solid #81c784;border-radius:5px;padding:10px 13px;margin:10px 0;font-size:12.5px;color:#1b5e20}
.wiz-example-card{padding:8px 12px;background:var(--ib,#fafbfd);border-left:3px solid var(--bl);border-radius:0 4px 4px 0;font-size:12px;color:var(--ts);line-height:1.5;margin:8px 0}
.wiz-divergence-table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}
.wiz-divergence-table th,.wiz-divergence-table td{padding:8px 10px;border:1px solid var(--bl);text-align:left;vertical-align:top}
.wiz-divergence-table th{background:var(--ib,#fafbfd);font-weight:600;font-size:12px}
.wiz-divergence-table input[type=number],.wiz-divergence-table input[type=text],.wiz-divergence-table select{width:100%;padding:5px 7px;font-size:12px;border:1px solid var(--border,#cdd5e0);border-radius:3px}
.wiz-result-headline{padding:18px 22px;border-radius:8px;margin:14px 0;text-align:center}
.wiz-result-headline.low{background:#e8f5e9;border:2px solid #81c784}
.wiz-result-headline.risk{background:#fff8e1;border:2px solid #ffb74d}
.wiz-result-headline.high{background:#ffebee;border:2px solid #ef5350}
.wiz-result-headline .level{font-size:24px;font-weight:700;font-family:Georgia,serif;margin-bottom:6px}
.wiz-result-headline.low .level{color:#1b5e20}
.wiz-result-headline.risk .level{color:#856404}
.wiz-result-headline.high .level{color:#b71c1c}
.wiz-result-headline .obligations{font-size:13px;color:var(--navy);margin-top:8px;line-height:1.55}
.wiz-summary-table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}
.wiz-summary-table th,.wiz-summary-table td{padding:9px 12px;border-bottom:1px solid var(--bl);text-align:left}
.wiz-summary-table th{background:var(--ib,#fafbfd);font-weight:600;font-size:12px;color:var(--ts);text-transform:uppercase;letter-spacing:0.4px}
.wiz-tag{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:3px;letter-spacing:0.3px;text-transform:uppercase}
.wiz-tag-low{background:#c8e6c9;color:#1b5e20}
.wiz-tag-risk{background:#fff3cd;color:#856404}
.wiz-tag-high{background:#ffcdd2;color:#b71c1c}
.mode-toggle{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--bl);border-radius:5px;padding:4px 8px;font-size:12px;margin-right:8px}
.mode-toggle label{font-weight:600;color:var(--ts);font-size:11px;text-transform:uppercase;letter-spacing:0.4px;margin:0}
.mode-toggle select{border:none;background:none;font-family:inherit;font-size:12px;font-weight:600;color:var(--navy);cursor:pointer;padding:2px 4px}
.mode-toggle select:focus{outline:none;background:#eef4fb;border-radius:3px}

/* === Training pedagogical debrief === */
.t-verdict{font-family:system-ui;font-size:11px;font-weight:600;padding:2px 8px;border-radius:3px;text-align:center;display:inline-block}
.t-verdict.t-ok{background:#c8e6c9;color:#1b5e20}
.t-verdict.t-warn{background:#fff3cd;color:#856404}
.t-verdict.t-pending{background:#eceff1;color:#546e7a;font-style:italic}
.t-prompt{background:linear-gradient(135deg,#fff8e1 0%,#fffde7 100%);border:1px solid #ffd54f;border-left:4px solid #b8860b;border-radius:8px;padding:18px 22px;margin:18px 0;font-family:Georgia,serif}
.t-prompt h3{margin:0 0 6px;color:#5d4037;font-size:16px}
.t-prompt p{margin:4px 0 12px;color:#3e2723;font-size:13px;line-height:1.55}
.t-prompt .actions{display:flex;gap:10px;flex-wrap:wrap}
.t-debrief{margin-top:20px;padding-top:20px;border-top:2px solid var(--bl)}
.t-debrief-summary{background:linear-gradient(135deg,#fff8e1 0%,#fffde7 100%);border:1px solid #ffd54f;border-radius:8px;padding:18px 22px;margin:14px 0}
.t-debrief-summary.match{background:linear-gradient(135deg,#e8f5e9 0%,#f1f8e9 100%);border-color:#a5d6a7}
.t-debrief-table{width:100%;border-collapse:collapse;font-family:system-ui;font-size:12px;margin:14px 0}
.t-debrief-table th,.t-debrief-table td{border:1px solid #ddd;padding:8px 10px;text-align:left;vertical-align:top}
.t-debrief-table th{background:var(--navy);color:#fff;font-weight:600;font-size:11px}
.t-debrief-table td.your{background:#fff8e1}
.t-debrief-table td.edpb{background:#e8f5e9;font-weight:600;color:#1b5e20}
.t-debrief-table.hidden-edpb td.edpb{filter:blur(5px);user-select:none}
.t-lessons{background:#e3f2fd;border-left:4px solid #282875;padding:14px 18px;margin:14px 0;border-radius:6px}
.t-lessons h4{margin:0 0 8px;color:#282875;font-size:14px}
.t-lessons ul{margin:6px 0;padding-left:22px}
.t-lessons li{margin:4px 0;font-size:13px;line-height:1.5}
/* Scenario card states on the welcome screen */
.t-scenario-card{border:1px solid var(--bl);border-radius:6px;padding:10px 12px;background:#fafafa;margin:6px 0;display:flex;justify-content:space-between;align-items:center;gap:10px}
.t-scenario-card.locked{opacity:.55;background:#f4f3f0;border-style:dashed}
.t-scenario-card .lock-pill{font-family:system-ui;font-size:10px;font-weight:600;background:#e0e0e0;color:#666;padding:2px 8px;border-radius:10px;letter-spacing:.5px}
.t-scenario-card.unlocked .lock-pill{background:#c8e6c9;color:#1b5e20}
/* Welcome-screen section header */
.t-section-title{font-family:system-ui;font-size:13px;font-weight:700;color:var(--navy);margin:18px 0 6px;padding-bottom:4px;border-bottom:2px solid var(--accent);text-transform:uppercase;letter-spacing:.5px}
/* ARETE top bar (discussion guide + inject button) */
.t-topbar{max-width:1060px;margin:14px auto 0;display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;font-family:system-ui;font-size:11px}
.t-topbar button{background:#fff;color:var(--navy);border:1px solid var(--navy);padding:5px 12px;border-radius:3px;font-weight:600;cursor:pointer}
.t-topbar button.back-to-hub{margin-right:auto;background:#fafaf8;border-color:#9e9e9e;color:#424242}
.t-topbar button.back-to-hub:hover{background:#fff;border-color:var(--navy);color:var(--navy)}
.t-topbar button.inject{background:#fff3cd;border-color:#b8860b;color:#5d4037}
.t-topbar button.inject.opened{background:#c8e6c9;border-color:var(--green);color:#1b5e20}
/* Discussion guide panel (ARETE, collapsible) */
.t-discussion{max-width:1060px;margin:8px auto;background:#e3f2fd;border:1px solid #90caf9;border-radius:6px;padding:14px 18px;font-family:Georgia,serif;color:#0d47a1}
.t-discussion h4{margin:0 0 8px;font-size:14px;color:var(--navy)}
.t-discussion h5{margin:10px 0 4px;font-size:13px;color:#0d47a1}
.t-discussion ol{margin:4px 0 8px;padding-left:22px}
.t-discussion li{margin:4px 0;font-size:13px;line-height:1.5}
/* Inject modal */
.t-inject-modal{position:fixed;inset:0;background:rgba(0,0,0,0.5);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}
.t-inject-modal .panel{background:#fff;border-radius:8px;max-width:640px;width:100%;padding:24px 28px;border-top:6px solid #b8860b;max-height:90vh;overflow-y:auto}
.t-inject-modal h3{margin:0 0 4px;color:#5d4037;font-family:Georgia,serif;font-size:18px}
.t-inject-modal .label{font-family:system-ui;font-size:10px;text-transform:uppercase;letter-spacing:1px;color:#b8860b;font-weight:700;margin-bottom:6px}
.t-inject-modal .body{font-size:14px;line-height:1.6;color:#3e2723;margin:10px 0}
.t-inject-modal .body p{margin:8px 0}
.t-inject-modal .revised{background:#fff8e1;border-left:3px solid #b8860b;padding:10px 14px;border-radius:3px;margin-top:14px;font-size:13px;color:#3e2723}
.t-inject-modal .actions{display:flex;justify-content:flex-end;margin-top:14px}
.t-inject-modal button{background:var(--navy);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-family:system-ui;font-size:12px;font-weight:600}
/* ==========================================================================
   ARETE pre-work hub — full-page responsive layout (replaces overlay panel)
   ========================================================================== */
/* ==========================================================================
   ARETE Training Platform (.t-pf-*)
   Single-page programme platform with sticky sidebar TOC, persistent header
   banner (the one-message), and 9 anchored sections following the
   Blueprint v0.3 "before/during/after" cadence.
   ========================================================================== */
.t-pf{min-height:100vh;background:var(--bg);color:var(--text);font-family:Georgia,'Times New Roman',serif}
.t-pf-header{background:#fff;border-bottom:3px solid var(--accent);position:sticky;top:0;z-index:60;box-shadow:0 1px 2px rgba(0,0,0,0.04)}
.t-pf-header-row{max-width:1280px;margin:0 auto;padding:14px 28px;display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center}
.t-pf-brand h1{margin:0;font-size:26px;color:var(--navy);font-family:Georgia,serif;letter-spacing:-0.5px;line-height:1}
.t-pf-brand p{margin:3px 0 0;font-size:11px;color:var(--ts);font-family:system-ui;letter-spacing:.2px}
/* Banner masthead — seated as a hero "card" aligned to the content frame
   (same max-width + gutters as .t-pf-body) on the warm page background, with
   an indigo-tinted shadow sampled from the artwork so it shares the page's
   card language instead of reading as a pasted strip. */
/* Native masthead — a live, full-bleed indigo brand band that replaces the
   thin Header_ARETE strip. Deep-indigo gradient matched to the ARETE wordmark
   artwork; the EDPS logo + ARETE wordmark are extracted to transparent PNGs
   (arete-edps-logo.png / arete-wordmark.png) and sit on the left, with the
   course context bound to COURSE_META (date/venue stay editable) on the right.
   Responsive: the meta block drops below the brand lock-up on narrow screens. */
.t-pf-masthead{display:block;margin:0 0 32px;padding:0;border:0;border-radius:0;background:linear-gradient(100deg,#13133b 0%,#1d1d57 38%,#282875 64%,#3a3ba2 100%);box-shadow:0 8px 26px rgba(16,16,52,.28);position:relative;overflow:hidden}
.t-pf-masthead::after{content:'';position:absolute;inset:0;background:radial-gradient(130% 150% at 85% 12%,rgba(108,110,224,.32),transparent 58%);pointer-events:none}
.t-pf-mast-inner{position:relative;max-width:1280px;margin:0 auto;padding:24px 28px;display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap}
.t-pf-mast-brand{display:flex;align-items:center;gap:18px;min-width:0}
.t-pf-mast-logo{height:58px;width:auto;flex:0 0 auto;display:block}
.t-pf-mast-divider{flex:0 0 auto;width:1px;align-self:stretch;min-height:56px;background:linear-gradient(180deg,transparent,rgba(255,255,255,.42),transparent)}
.t-pf-mast-id{margin:0;display:flex;flex-direction:column;gap:8px;min-width:0}
.t-pf-mast-wordmark{height:37px;width:auto;display:block}
.t-pf-mast-tagline{font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:600;letter-spacing:.7px;text-transform:uppercase;color:#cbcdf4}
.t-pf-mast-meta{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:4px;padding-left:22px;border-left:1px solid rgba(255,255,255,.16)}
.t-pf-mast-meta-kicker{font-family:system-ui,-apple-system,sans-serif;font-size:10.5px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:#9ea0ea}
.t-pf-mast-meta-venue{font-family:system-ui,-apple-system,sans-serif;font-size:13px;font-weight:600;color:#f3f3fb;line-height:1.3}
.t-pf-mast-meta-date{font-family:system-ui,-apple-system,sans-serif;font-size:14px;font-weight:700;letter-spacing:.3px;color:#fff}
@media(max-width:760px){
  .t-pf-mast-inner{padding:18px;gap:14px}
  .t-pf-mast-brand{gap:12px}
  .t-pf-mast-logo{height:44px}
  .t-pf-mast-divider{min-height:42px}
  .t-pf-mast-wordmark{height:28px}
  .t-pf-mast-tagline{font-size:10.5px;letter-spacing:.4px}
  .t-pf-mast-meta{align-items:flex-start;text-align:left;padding-left:0;border-left:none;border-top:1px solid rgba(255,255,255,.16);padding-top:12px;width:100%}
}
.t-pf-banner{background:#eef1fc;border:1px solid #cdd0ee;border-left:4px solid var(--accent);border-radius:6px;padding:8px 16px;font-family:Georgia,serif;display:flex;flex-direction:column;justify-content:center}
.t-pf-banner-label{font-family:system-ui;font-size:10px;color:#4a4b86;text-transform:uppercase;letter-spacing:.8px;font-weight:700}
.t-pf-banner-text{font-size:14px;color:#312f4f;font-style:italic;line-height:1.35;margin-top:2px}
.t-pf-user{font-family:system-ui;text-align:right;display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-end;min-width:160px}
.t-pf-user label{display:block;font-size:10px;color:var(--ts);margin-bottom:3px;font-weight:600;letter-spacing:.3px;text-transform:uppercase}
.t-pf-user input{padding:7px 11px;border:1px solid var(--border);border-radius:4px;font-size:13px;min-width:200px;background:#fff;font-family:Georgia,serif}
.t-pf-user input:focus{border-color:var(--navy);outline:none}
.t-pf-user-handle{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--ts);font-weight:600;letter-spacing:.2px;max-width:280px}
.t-pf-user-icon{flex:0 0 14px;font-size:13px;line-height:1}
.t-pf-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Georgia,serif;font-weight:400;color:var(--navy)}

/* Header buttons (admin panel for facilitators, sign-out for everyone). */
.t-pf-header-code-btn{display:block;width:100%;font-family:system-ui;font-size:11px;font-weight:600;color:var(--navy);background:#eef1fc;border:1px solid var(--accent);padding:5px 10px;border-radius:4px;cursor:pointer;text-align:center;transition:background .15s}
.t-pf-header-code-btn:hover{background:#e3e7fb}
.t-pf-header-signout{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;font-size:15px;line-height:1;color:#4a4b86;background:#fff;border:1px solid var(--border);border-radius:50%;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.t-pf-header-signout:hover{background:#fdecea;border-color:#d9534f;color:#b71c1c}
.t-pf-header-code{background:#eef1fc;border-top:1px solid var(--accent);padding:14px 28px;font-family:system-ui;animation:t-pf-slide-down .18s ease-out}
.t-pf-header-code-row{max-width:1180px;margin:0 auto}
.t-pf-header-code label{display:block;font-size:12px;font-weight:600;color:#312f4f;margin-bottom:6px}
.t-pf-header-code .t-pf-code-row{display:flex;gap:10px;align-items:center}
.t-pf-header-code .t-pf-code-row input{flex:1;padding:9px 12px;border:1px solid var(--accent);border-radius:4px;font-size:14px;font-family:monospace;background:#fff;text-transform:uppercase;letter-spacing:1px;color:var(--navy)}
.t-pf-header-code .t-pf-code-row input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(40,40,117,0.15)}
.t-pf-header-code .t-pf-code-row button{background:var(--navy);color:#fff;border:none;padding:9px 18px;border-radius:4px;font-family:system-ui;font-weight:600;cursor:pointer}
.t-pf-header-code .t-pf-code-row button:hover{background:#003875}
.t-pf-header-code-hint{font-size:11px;color:var(--ts);margin:6px 0 0;font-style:italic}
@keyframes t-pf-slide-down{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@media (max-width:980px){
  .t-pf-header-code{padding:14px 18px}
}

.t-pf-body{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:260px minmax(0,1fr);gap:36px;padding:0 28px}

/* ---- Sidebar ----
   The production HTML has a global "nav { background: var(--edps-blue-l) }"
   that bleeds into every <nav> element. We explicitly override it for the
   two navs we control: the sidebar and the section prev/next bar.
   Visual identity: paper-warm palette, gold accent on active. Icons next
   to labels give scannability. */
.t-pf-side{position:sticky;top:20px;align-self:start;padding:14px 0 20px;font-family:system-ui;font-size:13.5px;max-height:calc(100vh - 40px);overflow-y:auto;scrollbar-width:none}
.t-pf-side::-webkit-scrollbar{display:none}
/* Short viewports: a sticky sidebar taller than the screen clips its bottom
   entries (once stuck it stops moving with the page). Fall back to normal
   flow there so the single page scrollbar reaches everything. */
@media (max-height:860px){
  .t-pf-side{position:static;max-height:none;overflow:visible}
}
.t-pf-side nav{background:transparent;display:flex;flex-direction:column;gap:1px;overflow:visible}
.t-pf-side a{position:relative;color:#312f4f;padding:8px 14px 8px 18px;text-decoration:none;cursor:pointer;border-radius:6px;display:flex;align-items:center;gap:10px;transition:background .15s,color .15s,padding .15s}
.t-pf-side a::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;background:transparent;border-radius:0 3px 3px 0;transition:background .15s}
.t-pf-side a:hover{background:#edeefb;color:#312f4f}
.t-pf-side a:hover::before{background:#c4c6ef}
.t-pf-side a.active{background:#eef1fc;color:var(--navy);font-weight:600}
.t-pf-side a.active::before{background:var(--accent)}
/* Mobile nav drawer affordances — hidden on desktop (the sidebar is docked). */
.t-pf-nav-toggle{display:none}
.t-pf-nav-backdrop{display:none}
.t-pf-side a.active:hover{background:#e3e7fb}
/* Locked sections: greyed out, lock icon, not clickable. Hover does
   nothing (pointer-events still allowed so screen readers can announce
   the disabled state). */
.t-pf-side a.locked{color:#9a9cb5;cursor:not-allowed;opacity:0.65}
.t-pf-side a.locked .t-pf-side-icon{color:#9a9cb5}
.t-pf-side a.locked:hover{background:transparent}
.t-pf-side a.locked:hover::before{background:transparent}
.t-pf-side-icon{flex:0 0 18px;text-align:center;font-size:14px;line-height:1;color:#7c7e9e;transition:color .15s}
.t-pf-side a.active .t-pf-side-icon{color:var(--accent)}
.t-pf-side-label{flex:1;line-height:1.3}
/* WCAG AA: #6b5320 on var(--bg) was ~4.3:1 (marginal fail for normal text).
   #6b5320 lifts contrast to ~5.5:1 while keeping the warm gold-brown look. */
.t-pf-side-group{font-size:11px;color:#4a4b86;text-transform:uppercase;letter-spacing:1px;font-weight:800;padding:6px 14px;margin-top:10px;display:block;background:#eef1fc;border:1px solid #cdd0ee;border-radius:6px}
.t-pf-side-prog{font-size:10.5px;color:#4a4b86;background:#e6e8fb;padding:2px 9px;border-radius:10px;font-weight:600;font-family:system-ui;border:1px solid #cdd0ee;line-height:1.3}
.t-pf-side a.active .t-pf-side-prog{background:#c4c6ef;color:#3a3a5c;border-color:var(--accent)}
/* Sub-items of a parent sidebar entry (e.g. Pre-work's 4 sub-anchors,
   Scenario 2's 3 Parts). Indented and lighter than the parent label.
   Visible only when the parent section is active to keep the sidebar
   compact when navigating elsewhere. */
.t-pf-side-children{display:flex;flex-direction:column;gap:1px;padding:2px 0 4px 6px;border-left:2px solid #cdd0ee;margin:3px 0 4px 14px}
.t-pf-side a.t-pf-side-child{padding:5px 10px 5px 12px;font-size:12.5px;gap:8px;border-radius:5px}
.t-pf-side a.t-pf-side-child .t-pf-side-icon{flex:0 0 16px;font-size:12.5px}
.t-pf-side-child-tick{margin-left:auto;color:#1b5e20;font-weight:700;font-size:12px}
.t-pf-side-child-lock{margin-left:auto;color:#9a9cb5;font-size:11px}
/* Facilitator inline section toggles (role-gated; mirror /admin Live control).
   🔓 = open for students, 🔒 = locked. Click flips it live (SSE) for the cohort. */
.t-pf-fac-toggle{margin-left:auto;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:27px;height:20px;padding:0;font-size:11px;line-height:1;border:1px solid #b7e2c6;background:#e7f5ec;border-radius:5px;cursor:pointer;transition:background .12s,border-color .12s}
.t-pf-fac-toggle:hover{background:#d3edda;border-color:#86cfa0}
.t-pf-fac-toggle.locked{background:#f1f3f7;border-color:#d6dbe4}
.t-pf-fac-toggle.locked:hover{background:#e7ebf2}
.t-pf-side a.t-pf-side-faclocked{opacity:.72}
.t-pf-side a.t-pf-side-faclocked .t-pf-side-label{font-style:italic}
.t-pf-fac-row{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 12px;font-size:12.5px;color:#312f4f}
.t-pf-fac-hint{font-size:10.5px;line-height:1.45;color:#4a4b86;background:#eef1fc;border:1px solid #cdd0ee;border-radius:5px;padding:6px 8px;margin:2px 4px 5px}
.t-pf-fac-bulk{display:flex;gap:6px;margin:3px 4px 4px;padding:0}
.t-pf-fac-bulk-btn{flex:1;font-family:system-ui;font-size:11px;font-weight:600;color:#1d7a3f;background:#e7f5ec;border:1px solid #b7e2c6;border-radius:5px;padding:5px 6px;cursor:pointer}
.t-pf-fac-bulk-btn:hover{background:#d3edda}
.t-pf-fac-bulk-btn.lock{color:#4a4b86;background:#e6e8fb;border-color:#cdd0ee}
.t-pf-fac-bulk-btn.lock:hover{background:#e3e7fb}
.t-pf-fac-bulk-btn:disabled{opacity:.5;cursor:default}
/* Facilitator inline SCENARIO controls — the S2 stepcard control row + the
   EDPB "open practice cases" panel. Cream/gold facilitator palette; green =
   open. The default .t-pf-fac-toggle has margin-left:auto (it sits last in a
   section row) so it is reset to 0 where it is not the trailing element. */
.t-pf-fac-ctrls{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:10px;padding:7px 10px;background:#eef1fc;border:1px solid #cdd0ee;border-radius:6px;font-size:12px;color:#4a4b86;cursor:default}
.t-pf-fac-ctrls-lbl{font-weight:600}
.t-pf-fac-ctrls-item{display:inline-flex;align-items:center;gap:5px}
.t-pf-fac-ctrls .t-pf-fac-toggle{margin-left:0}
.t-pf-fac-hiddentag{margin-left:6px;font-size:9.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#4a4b86;background:#eef1fc;border:1px solid #cdd0ee;border-radius:4px;padding:1px 5px;vertical-align:middle}
.t-pf-fac-panel{margin:0 0 16px;border:1px solid #cdd0ee;border-radius:8px;background:#f7f8fd;overflow:hidden}
.t-pf-fac-panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;background:#eef1fc;border-bottom:1px solid #cdd0ee}
.t-pf-fac-panel-title{font-size:12.5px;font-weight:700;color:#4a4b86}
.t-pf-fac-panel-rows{padding:4px 6px}
.t-pf-fac-panel-row{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:5px}
.t-pf-fac-panel-row + .t-pf-fac-panel-row{border-top:1px solid #e7e8f5}
.t-pf-fac-panel-label{flex:1 1 auto;font-size:12.5px;color:#312f4f}
.t-pf-fac-state{flex:0 0 auto;font-size:9.5px;font-weight:700;letter-spacing:.04em;color:#5c5e82;background:#f1f3f7;border:1px solid #d6dbe4;border-radius:4px;padding:2px 6px;min-width:54px;text-align:center}
.t-pf-fac-state.open{color:#1d7a3f;background:#e7f5ec;border-color:#b7e2c6}
.t-pf-fac-panel-row .t-pf-fac-toggle{margin-left:0}
/* Part A/B/C anchored sub-articles inside the Workshop section.
   Lightweight version of the task card — visually subordinate to the
   main S2 article above. */
.t-pf-part{background:#f7f8fd;border:1px solid var(--border);border-left:4px solid var(--navy);border-radius:5px;padding:14px 18px;margin:14px 0;scroll-margin-top:24px}
.t-pf-part-header{display:flex;align-items:baseline;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.t-pf-part-tag{font-family:system-ui;font-size:11px;font-weight:700;color:#fff;background:var(--navy);padding:2px 9px;border-radius:10px;letter-spacing:.3px;text-transform:uppercase}
.t-pf-part-header h3{font-family:Georgia,serif;color:var(--navy);font-size:18px;margin:0;font-weight:600}
.t-pf-part-time{font-family:system-ui;font-size:11px;font-weight:400;color:var(--ts);background:#eceef7;padding:2px 8px;border-radius:8px;margin-left:6px}
.t-pf-part p{font-family:Georgia,serif;font-size:14px;line-height:1.55;color:#312f4f;margin:6px 0 0}

.t-pf-main{padding:32px 0 64px;min-width:0}
.t-pf-section{margin:0 0 56px;scroll-margin-top:24px}
.t-pf-section h2{font-family:Georgia,serif;color:var(--navy);font-size:28px;letter-spacing:-0.4px;margin:0 0 12px;font-weight:700;padding-bottom:8px;border-bottom:2px solid var(--accent)}
.t-pf-section h2 .t-pf-section-sub{font-size:13px;color:var(--ts);font-weight:400;font-style:italic;margin-left:10px;letter-spacing:0;font-family:system-ui}
.t-pf-section h3.t-pf-h3{font-family:Georgia,serif;color:var(--navy);font-size:18px;margin:24px 0 10px;font-weight:600}
.t-pf-lead{margin:8px 0 18px;font-size:15px;line-height:1.65;max-width:780px;color:#312f4f;text-align:justify}
.t-pf-aside{font-size:12px;color:var(--ts);font-style:italic;margin:16px 0 0;padding:8px 12px;background:#f7f8fd;border-left:3px solid var(--bl);border-radius:3px}
.t-pf-section-bracket{position:relative;padding-top:8px}
.t-pf-section-bracket-label{font-family:system-ui;font-size:11px;color:var(--ts);text-transform:uppercase;letter-spacing:.8px;font-weight:600;margin-bottom:4px}

/* Phase tag — small caps label that sits above each section's H2.
   Tells the trainee where in the programme cadence the current pane
   belongs ("Before the workshop", "Workshop day", …). Three variants
   reuse the EDPS gold (before), navy (during), and green (after) so
   the trainee gets a visual rhythm across panes. */
/* WCAG AA: bumped color from #6b5320 to #6b5320 for 5.5:1 contrast on cream */
.t-pf-phase{display:inline-block;font-family:system-ui;font-size:10.5px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:#4a4b86;background:#eef1fc;padding:4px 12px;border-radius:10px;margin:0 0 10px;border:1px solid #cdd0ee}
.t-pf-phase-before{color:#4a4b86;background:#eef1fc;border-color:#cdd0ee}
.t-pf-phase-during{color:var(--navy);background:#e3eaf6;border-color:#b9c8e0}
.t-pf-phase-after{color:#1b5e20;background:#e8f5e9;border-color:#a5d6a7}

/* Hero (§0) */
.t-pf-hero{padding:24px 0 12px}
.t-pf-hero h2{font-size:38px;border-bottom:none;padding-bottom:0;margin:0 0 14px;letter-spacing:-0.7px;line-height:1.1}
.t-pf-hero-lead{font-size:16px;line-height:1.65;margin:0 0 24px;max-width:780px;color:#312f4f;text-align:justify}
.t-pf-meta-pills{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0 0 28px}
.t-pf-meta-pills span{display:flex;flex-direction:column;background:#fff;border:1px solid var(--border);border-radius:6px;padding:11px 14px;font-family:system-ui;line-height:1.3}
.t-pf-meta-pills span b{font-size:10px;color:var(--ts);text-transform:uppercase;letter-spacing:.5px;font-weight:700;margin-bottom:3px}
.t-pf-meta-pills span > span{font-size:13.5px;color:#312f4f;font-weight:500;font-family:Georgia,serif}
.t-pf-cta-block{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px 24px;max-width:780px;box-shadow:0 1px 3px rgba(26,35,126,0.05);position:relative;overflow:hidden}
.t-pf-cta-block::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent)}
.t-pf-cta-tag{font-family:system-ui;font-size:10.5px;font-weight:700;color:#4a4b86;text-transform:uppercase;letter-spacing:.9px;margin-bottom:6px}
.t-pf-cta-row{display:flex;align-items:center;gap:18px}
.t-pf-cta-text{flex:1;min-width:0}
.t-pf-cta-title{font-family:Georgia,serif;font-size:20px;color:var(--navy);font-weight:700;line-height:1.25;margin:0 0 4px}
.t-pf-cta-sub{font-size:13px;color:var(--ts);font-style:italic;line-height:1.45;margin:0}
.t-pf-cta-btn{flex:0 0 auto;width:48px;height:48px;border-radius:50%;background:var(--navy);color:#fff;border:none;cursor:pointer;font-size:22px;font-weight:400;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s;line-height:1}
.t-pf-cta-btn:hover{background:#003875;transform:translateX(2px)}
/* Legacy alias (kept so old call sites that hit .t-pf-cta still work) */
.t-pf-cta{font-size:15px;padding:11px 22px;background:var(--navy);color:#fff;border:none;border-radius:5px;cursor:pointer;font-family:system-ui;font-weight:600}
.t-pf-cta:hover{background:#003875}

/* Findings (§1) */
.t-pf-findings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:18px 0 0}
.t-pf-finding{background:#fff;border:1px solid var(--border);border-radius:6px;padding:18px 20px;position:relative}
.t-pf-finding-n{position:absolute;top:14px;right:18px;font-family:Georgia,serif;font-size:42px;color:#eceef7;font-weight:700;line-height:1}
.t-pf-finding h3{margin:0 0 8px;font-family:Georgia,serif;font-size:15px;color:var(--navy);padding-right:32px;line-height:1.3}
.t-pf-finding p{margin:0;font-size:13px;line-height:1.6;color:#312f4f}
.t-pf-callout{background:#eef1fc;border:1px solid #cdd0ee;border-left:4px solid var(--accent);border-radius:6px;padding:14px 18px;margin:20px 0 0;font-family:Georgia,serif;display:flex;flex-direction:column;gap:4px}
.t-pf-callout-label{font-family:system-ui;font-size:11px;color:#4a4b86;text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.t-pf-callout-text{font-size:15px;color:#312f4f;font-style:italic;line-height:1.45}
.t-pf-callout-chatham{background:#e8f5e9;border-left-color:var(--green);border-color:#a5d6a7}
.t-pf-callout-chatham .t-pf-callout-label{color:#1b5e20}

/* Learning outcomes (§2) */
.t-pf-lo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin:14px 0 0}
.t-pf-lo{background:#fff;border:1px solid var(--border);border-radius:6px;padding:18px 20px}
.t-pf-lo-tag{display:inline-block;background:var(--navy);color:#fff;font-family:system-ui;font-size:11px;font-weight:700;letter-spacing:.5px;padding:3px 9px;border-radius:3px}
.t-pf-lo h3{margin:10px 0 8px;font-family:Georgia,serif;font-size:15px;color:var(--navy);line-height:1.35}
.t-pf-lo p{margin:0 0 8px;font-size:13px;line-height:1.6;color:#312f4f}
.t-pf-lo-finding{font-size:11px;color:var(--ts);font-style:italic;margin-top:8px}

/* Logistics (§3) */
.t-pf-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:14px 0 0;border:1px solid var(--border);border-radius:6px;background:#fff;overflow:hidden}
.t-pf-meta>div{padding:12px 16px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}
.t-pf-meta dt{font-family:system-ui;font-size:11px;color:var(--ts);text-transform:uppercase;letter-spacing:.4px;font-weight:600;margin:0 0 4px}
.t-pf-meta dd{margin:0;font-size:14px;color:#312f4f;line-height:1.4}
.t-pf-agenda{width:100%;border-collapse:collapse;margin:8px 0 0;background:#fff;border:1px solid var(--border);border-radius:6px;overflow:hidden;font-size:13px}
.t-pf-agenda th{background:var(--navy);color:#fff;text-align:left;padding:9px 14px;font-family:system-ui;font-size:11px;letter-spacing:.4px;text-transform:uppercase;font-weight:600}
.t-pf-agenda td{padding:9px 14px;border-bottom:1px solid #eceef7;vertical-align:top;line-height:1.45;color:#312f4f}
.t-pf-agenda tr:last-child td{border-bottom:none}
.t-pf-agenda td:first-child{white-space:nowrap;font-family:system-ui;font-size:12px;color:var(--navy)}
.t-pf-agenda-mode{font-size:11px;color:var(--ts);font-style:italic;font-family:system-ui;white-space:nowrap}
.t-pf-facilitators{list-style:none;padding:0;margin:8px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.t-pf-facilitators li{background:#fff;border:1px solid var(--border);border-radius:6px;padding:12px 16px;display:flex;flex-direction:column}
.t-pf-facilitator-name{font-family:Georgia,serif;font-size:14px;color:var(--navy);font-weight:600}
.t-pf-facilitator-role{font-family:system-ui;font-size:11px;color:var(--ts);margin-top:2px;line-height:1.4}
.t-pf-facilitators-contact{font-family:system-ui;font-size:13px;color:var(--ts);margin:20px 0 0}

/* Pre-work tasks (§4, §5, §6) */
.t-pf-task{background:#fff;border:1px solid var(--border);border-radius:6px;padding:20px 24px;margin:12px 0 0}
.t-pf-task-header{display:flex;align-items:center;gap:14px;margin:0 0 10px;flex-wrap:wrap}
/* Collapsible variant: the header is clickable and shows a chevron that
   rotates 90° when the body is open. Keyboard-accessible via the implicit
   button semantics added by role="button" + tabindex on the header. */
.t-pf-task-header-toggle{cursor:pointer;margin-bottom:0;user-select:none}
.t-pf-task-header-toggle:hover h3{color:#003a73}
.t-pf-task-header-toggle:focus-visible{outline:2px solid var(--navy);outline-offset:3px;border-radius:4px}
.t-pf-task-chevron{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;color:var(--ts);font-size:13px;transition:transform .15s ease;flex:0 0 22px;margin-left:auto}
.t-pf-task-header-toggle[aria-expanded="true"] .t-pf-task-chevron{transform:rotate(90deg);color:var(--navy)}
.t-pf-task-body{margin-top:10px}
.t-pf-task-n{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--navy);color:#fff;border-radius:50%;font-family:system-ui;font-size:13px;font-weight:700;flex:0 0 32px}
.t-pf-task-header h3{margin:0;font-family:Georgia,serif;font-size:17px;color:var(--navy);line-height:1.3;flex:1;min-width:0}
.t-pf-task-time{font-family:system-ui;font-size:11px;color:var(--ts);font-style:italic;flex:0 0 auto}
.t-pf-task p{margin:8px 0;font-size:13.5px;line-height:1.65;color:#312f4f}
.t-pf-task-actions{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0 4px}
.t-pf-task-note{font-size:12px;color:var(--ts);font-style:italic;margin:10px 0 0;padding:8px 12px;background:#f7f8fd;border-left:3px solid var(--accent);border-radius:3px;line-height:1.55}
.t-pf-task-locked{background:#f7f8fd}/* no opacity: dimming the whole card pushed text below WCAG-AA contrast. "Locked" is conveyed by the 🔒 icon, the grey task number and the locked-msg banner. */
.t-pf-task-locked .t-pf-task-n{background:#bdbdbd}
.t-pf-task-locked-msg{font-size:13px;color:#4a4b86;background:#eef1fc;border:1px solid #cdd0ee;border-left:4px solid var(--accent);border-radius:4px;padding:10px 14px;margin:10px 0 0;font-style:italic;line-height:1.5}
.t-pf-task-link{background:none;border:1px solid var(--navy);color:var(--navy);font-family:system-ui;font-size:11px;font-weight:600;padding:4px 10px;border-radius:3px;cursor:pointer;margin-left:8px}
.t-pf-task-link:hover{background:#f0f4fa}
.t-pf-soon{display:inline-block;background:#e3e7fb;color:#3a3a5c;font-family:system-ui;font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;letter-spacing:.4px;text-transform:uppercase;margin-left:6px;vertical-align:middle;border:1px solid #cdd0ee}

/* Checklist (§4.1) */
.t-pf-checklist{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:8px}
/* Grouped pre-work readings — same three subsections as the reference library */
.t-pf-checklist-group{margin:14px 0 0}
.t-pf-checklist-group:first-child{margin-top:8px}
.t-pf-checklist-group-label{font-family:system-ui;font-size:9.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--ts);margin:0 0 6px;padding-bottom:5px;border-bottom:1px solid var(--bl)}
.t-pf-checklist-group .t-pf-checklist{margin-top:0}
/* Inline drop-down reading list (Scientific papers / Practitioners' insights) */
.t-pf-inline-ref{flex-basis:100%;width:100%;margin-top:10px;padding:11px 15px;background:#fff;border:1px solid var(--border);border-left:3px solid var(--navy);border-radius:4px;font-size:12.5px;line-height:1.55;color:var(--text);animation:pf-ref-drop .14s ease-out}
.t-pf-inline-ref p{margin:0 0 9px;color:var(--ts);font-size:12px}
.t-pf-inline-ref ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:7px}
.t-pf-inline-ref li{font-size:12.5px;line-height:1.5}
.t-pf-inline-ref a{color:var(--navy);text-decoration:underline}
.t-pf-inline-ref a:hover{color:var(--edps-blue,#282875)}
@keyframes pf-ref-drop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.t-pf-checklist li{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:#f7f8fd;border:1px solid #eceef7;border-radius:4px;flex-wrap:wrap}
.t-pf-checklist li.done{background:#e8f5e9;border-color:#a5d6a7}
.t-pf-checklist label{display:flex;align-items:flex-start;gap:10px;flex:1;cursor:pointer;min-width:240px}
.t-pf-checklist input[type=checkbox]{margin-top:3px;cursor:pointer;width:16px;height:16px;flex:0 0 16px}
.t-pf-check-title{font-family:Georgia,serif;font-size:14px;color:var(--navy);font-weight:600;line-height:1.3;display:block}
.t-pf-check-sub{display:block;font-size:12px;color:var(--ts);margin-top:2px;line-height:1.4}
.t-pf-checklist li.done .t-pf-check-title{color:#1b5e20;text-decoration:line-through;text-decoration-color:rgba(27,94,32,0.4)}

/* Textarea (§4.3) */
.t-pf-textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:4px;font-family:Georgia,serif;font-size:13px;line-height:1.55;background:#fff;color:#312f4f;resize:vertical;min-height:100px}
.t-pf-textarea:focus{border-color:var(--navy);outline:none}

/* Action list (§6) */
.t-pf-action-list{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:8px}
.t-pf-action-list li{background:#f7f8fd;border-left:3px solid var(--accent);padding:10px 14px;border-radius:3px;font-family:Georgia,serif;font-size:14px;color:#312f4f;line-height:1.5}

/* EDPB practice grid (§6) */
.t-pf-edpb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px;margin:8px 0 0}
.t-pf-edpb-btn{font-size:12px;padding:8px 12px;text-align:left}

/* Quiz cards (diagnostic + closing knowledge check) */
.t-pf-task-tick{display:inline-block;background:#c8e6c9;color:#1b5e20;font-family:system-ui;font-size:11px;font-weight:700;padding:2px 9px;border-radius:10px;letter-spacing:.3px;margin-left:6px;vertical-align:middle;border:1px solid #81c784}
.t-pf-task-tick-locked{background:#eef1fc;color:#4a4b86;border-color:#cdd0ee}
.t-pf-task-done{border-left:3px solid var(--green)}
.t-pf-quiz{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:14px;counter-reset:none}
.t-pf-quiz-item{background:#f7f8fd;border:1px solid #eceef7;border-radius:6px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.t-pf-quiz-item.correct{background:#f1f8e9;border-color:#a5d6a7;border-left:3px solid var(--green)}
.t-pf-quiz-item.incorrect{background:#ffebee;border-color:#ef9a9a;border-left:3px solid var(--red)}
.t-pf-quiz-section{font-family:system-ui;font-size:15px;color:var(--navy);text-transform:uppercase;letter-spacing:.4px;font-weight:700}
.t-pf-quiz-stem{font-size:14px;line-height:1.55;color:#312f4f}
.t-pf-quiz-options{display:flex;flex-direction:column;gap:6px}
.t-pf-quiz-option{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;background:#fff;border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:13px;line-height:1.5;color:#312f4f;transition:background .12s,border-color .12s}
.t-pf-quiz-option:hover{background:#f0f4fa;border-color:var(--navy)}
.t-pf-quiz-option.selected{background:#e8eaf6;border-color:var(--navy);font-weight:600}
.t-pf-quiz-option.locked{cursor:default}
.t-pf-quiz-option.locked:hover{background:inherit;border-color:var(--border)}
.t-pf-quiz-option.locked.selected{background:#e8eaf6;border-color:var(--navy)}
.t-pf-quiz-option.is-correct{background:#e8f5e9;border-color:var(--green)}
.t-pf-quiz-option.is-correct::after{content:' ✓';color:var(--green);font-weight:700;margin-left:auto}
.t-pf-quiz-option.is-trainee-wrong{background:#ffebee;border-color:var(--red);text-decoration:line-through;text-decoration-color:rgba(198,40,40,0.5)}
.t-pf-quiz-option input[type=radio]{margin-top:3px;cursor:pointer;width:16px;height:16px;flex:0 0 16px}
.t-pf-quiz-explain{font-size:12px;color:#312f4f;line-height:1.55;padding:10px 12px;background:#fff;border-left:3px solid var(--bl);border-radius:3px;font-style:normal}
.t-pf-quiz-item.correct .t-pf-quiz-explain{border-left-color:var(--green)}
.t-pf-quiz-item.incorrect .t-pf-quiz-explain{border-left-color:var(--red)}
.t-pf-quiz-footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px;gap:14px;flex-wrap:wrap}
.t-pf-quiz-progress{font-family:system-ui;font-size:12px;color:var(--ts);font-style:italic}
.t-pf-quiz-locked-msg{font-family:system-ui;font-size:12px;color:#1b5e20;font-weight:600;background:#e8f5e9;padding:8px 12px;border-radius:3px;flex:1;line-height:1.45}

/* Form fields (action plan + reaction open questions) */
.t-pf-form-fld{margin:12px 0 0}
.t-pf-form-fld label{display:block;font-family:system-ui;font-size:12px;color:var(--ts);font-weight:600;letter-spacing:.2px;margin-bottom:5px;line-height:1.4}

/* Likert grid (reaction form) */
.t-pf-reaction-group{margin:18px 0 0}
.t-pf-reaction-group-title{font-family:Georgia,serif;font-size:14px;color:var(--navy);margin:0 0 6px;font-weight:600;border-bottom:1px solid #eceef7;padding-bottom:4px}
.t-pf-likert{width:100%;border-collapse:collapse;font-size:12.5px;background:#fff;border:1px solid var(--border);border-radius:6px;overflow:hidden;font-family:system-ui}
.t-pf-likert thead{background:#f7f8fd}
.t-pf-likert th{padding:8px 6px;font-weight:600;color:var(--navy);text-align:center;border-bottom:1px solid #eceef7;font-size:12px}
.t-pf-likert th:first-child{text-align:left;padding-left:12px;width:auto}
.t-pf-likert th span{display:block;font-weight:400;font-size:10px;color:var(--ts);margin-top:2px}
.t-pf-likert td{padding:8px 6px;border-bottom:1px solid #eceef7;text-align:center;vertical-align:middle}
.t-pf-likert tr:last-child td{border-bottom:none}
.t-pf-likert tr.unanswered td:first-child::before{content:'•';color:var(--coral);margin-right:6px;font-weight:700}
.t-pf-likert td.t-pf-likert-text{text-align:left;padding-left:12px;padding-right:8px;line-height:1.45;color:#312f4f;font-family:Georgia,serif;font-size:13px}
.t-pf-likert-cell label{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;cursor:pointer;border-radius:50%;transition:background .12s}
.t-pf-likert-cell label:hover{background:#f0f4fa}
.t-pf-likert-cell input[type=radio]{cursor:pointer;width:18px;height:18px;accent-color:var(--navy)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (max-width:680px){
  .t-pf-likert th,.t-pf-likert td{padding:6px 4px;font-size:11px}
  .t-pf-likert th span{display:none}
  .t-pf-likert td.t-pf-likert-text{font-size:12px}
  .t-pf-likert-cell label{width:24px;height:24px}
}

/* FAQ (§8) */
.t-pf-faq-list{display:flex;flex-direction:column;gap:6px;margin:8px 0 0}
.t-pf-faq{background:#fff;border:1px solid var(--border);border-radius:6px;padding:0;overflow:hidden}
.t-pf-faq summary{cursor:pointer;padding:12px 18px;font-family:Georgia,serif;font-size:14px;font-weight:600;color:var(--navy);list-style:none;position:relative;padding-right:36px}
.t-pf-faq summary::after{content:'+';position:absolute;right:18px;top:50%;transform:translateY(-50%);font-size:18px;color:var(--ts);font-weight:400}
.t-pf-faq[open] summary::after{content:'−'}
.t-pf-faq summary::-webkit-details-marker{display:none}
.t-pf-faq summary:hover{background:#f0f4fa}
.t-pf-faq-a{padding:0 18px 14px;font-size:13.5px;line-height:1.65;color:#312f4f}
.t-pf-faq-a p{margin:0 0 8px}
.t-pf-faq-a p:last-child{margin-bottom:0}

/* Contact + access code (§9) */
.t-pf-mail{color:var(--navy);font-weight:600}
.t-pf-code{margin:18px 0 0;background:var(--hl);border:1px solid var(--accent);border-radius:6px;padding:14px 20px;font-family:Georgia,serif}
.t-pf-code summary{cursor:pointer;font-weight:600;color:#3a3a5c;font-size:14px;font-family:system-ui}
.t-pf-code-body{margin-top:12px}
.t-pf-code-body p{margin:0 0 10px;font-size:13px;color:var(--text)}
.t-pf-code-row{display:flex;gap:10px;align-items:center}
.t-pf-code-row input{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:4px;font-size:14px;font-family:monospace;background:#fff;text-transform:uppercase;letter-spacing:1px}
.t-pf-code-help{font-size:11px;color:var(--ts);margin:10px 0 0;line-height:1.5}
.t-pf-footer{display:flex;justify-content:space-between;align-items:center;margin:32px 0 0;padding:18px 0;border-top:1px solid var(--bl);color:var(--ts);font-size:11px;font-family:system-ui;flex-wrap:wrap;gap:12px}
.t-pf-reset{background:none;border:1px solid var(--ts);color:var(--ts);font-family:system-ui;font-size:11px;padding:5px 12px;border-radius:3px;cursor:pointer}
.t-pf-reset:hover{border-color:var(--red);color:var(--red)}

/* Prev / Next nav at the bottom of each visible section pane.
   IMPORTANT: explicit "background:transparent" here is mandatory —
   the production HTML has a global "nav { background: ... }" rule
   (line 19 of the inherited CSS) that would otherwise paint a navy
   strip behind these cards. Same fix as .t-pf-side nav above. */
.t-pf-section-nav{background:transparent;display:flex;justify-content:space-between;align-items:stretch;gap:14px;margin:32px 0 48px;padding:18px 0 0;border-top:1px solid #e3e4f3;overflow:visible}
.t-pf-section-nav-btn{background:#fff;border:1px solid var(--border);border-radius:8px;padding:14px 20px;cursor:pointer;font-family:system-ui;display:flex;flex-direction:column;gap:3px;flex:0 1 44%;min-width:0;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s}
.t-pf-section-nav-btn:hover{background:#eef1fc;border-color:var(--accent);box-shadow:0 2px 6px rgba(63,64,168,0.12);transform:translateY(-1px)}
.t-pf-section-nav-prev{text-align:left}
.t-pf-section-nav-next{text-align:right;margin-left:auto}
.t-pf-section-nav-dir{font-size:10.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--ts);font-weight:700}
.t-pf-section-nav-label{font-family:Georgia,serif;font-size:15.5px;color:var(--navy);font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){
  .t-pf-section-nav{flex-direction:column}
  .t-pf-section-nav-btn{flex:1 1 100%;max-width:100%;text-align:left}
  .t-pf-section-nav-next{margin-left:0}
}

/* Responsive: collapse sidebar at narrower widths */
@media (max-width:980px){
  /* The stacked header is several rows tall — keeping it sticky would eat
     a third of a phone viewport. Let it scroll away. */
  .t-pf-header{position:static}
  .t-pf-main{scroll-margin-top:8px}
  .t-pf-body{grid-template-columns:1fr;gap:0;padding:0 18px}
  /* Sidebar becomes an off-canvas drawer (keeps the desktop vertical item
     styles); a fixed ☰ button slides it in, a backdrop dims the page. */
  .t-pf-side{position:fixed;top:0;left:0;height:100%;width:min(86vw,320px);max-height:none;z-index:120;
    margin:0;padding:62px 14px 28px;background:var(--card);border:none;border-radius:0;
    box-shadow:6px 0 30px rgba(19,19,58,.24);overflow-y:auto;
    transform:translateX(-100%);transition:transform .25s ease;visibility:hidden}
  .t-pf-side.open{transform:none;visibility:visible}
  .t-pf-nav-toggle{display:inline-flex;align-items:center;gap:8px;position:fixed;top:12px;left:12px;z-index:130;
    background:var(--navy);color:#fff;border:none;border-radius:8px;padding:9px 13px;cursor:pointer;
    font-family:system-ui;font-size:15px;font-weight:700;box-shadow:0 3px 12px rgba(0,0,0,.22)}
  .t-pf-nav-toggle-label{font-size:13px;letter-spacing:.3px}
  .t-pf-nav-backdrop{display:block;position:fixed;inset:0;z-index:110;background:rgba(20,10,40,.45)}
  .t-pf-header-row{grid-template-columns:1fr;gap:10px;padding:12px 18px}
  .t-pf-banner{order:3}
  .t-pf-user{text-align:left}
  .t-pf-user input{width:100%}
  .t-pf-findings{grid-template-columns:1fr}
  .t-pf-hero h2{font-size:28px}
  .t-pf-section h2{font-size:22px}
}
@media (max-width:680px){
  /* Agenda table at narrow widths: transform each row into a stacked
     card so the long "Block" cell can wrap naturally. The table-as-
     table at <680px was forcing horizontal scroll because of long
     block descriptions and the nowrap on mode + time columns. */
  .t-pf-agenda{border:none;background:transparent;display:block}
  .t-pf-agenda thead{display:none}
  .t-pf-agenda tbody,.t-pf-agenda tr{display:block;width:100%}
  .t-pf-agenda tr{background:#fff;border:1px solid var(--border);border-radius:6px;padding:10px 14px;margin:0 0 8px}
  .t-pf-agenda td{display:block;padding:2px 0;border:none;white-space:normal}
  .t-pf-agenda td:first-child{font-family:system-ui;font-size:11px;font-weight:700;color:var(--navy);text-transform:uppercase;letter-spacing:.4px;white-space:normal}
  .t-pf-agenda td:nth-child(2){font-size:13px;line-height:1.45;margin:3px 0}
  .t-pf-agenda-mode{font-size:11px;color:var(--ts);font-style:italic;white-space:normal;display:inline-block;background:#f7f8fd;padding:2px 8px;border-radius:10px;border:1px solid #eceef7;margin-top:2px}
  /* Logistics grid: 3 cols → 2 cols so 6 items stay even (no orphan cell). */
  .t-pf-meta{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .t-pf-section{margin-bottom:36px}
  .t-pf-task{padding:16px 18px}
  .t-pf-task-header{gap:10px}
  .t-pf-task-header h3{font-size:15px;flex-basis:100%;order:3}
  .t-pf-cta{width:100%;text-align:center}
  /* Hero CTA card: arrow button moves below the text instead of
     squeezing alongside */
  .t-pf-cta-row{flex-direction:column;align-items:flex-start;gap:12px}
  .t-pf-cta-btn{align-self:flex-end}
  /* Hero H1 trims down */
  .t-pf-hero h2{font-size:24px}
  /* Meta pills go single-column */
  .t-pf-meta-pills{grid-template-columns:1fr}
  /* Logistics grid goes single-column */
  .t-pf-meta{grid-template-columns:1fr}
}

/* ---- Accessibility: keyboard focus indicators ----
   The production CSS removes the default focus outline on several inputs.
   We re-add an explicit, high-contrast focus ring on every interactive
   element in the platform so keyboard users can always tell where they
   are. Uses :focus-visible (modern browsers) so mouse clicks do not
   trigger the ring. */
.t-pf-side a:focus-visible,
.t-pf-section-nav-btn:focus-visible,
.t-pf-cta-btn:focus-visible,
.t-pf-cta:focus-visible,
.t-pf-task-link:focus-visible,
.t-pf-reset:focus-visible,
.t-pf-faq summary:focus-visible,
.t-pf-quiz-option:focus-visible,
.t-pf-user input:focus-visible,
.t-pf-code-row input:focus-visible,
.t-pf-textarea:focus-visible,
.t-pf-checklist input[type=checkbox]:focus-visible,
.t-pf-quiz-option input[type=radio]:focus-visible,
.t-pf-likert-cell input[type=radio]:focus-visible{outline:2px solid var(--navy);outline-offset:2px;box-shadow:0 0 0 4px rgba(40,40,117,0.18);border-radius:4px}
/* When the focus target sits on a cream background, switch to gold so
   the ring contrasts against the warm bg too. */
.t-pf-side a.active:focus-visible{outline-color:var(--accent);box-shadow:0 0 0 4px rgba(63,64,168,0.25)}

/* ---- Login overlay (server mode) ----
   Full-screen modal that appears when the platform is served by the
   Node backend but no valid token has resolved yet. Visual style
   matches the rest of the platform (warm paper + gold accent). */
.arete-login{position:fixed;inset:0;background:rgba(244,243,240,0.96);display:flex;align-items:center;justify-content:center;z-index:1000;font-family:system-ui;padding:24px;backdrop-filter:blur(2px)}
.arete-login-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:32px 36px;max-width:480px;width:100%;box-shadow:0 6px 28px rgba(26,35,126,0.12);border-left:4px solid var(--accent)}
.arete-login-brand{font-family:Georgia,serif;font-size:14px;color:var(--navy);font-weight:700;letter-spacing:.6px;margin-bottom:6px}
.arete-login-card h2{font-family:Georgia,serif;font-size:24px;color:var(--navy);margin:0 0 8px;letter-spacing:-0.3px;line-height:1.2}
.arete-login-lead{font-size:14px;color:#312f4f;margin:0 0 18px;line-height:1.5}
.arete-login-form{display:flex;flex-direction:column;gap:12px;margin:0 0 4px}
.arete-login-fld{display:flex;flex-direction:column;gap:4px}
.arete-login-fld span{font-family:system-ui;font-size:12px;font-weight:600;color:var(--navy);letter-spacing:.2px}
.arete-login-fld input{padding:11px 14px;border:1px solid var(--border);border-radius:5px;font-family:system-ui;font-size:14px;background:#f7f8fd;color:var(--navy)}
.arete-login-fld input[type=password]{font-family:monospace;letter-spacing:2px}
.arete-login-fld input:focus{outline:none;border-color:var(--navy);background:#fff;box-shadow:0 0 0 3px rgba(40,40,117,0.15)}
.arete-login-opt{font-weight:400;color:var(--ts);font-size:11px;font-style:italic;margin-left:4px}
.arete-login-submit{background:var(--navy);color:#fff;border:none;padding:11px 22px;border-radius:5px;font-family:system-ui;font-size:14px;font-weight:600;cursor:pointer;margin-top:6px}
.arete-login-submit:hover{background:#003875}
.arete-login-error{font-size:13px;color:var(--red);background:#ffebee;border:1px solid #ef9a9a;border-radius:4px;padding:8px 12px;margin:8px 0 0;line-height:1.5}
.arete-login-ok{font-size:13px;color:var(--green);background:#e8f5e9;border:1px solid #a5d6a7;border-radius:4px;padding:8px 12px;margin:8px 0 0;line-height:1.5;font-weight:600}
.arete-login-help{font-size:12px;color:var(--ts);margin:16px 0 0;line-height:1.6;font-style:italic}
.arete-login-help code{font-family:monospace;background:#eceef7;padding:1px 6px;border-radius:3px;font-style:normal;color:var(--navy);font-size:11.5px}
.arete-login-cancel{background:none;border:none;color:var(--ts);text-decoration:underline;cursor:pointer;font-family:system-ui;font-size:12px;padding:0}
.arete-login-cancel:hover{color:var(--navy)}
.arete-change .arete-login-card{border-left-color:var(--green)}
.arete-login-legal{margin:14px 0 0;text-align:center}
.arete-login-link{background:none;border:none;color:var(--navy);text-decoration:underline;cursor:pointer;font-family:system-ui;font-size:12px;padding:0}
.arete-login-link:hover{color:#003875}
/* Prominent "Create your account" call-to-action under the sign-in form, so a
   new student spots it without hunting for a small inline link. */
.arete-login-divider{display:flex;align-items:center;gap:12px;margin:20px 0 14px;color:var(--ts);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
.arete-login-divider::before,.arete-login-divider::after{content:"";flex:1;height:1px;background:var(--border)}
.arete-login-secondary{display:block;width:100%;box-sizing:border-box;text-align:center;background:#fff;color:var(--navy);border:1.5px solid var(--navy);padding:11px 22px;border-radius:5px;font-family:system-ui;font-size:14px;font-weight:600;cursor:pointer;transition:background .12s,color .12s}
.arete-login-secondary:hover{background:var(--navy);color:#fff}

/* ---- Cookies & privacy notice (transparency, no consent banner) ---- */
.arete-privacy{z-index:1100;align-items:flex-start;overflow-y:auto;padding:32px 24px}
.arete-privacy-card{max-width:560px;border-left-color:var(--navy)}
.arete-privacy-h{font-family:Georgia,serif;font-size:15px;color:var(--navy);margin:20px 0 6px}
.arete-privacy-p{font-size:13px;color:#312f4f;line-height:1.6;margin:0 0 8px}
.arete-privacy-note{font-size:12px;color:var(--ts);line-height:1.6;background:#eceef7;border-left:3px solid var(--accent);padding:9px 12px;border-radius:3px;margin:10px 0 0}
.arete-privacy-tbl{width:100%;border-collapse:collapse;font-size:12.5px;margin:4px 0 0}
.arete-privacy-tbl th{text-align:left;vertical-align:top;color:var(--navy);font-weight:600;padding:5px 10px 5px 0;width:88px;white-space:nowrap}
.arete-privacy-tbl td{vertical-align:top;color:#312f4f;line-height:1.5;padding:5px 0;border-bottom:1px solid var(--border)}
.arete-privacy-tbl code{font-family:monospace;background:#eceef7;padding:1px 5px;border-radius:3px;color:var(--navy);font-size:11.5px}
.arete-privacy-close{margin-top:20px}

.t-pf-account{background:#f7f8fd;border:1px solid var(--border);border-radius:6px;padding:14px 18px;margin:18px 0 0;font-family:system-ui}
.t-pf-account-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:#312f4f}
.t-pf-account-label{color:var(--ts);font-size:12px}
.t-pf-account-username{font-family:monospace;background:#fff;padding:2px 8px;border-radius:3px;color:var(--navy);border:1px solid var(--border)}
.t-pf-account-role{color:var(--ts);font-size:11px;font-style:italic}
.t-pf-account-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.t-pf-account-btn{background:#fff;border:1px solid var(--navy);color:var(--navy);font-family:system-ui;font-size:12px;font-weight:600;padding:7px 14px;border-radius:4px;cursor:pointer}
.t-pf-account-btn:hover{background:var(--navy);color:#fff}
.t-pf-account-btn-logout{border-color:var(--ts);color:var(--ts)}
.t-pf-account-btn-logout:hover{background:var(--red);color:#fff;border-color:var(--red)}

@media (max-width:560px){
  .arete-login-card{padding:24px 22px}
}

/* ---- Welcome-section locked-notice + Facilitator admin panel ---- */
.t-pf-locked-notice{display:flex;gap:14px;align-items:flex-start;background:#eef1fc;border:1px solid #cdd0ee;border-left:4px solid var(--accent);border-radius:6px;padding:14px 18px;margin:18px 0 0;font-family:Georgia,serif}
.t-pf-locked-notice-icon{font-size:22px;line-height:1;flex:0 0 22px;margin-top:2px}
.t-pf-locked-notice b{color:var(--navy);font-size:14px;display:block;font-family:system-ui}
.t-pf-locked-notice p{margin:6px 0 0;font-size:13.5px;line-height:1.55;color:#312f4f}

.t-pf-admin{position:fixed;top:108px;right:24px;width:300px;background:#fff;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:6px;padding:14px 18px;box-shadow:0 6px 18px rgba(0,0,0,0.12);z-index:200;font-family:system-ui}
.t-pf-admin-header{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px}
.t-pf-admin-badge{font-size:11px;font-weight:700;letter-spacing:.4px;color:var(--navy);background:#e3eaf6;padding:3px 9px;border-radius:10px;border:1px solid #b9c8e0}
.t-pf-admin-close{background:none;border:none;cursor:pointer;font-size:16px;color:var(--ts);padding:2px 6px;line-height:1}
.t-pf-admin-close:hover{color:var(--red)}
.t-pf-admin-lead{font-size:11.5px;color:var(--ts);margin:0 0 10px;line-height:1.5}
.t-pf-admin-group-label{font-family:system-ui;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ts);margin:14px 0 6px;padding-top:10px;border-top:1px solid #eceef7}
.t-pf-admin-group-label:first-of-type{margin-top:6px;padding-top:0;border-top:none}
.t-pf-admin-row{margin:5px 0}
.t-pf-admin-row label{display:flex;align-items:center;gap:8px;font-size:13px;color:#312f4f;cursor:pointer}
.t-pf-admin-row input[type=checkbox]{cursor:pointer;width:15px;height:15px;flex:0 0 15px;accent-color:var(--navy)}
.t-pf-admin-row-sub{font-weight:400;color:var(--ts);font-size:11.5px}
.t-pf-admin-actions{display:flex;gap:8px;margin:12px 0 8px;padding-top:10px;border-top:1px solid #eceef7}
.t-pf-admin-btn{flex:1;background:var(--navy);color:#fff;border:none;border-radius:4px;padding:6px 10px;font-size:12px;font-weight:600;cursor:pointer;font-family:system-ui}
.t-pf-admin-btn:hover{background:#003875}
.t-pf-admin-btn-secondary{background:#f7f8fd;color:var(--navy);border:1px solid var(--border)}
.t-pf-admin-btn-secondary:hover{background:#eceef7;color:var(--navy)}
.t-pf-admin-note{font-size:11px;color:var(--ts);margin:10px 0 0;line-height:1.5;font-style:italic}
.t-pf-admin code{background:#eceef7;padding:1px 5px;border-radius:3px;font-size:11px}

/* === Facilitator dashboard (#dashboard section) ===
   Live, dense, scannable. The KPI strip is the at-a-glance summary;
   the per-attendee table is for spotting stragglers; the per-question
   distribution bars are the activation-activity goldmine ("23% said
   HIGH RISK on Q3 — discuss"). */
.t-pf-dash{max-width:1180px}
.t-pf-dash-cohort{font-family:monospace;font-size:13px;color:var(--ts);background:#eceef7;padding:3px 9px;border-radius:3px;margin-left:8px;font-weight:400}
.t-pf-dash-loading,.t-pf-dash-error{padding:14px 18px;background:#eef1fc;border:1px solid #cdd0ee;border-radius:5px;color:#4a4b86;font-style:italic;margin:14px 0}
.t-pf-dash-error{background:#ffebee;border-color:#ef9a9a;color:#c62828;font-style:normal;font-weight:600}
.t-pf-dash-kpi-row{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0 28px}
.t-pf-dash-kpi{flex:1 1 130px;background:#f7f8fd;border:1px solid var(--border);border-left:4px solid var(--navy);border-radius:5px;padding:12px 14px;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.t-pf-dash-kpi b{font-family:system-ui;font-size:24px;color:var(--navy);font-weight:700;line-height:1}
.t-pf-dash-kpi span{font-family:system-ui;font-size:11px;color:var(--ts);text-transform:uppercase;letter-spacing:.3px;line-height:1.3}
.t-pf-dash-sub{font-size:13px;color:var(--ts);margin:0 0 14px}
.t-pf-dash-table{width:100%;border-collapse:collapse;font-family:system-ui;font-size:12.5px;margin:8px 0 24px}
.t-pf-dash-table th{background:#f5f3ee;color:#312f4f;font-weight:700;text-align:left;padding:8px 10px;border-bottom:2px solid var(--border);font-size:11px;text-transform:uppercase;letter-spacing:.3px}
.t-pf-dash-table td{padding:7px 10px;border-bottom:1px solid #eceef7;color:#312f4f;vertical-align:middle}
.t-pf-dash-table tr:hover td{background:#f7f8fd}
.t-pf-dash-row-fac td{background:#eef1fc}
.t-pf-dash-row-fac:hover td{background:#e3e7fb}
.t-pf-dash-user-handle{font-family:Georgia,serif}
.t-pf-dash-online{color:#bdbdbd;font-size:16px;line-height:1}
.t-pf-dash-online.is-online{color:#43a047}
.t-pf-dash-role{font-size:11px;color:var(--ts);text-transform:uppercase;letter-spacing:.3px}
.t-pf-dash-mono{font-family:monospace;font-size:11.5px;color:#312f4f}
.t-pf-dash-questions{display:flex;flex-direction:column;gap:18px;margin:8px 0 24px}
.t-pf-dash-q{background:#f7f8fd;border:1px solid var(--border);border-radius:5px;padding:12px 16px}
.t-pf-dash-q-stem{font-family:Georgia,serif;font-size:13.5px;color:#312f4f;line-height:1.5;margin-bottom:10px}
.t-pf-dash-q-bars{display:flex;flex-direction:column;gap:6px}
.t-pf-dash-bar-row{display:grid;grid-template-columns:minmax(0,1fr) 220px 50px;gap:10px;align-items:center;font-family:system-ui;font-size:12.5px;color:#312f4f}
.t-pf-dash-bar-row.is-correct .t-pf-dash-bar-label{font-weight:600;color:#1b5e20}
.t-pf-dash-bar-row.is-correct .t-pf-dash-bar-fill{background:#43a047}
.t-pf-dash-bar-label{line-height:1.4}
.t-pf-dash-correct-tag{background:#c8e6c9;color:#1b5e20;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:9px;margin-left:6px}
.t-pf-dash-bar-track{background:#eceae4;border-radius:9px;height:14px;overflow:hidden;position:relative}
.t-pf-dash-bar-fill{display:block;height:100%;background:var(--navy);transition:width .25s ease-out}
.t-pf-dash-bar-count{font-family:monospace;font-size:12px;color:var(--ts);text-align:right}
.t-pf-dash-ap-list{list-style:none;padding:0;margin:8px 0 24px;display:flex;flex-direction:column;gap:10px}
.t-pf-dash-ap-list li{background:#f7f8fd;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:4px;padding:10px 14px}
.t-pf-dash-ap-user{font-family:monospace;font-size:11px;color:var(--ts);margin-bottom:4px}
.t-pf-dash-ap-field{font-family:Georgia,serif;font-size:13px;color:#312f4f;line-height:1.5;margin:3px 0}
.t-pf-dash-rx-text{font-family:Georgia,serif}
.t-pf-dash-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:20px 0 0;padding:16px 0 0;border-top:1px solid var(--border)}
.t-pf-dash-generated{font-size:11px;color:var(--ts);font-family:monospace;margin-left:auto}
@media (max-width:780px){
  .t-pf-dash-bar-row{grid-template-columns:1fr;gap:3px}
  .t-pf-dash-bar-track{height:10px}
  .t-pf-dash-table{font-size:11.5px}
  .t-pf-dash-table th,.t-pf-dash-table td{padding:6px 6px}
}

/* === Facilitator broadcast: composer + global toast stack ===
   The composer lives inside the dashboard. The toast stack is global
   (fixed position) so messages appear on every screen, including for
   the sender (delivery receipt). */
.t-pf-dash-broadcast{background:#eef1fc;border:1px solid #cdd0ee;border-left:4px solid var(--accent);border-radius:5px;padding:14px 16px;margin:8px 0 28px}
.t-pf-dash-broadcast-input{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--border);border-radius:4px;font-family:Georgia,serif;font-size:14px;line-height:1.5;color:#312f4f;resize:vertical;min-height:50px}
.t-pf-dash-broadcast-input:focus{border-color:var(--navy);outline:none}
.t-pf-dash-broadcast-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.t-pf-dash-broadcast-status{font-family:system-ui;font-size:12px;color:var(--red);font-weight:600}
.t-pf-dash-broadcast-status.ok{color:var(--green)}
.t-pf-dash-broadcast-hint{font-family:system-ui;font-size:11px;color:var(--ts);margin-left:auto;font-style:italic}
@media (max-width:780px){
  .t-pf-toast-stack{left:14px;right:14px;max-width:none;top:8px}
}

/* === Your learning journey (After section) ===
   Renders only when both the diagnostic and the knowledge check are
   submitted. Closes the Kirkpatrick L2 loop FOR THE LEARNER. */
.t-pf-journey{background:linear-gradient(135deg,#eaf3fb 0%,#fff 100%);border:1px solid #c5d9f0;border-radius:8px;padding:22px 26px;margin:0 0 22px}
.t-pf-journey-header{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px}
.t-pf-journey-icon{font-size:30px;line-height:1;flex:0 0 auto;margin-top:2px}
.t-pf-journey-header h3{font-family:Georgia,serif;font-size:20px;color:var(--navy);margin:0 0 4px}
.t-pf-journey-sub{font-family:system-ui;font-size:13px;color:var(--ts);margin:0;line-height:1.5}
.t-pf-journey-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center;margin:14px 0 20px}
.t-pf-journey-step{background:#fff;border:1px solid var(--border);border-radius:6px;padding:14px 18px;display:flex;flex-direction:column;gap:8px}
.t-pf-journey-step-final{border-color:var(--navy);box-shadow:0 0 0 1px var(--navy) inset}
.t-pf-journey-step-label{font-family:system-ui;font-size:11px;color:var(--ts);text-transform:uppercase;letter-spacing:.4px;font-weight:700}
.t-pf-journey-score{font-family:Georgia,serif;color:#312f4f;font-size:14px}
.t-pf-journey-score b{font-size:30px;color:var(--navy);font-family:system-ui;font-weight:700;line-height:1;margin-right:3px}
.t-pf-journey-bar{height:8px;background:#eceae4;border-radius:4px;overflow:hidden}
.t-pf-journey-bar-fill{display:block;height:100%;background:var(--navy);transition:width .4s ease-out}
.t-pf-journey-pct{font-family:system-ui;font-size:11px;color:var(--ts);text-align:right;font-weight:600}
.t-pf-journey-arrow{display:flex;flex-direction:column;align-items:center;gap:4px;padding:0 6px}
.t-pf-journey-arrow-glyph{font-size:30px;color:var(--ts);line-height:1}
.t-pf-journey-arrow-pp{font-family:system-ui;font-size:14px;font-weight:700;padding:3px 10px;border-radius:12px;background:#fff;border:1px solid var(--border)}
.t-pf-journey-arrow.is-up .t-pf-journey-arrow-glyph{color:#43a047}
.t-pf-journey-arrow.is-up .t-pf-journey-arrow-pp{color:#1b5e20;background:#c8e6c9;border-color:#81c784}
.t-pf-journey-arrow.is-down .t-pf-journey-arrow-glyph{color:#c62828}
.t-pf-journey-arrow.is-down .t-pf-journey-arrow-pp{color:#b71c1c;background:#ffebee;border-color:#ef9a9a}
.t-pf-journey-arrow.is-flat .t-pf-journey-arrow-pp{color:var(--ts)}
.t-pf-journey-sections{background:#fff;border:1px solid var(--border);border-radius:6px;padding:14px 18px;margin:0 0 14px}
.t-pf-journey-sections-title{font-family:system-ui;font-size:11px;color:var(--ts);text-transform:uppercase;letter-spacing:.4px;font-weight:700;margin:0 0 10px}
.t-pf-journey-section-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr) 60px;gap:12px;align-items:center;margin:5px 0;font-family:system-ui;font-size:12.5px;color:#312f4f}
.t-pf-journey-section-label{font-weight:600}
.t-pf-journey-section-bar{height:10px;background:#eceae4;border-radius:5px;overflow:hidden}
.t-pf-journey-section-bar-fill{display:block;height:100%;transition:width .4s ease-out}
.t-pf-journey-section-bar-fill.is-strong{background:#43a047}
.t-pf-journey-section-bar-fill.is-mid{background:var(--gold)}
.t-pf-journey-section-bar-fill.is-weak{background:#ef6c00}
.t-pf-journey-section-score{font-family:monospace;font-size:11.5px;color:var(--ts);text-align:right}
.t-pf-journey-callouts{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.t-pf-journey-callout{flex:1 1 200px;background:#fff;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:5px;padding:10px 14px;font-family:system-ui;font-size:13px;display:flex;flex-direction:column;gap:3px}
.t-pf-journey-callout-strong{border-left-color:#43a047}
.t-pf-journey-callout-weak{border-left-color:#ef6c00}
.t-pf-journey-callout-label{font-size:10.5px;color:var(--ts);text-transform:uppercase;letter-spacing:.4px;font-weight:700}
.t-pf-journey-callout-text{color:#312f4f;font-family:Georgia,serif;font-size:14px}
.t-pf-journey-footnote{font-family:Georgia,serif;font-size:12.5px;color:var(--ts);font-style:italic;line-height:1.55;margin:8px 0 0;padding-top:12px;border-top:1px solid #d4e2f0}
@media (max-width:780px){
  .t-pf-journey-grid{grid-template-columns:1fr;gap:10px}
  .t-pf-journey-arrow{flex-direction:row;gap:8px}
  .t-pf-journey-arrow-glyph{transform:rotate(90deg)}
}

@media (max-width:980px){
  .t-pf-admin{position:relative;top:auto;right:auto;width:auto;margin:14px 18px;box-shadow:none}
}

/* Legacy .t-hub-* (kept for backwards compat and the embedded modals/btns) */
.t-hub{min-height:100vh;background:var(--bg);color:var(--text);font-family:Georgia,'Times New Roman',serif}
.t-hub-header{background:#fff;border-bottom:3px solid var(--accent);padding:20px 0;box-shadow:0 1px 0 rgba(0,0,0,0.04)}
.t-hub-header-inner{max-width:1180px;margin:0 auto;padding:0 28px;display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.t-hub-title-block h1{margin:0;font-size:28px;color:var(--navy);font-family:Georgia,serif;letter-spacing:-0.5px}
.t-hub-title-block p{margin:4px 0 0;font-size:13px;color:var(--ts);font-family:system-ui}
.t-hub-user{font-family:system-ui;text-align:right}
.t-hub-user label{display:block;font-size:11px;color:var(--ts);margin-bottom:4px;font-weight:600;letter-spacing:.3px;text-transform:uppercase}
.t-hub-user label .opt{font-weight:400;text-transform:none;color:var(--ts)}
.t-hub-user input{padding:8px 12px;border:1px solid var(--border);border-radius:4px;font-size:14px;min-width:220px;background:#fff;font-family:Georgia,serif}
.t-hub-user input:focus{border-color:var(--navy);outline:none}

.t-hub-hero{max-width:1180px;margin:40px auto 24px;padding:0 28px}
.t-hub-hero h2{margin:0 0 12px;font-size:30px;color:var(--navy);font-family:Georgia,serif;font-weight:700;letter-spacing:-0.5px}
.t-hub-hero p{margin:0;font-size:16px;color:var(--text);line-height:1.6;max-width:760px}

.t-hub-main{max-width:1180px;margin:0 auto;padding:0 28px 32px}
.t-hub-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:24px;margin:24px 0}

.t-hub-card{background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,0.03)}
.t-hub-card-header{background:var(--navy);color:#fff;padding:12px 20px;font-family:system-ui;font-size:13px;font-weight:600;letter-spacing:.4px;display:flex;justify-content:space-between;align-items:center}
.t-hub-card-header.alt{background:#3a3a5c}
.t-hub-card-tag{background:rgba(255,255,255,0.18);padding:2px 10px;border-radius:10px;font-size:11px;font-weight:500}
.t-hub-card-body{padding:24px 26px;font-family:Georgia,serif}
.t-hub-card-body h3{margin:0 0 6px;font-size:20px;color:var(--navy);font-family:Georgia,serif;letter-spacing:-0.2px}
.t-hub-card-short{margin:0 0 14px;color:var(--ts);font-size:14px;font-style:italic}
.t-hub-card-lead{margin:0 0 18px;font-size:14px;line-height:1.65}
.t-hub-card-lead p{margin:8px 0}
.t-hub-card-actions{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.t-hub-card-note{font-size:12px;color:var(--ts);font-style:italic;margin:14px 0 0;padding:10px 14px;background:#f7f8fd;border-left:3px solid var(--accent);border-radius:3px;line-height:1.55}
.t-hub-cta{font-size:15px;padding:10px 20px;background:var(--navy);color:#fff;border:none;border-radius:5px;cursor:pointer;font-family:system-ui;font-weight:600}
.t-hub-cta:hover{background:#003875}
.t-hub-btn-secondary{font-size:13px;padding:9px 16px;background:#fff;color:var(--navy);border:1px solid var(--navy);border-radius:5px;cursor:pointer;font-family:system-ui;font-weight:500;text-decoration:none;display:inline-block}
.t-hub-btn-secondary:hover{background:#f0f4fa}

.t-hub-reflist{list-style:none;padding:0;margin:14px 0 0}
.t-hub-reflist li{margin:0;border-bottom:1px solid #eceef7}
.t-hub-reflist li:last-child{border-bottom:none}
.t-hub-reflist a{display:block;padding:12px 14px;color:var(--navy);text-decoration:none;cursor:pointer;border-radius:4px;transition:background 0.15s}
.t-hub-reflist a:hover{background:#f0f4fa}
.t-hub-reflist-title{display:block;font-family:system-ui;font-size:14px;font-weight:600;color:var(--navy)}
.t-hub-reflist-sub{display:block;font-size:11px;color:var(--ts);margin-top:2px;font-family:system-ui;font-style:italic}

.t-hub-locked{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}
.t-hub-locked-card{background:#f4f3f0;border:1px dashed var(--bl);border-radius:8px;padding:18px 22px;font-family:Georgia,serif}
.t-hub-locked-card.unlocked{background:#e8f5e9;border-style:solid;border-color:var(--green)}
.t-hub-locked-card h4{margin:0 0 8px;font-family:system-ui;font-size:13px;color:var(--ts);letter-spacing:.3px;text-transform:uppercase;font-weight:600}
.t-hub-locked-card.unlocked h4{color:var(--green)}
.t-hub-locked-card p{margin:0;font-size:13px;color:var(--text);line-height:1.55}

.t-hub-code{margin:24px 0 0;background:var(--hl);border:1px solid var(--accent);border-radius:8px;padding:14px 20px;font-family:Georgia,serif}
.t-hub-code summary{cursor:pointer;font-weight:600;color:#3a3a5c;font-size:14px;font-family:system-ui}
.t-hub-code-body{margin-top:12px}
.t-hub-code-body p{margin:0 0 10px;font-size:13px;color:var(--text)}
.t-hub-code-row{display:flex;gap:10px;align-items:center}
.t-hub-code-row input{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:4px;font-size:14px;font-family:monospace;background:#fff;text-transform:uppercase;letter-spacing:1px}
.t-hub-code-help{font-size:11px;color:var(--ts);margin:10px 0 0;line-height:1.5}

.t-hub-footer{max-width:1180px;margin:0 auto;padding:28px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--bl);color:var(--ts);font-size:12px;font-family:system-ui;flex-wrap:wrap;gap:14px}

/* Responsive — collapse to single column on tablets and below */
@media (max-width:980px){
  .t-hub-grid{grid-template-columns:1fr}
  .t-hub-locked{grid-template-columns:1fr}
  .t-hub-hero h2{font-size:24px}
  .t-hub-hero p{font-size:14px}
  .t-hub-title-block h1{font-size:24px}
  .t-hub-header-inner{flex-direction:column;align-items:flex-start}
  .t-hub-user{text-align:left;width:100%}
  .t-hub-user input{width:100%;min-width:0}
}
@media (max-width:560px){
  .t-hub-header-inner,.t-hub-hero,.t-hub-main,.t-hub-footer{padding-left:18px;padding-right:18px}
  .t-hub-card-body{padding:18px 18px}
  .t-hub-hero{margin-top:24px}
  .t-hub-hero h2{font-size:21px}
  .t-hub-cta{width:100%;text-align:center}
  .t-hub-btn-secondary{width:100%;text-align:center}
}

/* ==========================================================================
   ARETE pre-work briefing — 8-screen guided narrative (S1)
   ========================================================================== */
.t-pw{min-height:100vh;background:var(--bg);color:var(--text);font-family:Georgia,'Times New Roman',serif}
.t-pw-header{background:#fff;border-bottom:1px solid var(--bl);position:sticky;top:0;z-index:50;box-shadow:0 1px 2px rgba(0,0,0,0.04)}
.t-pw-header-inner{max-width:920px;margin:0 auto;padding:14px 28px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.t-pw-exit{background:none;border:none;color:var(--navy);cursor:pointer;font-family:system-ui;font-size:13px;font-weight:600;padding:6px 0}
.t-pw-exit:hover{text-decoration:underline}
.t-pw-ref{background:#fff;border:1px solid var(--navy);color:var(--navy);cursor:pointer;font-family:system-ui;font-size:12px;font-weight:600;padding:6px 12px;border-radius:4px}
.t-pw-ref:hover{background:#f0f4fa}
.t-pw-header-actions{display:flex;gap:10px;align-items:center}
.t-pw-title{font-family:system-ui;font-size:13px;color:var(--text);font-weight:600;flex:1;text-align:center}
.t-pw-progress{font-family:system-ui;font-size:11px;color:var(--ts);font-weight:600;letter-spacing:.3px;text-transform:uppercase}
.t-pw-progress-bar{height:3px;background:#f0eee9;width:100%}
.t-pw-progress-fill{height:100%;background:var(--gold);transition:width 0.3s}

.t-pw-main{max-width:780px;margin:0 auto;padding:40px 28px 120px;line-height:1.7;font-size:15px}
.t-pw-screen h2{font-size:28px;color:var(--navy);font-family:Georgia,serif;margin:0 0 14px;letter-spacing:-0.3px}
.t-pw-screen h3{font-size:17px;color:var(--navy);font-family:Georgia,serif;margin:24px 0 6px}
.t-pw-screen p{margin:10px 0}
.t-pw-screen ul,.t-pw-screen ol{margin:10px 0;padding-left:24px}
.t-pw-screen li{margin:6px 0}
.t-pw-lead{font-size:17px;color:var(--text);line-height:1.6}

.t-pw-callout{background:#fff;border:1px solid var(--border);border-left:4px solid var(--navy);border-radius:6px;padding:16px 20px;margin:20px 0}
.t-pw-callout h4{margin:0 0 8px;color:var(--navy);font-family:system-ui;font-size:14px}
.t-pw-callout p,.t-pw-callout li{font-size:14px;line-height:1.6}
.t-pw-callout.warn{background:#fff8e1;border-left-color:#b8860b}
.t-pw-callout.warn h4{color:#5d4037}
.t-pw-callout.success{background:#e8f5e9;border-left-color:var(--green)}
.t-pw-callout.success h4{color:#1b5e20}
.t-pw-callout.inject{background:#fff8e1;border-left-color:#b8860b;border:1px solid #ffd54f}

.t-pw-prompt{background:#e8f5e9;border:1px solid #a5d6a7;border-left:4px solid var(--green);border-radius:6px;padding:18px 22px;margin:24px 0}
.t-pw-prompt h4{margin:0 0 8px;color:var(--green);font-family:system-ui;font-size:14px}
.t-pw-prompt p,.t-pw-prompt li{font-size:14px;line-height:1.65;color:#1b5e20}

.t-pw-block{background:#fafaf8;border:1px solid var(--bl);border-radius:6px;padding:14px 18px;margin:14px 0}
.t-pw-block h3{margin:0 0 6px;font-size:14px;font-family:system-ui;color:var(--navy)}

.t-pw-inject-marker{display:inline-block;background:#b8860b;color:#fff;padding:4px 12px;font-family:system-ui;font-size:11px;font-weight:700;letter-spacing:.5px;border-radius:3px;margin-bottom:8px}

.t-pw-footer{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--bl);padding:14px 28px;display:flex;justify-content:space-between;align-items:center;gap:14px;box-shadow:0 -2px 4px rgba(0,0,0,0.04);z-index:50}
.t-pw-step-dots{display:flex;gap:6px;align-items:center}
.t-pw-dot{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#eee;color:var(--ts);font-family:system-ui;font-size:11px;font-weight:600;cursor:pointer;transition:all 0.15s}
.t-pw-dot:hover{background:var(--bl)}
.t-pw-dot.done{background:#c8e6c9;color:var(--green)}
.t-pw-dot.active{background:var(--navy);color:#fff}

@media (max-width:680px){
  .t-pw-main{padding:24px 18px 140px;font-size:14px}
  .t-pw-screen h2{font-size:22px}
  .t-pw-lead{font-size:15px}
  .t-pw-footer{padding:10px 14px;flex-wrap:wrap}
  .t-pw-step-dots{order:3;width:100%;justify-content:center}
}

/* Reference library + Scenario materials (tabs + content) */
.t-ref-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 0;border-bottom:1px solid var(--bl);padding-bottom:6px}
.t-ref-tab{background:#fff;color:var(--ts);border:1px solid var(--border);border-radius:3px;padding:4px 10px;font-family:system-ui;font-size:11px;cursor:pointer}
.t-ref-tab:hover{background:#fafafa;color:var(--navy)}
.t-ref-tab.active{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:600}
/* Grouped reference-library tabs (Legal framework / Scientific papers / Practitioners' insights) */
.t-ref-tabgroups{margin:8px 0 0;border-bottom:1px solid var(--bl);padding-bottom:8px;display:flex;flex-direction:column;gap:10px}
.t-ref-tabgroup-label{font-family:system-ui;font-size:9.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--ts);margin:0 0 5px}
.t-ref-tabgroup .t-ref-tabs{margin:0;border-bottom:none;padding-bottom:0}
.t-ref-content{padding:14px 4px 6px;font-size:13px;line-height:1.55;color:var(--text);max-height:55vh;overflow-y:auto}
.t-ref-content p{margin:6px 0}
.t-ref-content ul,.t-ref-content ol{margin:6px 0;padding-left:22px}
.t-ref-content li{margin:3px 0;font-size:12px;line-height:1.5}
.t-ref-content a{color:var(--navy);text-decoration:underline}
.t-glossary-entry{padding:10px 13px;margin:7px 0;background:#fafaf8;border-left:3px solid var(--navy);border-radius:4px;transition:background .12s ease,border-color .12s ease}
.t-glossary-entry:hover{background:#eef2f8;border-left-color:var(--edps-blue,#282875)}
.t-gl-term{font-family:Georgia,serif;font-size:14.5px;color:var(--navy);line-height:1.3}
.t-gl-def{display:block;font-size:13px;line-height:1.6;color:var(--text);margin-top:5px}
.t-ref-art{font-family:system-ui;font-size:10.5px;color:var(--ts);font-weight:400}
/* Reading-optimised reference library: fixed header + tabs, single scrolling body. */
.t-ref-panel{max-width:880px;width:100%;max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.t-ref-panel .overlay-header{flex:0 0 auto}
.t-ref-panel .t-ref-tabgroups{flex:0 0 auto;margin:0;padding:12px 24px 10px;background:#f6f7f9}
.t-ref-panel .t-ref-content{flex:1 1 auto;max-height:none;overflow-y:auto;padding:16px 24px 24px}
.t-ref-h{margin:0 0 14px;color:var(--navy);font-family:Georgia,serif;font-size:18px;font-weight:600;border-bottom:2px solid #ffcc00;padding-bottom:8px}
/* Sticky live filter for the glossary */
.t-ref-search{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:8px;background:#fff;padding:4px 0 12px;margin-bottom:6px;border-bottom:1px solid var(--bl)}
.t-ref-search input{flex:1 1 auto;min-width:0;padding:9px 13px;border:1px solid var(--border);border-radius:6px;font-family:system-ui;font-size:13px;color:var(--text)}
.t-ref-search input:focus{outline:2px solid #ffcc00;outline-offset:0;border-color:var(--navy)}
.t-ref-search-clear{flex:0 0 auto;background:#fff;border:1px solid var(--border);border-radius:5px;cursor:pointer;padding:6px 10px;color:var(--ts);line-height:1}
.t-ref-search-clear:hover{background:#f3f4f6;color:var(--navy)}
.t-ref-search-count{flex:0 0 auto;font-family:system-ui;font-size:11px;font-weight:600;color:var(--ts);white-space:nowrap}
.t-ref-empty{padding:18px 12px;text-align:center;color:var(--ts);font-style:italic;font-size:13px}
.t-topbar button.reference{background:#e8eaf6;border-color:#3949ab;color:#1a237e}
.t-topbar button.materials{background:#e0f2f1;border-color:#00695c;color:#004d40}
/* Instructor mode: per-step notes panel + top-bar button + badge */
.t-instructor-badge{display:inline-block;background:#ede7f6;color:#4527a0;border:1px solid #b39ddb;border-radius:10px;padding:2px 10px;font-family:system-ui;font-size:10px;font-weight:600;letter-spacing:.5px;margin-left:10px;vertical-align:middle}
.t-topbar button.instructor{background:#ede7f6;border-color:#4527a0;color:#4527a0}
.t-topbar button.instructor.opened{background:#d1c4e9;border-color:#311b92;color:#311b92}
.t-instructor{max-width:1060px;margin:8px auto;background:#ede7f6;border:1px solid #b39ddb;border-left:4px solid #4527a0;border-radius:6px;padding:14px 18px;font-family:Georgia,serif;color:#311b92}
.t-instructor h4{margin:0 0 4px;font-size:13px;color:#4527a0;font-family:system-ui;text-transform:uppercase;letter-spacing:.5px}
.t-instructor .step-label{font-family:system-ui;font-size:10px;color:#6a4cb6;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.t-instructor p{margin:6px 0;font-size:13px;line-height:1.55;color:#311b92}
/* ARETE debrief variant (no EDPB side-by-side; expected band only) */
.t-arete-debrief{background:linear-gradient(135deg,#e3f2fd 0%,#f3e5f5 100%);border:1px solid #90caf9;border-radius:8px;padding:18px 22px;margin:14px 0}
.t-arete-debrief h3{margin:0 0 4px;color:var(--navy);font-family:Georgia,serif;font-size:18px}
.t-arete-debrief .band-label{font-family:system-ui;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ts);margin-top:8px}
.t-arete-debrief .band{font-family:Georgia,serif;font-size:22px;font-weight:700;color:var(--navy);margin-top:2px}
.t-arete-debrief .rationale{font-size:13px;line-height:1.6;color:#3e2723;margin:14px 0}
/* === End training === */

/* ============================================================
 * LIVE PROJECTION (facilitator-only) — Batch 4 deliverable.
 * Big text, anonymous distribution bars, single-question paging.
 * Designed for a room projector at 1920×1080 from ~4 m away.
 * ============================================================ */
.t-pf-proj{padding:24px 32px 40px;outline:none}
.t-pf-proj-bar{display:flex;align-items:center;flex-wrap:wrap;gap:16px;border-bottom:1px solid var(--border);padding-bottom:14px;margin-bottom:18px}
.t-pf-proj-tabs{display:flex;gap:8px;flex-wrap:wrap}
.t-pf-proj-tab{background:#fff;border:1px solid var(--border);color:var(--ts);font-family:system-ui;font-size:14px;font-weight:600;padding:10px 16px;border-radius:999px;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;gap:2px;line-height:1.2}
.t-pf-proj-tab:hover{background:#f0f4fa;color:var(--navy);border-color:var(--navy)}
.t-pf-proj-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.t-pf-proj-tab.active .t-pf-proj-tab-sub{color:#cfe0f5}
.t-pf-proj-tab-sub{font-size:10.5px;font-weight:500;letter-spacing:.3px;text-transform:uppercase}
.t-pf-proj-actions{margin-left:auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.t-pf-proj-pace{font-size:11.5px;color:var(--ts);font-style:italic}
.t-pf-proj-empty{padding:60px 0;text-align:center;color:var(--ts);font-size:16px}
.t-pf-proj-stage{background:#fff;border:1px solid var(--border);border-radius:10px;padding:36px 44px;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.t-pf-proj-counter{font-family:system-ui;font-size:14px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:8px}
.t-pf-proj-counter-of{color:var(--ts);font-weight:600}
.t-pf-proj-stem{font-family:Georgia,serif;font-size:30px;color:var(--navy);line-height:1.3;margin:0 0 28px}
.t-pf-proj-options{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:18px}
.t-pf-proj-option{background:#f7f8fd;border:1px solid #e3e4f3;border-radius:8px;padding:18px 22px}
.t-pf-proj-option.is-correct{background:#e8f5e9;border-color:#a5d6a7;border-left:6px solid #2e7d32}
.t-pf-proj-opt-row{display:flex;align-items:center;gap:18px;margin-bottom:10px}
.t-pf-proj-opt-letter{flex:0 0 48px;font-family:Georgia,serif;font-size:24px;font-weight:700;color:var(--navy);background:#fff;border:2px solid var(--navy);border-radius:50%;width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center}
.t-pf-proj-option.is-correct .t-pf-proj-opt-letter{background:#2e7d32;color:#fff;border-color:#2e7d32}
.t-pf-proj-opt-label{flex:1;font-family:system-ui;font-size:18px;color:#312f4f;line-height:1.4}
.t-pf-proj-opt-count{font-family:Georgia,serif;font-size:32px;font-weight:700;color:var(--navy);min-width:80px;text-align:right}
.t-pf-proj-opt-bar{position:relative;height:14px;background:#fff;border:1px solid #d6d7ea;border-radius:7px;overflow:hidden;margin-left:66px;margin-right:96px}
.t-pf-proj-opt-fill{height:100%;background:linear-gradient(90deg,var(--navy),#3a73b3);border-radius:7px;transition:width .35s ease}
.t-pf-proj-option.is-correct .t-pf-proj-opt-fill{background:linear-gradient(90deg,#2e7d32,#66bb6a)}
.t-pf-proj-opt-pct{margin-left:66px;margin-top:4px;font-family:system-ui;font-size:13px;color:var(--ts);font-weight:600}
.t-pf-proj-footer{display:flex;justify-content:space-between;align-items:center;margin-top:26px;padding-top:18px;border-top:1px solid #e3e4f3;font-size:15px;color:#312f4f;flex-wrap:wrap;gap:14px}
.t-pf-proj-reveal-btn{background:var(--accent);border:none;color:var(--navy);font-family:system-ui;font-size:13px;font-weight:700;padding:9px 16px;border-radius:6px;cursor:pointer}
.t-pf-proj-reveal-btn:hover{background:#2c2c86}
.t-pf-proj-reveal{margin-top:18px;background:#e8f5e9;border:1px solid #a5d6a7;border-left:6px solid #2e7d32;border-radius:8px;padding:18px 22px;font-size:15px;line-height:1.55;color:#1b5e20}
.t-pf-proj-reveal-correct{font-family:system-ui;font-size:18px;font-weight:700;margin-bottom:8px}
.t-pf-proj-reveal-explain{font-family:Georgia,serif;font-size:15px;color:#1b5e20}
.t-pf-proj-nav{display:flex;justify-content:space-between;margin-top:30px;gap:14px}
.t-pf-proj-nav-btn{flex:1;background:#fff;border:2px solid var(--navy);color:var(--navy);font-family:system-ui;font-size:15px;font-weight:700;padding:14px 22px;border-radius:8px;cursor:pointer}
.t-pf-proj-nav-btn:hover:not(:disabled){background:var(--navy);color:#fff}
.t-pf-proj-nav-btn:disabled{opacity:.35;cursor:not-allowed}
.t-pf-proj-nav-next{background:var(--navy);color:#fff}
.t-pf-proj-nav-next:hover:not(:disabled){background:#003a73}

@media (max-width:900px){
  .t-pf-proj-stem{font-size:22px}
  .t-pf-proj-opt-label{font-size:15px}
  .t-pf-proj-opt-count{font-size:24px;min-width:50px}
  .t-pf-proj-opt-bar{margin-left:54px;margin-right:60px}
}

/* Boot splash — shown for the brief window between page load and auth
   resolution. Replaces the prior double-flash (vault overlay + empty
   welcome page) the user reported on 2026-06-01. */
.t-pf-boot-splash{position:fixed;inset:0;background:#282875;color:#fff;display:flex;align-items:center;justify-content:center;z-index:5000;animation:t-pf-boot-fadein .15s ease-out}
.t-pf-boot-splash-inner{text-align:center;font-family:Georgia,serif}
.t-pf-boot-splash-brand{font-size:48px;font-weight:700;letter-spacing:6px;margin-bottom:14px}
.t-pf-boot-splash-sub{font-family:system-ui;font-size:13px;color:#cfe0f5;letter-spacing:1.5px;text-transform:uppercase}
.t-pf-boot-splash-sub::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#cfe0f5;margin-left:8px;animation:t-pf-boot-pulse 1.2s ease-in-out infinite}
@keyframes t-pf-boot-fadein{from{opacity:0}to{opacity:1}}
@keyframes t-pf-boot-pulse{0%,100%{opacity:0.3}50%{opacity:1}}

/* ---- Dual-track redesign: phase ribbon, judgement step, comparison ---- */
.wiz-phase-ribbon{display:flex;gap:8px;max-width:1060px;margin:0 auto 8px;padding:0 24px;flex-wrap:wrap}
.wiz-phase{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--ts);
  padding:4px 12px;border-radius:14px;border:1px solid var(--bl);background:#fff}
.wiz-phase-n{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;
  background:var(--bl);color:var(--navy);font-size:10px;font-weight:700}
.wiz-phase.current{border-color:var(--edps-blue);background:#eef4fb;color:var(--edps-blue)}
.wiz-phase.current .wiz-phase-n{background:var(--edps-blue);color:#fff}
.wiz-phase.done{color:#1d7a3f;border-color:#bfe3cb;background:#f2faf4}
.wiz-phase.done .wiz-phase-n{background:#1d7a3f;color:#fff}
.wiz-judge-h{font-size:14px;margin:20px 0 4px;color:var(--navy);font-family:Georgia,serif}
/* Judgement scales: all four options on one row (equal width, stretch to the
   tallest so the descriptions fit). Each option becomes a vertical card —
   radio + title on top, descriptor below. Wraps to a grid only on phones. */
.wiz-options-row{flex-direction:row;flex-wrap:nowrap;gap:8px;align-items:stretch}
.wiz-options-row .wiz-option-compact{flex:1 1 0;min-width:0;flex-direction:column;align-items:flex-start;gap:7px;padding:12px;font-size:13px}
.wiz-options-row .wiz-option-compact .wiz-option-radio{margin-top:0}
@media (max-width:720px){
  .wiz-options-row{flex-wrap:wrap}
  .wiz-options-row .wiz-option-compact{flex:1 1 140px}
}
.wiz-option:disabled{cursor:default;opacity:.75}
.wiz-compare{display:flex;gap:16px;flex-wrap:wrap;margin:16px 0 6px}
.wiz-compare-col{flex:1 1 320px;border:1px solid var(--bl);border-radius:8px;padding:14px 16px;background:#fafbfd}
.wiz-compare-head{font-size:13px;font-weight:700;color:var(--navy);margin-bottom:10px}
.wiz-judge-quote{margin:10px 0 0;padding:10px 14px;border-left:3px solid var(--bl);background:#fff;
  font-size:12.5px;color:var(--ts);line-height:1.55;border-radius:0 6px 6px 0}
.wiz-match-banner{margin-top:14px;padding:12px 16px;border-radius:6px;font-size:13px;line-height:1.5}
.wiz-match-banner.ok{background:#f2faf4;border:1px solid #bfe3cb;color:#1d5c33}
.wiz-match-banner.diff{background:#fff8e1;border:1px solid #ffd54f;color:#6d4c00}
.wiz-doctrine-notes{margin:0 0 6px;padding-left:0;list-style:none}
.wiz-doctrine-notes li{font-size:12.5px;line-height:1.55;padding:6px 10px 6px 30px;position:relative;border-radius:5px;margin-bottom:4px}
.wiz-doctrine-notes li.up{background:#fdf3f2;color:#7a2e22}
.wiz-doctrine-notes li.up::before{content:'\2191';position:absolute;left:10px;font-weight:700;color:#b23b2e}
.wiz-doctrine-notes li.down{background:#f2faf4;color:#1d5c33}
.wiz-doctrine-notes li.down::before{content:'\2193';position:absolute;left:10px;font-weight:700;color:#1d7a3f}
/* Lock-judgement button when the form is incomplete: looks muted but stays
   clickable so the click can explain exactly what is missing. */
.btn-soft-disabled{opacity:.55}

/* ---- Account menu on the 👤 user chip (top bar) ---- */
.t-pf-user{position:relative}
.t-pf-user-btn{cursor:pointer;background:#fff;border:1px solid var(--bl);border-radius:6px;padding:6px 10px;
  display:inline-flex;align-items:center;gap:6px;font:inherit;color:inherit;box-shadow:0 1px 2px rgba(16,42,67,.06)}
.t-pf-user-btn:hover{border-color:var(--navy);background:#f3f8ff}
.t-pf-user-acct{color:var(--ts);white-space:nowrap;font-weight:600}
.t-pf-side-whoami{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 12px;font-size:12.5px;color:var(--ts);cursor:default}
.t-pf-side-whoami .t-pf-side-icon{flex:0 0 16px;font-size:12.5px}
.t-pf-side-whoami .t-pf-side-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Georgia,serif;color:var(--navy)}
.t-pf-user-caret{font-size:9px;opacity:.65}
.t-pf-account-backdrop{position:fixed;inset:0;background:transparent;z-index:1190}
.t-pf-account-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:1200;min-width:280px;background:#fff;
  border:1px solid var(--bl);border-radius:8px;box-shadow:0 8px 28px rgba(16,42,67,.18);padding:6px;text-align:left}
.t-pf-account-menu-head{font-size:11.5px;color:var(--ts);padding:7px 10px 8px;border-bottom:1px solid var(--bl);margin-bottom:5px}
.t-pf-account-menu-head code{font-size:11.5px;color:var(--navy);font-weight:700}
.t-pf-account-menu-item{display:block;width:100%;text-align:left;background:none;border:0;border-radius:5px;
  padding:8px 10px;font:inherit;font-size:13px;color:var(--navy);cursor:pointer}
.t-pf-account-menu-item:hover{background:#f3f8ff}
.t-pf-account-menu-logout{color:#a23b2e}
.t-pf-account-menu-logout:hover{background:#fdf3f2}

/* ---- Reference library rendered in-page (Resources section) ---- */
.t-ref-inline{border:1px solid var(--bl);border-radius:8px;background:#fff;overflow:hidden;margin-top:6px}
.t-ref-inline .t-ref-content{padding:16px 20px;max-height:none;overflow:visible}
/* Active reference-library subsection in the sidebar children list */
.t-pf-side a.t-pf-side-child-active{color:var(--navy);font-weight:600;background:#eef1fc;border-radius:5px}
.t-pf-side a.t-pf-side-child-active::before{background:var(--accent)}

/* "Your next step" hero CTA on the Welcome page */
.t-pf-next{margin:18px 0 10px;padding:16px 20px;background:#eef4fb;border:1px solid #c5d9f0;border-radius:8px;
  display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.t-pf-next-btn{font-size:15px;padding:12px 22px}
.t-pf-next-sub{margin:0;font-size:12.5px;color:var(--ts);flex:1;min-width:220px}

/* ---- Journey map (Welcome) + locked sidebar stages ---- */
.t-pf-journey{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0 6px}
.t-pf-stage{flex:1 1 240px;border:1px solid var(--bl);border-radius:8px;background:#fff;padding:14px 16px;position:relative;
  display:flex;flex-direction:column;gap:8px;transition:border-color .12s, box-shadow .12s}
.t-pf-stage[role="button"]{cursor:pointer}
.t-pf-stage[role="button"]:hover{border-color:var(--edps-blue);box-shadow:0 2px 10px rgba(40,40,117,.10)}
.t-pf-stage.current{border-color:var(--edps-blue);box-shadow:0 0 0 1px var(--edps-blue)}
.t-pf-stage.locked{background:#f7f8fd;color:var(--ts)}
.t-pf-stage.locked .t-pf-stage-head{color:var(--ts)}
.t-pf-stage-head{display:flex;align-items:center;gap:8px;font-family:Georgia,serif;font-weight:700;font-size:14.5px;color:var(--navy)}
.t-pf-stage-n{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;
  background:var(--edps-blue);color:#fff;font-size:12px;font-weight:700;font-family:system-ui;flex-shrink:0}
.t-pf-stage.locked .t-pf-stage-n{background:#b6b8cf}
.t-pf-stage.done .t-pf-stage-n{background:#1d7a3f}
.t-pf-stage-desc{margin:0;font-size:12px;line-height:1.55;color:var(--ts)}
.t-pf-stage-items{margin:0;padding-left:16px;font-size:12px;line-height:1.7;color:var(--navy)}
.t-pf-stage.locked .t-pf-stage-items{color:var(--ts)}
.t-pf-stage-tick{color:#1d7a3f;font-weight:700}
.t-pf-stage-badge{align-self:flex-start;margin-top:auto;font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
  background:var(--edps-blue);color:#fff;border-radius:10px;padding:3px 10px}
.t-pf-stage-lock{margin-top:auto;font-size:11.5px;color:var(--ts);font-style:italic}
.t-pf-side-group-locked{color:var(--ts)}
.t-pf-side-lockedrow{padding:4px 10px 8px 28px;font-size:11px;color:var(--ts);font-style:italic}

/* ---- IA restructure: stage group links, step cards, step nav ---- */
.t-pf-side a.t-pf-side-grouplink{display:flex;align-items:center;gap:8px;font-size:11px;color:#4a4b86;text-transform:uppercase;letter-spacing:1px;
  font-weight:800;padding:6px 14px;margin-top:10px;background:#eef1fc;border:1px solid #cdd0ee;border-radius:6px;text-decoration:none;cursor:pointer}
.t-pf-side a.t-pf-side-grouplink::before{display:none}
.t-pf-side a.t-pf-side-grouplink:hover{background:#e3e7fb;color:var(--navy)}
.t-pf-side a.t-pf-side-grouplink.active{background:#e3e7fb;color:var(--navy);border-color:var(--accent)}
.t-pf-side-grouplink .t-pf-side-prog{margin-left:auto}
.t-pf-steps{display:flex;flex-direction:column;gap:12px;margin:16px 0}
.t-pf-stepcard{border:1px solid var(--bl);border-radius:8px;background:#fff;padding:14px 16px;display:flex;flex-direction:column;gap:6px;
  transition:border-color .12s, box-shadow .12s}
.t-pf-stepcard[role="button"]{cursor:pointer}
.t-pf-stepcard[role="button"]:hover{border-color:var(--edps-blue);box-shadow:0 2px 10px rgba(40,40,117,.10)}
.t-pf-stepcard.locked{background:#f7f8fd;color:var(--ts)}
.t-pf-stepcard.locked .t-pf-stage-head{color:var(--ts)}
.t-pf-stepcard.locked .t-pf-stage-n{background:#b6b8cf}
.t-pf-stepcard .t-pf-task-time{margin-left:auto}
.t-pf-stepcard-state{font-size:12px;color:var(--ts)}
/* Facilitator-only badge: this card is locked for students but the facilitator can click through to preview it. */
.t-pf-stepcard-facpreview{color:#9a3412;font-weight:700}
/* Side-by-side comparison: initial Scenario 2 assessment vs the Inject 1 re-assessment. */
.t-s2cmp-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:13px}
.t-s2cmp-table th,.t-s2cmp-table td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--bl);vertical-align:top}
.t-s2cmp-table thead th{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ts);font-weight:700}
.t-s2cmp-table tbody td{font-weight:600}
.t-s2cmp-lbl{color:var(--ts);font-weight:600;white-space:nowrap}
.t-s2cmp-table tr.changed td{background:#fff7ed}
.t-s2cmp-tag{margin-left:7px;font-size:9.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#9a3412;background:#ffedd5;border:1px solid #fed7aa;border-radius:4px;padding:1px 5px;vertical-align:middle}
.t-s2cmp-rationale{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px}
.t-s2cmp-rationale > div{flex:1;min-width:230px}
.t-s2cmp-rationale p{font-size:12.5px;color:var(--ts);margin:3px 0 0;line-height:1.5}
.t-pf-stepnav{display:flex;justify-content:space-between;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid var(--bl);flex-wrap:wrap}
.t-pf-stepnav a{font-size:13px;color:var(--edps-blue);text-decoration:none;font-weight:600}
.t-pf-stepnav a:hover{text-decoration:underline}

/* ============ Embedded-in-portal screens (sidebar stays visible) ============
   The assessment wizard (.app) and the pre-work briefing (.t-pw) now render
   INSIDE the portal's right-hand column (.t-pf-main) instead of replacing the
   whole page, so the navigation sidebar + persistent header stay visible.
   These overrides (scoped under .t-pf-main, so standalone use is unaffected)
   drop their full-viewport sizing and demote their own headers/sticky bars —
   the portal header (z-index 60) is the single sticky chrome. */
.t-pf-main .app,
.t-pf-main .t-pw{min-height:0;max-width:100%;margin:0;background:transparent}
/* The wizard's production title bar duplicates the portal branding; keep only
   its toolbar (PDF report / About menu) as a slim right-aligned strip. */
.t-pf-main .app > header{border-radius:0;justify-content:flex-end;padding:10px 0;border-bottom:1px solid var(--bl)}
.t-pf-main .app > header h1,
.t-pf-main .app > header .sub{display:none}
/* Inner sticky bars become static so they never overlap the portal header. */
.t-pf-main .t-pw-header,
.t-pf-main .wiz-progress{position:static;top:auto;z-index:auto}
/* Let the self-centering inner shells fill the (narrower) column. */
.t-pf-main .wiz-shell,
.t-pf-main .wiz-progress-inner,
.t-pf-main .t-pw-main,
.t-pf-main .t-pw-header-inner{max-width:100%}
