/* ── POC CSS vars + theme ───────────────────────────────────────── */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#ffffff;--bg2:#f5f5f3;--bg3:#ebebea;--bg4:#e2e0dc;
  --text:#1a1a1a;--text2:#6b6b6b;--text3:#9a9a9a;
  --border:rgba(0,0,0,0.09);--border2:rgba(0,0,0,0.16);
  --green:#27a36d;--green-bg:#eaf3de;--green-text:#3b6d11;
  --yellow:#c8780a;--yellow-bg:#faeeda;--yellow-text:#854f0b;
  --red:#c0392b;--red-bg:#fcebeb;--red-text:#a32d2d;
  --critical:#7b0000;--critical-bg:#ffd5d5;--critical-text:#7b0000;
  --blue:#3266ad;--blue-bg:#e6f1fb;--blue-text:#185fa5;
  --purple:#6c47d4;--purple-bg:#eeedfe;--purple-text:#3c3489;
  --orange:#c05c00;--orange-bg:#fde8d0;--orange-text:#7a3800;
  --r:8px;--rl:12px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"SFMono-Regular",Consolas,monospace;
}
@media(prefers-color-scheme:dark){
  :root{
    --bg:#0f1117;--bg2:#1a1d27;--bg3:#242836;--bg4:#2e3245;
    --text:#e8e8e6;--text2:#9a9a98;--text3:#6b6b69;
    --border:rgba(255,255,255,0.08);--border2:rgba(255,255,255,0.16);
    --green:#4cbe87;--green-bg:#173404;--green-text:#c0dd97;
    --yellow:#e8951a;--yellow-bg:#412402;--yellow-text:#fac775;
    --red:#e05252;--red-bg:#501313;--red-text:#f09595;
    --critical:#ff6b6b;--critical-bg:#4a0000;--critical-text:#ffb3b3;
    --blue:#5a8fd4;--blue-bg:#042c53;--blue-text:#85b7eb;
    --purple:#9b7cf0;--purple-bg:#26215c;--purple-text:#afa9ec;
    --orange:#e07820;--orange-bg:#3d2200;--orange-text:#ffb366;
  }
}
body{font-family:var(--font);background:var(--bg);color:var(--text);padding:0;}
.wrap{margin:0 auto;}

/* ── Hub full-height flex layout ─────────────────────────────────── */
.hub-page{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;}
.hub-hdr{flex-shrink:0;padding:12px 20px 10px;background:var(--bg);border-bottom:.5px solid var(--border);}
.hub-hdr-top{display:flex;align-items:center;gap:10px;margin-bottom:4px;}
.hub-hdr-sub{font-size:13px;color:var(--text2);margin-bottom:8px;}
.hub-scroll{flex:1;overflow-y:auto;padding:20px;min-height:0;}
h1{font-size:22px;font-weight:500;margin-bottom:4px;}
.sub{font-size:13px;color:var(--text2);margin-bottom:1.5rem;}
.stitle{font-size:10px;font-weight:500;color:var(--text2);text-transform:uppercase;letter-spacing:.07em;margin-bottom:12px;border-bottom:.5px solid var(--border);padding-bottom:6px;}
.mb{margin-bottom:2rem;}

/* SUMMARY */
.sum{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;padding:12px 0 0;}
.sc{background:var(--bg2);border-radius:var(--r);padding:12px;}
.sl{font-size:10px;color:var(--text2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;}
.sv{font-size:20px;font-weight:500;}
.ss{font-size:10px;color:var(--text3);margin-top:2px;}

/* CHARTS */
.chart-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;width:100%;}
.chart-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;width:100%;}
.cb{background:var(--bg2);border-radius:var(--rl);padding:16px;}
.cb h3{font-size:10px;font-weight:500;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px;}

/* CONTROLS — now lives in hub-hdr, no sticky needed */
.controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0 10px;}
.search-wrap{position:relative;display:inline-flex;align-items:center;}
.search{font-family:var(--font);font-size:13px;padding:7px 32px 7px 12px;border-radius:var(--r);border:.5px solid var(--border2);background:var(--bg2);color:var(--text);outline:none;width:220px;}
.search:focus{border-color:var(--blue);}
.search-clear{position:absolute;right:7px;background:none;border:none;color:var(--text3);cursor:pointer;font-size:13px;padding:2px 4px;line-height:1;border-radius:3px;}
.search-clear:hover{color:var(--text);background:var(--bg3);}
.filter-pills{display:flex;gap:6px;}
.pill{font-size:11px;font-weight:500;padding:4px 12px;border-radius:100px;border:.5px solid var(--border2);background:transparent;color:var(--text2);cursor:pointer;transition:all .15s;}
.pill.a-ALL{background:var(--bg3);color:var(--text);border-color:var(--border2);}
.pill.a-GREEN{background:var(--green-bg);color:var(--green-text);border-color:var(--green);}
.pill.a-YELLOW{background:var(--yellow-bg);color:var(--yellow-text);border-color:var(--yellow);}
.pill.a-RED{background:var(--red-bg);color:var(--red-text);border-color:var(--red);}
.pill.a-CRITICAL{background:var(--critical-bg);color:var(--critical-text);border-color:var(--critical);}
.sort-sel{font-family:var(--font);font-size:12px;padding:5px 10px;border-radius:var(--r);border:.5px solid var(--border2);background:var(--bg2);color:var(--text2);cursor:pointer;outline:none;margin-left:auto;}

