:root{--bg-primary: #0f1419;--bg-secondary: #1a2332;--bg-tertiary: #243447;--bg-card: #1e2d3d;--text-primary: #e7e9ea;--text-secondary: #8b98a5;--accent: #1d9bf0;--accent-hover: #1a8cd8;--success: #00ba7c;--warning: #ffad1f;--danger: #f4212e;--border: #38444d;--font-sans: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius: 8px;--radius-lg: 12px;--shadow: 0 4px 20px rgba(0,0,0,.3);--layout-break-mobile: 900px;--touch-min-target: 44px;--main-padding: 1.5rem;--main-padding-mobile: .75rem;--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;line-height:1.5}.app{display:flex;flex-direction:column;min-height:100vh}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:linear-gradient(#0f1419b3,#0f1419b3),url(../assets/login-bg.png);background-size:cover;background-position:center;background-repeat:no-repeat}.header{background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:1rem var(--main-padding);display:flex;flex-direction:column;align-items:stretch;gap:0}.header h1{font-size:1.25rem;font-weight:600}.env-badge{display:inline-block;margin-left:.5rem;padding:.15rem .45rem;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;background:#ffad1f33;color:var(--warning);border:1px solid rgba(255,173,31,.5);vertical-align:middle}.env-badge.hidden{display:none}.login-page-brand{text-align:center;margin-bottom:1rem}.login-page-title{font-weight:600;font-size:1.05rem;line-height:1.35;color:var(--text-primary);margin:0 0 .4rem}.env-badge--login{vertical-align:baseline}.header-right{display:flex;align-items:center;gap:.75rem;flex-shrink:0;margin-left:auto}.header-right #user-label{font-size:.9rem;font-weight:500;color:var(--text-primary)}.header-right #app-version{font-size:.75rem;color:var(--text-secondary);white-space:nowrap}.btn-board-bell{position:relative;min-width:2.2rem;padding-inline:.55rem}.btn-board-bell.has-unread{border-color:var(--warning);box-shadow:0 0 0 1px #ffad1f59,0 0 10px #ffad1f40}.board-bell-count{position:absolute;top:-.35rem;right:-.35rem;min-width:1.1rem;padding:.08rem .28rem;border-radius:999px;background:var(--warning);color:#111;font-size:.66rem;line-height:1.1;font-weight:700}.nav{display:flex;gap:.5rem}.nav-btn{padding:.5rem 1rem;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);cursor:pointer;font-size:.9rem;transition:all .2s;display:inline-flex;align-items:center;gap:.45rem}.nav-btn:hover{background:var(--bg-card);border-color:var(--accent)}.nav-btn.active{background:var(--accent, #2f5bea);border-color:var(--accent, #2f5bea);color:#fff}.nav-btn-icon{font-size:1rem;line-height:1}.nav-btn--kiosk.active{--accent: #0284c7}.nav-btn--calendario.active{--accent: #2563eb}.nav-btn--medici.active{--accent: #0d9488}.nav-btn--assenze.active{--accent: #f59e0b}.nav-btn--turni.active{--accent: #7c3aed}.nav-btn--carichi.active{--accent: #db2777}.nav-btn--bacheca.active{--accent: #ea580c}.nav-btn--utenti.active{--accent: #334155}.nav-btn--manuale.active{--accent: #16a34a}.main{flex:1;padding:var(--main-padding);overflow:visible}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}.card-title{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.85rem;color:var(--text-secondary);margin-bottom:.35rem}input[type=text],input[type=number],input[type=password],input[type=email],input[type=url],select{width:100%;box-sizing:border-box;padding:.5rem .75rem;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:.95rem}input:focus,select:focus{outline:none;border-color:var(--accent)}select.slot-assign-select option:disabled{color:var(--text-secondary);background:var(--bg-secondary)}.btn{padding:.5rem 1rem;border-radius:var(--radius);font-size:.9rem;cursor:pointer;border:none;transition:all .2s;font-family:inherit}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-card)}.btn-danger{background:var(--danger);color:#fff}.btn-success{background:var(--success);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(.94)}.btn-pdf{display:inline-flex;align-items:center;gap:.45rem;background:var(--danger);color:#fff}.btn-pdf .btn-pdf-icon{display:inline-flex;line-height:0;flex-shrink:0}.btn-pdf .btn-pdf-icon svg{display:block;width:1.1em;height:1.1em}.btn-pdf:hover:not(:disabled){filter:brightness(.92)}.btn-pdf:disabled{opacity:.65;cursor:not-allowed}.btn-sm{padding:.35rem .65rem;font-size:.8rem}.slider-group{margin-bottom:1rem}.slider-group label{display:flex;justify-content:space-between;align-items:center;margin-bottom:.35rem;font-size:.9rem}.slider-group .slots-info{font-size:.8rem;color:var(--accent);font-family:var(--font-mono)}input[type=range]{width:100%;height:6px;-webkit-appearance:none;background:var(--bg-tertiary);border-radius:3px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;background:var(--accent);border-radius:50%;cursor:pointer}.checkbox-group{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.checkbox-item{display:flex;align-items:center;gap:.5rem;cursor:pointer}.checkbox-item input{width:18px;height:18px;accent-color:var(--accent)}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}table{width:100%;border-collapse:collapse}th,td{padding:.6rem .75rem;text-align:left;border-bottom:1px solid var(--border)}th{background:var(--bg-tertiary);font-weight:600;font-size:.85rem;color:var(--text-secondary)}tr:hover td{background:#1d9bf00d}.calendar-grid{display:grid;gap:2px;font-size:.75rem}.calendar-cell{padding:.35rem;min-height:32px;min-width:28px;cursor:pointer;transition:background .15s;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.calendar-cell:hover{background:var(--bg-tertiary)}.calendar-cell.blocked,.calendar-cell.libera-professione,.calendar-cell.formazione,.calendar-cell.desiderata{display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.7rem;text-shadow:0 1px 1px rgba(0,0,0,.2)}.calendar-cell.blocked,.calendar-cell.libera-professione,.calendar-cell.formazione{color:#fff}.calendar-cell.blocked{background:var(--danger);opacity:.7}.calendar-cell.desiderata{background:var(--warning);opacity:.6;color:#1a1a1a}.calendar-cell.libera-professione{background:#0d9488;opacity:.8}.calendar-cell.formazione{background:#7c3aed;opacity:.8}.calendar-cell.available{background:transparent}.calendar-cell.selecting{outline:2px solid var(--accent);outline-offset:-2px;box-shadow:inset 0 0 0 2px var(--accent)}.calendar-cell.absence-request-locked-week{cursor:not-allowed;opacity:.82;box-shadow:inset 0 0 0 2px #64748b80;background-image:repeating-linear-gradient(-45deg,transparent,transparent 3px,rgba(100,116,139,.07) 3px,rgba(100,116,139,.07) 6px)}.absence-request-lock-panel{margin:1rem 0;padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius);border:1px solid var(--border)}.absence-request-lock-panel>summary{cursor:pointer;font-weight:600}.absence-request-lock-hint{font-size:.85rem;color:var(--text-secondary);margin:.5rem 0 .75rem}.absence-request-lock-toggles{display:flex;flex-direction:column;gap:.1rem}.absence-request-lock-row{display:flex;align-items:flex-start;gap:.5rem;margin:.25rem 0;cursor:pointer;font-size:.88rem}.calendar-table{-webkit-user-select:none;user-select:none}.absences-table-wrapper{overflow-y:auto;max-height:70vh;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.absences-table-wrapper th,.absences-table-wrapper td{-webkit-user-select:none;user-select:none}.absences-table-wrapper .calendar-table thead{position:sticky;top:0;z-index:2;background:var(--bg-card);box-shadow:0 2px 4px -2px #0003}.absences-table-wrapper .calendar-table thead th{background:var(--bg-tertiary)}.absences-table-wrapper .calendar-table thead th.calendar-month-header{text-align:center;font-weight:600;font-size:.8rem;line-height:1.25;padding:.4rem .3rem;background:var(--bg-secondary);color:var(--text-secondary);border-bottom:1px solid var(--border);vertical-align:middle}@media(max-width:900px),(pointer:coarse){.absences-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;touch-action:pan-x pan-y}.absences-table-wrapper.absences-range-armed{touch-action:none;overscroll-behavior:contain}.absences-table-wrapper.absences-range-armed .calendar-cell,.absences-table-wrapper.absences-range-armed td.calendar-cell-wrapper,.absences-table-wrapper.absences-range-armed th{touch-action:none!important}.absences-calendar-page.absences-range-armed-card{touch-action:none;overscroll-behavior-x:contain;overflow-x:hidden}.absences-table-wrapper .calendar-table thead th:not(.calendar-col-medico){min-width:3rem;padding:.5rem .35rem;font-size:.82rem;line-height:1.25}.absences-table-wrapper .calendar-table td.calendar-cell-wrapper{min-width:3rem;padding:3px;vertical-align:middle}.absences-table-wrapper .calendar-cell{min-width:44px;min-height:44px;padding:.45rem .35rem;touch-action:manipulation;box-sizing:border-box;font-size:.82rem}.absences-table-wrapper .calendar-cell.blocked,.absences-table-wrapper .calendar-cell.libera-professione,.absences-table-wrapper .calendar-cell.formazione,.absences-table-wrapper .calendar-cell.desiderata{font-size:.8rem}.absences-table-wrapper .calendar-table .calendar-col-medico{min-width:6.75rem;max-width:40vw;font-size:.9rem;padding:.5rem .45rem;white-space:normal;word-break:break-word}.shift-table-grid th,.shift-table-grid td{font-size:.85rem}.shift-table-grid .grid-row-head{font-size:.85rem;max-width:42vw;white-space:normal;width:auto;min-width:7rem}.shift-table-grid .grid-row-cat{font-size:.88rem}.shift-table-grid .grid-row-time{font-size:.88rem;line-height:1.15}.shift-table-grid .grid-day-head{width:auto;min-width:48px;padding:6px 4px}.shift-table-grid .grid-day-letter{font-size:.9rem}.shift-table-grid .grid-day-date{font-size:.75rem}.shift-table-grid .grid-cell{height:auto;min-height:2.85rem;min-width:48px;padding:4px;touch-action:manipulation}.shift-table-grid .slot-cell-inner.view-table .grid-sigla{font-size:.88rem;padding:.2rem .45rem}}.balance-indicator,.balance-indicator-section{padding:.6rem .9rem;border-radius:var(--radius);font-size:.9rem;margin-bottom:1rem;border-left:4px solid var(--border)}.balance-indicator.balance-ok,.balance-indicator-row.balance-ok{background:#00ba7c1f;border-left-color:var(--success)}.balance-indicator.balance-deficit,.balance-indicator-row.balance-deficit{background:#f4212e1f;border-left-color:var(--danger)}.balance-indicator-section{background:var(--bg-secondary);border:1px solid var(--border)}.balance-indicator-details>.balance-indicator-summary{cursor:pointer;font-weight:600;font-size:.9rem;list-style:none}.balance-indicator-details>.balance-indicator-summary::-webkit-details-marker{display:none}.balance-indicator-details .balance-indicator-body{margin-top:.5rem}.balance-indicator-title{font-weight:600;margin-bottom:.5rem;font-size:.9rem}.balance-indicator-row{border-radius:4px;margin-bottom:.25rem;padding:.35rem 0 .35rem .5rem;border-left:3px solid transparent}.balance-indicator-row:last-child{margin-bottom:0}.calendar-table th,.calendar-table td{border-right:1px solid var(--border)}.calendar-table .calendar-col-medico{position:sticky;left:0;z-index:1;background:var(--bg-card);box-shadow:2px 0 4px -2px #00000026}.calendar-table thead .calendar-col-medico{background:var(--bg-tertiary);z-index:2}.calendar-table tbody tr:hover .calendar-col-medico{background:#1d9bf00d}.calendar-table th.day-festivo,.calendar-table td.day-festivo{background:#7856ff1f}.summary-absences-card{font-size:.9rem}.summary-absences-card .card-title{font-size:1rem}.summary-absences-card .table-wrapper{display:inline-block;width:max-content;max-width:100%;overflow-x:auto}.summary-absences-card .table-wrapper .summary-absences-table{table-layout:auto;width:max-content}.summary-absences-table th,.summary-absences-table td{padding:.35rem .5rem}.summary-absences-table .summary-cell{white-space:nowrap;text-align:center}.summary-absences-table .calendar-col-medico{white-space:nowrap;text-align:left}.summary-absences-table .summary-cell.summary-over{background:#f4212e1f}.summary-absences-table .summary-cell.summary-over .summary-val-over,.summary-absences-table .summary-cell.summary-over{color:var(--danger);font-weight:600}.calendar-summary .week-cell{cursor:pointer;min-height:2.5rem;vertical-align:top}.calendar-summary .week-cell:hover{background:#1d9bf014}.calendar-summary .week-slot-badge:hover{opacity:.9}.badge{display:inline-block;padding:.2rem .5rem;font-size:.75rem;border-radius:4px;font-weight:500}.badge-ti{background:#1d9bf033;color:#1d9bf0}.badge-so{background:#00ba7c33;color:#00ba7c}.badge-nora{background:#c2410c33;color:#fb923c}.badge-md{background:#ffad1f33;color:#ffad1f}.badge-cp{background:#fb923c33;color:#fb923c}.badge-formazione{background:#818cf833;color:#a5b4fc}.badge-dir{background:#7856ff33;color:#a78bfa}.calendar-tabs{display:flex;gap:.35rem;flex-wrap:wrap;margin:1rem 0 .75rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.calendar-tab{padding:.45rem .85rem;font-size:.88rem;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer}.calendar-tab:hover{color:var(--text-primary);border-color:var(--accent)}.calendar-tab.is-active{color:var(--text-primary);background:var(--bg-card);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.calendar-tab-panel{display:none;padding-top:.25rem}.calendar-tab-panel.is-active{display:block}.template-wd-row .template-wd-label{cursor:pointer;-webkit-user-select:none;user-select:none}.badge-draggable{cursor:grab;user-select:none;-webkit-user-select:none}.badge-draggable:active{cursor:grabbing}body.planner-dnd-active{user-select:none;-webkit-user-select:none}.slot-lock-icon{cursor:pointer;font-size:1.2rem;margin-left:5px;padding:2px;border-radius:4px;transition:all .2s}.slot-lock-icon.locked{color:#ef4444;opacity:1;background:#ef44441a}.slot-lock-icon.unlocked{color:#9ca3af;opacity:.5;filter:grayscale(100%)}.slot-lock-icon.unlocked:hover{opacity:1;color:#22c55e;background:#22c55e1a}.badge-draggable.dragging{opacity:.5}.slot-cell-inner{min-height:2.5rem}.slot-cell-inner.drag-over{background:#1d9bf033;outline:2px dashed var(--accent)}.slot-cell-inner.slot-uncovered{background:#f4212e26;border:1px dashed var(--danger);border-radius:var(--radius)}.shift-planner-layout{display:flex;gap:1.5rem;align-items:flex-start}.shift-planner-main{flex:1;min-width:0}.shift-planner-sidebar{width:280px;flex-shrink:0;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.shift-planner-sidebar .sidebar-title{font-weight:600;font-size:.9rem;margin-bottom:.25rem}.shift-planner-sidebar .sidebar-hint{font-size:.75rem;color:var(--text-secondary);margin-bottom:.75rem}.shift-planner-sidebar .sidebar-list{list-style:none;margin:0;padding:0}.shift-planner-sidebar .sidebar-list li{padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.9rem}.shift-planner-sidebar .sidebar-list li:last-child{border-bottom:none}.week-badge{display:inline-block;margin-left:.25rem;padding:.15rem .4rem;background:var(--warning);color:var(--bg-primary);border-radius:4px;font-size:.75rem}.week-badge-sotto{background:var(--warning);color:var(--bg-primary)}.week-badge-ok{background:#22c55e;color:#fff}.week-badge-sopra{background:#f97316;color:#fff}.week-badge-empty{background:var(--bg-secondary);color:var(--text-secondary);opacity:.7}.week-badge-over{background:#f97316;color:#fff}.shift-planner-sidebar-stable{min-width:220px;max-width:320px}.sidebar-status-table-wrapper{overflow-x:auto;max-height:88vh;overflow-y:auto}.sidebar-status-table{width:100%;font-size:.8rem;border-collapse:collapse}.sidebar-status-table th,.sidebar-status-table td{padding:.35rem .4rem;border-bottom:1px solid var(--border);white-space:nowrap}.sidebar-status-table th{font-weight:600;color:var(--text-secondary);text-align:center}.sidebar-status-table td:first-child{white-space:normal}.sidebar-status-table .week-badge{margin:0;display:block;text-align:center}.sidebar-status-table .week-highlight-toggle{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);border-radius:.48rem;width:1.7rem;height:1.7rem;line-height:1;padding:0;margin-right:.35rem;cursor:pointer;font-size:1rem;display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 -1px #ffffff12}.sidebar-status-table .week-highlight-toggle:hover{border-color:var(--accent);color:var(--accent)}.sidebar-status-table .week-highlight-toggle.active{background:color-mix(in srgb,#f7c948 38%,var(--bg-tertiary));border-color:color-mix(in srgb,#f7c948 74%,#ffffff 26%);color:#1f2937;box-shadow:0 0 0 1px #f7c9485c,0 0 9px #f7c94880}.sidebar-status-table .week-badge .week-hours-main{display:block;font-weight:700;line-height:1.05}.sidebar-status-table .week-badge .week-hours-ag{display:block;margin-top:1px;font-size:.88em;font-weight:650;line-height:1.05;opacity:.98}.week-block{margin-bottom:2rem;padding:1rem;overflow:visible}.week-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem;padding:.45rem .25rem .6rem;font-size:1.1rem;font-weight:600;color:var(--text-primary);background:var(--bg-card);border-bottom:1px solid var(--border)}.week-title-iso{font-weight:600}.week-title-range{font-size:.9rem;font-weight:400;color:var(--text-secondary)}.week-header-actions{display:inline-flex;align-items:center;gap:.35rem;margin-left:auto;flex-wrap:wrap}.week-lock-btn{cursor:pointer;font-size:.84rem;padding:.2rem .5rem;background:#2459d3;border-color:#2459d3;color:#fff}.week-bulk-lock-btn,.week-add-slot-btn{padding:.2rem .45rem}.week-lock-btn:hover:not(:disabled){background:#1e4ab0;border-color:#1e4ab0}.week-bulk-lock-btn{background:#b56a00;border-color:#b56a00;color:#fff}.week-bulk-lock-btn:hover:not(:disabled){background:#975900;border-color:#975900}.week-add-slot-btn{background:#1f8a4c;border-color:#1f8a4c;color:#fff}.week-add-slot-btn:hover:not(:disabled){background:#1a7440;border-color:#1a7440}.week-header-actions .btn:disabled{opacity:.55}.week-lock-readonly{font-size:1.2rem;opacity:.9;cursor:default;-webkit-user-select:none;user-select:none}.week-archived-badge{font-size:.75rem}.week-layout{display:flex;gap:1.5rem;align-items:flex-start;flex-wrap:wrap}.week-shifts{flex:1;min-width:300px;overflow:visible}.week-shifts .shift-table{border-collapse:separate;border-spacing:0}.week-shifts .shift-table thead th{position:sticky;top:calc(var(--week-sticky-offset, 3.6rem) + 2px);z-index:24;background:var(--bg-tertiary);box-shadow:0 1px 0 var(--border)}.week-stats{width:300px;flex-shrink:0;align-self:flex-start;background:var(--bg-tertiary);border-radius:var(--radius);border:1px solid var(--border);padding:.5rem;position:sticky;top:var(--week-sticky-offset, 3.6rem);max-height:calc(100vh - 4rem);overflow:auto}.week-stats-title{position:sticky;top:0;z-index:1;font-size:.85rem;font-weight:600;margin-bottom:.5rem;padding:.5rem;border-bottom:1px solid var(--border);background:var(--bg-tertiary)}.week-stats-content .sidebar-status-table{font-size:.8rem}.weekend-teams-section{margin-bottom:1rem;padding:1rem;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius)}.weekend-teams-list{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:.5rem}.weekend-teams-section summary{cursor:pointer;font-weight:600;font-size:.95rem}.weekend-team-card{padding:.75rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)}.weekend-team-title{font-weight:600;font-size:.9rem;margin-bottom:.5rem}.weekend-team-slots{display:flex;flex-wrap:wrap;gap:.5rem}.weekend-team-slots select{flex:1 1 85px;min-width:70px;max-width:110px}@media(max-width:1100px){.week-shifts .shift-table thead th{top:0}.week-stats{position:static;max-height:none}}.shift-table-grid{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}.shift-table-grid th,.shift-table-grid td{border:1px solid var(--border);padding:0;vertical-align:middle;font-size:.78rem}.shift-table-grid thead th{position:sticky;top:calc(var(--week-sticky-offset, 3.6rem) + 2px);z-index:24;background:var(--bg-tertiary);box-shadow:0 1px 0 var(--border);padding:4px 2px;text-align:center;font-weight:600}.shift-table-grid .grid-row-head{text-align:left;font-weight:600;font-size:.78rem;padding:3px 6px;width:14ch;max-width:180px;background:var(--bg-tertiary);white-space:nowrap}.shift-table-grid tbody .grid-row-head{position:sticky;left:0;z-index:5}.shift-table-grid .grid-row-label{display:inline-flex;flex-wrap:wrap;align-items:center;row-gap:.12rem;column-gap:.35rem;line-height:1.15}.shift-table-grid .grid-row-cat{font-size:.82rem;padding:1px 5px}.shift-table-grid .grid-row-cat.grid-row-cat-amb{border-color:#6b7280;background:color-mix(in srgb,#6b7280 24%,var(--bg-secondary) 76%);color:#e5e7eb}.shift-table-grid .grid-row-time{font-size:.82rem;font-weight:600;line-height:1.15;color:var(--text-secondary)}.shift-table-grid .grid-day-head{width:60px;min-width:40px}.shift-table-grid .grid-day-letter{font-weight:700;font-size:.82rem}.shift-table-grid .grid-day-date{font-size:.7rem;color:var(--text-secondary)}.shift-table-grid .grid-day-weekend{background:#f973161f}.shift-table-grid .grid-cell{height:2.2rem;padding:2px;text-align:center;position:relative}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot){background:color-mix(in srgb,#e0f2fe 82%,var(--bg-primary) 18%)}.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot){background:color-mix(in srgb,#d1fae5 82%,var(--bg-primary) 18%)}.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot){background:color-mix(in srgb,#fdba74 72%,var(--bg-primary) 28%)}.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot){background:color-mix(in srgb,#fef3c7 82%,var(--bg-primary) 18%)}.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot){background:color-mix(in srgb,#ffedd5 82%,var(--bg-primary) 18%)}.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot){background:color-mix(in srgb,#e0e7ff 82%,var(--bg-primary) 18%)}.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot){background:color-mix(in srgb,#ede9fe 82%,var(--bg-primary) 18%)}.shift-table-grid .grid-cell.cat-bg-ti.cat-bg-ti-notte{background:#1d9bf028;color:var(--text-primary)}.shift-table-grid .grid-cell.cat-bg-ti.cat-bg-ti-notte .slot-cell-inner.view-table .grid-sigla{color:inherit}.shift-table-grid .grid-cell.cat-bg-ti.cat-bg-ti-notte .slot-cell-inner.view-table .grid-empty-mark{color:var(--text-secondary);opacity:.65}.shift-table-grid .grid-cell.cat-bg-ti.cat-bg-ti-notte .slot-lock-icon.unlocked{color:#94a3b8;opacity:.9}.shift-table-grid .grid-cell.cat-bg-ti.cat-bg-ti-notte .slot-lock-icon.locked{color:#fca5a5}.shift-table-grid .grid-cell.cat-bg-rep-slot{background:#00ba7c28;color:var(--text-primary)}.shift-table-grid .grid-cell.cat-bg-rep-slot .slot-cell-inner.view-table .grid-sigla{color:inherit}.shift-table-grid .grid-cell.cat-bg-rep-slot .slot-cell-inner.view-table .grid-empty-mark{color:var(--text-secondary);opacity:.65}.shift-table-grid .grid-cell.cat-bg-rep-slot .slot-lock-icon.unlocked{color:#86efac;opacity:.9}.shift-table-grid .grid-cell.cat-bg-rep-slot .slot-lock-icon.locked{color:#fca5a5}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot){color:#0c4a6e}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#075985}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#0c4a6e;opacity:.55}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#64748b;opacity:.85}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot){color:#14532d}.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#166534}.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#14532d;opacity:.55}.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#4d7c4f;opacity:.9}.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-so.cat-bg-amb:not(.cat-bg-rep-slot){background:color-mix(in srgb,#d1d5db 78%,var(--bg-primary) 22%);color:#374151}.shift-table-grid .grid-cell.cat-bg-so.cat-bg-amb:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#4b5563}.shift-table-grid .grid-cell.cat-bg-so.cat-bg-amb:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#374151;opacity:.6}.shift-table-grid .grid-cell.cat-bg-so.cat-bg-amb:not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#6b7280;opacity:.9}.shift-table-grid .grid-cell.cat-bg-so.cat-bg-amb:not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot){color:#7c2d12}.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#9a3412}.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#7c2d12;opacity:.55}.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#c2410c;opacity:.9}.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot){color:#78350f}.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#b45309}.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#78350f;opacity:.55}.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#a16207;opacity:.9}.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot){color:#7c2d12}.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#c2410c}.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#7c2d12;opacity:.55}.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#9a3412;opacity:.9}.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot){color:#312e81}.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#4338ca}.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#312e81;opacity:.55}.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#6366f1;opacity:.85}.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot){color:#4c1d95}.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-sigla{color:#6d28d9}.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot) .slot-cell-inner.view-table .grid-empty-mark{color:#4c1d95;opacity:.55}.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot) .slot-lock-icon.unlocked{color:#7c3aed;opacity:.85}.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot) .slot-lock-icon.locked{color:#b91c1c}.shift-table-grid .grid-cell.cat-bg-ti.cat-bg-ti-notte .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-rep-slot .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-ti.cat-bg-ti-notte .slot-cell-inner.view-table.slot-uncovered .grid-sigla,.shift-table-grid .grid-cell.cat-bg-rep-slot .slot-cell-inner.view-table.slot-uncovered .grid-sigla{color:#fecaca}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered{color:#991b1b}.shift-table-grid .grid-cell.cat-bg-ti:not(.cat-bg-ti-notte):not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla,.shift-table-grid .grid-cell.cat-bg-so:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla,.shift-table-grid .grid-cell.cat-bg-nora:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla,.shift-table-grid .grid-cell.cat-bg-md:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla,.shift-table-grid .grid-cell.cat-bg-cp:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla,.shift-table-grid .grid-cell.cat-bg-formazione:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla,.shift-table-grid .grid-cell.cat-bg-dir:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla{color:#991b1b}.shift-table-grid .grid-cell.cat-bg-so.cat-bg-amb:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered,.shift-table-grid .grid-cell.cat-bg-so.cat-bg-amb:not(.cat-bg-rep-slot) .slot-cell-inner.view-table.slot-uncovered .grid-sigla{color:#374151}.shift-table-grid .grid-cell.slot-highlighted-doctor{background:var(--hl-bg)!important;color:var(--hl-fg)!important;box-shadow:inset 0 0 0 2px var(--hl-border, rgba(255, 255, 255, .45)),inset 0 -14px 18px #00000029}.shift-table-grid .grid-cell.slot-highlighted-doctor .slot-cell-inner.view-table,.shift-table-grid .grid-cell.slot-highlighted-doctor .slot-cell-inner.view-table .grid-sigla,.shift-table-grid .grid-cell.slot-highlighted-doctor .slot-cell-inner.view-table .grid-empty-mark,.shift-table-grid .grid-cell.slot-highlighted-doctor .slot-lock-icon{color:var(--hl-fg)!important;text-shadow:0 1px 1px rgba(0,0,0,.28)}.shift-table-grid .grid-cell.slot-import-warning-cell{box-shadow:inset 0 0 0 2px #f4212e80}.planner-toolbar{margin-bottom:1rem}.planner-toolbar-filters{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:.75rem}.planner-toolbar-actions{display:flex;flex-wrap:wrap;gap:.5rem .65rem;align-items:center;padding-bottom:2px}.planner-toolbar-actions--generate{margin-bottom:.45rem}.planner-toolbar-actions--exports{border-top:1px dashed var(--border);padding-top:.55rem}.planner-toolbar-actions .btn{flex:0 0 auto;white-space:nowrap}.week-range-selector{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end}.week-range-selector .week-range-bound{flex:1 1 220px;min-width:min(100%,12rem)}.week-range-selector .week-range-label{display:block;font-size:.8rem;margin-bottom:.2rem}.week-range-selector .week-range-pair{display:flex;gap:.35rem;align-items:stretch;min-width:0}.week-range-selector .week-range-year-select{flex:0 0 auto;width:4.75rem;min-width:4.5rem;max-width:5.25rem;padding-left:.35rem;padding-right:1.5rem}.week-range-selector .week-range-week-select{flex:1 1 12rem;min-width:min(100%,11rem);max-width:100%}.planner-toolbar-auto-lock{display:flex;align-items:flex-end}.planner-toolbar-auto-lock .btn{white-space:normal;text-align:center;max-width:min(100%,22rem)}.btn-calendar{background:#d7a500;border-color:#d7a500;color:#101010}.btn-excel{background:#1d6f42;border-color:#1d6f42;color:#fff}.btn-excel:hover:not(:disabled){background:#185c37;border-color:#185c37}.btn-excel:disabled{opacity:.65}.btn-calendar:hover:not(:disabled){background:#bb9000;border-color:#bb9000}.btn-calendar:disabled{opacity:.65}.shift-table-grid .grid-cell-na{background:repeating-linear-gradient(45deg,var(--bg-secondary) 0 4px,var(--bg-tertiary) 4px 8px);color:var(--text-secondary);opacity:.5;cursor:not-allowed;font-size:.7rem}.shift-table-grid .grid-cell-na.add-slot-cell{opacity:1;cursor:pointer;color:var(--text-primary);font-weight:700}.shift-table-grid .grid-cell-na.add-slot-cell:hover{background:color-mix(in srgb,var(--accent) 14%,var(--bg-secondary) 86%)}.shift-table-grid .grid-empty{padding:1rem;text-align:center;color:var(--text-secondary);font-style:italic}.slot-cell-inner.view-table{display:flex;align-items:center;justify-content:center;gap:3px;min-height:1.8rem;padding:2px 4px;border-radius:3px;position:relative;cursor:pointer}.slot-cell-inner.view-table .slot-assign-select{display:none;position:absolute;top:0;left:0;right:0;z-index:2;width:100%;max-width:260px;font-size:.96rem}.slot-cell-inner.view-table[data-open="1"]{z-index:50}.slot-cell-inner.view-table[data-open="1"] .slot-assign-select{display:block;position:absolute;top:100%;left:0;z-index:51;width:max-content;min-width:220px;max-height:min(55vh,320px);overflow-y:auto;box-shadow:0 6px 20px #0000002e;border-radius:6px;background:var(--bg-primary);border:1px solid var(--border)}.slot-cell-inner.view-table .slot-assign-select option{font-size:.96rem;padding:.4rem .35rem}.slot-cell-inner.view-table .slot-assign-select option[value=""]{color:color-mix(in srgb,var(--accent) 55%,var(--text-primary) 45%);font-weight:600}.slot-cell-inner.view-table .slot-assign-select option[value=__separator__]{color:var(--text-secondary);font-weight:600}.slot-cell-inner.view-table .slot-assign-select option[value=__remove_slot__]{color:var(--danger);font-weight:700}.slot-cell-inner.view-table .badge-draggable.grid-sigla.table-drag-armed{outline:2px solid var(--accent);outline-offset:1px;cursor:grab}.slot-cell-inner.view-table .grid-sigla{font-weight:700;font-size:.82rem;padding:2px 6px;letter-spacing:.3px;cursor:grab}.slot-cell-inner.view-table .grid-sigla:active{cursor:grabbing}.slot-cell-inner.view-table .grid-empty-mark{color:var(--text-secondary);font-size:.9rem;opacity:.5}.slot-cell-inner.view-table .slot-lock-icon{font-size:.9rem;margin-left:2px;padding:0}.slot-cell-inner.view-table.slot-import-warning{background:#f4212e24;border:1px dashed var(--danger)}.slot-cell-inner.view-table .slot-import-warning-icon{margin-left:2px;color:var(--danger);font-size:.9rem}.slot-cell-inner.view-table.slot-uncovered{background:#f4212e1f;border:1px dashed var(--danger)}.slot-cell-inner.view-table.drag-over{background:#1d9bf038;outline:2px dashed var(--accent);outline-offset:-2px}.shift-table-grid td.planner-active-cell,.shift-table-grid .slot-cell-inner.view-table.planner-active-cell{outline:3px solid color-mix(in srgb,var(--accent) 70%,#ffffff 30%);outline-offset:-2px;box-shadow:inset 0 0 0 2px #ffffff59,0 0 0 2px #0000000f}.shift-table-grid td.planner-active-cell{border-radius:4px}.empty-state{text-align:center;padding:2rem;color:var(--text-secondary)}.admin-panel-nav-link{display:inline-flex;align-items:center;padding:.38rem .85rem;border-radius:999px;font-size:.82rem;font-weight:600;text-decoration:none;color:#fff;background:var(--accent, #2563eb);border:1px solid rgba(255,255,255,.22);box-shadow:0 1px 3px #00000026;letter-spacing:.01em}.admin-panel-nav-link:hover{color:#fff;filter:brightness(1.07);text-decoration:none}.admin-panel-nav-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.users-last-access-row:hover td{background:var(--bg-secondary)}.users-last-access-row--selected td{background:color-mix(in srgb,var(--accent) 12%,var(--bg-card))}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10050;padding:1rem;padding-bottom:calc(1rem + var(--safe-bottom));box-sizing:border-box}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:500px;width:100%;max-height:min(90vh,100dvh - 2rem);overflow-y:auto;-webkit-overflow-scrolling:touch}.modal-header{padding:1rem 1.25rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-body{padding:1.25rem}.modal-footer{padding:1rem 1.25rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.5rem}.desiderata-options{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.desiderata-option{padding:.35rem .65rem;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);font-size:.8rem;cursor:pointer;transition:all .2s}.desiderata-option:hover,.desiderata-option.selected{background:var(--accent);border-color:var(--accent);color:#fff}.slot-absence-options{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.slot-absence-options-formazione{align-items:center}.slot-absence-option{padding:.35rem .65rem;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);font-size:.8rem;cursor:pointer;transition:all .2s}.slot-absence-option:hover,.slot-absence-option.selected{background:var(--accent);border-color:var(--accent);color:#fff}.workload-section{margin-top:1.5rem}.workload-section-title{font-size:1rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary)}.workload-table{width:100%;border-collapse:collapse;font-size:.95rem}.workload-table th,.workload-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--border)}.workload-table th{color:var(--text-secondary);font-weight:500}.workload-table .negative{color:var(--warning)}.workload-table .over{color:var(--danger)}.workload-table .under{color:var(--warning)}.workload-table-small{font-size:.85rem}.workload-table-small th,.workload-table-small td{padding:.35rem .5rem}.workload-history-grid{display:flex;flex-wrap:wrap;gap:1rem}.workload-history-card{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;min-width:180px}.workload-history-title{font-weight:600;font-size:.95rem;margin-bottom:.5rem}.workload-hint{font-size:.85rem;color:var(--text-secondary);margin-bottom:.5rem}html.layout-narrow .main{--main-padding: var(--main-padding-mobile);padding:var(--main-padding);padding-bottom:calc(var(--main-padding-mobile) + var(--safe-bottom))}html.layout-narrow .header{padding-inline:var(--main-padding)}html.layout-narrow .header-right{width:100%;margin-left:0!important;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;gap:.45rem;padding-bottom:2px}html.layout-narrow .header-right .btn-sm,html.layout-narrow .header-right #user-label,html.layout-narrow .header-right #app-version{flex:0 0 auto}html.layout-narrow .header-right .btn-sm{min-height:2.25rem;padding:.4rem .6rem}.header-top{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;width:100%}.header-brand{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.header-brand h1{font-size:clamp(.85rem,3.5vw,1.25rem);line-height:1.25;margin:0}.nav-toggle{display:none;align-items:center;justify-content:center;min-width:var(--touch-min-target);min-height:var(--touch-min-target);padding:.35rem .65rem;flex-shrink:0}.nav-backdrop{display:none}@media(max-width:900px){.app.app--kiosk .header{padding-inline:var(--main-padding-mobile)}.header{padding:.9rem var(--main-padding-mobile)}.nav-toggle{display:inline-flex;min-width:48px;min-height:48px;padding:.45rem .8rem;font-size:1.05rem}.header:not(.header--nav-open) #main-nav{display:none!important}.header.header--nav-open #main-nav{display:flex!important;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(320px,calc(100vw - 2rem));max-height:min(480px,72vh);overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:1001;flex-direction:column;align-items:stretch;gap:.35rem;padding:.75rem;margin:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.header.header--nav-open .nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0000008c;border:0;padding:0;margin:0;cursor:pointer}.header-right{width:100%;justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-left:0!important;row-gap:.5rem}.header-right .btn-sm{min-height:var(--touch-min-target);padding:.45rem .75rem}.header-right #app-version{width:auto;white-space:nowrap;font-size:.7rem}.nav-btn{min-height:var(--touch-min-target);justify-content:center;text-align:center}.modal-overlay{padding:.65rem;padding-bottom:calc(.65rem + var(--safe-bottom))}.modal-overlay .modal{max-height:min(88vh,100dvh - 1.5rem)}.planner-toolbar-filters{flex-direction:column;align-items:stretch}.planner-toolbar-actions .btn{min-height:var(--touch-min-target)}.shift-planner-layout{flex-direction:column}.shift-planner-sidebar,.shift-planner-sidebar-stable{width:100%;max-width:none}.week-layout{flex-direction:column;min-width:0;width:100%}.shift-planner-page{max-width:100%;overflow-x:hidden}.week-shifts{min-width:0;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;touch-action:pan-x pan-y}.week-shifts .shift-table-grid{width:max-content;min-width:100%;table-layout:auto}.shift-table-grid thead th{position:sticky;top:calc(var(--week-sticky-offset, 4.5rem) + env(safe-area-inset-top,0px) + 4px);z-index:28;background:var(--bg-tertiary);box-shadow:0 1px 0 var(--border)}.shift-table-grid thead .grid-row-head{left:0;z-index:29}.calendar-tab{min-height:var(--touch-min-target);padding:.5rem .75rem}.calendar-summary th,.calendar-summary td{padding:.45rem .35rem;font-size:.82rem}.doctor-profile .form-group input,.doctor-profile .form-group select{min-height:var(--touch-min-target)}.manual-view .manual-section-body table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.workload-table{font-size:.88rem}.workload-table th,.workload-table td{padding:.45rem .4rem}.workload-history-grid{flex-direction:column}.workload-history-card{min-width:0;width:100%}.users-backup-card input#backup-label{width:100%!important;max-width:100%}.manual-view-page{overflow-x:hidden}.calendar-planner-root select[id=calendar-jump-week]{max-width:100%;min-width:0}.kiosk-on-duty-assignment{grid-template-columns:1fr;gap:.35rem;white-space:normal;overflow-x:visible}.kiosk-on-duty-name,.kiosk-on-duty-activities{white-space:normal}.board-layout{grid-template-columns:1fr}.shift-planner-page .planner-toolbar select,.shift-planner-page .planner-toolbar input{max-width:100%}}@media(max-width:560px){.header-right{flex-wrap:wrap!important;overflow-x:visible!important;row-gap:.35rem;column-gap:.35rem}#btn-account-settings,#btn-change-pwd{order:1;flex:1 1 calc(50% - .35rem);min-width:0}#btn-board-bell,#btn-logout{order:2;flex:0 0 auto}.header-right #user-label{order:3;width:auto;max-width:60%;font-size:.74rem;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-right #app-version{order:4;width:auto;font-size:.66rem;opacity:.75;white-space:nowrap;margin-left:auto}}@media(min-width:901px){.nav-toggle{display:none!important}.header-brand{order:1;flex:1 1 auto;min-width:min(100%,12rem)}.header-right{order:2;margin-left:auto;flex-shrink:0;width:auto}#main-nav{order:3;display:flex!important;position:static!important;transform:none!important;flex:1 1 100%;width:100%!important;max-height:none!important;justify-content:flex-start;flex-wrap:wrap;row-gap:.5rem;column-gap:.5rem;padding:.5rem 0 0;margin:.15rem 0 0;background:transparent;border:none;border-top:1px solid var(--border);box-shadow:none;overflow:visible}.nav-backdrop{display:none!important}}@media(pointer:coarse){.btn:not(.btn-sm),.nav-btn{min-height:42px}.table-wrapper th,.table-wrapper td{padding:.55rem .5rem}}.manual-fig{margin:1rem 0;padding:0;text-align:center}.manual-fig img{display:block;max-width:100%;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 2px 8px #00000014}.manual-fig figcaption{font-size:.82rem;color:var(--text-secondary);margin-top:.4rem;font-style:italic}.manual-assenze-inner.manual-view,.manual-piano-inner.manual-view,.manual-carichi-inner.manual-view{min-width:0;max-width:100%;overflow-x:auto}.kiosk-grid{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.kiosk-hero-card{grid-column:1 / -1;border-color:#1d9bf073}.kiosk-hero-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.9rem}.kiosk-hero-body{display:grid;grid-template-columns:minmax(220px,1fr) minmax(320px,1.2fr);gap:1rem}.kiosk-identity{font-size:1.18rem;font-weight:700;letter-spacing:.01em;margin-bottom:.25rem}.kiosk-now-title{font-size:.95rem;font-weight:600;margin-bottom:.4rem}.kiosk-actions{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem}.kiosk-section-card{margin-bottom:0}.kiosk-muted{color:var(--text-secondary);font-size:.88rem}.kiosk-slot-row{display:grid;grid-template-columns:auto 1fr auto;gap:.6rem;align-items:center;margin-bottom:.45rem}.kiosk-slot-row:last-child{margin-bottom:0}.kiosk-on-duty-list{display:flex;flex-direction:column;gap:.8rem}.kiosk-on-duty-row{border:1px solid var(--border);border-radius:var(--radius);padding:.6rem .7rem;background:#24344773}.kiosk-on-duty-doctor{font-weight:600;margin-bottom:.35rem}.kiosk-on-duty-slots{display:flex;flex-direction:column;gap:.4rem}.kiosk-on-duty-assignment{display:grid;grid-template-columns:minmax(210px,1fr) minmax(320px,1.5fr);gap:.7rem;align-items:center;white-space:nowrap;overflow-x:auto;padding-bottom:.1rem}.kiosk-on-duty-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kiosk-on-duty-activities{white-space:nowrap}.kiosk-pill{display:inline-block;border:1px solid rgba(29,155,240,.5);color:var(--text-primary);background:#1d9bf024;border-radius:999px;padding:.2rem .55rem;font-size:.8rem}.kiosk-next7{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.kiosk-day-block{border:1px solid var(--border);border-radius:var(--radius);padding:.55rem .65rem;min-height:90px}.kiosk-day-label{font-weight:600;margin-bottom:.35rem}.kiosk-day-slot{font-size:.86rem;margin-bottom:.25rem}.kiosk-day-slot:last-child{margin-bottom:0}.kiosk-next-month-absences .kiosk-abs-mini-subtitle{font-size:1rem;font-weight:600;margin-bottom:.45rem;color:var(--text-primary)}.kiosk-abs-mini-stats{margin:0 0 .45rem;font-size:.82rem}.kiosk-abs-mini-hint{margin:0 0 .5rem}.kiosk-abs-mini-calendar{display:flex;flex-direction:column;gap:3px;margin:.55rem 0 .3rem;overflow-x:auto}.kiosk-abs-mini-row{display:grid;grid-template-columns:repeat(7,minmax(48px,1fr));gap:3px}.kiosk-abs-mini-row-head .kiosk-abs-mini-head{font-size:.72rem;font-weight:600;text-align:center;color:var(--text-secondary);padding:.15rem 0}.kiosk-abs-mini-cell.calendar-cell{cursor:default;min-height:50px;min-width:0;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:.22rem .18rem;border-radius:var(--radius);border:1px solid var(--border);font-size:.62rem;line-height:1.12;word-break:break-word;overflow:hidden;text-shadow:none}.kiosk-abs-mini-cell.calendar-cell.available{background:#24344759}.kiosk-abs-mini-cell.calendar-cell.blocked,.kiosk-abs-mini-cell.calendar-cell.libera-professione,.kiosk-abs-mini-cell.calendar-cell.formazione,.kiosk-abs-mini-cell.calendar-cell.desiderata{flex-direction:column;align-items:stretch;justify-content:flex-start}.kiosk-abs-mini-outside-month{opacity:.42}.kiosk-abs-mini-weekend.kiosk-abs-mini-cell.available{background:#94a3b81a}.kiosk-abs-mini-day{font-weight:700;font-size:.7rem;margin-bottom:.12rem}.kiosk-abs-mini-label{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:600}.kiosk-abs-mini-legend{font-size:.78rem;margin:.3rem 0 .55rem}.kiosk-abs-mini-actions{margin-top:.45rem}.kiosk-kpis{display:grid;gap:.6rem;grid-template-columns:repeat(2,minmax(0,1fr))}.kiosk-kpi-card{border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;background:#1d9bf014}.kiosk-kpi-title{font-size:.8rem;color:var(--text-secondary);margin-bottom:.15rem}.kiosk-kpi-value{font-size:1.55rem;font-weight:700;line-height:1.15}.kiosk-kpi-subtitle{font-size:.78rem;color:var(--text-secondary);margin-top:.15rem}@media(max-width:1100px){.kiosk-grid,.kiosk-hero-body,.kiosk-next7,.kiosk-kpis{grid-template-columns:1fr}}.board-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,1fr);gap:1rem}.board-feed-list{display:flex;flex-direction:column;gap:.7rem;margin-top:.8rem}.board-item{border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;background:#1d9bf00d}.board-item--unread{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.board-item header{display:flex;justify-content:space-between;gap:.75rem;align-items:center}.board-meta{margin-top:.25rem;font-size:.82rem;color:var(--text-secondary)}.board-actions{margin-top:.5rem;display:flex;gap:.75rem;align-items:center}.board-attachments{margin-top:.5rem;display:flex;flex-direction:column;gap:.25rem}.board-attachment-link{display:inline-flex;align-items:center;gap:.45rem;width:fit-content;font-size:.85rem;color:#1f6fd6;background:#fff;border:1px solid #d7e7fb;text-decoration:none}.board-attachment-link:hover{color:#1554a6;background:#f7fbff;border-color:#9bc4f8}.board-attachment-type{font-size:.72rem;font-weight:700;letter-spacing:.03em;color:#0f4ea4;background:#e9f3ff;border-radius:.35rem;padding:.08rem .35rem}.board-composer-card textarea.input,.board-shift-change-card textarea.input{width:100%;box-sizing:border-box}.board-composer-actions{display:flex;gap:.5rem;flex-wrap:wrap}.board-users-picker{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-tertiary)}.board-users-picker-summary{cursor:pointer;padding:.55rem .75rem;font-size:.92rem;color:var(--text-primary);list-style:none}.board-users-picker-summary::-webkit-details-marker{display:none}.board-users-picker[open] .board-users-picker-summary{border-bottom:1px solid var(--border)}.board-users-picker-actions{display:flex;gap:.4rem;flex-wrap:wrap;padding:.45rem .55rem .25rem}.board-users-picker-list{max-height:220px;overflow-y:auto;padding:.3rem .55rem .55rem;display:grid;gap:.3rem}.board-users-picker-item{display:flex;align-items:center;gap:.45rem;padding:.2rem .15rem;font-size:.88rem;color:var(--text-primary)}.board-users-picker-item input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--accent)}.board-users-picker-selected{margin-top:.3rem;font-size:.78rem;color:var(--text-secondary)}.board-users-picker-empty{color:var(--text-secondary);font-size:.85rem;padding:.2rem}.board-input-lg{min-height:3rem;font-size:1rem;padding:.7rem .85rem}.board-input-title{min-height:4.2rem}.board-input-body{min-height:14rem}.board-input-category{min-height:4rem}.board-shift-reason-lg{min-height:5rem}.board-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.board-kpi{border:1px solid var(--border);border-radius:var(--radius);padding:.6rem;background:var(--bg-secondary)}.board-kpi span{display:block;font-size:.78rem;color:var(--text-secondary)}.board-kpi strong{font-size:1.2rem}.shift-status-badge,.board-status-badge{font-weight:600;letter-spacing:.01em}.board-status-badge--in-review{background:#f59e0b33;color:#fbbf24}.board-status-badge--approved{background:#38bdf833;color:#38bdf8}.board-status-badge--published{background:#22c55e33;color:#4ade80}.board-status-badge--rejected{background:#ef444433;color:#f87171}.board-status-badge--draft{background:var(--bg-tertiary);color:var(--text-secondary)}.shift-person-badge{text-transform:none;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);font-weight:600}.shift-status-badge--pending-peer{background:#f59e0b33;color:#fbbf24}.shift-status-badge--pending-director{background:#38bdf833;color:#38bdf8}.shift-status-badge--approved{background:#22c55e33;color:#4ade80}.shift-status-badge--rejected-peer,.shift-status-badge--rejected-director{background:#ef444433;color:#f87171}.shift-status-badge--neutral{background:var(--bg-tertiary);color:var(--text-secondary)}@media(max-width:1100px){.board-layout{grid-template-columns:1fr}.board-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.app.app--kiosk .main{overflow-x:hidden}.app.app--kiosk .kiosk-grid,.app.app--kiosk .kiosk-grid>.card{width:100%;max-width:100%;min-width:0}.app.app--kiosk .kiosk-hero-body{grid-template-columns:1fr!important;min-width:0}.app.app--kiosk .kiosk-on-duty-assignment{grid-template-columns:1fr!important;gap:.35rem;white-space:normal;overflow-x:visible;min-width:0}.app.app--kiosk .kiosk-on-duty-name,.app.app--kiosk .kiosk-on-duty-activities{white-space:normal;min-width:0}.header .nav-toggle,#nav-toggle.nav-toggle{min-width:50px;min-height:50px;padding:.5rem .85rem;font-size:1.12rem;line-height:1}}
