:root{font-family:Segoe UI,Arial,sans-serif;color:#202124;background:#f5f6f8}*{box-sizing:border-box}body{margin:0}main{max-width:1450px;margin:auto;padding:28px}header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start}h1{margin:0 0 8px}h1 small{font-size:.45em;font-weight:500;color:#687078}h2{margin-top:0}.pill,.status{border-radius:999px;padding:7px 12px;background:#e8eaed}.notice{background:#fff8dd;border:1px solid #ead58d;padding:14px 16px;border-radius:10px;margin:20px 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px}.card,.jobs{background:white;border:1px solid #dfe2e5;border-radius:12px;padding:18px;box-shadow:0 1px 2px #0000000d}.wide{max-width:1100px}.card p{color:#5d646b}.card form{display:grid;gap:10px}label{display:grid;gap:5px;font-size:14px;font-weight:600}input,select,button{font:inherit;padding:9px;border:1px solid #c9ced3;border-radius:7px;background:#fff}button{background:#981b1e;color:#fff;border:0;font-weight:700;cursor:pointer}.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check{display:flex;grid-template-columns:auto 1fr;align-items:center}.jobs{margin-top:18px;overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px;border-bottom:1px solid #eceff1}.status.completed{background:#dff3e4}.status.failed{background:#fde1e1}.status.running{background:#e1edff}.progress{height:20px;background:#eceff1;border-radius:10px;overflow:hidden}.progress div{height:100%;background:#981b1e;transition:width .25s}.download{display:inline-block;margin:5px 8px 5px 0;padding:8px 10px;background:#eef2f5;border-radius:7px;text-decoration:none;color:#202124}pre{white-space:pre-wrap;background:#15171a;color:#e8eaed;padding:14px;border-radius:8px;max-height:520px;overflow:auto;font-size:12px}@media(max-width:650px){main{padding:14px}.row{grid-template-columns:1fr}header{display:block}.pill{display:inline-block;margin-top:8px}}

/* v0.2.3: diagnostica motori a comparsa */
.diagnostics{background:#fff;border:1px solid #dfe2e5;border-radius:12px;margin:18px 0;box-shadow:0 1px 2px #0000000d;overflow:hidden}
.diagnostics summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 16px;cursor:pointer;font-weight:700;user-select:none}
.diagnostics summary::-webkit-details-marker{display:none}
.diagnostics summary:after{content:'▾';font-size:18px;transition:transform .15s ease}
.diagnostics[open] summary:after{transform:rotate(180deg)}
.diagnostics summary small{font-weight:400;color:#687078;margin-left:auto}
.diagnostics-body{padding:0 16px 14px;overflow:auto;border-top:1px solid #eceff1}
@media(max-width:650px){.diagnostics summary small{display:none}}
/* v0.2.4: continuità fra fasi e diagnostica job */
.continues{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.continues form{margin:0}.continue{background:#1f6f43;padding:10px 14px}.jobdiag{margin:18px 0;border:1px solid #dfe2e5;border-radius:8px;padding:10px 12px;background:#fafbfc}.jobdiag summary{cursor:pointer;font-weight:700}.jobdiag p{margin:8px 0}label small{font-weight:400;color:#687078}
/* v0.2.5: download artefatti esplicito e fallback scan output */
.downloads-box{margin:18px 0;padding:14px;border:1px solid #d8dde2;border-radius:10px;background:#fafbfc}.downloads-box h3{margin:0 0 10px}.download{border:1px solid #d8dde2}.download:hover{background:#e1e8ee}.download.all{background:#1f6f43;color:#fff;border-color:#1f6f43;font-weight:700}.muted{color:#687078;font-size:14px}
.buttonlink{display:inline-block;text-decoration:none;background:#1f6feb;color:white;padding:9px 14px;border-radius:7px;font-weight:700}.buttonlink:hover{filter:brightness(.95)}
.primarybig{margin-top:18px;font-size:1.02rem;padding:12px 18px}.toolbar{margin:12px 0}.mans-head{display:flex;justify-content:space-between;align-items:center}.risk{border:1px solid #d9dee7;border-radius:8px;margin:8px 0;background:#fff}.risk summary{cursor:pointer;padding:10px;font-weight:700}.risk-body{padding:0 12px 12px}.keyenter{display:flex;gap:18px;margin:10px 0}.qa-row{display:grid;grid-template-columns:1fr 170px;gap:14px;align-items:center;padding:7px 0;border-bottom:1px solid #eef1f5}.qa-row select{width:100%}.hidden{display:none!important}.risk h4{margin:14px 0 5px}.risk h5{margin:12px 0 2px;color:#56606f}.danger{background:#b42318;color:white;border:0;border-radius:6px;padding:7px 11px;cursor:pointer}.downloads-box .danger{margin-top:10px}.hazard-q{padding:10px 0;border-bottom:1px solid #e5e8ee}.hazard-q small{color:#666}.hazard-q textarea{width:100%}.continues .buttonlink{margin-right:8px}
@media(max-width:760px){.qa-row{grid-template-columns:1fr}.row{display:block}}
.status.finalizing{background:#e8efff;color:#234f9e}

/* v11 handoff patch: master server, branding e proposte IA */
.brand-head{display:flex;align-items:center;gap:14px}.brand-logo{max-height:54px;max-width:180px;object-fit:contain}.master-info{padding:8px 10px;margin:6px 0 8px;border:1px solid #e0b8be;background:#fff7f8;border-radius:6px;font-size:.9rem}.app-footer{margin:28px 0 8px;padding:12px 0;border-top:1px solid #ddd;color:#666;font-size:.88rem;text-align:right}.ai-confirm{border-left:4px solid #c8102e}.muted{color:#666}
body{background:var(--brand-bg,#f5f6f8)}button,.progress div{background:var(--brand-primary,#981b1e)}.brand-head h1{color:var(--brand-primary,#981b1e)}

/* pilot multiutente/login */
.user-box{display:grid;gap:4px;justify-items:end;text-align:right}.user-box small,.topnav small{color:#687078}.user-actions,.admin-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.user-actions form,.admin-actions form{margin:0}.secondary,.buttonlink.compact{background:#eef2f5;color:#202124}.buttonlink.compact{padding:7px 10px}.bell{min-width:58px}.bell span{display:inline-block;min-width:20px;border-radius:999px;background:#fff;color:var(--brand-primary,#981b1e);padding:1px 5px}.bell span.empty{opacity:.55}.job-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px;border:1px solid #eceff1;border-radius:8px;background:#fafafa}.topnav{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px}.job-ref{font-size:1.05rem;color:#5d646b}.auth-page{background:#f5f6f8}.auth-main{min-height:100vh;display:grid;place-items:center;padding:20px}.auth-card{width:min(460px,100%);background:#fff;border:1px solid #dfe2e5;border-radius:14px;padding:28px;box-shadow:0 4px 18px #00000012}.auth-card form{display:grid;gap:12px}.auth-logo{max-width:180px;max-height:70px;object-fit:contain}.inline-form{display:flex;gap:12px;align-items:end}.inline-form label{max-width:180px}.danger{background:#a51d24;color:white}.muted{color:#687078}
@media(max-width:650px){.user-box{justify-items:start;text-align:left}.job-meta{grid-template-columns:1fr}.topnav{align-items:flex-start;flex-wrap:wrap}.inline-form{display:grid}}

.notify-toast{position:fixed;right:20px;bottom:20px;z-index:9999;display:grid;gap:5px;max-width:360px;padding:14px 16px;border-radius:10px;background:#202124;color:#fff;box-shadow:0 8px 28px #0005;cursor:pointer}.notify-toast span{font-size:14px}

/* dashboard uniforme: card della stessa dimensione e azione primaria allineata in basso */
.dashboard-grid{align-items:stretch}
.dashboard-grid>.card{display:flex;flex-direction:column;min-width:0;overflow:auto}
.dashboard-grid>.card>form{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0}
.dashboard-grid>.card>form>button:last-child{margin-top:auto;width:100%;min-height:40px}
.dashboard-grid input:not([type="checkbox"]):not([type="radio"]),
.dashboard-grid select,.dashboard-grid textarea{width:100%;min-width:0}
.dashboard-grid .row,.dashboard-grid .job-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
.master-info.ok{border-color:#b9d9c4;background:#f3fbf5}
.master-info.missing{border-color:#e0b8be;background:#fff7f8}
.master-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:12px 0}
.master-admin-item{border:1px solid #e1e5e9;border-radius:10px;padding:14px;background:#fafbfc;min-width:0}
.master-admin-item h3{margin:0 0 8px}.master-admin-item form{display:grid;gap:10px}
.import-source{margin:6px 0 12px;padding:8px 10px;border-left:3px solid var(--brand-primary,#981b1e);background:#fafafa;color:#5d646b;font-size:.86rem}
@media(min-width:1250px){.dashboard-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:900px) and (max-width:1249px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:899px){.dashboard-grid{grid-template-columns:1fr}.dashboard-grid>.card{height:auto!important}.master-admin-grid{grid-template-columns:1fr}}
@media(max-width:560px){.dashboard-grid .row,.dashboard-grid .job-meta{grid-template-columns:1fr}}
.dashboard-grid>.card>.buttonlink:last-child{margin-top:auto;width:100%;text-align:center;min-height:40px}

/* v0.2.17: libreria Attrezzature JSON + Word */
.library-search{display:grid;grid-template-columns:minmax(280px,1fr) auto auto;gap:10px;align-items:end}.library-search label{min-width:0}.library-search input{width:100%}.library-table code{font-size:.8rem}.library-table td{vertical-align:top}.library-table .download{padding:6px 8px;margin:2px}.library-table .status{display:inline-block}.library-table small{line-height:1.45}
@media(max-width:720px){.library-search{grid-template-columns:1fr}.library-table{overflow-x:auto}}

/* MMC precompilazione IA opzionale */
.ai-prefill-box{border-left:4px solid var(--brand-primary,#c8102e)}
.ai-key{display:inline-block;padding:.1rem .45rem;border-radius:999px;font-weight:700;font-size:.85em}
.ai-document-key,.ai-document{background:#e6f4ea;border-color:#86c89a}
.ai-suggested-key,.ai-suggested{background:#fff4ce;border-color:#d6b656}
.ai-confirmed{background:#eef6ff;border-color:#9abde5}
.keyenter.ai-document,.keyenter.ai-suggested,.keyenter.ai-confirmed,.qa-row.ai-document,.qa-row.ai-suggested,.qa-row.ai-confirmed{border-radius:8px;padding:.45rem}
.ai-field-info{display:flex;flex-direction:column;gap:.15rem;margin-top:.25rem;font-size:.82rem}
.ai-badge{font-weight:800}
.ai-evidence{font-style:italic}
.ai-reason{opacity:.8}
.ai-risk-actions{margin:.5rem 0}.ai-risk-actions button{width:auto}
.ai-mansione-summary{padding:.6rem .8rem;margin:.6rem 0;border-radius:8px;background:#f4f6f8;font-weight:700}
.qa-question{min-width:0}.qa-row{align-items:flex-start}

/* MMC IA semplice v0.2.19 */
.ai-assistant{border:1px solid #d9dde4;background:#fff}
.ai-assistant-head{display:flex;align-items:center;justify-content:space-between;gap:18px}
.ai-assistant-head h2{margin-bottom:4px}
.optional-pill{display:inline-block;font-size:.72rem;font-weight:700;padding:3px 8px;border-radius:999px;background:#eef1f5;color:#4a5568;vertical-align:middle}
.ai-toggle{display:flex;align-items:center;gap:9px;padding:10px 14px;border:1px solid #cfd5dd;border-radius:10px;background:#f7f8fa;white-space:nowrap;font-weight:700;cursor:pointer}
.ai-toggle input{width:18px;height:18px}
.ai-selection-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0 8px}
.ai-selection-toolbar .secondary{width:auto;padding:7px 10px;background:#fff;color:#222;border:1px solid #cfd5dd}
.ai-advanced{margin:12px 0 14px;border:1px solid #e2e5e9;border-radius:9px;padding:10px 12px;background:#fafbfc}
.ai-advanced summary{cursor:pointer;font-weight:700}
.ai-legend{margin-top:14px}
.mans-actions{display:flex;align-items:center;gap:10px}
.ai-pick-wrap{display:flex;align-items:center;gap:6px;border:1px solid #d4d9df;border-radius:8px;padding:7px 9px;background:#f7f8fa;font-size:.92rem;font-weight:700;cursor:pointer}
.ai-pick-wrap input{width:17px;height:17px}
.ai-pick-wrap:has(input:disabled){opacity:.48;cursor:not-allowed}
@media(max-width:700px){.ai-assistant-head,.ai-selection-toolbar{align-items:stretch;flex-direction:column}.ai-toggle{justify-content:center}.mans-actions{flex-wrap:wrap}}

/* MMC v11 - scelta Manuale / Assistita IA più evidente */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.mmc-mode-choice{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}
.mmc-mode{display:flex;align-items:center;gap:12px;text-align:left;padding:14px 16px;background:#fff;color:#222;border:2px solid #d7dce2;border-radius:12px;cursor:pointer;min-height:72px}
.mmc-mode:hover{border-color:#aeb7c2;background:#fafbfc}.mmc-mode.active{border-color:var(--brand-primary,#c8102e);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-primary,#c8102e) 14%,transparent);background:#fff8f9}
.mmc-mode .mode-icon{font-size:1.45rem;line-height:1}.mmc-mode span:last-child{display:flex;flex-direction:column;gap:3px}.mmc-mode small{font-weight:400;color:#667085}
.ai-global-summary{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;margin:12px 0;border:1px solid #b9d7c3;background:#f3fbf5;border-radius:10px}.ai-global-summary .secondary{width:auto;white-space:nowrap}.ai-focus{outline:3px solid #d6b656;outline-offset:3px;transition:outline-color .2s}
@media(max-width:700px){.mmc-mode-choice{grid-template-columns:1fr}.ai-global-summary{align-items:stretch;flex-direction:column}.ai-global-summary .secondary{width:100%;white-space:normal}}

/* v0.2.21: batch manuali caricati dal tecnico */
.manual-batch-card{grid-column:span 2}.manual-batch-list{display:grid;gap:10px}.manual-batch-row{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(240px,1.6fr) minmax(120px,.7fr) minmax(100px,.55fr);gap:10px;align-items:end;padding:10px;border:1px solid #e1e5e9;border-radius:9px;background:#fafbfc}.manual-file-name{font-weight:700;overflow-wrap:anywhere;padding:9px 0}.manual-batch-row label{margin:0}.manual-batch-row input,.manual-batch-row select{width:100%}.manual-batch-card button:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:1000px){.manual-batch-card{grid-column:span 1}.manual-batch-row{grid-template-columns:1fr 1fr}.manual-file-name{grid-column:1/-1}}
@media(max-width:650px){.manual-batch-row{grid-template-columns:1fr}}

/* v0.2.22 - precheck OCR etichetta chimica */
.chemical-label-card .notice.mini{margin:10px 0;padding:10px 12px;font-size:.92rem}

/* annullamento job: azioni affiancate in tabella e stati non riusciti */
.job-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.job-actions form{margin:0}
.job-actions .compact{padding:7px 10px;font-size:.9rem}
.status.cancelled{background:#eceff1;color:#5d646b}
.status.interrupted{background:#fdf0dd;color:#8a5a1b}
#cancel-box form{margin:0}
/* log tecnico chiuso per default: su un job riuscito l'utente non deve
   trovarsi davanti un blocco scuro di log (handoff §26.3) */
.jobdiag pre{margin-top:8px}
.notice.error-summary{background:#fdecea;border-color:#e0b4ae}

/* P0: compilazione massiva come azione secondaria (handoff §17.2/§18.5) */
.quickfill{display:inline-block;margin:0 8px 0 0;padding:8px 12px;background:#fafbfc}
.quickfill summary{font-weight:700;cursor:pointer}
.quickfill p{margin:8px 0}
.quickfill button{width:auto;margin-top:4px}
.toolbar .quickfill{vertical-align:top}

/* P1: contesto "Lavoro corrente" (handoff §35) */
.work-context{display:flex;flex-wrap:wrap;align-items:end;gap:14px;margin:18px 0;padding:14px 16px;border-radius:10px;border:1px solid #dfe2e5;background:#fff}
.work-context.active{border-color:#b9d9c4;background:#f3fbf5}
.wc-label{display:block;font-size:.72rem;font-weight:800;letter-spacing:.06em;color:#5d646b}
.wc-current{display:flex;flex-direction:column;gap:2px;font-size:1.05rem}
.wc-actions,.wc-set{display:flex;align-items:end;gap:10px;margin:0}
.wc-set{flex:1;flex-wrap:wrap}
.wc-set label{min-width:200px;flex:1}
.wc-actions{margin-left:auto}
.work-context .muted{flex-basis:100%;margin:0}
.wc-inline{margin:0 0 14px;padding:8px 12px;border-left:3px solid #b9d9c4;background:#f3fbf5;color:#3f4a52}

/* P1: stepper Attrezzature (handoff §8.1) */
.stepper{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:0 0 16px;padding:0;counter-reset:step}
.stepper li{display:flex;align-items:center;gap:8px;flex:1;min-width:190px;padding:10px 14px;border:1px solid #dfe2e5;border-radius:9px;background:#fff;font-weight:700}
.stepper small{display:block;font-weight:400;color:#687078}
.step-n{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--brand-primary,#981b1e);color:#fff;font-size:.85rem}

/* P1: origine esplicita dell'elenco in Fase 1 (handoff §10) */
.source-choice{margin:0;padding:10px 12px;border:1px solid #dfe2e5;border-radius:9px;background:#fafbfc}
.source-choice legend{font-weight:700;font-size:.9rem;padding:0 6px}

/* P1: risultato principale vs supporto tecnico (handoff §26.2) */
.download.main{background:#eef6ee;border-color:#b9d9c4;font-weight:700}
.downloads-box h4{margin:14px 0 6px;font-size:.92rem;color:#5d646b}

/* P2: filtri "I miei lavori" (handoff §25.4) */
.jobs-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.jobs-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.jobs-filters input[type="search"]{min-width:230px}
.jf{padding:7px 12px}
.jf.active{background:var(--brand-primary,#981b1e);color:#fff}
.jobs-none{margin:12px 0 0}
.inline-warning{margin:6px 0 0;padding:8px 10px;border-radius:7px;background:#fdf0dd;border:1px solid #e2c48a;color:#7a5312;font-size:.9rem;font-weight:600}

/* Controllo coerenza DVR: ultima funzione della schermata, fuori dalla griglia */
.coherence-card{max-width:none;margin:18px 0 0;border-left:4px solid var(--brand-primary,#981b1e)}
.coherence-card form{display:grid;gap:10px;max-width:720px}
.coherence-card .muted{font-size:.9rem}

/* Revisione dei casi dubbi di anonimizzazione: tre colonne perche' la
   decisione richiede di vedere insieme il termine, la frase in cui compare e
   la scelta. Su schermo stretto tornano in colonna, nello stesso ordine. */
.review-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0 12px;padding:12px 14px;border:1px solid #dfe2e5;border-radius:9px;background:#fafbfc}
.review-toolbar .muted{flex:1 1 340px;margin:0;line-height:1.45}
.review-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(260px,2fr) 190px;gap:16px;align-items:start;padding:12px 14px;margin:8px 0;border:1px solid #e3e6ea;border-radius:9px;background:#fff}
.review-row:hover{border-color:#c9ced3}
.review-term b{display:block;font-size:1.02rem}
.review-term small{display:block;color:#687078;font-size:.82rem;margin-top:2px}
.review-context{color:#5d646b;font-size:.9rem}
.review-quote{font-style:italic;margin:0 0 4px}
.review-choice{display:grid;gap:6px}
.review-choice .check{font-weight:600;gap:8px;font-size:.92rem}
.review-choice input[type=radio]{padding:0;margin:0}
/* Solo un contrassegno visivo: il conteggio non decide nulla (vedi
   LIKELY_TERM_THRESHOLD in coherence/candidates.py). */
.review-row.likely-term{background:#fbfcfd}
.notice.mini{margin:16px 0 0;padding:10px 12px;font-size:.92rem}
@media(max-width:860px){.review-row{grid-template-columns:1fr}}