/* TABLE */
.table-wrap{border:.5px solid var(--border2);border-radius:var(--rl);overflow-x:auto;}
table{width:100%;border-collapse:collapse;min-width:900px;}
thead tr{background:var(--bg2);border-bottom:.5px solid var(--border2);}
th{padding:9px 14px;text-align:left;font-size:10px;font-weight:500;color:var(--text2);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;}
td{padding:10px 14px;font-size:13px;border-bottom:.5px solid var(--border);vertical-align:middle;}
tr:last-child td{border-bottom:none;}
tr.row:hover td{background:var(--bg2);cursor:default;}
tr.row.is-crit td:first-child{border-left:2px solid var(--critical);}
tr.row.is-red td:first-child{border-left:2px solid var(--red);}
tr.row.detail-open td{background:var(--blue-bg);}
tr.row.detail-open td:first-child{border-left:3px solid var(--blue);}
tr.row.detail-open:hover td{background:var(--blue-bg);}

.badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:500;padding:2px 8px;border-radius:4px;}
.badge.has-tip{cursor:default;position:relative;}
.badge.has-tip::after{
  content:attr(data-tip);
  position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);
  background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--r);
  padding:8px 11px;font-size:11px;font-weight:400;color:var(--text);
  line-height:1.55;white-space:normal;width:230px;text-align:left;
  pointer-events:none;opacity:0;transition:opacity .15s;
  z-index:300;box-shadow:0 4px 16px rgba(0,0,0,.28);font-family:var(--font);
}
.badge.has-tip:hover::after{opacity:1;}
.b-GREEN{background:var(--green-bg);color:var(--green-text);}
.b-YELLOW{background:var(--yellow-bg);color:var(--yellow-text);}
.b-RED{background:var(--red-bg);color:var(--red-text);}
.b-CRITICAL{background:var(--critical-bg);color:var(--critical-text);font-weight:700;}
.bdot{width:5px;height:5px;border-radius:50%;}
.dot-GREEN{background:var(--green);}
.dot-YELLOW{background:var(--yellow);}
.dot-RED{background:var(--red);}
.dot-CRITICAL{background:var(--critical);}

.name-cell{max-width:260px;}
.name-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;}
.name-id{font-size:10px;color:var(--text3);font-family:var(--mono);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

.bar-wrap{display:flex;align-items:center;gap:8px;}
.bar-bg{height:3px;background:var(--bg3);border-radius:2px;flex-shrink:0;}
.bar-fill{height:3px;border-radius:2px;}

.no-res{padding:3rem;text-align:center;color:var(--text2);font-size:13px;}

/* PSA quicklink */
.psa-link{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:500;padding:2px 7px;border-radius:4px;background:var(--purple-bg);color:var(--purple-text);border:.5px solid transparent;text-decoration:none;transition:all .12s;white-space:nowrap;}
.psa-link:hover{border-color:var(--purple);opacity:.85;}
.psa-cur{background:var(--purple)!important;color:#fff!important;cursor:default!important;font-weight:700!important;border-color:var(--purple)!important;}

/* L2 drawer — remap psa_styles.css vars + font to hub theme */
#l2-body,#l2-body *{font-family:var(--font)!important;}
#l2-body{
  --psa-bg-deep:var(--bg);--psa-bg-panel:var(--bg2);--psa-bg-card:var(--bg2);
  --psa-bg-hover:var(--bg3);--psa-border:var(--border);--psa-border-light:var(--border2);
  --psa-text-primary:var(--text);--psa-text-secondary:var(--text2);--psa-text-dim:var(--text3);
}

/* Discrepancy legend */
.disc-legend{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px;padding:8px 12px;background:var(--bg2);border-radius:var(--r);border:.5px solid var(--border);margin-top: 10px;}
.disc-legend-item{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text2);}
.disc-legend-lbl{font-size:10px;font-weight:600;padding:2px 7px;border-radius:4px;}
.dl-hi{background:rgba(232,149,26,.15);color:var(--yellow);border:.5px solid rgba(232,149,26,.35);}
.dl-lo{background:rgba(90,143,212,.12);color:var(--blue);border:.5px solid rgba(90,143,212,.3);}
.dl-rev{background:rgba(255,255,255,.05);color:var(--text3);border:.5px solid var(--border);}

/* PAGINATION */
.pager{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border-top:.5px solid var(--border);}
.pager-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap; margin-bottom: 10px;}
.pager-info{font-size:11px;color:var(--text2);margin-left:auto;}
.pbtn{font-size:11px;padding:3px 9px;border-radius:var(--r);border:.5px solid var(--border2);background:var(--bg2);color:var(--text2);cursor:pointer;transition:all .1s;}
.pbtn:hover:not(:disabled){background:var(--bg3);color:var(--text);}
.pbtn:disabled{opacity:.4;cursor:default;}
.pbtn.active{background:var(--blue);color:#fff;border-color:var(--blue);}
.pager-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.pager-sub label{font-size:11px;color:var(--text2);}
.pager-sub input{width:44px;font-size:11px;padding:3px 6px;border-radius:var(--r);border:.5px solid var(--border2);background:var(--bg2);color:var(--text);text-align:center;outline:none;}
.pager-sub input:focus{border-color:var(--blue);}
.pager-sub select{font-size:11px;padding:3px 8px;border-radius:var(--r);border:.5px solid var(--border2);background:var(--bg2);color:var(--text2);outline:none;cursor:pointer;}

/* Tooltip su segmenti tl-bar */
.tl-seg{position:relative;}
.tl-seg::after{
  content:attr(title);
  position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);
  background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--r);
  padding:4px 8px;font-size:10px;color:var(--text);white-space:nowrap;
  pointer-events:none;opacity:0;transition:opacity .1s;z-index:200;
}
.tl-seg:hover::after{opacity:1;}
/* Nascondi accordion sentences in T2 (psa-turn-details li ha già) */
#l4-t2 [id^="ibs-"][id$="-sent"],
#l4-t2 .ind-hdr[onclick$="-sent')"]{ display:none!important; }

@media(max-width:800px){
  .sum{grid-template-columns:repeat(4,1fr);}
  .chart-row,.chart-row-3{grid-template-columns:1fr;}
}

body { background: var(--bg) !important; color: var(--text) !important;
  display: flex !important; flex-direction: column !important;
  height: 100vh !important; overflow: hidden !important; }
