/* CRYPTAGION — pyca/cryptography scan explorer (shared by EN + FR pages).
   Family-class colours match the homepage "Discover" scene (js/scenes.js):
   q quantum-vulnerable #FF6B5B · w classically weak #FFB86B · o lower concern #3EE7FF.
   On light backgrounds they are used for dots/bars only, with a dark outline. */
.pyx-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#pyx{min-width:0}
.pyx-msg{background:var(--warm);border:1px solid var(--line);border-radius:8px;padding:16px 18px;color:var(--navy)}
.pyx-err{border-left:4px solid var(--accent)}
.pyx-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:baseline;box-shadow:0 0 0 1px rgba(11,37,69,.35);flex:none}
.pyx-q{background:#FF6B5B}.pyx-w{background:#FFB86B}.pyx-o{background:#3EE7FF}

/* stats */
.pyx-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:0 0 20px;padding:0}
.pyx-stat{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff;display:flex;flex-direction:column-reverse;justify-content:flex-end}
.pyx-stat dd{margin:0;font-size:26px;font-weight:700;line-height:1.15;color:var(--navy);font-variant-numeric:tabular-nums}
.pyx-stat dt{font-size:13px;color:var(--slate);line-height:1.35;margin-top:2px}
.pyx-stat.big{background:var(--navy);border-color:var(--navy)}
.pyx-stat.big dd{color:#fff}.pyx-stat.big dt{color:var(--warm)}

/* controls */
.pyx-controls{border:1px solid var(--line);border-radius:10px;padding:16px 18px;background:var(--warm)}
.pyx-row{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;align-items:start;margin:0 0 12px}
.pyx-row:last-child{margin-bottom:0}
.pyx-lab{font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--slate);padding-top:7px}
.pyx-group{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.pyx-help{margin:-6px 0 12px 164px;font-size:13px;color:var(--slate)}
.pyx-seg,.pyx-chip,.pyx-tab,.pyx-reset,.pyx-more,.pyx-fmore{font:inherit;font-size:14px;line-height:1.3;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:20px;padding:6px 12px;min-height:34px;display:inline-flex;align-items:center}
.pyx-seg span,.pyx-chip span{margin-left:4px;color:var(--slate);font-variant-numeric:tabular-nums}
.pyx-seg[aria-pressed=true],.pyx-chip[aria-pressed=true],.pyx-tab[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:#fff}
.pyx-seg[aria-pressed=true] span,.pyx-chip[aria-pressed=true] span{color:var(--warm)}
.pyx-chip.pyx-zero{opacity:.5}
.pyx-chip-all{font-weight:600}
button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.pyx-sbox{display:flex;gap:8px;flex-wrap:wrap;min-width:0}
.pyx-sbox input{flex:1 1 220px;min-width:0;font:inherit;font-size:15px;padding:7px 12px;border:1px solid #b9b2a3;border-radius:6px;background:#fff;color:var(--navy)}
.pyx-reset{border-radius:6px}
.pyx-count{margin:16px 0 12px;font-size:16px;font-weight:600;color:var(--navy)}

/* layout */
.pyx-grid{display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px;align-items:start}
.pyx-chart{background:var(--navy);color:#E8F1FF;border-radius:10px;padding:16px 16px 12px;position:sticky;top:84px}
.pyx-chart h3{margin:0 0 10px;font-size:14px;letter-spacing:.6px;text-transform:uppercase;color:var(--warm)}
.pyx-bars ul{list-style:none;margin:0;padding:0}
.pyx-bars li{display:grid;grid-template-columns:72px 1fr 44px;gap:8px;align-items:center;font-size:13px;margin:0 0 6px;color:#E8F1FF}
.pyx-bt{height:12px;background:rgba(232,241,255,.08);border-radius:3px;overflow:hidden}
.pyx-bt i{display:block;height:100%;border-radius:3px;transition:width .35s ease}
.pyx-bn{text-align:right;font-variant-numeric:tabular-nums}
.pyx-bars .pyx-empty{color:var(--warm)}
.pyx-legend{display:flex;flex-wrap:wrap;gap:4px 12px;margin:10px 0 0;font-size:12px;color:var(--warm)}
.pyx-legend .pyx-dot{box-shadow:none}
.pyx-views{display:flex;gap:6px;margin:0 0 12px}
.pyx-tab{border-radius:6px;font-weight:600}

/* table */
.pyx-twrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;max-width:100%}
.pyx-table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.45;table-layout:fixed}
.pyx-table th:nth-child(1){width:14%}.pyx-table th:nth-child(2){width:18%}.pyx-table th:nth-child(3){width:30%}.pyx-table th:nth-child(4){width:10%}.pyx-table th:nth-child(5){width:28%}
.pyx-table td{overflow-wrap:anywhere}
.pyx-table th{text-align:left;background:var(--warm);color:var(--navy);font-size:12px;letter-spacing:.5px;text-transform:uppercase;padding:9px 10px;border-bottom:1px solid var(--line);line-height:1.3}
.pyx-table td{padding:9px 10px;border-bottom:1px solid #ece7dc;vertical-align:top;color:var(--navy)}
.pyx-table tr:last-child td{border-bottom:0}
.pyx-table code,.pyx-files code{font-family:"JetBrains Mono","SF Mono",Menlo,Consolas,monospace;font-size:12.5px;overflow-wrap:anywhere;color:var(--navy-soft)}
.pyx-loc{font-family:"JetBrains Mono","SF Mono",Menlo,Consolas,monospace;font-size:12.5px;overflow-wrap:anywhere;word-break:break-word}
.pyx-fam{display:inline-flex;align-items:center;font-weight:600}
.pyx-sub{display:block;font-size:12.5px;color:var(--slate)}
.pyx-muted{color:var(--slate);font-style:italic;font-family:Inter,Arial,sans-serif;font-size:12.5px}
.pyx-rev{font-size:13px;color:var(--slate)}
.pyx-lc .pyx-sub{margin-top:2px}
.pyx-badge{display:inline-block;font-size:11.5px;font-weight:700;border:1px solid var(--line);background:var(--warm);color:var(--navy);border-radius:4px;padding:0 6px;margin-bottom:2px}
.pyx-flag{display:block;font-size:12.5px;font-weight:600;color:var(--accent);margin-bottom:2px}
tr.pyx-mis td{background:#fdf3f1}
.pyx-pager{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:12px 0 0;font-size:14px;color:var(--slate)}
.pyx-more,.pyx-fmore{border-radius:6px;font-weight:600;border-color:var(--navy)}
.pyx-empty{color:var(--slate);font-style:italic}

/* by file */
.pyx-files{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.pyx-files>li{border-bottom:1px solid #ece7dc}
.pyx-files>li:last-child{border-bottom:0}
.pyx-files summary{cursor:pointer;padding:10px 14px;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;justify-content:space-between;list-style-position:inside}
.pyx-files summary:hover{background:#faf8f3}
.pyx-fp{font-family:"JetBrains Mono","SF Mono",Menlo,Consolas,monospace;font-size:13px;overflow-wrap:anywhere;min-width:0;flex:1 1 260px}
.pyx-fmeta{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--slate)}
.pyx-fmeta b{color:var(--navy);white-space:nowrap;font-variant-numeric:tabular-nums}
.pyx-sc{border:1px solid var(--line);border-radius:12px;padding:0 8px;font-size:12px;white-space:nowrap}
.pyx-stack{display:flex;width:90px;height:8px;border-radius:3px;overflow:hidden;background:#ece7dc;box-shadow:0 0 0 1px rgba(11,37,69,.2)}
.pyx-stack i{display:block;height:100%}
.pyx-fbody{padding:4px 14px 12px;background:#fcfbf8}
.pyx-fl{margin:4px 0 8px;font-size:14px}
.pyx-fbody ul{list-style:none;margin:0;padding:0}
.pyx-fbody li{display:grid;grid-template-columns:56px minmax(0,1fr);gap:0 10px;padding:6px 0;border-top:1px solid #ece7dc;font-size:14px;color:var(--navy);overflow-wrap:anywhere}
.pyx-fbody li>.pyx-fam,.pyx-fbody li>.pyx-sub,.pyx-fbody li>.pyx-frev{grid-column:2}
.pyx-fbody li>.pyx-ln{grid-row:1 / span 3;font-family:"JetBrains Mono","SF Mono",Menlo,Consolas,monospace;font-size:12.5px}
.pyx-frev{font-size:13px;color:var(--slate)}
.pyx-fbody li.pyx-mis{background:#fdf3f1}

@media (max-width:900px){
  .pyx-grid{grid-template-columns:minmax(0,1fr)}
  .pyx-chart{position:static}
}
@media (max-width:760px){
  .pyx-row{grid-template-columns:minmax(0,1fr)}
  .pyx-lab{padding-top:0}
  .pyx-help{margin:-6px 0 12px}
  .pyx-controls{padding:14px}
  .pyx-stat dd{font-size:22px}
  /* table becomes cards */
  .pyx-twrap{border:0;overflow:visible}
  .pyx-table,.pyx-table tbody,.pyx-table tr,.pyx-table td{display:block;width:100%}
  .pyx-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .pyx-table tr{border:1px solid var(--line);border-radius:10px;margin:0 0 10px;padding:6px 12px}
  .pyx-table td{border:0;padding:5px 0;display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px}
  .pyx-table td::before{content:attr(data-l);font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--slate);padding-top:2px}
  .pyx-table td>*{min-width:0}
  .pyx-table{table-layout:auto}
  tr.pyx-mis{background:#fdf3f1}
  tr.pyx-mis td{background:transparent}
}
@media (prefers-reduced-motion:reduce){
  .pyx-bt i{transition:none}
  html{scroll-behavior:auto}
}
