:root{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:#102a43;background:linear-gradient(135deg,#f4f8fc,#eaf2f9 55%,#ddeaf5);--unipa-blue: #0065a4;--unipa-blue-dark: #004d7d;--unipa-blue-soft: #e8f1f8;--unipa-border: #c7d9e8}*{box-sizing:border-box}body{margin:0;min-height:100vh}button{border:0;border-radius:8px;padding:.6rem 1rem;background:var(--unipa-blue);color:#fff;cursor:pointer}button.secondary{background:#4f6578}button.danger{background:#b91c1c}button.small{padding:.35rem .6rem;margin-right:.4rem}.link-button{background:transparent;color:var(--unipa-blue-dark);padding:0;border:0;text-decoration:underline;font:inherit}.icon-button{width:36px;height:36px;padding:0;margin-right:.35rem;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--unipa-blue-dark)}.icon-button svg{width:20px;height:20px;fill:currentColor}.icon-button:last-child{margin-right:0}.icon-button:disabled{opacity:.35;cursor:not-allowed}.icon-button.danger{background:transparent;color:#b91c1c}.icon-button.add-anticipata{color:#14532d}.icon-button.add-impegno{color:#c2410c}.icon-button.add-previsione{color:#38bdf8}.note-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--unipa-blue-dark)}.note-icon svg{width:18px;height:18px;fill:currentColor}.expand-col{width:18px;text-align:right;padding-right:0;padding-left:0}.expand-toggle{width:20px;height:20px;margin-right:0}.expand-toggle svg{width:18px;height:18px}.expanded-row td{background:#f8fbff}.linked-impegni-wrap,.linked-previsione-tree-wrap{display:grid;gap:.35rem;padding:.35rem .1rem .35rem 30px}.project-tree-wrap{padding-left:16px}.project-tree-coan-group{display:grid;gap:.35rem}.linked-previsione-tree-row.project-tree-coan-row{grid-template-columns:28px 28px minmax(0,1fr) auto;justify-content:start;background:#f0f7ff;gap:.1rem}.project-tree-coan-main{display:grid;grid-template-columns:120px 300px repeat(6,130px);gap:.35rem;align-items:center;min-width:0;width:100%;justify-self:stretch}.project-tree-coan-col{display:grid;align-content:start;gap:.1rem;min-width:0;overflow:hidden;padding:.2rem .35rem .25rem;border:1px solid #dbe8f3;border-radius:6px;background:#fff}.project-tree-coan-budget{text-align:right;justify-items:end}.project-tree-level3-wrap{display:grid;gap:.35rem;margin-left:18px}.linked-previsione-tree-row.project-tree-previsione-row{grid-template-columns:28px 28px minmax(0,1fr) auto;justify-content:start;gap:.1rem}.project-tree-expand-spacer{width:28px;height:28px;display:inline-block}.project-tree-previsione-main{display:grid;grid-template-columns:420px 120px 120px;gap:.35rem;align-items:center;min-width:0;width:100%}.project-tree-level4-wrap{display:grid;gap:.35rem;margin-left:18px}.linked-impegno-row{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:.5rem;padding:.3rem .45rem;border:1px solid #dbe8f3;border-radius:8px;background:#fff}.linked-previsione-tree-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:.5rem;padding:.3rem .45rem;border:1px solid #dbe8f3;border-radius:8px;background:#fff}.impegno-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:999px;background:#f59e0b;color:#102a43;font-size:.75rem;font-weight:700;line-height:1}.contratto-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:999px;background:#16a34a;color:#fff;font-size:.75rem;font-weight:700;line-height:1}.contratto-badge-impegno-ref{border:2px solid #f59e0b}.contratto-badge-previsione-ref{border:2px solid #7dd3fc}.coan-badge{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border-radius:999px;background:#2563eb;color:#fff;font-size:.62rem;font-weight:700;line-height:1;justify-self:start}.previsione-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:999px;background:#7dd3fc;color:#102a43;font-size:.75rem;font-weight:700;line-height:1}.linked-impegno-desc{min-width:0}.linked-impegno-main,.linked-previsione-tree-main{display:inline-flex;align-items:center;gap:8px;min-width:0}.linked-previsione-tree-actions{display:inline-flex;justify-content:flex-end;justify-self:end;gap:.2rem}.linked-previsione-tree-actions .icon-button{width:28px;height:28px}.dnd-draggable-row{cursor:grab}.dnd-draggable-row:active{cursor:grabbing}.dnd-dragging-row{opacity:.5}.dnd-drop-target-row td{background:#e8f2fb}.dnd-drop-target-surface{background:#e8f2fb;box-shadow:inset 0 0 0 1px #9fc5eb}.linked-impegno-importo{font-weight:600;white-space:nowrap}.linked-contratto-title{min-width:0}.linked-contratto-meta{color:#39556e;font-size:.8rem;white-space:nowrap}.linked-previsione-contratto-row{grid-template-columns:28px minmax(0,1fr) auto}.linked-previsione-contratto-main{display:grid;grid-template-columns:400px 250px 120px 100px 100px;gap:.45rem;align-items:center;min-width:0;width:100%}.linked-previsione-contratto-col{display:grid;align-content:start;gap:.1rem;min-width:0;overflow:hidden}.linked-contratto-provvedimento{color:#39556e}.linked-contratto-col-label{font-size:.68rem;color:#6b7280;line-height:1;text-align:left;white-space:nowrap}.linked-contratto-col-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.linked-contratto-num,.linked-contratto-data{text-align:left}.linked-contratto-importo{text-align:right;justify-items:end}.linked-previsione-impegno-main{display:grid;grid-template-columns:400px 470px 120px;gap:.45rem;align-items:center;min-width:0;width:100%}.linked-previsione-impegno-col{display:grid;align-content:start;gap:.1rem;min-width:0;overflow:hidden;padding:.2rem .35rem .25rem;border:1px solid #dbe8f3;border-radius:6px;background:#fff}.linked-impegno-note{color:#39556e}.linked-impegno-importo-col{text-align:right;justify-items:end}.linked-impegno-importo-col .linked-contratto-col-value,.project-tree-coan-budget .linked-contratto-col-value,.linked-contratto-importo .linked-contratto-col-value,.linked-impegno-importo-col .linked-contratto-col-label,.project-tree-coan-budget .linked-contratto-col-label,.linked-contratto-importo .linked-contratto-col-label{width:100%;text-align:right}.linked-anticipate-wrap{display:grid;gap:.35rem;padding:.35rem .1rem .35rem 18px}.linked-anticipata-header,.linked-anticipata-main{display:grid;grid-template-columns:69px minmax(130px,1.01fr) minmax(160px,1.12fr) minmax(140px,1fr) 120px 120px 96px 92px;gap:.45rem;align-items:center}.linked-anticipata-header{font-weight:700;color:#39556e;font-size:.76rem;padding:0 .45rem}.linked-anticipata-header>span,.linked-anticipata-main>span{padding-right:.4rem;border-right:1px solid #dbe8f3}.linked-anticipata-header>span:last-child,.linked-anticipata-main>span:last-child{border-right:0;padding-right:0}.linked-anticipata-row{padding:.3rem .45rem;border:1px solid #dbe8f3;border-radius:8px;background:#f8fbff;font-size:.8rem}.linked-anticipata-importo{font-weight:600;white-space:nowrap;text-align:right}.linked-anticipata-actions{display:inline-flex;justify-content:flex-end;gap:.2rem}.linked-anticipata-actions .icon-button{width:28px;height:28px}.previsione-col{text-align:center}.previsione-link-icon{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;border:1px solid var(--unipa-blue-dark);color:var(--unipa-blue-dark);font-size:.75rem;font-weight:700;line-height:1}.layout{max-width:1600px;margin:0 auto;padding:1.5rem}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;background:#fff;border:1px solid var(--unipa-border);border-left:6px solid var(--unipa-blue);border-radius:12px;padding:.8rem 1rem}.actions{display:flex;gap:.6rem}.user-menu{position:relative}.user-menu-trigger{width:44px;height:44px;padding:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--unipa-blue-dark);border:1px solid var(--unipa-border)}.user-menu-trigger:hover,.user-menu-trigger:focus-visible{background:#eef5fc;box-shadow:0 6px 16px #0f172a14}.user-avatar{width:34px;height:34px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--user-avatar-color, var(--unipa-blue));color:#fff;font-size:.85rem;font-weight:700;letter-spacing:.04em}.user-menu-panel{position:absolute;top:calc(100% + 8px);right:0;min-width:260px;display:grid;gap:.45rem;padding:.7rem;background:#fffffff5;border:1px solid var(--unipa-border);border-radius:14px;box-shadow:0 16px 36px #0f172a29;opacity:0;visibility:hidden;transform:translateY(6px) scale(.98);pointer-events:none;transition:opacity .18s ease,transform .18s ease,visibility .18s ease;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20}.user-menu:hover .user-menu-panel,.user-menu:focus-within .user-menu-panel{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto}.user-menu-card{display:grid;gap:.15rem;padding:.55rem .65rem;border:1px solid #dbe8f3;border-radius:10px;background:#f8fbff;color:#1f3c57}.user-menu-label{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#5a748c}.user-menu-logout{width:100%}.color-chip{display:inline-flex;align-items:center;gap:.45rem}.color-chip:before{content:"";width:14px;height:14px;border-radius:999px;background:var(--swatch-color, var(--unipa-blue));border:1px solid rgba(16,42,67,.18)}.menu-bar{display:flex;gap:.55rem;margin-bottom:1.1rem;flex-wrap:wrap;align-items:stretch;padding:.45rem;background:#ffffffb3;border:1px solid #d5e2ee;border-radius:16px;box-shadow:0 12px 28px #0f172a14;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.menu-refresh-button{margin-left:auto;align-self:center;width:42px;height:42px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--unipa-blue-dark);border:0;box-shadow:none}.menu-refresh-button svg{width:20px;height:20px;fill:currentColor}.menu-refresh-button:hover,.menu-refresh-button:focus-visible{background:transparent;color:var(--unipa-blue);box-shadow:none;transform:none}.menu-item{background:linear-gradient(180deg,#f7fbff,#e8f1f8);color:#1f4c6d;border:1px solid transparent;border-radius:12px;font-weight:600;letter-spacing:.01em;transition:background .2s ease,color .2s ease,box-shadow .2s ease,transform .2s ease}.menu-item:hover{background:#eef5fc;color:var(--unipa-blue-dark);box-shadow:0 6px 16px #0f172a14;transform:translateY(-1px)}.menu-item.active{background:linear-gradient(135deg,var(--unipa-blue) 0%,var(--unipa-blue-dark) 100%);color:#fff;box-shadow:0 8px 18px #004d7d4d}.menu-item.has-submenu{position:relative;padding-right:1.85rem}.menu-item.has-submenu:after{content:"";position:absolute;right:.75rem;top:50%;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-60%) rotate(45deg);opacity:.9;transition:transform .2s ease}.menu-group{position:relative}.menu-group:hover>.menu-item.has-submenu:after,.menu-group:focus-within>.menu-item.has-submenu:after{transform:translateY(-35%) rotate(225deg)}.submenu{position:absolute;top:calc(100% + 8px);left:0;display:flex;flex-direction:column;min-width:210px;background:#ffffffed;border:1px solid var(--unipa-border);border-radius:12px;box-shadow:0 16px 36px #0f172a29;padding:.35rem;gap:.25rem;z-index:10;opacity:0;visibility:hidden;transform:translateY(6px) scale(.98);pointer-events:none;transition:opacity .18s ease,transform .18s ease,visibility .18s ease;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.menu-group:hover .submenu,.menu-group:focus-within .submenu{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto}.submenu-item{text-align:left;background:#edf4fb;color:#1f3c57;border-radius:9px;transition:background .16s ease,color .16s ease}.submenu-item:hover{background:#e1edf9}.submenu-item.active{background:var(--unipa-blue-dark);color:#fff}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1rem}.kpi-card{background:linear-gradient(180deg,#fff,#f4f8fc);border-radius:14px;padding:1.1rem 1.2rem;box-shadow:0 8px 24px #0f172a14;border:1px solid var(--unipa-border)}.kpi-card h2{margin:0;font-size:1rem;color:#39556e}.kpi-value{margin:.5rem 0 0;font-size:2rem;line-height:1;font-weight:700;color:var(--unipa-blue-dark)}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.status-card{border:1px solid var(--unipa-border);border-radius:10px;padding:.75rem;background:#f7fbff}.status-card h3{margin:0;font-size:.9rem;color:#39556e}.status-value{margin:.4rem 0 0;font-size:1.4rem;font-weight:700;color:var(--unipa-blue-dark)}.grid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width: 1200px){.grid{grid-template-columns:430px 1fr}}@media (max-width: 900px){.header{align-items:flex-start}.menu-bar{display:grid;grid-template-columns:1fr;gap:.45rem;padding:.55rem}.menu-group{width:100%}.menu-group .menu-item,.menu-bar>.menu-item{width:100%;text-align:left}.menu-refresh-button{margin-left:0;justify-self:end;width:auto}.user-menu-panel{right:0;min-width:min(260px,calc(100vw - 3rem))}.menu-item.has-submenu{padding-right:2rem}.submenu{position:static;min-width:0;max-height:0;overflow:hidden;margin-top:0;padding:0 .2rem;border:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;opacity:1;visibility:visible;transform:none;pointer-events:none;transition:max-height .22s ease,padding .22s ease}.menu-group.open .submenu,.menu-group:focus-within .submenu{max-height:220px;padding:.35rem .2rem .2rem;pointer-events:auto}.submenu-item{width:100%;border:1px solid #d8e5f0}}.card{background:#fff;border-radius:14px;box-shadow:0 10px 26px #0f172a14;padding:1.2rem;border:1px solid var(--unipa-border)}.card-header-actions{display:flex;justify-content:space-between;align-items:flex-end;gap:.75rem}.list-header-actions{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;flex-wrap:wrap}.list-header-actions h2{margin:0}.report-page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.report-page-header h2{margin:0}.report-page-subtitle{margin:.25rem 0 0;color:#52667a}.report-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,320px));gap:.85rem;margin-bottom:1rem}.report-filters label{display:grid;gap:.35rem;font-weight:600}.report-project-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.85rem;margin-bottom:1rem}.report-project-card,.report-chart-card,.report-empty-state{border:1px solid var(--unipa-border);border-radius:12px;background:#f8fbff;padding:1rem}.report-label{display:block;font-size:.78rem;color:#5b6f82;margin-bottom:.3rem}.report-chart-card{background:linear-gradient(180deg,#f9fcff,#edf5fb)}.report-chart-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem}.report-chart-header h3{margin:0;color:#274c67}.report-chart-header span{color:#52667a;font-size:.92rem}.report-bar-chart{display:grid;gap:.8rem}.report-bar-row{display:grid;grid-template-columns:260px minmax(0,1fr);gap:.85rem;align-items:center}.report-bar-visual{display:flex;align-items:center;gap:.6rem;min-width:0}.report-bar-meta h4,.report-bar-meta p{margin:0}.report-bar-meta h4{font-size:.98rem;color:#274c67}.report-bar-track{position:relative;flex:1 1 auto;height:28px;border-radius:999px;background:#dbe8f3;overflow:hidden}.report-bar-fill{height:100%;border-radius:inherit;display:flex;align-items:center;justify-content:flex-end;padding:0 .7rem}.report-bar-value{color:#fff;font-size:.88rem;font-weight:700;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.35)}.report-bar-value-outside{position:absolute;left:calc(var(--report-bar-width, 0%) + .45rem);top:50%;transform:translateY(-50%);color:var(--unipa-blue-dark);text-shadow:none}.report-bar-fill-stanziamento{background:linear-gradient(90deg,#60a5fa,#1d4ed8)}.report-bar-fill-impegni{background:linear-gradient(90deg,#fb923c,#ea580c)}.report-bar-fill-anticipate{background:linear-gradient(90deg,#7f1d1d,#4a0404)}.report-bar-fill-disponibilita{background:linear-gradient(90deg,#4ade80,#166534)}.report-bar-fill-disp-prov{background:linear-gradient(90deg,#2dd4bf,#0f766e)}.report-empty-state{color:#40576d}.no-print{print-color-adjust:exact;-webkit-print-color-adjust:exact}.header-actions-top{align-items:flex-start}.detail-row{margin:0;display:flex;align-items:flex-start;gap:.75rem;line-height:1.2}.detail-row strong{width:200px;flex:0 0 200px}.detail-row span{text-align:left}.assoc-modal-info-row{line-height:1.5;margin-bottom:.35rem}.assoc-modal-stanziamento-label{font-weight:400}.assoc-modal-stanziamento-value{font-weight:700}.assoc-modal-stanziamento-row{margin-bottom:.9rem}.project-name-value{font-weight:700;font-size:1.1rem}.project-coan-header{display:flex;justify-content:space-between;align-items:flex-end;gap:.75rem;margin-bottom:10px}.project-coan-title,.project-coan-actions{margin:0}.login-card{max-width:400px;margin:8vh auto;display:grid;gap:.85rem}.login-card h1{margin-top:0}.login-local-toggle{width:100%;margin-top:0}.login-local-form{margin-top:.85rem;padding-top:.85rem;border-top:1px solid var(--unipa-border)}.form-grid{display:grid;gap:.75rem}.form-contract{gap:1rem}.form-section{border:1px solid var(--unipa-border);border-radius:10px;padding:.85rem;background:#f9fcff}.form-section h3{margin:0 0 .65rem;font-size:.95rem;color:#39556e}.form-section-duration .check-grid{margin-bottom:1.5rem}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.form-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.previsioni-year-project-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,3fr);gap:.75rem}.previsioni-coan-row{display:grid;grid-template-columns:minmax(0,1.52fr) minmax(0,.69fr) minmax(0,.69fr);gap:.75rem}.anticipata-contract-row{display:grid;grid-template-columns:minmax(0,30%) minmax(0,70%);gap:.75rem}.anticipata-contract-info-row{display:grid;grid-template-columns:minmax(0,25%) minmax(0,35%) minmax(0,20%) minmax(0,20%);gap:.75rem}.input-with-action{display:flex;align-items:center;gap:.35rem;width:100%;min-width:0}.input-with-action input{flex:1 1 auto;min-width:0}.input-action{flex:0 0 auto;margin-right:0}label{display:grid;gap:.3rem;font-size:.9rem}input,select,textarea{border:1px solid var(--unipa-border);border-radius:8px;padding:.55rem .65rem;font-size:.95rem;font-family:inherit}.check-grid{display:grid;grid-template-columns:1fr;gap:.35rem}.check{display:flex;gap:.45rem;align-items:center}.radio-inline{display:flex;flex-wrap:wrap;gap:1rem}.form-actions{display:flex;gap:.5rem;margin-top:.5rem}.form-actions-right{justify-content:flex-end}.form-contract-actions{margin-top:0}.table-wrap{overflow:auto;min-height:430px;max-height:560px;border:1px solid var(--unipa-border);border-radius:10px}.table-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:.75rem;margin-bottom:.65rem;width:100%;align-items:start}.previsioni-filters{grid-template-columns:minmax(220px,1.4fr) minmax(70px,.35fr) minmax(220px,1.3fr) minmax(220px,1.3fr) auto}.contratti-filters{grid-template-columns:minmax(180px,1.2fr) minmax(130px,.8fr) minmax(140px,.9fr) minmax(80px,.45fr) minmax(180px,1.1fr) auto}.previsioni-filters .table-filter-reset{align-self:end}.table-filter-field.compact-year-filter,.table-filter-field.compact-year-filter select,.table-filter-field.compact-year-filter .field-with-action select{width:150px;min-width:150px;max-width:150px}.table-filter-field.project-multiselect-filter{width:320px;min-width:320px;max-width:320px}.project-multiselect-combo{position:relative;width:100%}.project-multiselect-trigger{width:100%;height:38px;min-height:38px;border:1px solid var(--unipa-border);border-radius:8px;background:#fff;color:#102a43;display:flex;align-items:center;justify-content:space-between;gap:.45rem;padding:.45rem .65rem}.project-multiselect-trigger-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.project-multiselect-trigger-caret{flex:0 0 auto;color:#4f6578}.project-multiselect-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;max-height:260px;overflow:auto;border:1px solid var(--unipa-border);border-radius:8px;background:#fff;box-shadow:0 8px 18px #0f172a24;padding:.25rem}.project-multiselect-option{width:100%;text-align:left;background:#fff;color:#102a43;border-radius:6px;padding:.35rem .5rem;font-size:.9rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-multiselect-option:hover{background:#eef5fc}.project-multiselect-option.selected{background:#dbeafe;color:#1e3a8a;font-weight:600}.table-filter-field{display:grid;gap:.35rem}.table-filter-field label{text-align:left;font-size:.9rem;color:#39556e}.table-filter-field input,.table-filter-field select{width:100%}.field-with-action{position:relative;width:100%}.field-with-action input,.field-with-action select{width:100%;padding-right:2.7rem}.field-with-action .field-clear-action{position:absolute;top:50%;right:1.45rem;transform:translateY(-50%);width:20px;height:20px;margin-right:0}.field-with-action .field-clear-action svg{width:14px;height:14px}.table-filter-reset{display:flex;align-items:flex-start;justify-content:flex-end;justify-self:end;align-self:start}.table-top-actions{display:flex;justify-content:flex-end;gap:.35rem;margin-bottom:.5rem}.filter-reset-button{margin-right:0}@media (max-width: 900px){.table-filters{grid-template-columns:1fr;width:100%}.table-filter-reset{justify-content:flex-start}}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid #e2e8f0;text-align:left;padding:.35rem .45rem;font-size:.88rem;white-space:nowrap}.coan-description-col{width:50%}.project-name-col{width:18%;max-width:18%}.project-name-col .link-button{display:block;width:100%;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions-col-right{text-align:right}.actions-col-header{text-align:right;padding-right:42px}.budget-col-right{text-align:right}.coan-toolbar{margin-bottom:5px}.coan-header-actions{display:flex;justify-content:space-between;align-items:flex-end;gap:.5rem;margin-bottom:5px}.coan-search-field{width:min(420px,100%)}.pagination{margin-top:.85rem;display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap}.pagination button{margin-right:0}.pagination span{color:#39556e;font-size:.9rem}.rows-per-page{display:flex;align-items:center;gap:.5rem}.rows-per-page label{font-size:.9rem;color:#39556e}.rows-per-page select{min-width:80px;padding:.35rem .5rem}.pagination-nav{display:flex;align-items:center;gap:.5rem}.pagination-nav button{min-width:40px;font-weight:700;font-size:1.35rem;line-height:1;background:transparent;color:var(--unipa-blue-dark)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{width:min(680px,100%);background:#fff;border:1px solid var(--unipa-border);border-radius:12px;box-shadow:0 12px 30px #0f172a40;padding:1rem}.contract-detail-detached{min-height:100vh;padding:1rem;background:#eef4f9}.contract-detail-modal{width:min(1200px,96vw);max-height:min(96vh,1120px);display:flex;flex-direction:column;overflow:hidden}.contract-detail-header{margin-bottom:1rem}.contract-detail-subtitle{margin:.2rem 0 0;color:#39556e}.contract-detail-toolbar{display:flex;gap:.6rem;flex-wrap:wrap}.contract-detail-body{display:flex;flex-direction:column;gap:1rem;overflow:auto;min-height:0;flex:1 1 auto;max-height:calc(min(96vh,1120px) - 110px);padding-right:.25rem}.contract-detail-body>.form-section{flex:0 0 auto;min-height:0}.contract-detail-body>.form-section:last-child{display:flex;flex-direction:column;min-height:0}.contract-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem}.contract-detail-full{grid-column:1 / -1}.contract-detail-amount{display:block;flex:1 1 auto;width:100%;min-width:140px;text-align:right}.contract-detail-table-amount{text-align:right}.contract-detail-anticipate-wrap{min-height:0;max-height:220px;overflow:auto;flex:1 1 auto}.previsione-modal{width:760px;max-width:760px;height:760px;max-height:760px;display:flex;flex-direction:column;overflow:hidden}.impegno-modal{height:862px;max-height:862px}.previsione-modal .form-grid{min-height:0;overflow:auto;padding-right:.2rem;overflow-x:hidden}.previsione-modal .anticipata-form{display:flex;flex-direction:column;min-height:0;flex:1 1 auto;overflow:hidden;padding-right:0}.previsione-modal .anticipata-form-scroll{min-height:0;flex:1 1 auto;display:grid;gap:3px;overflow:auto;overflow-x:hidden;padding-right:.2rem}.previsione-modal .anticipata-form-footer{flex:0 0 auto;margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--unipa-border);background:#fff}.previsione-modal .anticipata-form-actions{margin-top:0}.previsione-modal .form-grid>*{min-width:0}.previsione-modal .previsioni-year-project-row>*,.previsione-modal .previsioni-coan-row>*{min-width:0}.previsione-modal input:not([type=checkbox]),.previsione-modal select,.previsione-modal textarea{width:100%}.modal-title{margin:0 0 .5rem}.assoc-modal-title{margin-bottom:1rem}.modal-actions{margin-top:1rem;display:flex;justify-content:flex-end;gap:.5rem}.currency-input-wrap{position:relative}.currency-symbol{position:absolute;left:.65rem;top:50%;transform:translateY(-50%);color:#102a4373;pointer-events:none}.currency-input{padding-left:1.55rem;text-align:right}.currency-align-right{text-align:right}.budget-input-wrap{position:relative}.budget-euro{position:absolute;left:.65rem;top:50%;transform:translateY(-50%);color:#102a4373;pointer-events:none}.budget-input{padding-left:1.55rem;text-align:right}.no-spinner::-webkit-outer-spin-button,.no-spinner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.no-spinner[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.error{color:#b91c1c;margin:0}.form-help{margin:0;color:#39556e;font-size:.88rem}.error-banner,.loading{max-width:1300px;margin:.5rem auto;padding:.7rem 1rem;border-radius:8px}.error-banner{background:#fee2e2;color:#991b1b}.loading{background:var(--unipa-blue-soft);color:var(--unipa-blue-dark)}@media (max-width: 1024px){.form-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 700px){.form-grid-2{grid-template-columns:1fr}.report-page-header{flex-direction:column;align-items:stretch}.report-bar-row,.previsioni-year-project-row,.previsioni-coan-row,.anticipata-contract-row,.anticipata-contract-info-row,.form-grid-3{grid-template-columns:1fr}}@media print{.no-print,.header,.menu-bar,.loading,.error-banner{display:none!important}body{background:#fff}.layout{padding:0}.card.report-page,.report-project-card,.report-chart-card,.report-empty-state{box-shadow:none;border-color:#b8c8d8;background:#fff}.report-bar-track{border:1px solid #b8c8d8}}