body > main {
  padding: 0 !important; max-width: none !important;
  flex: 1 !important; display: flex !important; flex-direction: column !important;
  overflow: hidden !important; min-height: 0 !important;
}


/* ── Custom checkboxes ──────────────────────────────────────────── */
.chk-th{width:38px;padding:9px 6px 9px 14px !important;}
.chk-td{width:38px;padding:10px 6px 10px 14px !important;cursor:default;}
.chk-wrap{display:inline-flex;align-items:center;cursor:pointer;}
.chk-inp{position:absolute;opacity:0;width:0;height:0;pointer-events:none;}
.chk-box{
  width:15px;height:15px;border-radius:4px;flex-shrink:0;
  border:1.5px solid var(--border2);background:transparent;
  display:flex;align-items:center;justify-content:center;
  transition:background .12s,border-color .12s;
}
.chk-wrap:hover .chk-box{border-color:var(--blue);}
.chk-inp:checked ~ .chk-box{background:var(--blue);border-color:var(--blue);}
.chk-inp:checked ~ .chk-box::after{
  content:'';display:block;
  width:4px;height:7px;
  border:1.5px solid #fff;border-top:none;border-left:none;
  transform:rotate(45deg) translateY(-1px);
}
tr.row.sel-row td{background:rgba(90,143,212,0.06);}
tr.row.sel-row:hover td{background:rgba(90,143,212,0.10);}

/* ── Floating action bar ────────────────────────────────────────── */
.cmp-bar{
  position:fixed;bottom:-80px;left:50%;transform:translateX(-50%);
  z-index:100;transition:bottom .25s cubic-bezier(.4,0,.2,1);
  pointer-events:none;white-space:nowrap;
}
.cmp-bar.visible{bottom:24px;pointer-events:all;}
.cmp-bar-inner{
  display:flex;align-items:center;gap:10px;
  background:var(--bg2);border:1px solid var(--border2);
  border-radius:100px;padding:8px 10px 8px 16px;
  box-shadow:0 4px 24px rgba(0,0,0,.35);
}
.cmp-count{font-size:12px;color:var(--text2);}
.cmp-dots{display:flex;gap:4px;align-items:center;}
.cmp-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.cmp-clr{font-size:11px;padding:4px 12px;border-radius:100px;border:.5px solid var(--border2);background:transparent;color:var(--text2);cursor:pointer;font-family:var(--font);}
.cmp-clr:hover{background:var(--bg3);color:var(--text);}
.cmp-go{font-size:12px;font-weight:500;padding:6px 18px;border-radius:100px;background:var(--blue);color:#fff;border:none;cursor:pointer;font-family:var(--font);transition:opacity .15s;}
.cmp-go:hover{opacity:.85;}
.cmp-del{font-size:12px;font-weight:500;padding:6px 14px;border-radius:100px;background:transparent;color:var(--red);border:.5px solid var(--red);cursor:pointer;font-family:var(--font);transition:all .15s;}
.cmp-del:hover{background:var(--red-bg);}

/* ── Custom confirm modal ─────────────────────────────────────────── */
.psa-modal-overlay{
  position:fixed;inset:0;z-index:600;
  background:rgba(0,0,0,.55);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;
}
.psa-modal-overlay.open{opacity:1;visibility:visible;}
.psa-modal{
  background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--rl);
  padding:28px 28px 20px;min-width:320px;max-width:420px;
  box-shadow:0 16px 48px rgba(0,0,0,.45);
}
.psa-modal-title{font-size:14px;font-weight:600;margin-bottom:8px;}
.psa-modal-body{font-size:13px;color:var(--text2);line-height:1.5;margin-bottom:22px;}
.psa-modal-footer{display:flex;gap:8px;justify-content:flex-end;}
.psa-modal-cancel{font-family:var(--font);font-size:12px;padding:7px 16px;border-radius:100px;border:.5px solid var(--border2);background:transparent;color:var(--text2);cursor:pointer;}
.psa-modal-cancel:hover{background:var(--bg3);color:var(--text);}
.psa-modal-confirm{font-family:var(--font);font-size:12px;font-weight:500;padding:7px 18px;border-radius:100px;border:none;background:var(--red);color:#fff;cursor:pointer;transition:opacity .15s;}
.psa-modal-confirm:hover{opacity:.85;}
.cmp-go:disabled{opacity:.35;cursor:default;}

/* ── Comparison drawer ──────────────────────────────────────────── */
.cmp-overlay{
  position:fixed;inset:0;z-index:200;
  background:rgba(0,0,0,.45);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;
  transition:opacity .2s,visibility .2s;
  display:flex;justify-content:flex-end;
}
.cmp-overlay.open{opacity:1;visibility:visible;}
.cmp-drawer{
  width:740px;max-width:96vw;height:100%;
  background:var(--bg);border-left:.5px solid var(--border2);
  display:flex;flex-direction:column;
  transform:translateX(100%);
  transition:transform .26s cubic-bezier(.4,0,.2,1);
  will-change:transform;
}
.cmp-overlay.open .cmp-drawer{transform:translateX(0);}
.cmp-head{
  display:flex;align-items:center;gap:8px;
  padding:14px 20px;border-bottom:.5px solid var(--border);flex-shrink:0;
}
.cmp-head-left{display:flex;flex-direction:column;gap:2px;flex:1;}
/* Tooltips show downward inside scroll containers to avoid overflow clipping */
.cmp-body .badge.has-tip::after{bottom:auto;top:calc(100% + 7px);}
.cmp-head-title{font-size:14px;font-weight:500;}
.cmp-head-sub{font-size:11px;color:var(--text3);}
.cmp-close{background:none;border:none;font-size:20px;color:var(--text2);cursor:pointer;
  padding:4px 8px;border-radius:var(--r);line-height:1;font-family:var(--font);}
.cmp-close:hover{background:var(--bg3);color:var(--text);}
.cmp-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:24px;}
.cmp-loading{text-align:center;padding:4rem;color:var(--text2);font-size:13px;}
.cmp-error{text-align:center;padding:4rem;color:var(--red);font-size:13px;}

