:root{--gap:1rem}body{background:#f4f7f9;color:#263238}.container-wide{width:min(98%,1600px);margin:1.5rem auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:var(--gap);margin-top:1rem}.card{border-radius:14px;overflow:hidden}.stats{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin:1rem 0}.stats span{background:#eceff1;padding:.8rem;border-radius:10px}.stats b{display:block;font-size:1.15rem}.actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1rem}.actions form{margin:0}form button{margin-top:.6rem}.table-scroll{overflow:auto}.table-scroll input{min-width:120px}.log-view,td pre{white-space:pre-wrap;word-break:break-word}.log-view{background:#101820;color:#d7f9e9;padding:1rem;border-radius:10px;max-height:78vh;overflow:auto}.chip{max-width:100%;overflow:hidden;text-overflow:ellipsis}.tabs{border-radius:10px}section{padding-top:.5rem}@media(max-width:600px){.container-wide{width:96%;margin:.7rem auto}.grid{grid-template-columns:1fr}.brand-logo{font-size:1.35rem!important}.stats{grid-template-columns:1fr}.btn{width:100%;margin:.25rem 0}.actions,.actions form{width:100%}.tabs{overflow-x:auto}.tab{min-width:130px}.secondary-content{display:none}}
.snapshot-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin:.4rem 0 1rem}.snapshot-actions form{margin:0}.snapshot-actions .btn-small{margin:0}.danger-upload{padding:.8rem;border:1px solid #ffcc80;border-radius:8px;background:#fff8e1}.stats small{display:block}.table-scroll pre{white-space:pre-wrap;word-break:break-word;max-width:28rem;margin:0}@media(max-width:600px){.snapshot-actions,.snapshot-actions form{width:100%}.snapshot-actions .btn-small{width:100%}}

/* V008: solo tab Progetti */
#projects{width:90%;margin:0 auto;padding:0}.projects-90{width:100%;overflow:visible}.project-matrix{width:100%;max-width:100%;table-layout:fixed;border-collapse:collapse;font-size:clamp(7px,.54vw,11px)}.project-matrix th,.project-matrix td{padding:clamp(2px,.25vw,5px);text-align:center;vertical-align:middle;white-space:normal;overflow-wrap:anywhere;line-height:1.12;border-bottom:1px solid #90a4ae}.project-matrix thead th{background:#263238;color:#fff;font-size:clamp(6px,.48vw,10px)}.project-matrix tr.project-start>*{border-top:4px solid #000}.project-matrix tr.env-row>td{border-top:1px solid #78909c}.project-matrix .project-name{font-weight:700;background:#eceff1}.project-matrix .sep{width:3px!important;padding:0!important;background:#000;border:0!important}.project-matrix th:nth-child(1){width:6.5%}.project-matrix th:nth-child(2){width:4%}.project-matrix th:nth-child(3),.project-matrix th:nth-child(5),.project-matrix th:nth-child(12){width:4.2%}.project-matrix th:nth-child(6),.project-matrix th:nth-child(13){width:3.8%}.project-matrix th:nth-child(7),.project-matrix th:nth-child(9),.project-matrix th:nth-child(11),.project-matrix th:nth-child(14),.project-matrix th:nth-child(16){width:3.2%}.project-matrix th:nth-child(8),.project-matrix th:nth-child(15){width:5%}.project-matrix th:nth-child(18),.project-matrix th:nth-child(19),.project-matrix th:nth-child(21){width:6%}.project-matrix form{margin:0}.round{display:inline-flex!important;align-items:center;justify-content:center;width:clamp(22px,1.8vw,34px);height:clamp(22px,1.8vw,34px);min-width:0;border:0;border-radius:50%;padding:0!important;margin:1px!important;color:#fff!important;box-shadow:none;cursor:pointer}.round .material-icons{font-size:clamp(13px,1.1vw,20px);line-height:1}.round.black{background:#000!important}.round.green{background:#2e7d32!important}.round.red{background:#c62828!important}.round:disabled{opacity:.28;cursor:not-allowed}.status{display:inline-flex;align-items:center;gap:3px;font-weight:700}.status i{width:8px;height:8px;border-radius:50%;display:inline-block}.status.ok{color:#2e7d32}.status.ok i{background:#2e7d32}.status.ko{color:#c62828}.status.ko i{background:#c62828}.modal-log{white-space:pre-wrap;word-break:break-word;background:#101820;color:#d7f9e9;padding:1rem;border-radius:8px}.modal-footer .round{margin:8px!important}@media(max-width:900px){#projects{width:98%}.project-matrix{font-size:6.5px}.project-matrix thead th{font-size:6px}.round{width:21px;height:21px}.round .material-icons{font-size:13px}}
/* V009: rifinitura esclusiva tab Progetti */
#projects{width:95%!important;margin:0 auto!important}.projects-95{width:100%;overflow:visible}.project-matrix{width:100%;max-width:100%;table-layout:fixed;border-collapse:collapse;font-size:clamp(7px,.56vw,11px)}.project-matrix th,.project-matrix td{padding:clamp(2px,.25vw,5px);text-align:center;vertical-align:middle;white-space:normal;overflow-wrap:anywhere;line-height:1.12;border-bottom:1px solid #90a4ae}.project-matrix thead th{background:#263238;color:#fff;font-size:clamp(6px,.49vw,10px)}.project-matrix tr.project-start>*{border-top:4px solid #fff!important}.project-matrix tr.env-row>td{border-top:1px solid #78909c}.project-matrix .sep{width:0!important;min-width:0!important;padding:0!important;background:transparent!important;border-left:1px solid #111!important;border-right:0!important}.project-matrix .project-name{font-weight:700;background:#eceff1}.project-matrix form{margin:0}.project-matrix th:nth-child(1){width:6.2%}.project-matrix th:nth-child(2){width:3.3%}.project-matrix th:nth-child(3){width:3.8%}.project-matrix th:nth-child(4),.project-matrix th:nth-child(6),.project-matrix th:nth-child(12){width:4.2%}.project-matrix th:nth-child(7),.project-matrix th:nth-child(9),.project-matrix th:nth-child(11),.project-matrix th:nth-child(13),.project-matrix th:nth-child(15){width:3.6%}.project-matrix th:nth-child(8),.project-matrix th:nth-child(14){width:5%}.project-matrix th:nth-child(17),.project-matrix th:nth-child(18),.project-matrix th:nth-child(20){width:6%}@media(max-width:900px){#projects{width:98%!important}.project-matrix{font-size:6.5px}.project-matrix thead th{font-size:6px}}
/* V010: rifinitura grafica e toast */
#projects{width:100vw!important;max-width:100vw!important;margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important;padding:0 clamp(2px,.35vw,7px)!important;box-sizing:border-box}.projects-95{width:100%!important;max-width:100%!important;overflow:visible!important}.project-matrix{width:100%!important;max-width:100%!important;table-layout:fixed!important;font-size:clamp(6px,.52vw,10.5px)!important}.project-matrix th,.project-matrix td{padding:clamp(1px,.20vw,4px)!important;line-height:1.08!important}.project-matrix thead th{font-size:clamp(5.5px,.46vw,9.5px)!important}.project-matrix tr.project-start>*{border-top:5px solid #fff!important}.project-matrix .sep{width:0!important;min-width:0!important;max-width:0!important;padding:0!important;background:transparent!important;border-left:1px solid #111!important}.tabs .tab a,.tabs .tab a:hover,.tabs .tab a.active{color:#000!important}.tabs .indicator{background-color:#000!important;height:3px!important}.admin-toast{border-radius:8px!important;color:#fff!important;font-weight:700!important}.admin-toast-success{background:#2e7d32!important}.admin-toast-error{background:#c62828!important}@media(max-width:900px){#projects{width:100vw!important}.project-matrix{font-size:5.7px!important}.project-matrix thead th{font-size:5.2px!important}.round{width:19px!important;height:19px!important}.round .material-icons{font-size:12px!important}}
/* V011 Progetti2 */
#projects .projects2-table th,#projects .projects2-table td{text-align:center;vertical-align:middle;white-space:nowrap}#projects .projects2-project-start>*{border-top:5px solid #fff}#projects .projects2-environment-row>td{border-top:1px solid #78909c}#projects form{margin:0}.p2-round{display:inline-flex!important;align-items:center;justify-content:center;width:34px;height:34px;min-width:34px;border:0;border-radius:50%;padding:0!important;margin:1px!important;color:#fff!important}.p2-round i{font-size:20px}.p2-black{background:#000!important}.p2-green{background:#2e7d32!important}.p2-red{background:#c62828!important}.p2-round:disabled{opacity:.28}.modal-log{white-space:pre-wrap;word-break:break-word;background:#101820;color:#d7f9e9;padding:1rem;border-radius:8px}
/* V015: tabella Progetti senza intestazioni e con separatori richiesti */
#projects .projects2-table thead{display:none!important}
#projects .projects2-table .p2-section-end{border-right:1px solid #000!important}
#projects .projects2-project-start>*{border-top:4px solid #000!important}
#projects .projects2-table button.p2-round:hover,
#projects .projects2-table button.p2-round:focus,
#projects .projects2-table a.p2-round:hover,
#projects .projects2-table a.p2-round:focus{color:#fff!important}
#projects .projects2-table button.p2-round:hover .material-icons,
#projects .projects2-table button.p2-round:focus .material-icons,
#projects .projects2-table a.p2-round:hover .material-icons,
#projects .projects2-table a.p2-round:focus .material-icons{color:#fff!important;opacity:1!important;visibility:visible!important}
/* V016: larghezze uniformi delle card in tutte le tab */
.container-wide > .tabs{
    width:50vw!important;
    max-width:50vw!important;
    margin-left:auto!important;
    margin-right:auto!important;
}
.container-wide > section > .card{
    width:80vw!important;
    max-width:80vw!important;
    margin-left:calc(50% - 40vw)!important;
    margin-right:calc(50% - 40vw)!important;
    box-sizing:border-box!important;
}
@media(max-width:600px){
    .container-wide > .tabs{
        width:50vw!important;
        max-width:50vw!important;
    }
    .container-wide > section > .card{
        width:80vw!important;
        max-width:80vw!important;
        margin-left:calc(50% - 40vw)!important;
        margin-right:calc(50% - 40vw)!important;
    }
}
/* V017: puntatore azioni, Log sistema in card e scrollbar nascoste */
a[href],button:not(:disabled),input[type="submit"]:not(:disabled),input[type="button"]:not(:disabled),input[type="file"]:not(:disabled),label[for],.modal-trigger,.collection-item{cursor:pointer!important}
button:disabled,input:disabled{cursor:not-allowed!important}
html,body,.table-scroll,.tabs,.log-view,.modal-content,.collection{
    scrollbar-width:none!important;
    -ms-overflow-style:none!important;
}
html::-webkit-scrollbar,body::-webkit-scrollbar,.table-scroll::-webkit-scrollbar,.tabs::-webkit-scrollbar,.log-view::-webkit-scrollbar,.modal-content::-webkit-scrollbar,.collection::-webkit-scrollbar{
    width:0!important;
    height:0!important;
    display:none!important;
}
/* V018: aggiornamento ADMIN dalla barra superiore */
.admin-navbar{position:relative}
.admin-update-trigger{position:absolute;right:18px;top:0;height:64px;display:flex;align-items:center;justify-content:center;color:#fff!important;cursor:pointer!important}
.admin-update-trigger .material-icons{font-size:30px;color:#fff!important}
.admin-update-trigger:hover,.admin-update-trigger:focus{color:#fff!important;background:rgba(255,255,255,.08)}
.admin-update-modal-actions{display:flex;align-items:center;gap:10px;margin-top:16px}
@media(max-width:600px){.admin-update-trigger{right:8px;height:56px}.admin-update-trigger .material-icons{font-size:26px}}
/* V019: tabella Log sistema */
.system-log-table td{vertical-align:middle}
.system-log-table td:first-child{font-weight:700}
.system-log-table form{margin:0}
.system-log-table .material-icons{color:#fff!important}
/* V021: intestazioni raggruppate e azioni abilitate per differenza versione */
#projects .projects2-table thead{display:table-header-group!important}
#projects .projects2-table .projects-group-header th{background:#263238!important;color:#fff!important;font-weight:700!important;text-align:center!important;border-bottom:3px solid #000!important;padding:10px 4px!important}
#projects .projects2-table .projects2-project-name{background:#000!important;color:#fff!important;font-weight:700!important;text-align:center!important}
/* V025: tab principali caricate al click */
.admin-tab-panel[style*="display: none"]{display:none}.section-loading{text-align:center;padding:24px;font-weight:700}.projects-group-header th{background:#263238!important;color:#fff!important;text-align:center!important;font-weight:700!important}.projects2-project-name,.detail-project-name{background:#000!important;color:#fff!important;font-weight:700!important}.detail-section-table td{vertical-align:middle;white-space:nowrap}.check-log-path{font-family:monospace;font-size:.85rem}.admin-tab-panel form{margin:0}
/* V026: raggruppamento tabella Progetti */
#projects .projects-group-header th{display:table-cell!important;background:#111!important;color:#fff!important;text-align:center!important;font-weight:700!important;border-right:2px solid #fff!important;padding:12px 8px!important;vertical-align:middle!important}
#projects .projects-group-header th:last-child{border-right:0!important}
#projects .environment-group-end,#projects .database-group-end{border-right:2px solid #111!important}
#projects .projects2-table{border-collapse:collapse!important}
/* V027: tabelle PHP/DATABASE coerenti con Progetti e download ADMIN corrente */
.detail-section-table{border-collapse:collapse!important}
.detail-section-table .projects-group-header th{display:table-cell!important;background:#111!important;color:#fff!important;text-align:center!important;font-weight:700!important;border-right:2px solid #fff!important;padding:12px 8px!important;vertical-align:middle!important}
.detail-section-table .projects-group-header th:last-child{border-right:0!important}
.detail-section-table .projects2-project-name{background:#000!important;color:#fff!important;font-weight:700!important;text-align:center!important}
.detail-section-table .projects2-project-start>*{border-top:4px solid #000!important}
.detail-section-table .projects2-environment-row>td{border-top:1px solid #78909c!important}
.detail-section-table .environment-group-end{border-right:2px solid #111!important}
.admin-current-download-form{display:flex;align-items:center;gap:10px;margin-top:16px}
.admin-current-download-form button{margin:0!important}
/* V028: raggruppamento Apache/Database coerente con Progetti */
.detail-section-table .detail-group-header th{background:#263238!important;color:#fff!important;text-align:center!important;font-weight:700!important;border-right:2px solid #fff!important;padding:12px 8px!important;vertical-align:middle!important}
.detail-section-table .detail-group-header th:last-child{border-right:0!important}
.detail-section-table .environment-group-end{border-right:2px solid #263238!important}
.detail-section-table .log-group-end{border-right:0!important}
.detail-section-table form{margin:0!important}
/* V029: link versione Apache e Database */
.detail-section-table .version-link{font-weight:700;color:#1565c0!important;text-decoration:underline;text-underline-offset:2px;cursor:pointer!important}
.detail-section-table .version-link:hover,.detail-section-table .version-link:focus{color:#0d47a1!important}
/* V030: spaziatura card e azioni uniformi nei modal */
.container-wide > .admin-tab-panel{padding-top:1.5rem!important}
#projects.admin-tab-panel{padding-top:1.5rem!important}
.modal-content{position:relative!important;padding-top:2.5rem!important}
.modal-corner-close{position:absolute!important;top:10px!important;right:12px!important;width:38px!important;height:38px!important;border-radius:50%!important;background:#c62828!important;color:#fff!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;z-index:10!important}
.modal-corner-close .material-icons{color:#fff!important;font-size:24px!important}
.modal-form-actions{display:flex!important;align-items:center!important;justify-content:space-between!important;width:100%!important;margin-top:24px!important;gap:16px!important}
.modal-save-button,.modal-cancel-button{min-width:150px!important;min-height:48px!important;border:0!important;border-radius:7px!important;padding:0 22px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;color:#fff!important;font-size:15px!important;font-weight:700!important;line-height:48px!important;cursor:pointer!important;box-shadow:0 2px 5px rgba(0,0,0,.25)!important}
.modal-save-button{background:#2e7d32!important;margin-right:auto!important}
.modal-cancel-button{background:#c62828!important;margin-left:auto!important}
.modal-save-button .material-icons,.modal-cancel-button .material-icons{color:#fff!important;font-size:24px!important;line-height:1!important}
.modal-save-button:hover,.modal-save-button:focus{background:#1b5e20!important;color:#fff!important}
.modal-cancel-button:hover,.modal-cancel-button:focus{background:#b71c1c!important;color:#fff!important}
.admin-update-row{display:block!important;width:100%!important;margin:18px 0!important;clear:both!important}
.admin-current-download-form{display:block!important;margin:0!important}
.admin-current-download-form .btn-large{width:auto!important;margin:0!important}
.admin-upload-row .file-field{margin:0!important}
.admin-update-modal .modal-form-actions{margin-top:26px!important}
@media(max-width:600px){.modal-form-actions{gap:10px!important}.modal-save-button,.modal-cancel-button{min-width:125px!important;padding:0 14px!important}.admin-current-download-form .btn-large{width:100%!important}}
/* V031: gestione dinamica Log sistema */
.system-log-toolbar{display:flex;justify-content:flex-start;margin:0 0 18px}
.system-log-table{border-collapse:collapse!important}
.system-log-table .projects-group-header th{display:table-cell!important;background:#111!important;color:#fff!important;text-align:center!important;font-weight:700!important;border-right:2px solid #fff!important;padding:12px 8px!important;vertical-align:middle!important}
.system-log-table .projects-group-header th:last-child{border-right:0!important}
.system-log-table .projects2-project-name{background:#000!important;color:#fff!important;font-weight:700!important;text-align:center!important}
.system-log-table tbody tr>*{border-top:1px solid #78909c!important}
.system-log-table .environment-group-end{border-right:2px solid #111!important}
.system-log-table form{margin:0!important}

/* V032: visualizzatore Log sistema a piena superficie utile */
.system-log-view-modal{
    width:90vw!important;
    max-width:90vw!important;
    height:88vh!important;
    max-height:88vh!important;
}
.system-log-view-modal .modal-content{
    height:calc(88vh - 56px)!important;
    max-height:calc(88vh - 56px)!important;
    box-sizing:border-box!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
}
.system-log-view-modal .modal-content h5,
.system-log-view-modal .modal-content p{
    flex:0 0 auto!important;
}
.system-log-view-modal .modal-log{
    width:100%!important;
    max-width:none!important;
    min-height:0!important;
    flex:1 1 auto!important;
    box-sizing:border-box!important;
    margin:0!important;
    overflow:auto!important;
    white-space:pre!important;
}
@media(max-width:600px){
    .system-log-view-modal{
        width:96vw!important;
        max-width:96vw!important;
        height:92vh!important;
        max-height:92vh!important;
    }
    .system-log-view-modal .modal-content{
        height:calc(92vh - 56px)!important;
        max-height:calc(92vh - 56px)!important;
    }
}

/* V036: allineamenti richiesti senza alterare lo stile delle tabelle */
.projects2-table .projects2-project-name,
.detail-section-table .projects2-project-name,
.system-log-table .projects2-project-name{
    text-align:center!important;
    vertical-align:middle!important;
}
.projects2-table .table-text-cell,
.detail-section-table .table-text-cell,
.system-log-table .table-text-cell{
    text-align:left!important;
}
.projects2-table .table-action-cell,
.detail-section-table .table-action-cell,
.system-log-table .table-action-cell{
    text-align:center!important;
    vertical-align:middle!important;
}
.projects2-table .table-action-cell form,
.detail-section-table .table-action-cell form,
.system-log-table .table-action-cell form{
    display:flex!important;
    justify-content:center!important;
    align-items:center!important;
    margin:0!important;
}
/* Linea bianca solo tra un progetto e il successivo, mai tra PROD e DEV. */
#projects tbody tr.projects2-project-start:not(:first-child) > .projects2-project-name,
.detail-section-table tbody tr.projects2-project-start:not(:first-child) > .projects2-project-name{
    position:relative!important;
}
#projects tbody tr.projects2-project-start:not(:first-child) > .projects2-project-name::before,
.detail-section-table tbody tr.projects2-project-start:not(:first-child) > .projects2-project-name::before{
    content:""!important;
    position:absolute!important;
    left:0!important;
    right:0!important;
    top:0!important;
    height:2px!important;
    background:#fff!important;
    pointer-events:none!important;
}
/* Log sistema: il Path resta testuale e allineato a sinistra. */
.system-log-table .system-log-path{
    text-align:left!important;
}
/* Navigazione: tab selezionata grigia. */
.tabs .tab a.active,
.tabs .tab a:focus.active{
    background:#e0e0e0!important;
    color:#000!important;
}
.tabs .tab a:hover:not(.active){
    background:#eeeeee!important;
    color:#000!important;
}

/* V039: sistema grafico uniforme e Log sistema identico al modello Progetti */
:root{--admin-font-family:Roboto,Arial,sans-serif;--admin-text-color:#263238;--admin-title-size:24px;--admin-nav-size:14px;--admin-table-head-size:14px;--admin-table-text-size:14px;--admin-link-color:#1565c0;--admin-table-control-size:34px;--admin-table-icon-size:20px;--admin-outside-height:46px;--admin-outside-font-size:14px;--admin-outside-icon-size:22px}
html,body,button,input,select,textarea{font-family:var(--admin-font-family)!important}body{color:var(--admin-text-color)!important;font-size:var(--admin-table-text-size)!important}.brand-logo{font-size:26px!important;font-weight:700!important}.admin-main-tabs .tab a{font-size:var(--admin-nav-size)!important;font-weight:700!important;letter-spacing:.3px!important;text-transform:uppercase!important}.card-title{font-size:var(--admin-title-size)!important;font-weight:500!important;line-height:1.25!important;color:var(--admin-text-color)!important}.modal-content h5,.container-wide>h4{font-size:20px!important;font-weight:500!important;line-height:1.3!important;color:var(--admin-text-color)!important}.projects2-table,.detail-section-table,.system-log-table,.admin-tab-panel table{font-size:var(--admin-table-text-size)!important;line-height:1.25!important}.projects-group-header th,.detail-group-header th,.admin-tab-panel table thead th{font-size:var(--admin-table-head-size)!important;font-weight:700!important;letter-spacing:.2px!important;text-transform:uppercase!important}.projects2-project-name,.detail-project-name{font-size:var(--admin-table-text-size)!important;font-weight:700!important}.admin-tab-panel table td,.admin-tab-panel table tbody th{font-size:var(--admin-table-text-size)!important}.admin-tab-panel table a:not(.p2-round){font-size:inherit!important;font-weight:700!important;color:var(--admin-link-color)!important;text-decoration:underline!important;text-underline-offset:2px!important}
.admin-tab-panel table .p2-round,.admin-tab-panel table button.p2-round,.admin-tab-panel table a.p2-round{width:var(--admin-table-control-size)!important;min-width:var(--admin-table-control-size)!important;max-width:var(--admin-table-control-size)!important;height:var(--admin-table-control-size)!important;min-height:var(--admin-table-control-size)!important;max-height:var(--admin-table-control-size)!important;padding:0!important;margin:1px!important;border:0!important;border-radius:50%!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;box-shadow:none!important;line-height:1!important}.admin-tab-panel table .p2-round .material-icons,.admin-tab-panel table button.p2-round .material-icons,.admin-tab-panel table a.p2-round .material-icons{font-size:var(--admin-table-icon-size)!important;line-height:1!important;width:var(--admin-table-icon-size)!important;height:var(--admin-table-icon-size)!important;color:#fff!important}.admin-tab-panel table form{margin:0!important}
.admin-outside-action,.modal-save-button,.modal-cancel-button,.admin-current-download-form .btn-large{min-height:var(--admin-outside-height)!important;height:var(--admin-outside-height)!important;padding:0 20px!important;border-radius:7px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:9px!important;font-size:var(--admin-outside-font-size)!important;font-weight:700!important;line-height:1!important;text-transform:uppercase!important;white-space:nowrap!important}.admin-outside-action .material-icons,.modal-save-button .material-icons,.modal-cancel-button .material-icons,.admin-current-download-form .btn-large .material-icons{font-size:var(--admin-outside-icon-size)!important;line-height:1!important}
/* Separatore sullo stesso bordo inferiore del blocco progetto. */
#projects .projects2-table,.detail-section-table{border-collapse:collapse!important}#projects tbody tr.projects2-environment-row>td,.detail-section-table tbody tr.projects2-environment-row>td{border-bottom:4px solid #000!important}#projects tbody tr.projects2-project-start>.projects2-project-name,.detail-section-table tbody tr.projects2-project-start>.projects2-project-name{border-bottom:4px solid #fff!important}#projects tbody tr.projects2-project-start:not(:first-child)>.projects2-project-name::before,.detail-section-table tbody tr.projects2-project-start:not(:first-child)>.projects2-project-name::before{content:none!important;display:none!important}
/* Log sistema: stessa geometria, colori, righe e controlli della tabella Progetti. */
.system-log-table{width:100%!important;max-width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;font-size:var(--admin-table-text-size)!important}.system-log-table .system-log-col-type{width:20%!important}.system-log-table .system-log-col-name{width:22%!important}.system-log-table .system-log-col-path{width:38%!important}.system-log-table .system-log-col-edit,.system-log-table .system-log-col-delete,.system-log-table .system-log-col-view,.system-log-table .system-log-col-download{width:5%!important}.system-log-table .projects-group-header th{display:table-cell!important;background:#263238!important;color:#fff!important;font-size:var(--admin-table-head-size)!important;font-weight:700!important;text-align:center!important;vertical-align:middle!important;text-transform:uppercase!important;border-top:0!important;border-bottom:3px solid #000!important;border-right:2px solid #fff!important;padding:12px 8px!important}.system-log-table .projects-group-header th:last-child{border-right:0!important}.system-log-table tbody tr{height:52px!important}.system-log-table tbody tr>th,.system-log-table tbody tr>td{border-top:0!important;border-bottom:4px solid #000!important;padding:8px 6px!important;vertical-align:middle!important;box-sizing:border-box!important}.system-log-table tbody tr>.projects2-project-name{background:#000!important;color:#fff!important;font-size:var(--admin-table-text-size)!important;font-weight:700!important;text-align:center!important;vertical-align:middle!important}.system-log-table .system-log-name,.system-log-table .system-log-path{background:#fff!important;color:#263238!important;text-align:left!important}.system-log-table .system-log-path{font-family:monospace!important;font-size:.85rem!important;overflow-wrap:anywhere!important;white-space:normal!important}.system-log-table .system-log-edit,.system-log-table .system-log-delete,.system-log-table tbody tr>td:nth-child(6),.system-log-table tbody tr>td:nth-child(7){background:#fff!important;text-align:center!important}.system-log-table .system-log-delete{border-right:2px solid #111!important}
/* X Chiudi modal: sola icona, rotonda nera. */
.modal-corner-close{width:38px!important;min-width:38px!important;max-width:38px!important;height:38px!important;min-height:38px!important;max-height:38px!important;padding:0!important;border-radius:50%!important;background:#000!important;color:#fff!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:0!important}.modal-corner-close .material-icons{color:#fff!important;font-size:24px!important;line-height:1!important}.modal-corner-close span{display:none!important}
/* Aggiungi verde. */
.system-log-toolbar .admin-outside-action{background:#2e7d32!important;color:#fff!important}.system-log-toolbar .admin-outside-action:hover,.system-log-toolbar .admin-outside-action:focus{background:#1b5e20!important;color:#fff!important}
/* Aggiorna Admin: sola icona. */
.admin-update-trigger{width:46px!important;min-width:46px!important;max-width:46px!important;height:46px!important;min-height:46px!important;padding:0!important;right:14px!important;top:9px!important;border-radius:50%!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:0!important}.admin-update-trigger .material-icons{font-size:26px!important;line-height:1!important}.admin-update-trigger span{display:none!important}

/* V040: Aggiorna Admin centrato e Log sistema raggruppato per tipo */
.admin-navbar{
    position:relative!important;
}
.admin-update-trigger{
    position:absolute!important;
    top:50%!important;
    right:14px!important;
    transform:translateY(-50%)!important;
    width:42px!important;
    min-width:42px!important;
    max-width:42px!important;
    height:42px!important;
    min-height:42px!important;
    max-height:42px!important;
    padding:0!important;
    margin:0!important;
    line-height:1!important;
    border-radius:50%!important;
    overflow:visible!important;
}
.admin-update-trigger .material-icons{
    display:block!important;
    width:26px!important;
    height:26px!important;
    font-size:26px!important;
    line-height:26px!important;
    margin:0!important;
}
/* Una sola cella nera per ogni TIPO, come una sola cella PROGETTO per PROD e DEV. */
.system-log-table .system-log-type-cell{
    background:#000!important;
    color:#fff!important;
    text-align:center!important;
    vertical-align:middle!important;
    font-weight:700!important;
    border-bottom:4px solid #fff!important;
}
/* Separatore marcato solo tra gruppi di tipo diversi. */
.system-log-table tbody tr.system-log-type-start > td{
    border-top:4px solid #000!important;
}
/* Righe appartenenti allo stesso tipo: separatore sottile. */
.system-log-table tbody tr.projects2-environment-row > td{
    border-bottom:1px solid #78909c!important;
}
.system-log-table tbody tr:last-child > td{
    border-bottom:4px solid #000!important;
}

/* V044: tab AI e modal estesi */
.directives-table{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important}.directives-table .projects-group-header th{background:#263238!important;color:#fff!important;text-align:center!important;font-weight:700!important;border-right:2px solid #fff!important;padding:12px 8px!important}.directives-table .projects2-project-name{background:#000!important;color:#fff!important;text-align:center!important;vertical-align:middle!important}.directives-table td{vertical-align:middle!important;border-bottom:4px solid #000!important;padding:9px 8px!important}.directive-check-cell{display:table-cell!important;text-align:center!important}.directive-check-cell .p2-round{vertical-align:middle!important}.directive-check-cell span{display:inline-block!important;margin-left:8px!important;vertical-align:middle!important;font-weight:700!important}.standard-wide-modal{width:90vw!important;max-width:90vw!important;height:88vh!important;max-height:88vh!important}.standard-wide-modal .modal-content{height:calc(88vh - 56px)!important;max-height:calc(88vh - 56px)!important;box-sizing:border-box!important;overflow:auto!important}.directive-view-text{min-height:60vh!important;max-height:none!important;overflow:auto!important}.directive-check-detail{white-space:pre-wrap!important;word-break:break-word!important;background:#eceff1!important;padding:16px!important;border-radius:7px!important;max-height:65vh!important;overflow:auto!important}.directive-edit-modal .modal-content{overflow:hidden!important}.directive-edit-form{height:100%!important;display:flex!important;flex-direction:column!important;padding-bottom:72px!important;box-sizing:border-box!important}.directive-editor-label{display:block!important;font-size:14px!important;font-weight:700!important;color:#263238!important;margin:4px 0 8px!important}.directive-editor{display:block!important;width:100%!important;min-height:0!important;height:auto!important;flex:1 1 auto!important;resize:vertical!important;overflow-y:scroll!important;white-space:pre-wrap!important;word-break:normal!important;font-family:monospace!important;font-size:14px!important;line-height:1.45!important;border:2px solid #607d8b!important;border-radius:7px!important;background:#fff!important;color:#101820!important;padding:14px!important;box-sizing:border-box!important}.directive-editor:focus{border-color:#1565c0!important;outline:none!important;box-shadow:0 0 0 2px rgba(21,101,192,.15)!important}.directive-fixed-actions{position:absolute!important;left:24px!important;right:24px!important;bottom:12px!important;height:54px!important;background:#fff!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:16px!important;z-index:5!important}.directive-fixed-actions .modal-save-button,.directive-fixed-actions .modal-cancel-button{display:inline-flex!important;visibility:visible!important;opacity:1!important;margin:0!important}

/* V045: modal AI uniformi alle altre tab e colonna DATA semplificata */
.directive-date-cell{
    text-align:left!important;
    font-weight:700!important;
    white-space:nowrap!important;
}
/* Stesse dimensioni e stesso sfondo dei modal Progetti e Database. */
.directive-standard-modal{
    width:55%!important;
    max-width:55%!important;
    height:70%!important;
    max-height:70%!important;
    background:#fafafa!important;
    border-radius:2px!important;
}
.directive-standard-modal .modal-content{
    height:calc(100% - 56px)!important;
    max-height:calc(100% - 56px)!important;
    padding:2.5rem 24px 24px!important;
    background:#fafafa!important;
    color:#263238!important;
    overflow:auto!important;
    box-sizing:border-box!important;
}
.directive-standard-modal .modal-footer{
    height:56px!important;
    background:#fafafa!important;
    border-top:1px solid #cfd8dc!important;
    padding:4px 24px!important;
    box-sizing:border-box!important;
}
.directive-path{
    font-family:monospace!important;
    color:#455a64!important;
    overflow-wrap:anywhere!important;
}
/* Anteprima bianca, non sfondo nero. */
.directive-text-preview,
.directive-check-detail{
    display:block!important;
    width:100%!important;
    min-height:40vh!important;
    max-height:48vh!important;
    margin:12px 0 0!important;
    padding:14px!important;
    box-sizing:border-box!important;
    overflow:auto!important;
    white-space:pre-wrap!important;
    overflow-wrap:anywhere!important;
    background:#fff!important;
    color:#263238!important;
    border:1px solid #90a4ae!important;
    border-radius:4px!important;
    font-family:monospace!important;
    font-size:14px!important;
    line-height:1.4!important;
}
/* Editor sempre visibile, riconoscibile e scrollabile. */
.directive-edit-modal form{
    display:block!important;
    height:auto!important;
    margin:0!important;
}
.directive-editor-label{
    display:block!important;
    position:static!important;
    transform:none!important;
    width:auto!important;
    margin:8px 0 6px!important;
    color:#263238!important;
    font-size:14px!important;
    font-weight:700!important;
}
.directive-editor{
    display:block!important;
    position:static!important;
    width:100%!important;
    height:46vh!important;
    min-height:240px!important;
    max-height:46vh!important;
    margin:0!important;
    padding:14px!important;
    box-sizing:border-box!important;
    overflow-y:scroll!important;
    overflow-x:auto!important;
    resize:vertical!important;
    white-space:pre-wrap!important;
    overflow-wrap:normal!important;
    background:#fff!important;
    color:#101820!important;
    border:2px solid #607d8b!important;
    border-radius:4px!important;
    font-family:monospace!important;
    font-size:14px!important;
    line-height:1.4!important;
    opacity:1!important;
    visibility:visible!important;
}
.directive-editor:focus{
    border-color:#1565c0!important;
    outline:none!important;
    box-shadow:0 0 0 2px rgba(21,101,192,.15)!important;
}
.directive-modal-actions{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:16px!important;
}
.directive-modal-actions .modal-save-button,
.directive-modal-actions .modal-cancel-button{
    display:inline-flex!important;
    visibility:visible!important;
    opacity:1!important;
    margin:0!important;
    min-height:46px!important;
    line-height:1!important;
}
@media(max-width:600px){
    .directive-standard-modal{
        width:94%!important;
        max-width:94%!important;
        height:80%!important;
        max-height:80%!important;
    }
    .directive-editor{height:48vh!important;max-height:48vh!important}
}

/* V046: modal AI corretti come richiesto: sfondo nero e larghezza estesa */
.directive-standard-modal{
    width:90vw!important;
    max-width:90vw!important;
    height:88vh!important;
    max-height:88vh!important;
    background:#000!important;
    color:#fff!important;
    border-radius:2px!important;
}
.directive-standard-modal .modal-content{
    height:calc(88vh - 56px)!important;
    max-height:calc(88vh - 56px)!important;
    padding:2.5rem 24px 24px!important;
    background:#000!important;
    color:#fff!important;
    overflow:auto!important;
    box-sizing:border-box!important;
}
.directive-standard-modal .modal-content h5,
.directive-standard-modal .modal-content p,
.directive-standard-modal .directive-path,
.directive-standard-modal .directive-editor-label{
    color:#fff!important;
}
.directive-standard-modal .modal-footer{
    height:56px!important;
    background:#000!important;
    border-top:1px solid #455a64!important;
    padding:4px 24px!important;
    box-sizing:border-box!important;
}
.directive-text-preview,
.directive-check-detail{
    width:100%!important;
    min-height:58vh!important;
    max-height:66vh!important;
    background:#101820!important;
    color:#fff!important;
    border:1px solid #78909c!important;
    padding:14px!important;
    box-sizing:border-box!important;
    overflow:auto!important;
    white-space:pre-wrap!important;
    overflow-wrap:anywhere!important;
    font-family:monospace!important;
}
.directive-edit-modal .modal-content{
    overflow:hidden!important;
}
.directive-edit-modal form{
    display:flex!important;
    flex-direction:column!important;
    height:calc(100% - 42px)!important;
    min-height:0!important;
    margin:0!important;
}
.directive-editor{
    display:block!important;
    position:static!important;
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    flex:1 1 auto!important;
    margin:0!important;
    padding:14px!important;
    box-sizing:border-box!important;
    overflow-y:scroll!important;
    overflow-x:auto!important;
    resize:none!important;
    white-space:pre-wrap!important;
    background:#101820!important;
    color:#fff!important;
    caret-color:#fff!important;
    border:2px solid #78909c!important;
    border-radius:4px!important;
    font-family:monospace!important;
    font-size:14px!important;
    line-height:1.4!important;
    opacity:1!important;
    visibility:visible!important;
    -webkit-text-fill-color:#fff!important;
}
.directive-editor:focus{
    border-color:#42a5f5!important;
    outline:none!important;
    box-shadow:0 0 0 2px rgba(66,165,245,.24)!important;
}
.directive-modal-actions{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:16px!important;
    background:#000!important;
}
@media(max-width:600px){
    .directive-standard-modal{
        width:96vw!important;
        max-width:96vw!important;
        height:92vh!important;
        max-height:92vh!important;
    }
    .directive-standard-modal .modal-content{
        height:calc(92vh - 56px)!important;
        max-height:calc(92vh - 56px)!important;
    }
}

/* V047: modal AI identici al modal Database e Log sistema */
.directive-ai-modal{
    width:90vw!important;
    max-width:90vw!important;
    height:88vh!important;
    max-height:88vh!important;
    background:#fafafa!important;
    color:#263238!important;
}
.directive-ai-modal .modal-content{
    width:100%!important;
    height:calc(88vh - 56px)!important;
    max-height:calc(88vh - 56px)!important;
    padding:2.5rem 24px 24px!important;
    background:#fafafa!important;
    color:#263238!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
    box-sizing:border-box!important;
}
.directive-ai-modal .modal-content h5,
.directive-ai-modal .modal-content p,
.directive-ai-modal .directive-path,
.directive-ai-modal .directive-editor-label{
    flex:0 0 auto!important;
    color:#263238!important;
}
.directive-ai-modal .modal-log,
.directive-ai-modal .directive-text-preview,
.directive-ai-modal .directive-check-detail{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    min-height:0!important;
    height:auto!important;
    max-height:none!important;
    flex:1 1 auto!important;
    margin:8px 0 0!important;
    padding:14px!important;
    box-sizing:border-box!important;
    overflow:auto!important;
    white-space:pre!important;
    overflow-wrap:normal!important;
    background:#101820!important;
    color:#d7ffff!important;
    border:1px solid #78909c!important;
    border-radius:0!important;
    font-family:monospace!important;
    font-size:14px!important;
    line-height:1.4!important;
}
.directive-ai-modal .modal-footer{
    height:56px!important;
    background:#fafafa!important;
    border-top:1px solid #cfd8dc!important;
    padding:4px 24px!important;
    box-sizing:border-box!important;
}
/* Modifica: form e textarea occupano tutta l'area del modal. */
.directive-edit-modal .modal-content{
    overflow:hidden!important;
}
.directive-edit-modal form{
    width:100%!important;
    min-width:0!important;
    min-height:0!important;
    flex:1 1 auto!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
    margin:0!important;
}
.directive-edit-modal .directive-editor-label{
    display:block!important;
    position:static!important;
    transform:none!important;
    margin:8px 0 0!important;
    font-size:14px!important;
    font-weight:700!important;
}
.directive-edit-modal textarea.directive-editor{
    display:block!important;
    position:static!important;
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    min-height:0!important;
    height:auto!important;
    max-height:none!important;
    flex:1 1 auto!important;
    overflow-y:auto!important;
    overflow-x:auto!important;
    resize:none!important;
    opacity:1!important;
    visibility:visible!important;
    -webkit-text-fill-color:#d7ffff!important;
    caret-color:#fff!important;
}
.directive-ai-modal .directive-modal-actions{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:16px!important;
    background:#fafafa!important;
}
@media(max-width:600px){
    .directive-ai-modal{
        width:96vw!important;
        max-width:96vw!important;
        height:92vh!important;
        max-height:92vh!important;
    }
    .directive-ai-modal .modal-content{
        height:calc(92vh - 56px)!important;
        max-height:calc(92vh - 56px)!important;
    }
}

/* V048: editor AI a piena altezza e controlli contenuto in tabella */
.directive-edit-modal .modal-content{
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    gap:10px!important;
    overflow:hidden!important;
}
.directive-edit-modal .directive-edit-form{
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    gap:6px!important;
    width:100%!important;
    height:100%!important;
    min-width:0!important;
    min-height:0!important;
    margin:0!important;
    overflow:hidden!important;
}
.directive-edit-modal .directive-editor-label{
    display:block!important;
    position:static!important;
    transform:none!important;
    margin:0!important;
    padding:0!important;
    color:#263238!important;
    font-size:14px!important;
    font-weight:700!important;
    line-height:1.3!important;
}
.directive-edit-modal textarea.directive-editor{
    display:block!important;
    position:static!important;
    grid-row:2!important;
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:14px!important;
    box-sizing:border-box!important;
    overflow-y:auto!important;
    overflow-x:auto!important;
    resize:none!important;
    opacity:1!important;
    visibility:visible!important;
    white-space:pre!important;
    background:#101820!important;
    color:#d7ffff!important;
    -webkit-text-fill-color:#d7ffff!important;
    caret-color:#fff!important;
    border:1px solid #78909c!important;
    border-radius:0!important;
    font-family:monospace!important;
    font-size:14px!important;
    line-height:1.4!important;
}
.directive-content-table-wrap{
    width:100%!important;
    min-height:0!important;
    flex:1 1 auto!important;
    overflow:auto!important;
    margin-top:10px!important;
    background:#fff!important;
    border:1px solid #90a4ae!important;
}
.directive-content-table{
    width:100%!important;
    border-collapse:collapse!important;
    table-layout:auto!important;
    background:#fff!important;
    color:#263238!important;
}
.directive-content-table thead th{
    position:sticky!important;
    top:0!important;
    z-index:1!important;
    background:#263238!important;
    color:#fff!important;
    text-align:left!important;
    font-weight:700!important;
    padding:10px!important;
    border-right:1px solid #fff!important;
}
.directive-content-table thead th:nth-child(2),
.directive-content-table thead th:nth-child(3){text-align:center!important}
.directive-content-table td{
    padding:10px!important;
    border-bottom:1px solid #cfd8dc!important;
    text-align:left!important;
    vertical-align:middle!important;
    font-family:monospace!important;
    overflow-wrap:anywhere!important;
}
.directive-content-table td:nth-child(2),
.directive-content-table td:nth-child(3){text-align:center!important;white-space:nowrap!important}
.directive-result{
    display:inline-flex!important;
    min-width:54px!important;
    height:28px!important;
    align-items:center!important;
    justify-content:center!important;
    border-radius:14px!important;
    color:#fff!important;
    font-family:Roboto,Arial,sans-serif!important;
    font-weight:700!important;
}
.directive-result-ok{background:#2e7d32!important}
.directive-result-ko{background:#c62828!important}

/* V049: modal contenuto con tabella dei singoli test */
.directive-content-table th:nth-child(1){width:30%!important}
.directive-content-table th:nth-child(2){width:16%!important}
.directive-content-table th:nth-child(3){width:22%!important}
.directive-content-table th:nth-child(4){width:22%!important}
.directive-content-table th:nth-child(5){width:10%!important}
.directive-content-table td:nth-child(2),
.directive-content-table td:nth-child(3),
.directive-content-table td:nth-child(4){text-align:left!important;white-space:normal!important}
.directive-content-table td:nth-child(5){text-align:center!important;white-space:nowrap!important}
.directive-test-path{
    background:#000!important;
    color:#fff!important;
    font-weight:700!important;
    vertical-align:middle!important;
    text-align:left!important;
    border-bottom:3px solid #fff!important;
}

/* V050: allineamento colonne tabella test contenuto */
.directive-content-table thead th,
.directive-content-table tbody td{
    text-align:left!important;
}
.directive-content-table thead th:last-child,
.directive-content-table tbody td:last-child{
    text-align:center!important;
}

/* V051: tab OS e modal controlli Apache/Database */
.os-info-table{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important}.os-info-table .projects-group-header th{background:#263238!important;color:#fff!important;text-align:center!important;font-weight:700!important;border-right:2px solid #fff!important;padding:12px 8px!important}.os-info-table .os-category-cell{width:18%!important;background:#000!important;color:#fff!important;text-align:center!important;vertical-align:middle!important}.os-info-table .os-parameter{width:20%!important;font-weight:700!important}.os-info-table .os-detail{color:#455a64!important}.os-info-table td{padding:9px 8px!important;border-bottom:1px solid #78909c!important;text-align:left!important;vertical-align:middle!important;white-space:normal!important;overflow-wrap:anywhere!important}.os-download-form{margin:20px 0 0!important}.os-download-form .admin-outside-action{background:#2e7d32!important;color:#fff!important}

/* V052: provisioning nuovo progetto */
.projects-toolbar{display:flex!important;justify-content:flex-start!important;margin:0 0 18px!important}
.projects-toolbar .admin-outside-action{background:#2e7d32!important;color:#fff!important}
.projects-toolbar .admin-outside-action:hover,.projects-toolbar .admin-outside-action:focus{background:#1b5e20!important;color:#fff!important}
.project-provision-note{padding:12px!important;background:#eceff1!important;border-left:4px solid #263238!important;color:#263238!important}
/* V056: log Apache errori/accessi e conteggio righe */
.detail-section-table .log-kind-cell{text-transform:lowercase!important;font-weight:700!important;white-space:nowrap!important}
.detail-section-table .log-line-count{text-align:center!important;font-variant-numeric:tabular-nums!important;font-weight:700!important}
.system-log-table .system-log-name{text-transform:lowercase!important}

/* V057: intestazioni aggregate e nomi Log sistema non in grassetto */
.system-log-table .system-log-name{font-weight:400!important}
