/* HTX — Data Room Orchestrator · brutalismo editoriale d'archivio (brand POC) */
:root{
  --ink:#141414; --ink-2:#262626; --paper:#EFEEEA; --paper-2:#E5E4DF; --white:#fff;
  --line:rgba(20,20,20,.16); --line-2:rgba(20,20,20,.08);
  --mut:#6b6b66; --dim:#9b9b95;
  --ok:#1d7a43; --okbg:#e7efe9; --warn:#9a5a0c; --warnbg:#f3ebdd; --bad:#8f1d1d; --badbg:#f1e4e4;
  --sans:"Helvetica Neue","Helvetica Neue LT","Helvetica",Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --tx:.14em;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;
  line-height:1.5;-webkit-font-smoothing:antialiased}
::selection{background:var(--ink);color:#fff}
.mono{font-family:var(--mono)}
.up{text-transform:uppercase;letter-spacing:var(--tx)}
button{font-family:inherit}

/* glifo HTX come texture */
.tex{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='86' height='86'%3E%3Cg fill='%23141414'%3E%3Crect x='10' y='12' width='9' height='40'/%3E%3Crect x='10' y='12' width='26' height='9'/%3E%3Crect x='40' y='30' width='9' height='44' transform='rotate(38 44 52)'/%3E%3C/g%3E%3C/svg%3E");background-size:86px 86px}

/* ===== barra meta ===== */
.meta{display:flex;justify-content:space-between;align-items:center;padding:9px 22px;
  border-bottom:1px solid var(--ink);font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:var(--tx);background:var(--paper);position:sticky;top:0;z-index:20}
.meta .c{color:var(--mut)}

.root{min-height:calc(100vh - 33px)}

/* reveal in cascata */
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.rise{animation:rise .35s ease both}
.rise.d1{animation-delay:.05s}.rise.d2{animation-delay:.12s}.rise.d3{animation-delay:.2s}.rise.d4{animation-delay:.28s}

/* ===== auth (login / setup / invito) ===== */
.gate{min-height:calc(100vh - 33px);display:grid;place-items:center;padding:40px 20px;position:relative;overflow:hidden}
.gate::before{content:"";position:absolute;inset:auto -60px -60px auto;width:420px;height:320px;opacity:.045;
  background-image:inherit;transform:rotate(8deg)}
.gate.tex::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='86' height='86'%3E%3Cg fill='%23141414'%3E%3Crect x='10' y='12' width='9' height='40'/%3E%3Crect x='10' y='12' width='26' height='9'/%3E%3Crect x='40' y='30' width='9' height='44' transform='rotate(38 44 52)'/%3E%3C/g%3E%3C/svg%3E");background-size:86px 86px}
.gatebox{width:100%;max-width:420px;background:var(--white);border:1px solid var(--ink);position:relative}
.gatebox .hd{padding:24px 26px 20px;border-bottom:1px solid var(--ink);background:var(--ink);color:#fff}
.gatebox .hd .logo{display:block;height:20px;margin-bottom:16px;color:#fff}
.gatebox .hd .logo svg{display:block;height:20px;width:auto}
.gatebox .hd .tl{font-size:9px;font-weight:700;letter-spacing:var(--tx);color:#9a9a92;text-transform:uppercase;line-height:1.7}
.gatebox .hd b{display:block;font-size:17px;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;margin-top:6px}
.gatebox .bd{padding:24px 26px 26px}
.gatebox .note{font-size:12.5px;color:var(--mut);margin:0 0 16px;line-height:1.55}
.gatebox .note b{color:var(--ink)}

.field{margin-bottom:14px}
.field label{display:block;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:var(--tx);
  color:var(--mut);margin-bottom:6px}
.field input,.field select{width:100%;border:1px solid var(--ink);background:var(--white);padding:10px 12px;
  font-family:var(--mono);font-size:13px;color:var(--ink);outline:none;border-radius:0;-webkit-appearance:none;appearance:none}
.field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23141414'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:30px}
.field input:focus,.field select:focus{outline:2px solid var(--ink);outline-offset:-1px}
.field .hint{font-size:11px;color:var(--dim);margin-top:5px;font-family:var(--mono)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1px solid var(--ink);
  background:var(--ink);color:#fff;padding:11px 18px;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.1em;cursor:pointer;transition:.12s;border-radius:0}
.btn:hover{background:#000}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:#fff}
.btn.wide{width:100%}
.btn.sm{padding:6px 11px;font-size:9.5px}
.linkish{background:none;border:0;color:var(--mut);font-size:11px;text-transform:uppercase;
  letter-spacing:.08em;cursor:pointer;padding:0;font-weight:700}
.linkish:hover{color:var(--ink)}

.formerr{font-family:var(--mono);font-size:12px;color:var(--bad);background:var(--badbg);
  border-left:3px solid var(--bad);padding:9px 12px;margin-bottom:14px;display:none}
.formerr.show{display:block}

/* ===== workspace ===== */
.app{display:grid;grid-template-columns:280px 1fr;min-height:calc(100vh - 33px)}
@media(max-width:860px){.app{grid-template-columns:1fr}.side{position:static;height:auto}}
.side{background:var(--ink);color:#fff;display:flex;flex-direction:column;position:sticky;top:33px;height:calc(100vh - 33px)}
.side .brand{padding:24px 24px 20px;border-bottom:1px solid #2c2c2c}
.side .brand .logo{color:#fff;display:block;margin-bottom:16px}
.side .brand .logo svg{display:block;height:20px;width:auto}
.side .brand .tl{font-size:9px;font-weight:700;letter-spacing:var(--tx);color:#9a9a92;text-transform:uppercase;line-height:1.7}
.side .brand b{display:block;font-size:16px;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;margin-top:6px;line-height:1.25}
.side nav{flex:1;padding:10px 0}
.nitem{display:flex;gap:14px;align-items:center;padding:14px 24px;cursor:pointer;border-left:3px solid transparent;
  transition:.12s;color:#b9b9b2;background:none;border-top:0;border-right:0;border-bottom:0;width:100%;text-align:left;font-size:inherit}
.nitem:hover{background:#1c1c1c;color:#fff}
.nitem.active{background:#1c1c1c;border-left-color:#fff;color:#fff}
.nitem .num{flex:0 0 28px;height:28px;border:1px solid #3a3a3a;display:grid;place-items:center;
  font-family:var(--mono);font-size:12px;color:#9a9a92}
.nitem.active .num{background:#fff;border-color:#fff;color:#141414;font-weight:700}
.nitem .t b{display:block;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:inherit}
.nitem .t small{font-size:10.5px;color:#7d7d76}
.side .foot{padding:18px 24px;border-top:1px solid #2c2c2c;position:relative;overflow:hidden}
.side .foot .tag2{display:inline-block;border:1px solid #fff;color:#fff;font-size:9px;font-weight:700;
  letter-spacing:var(--tx);padding:3px 9px;text-transform:uppercase}
.side .foot p{margin:10px 0 0;font-size:10px;color:#83837c;line-height:1.6;text-transform:uppercase;letter-spacing:.08em;word-break:break-all}
.side .foot .out{margin-top:12px}
.side .foot .out button{background:none;border:1px solid #3a3a3a;color:#9a9a92;font-size:9px;font-weight:700;
  letter-spacing:var(--tx);text-transform:uppercase;padding:6px 11px;cursor:pointer;transition:.12s}
.side .foot .out button:hover{border-color:#fff;color:#fff}
.side .foot .tx2{position:absolute;right:-12px;bottom:-12px;width:130px;height:96px;opacity:.06}

.main{min-width:0;background:var(--paper);display:flex;flex-direction:column}
.top{padding:32px 44px 0}
@media(max-width:860px){.top{padding:24px 20px 0}.body{padding:24px 20px 60px}}
.top .kick{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:var(--tx);color:var(--mut)}
.top h1{font-size:34px;font-weight:800;letter-spacing:-.02em;text-transform:uppercase;line-height:1;margin:10px 0 8px}
.top p{color:var(--ink-2);margin:0 0 22px;max-width:78ch;font-size:14px}
.top .hr{height:1px;background:var(--ink)}
.body{padding:28px 44px 70px;max-width:1180px;width:100%}

.knowledge{font-family:var(--mono);font-size:11px;line-height:1.7;text-transform:uppercase;
  letter-spacing:.04em;margin:0 0 18px;color:var(--ink);display:flex;align-items:center;
  gap:8px;flex-wrap:wrap}
.knowledge .kt{font-family:var(--sans);font-size:10px;font-weight:800;letter-spacing:var(--tx)}
.knowledge .kp{font-weight:700;color:var(--ink);min-width:36px}
.knowledge .kb{letter-spacing:0;color:var(--ink);white-space:nowrap}
.knowledge .kl{color:var(--mut)}
.knowledge .kspin{display:inline-block;width:10px;color:var(--ink);font-weight:700}
.knowledge .kcounts{color:var(--dim);font-size:10px;text-transform:none}
.knowledge .kfrac{color:var(--mut);font-weight:400}
.knowledge .kmodel{color:var(--dim);font-size:10px;text-transform:none}
.knowledge.compact{display:block;padding:10px 17px 14px;margin:0;font-size:10px;border-top:1px solid var(--line-2)}
.knowledge.compact .kt{font-size:9px;margin-bottom:3px}
.knowledge.compact .krow{display:flex;align-items:center;gap:7px;line-height:1.75}
.knowledge.compact .kl{flex:0 0 68px;color:var(--ink);margin-right:0}
.knowledge.compact .kb{flex:0 0 auto}
.knowledge.compact .kp{min-width:auto;margin-left:2px}

.lab{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:var(--tx);color:var(--ink);
  margin:0 0 14px;display:flex;align-items:center;gap:12px}
.lab::after{content:"";flex:1;height:1px;background:var(--line)}
.lab .ct{font-family:var(--mono);font-weight:400;color:var(--mut);letter-spacing:.04em}

/* gruppo collassabile per area DD (consulente) nella checklist */
.areagrp{margin-bottom:22px}
.areahd{width:100%;display:flex;align-items:center;gap:11px;padding:13px 16px;background:var(--ink);color:#fff;
  border:0;cursor:pointer;font:inherit;text-align:left}
.areahd .t{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:13px}
.areahd .sub{margin-left:auto;font-family:var(--mono);font-size:11px;color:#b9b9b2}
.areahd .chev{font-size:11px;line-height:1;transition:transform .15s}
.areagrp.collapsed .areahd .chev{transform:rotate(-90deg)}
.areagrp.collapsed .areabody{display:none}
.areabody{border:1px solid var(--ink);border-top:0;padding:14px 14px 1px}
.areabody .card{margin-bottom:14px}
.areabody .card:last-child{margin-bottom:14px}

/* colori tenui di stato riga (vista azienda): verde=completo, giallo=parziale, grigio=non disp. */
tr.r-done td{background:#f1f6f1}
tr.r-partial td{background:#faf6e6}
tr.r-na td{background:#f3f3f1}
/* all'hover NON cancellare il colore di stato: usa una tinta un filo più marcata */
tbody tr.r-done:hover td{background:#e7f0e7}
tbody tr.r-partial:hover td{background:#f4eecf}
tbody tr.r-na:hover td{background:#ebebe7}
.btn.sm{vertical-align:middle}
.btn.icobtn{padding:6px 9px}            /* stessa altezza di .btn.sm (Carica/Redigi/Aggiungi) */
.btn.icobtn .ic{display:block}

/* link documento + rimozione file nella checklist */
.num a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.renamedoc{margin-left:6px;color:var(--mut)!important;text-decoration:none!important}
.rmdoc{margin-left:4px;color:var(--bad)!important;text-decoration:none!important;font-weight:700}

/* avanzamento "parlante" del riconoscimento */
.steps{font-family:var(--mono);font-size:11.5px;line-height:1.75}
.steps .stp.done{color:var(--mut)}
.steps .stp.act{color:var(--ink);font-weight:700}
.steps .stp.pend{color:#c2c2bb}
@keyframes stpblink{0%,100%{opacity:1}50%{opacity:.45}}
.steps .stp.act{animation:stpblink 1.1s ease-in-out infinite}

/* modale ad albero (scelta requisito per collocazione manuale) */
.modal-bg{position:fixed;inset:0;background:rgba(20,20,20,.5);display:flex;align-items:center;justify-content:center;z-index:60;padding:24px}
.modal{background:var(--white);border:1px solid var(--ink);width:100%;max-width:560px;max-height:82vh;display:flex;flex-direction:column}
.modal .mhd{padding:14px 18px;border-bottom:1px solid var(--ink);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:700}
.modal .mbd{padding:14px 18px;overflow:auto}
.modal .mft{padding:12px 18px;border-top:1px solid var(--ink);display:flex;gap:10px;justify-content:flex-end}
.mtree-area{margin-bottom:12px}
.mtree-area>.ah{font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:12px;padding:6px 0;border-bottom:1px solid var(--ink)}
.mtree-sec{font-family:var(--mono);font-size:11px;color:var(--mut);margin:9px 0 2px}
.mtree-req{display:flex;gap:9px;align-items:flex-start;padding:5px 6px;cursor:pointer;font-size:13px}
.mtree-req:hover{background:var(--paper)}
.mtree-req input{margin-top:3px}
.mtree-req .c{font-family:var(--mono);font-size:11px;color:var(--mut)}

.card{background:var(--white);border:1px solid var(--ink);margin-bottom:22px}
.card .hd{padding:12px 16px;border-bottom:1px solid var(--ink);display:flex;align-items:center;gap:11px;
  text-transform:uppercase;letter-spacing:.05em;font-size:11.5px;font-weight:700}
.card .hd .sub{margin-left:auto;font-weight:400;text-transform:none;letter-spacing:0;color:var(--mut);font-size:12px;font-family:var(--mono)}
.card .bd{padding:16px}
.card .bd.flush{padding:4px 10px;overflow-x:auto}

table{width:100%;border-collapse:collapse;font-size:12.5px}
th{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--mut);
  text-align:left;padding:11px 10px;border-bottom:1px solid var(--ink);white-space:nowrap}
td{padding:10px;border-bottom:1px solid var(--line-2);vertical-align:middle}
tr:last-child td{border-bottom:0}
tbody tr:hover td{background:var(--paper)}
.src{font-family:var(--mono);font-size:12px;overflow-wrap:break-word;min-width:150px}
.num{font-family:var(--mono);font-size:11.5px;color:var(--mut);white-space:nowrap}
.trace.num{white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.55}

.tag{font-family:var(--mono);font-size:10px;padding:2px 7px;letter-spacing:.02em;white-space:nowrap;
  border:1px solid var(--line);text-transform:uppercase}
.tag.ok{background:var(--okbg);color:var(--ok);border-color:transparent}
.tag.warn{background:var(--warnbg);color:var(--warn);border-color:transparent}
.tag.bad{background:var(--badbg);color:var(--bad);border-color:transparent}
.tag.n{background:var(--paper-2);color:var(--mut);border-color:transparent}
.tag.inkk{background:var(--ink);color:#fff;border-color:var(--ink)}
.muted{color:var(--mut)} .small{font-size:12px}
.empty{padding:34px 16px;text-align:center;color:var(--dim);font-family:var(--mono);font-size:12px;letter-spacing:.04em}

/* statistiche */
.stat{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--ink);margin-bottom:24px;background:var(--white)}
.stat.s4{grid-template-columns:repeat(4,1fr)}
@media(max-width:680px){.stat.s4{grid-template-columns:repeat(2,1fr)}}
.stat .s{padding:16px 20px;border-right:1px solid var(--line)}
.stat .s:last-child{border-right:0}
.stat .s .n{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:var(--tx);color:var(--mut)}
.stat .s b{display:block;font-size:28px;font-weight:800;letter-spacing:-.02em;margin:5px 0 2px}
.stat .s p{margin:0;font-size:11.5px;color:var(--mut)}

/* griglia deal */
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.dcard{background:var(--white);border:1px solid var(--ink);cursor:pointer;transition:.12s;text-align:left;padding:0}
.dcard:hover{transform:translateY(-2px);box-shadow:4px 4px 0 var(--ink)}
.dcard .h{padding:15px 17px;border-bottom:1px solid var(--ink);display:flex;align-items:baseline;gap:10px}
.dcard .h b{font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.02em}
.dcard .h .mono{margin-left:auto;font-size:10px;color:var(--dim)}
.dcard .b{padding:13px 17px;font-size:12px;color:var(--mut);display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* drop-zone */
.drop{border:1.5px dashed var(--ink);background:var(--white);padding:34px 20px;text-align:center;cursor:pointer;
  transition:.12s;margin-bottom:22px;position:relative}
.drop:hover,.drop.over{background:var(--paper-2)}
.drop.over{outline:3px solid var(--ink);outline-offset:-6px}
.drop .big{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}
.drop .sub{font-family:var(--mono);font-size:11px;color:var(--mut)}
.drop input{display:none}
.drop .busy{display:none;font-family:var(--mono);font-size:11px;color:var(--ink);margin-top:8px}
.drop.loading .busy{display:block}

/* riga invito-link */
.invlink{display:flex;gap:8px;align-items:center;background:var(--okbg);border:1px solid var(--ok);
  padding:10px 12px;margin-bottom:16px}
.invlink code{flex:1;font-family:var(--mono);font-size:11px;word-break:break-all;color:var(--ink)}

/* form inline (invito) */
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:10px;align-items:end}
@media(max-width:860px){.fgrid{grid-template-columns:1fr}}

/* registro */
.logrow{display:flex;gap:13px;padding:10px 4px;border-bottom:1px solid var(--line-2);font-size:12.5px;align-items:baseline}
.logrow:last-child{border-bottom:0}
.logrow .ts{font-family:var(--mono);font-size:10.5px;color:var(--dim);flex:0 0 118px}
.logrow .who{font-family:var(--mono);font-size:11px;color:var(--mut);flex:0 0 auto}
.logrow .what b{text-transform:uppercase;font-size:10.5px;letter-spacing:.06em}
.logrow .what .d{color:var(--mut);font-family:var(--mono);font-size:11px;margin-left:8px;word-break:break-all}

/* barra confidenza (dal POC) */
.conf{font-family:var(--mono);font-size:11px;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.bar{height:6px;width:52px;background:var(--paper-2);display:inline-block;position:relative}
.bar i{display:block;height:100%;background:var(--ink)}
.bar.lo i{background:var(--warn)} .bar.vlo i{background:var(--bad)}
.dest{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;
  background:var(--ink);color:#fff;padding:3px 8px;white-space:nowrap}

.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;
  padding:13px 22px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;display:none;z-index:50}
.toast.show{display:block;animation:rise .25s}