/* section title */
.cmp-stitle{
  font-size:10px;font-weight:500;color:var(--text3);
  text-transform:uppercase;letter-spacing:.08em;
  margin-bottom:12px;display:flex;align-items:center;gap:8px;
}
.cmp-stitle::after{content:'';flex:1;height:1px;background:var(--border);}

/* session header cards */
.cmp-sess-cards{display:flex;flex-direction:column;gap:8px;}
.cmp-sess-card{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  background:var(--bg2);border-radius:var(--rl);padding:14px 16px;
  border:.5px solid var(--border);border-left-width:3px;
}
.cmp-sess-name{font-size:13px;font-weight:500;margin-bottom:2px;}
.cmp-sess-id{font-size:10px;color:var(--text3);font-family:var(--mono);}
.cmp-sess-meta{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap;}
.cmp-sess-score{font-family:var(--mono);font-size:22px;font-weight:500;line-height:1;text-align:right;}
.cmp-sess-score-lbl{font-size:10px;color:var(--text3);letter-spacing:.04em;margin-top:2px;text-align:right;}

/* chart boxes */
.cmp-cb{background:var(--bg2);border:.5px solid var(--border);border-radius:var(--rl);padding:16px;}
.cmp-cb-title{font-size:10px;font-weight:500;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px;}
.cmp-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px;}

/* legend */
.cmp-legend{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:10px;}
.cmp-leg-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text2);}
.cmp-leg-line{width:16px;height:2.5px;border-radius:2px;flex-shrink:0;}
.cmp-leg-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}

/* V1/V2 discrepancy */
.cmp-disc-wrap{display:flex;flex-direction:column;gap:12px;}
.cmp-matrix-wrap{background:var(--bg2);border:.5px solid var(--border);border-radius:var(--rl);padding:14px;}
.cmp-matrix-title{font-size:10px;font-weight:500;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;}
.cmp-matrix{width:100%;border-collapse:collapse;font-size:11px;}
.cmp-matrix th{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);
  padding:5px 10px;font-weight:500;text-align:center;}
.cmp-matrix th.row-lbl{text-align:right;padding-right:12px;}
.cmp-matrix td{padding:8px 10px;text-align:center;border:.5px solid var(--border);
  font-family:var(--mono);font-size:12px;min-width:44px;}
.cmp-matrix .m-hdr{background:var(--bg3);font-size:9px;color:var(--text3);}
.cmp-matrix .m-zero{color:var(--text3);}
.cmp-matrix .m-hit{font-weight:600;}
.cmp-matrix .m-diag{background:rgba(76,190,135,.08);}
.cmp-matrix .m-off{background:rgba(232,149,26,.08);}

/* metrics table */
.cmp-metrics{width:100%;border-collapse:collapse;font-size:11px;}
.cmp-metrics th{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;
  padding:6px 12px;font-weight:500;border-bottom:.5px solid var(--border2);}
.cmp-metrics th:first-child{text-align:left;}
.cmp-metrics th:not(:first-child){text-align:right;}
.cmp-metrics td{padding:6px 12px;border-bottom:.5px solid var(--border);vertical-align:middle;}
.cmp-metrics td:first-child{font-size:11px;color:var(--text3);}
.cmp-metrics td:not(:first-child){font-family:var(--mono);font-size:11px;text-align:right;}
.cmp-metrics tr:last-child td{border-bottom:none;}
.cmp-metrics tr:hover td{background:var(--bg2);}
.cmp-metrics .m-sec td{background:var(--bg3);font-size:9px;text-transform:uppercase;
  letter-spacing:.06em;color:var(--text3);padding:5px 12px;font-family:var(--font);}

@media(max-width:800px){.cmp-2col{grid-template-columns:1fr;}}

/* ── Session detail drawer ──────────────────────────────────────── */
.detail-overlay{
  position:fixed;inset:0;z-index:200;
  background:rgba(0,0,0,.45);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;
  transition:opacity .2s,visibility .2s;
  display:flex;justify-content:flex-end;
}
.detail-overlay.open{opacity:1;visibility:visible;}
.detail-drawer{
  width:760px;max-width:96vw;height:100%;
  background:var(--bg);border-left:.5px solid var(--border2);
  display:flex;flex-direction:column;
  transform:translateX(100%);
  transition:transform .26s cubic-bezier(.4,0,.2,1);
  will-change:transform;
}
.detail-overlay.open .detail-drawer{transform:translateX(0);}

/* ── Accordion turns ─────────────────────────────────────────────── */
.acc-item{border:.5px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:5px;}
.acc-head{
  display:flex;align-items:center;gap:8px;padding:8px 12px;
  background:var(--bg2);cursor:pointer;user-select:none;
  transition:background .1s;
}
.acc-head:hover{background:var(--bg3);}
.acc-arrow{font-size:9px;color:var(--text3);transition:transform .18s;flex-shrink:0;width:10px;}
.acc-item.open .acc-arrow{transform:rotate(90deg);}
.acc-body{display:none;padding:12px 14px;background:var(--bg);}
.acc-item.open .acc-body{display:block;}
.acc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;}
.acc-stat{background:var(--bg2);border-radius:var(--r);padding:7px 9px;}
.acc-stat-lbl{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;}
.acc-stat-val{font-size:13px;font-weight:500;font-family:var(--mono);}
.detail-meta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px;}
@media(max-width:600px){.acc-grid{grid-template-columns:repeat(2,1fr);}.detail-meta-grid{grid-template-columns:repeat(2,1fr);}}

