:root{
  --bg:#0f172a; --panel:#ffffff; --ink:#0f172a; --muted:#64748b; --line:#e2e8f0;
  --accent:#4338ca; --accent2:#6d28d9; --warn:#b45309; --warnbg:#fffbeb;
  --high:#dc2626; --med:#d97706; --low:#16a34a; --chip:#eef2ff;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:#f8fafc}
.wrap{max-width:1080px;margin:0 auto;padding:0 18px}
header{background:linear-gradient(120deg,var(--bg),#312e81);color:#fff;padding:22px 0}
header h1{margin:0;font-size:26px}
header .sub{margin:4px 0 0;color:#c7d2fe;font-size:14px}
.disclaimer{background:var(--warnbg);border:1px solid #fde68a;color:var(--warn);padding:10px 14px;border-radius:8px;margin:16px auto;font-size:13.5px}
.tabs{display:flex;gap:6px;margin:8px auto 0;flex-wrap:wrap}
.tabs button{background:#fff;border:1px solid var(--line);border-bottom:none;padding:10px 16px;border-radius:10px 10px 0 0;cursor:pointer;font-size:14px;font-weight:600;color:var(--muted)}
.tabs button.active{color:var(--accent);border-color:var(--accent);border-bottom:2px solid #fff;margin-bottom:-1px;background:#fff}
main{background:#fff;border:1px solid var(--line);border-radius:0 12px 12px 12px;padding:18px;margin-bottom:24px;min-height:60vh}
.tab{display:none}.tab.active{display:block}
.toolbar{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.toolbar input[type=search]{flex:1;min-width:220px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;font-size:15px}
.toolbar select,.row select,.grid2 select,.grid2 input,.row input{padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:14px}
.subtabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.subtabs button{background:var(--chip);border:none;padding:7px 13px;border-radius:999px;cursor:pointer;font-size:13px;font-weight:600;color:var(--accent)}
.subtabs button.active{background:var(--accent);color:#fff}
.item{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.item h3{margin:0 0 4px;font-size:15.5px}
.item .meta{font-size:12.5px;color:var(--muted);margin-bottom:6px}
.item p{margin:5px 0}
.chip{display:inline-block;background:var(--chip);color:var(--accent);border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;margin:0 4px 4px 0}
.chip.j{background:#ecfeff;color:#0e7490}
.chip.law{background:#eef2ff;color:#4338ca}.chip.guide{background:#f5f3ff;color:#6d28d9}
.sev-catastrophic{color:#7f1d1d;font-weight:700}.sev-high{color:var(--high);font-weight:700}
.sev-moderate{color:var(--med);font-weight:600}.sev-low{color:var(--low);font-weight:600}
a{color:var(--accent)}
.card{background:#f8fafc;border:1px solid var(--line);border-radius:11px;padding:14px;margin-bottom:14px}
.row{display:flex;gap:14px;align-items:end;flex-wrap:wrap;margin-bottom:8px}
.row label,.grid2 label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;color:var(--muted)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:640px){.grid2{grid-template-columns:1fr}}
button{font:inherit}
.card button,#cl-print,#cl-reset{background:var(--accent);color:#fff;border:none;padding:9px 15px;border-radius:9px;cursor:pointer;font-weight:600}
button.ghost{background:#fff;color:var(--accent);border:1px solid var(--accent)}
.badge{background:#dcfce7;color:#166534;border-radius:999px;padding:4px 11px;font-size:13px;font-weight:700}
.cl-cat{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:14px 0 6px}
.cl-item{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin-bottom:7px}
.cl-item input{margin-top:3px;width:18px;height:18px}
.cl-item .body{flex:1}
.cl-item .basis{font-size:12px;color:var(--muted)}
.cl-item.done{background:#f0fdf4;border-color:#bbf7d0}
.result{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
@media(max-width:640px){.result{grid-template-columns:1fr}}
.stat{background:#f8fafc;border:1px solid var(--line);border-radius:11px;padding:14px;text-align:center}
.stat .n{font-size:30px;font-weight:800;color:var(--accent)}
.stat.safe .n{color:#166534}.stat .l{font-size:12.5px;color:var(--muted);margin-top:3px}
.note{font-size:13px;color:var(--muted);background:#f1f5f9;border-radius:9px;padding:10px 12px}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}
tr.due td{background:#fef2f2}tr.watch td{background:#fffbeb}
.pill{border-radius:999px;padding:2px 9px;font-size:12px;font-weight:700}
.pill.current{background:#dcfce7;color:#166534}.pill.watch{background:#fef3c7;color:#92400e}.pill.due{background:#fee2e2;color:#991b1b}
footer{color:var(--muted);font-size:13px;padding-bottom:30px}
@media print{header,.tabs,.subtabs,.toolbar,.no-print,footer,.disclaimer,.persona{display:none}main{border:none}}

/* ---- level gating ---- */
body[data-level="1"] .lvl2,body[data-level="1"] .lvl3,body[data-level="1"] .lvl4{display:none!important}
body[data-level="2"] .lvl3,body[data-level="2"] .lvl4{display:none!important}
body[data-level="3"] .lvl4{display:none!important}

/* ---- persona bar ---- */
.persona{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px}
.persona-label{font-weight:700;color:var(--muted);font-size:13px}
.persona-btns{display:flex;gap:6px;flex-wrap:wrap}
.persona-btns button{background:#fff;border:1px solid var(--line);padding:7px 12px;border-radius:999px;cursor:pointer;font-size:13px;font-weight:600;color:var(--muted)}
.persona-btns button.active{background:var(--accent2);border-color:var(--accent2);color:#fff}
.persona-framing{flex-basis:100%;font-size:13px;color:var(--muted);font-style:italic}
.lead{font-size:15.5px;color:#334155;margin:2px 0 16px}

/* ---- guide ---- */
.gphase{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--accent2);font-weight:700;margin:18px 0 8px;border-top:1px solid var(--line);padding-top:14px}
.gsec{border:1px solid var(--line);border-left:4px solid var(--accent2);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.gsec h3{margin:0 0 8px;font-size:16.5px}
.gsec p{margin:7px 0}
.gsec .detail{background:#f8fafc;border-radius:8px;padding:8px 12px;margin-top:8px}
.gsec .advanced{background:#f5f3ff;border-radius:8px;padding:8px 12px;margin-top:8px;font-size:14px}
.gsec .advanced::before{content:"Officer / SAG depth";display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent2);font-weight:700;margin-bottom:4px}
.gsec .detail::before{content:"In practice";display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;margin-bottom:4px}
.gsec li{margin:2px 0}
.gsec .rel{margin-top:8px}

/* ---- relationship map ---- */
.map-stage{border:1px solid var(--line);border-radius:12px;background:radial-gradient(circle at 50% 40%,#fbfbff,#f1f5f9);overflow:hidden}
#graph{width:100%;height:auto;display:block;cursor:grab}
#graph .edge{stroke:#cbd5e1;stroke-width:1.2}
#graph .edge.liable{stroke:#ef4444;stroke-width:1.8;stroke-dasharray:4 3}
#graph .node{cursor:pointer}
#graph .node circle{stroke:#fff;stroke-width:1.5}
#graph .node text{font-size:10.5px;fill:#0f172a;pointer-events:none}
#graph .node.dim{opacity:.18}
#graph .edge.dim{opacity:.06}
.map-legend{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:10px;font-size:12.5px}
.map-legend span{display:inline-flex;align-items:center;gap:5px}
.map-legend i{width:12px;height:12px;border-radius:50%;display:inline-block}

/* ---- event advisor ---- */
.advq{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.advq-h{font-weight:700;font-size:15px;margin-bottom:2px}
.advq-help{font-size:12.5px;color:var(--muted);margin-bottom:8px}
.advq-opts{display:flex;gap:8px;flex-wrap:wrap}
.advq-opts label{display:inline-flex;align-items:center;gap:6px;background:#f8fafc;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13.5px;cursor:pointer}
.advq-opts input{accent-color:var(--accent)}
.adv-cat{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent2);font-weight:700;margin:16px 0 8px;border-top:1px solid var(--line);padding-top:12px}
.flags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.flag{background:#fff7ed;border:1px solid #fed7aa;color:var(--warn);border-radius:8px;padding:7px 12px;font-size:13.5px;font-weight:600}

/* ---- medical ---- */
.modwrap{margin-top:12px}
.modchk{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:14px}
.modchk .basis{color:var(--muted);font-size:12.5px}
.stat.med-low .n{color:#166534}.stat.med-med .n{color:#b45309}
.stat.med-high .n{color:#c2410c}.stat.med-vhigh .n{color:#b91c1c}
.restab{width:auto;margin:8px 0}
.restab td{border-bottom:1px solid var(--line);padding:6px 18px 6px 0}
.restab td:last-child{text-align:right;color:var(--accent)}

/* ---- planning timeline ---- */
.mile{display:flex;gap:14px;border-left:3px solid var(--accent);padding:8px 0 8px 14px;margin-left:6px}
.mile.past{border-color:var(--line);opacity:.6}
.mile-d{flex:0 0 150px;font-size:13px;font-weight:600;color:var(--ink)}
.mile-rel{display:block;font-weight:400;color:var(--muted);font-size:12px}
.mile-b{flex:1}
.mile-b strong{font-size:15px}
@media(max-width:560px){.mile{flex-direction:column;gap:2px}.mile-d{flex-basis:auto}}
#report-content ul{margin:6px 0;padding-left:20px}
#report-content li{margin:3px 0}

/* ---- accessibility ---- */
.skip{position:absolute;left:-999px;top:0;background:var(--accent);color:#fff;padding:8px 14px;border-radius:0 0 8px 0;z-index:100}
.skip:focus{left:0}
:focus-visible{outline:3px solid var(--accent2);outline-offset:2px}

/* ---- grouped nav ---- */
.tabgroup{display:flex;gap:6px;flex-wrap:wrap;align-items:center;flex-basis:100%;margin-bottom:2px}
.tabgroup-l{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-right:4px}

/* ---- examples ---- */
.examples{margin-bottom:10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.exbtn{background:var(--chip);border:1px solid var(--line);color:var(--accent);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:600;cursor:pointer}
.exbtn:hover{background:var(--accent);color:#fff}

/* ---- risk builder ---- */
.rarow{border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.rarow-h{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.rarow-h input{flex:1;font-weight:700;font-size:15px;padding:7px 10px;border:1px solid var(--line);border-radius:8px}
.rarm{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;border-radius:8px;width:32px;height:32px;cursor:pointer;font-weight:700}
.ralbl{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:600;color:var(--muted);margin:6px 0}
.ralbl input,.ralbl textarea,.ralbl select{font:inherit;font-weight:400;color:var(--ink);padding:7px 9px;border:1px solid var(--line);border-radius:8px}
.rascore{margin:8px 0;font-size:13px;font-weight:600;color:var(--muted)}
.rascore select{padding:5px 6px;border:1px solid var(--line);border-radius:7px;margin:0 2px}
.rb{display:inline-block;border-radius:6px;padding:2px 9px;font-weight:700;color:#fff;margin-left:4px}
.rb-low{background:var(--low)}.rb-med{background:var(--med)}.rb-high{background:var(--high)}
.rameta{display:flex;gap:14px;flex-wrap:wrap}
.rameta .ralbl{flex:1;min-width:160px}

/* ---- feedback ---- */
.linkbtn{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;text-decoration:underline;padding:0}
#fb-form{margin-top:10px;max-width:520px}
#fb-form textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font:inherit}
#fb-send{background:var(--accent);color:#fff;border:none;padding:8px 16px;border-radius:9px;font-weight:600;cursor:pointer}
@media print{.skip,.tabgroup-l,.examples,.linkbtn,#fb-form{display:none}}
