  @font-face { font-family:"DM Sans"; src:url(fonts/dm-sans.woff2) format("woff2"); font-weight:400 700; font-style:normal; font-display:swap; }
  @font-face { font-family:"Newsreader"; src:url(fonts/newsreader.woff2) format("woff2"); font-weight:400 500; font-style:normal; font-display:swap; }
  @font-face { font-family:"Newsreader"; src:url(fonts/newsreader-italic.woff2) format("woff2"); font-weight:400; font-style:italic; font-display:swap; }
  :root { --bg:#fff; --card:#fff; --band:#eef2f7; --navy:#142437; --ink:#0f1c2c; --mute:#3e4a58; --line:rgba(20,36,55,.12); --ctl:#8a94a6; --acc:#5b2ee5; --acc2:#4520c0; --accbg:#eee9ff;
          --serif:Newsreader, Georgia, "Times New Roman", serif;
          --red:#b42318; --redbg:#fdeceb; --green:#067647; --greenbg:#e7f6ee; --amber:#93370d; --amberbg:#fdf1e0; --blue:#175cd3; --bluebg:#e6f0fe; --grey:#475467; --greybg:#eef2f7; }
  * { box-sizing: border-box; }
  body { margin:0; background:var(--bg); color:var(--ink); font:16px/1.6 "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
  header.top { background:var(--band); border-bottom:1px solid var(--line); padding:16px 24px 12px; }
  .wrap { max-width:1180px; margin:0 auto; padding:0 24px; }
  header.top .wrap { padding:0; }
  h1, h2, h3 { font-family:var(--serif); font-weight:400; letter-spacing:-.01em; color:var(--ink); }
  h1 { font-size:30px; line-height:1.15; margin:0 0 6px; letter-spacing:-.02em; }
  .eyebrow { margin:0 0 8px; font-size:12px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--acc2); }
  .sub { color:var(--mute); margin:0 0 10px; }
  html { scroll-padding-top:var(--barh,0px); }
  .bar { position:sticky; top:0; z-index:5; background:rgba(255,255,255,.95); backdrop-filter:blur(4px); border-bottom:1px solid var(--line); padding:8px 24px; }
  @media (max-width:700px), (max-height:600px) { .bar { position:static; } html { scroll-padding-top:0; } }
  .bar .wrap { display:flex; gap:14px; align-items:center; flex-wrap:wrap; padding:0; }
  .prog { flex:1 1 240px; min-width:200px; }
  .prog .track { height:8px; background:var(--greybg); border-radius:99px; overflow:hidden; }
  .prog .fill { height:100%; background:var(--acc); width:0; transition:width .2s; }
  .prog .lbl { font-size:13px; color:var(--mute); margin-bottom:3px; }
  button, .btn { font:inherit; border:1px solid var(--ctl); background:#fff; color:var(--ink); padding:8px 16px; border-radius:4px; cursor:pointer; font-weight:500; }
  button:hover { border-color:var(--acc); color:var(--acc2); }
  button.primary { background:var(--acc); border-color:var(--acc); color:#fff; }
  button.primary:hover { background:var(--acc2); border-color:var(--acc2); color:#fff; }
  button:disabled { opacity:.5; cursor:not-allowed; }
  .tools { display:flex; gap:8px; flex-wrap:wrap; }
  main { padding:20px 0 60px; }
  section.sec { margin:22px 0; }
  section.sec > h2 { font-size:24px; margin:0 0 10px; }
  .card { background:var(--card); border:1px solid var(--line); border-radius:6px; padding:16px 20px; margin:0 0 10px; }
  .case { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
  .case .full { grid-column:1 / -1; }
  label.fld { display:block; font-size:13px; color:var(--mute); margin-bottom:3px; }
  input[type=text], textarea { width:100%; font:inherit; padding:7px 9px; border:1px solid var(--ctl); border-radius:8px; background:#fff; color:var(--ink); }
  textarea { min-height:54px; resize:vertical; }
  .q .qn { color:var(--mute); font-size:13px; margin-right:6px; font-variant-numeric:tabular-nums; }
  .q .qt { font-weight:600; }
  .q .row { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0 8px; }
  .q .ans { display:inline-block; position:relative; padding:7px 16px; border:1px solid var(--ctl); border-radius:4px; background:#fff; cursor:pointer; }
  .q .ans input { position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
  .q .ans.chk::before { content:'☐ ' / ''; } .q .ans.chk.on::before { content:'☑ ' / ''; }
  .q .ans.on { background:var(--accbg); border-color:var(--acc); color:var(--acc); font-weight:600; }
  .q .ans.unsure.on { background:var(--amberbg); border-color:#e5a54b; color:var(--amber); }
  .q .opts { display:flex; flex-direction:column; gap:6px; margin:10px 0 8px; }
  .q .opts .ans { text-align:left; }
  .q .meta { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:2px; }
  .chip { font-size:12px; color:var(--mute); background:var(--greybg); border-radius:99px; padding:1px 8px; }
  .help { color:var(--mute); font-size:13.5px; margin:6px 0 0; }
  details > summary { cursor:pointer; color:var(--acc); font-size:13px; }
  .note { margin-top:8px; }
  .note label { font-size:12.5px; color:var(--mute); }
  #results { scroll-margin-top:70px; }
  .grid3 { display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; align-items:start; }
  @media (max-width:980px) { .grid3 { grid-template-columns:1fr; } .case { grid-template-columns:1fr; } }
  .jur { border:1px solid var(--line); border-top:3px solid var(--acc); border-radius:6px; background:#fff; padding:14px 16px; }
  .jur h3 { margin:0; font-size:21px; font-weight:500; }
  .jur .doc { font-size:12.5px; color:var(--mute); margin-bottom:8px; }
  .badge { display:inline-block; font-size:12px; font-weight:700; padding:2px 9px; border-radius:99px; margin:2px 0 6px; }
  .k-device { background:var(--redbg); color:var(--red); } .k-notdevice { background:var(--greenbg); color:var(--green); }
  .k-review { background:var(--amberbg); color:var(--amber); } .k-ivd { background:var(--bluebg); color:var(--blue); } .k-out, .k-open { background:var(--greybg); color:var(--grey); }
  .head { font-family:var(--serif); font-weight:500; font-size:18px; margin:0 0 4px; }
  .cls { font-family:var(--serif); font-size:26px; font-weight:500; margin:6px 0 2px; }
  .clsnote { color:var(--mute); font-size:13.5px; margin:0 0 8px; }
  .jur h4 { margin:12px 0 4px; font-family:inherit; font-weight:600; font-size:12px; color:var(--acc2); text-transform:uppercase; letter-spacing:.1em; }
  .jur ul { margin:0; padding-left:18px; } .jur li { margin:3px 0; }
  .warn li { color:var(--amber); }
  .src { font-size:12px; color:var(--mute); margin-left:4px; white-space:nowrap; }
  .prov { background:var(--amberbg); border:1px solid #f0cf99; color:var(--amber); border-radius:10px; padding:8px 12px; margin:0 0 12px; font-size:14px; }
  .scope { color:var(--ink); border-left:4px solid var(--amber); margin:0 0 12px; }
  .scope h2, .scope h3 { font-size:18px; margin:0 0 4px; color:var(--amber); }
  .scope p { margin:0 0 4px; } .scope ul { margin:0; padding-left:20px; } .scope li { margin:2px 0; }
  header.top .scope { margin:10px 0 0; }
  .ninote { background:#fff; border:1px solid var(--line); border-radius:8px; padding:8px 12px; margin:10px 0; }
  .ninote h3 { margin:0 0 4px; }
  .diff { background:#fff; border:1px solid var(--line); border-left:4px solid var(--acc); border-radius:8px; padding:8px 12px; margin:10px 0; }
  .sumtable { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line); border-radius:6px; overflow:hidden; margin:0 0 14px; }
  .sumtable th, .sumtable td { text-align:left; padding:8px 12px; border-bottom:1px solid var(--line); vertical-align:top; }
  .sumtable th { background:var(--band); font-size:13px; color:var(--mute); }
  .empty { color:var(--mute); }
  footer { color:var(--mute); font-size:14px; padding:32px 0 40px; background:var(--band); border-top:1px solid var(--line); }
  footer h3 { font-size:18px; color:var(--ink); }
  .legal { border:1px solid var(--line); background:#fff; border-radius:10px; padding:8px 12px; margin:10px 0; }
  .legal summary { cursor:pointer; font-weight:600; color:var(--ink); }
  .legal h4 { font-size:14px; margin:14px 0 4px; color:var(--ink); }
  .legal p, .legal ul { margin:4px 0; } .legal ul { padding-left:20px; }
  .gate label { display:flex; gap:8px; align-items:flex-start; margin:10px 0; color:var(--ink); }
  .gate input[type=checkbox] { margin-top:4px; width:18px; height:18px; flex:none; }
  .grp { display:inline-flex; align-items:center; gap:8px; flex-wrap:wrap; } .grp .help { margin:0; }
  .toast { position:fixed; right:16px; bottom:16px; background:var(--navy); color:#fff; padding:10px 14px; border-radius:10px; opacity:0; pointer-events:none; z-index:10; }
  .toast:empty { padding:0; } .toast.show { opacity:1; }
  #toastErr { background:#b42318; }
  :focus-visible { outline:3px solid var(--navy); outline-offset:2px; }
  button.primary:focus-visible { outline-color:var(--navy); outline-offset:3px; box-shadow:0 0 0 2px #fff; }
  .q .ans:focus-within { outline:3px solid var(--navy); outline-offset:2px; }
  @page { margin:16mm 14mm; }
  @media print {
    body > *:not(#printReport) { display:none !important; }
    body { background:#fff; color:#000; }
    #printReport { display:block !important; font:10.5pt/1.45 Georgia, "Times New Roman", serif; color:#000; }
    #printReport h1 { font-size:18pt; line-height:1.2; margin:0 0 6pt; }
    #printReport h2 { font-size:13pt; margin:16pt 0 4pt; border-bottom:1px solid #000; padding-bottom:2pt; break-after:avoid; }
    #printReport h3 { font-size:11pt; margin:10pt 0 3pt; break-after:avoid; }
    #printReport p, #printReport ul, #printReport dl { margin:3pt 0; }
    #printReport ul { padding-left:16pt; } #printReport li { margin:2pt 0; }
    #printReport dl { display:grid; grid-template-columns:max-content 1fr; gap:2pt 10pt; }
    #printReport dt { font-weight:700; } #printReport dd { margin:0; }
    #printReport .fp { font:9pt/1.3 ui-monospace, Menlo, Consolas, monospace; overflow-wrap:anywhere; }
    #printReport .box { border:1px solid #000; padding:5pt 8pt; margin:8pt 0; }
    #printReport .box h2 { margin-top:0; }
    #printReport table { width:100%; border-collapse:collapse; margin:4pt 0; }
    #printReport th, #printReport td { border:1px solid #666; padding:3pt 6pt; text-align:left; vertical-align:top; }
    #printReport tr, #printReport table { break-inside:avoid; }
    #printReport li, #printReport .qa, #printReport .end { break-inside:avoid; }
    #printReport .pj > h2 + p, #printReport .pj > h2 + p + p { break-after:avoid; }
    #printReport .src { color:#000; font-size:9pt; white-space:normal; }
    #printReport .small { font-size:9pt; }
    #printReport, #printReport * { overflow-wrap:anywhere; word-break:break-word; }
  }
  .beta { margin:0 0 10px; padding:8px 12px; background:#fdf1e0; border:1px solid #e5a54b; border-left:4px solid var(--amber); border-radius:4px; color:var(--amber); font-size:14px; }