/* ── Hub AI explain ───────────────────────────────────────────── */
.hub-ai-btn{font-size:9px;font-weight:600;padding:2px 7px;border-radius:4px;border:.5px solid var(--border2);background:var(--bg3);color:var(--text2);cursor:pointer;letter-spacing:.04em;transition:all .12s;flex-shrink:0;}
.hub-ai-btn:hover,.hub-ai-btn.active{background:var(--purple-bg);color:var(--purple);border-color:var(--purple);}
.hub-explain-wrap{margin-top:10px;border-top:.5px solid var(--border);padding-top:10px;}
.hub-explain-txt{font-size:12px;color:var(--text2);line-height:1.6;margin-bottom:6px;}
.hub-explain-meta{font-size:10px;color:var(--text3);font-family:var(--mono);margin-bottom:8px;}
.hub-fb-chips{display:flex;gap:8px;align-items:center;}
.hub-fb-chip{display:flex;align-items:center;gap:4px;font-size:11px;padding:4px 10px;border-radius:100px;border:.5px solid var(--border2);background:transparent;color:var(--text2);cursor:pointer;transition:all .12s;}
.hub-fb-chip.pos:hover,.hub-fb-chip.pos.active{background:var(--green-bg);color:var(--green);border-color:var(--green);}
.hub-fb-chip.neg:hover,.hub-fb-chip.neg.active{background:var(--red-bg);color:var(--red);border-color:var(--red);}
.hub-correction-wrap{margin-top:8px;display:flex;gap:6px;}
.hub-correction-inp{flex:1;font-size:11px;padding:5px 10px;border-radius:var(--r);border:.5px solid var(--border2);background:var(--bg2);color:var(--text);outline:none;font-family:var(--font);}
.hub-correction-send{font-size:11px;padding:5px 12px;border-radius:var(--r);border:none;background:var(--purple);color:#fff;cursor:pointer;font-weight:500;transition:opacity .1s;}
.hub-correction-send:disabled{opacity:.4;cursor:default;}

/* ── L3 turn text ─────────────────────────────────────────────── */
.l3-lbl{font-size:10px;font-weight:500;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;}
.l3-text{font-size:12px;color:var(--text2);line-height:1.55;background:var(--bg3);border-radius:var(--r);padding:8px 10px;}
.l3-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:5px;margin-top:8px;}

/* ── Postura strips (L2) ──────────────────────────────────────── */
.ps-row{display:flex;align-items:center;gap:6px;padding:4px 0;border-bottom:.5px solid var(--border);}
.ps-row:last-child{border-bottom:none;}
.ps-lbl{font-size:10px;color:var(--text3);min-width:28px;font-family:var(--mono);}
.ps-strip{display:flex;flex-wrap:wrap;gap:2px;flex:1;}
.ps-block{width:14px;height:14px;border-radius:3px;flex-shrink:0;cursor:default;}
.ps-poi{font-size:10px;font-family:var(--mono);color:var(--text3);min-width:36px;text-align:right;}

/* ── L2 layout ────────────────────────────────────────────────── */
.l2-layout{display:grid;grid-template-columns:1fr 220px;gap:14px;}
.l2-side{display:flex;flex-direction:column;gap:10px;}
.l2-metric-row{display:flex;justify-content:space-between;align-items:baseline;padding:5px 0;border-bottom:.5px solid var(--border);}
.l2-metric-row:last-child{border-bottom:none;}
.l2-mlbl{font-size:11px;color:var(--text2);}
.l2-mval{font-size:13px;font-weight:500;font-family:var(--mono);}

/* ── Drawers L2/L3: full-width, centrati ──────────────────────── */
#l2-overlay,#l3-overlay{justify-content:flex-start;}
#l2-drawer,#l3-drawer{width:100%;max-width:100%;border-left:none;border-top:.5px solid var(--border2);}
/* Blocca scroll pagina quando un drawer è aperto */
body.drawer-open{overflow:hidden;}
/* Scroll interno al drawer, non propaga alla pagina */
#l2-body,#l3-body{overscroll-behavior:contain;}

/* ── L2: allinea stile psa_styles al tema hub ─────────────────── */
#l2-body{
  --psa-bg-deep:       var(--bg);
  --psa-bg-panel:      var(--bg2);
  --psa-bg-card:       var(--bg2);
  --psa-bg-hover:      var(--bg3);
  --psa-border:        var(--border2);
  --psa-border-light:  var(--border);
  --psa-text-primary:  var(--text);
  --psa-text-secondary:var(--text2);
  --psa-text-dim:      var(--text3);
  --psa-red:           var(--red);
  --psa-yellow:        var(--yellow);
  --psa-green:         var(--green);
  --psa-orange:        var(--orange);
  --psa-blue:          var(--blue);
  --psa-purple:        var(--purple);
  --psa-green-dim:     rgba(34,197,94,.12);
  --psa-yellow-dim:    rgba(234,179,8,.12);
  --psa-orange-dim:    rgba(249,115,22,.12);
  --psa-red-dim:       rgba(239,68,68,.12);
  --psa-critical:      var(--critical);
  --psa-critical-dim:  var(--critical-bg);
  font-family: var(--font);
}
#l2-body .psa-card{background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--rl);}
#l2-body .psa-card-title{font-family:var(--font);font-size:11px;font-weight:500;letter-spacing:.06em;color:var(--text2);text-transform:uppercase;}
#l2-body .psa-metric-name,
#l2-body .psa-metric-value,
#l2-body .psa-turn-label,
#l2-body .psa-timeline-label{font-family:var(--font);}
#l2-body button,#l2-body select{font-family:var(--font);}

