.pklg { --pklg-ok:#2C7A57; --pklg-bad:#A8452F; --pklg-warn:#96690C; --pklg-faint:#8B9994;
  --pklg-s1:#186A55; --pklg-s2:#6FB49B; --pklg-s3:#C9A227; --pklg-s4:#C8D2CF; --pklg-s5:#B08A6A;
  --pklg-rule:var(--theme-color, #DBE3E0); }
@media (prefers-color-scheme: dark) {
  .pklg { --pklg-ok:#63BE94; --pklg-bad:#E08A72; --pklg-warn:#D9AA4C; --pklg-faint:#748480;
    --pklg-s1:#5FC3A4; --pklg-s2:#2F7E67; --pklg-s3:#B99329; --pklg-s4:#2A3733; --pklg-s5:#8A6A50; }
}
.pklg table { border-collapse:collapse; width:100%; min-width:max-content; font-size:13px; }
.pklg th, .pklg td { padding:7px 10px; text-align:left; white-space:nowrap;
  border-top:1px solid rgba(128,128,128,.18); }
.pklg thead th { font-size:11px; letter-spacing:.04em; text-transform:uppercase;
  color:var(--pklg-faint); border-top:0; border-bottom:1px solid rgba(128,128,128,.35); }
.pklg tfoot th, .pklg tfoot td { font-weight:600; border-top:2px solid rgba(128,128,128,.35); }
.pklg .n { font-variant-numeric:tabular-nums; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.pklg .ok { color:var(--pklg-ok); } .pklg .bad { color:var(--pklg-bad); }
.pklg .mut, .pklg .nil { color:var(--pklg-faint); }
.pklg .warn { color:var(--pklg-warn); border-bottom:1px dotted currentColor; cursor:help; }
.pklg .sl { color:var(--pklg-faint); padding:0 1px; }
.pklg .bar { display:flex; height:6px; border-radius:2px; overflow:hidden;
  background:rgba(128,128,128,.15); min-width:110px; }
.pklg .bar span { display:block; height:100%; }
.pklg .s1{background:var(--pklg-s1)} .pklg .s2{background:var(--pklg-s2)}
.pklg .s3{background:var(--pklg-s3)} .pklg .s4{background:var(--pklg-s4)}
.pklg .s5{background:var(--pklg-s5)}
.pklg .mixnum { display:block; margin-top:3px; font-size:11px; color:var(--pklg-faint);
  font-variant-numeric:tabular-nums; }
.pklg .scroll { overflow-x:auto; }
.pklg details { border-top:1px solid rgba(128,128,128,.18); padding:2px 0; }
.pklg details[open] { padding-bottom:10px; }
.pklg summary { cursor:pointer; padding:7px 2px; font-size:13px; list-style:none;
  display:flex; gap:10px; align-items:baseline; flex-wrap:wrap; }
.pklg summary::-webkit-details-marker { display:none; }
.pklg .csechead { margin:18px 0 6px; font-size:13px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--pklg-faint); font-weight:600; }
.pklg .csechead .csub { text-transform:none; letter-spacing:0; font-weight:400; font-size:12px; }
.pklg .cstats { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px;
  margin-bottom:14px; }
.pklg .cbox { border:1px solid rgba(128,128,128,.22); border-radius:6px; padding:10px 12px; }
.pklg .cbox h4 { margin:0 0 6px; font-size:12px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--pklg-faint); }
.pklg .cnum { display:flex; align-items:baseline; gap:7px; }
.pklg .cnum b { font-size:20px; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.pklg .cnum b.ok { color:var(--pklg-ok); }
.pklg .cnum span { font-size:10.5px; color:var(--pklg-faint); }
.pklg .cbox table { width:100%; margin-top:8px; font-size:11px; border-collapse:collapse; }
.pklg .cbox td { padding:3px 0; vertical-align:top; border-top:1px solid rgba(128,128,128,.14); }
.pklg .cbox td:first-child { color:var(--pklg-faint); white-space:nowrap; padding-right:8px; }
.pklg .cbox table.csp { margin-top:0; }
.pklg .cbox table.csp td.n { text-align:right; font-variant-numeric:tabular-nums; padding-left:8px; }
.pklg .cbox table.csp i { font-style:normal; color:var(--pklg-faint); }
.pklg .chip { display:inline-block; padding:1px 6px; margin:0 3px 2px 0; border-radius:9px;
  font-size:10px; line-height:1.5; white-space:nowrap; background:rgba(128,128,128,.12); }
.pklg .chip.ok { color:var(--pklg-ok); } .pklg .chip.bad { color:var(--pklg-bad); }
.pklg .chip.warn { color:var(--pklg-warn); } .pklg .chip.mut { color:var(--pklg-faint); }
.pklg td.notes { white-space:normal; min-width:170px; }
/* The literal arrow, not a CSS hex escape. This stylesheet is a plain Python string, so
   a backslash followed by digits is read as an OCTAL escape at parse time: the page
   shipped a NAK control byte and the browser drew that instead of an arrow. */
.pklg summary::before { content:"▸"; color:var(--pklg-faint); display:inline-block;
  width:1em; transition:transform .12s ease; }
.pklg details[open] > summary::before { transform:rotate(90deg); }
.pklg summary .lbl { font-weight:600; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }
.pklg .badge { font-size:10px; letter-spacing:.05em; text-transform:uppercase;
  padding:1px 6px; border-radius:9px; border:1px solid currentColor; }
.pklg .b-running { color:var(--pklg-warn); }
.pklg .b-finished { color:var(--pklg-ok); }
.pklg .b-interrupted { color:var(--pklg-bad); }
.pklg .b-never_run { color:var(--pklg-faint); }
.pklg summary .meta { color:var(--pklg-faint); font-size:12px;
  font-variant-numeric:tabular-nums; }
.pklg .tiles { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:10px; margin:14px 0 22px; }
.pklg .tile { border:1px solid rgba(128,128,128,.25); border-radius:4px; padding:10px 12px; }
.pklg .tile b { display:block; font-size:20px; font-variant-numeric:tabular-nums; }
.pklg .tile i { display:block; font-style:normal; font-size:11px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--pklg-faint); }
.pklg .tile em { font-style:normal; font-size:12px; color:var(--pklg-faint); }