/* ── L4 unified drawer ─────────────────────────────────────────── */
#l4-overlay{justify-content:flex-start;}
#l4-drawer{width:100%;max-width:100%;border-left:none;border-top:.5px solid var(--border2);}
#l4-body{overscroll-behavior:contain;display:flex;flex-direction:column;height:100%;overflow:hidden;}
.l4-tabbar{
  display:flex;gap:0;flex-shrink:0;
  border-bottom:.5px solid var(--border2);background:var(--bg);padding:0 16px;
}
.l4-tab{
  font-size:11px;font-weight:500;padding:8px 16px;
  border:none;border-bottom:2px solid transparent;
  background:transparent;color:var(--text2);
  cursor:pointer;font-family:var(--font);
  transition:all .12s;white-space:nowrap;
}
.l4-tab:hover{color:var(--text);}
.l4-tab.l4-active{color:var(--purple);font-weight:600;border-bottom-color:var(--purple);}
.l4-panels{flex:1;overflow-y:auto;overscroll-behavior:contain;}
.l4-panel{display:none;}
.l4-panel.l4-vis{display:block;}
/* L4 inherits same psa var remapping as L2 */
#l4-body,#l4-body *{font-family:var(--font)!important;}
#l4-body{
  --psa-bg-deep:var(--bg);--psa-bg-panel:var(--bg2);--psa-bg-card:var(--bg2);
  --psa-bg-hover:var(--bg3);--psa-border:var(--border2);--psa-border-light:var(--border);
  --psa-text-primary:var(--text);--psa-text-secondary:var(--text2);--psa-text-dim:var(--text3);
  --psa-red:var(--red);--psa-yellow:var(--yellow);--psa-green:var(--green);
  --psa-orange:var(--orange);--psa-blue:var(--blue);--psa-purple:var(--purple);
  --psa-green-dim:rgba(34,197,94,.12);--psa-yellow-dim:rgba(234,179,8,.12);
  --psa-orange-dim:rgba(249,115,22,.12);--psa-red-dim:rgba(239,68,68,.12);
  --psa-critical:var(--critical);--psa-critical-dim:var(--critical-bg);
}
#l4-body .psa-card{background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--rl);}
#l4-body .psa-card-title{font-size:11px;font-weight:500;letter-spacing:.06em;color:var(--text2);text-transform:uppercase;}
#l4-body .psa-metric-name,#l4-body .psa-metric-value,
#l4-body .psa-turn-label,#l4-body .psa-timeline-label{font-family:var(--font);}
#l4-body button,#l4-body select{font-family:var(--font);}

/* ── T0 Total — 2-column body layout ──────────────────────────── */
.l4-t0-body{display:grid;grid-template-columns:1fr 300px;gap:20px;margin-bottom:2rem;align-items:start;}
.l4-t0-chart-wrap{position:relative;height:120px;background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--rl);padding:10px;}
/* KPI grid in T3: 4 colonne full-width (overrides session_detail.css 7-col) */
#l4-t3 .sum{grid-template-columns:repeat(4,1fr)!important;}
@media(max-width:900px){.l4-t0-body{grid-template-columns:1fr;}}

/* ── Discrepancy pill + tooltip ─────────────────────────────────── */
.disc{
  display:inline-flex;align-items:center;gap:3px;
  font-size:10px;font-weight:600;padding:2px 7px;border-radius:4px;
  letter-spacing:.03em;cursor:default;
  position:relative;
}
.disc-hi{background:rgba(232,149,26,.15);color:var(--yellow);border:.5px solid rgba(232,149,26,.35);}
.disc-lo{background:rgba(90,143,212,.12);color:var(--blue);border:.5px solid rgba(90,143,212,.3);}
.disc-rev{background:rgba(255,255,255,.05);color:var(--text3);border:.5px solid var(--border);}
.disc::after{
  content:attr(data-tip);
  position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);
  background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--r);
  padding:8px 11px;font-size:11px;font-weight:400;color:var(--text);
  line-height:1.55;white-space:normal;width:230px;text-align:left;
  pointer-events:none;opacity:0;transition:opacity .15s;
  z-index:300;box-shadow:0 4px 16px rgba(0,0,0,.28);font-family:var(--font);
}
.disc:hover::after{opacity:1;}

/* ── Classifier health bars ─────────────────────────────────────── */
.cls-bar-row{display:flex;align-items:center;gap:10px;font-size:12px;margin-bottom:8px;}
.cls-bar-row:last-child{margin-bottom:0;}
.cls-bar-track{flex:1;height:10px;border-radius:4px;overflow:hidden;background:var(--bg3);display:flex;}

/* ── Distribution chip button ────────────────────────────────────── */
.dist-chip{
  font-size:11px;font-weight:500;padding:5px 12px;border-radius:100px;
  border:.5px solid var(--border2);background:var(--bg2);color:var(--text2);
  cursor:pointer;font-family:var(--font);transition:all .15s;white-space:nowrap;
  display:inline-flex;align-items:center;gap:5px;
}
.dist-chip:hover{background:var(--bg3);color:var(--text);}
.dist-chip .dist-chip-dot{width:7px;height:7px;border-radius:50%;background:var(--blue);flex-shrink:0;}

/* ── Gear dropdown ───────────────────────────────────────────────── */
.gear-wrap{position:relative;}
.gear-btn{
  font-size:15px;padding:4px 8px;border-radius:var(--r);
  border:.5px solid var(--border2);background:var(--bg2);color:var(--text2);
  cursor:pointer;font-family:var(--font);line-height:1;transition:all .15s;
}
.gear-btn:hover{background:var(--bg3);color:var(--text);}
.gear-menu{
  position:absolute;top:calc(100% + 6px);right:0;min-width:200px;
  background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--rl);
  box-shadow:0 8px 28px rgba(0,0,0,.3);z-index:400;
  display:none;flex-direction:column;overflow:hidden;
}
.gear-menu.open{display:flex;}
.gear-item{
  font-size:12px;padding:9px 14px;color:var(--text2);cursor:pointer;
  display:flex;align-items:center;gap:8px;border:none;background:none;
  font-family:var(--font);text-align:left;width:100%;
}
.gear-item:hover{background:var(--bg3);color:var(--text);}
.gear-item.danger{color:var(--red);}
.gear-item.danger:hover{background:var(--red-bg);}
.gear-sep{height:.5px;background:var(--border);margin:4px 0;}

/* ── Row context menu ────────────────────────────────────────────── */
.row-menu-wrap{position:relative;display:inline-block;}
.row-menu-btn{
  opacity:0;font-size:12px;padding:2px 7px;border-radius:var(--r);
  border:none;background:transparent;color:var(--text2);
  cursor:pointer;font-family:var(--font);line-height:1.4;transition:opacity .1s;letter-spacing:1px;
}
tr:hover .row-menu-btn,.row-menu-btn.active{opacity:1;}
.row-menu-btn.active{background:var(--bg3);}
.row-menu{
  position:absolute;top:calc(100% + 4px);right:0;min-width:150px;
  background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--rl);
  box-shadow:0 8px 28px rgba(0,0,0,.3);z-index:500;
  display:none;flex-direction:column;overflow:hidden;
}
.row-menu.open{display:flex;}
.row-menu-item{
  font-size:12px;padding:9px 14px;color:var(--text2);cursor:pointer;
  display:flex;align-items:center;gap:8px;border:none;background:none;
  font-family:var(--font);text-align:left;width:100%;
}
.row-menu-item:hover{background:var(--bg3);color:var(--text);}
.row-menu-item.danger{color:var(--red);}
.row-menu-item.danger:hover{background:var(--red-bg);}

/* ── Undo snackbar ───────────────────────────────────────────────── */
.psa-snackbar{
  position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(16px);
  background:var(--bg2);border:.5px solid var(--border2);border-radius:100px;
  box-shadow:0 8px 28px rgba(0,0,0,.35);
  padding:10px 18px;display:flex;align-items:center;gap:14px;
  font-size:12px;color:var(--text);z-index:600;
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;white-space:nowrap;
}
.psa-snackbar.visible{opacity:1;pointer-events:all;transform:translateX(-50%) translateY(0);}
.snack-undo{font-weight:600;color:var(--blue);background:none;border:none;
  cursor:pointer;font-family:var(--font);font-size:12px;padding:0;}
.snack-undo:hover{text-decoration:underline;}
.snack-timer{font-size:10px;color:var(--text3);min-width:14px;text-align:right;}

/* ── Totals footer row ───────────────────────────────────────────── */
tfoot tr{background:var(--bg2);border-top:.5px solid var(--border2);}
tfoot td{
  padding:8px 14px;font-size:10px;color:var(--text2);
  font-weight:500;white-space:nowrap;
  position:sticky;bottom:0;z-index:2;background:var(--bg2);
}
.tot-pill{
  display:inline-flex;align-items:center;gap:3px;
  font-size:9px;font-weight:500;padding:1px 6px;border-radius:4px;
  margin-right:3px;
}

/* ── Sentence posture display (accordion body) ───────────────────── */
.acc-sent {
  display: block;
  transition: background 0.2s, border-left-color 0.2s;
  cursor: default;
}
.acc-sent.psa-sent-active {
  font-weight: 500;
}

/* ── Chip Analysis drawer ─────────────────────────────────────────── */
.ca-tabs{display:flex;gap:6px;margin-bottom:0;}
.ca-tab{
  font-size:11px;font-weight:500;padding:5px 14px;border-radius:100px;
  border:.5px solid var(--border2);background:transparent;color:var(--text2);
  cursor:pointer;font-family:var(--font);transition:all .15s;
}
.ca-tab.active{background:var(--purple);color:#fff;border-color:var(--purple);}
.ca-tab:not(.active):hover{background:var(--bg3);color:var(--text);}

.ca-input{
  width:100%;resize:vertical;padding:10px 12px;font-size:12px;font-family:var(--mono);
  line-height:1.55;background:var(--bg3);color:var(--text);
  border:.5px solid var(--border2);border-radius:var(--r);outline:none;
  transition:border-color .15s;
}
.ca-input:focus{border-color:var(--purple);}

.ca-options{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}

/* Custom checkbox */
.ca-checkbox-wrap{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none;}
.ca-checkbox-input{position:absolute;opacity:0;width:0;height:0;}
.ca-checkbox-box{
  width:16px;height:16px;border-radius:4px;flex-shrink:0;
  border:.5px solid var(--border2);background:var(--bg3);
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s,border-color .15s;
}
.ca-checkbox-input:checked ~ .ca-checkbox-box{
  background:var(--purple);border-color:var(--purple);
}
.ca-checkbox-input:checked ~ .ca-checkbox-box::after{
  content:'';display:block;width:4px;height:7px;
  border:1.5px solid #fff;border-top:none;border-left:none;
  transform:rotate(45deg) translate(-1px,-1px);
}
.ca-checkbox-lbl{font-size:12px;color:var(--text2);}
.ca-checkbox-sub{font-size:11px;color:var(--text3);}

.ca-run-btn{
  font-size:12px;font-weight:500;padding:7px 20px;border-radius:100px;
  border:none;background:var(--purple);color:#fff;cursor:pointer;
  font-family:var(--font);transition:opacity .15s;white-space:nowrap;flex-shrink:0;
}
.ca-run-btn:hover{opacity:.85;}
.ca-run-btn:disabled{opacity:.4;cursor:default;}

.ca-loading{text-align:center;padding:2rem;font-size:12px;color:var(--text3);}
.ca-error{padding:12px 14px;font-size:12px;color:var(--red);background:var(--red-bg);border-radius:var(--r);}

/* Result header badges */
.ca-badge-row{display:flex;align-items:center;gap:8px;margin-bottom:4px;}
.ca-badge{font-size:9px;font-weight:600;padding:2px 8px;border-radius:100px;letter-spacing:.05em;text-transform:uppercase;}
.ca-dry{background:var(--purple-bg);color:var(--purple-text);}
.ca-live{background:var(--green-bg);color:var(--green-text);}
.ca-sid{font-size:10px;font-family:var(--mono);color:var(--text3);}

/* Turn cards */
.ca-turn-card{
  background:var(--bg2);border:.5px solid var(--border);border-radius:var(--rl);
  padding:14px 16px;display:flex;flex-direction:column;gap:10px;
}
.ca-turn-hdr{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.ca-turn-lbl{font-size:10px;font-weight:500;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;}
.ca-alert-badge{
  font-size:10px;font-weight:600;padding:2px 10px;border-radius:100px;
  border:.5px solid;background:transparent;letter-spacing:.04em;
}

/* Metrics grid */
.ca-metrics{display:flex;flex-wrap:wrap;gap:8px;}
.ca-metric{
  background:var(--bg3);border-radius:var(--r);padding:8px 12px;
  display:flex;flex-direction:column;gap:2px;min-width:70px;
}
.ca-metric-lbl{font-size:9px;font-weight:500;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;}
.ca-metric-val{font-size:14px;font-weight:500;font-family:var(--mono);color:var(--text);}

/* Sentence breakdown */
.ca-sentences{display:flex;flex-direction:column;gap:3px;margin-top:2px;}
.ca-sentence{
  display:grid;grid-template-columns:28px 1fr 32px;align-items:center;gap:8px;
  padding:5px 8px;border-radius:6px;font-size:11px;
}
.ca-sentence-risk{background:rgba(224,120,32,.07);border-left:2px solid var(--orange);}
.ca-sentence-pos{font-size:9px;font-weight:600;font-family:var(--mono);color:var(--text3);text-align:center;}
.ca-sentence-risk .ca-sentence-pos{color:var(--orange);}
.ca-sentence-text{color:var(--text2);line-height:1.4;}
.ca-sentence-conf{font-size:9px;font-family:var(--mono);color:var(--text3);text-align:right;}

/* ── Textarea header (clear btn + hint) ─────────────────────────── */
.ca-input-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;min-height:18px;}
.ca-input-hint{font-size:10px;color:var(--text3);}
.ca-clear-btn{
  font-size:10px;padding:2px 8px;border-radius:100px;
  border:.5px solid var(--border2);background:transparent;color:var(--text3);
  cursor:pointer;font-family:var(--font);transition:all .15s;
}
.ca-clear-btn:hover{background:var(--bg3);color:var(--text);}

/* ── Tagged parse preview ────────────────────────────────────────── */
#ca-preview{
  margin-top:8px;border:.5px solid var(--border);border-radius:var(--r);
  overflow:hidden;
}
.ca-prev-empty{padding:10px 12px;font-size:11px;color:var(--text3);font-style:italic;}
.ca-prev-turn{
  display:grid;grid-template-columns:52px 1fr;
  border-bottom:.5px solid var(--border);
}
.ca-prev-turn:last-child{border-bottom:none;}
.ca-prev-role{
  padding:8px 10px;font-size:9px;font-weight:600;letter-spacing:.05em;
  text-transform:uppercase;border-right:.5px solid var(--border);
  display:flex;align-items:flex-start;
}
.ca-prev-role.user{color:var(--blue);background:var(--blue-bg);}
.ca-prev-role.model{color:var(--purple);background:var(--purple-bg);}
.ca-prev-text{
  padding:8px 10px;font-size:11px;color:var(--text2);line-height:1.45;
  white-space:pre-wrap;word-break:break-word;
}

/* ── Kimi Explainer Modal ──────────────────────────────────────── */
.explain-modal{max-width:600px;max-height:75vh;overflow-y:auto;}
.explain-loading{padding:32px;text-align:center;color:var(--text2);font-size:13px;}
.explain-content{padding:2px;}
.explain-section{padding:16px;border-top:.5px solid var(--border2);}
.explain-section:first-child{border-top:none;padding-top:0;}
.explain-label{font-size:10px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px;}
.explain-text{font-size:13px;line-height:1.6;color:var(--text);text-align:left;}

.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.metric{background:var(--bg3);border-radius:var(--r);padding:10px;text-align:center;}
.mlbl{display:block;font-size:9px;color:var(--text2);text-transform:uppercase;margin-bottom:4px;}
.mval{display:block;font-size:16px;font-weight:500;color:var(--text);}

.explain-glossary{padding:16px;background:var(--bg3);border-radius:var(--r);margin-top:12px;}
.glossary-item{display:flex;gap:10px;padding:6px 0;font-size:11px;line-height:1.4;}
.gterm{min-width:45px;font-weight:600;color:var(--blue);}
.gdef{color:var(--text2);}
.explain-analysis{margin-top:16px;}
.explain-refresh-btn{font-size:10px;padding:3px 10px;border:none;border-radius:4px;background:var(--bg3);color:var(--blue);cursor:pointer;transition:all .15s;}
.explain-refresh-btn:hover{background:var(--blue);color:var(--text);}

@media(max-width:600px){
  .metrics-grid{grid-template-columns:repeat(2,1fr);}
}

/* ── Posture tooltip — shared by session timeline + transcript blocks ── */
.psatip{position:relative;}
.psatip[data-ptip]::after{
  content:attr(data-ptip);
  position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);
  background:var(--bg2);border:.5px solid var(--border2);border-radius:var(--r);
  padding:7px 10px;font-size:11px;font-weight:400;color:var(--text);
  line-height:1.5;white-space:normal;width:240px;text-align:left;
  pointer-events:none;opacity:0;transition:opacity .15s;
  z-index:9999;box-shadow:0 4px 16px rgba(0,0,0,.35);font-family:var(--font);
}
.psatip[data-ptip]:hover::after{opacity:1;}

/* ── PSA Tooltips — JS floating tooltip handles all [data-tooltip] ── */
[data-tooltip]{cursor:help;}
[data-tooltip]::after{display:none!important;}
