:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#173653;background:#f4f7fb;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}.hide{display:none!important}.header{height:72px;background:#102b4a;color:white;display:flex;align-items:center;justify-content:space-between;padding:10px max(22px,4vw);gap:16px}.brand{display:flex;align-items:center;gap:12px}.brand img{width:42px;height:42px}.brand strong{display:block;font-size:19px;letter-spacing:-.4px}.brand span{display:block;color:#b5c9dc;font-size:11px;margin-top:3px}.head-right{display:flex;align-items:center;gap:12px;font-size:12px;flex-wrap:wrap}.pill{border:1px solid #476583;border-radius:30px;padding:7px 12px;background:#1b4064;color:#cee2f7;font-size:11px}.layout{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:calc(100vh - 72px)}.nav{padding:24px 12px;background:white;border-right:1px solid #e0e8f0;display:flex;flex-direction:column;gap:7px}.nav-item{text-align:left;border:0;color:#536e86;background:transparent;border-radius:9px;padding:13px 12px;font-size:13px;font-weight:600}.nav-item.active,.nav-item:hover{background:#e9f1fb;color:#1163a1}.nav-item b{float:right;background:#e7eaf2;color:#5e6e80;border-radius:7px;font-size:11px;padding:1px 5px}.main{padding:28px clamp(16px,3vw,42px) 70px;min-width:0;max-width:1700px;width:100%}.section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:23px}.eyebrow{font-size:10px;letter-spacing:1.3px;color:#3984ba;font-weight:800}.section-title h1,.auth-card h1{font-size:27px;letter-spacing:-.7px;margin:6px 0}.section-title p,.auth-card p{font-size:13px;color:#8192a5;line-height:1.6;margin:0}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.at-end{justify-content:flex-end;margin-top:16px}.btn{border:1px solid transparent;border-radius:9px;padding:10px 14px;font-size:12px;font-weight:700;white-space:nowrap}.btn.primary{background:#196fae;color:#fff}.btn.primary:hover{background:#0b578f}.btn.outline{border-color:#d6e2ed;color:#265577;background:white}.btn.outline:hover{background:#f4f9ff}.btn.secondary{background:#dcecfb;color:#24577c}.btn.danger{background:#fff0ed;color:#b8403b;border-color:#f3c9c4}.btn.full{width:100%;margin-top:6px}.section-title input{padding:8px 10px;border:1px solid #d6e2ed;border-radius:9px;background:white;color:#193e5e;font-size:12px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}.stat{background:#fff;border:1px solid #e2eaf2;border-radius:13px;padding:17px 18px}.stat small{font-size:12px;color:#7c8ea2}.stat strong{font-size:19px;display:block;margin-top:8px;color:#163f66}.panel{background:white;border:1px solid #e0e9f1;border-radius:14px;box-shadow:0 5px 16px #17365308;overflow:hidden}.padded{padding:22px}.panel-top{padding:18px 20px;display:flex;justify-content:space-between;gap:12px;align-items:center}.panel h2{font-size:16px;margin:0 0 5px}.panel h3{font-size:14px;margin:18px 0 10px}.panel-top p{font-size:12px;color:#8393a4;margin:0}.scroll-x,.table-holder{overflow-x:auto}.roster{width:100%;min-width:950px;border-collapse:collapse;table-layout:fixed}.roster th{background:#f8fafd;text-align:center;font-size:11px;color:#7b8da0;padding:14px 5px;border:1px solid #edf0f4}.roster th:first-child{width:170px;text-align:left;padding-left:17px}.roster td{border:1px solid #edf0f4;padding:7px 6px;height:65px;text-align:center}.roster td:first-child{text-align:left;padding-left:15px;font-size:12px;font-weight:700;color:#214867}.roster td:first-child small{font-size:10px;display:block;font-weight:500;color:#8293a6;margin-top:3px}.shift{border-radius:7px;min-height:43px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;font-weight:800;background:#e8f3fd;border:1px solid #cae3f9;color:#296ba1;gap:3px}.shift small{font-size:10px;font-weight:500}.shift.night{background:#f0ebfb;color:#7656a4;border-color:#dcd2f2}.shift.off{background:#f0f2f4;color:#81909e;border-color:#e3e8ed}.shift.leave{background:#fff2da;color:#9d7226;border-color:#f3deb5}.shift.pending{outline:2px solid #f4bb5c;outline-offset:1px}.shift.swapped{border-color:#43ab87;background:#e7f9f0;color:#277b5d}.legend{display:flex;align-items:center;flex-wrap:wrap;gap:18px;padding:13px 18px;font-size:11px;color:#8293a4}.dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px;background:#2e84c5}.dot.night{background:#7756b3}.dot.off{background:#9ba7af}.dot.leave{background:#e3aa4f}.dot.pending{background:#efbe5c}.banner{border:1px solid #eed9a1;background:#fff9e8;color:#806021;font-size:12px;padding:13px 17px;margin-bottom:19px;border-radius:9px;line-height:1.5}.form-grid,.two-panels{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-grid label,.panel form label,.auth-card label{display:flex;flex-direction:column;gap:7px;font-weight:700;color:#53708a;font-size:12px;margin-bottom:14px}.form-grid .span2{grid-column:span 2}.panel input,.panel select,.auth-card input{min-height:40px;border:1px solid #d9e4ed;border-radius:8px;padding:9px 10px;background:white;color:#193d5e;max-width:100%}.help{font-size:12px;color:#8a99a9;line-height:1.6}.notice{font-size:12px;margin:12px 0}.mini-stats{padding:10px 0 18px;font-size:12px;color:#447399;font-weight:700}.review{width:100%;border-collapse:collapse;min-width:850px;font-size:12px}.review th{background:#f5f8fc;text-align:left;padding:12px;border-bottom:1px solid #dee7f1;color:#69839a}.review td{padding:10px 12px;border-bottom:1px solid #e8eef4;vertical-align:top}.review td small{display:block;color:#8899a8;margin-top:5px}.review td input[type=text]{min-width:135px;font-size:11px}.item{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:15px 0;border-bottom:1px solid #edf1f5}.item:last-child{border:0}.item strong{font-size:13px}.item p{margin:5px 0 0;color:#8192a3;font-size:12px;line-height:1.5}.item-actions{display:flex;gap:7px;flex-wrap:wrap}.tag{display:inline-block;border:1px solid #dfe5ed;background:#f2f6fa;color:#648096;font-size:10px;padding:4px 7px;border-radius:6px;margin-left:5px}.tag.pending{background:#fff4dd;color:#a57a21;border-color:#f3dfaa}.tag.ok{background:#e2f7eb;color:#278559;border-color:#b9e9cd}.tag.no{background:#feecec;color:#a33b3b;border-color:#f2c5c5}.two-panels{align-items:start}.two-panels hr{border:0;border-top:1px solid #edf1f5;margin:18px 0}.grid-editor-wrap{overflow-x:auto;margin:12px 0}.grid-editor{border-collapse:collapse;font-size:11px}.grid-editor th,.grid-editor td{border:1px solid #e3e8f0;padding:5px}.grid-editor select{width:126px}.grid-editor input{width:75px;min-height:34px;padding:5px;font-size:10px}.account-card{max-width:500px}.gap-top{margin-top:17px}.auth-shell{min-height:calc(100vh - 72px);display:flex;justify-content:center;align-items:center;padding:25px}.auth-card{background:white;border:1px solid #e3e9f0;padding:32px;border-radius:15px;width:min(100%,420px);box-shadow:0 12px 40px #123b5b12}.auth-card form{margin-top:22px}.auth-card input{width:100%}.auth-secondary{margin-top:16px;text-align:center}.link-btn{background:transparent;border:0;text-decoration:underline;color:#3673a1;font-size:12px}.error{color:#a83d40;background:#fff2f1;font-size:12px;padding:10px;border-radius:8px}.auth-card small{display:block;color:#899aac;font-size:11px;margin-top:9px;line-height:1.5}#toast{position:fixed;right:24px;bottom:24px;background:#173b5d;color:white;padding:13px 18px;border-radius:9px;font-size:12px;z-index:5;box-shadow:0 15px 30px #173b5d30;display:none;max-width:340px}#toast.show{display:block}@media(max-width:980px){.layout{display:block}.nav{flex-direction:row;overflow-x:auto;padding:10px;border-bottom:1px solid #e5edf5}.nav-item{white-space:nowrap;font-size:11px;padding:10px}.main{padding:20px 15px 55px}.stat-grid{grid-template-columns:1fr 1fr}.section-title{align-items:start;flex-direction:column}.two-panels{grid-template-columns:1fr}}@media(max-width:560px){.header{height:auto;min-height:64px;padding:10px}.brand img{width:32px;height:32px}.brand strong{font-size:15px}.brand span{font-size:9px}.head-right{gap:6px}.head-right #whoami{display:none}.stat{padding:12px}.stat strong{font-size:15px}.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:span 1}.review{min-width:760px}.padded{padding:15px}}@media print{.header,.nav,.section-title .actions,.banner,.legend,.panel-top button{display:none!important}.layout{display:block}.main{padding:0}.panel{border:0;box-shadow:none}.roster{min-width:0}.roster td,.roster th{padding:5px}.shift{font-size:10px}@page{size:landscape;margin:10mm}}

.grid-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0}.grid-actions strong{font-size:13px;color:#173653}.grid-assignees{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:8px 12px}.grid-assignees label{min-width:0}.grid-editor button[data-remove-row]{font-size:10px;padding:7px 8px}.grid-editor td:last-child{min-width:75px}.grid-editor-wrap{max-width:100%;overflow-x:auto}

.grid-hours{display:block;font-size:9px;color:#69839a;font-weight:500;margin-top:4px;white-space:nowrap}


/* ===============================================================
   RC4 — Sfondo aziendale: logo originale, opacità 20%
   Solo decorazione: non cambia turni, dati, login o interazioni.
   =============================================================== */
.main,
.auth-shell {
  position: relative;
  isolation: isolate;
}
.main::before,
.auth-shell::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image: url("/logo-sfondo-aziendale.png");
  background-repeat: no-repeat;
  background-size: min(90%, 1060px) auto;
  background-position: center 34px;
  opacity: 0.20;
  filter: blur(1px) saturate(0.85);
  -webkit-mask-image: radial-gradient(ellipse 82% 75% at 50% 31%, #000 55%, transparent 100%);
  mask-image: radial-gradient(ellipse 82% 75% at 50% 31%, #000 55%, transparent 100%);
}
.main > *,
.auth-shell > * {
  position: relative;
  z-index: 1;
}
@media (max-width: 900px) {
  .main::before,
  .auth-shell::before {
    background-size: 110% auto;
    background-position: center 20px;
    opacity: 0.17;
  }
}
@media print {
  .main::before,
  .auth-shell::before {
    display: none !important;
  }
}

/* Amministrazione: pulsanti sempre visibili senza scroll orizzontale. */
.user-management-row{align-items:flex-start;flex-wrap:wrap}
.user-management-row>div:first-child{min-width:175px;flex:1 1 190px}
.user-management-row .item-actions{flex:1 1 185px;justify-content:flex-end}
.user-management-row .item-actions .btn{white-space:normal}
@media(max-width:600px){.user-management-row .item-actions{justify-content:flex-start}}

/* RC4.2 – Collaudo account tecnico, separato dai turni ufficiali */
#testView .panel textarea{display:block;width:100%;min-height:80px;border:1px solid #d9e4ed;border-radius:8px;padding:10px;color:#193d5e;font:inherit;resize:vertical}
#trialRoster .shift.pending{background:#fff4d7;border-color:#dfaa49;color:#805b1c;outline:2px solid #efbe5c}
#trialRoster .shift.swapped{background:#e1f7eb;border-color:#47b286;color:#277650}
#trialRequests .item,#trialNotices .item{align-items:flex-start;flex-wrap:wrap}
#trialRequests .item>div:first-child,#trialNotices .item>div:first-child{flex:1 1 250px;min-width:0}
#trialRequests .item p{overflow-wrap:anywhere}
@media print{#testView{display:none!important}}

/* RC4.4: Identificazione versione, visibile anche prima del login. */
.app-release {position:relative;flex-shrink:0;color:#e9f4fd;font-size:11px;z-index:10}
.app-release summary{cursor:pointer;list-style:none;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);border-radius:20px;padding:6px 10px;font-weight:750;white-space:nowrap}
.app-release summary::-webkit-details-marker{display:none}
.app-release summary:focus-visible{outline:2px solid #8bd5ff;outline-offset:3px}
.app-release-panel{position:absolute;right:0;top:calc(100% + 8px);width:min(290px,86vw);padding:13px 14px;border-radius:12px;background:#fff;color:#1e4668;border:1px solid #d9e5ee;box-shadow:0 12px 25px #09213e30;line-height:1.5}
.app-release-panel strong{display:block;font-size:12px}.app-release-panel small{display:block;color:#71879b;font-size:10px;margin-top:4px}.app-release-panel p{font-size:11px;margin:9px 0 0;color:#51708b}
.login-version{font-size:11px!important;margin-top:12px!important;color:#617e97!important}
@media(max-width:560px){.app-release summary{font-size:10px;padding:6px 8px}}
@media print{.app-release{display:none!important}}


/* ------------------------------------------------------------
   RC4.5 MOBILE — solo presentazione: griglie e database invariati.
   Su schermi stretti: selettore giorni + schede addetto.
   La tabella originale rimane disponibile su desktop e in stampa.
   ------------------------------------------------------------ */
.mobile-schedule { display: none; }
@media screen and (max-width: 1100px) {
  html, body { width: 100%; max-width: 100%; }
  body { overflow-x: clip; }
  .header {
    height: auto; min-height: 74px;
    padding: 11px 13px; flex-direction: column; align-items: stretch; gap: 8px;
  }
  .brand { min-width: 0; gap: 9px; }
  .brand img { width: 34px; height: 34px; flex: 0 0 auto; }
  .brand strong { font-size: 16px; }
  .brand span { font-size: 10px; }
  .head-right { width: 100%; gap: 7px; justify-content: flex-start; flex-wrap: wrap; }
  .head-right #whoami { display: none; }
  .head-right .pill { padding: 6px 9px; font-size: 10px; }
  .head-right .btn { margin-left: auto; }
  .app-release { order: 2; margin-left: auto; }
  .app-release-panel { right: 0; z-index: 50; }
  .layout { display: block; min-height: 0; }
  .nav {
    display: grid; grid-template-columns: repeat(3, minmax(0,1fr));
    gap: 6px; overflow: visible; border-right: 0; padding: 9px;
    align-items: stretch;
  }
  .nav-item { white-space: normal; text-align: center; line-height: 1.3; min-width: 0;
    font-size: 11px; padding: 10px 5px; min-height: 44px; overflow-wrap: anywhere; }
  .nav-item b { float: none; display: inline-block; margin-left: 4px; vertical-align: middle; }
  .main { width: 100%; min-width: 0; max-width: 100%; padding: 15px 10px 50px; }
  .main > section, .main > .banner { min-width: 0; }
  .section-title { margin-bottom: 13px; gap: 11px; }
  .section-title h1 { font-size: clamp(21px,5vw,27px); line-height: 1.2; }
  .section-title p { font-size: 12px; }
  .section-title .actions { display: grid; grid-template-columns: 42px minmax(0,1fr) 42px auto;
    align-items: center; gap: 6px; width: 100%; }
  .section-title .actions > * { min-width: 0; }
  .section-title .actions .btn { min-height: 44px; padding: 9px 8px; }
  .section-title .actions input[type=date] { min-width: 0; width: 100%; height: 44px; font-size: 16px; }
  .stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap: 8px; }
  .stat { min-width: 0; padding: 12px; }
  .stat strong { font-size: 16px; overflow-wrap: anywhere; line-height: 1.35; }
  .panel, .auth-card { max-width: 100%; }
  .padded { padding: 13px; }
  .panel-top { padding: 13px; align-items: flex-start; flex-wrap: wrap; }
  .panel-top > div { flex: 1 1 180px; }
  .panel-top .btn { min-height: 42px; }
  .desktop-schedule { display: none; }
  .mobile-schedule { display: block; padding: 0 10px 12px; }
  .mobile-day-picker { display: grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap: 3px; margin: 0 0 12px; }
  .mobile-day-btn { min-width: 0; min-height: 52px; padding: 7px 2px; border: 1px solid #dce7f0;
    border-radius: 8px; background: #f5f8fc; color: #496c89; display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: 3px; }
  .mobile-day-btn span { font-size: 10px; font-weight: 650; }
  .mobile-day-btn strong { font-size: 14px; }
  .mobile-day-btn.selected { color: #fff; background: #196fae; border-color: #196fae; }
  .mobile-day-btn:focus-visible { outline: 3px solid #55a7e1; outline-offset: 2px; }
  .mobile-day-heading { font-size: 12px; color: #60809a; font-weight: 750; padding: 4px 3px 9px; }
  .mobile-shift-list { display: grid; gap: 7px; }
  .mobile-shift-card { display: grid; grid-template-columns:minmax(0,1fr) minmax(120px,43%);
    align-items: center; gap: 8px; padding: 10px; border: 1px solid #e3ebf2; border-radius: 10px; background: #fff; min-width: 0; }
  .mobile-shift-person { min-width: 0; overflow-wrap:anywhere; }
  .mobile-shift-person strong { display:block; font-size: 12px; color: #214867; line-height:1.3; }
  .mobile-shift-person small { display:block; margin-top:3px; font-size:10px; color:#7d91a4; line-height:1.25; }
  .mobile-shift-card .shift { font-size:12px; min-height:48px; padding:4px 6px; min-width:0; text-align:center; }
  .mobile-shift-card .shift small { font-size:10px; line-height:1.2; }
  .legend { gap: 8px 12px; padding: 10px; }
  .legend span { white-space: normal; }
  .form-grid,.two-panels { grid-template-columns:minmax(0,1fr); gap:10px; }
  .form-grid .span2 { grid-column:auto; }
  .panel input,.panel select,.panel textarea,.auth-card input { width:100%; min-width:0; font-size:16px; }
  .panel input[type=checkbox], .panel input[type=radio] { width:auto; }
  .btn { white-space:normal; min-height:42px; }
  .item { align-items:flex-start; flex-wrap:wrap; }
  .item > div:first-child { min-width:0; flex:1 1 180px; overflow-wrap:anywhere; }
  .item-actions { min-width:0; width:100%; justify-content:flex-start; }
  .item-actions .btn { flex:1 1 auto; }
  .account-card { max-width:100%; }
  #toast { left:10px; right:10px; bottom:calc(10px + env(safe-area-inset-bottom)); max-width:none; }
  .auth-shell { min-height: calc(100dvh - 100px); padding:16px 10px; }
  .auth-card { padding:18px 15px; }
  .auth-card h1 { font-size:24px; }
  .main::before, .auth-shell::before { background-size: 115% auto; opacity:0.16; }
  /* Excel: ogni riga diventa una scheda; checkbox e campi rimangono quelli reali. */
  .table-holder { overflow:visible; }
  .review, .review tbody, .review tr, .review td { display:block; width:100%; min-width:0; }
  .review thead { display:none; }
  .review tr { border:1px solid #dbe6ef; border-radius:10px; background:#fff;
    padding:4px 9px; margin:9px 0; }
  .review td { display:grid; grid-template-columns:minmax(78px,32%) minmax(0,1fr);
    align-items:start; gap:9px; padding:9px 0; border-bottom:1px solid #ebf0f4; overflow-wrap:anywhere; }
  .review td:last-child { border-bottom:0; }
  .review td::before { content:attr(data-mobile-label); color:#65839a; font-size:11px; font-weight:750; }
  .review td input[type=text] { min-width:0; width:100%; font-size:16px; }
  /* Editor griglia: scheda per riga e sette campi distribuiti su due colonne. */
  .grid-editor-wrap { overflow:visible; }
  .grid-editor, .grid-editor tbody, .grid-editor tr, .grid-editor td,
  .grid-editor tr > th { display:block; width:100%; min-width:0; }
  .grid-editor thead { display:none; }
  .grid-editor tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px;
    padding:11px; margin:10px 0; border:1px solid #dce7f0; border-radius:10px; background:white; }
  .grid-editor tr > th { grid-column:1 / -1; text-align:left; font-size:13px; color:#245479; }
  .grid-editor td { border:0; padding:0; }
  .grid-editor td::before { content:attr(data-mobile-label); display:block; color:#61809b; font-size:11px;
    font-weight:750; padding:0 0 4px; }
  .grid-editor td input { width:100%; min-width:0; height:44px; font-size:16px; padding:8px; }
  .grid-editor td button { width:100%; }
  .grid-editor td:last-child { grid-column:1 / -1; }
  .grid-assignees { grid-template-columns:repeat(1,minmax(0,1fr)); }
  .grid-assignees select { max-width:100%; }
  .grid-actions { gap:8px; }
  .grid-actions .btn { flex:1 1 auto; }
}
@media screen and (max-width: 375px) {
  .nav { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .mobile-shift-card { grid-template-columns:minmax(0,1fr) minmax(110px,46%); padding:8px; }
  .mobile-day-btn { min-height:47px; }
  .mobile-day-btn strong { font-size:12px; }
  .section-title .actions { grid-template-columns:37px minmax(0,1fr) 37px 42px; gap:4px; }
  .section-title .actions .btn { padding:7px 5px; }
  .grid-editor tr { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media print {
  .mobile-schedule { display:none !important; }
  .desktop-schedule { display:block !important; }
  .review, .review tbody, .review tr, .review td, .grid-editor, .grid-editor tbody, .grid-editor tr,
  .grid-editor td, .grid-editor tr > th { display:revert !important; }
  .review thead, .grid-editor thead { display:table-header-group !important; }
}

/* RC5 Cambi operativi */
#swapsView .inline-times{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#swapsView .inline-times label{min-width:0}
#swapsView textarea{display:block;width:100%;font:inherit;min-height:90px;padding:12px;border:1px solid #d9e4ed;border-radius:8px;color:#193d5e;resize:vertical}
#swapsView .check-line{display:flex;align-items:center;gap:12px}
#swapsView .check-line input{width:auto}
#swapsView .operational-item{align-items:flex-start;flex-wrap:wrap}
#swapsView .operational-item>div:first-child{min-width:0;flex:1 1 240px}
#swapsView .operational-item p{overflow-wrap:anywhere}
#swapsView .operational-item .item-actions{display:flex;flex-wrap:wrap;gap:8px}
#roster .shift.swapped{background:#e1f7eb;border-color:#47b286;color:#277650}
#roster .shift.pending{background:#fff4d7;border-color:#dfaa49;color:#805b1c;outline:1px solid #efbe5c}
@media(max-width:650px){#swapsView .inline-times{grid-template-columns:1fr}}

/* RC5.0.2: le variazioni approvate sono verdi anche quando derivano da Excel. */
.dot.approved{background:#278559}

/* RC5.0.3 — verde persistente dei turni ufficiali diversi dalla griglia base.
   La richiesta pendente (gialla) prevale sul verde, senza cambiare i dati. */
#roster .shift.confirmed-change,
#rosterMobile .shift.confirmed-change {
  background: #e0f5e7;
  border-color: #4ca879;
  color: #1e6849;
}
#roster .shift.pending,
#rosterMobile .shift.pending {
  background: #fff4d7;
  border-color: #dfaa49;
  color: #805b1c;
  outline: 1px solid #efbe5c;
}
/* RC5.1.0: copertura H24, identificazione personale e ufficio. */
#roster td.person-cell{vertical-align:middle;font-weight:680}
#roster td.person-cell.own-person,#rosterMobile .mobile-shift-card.own-person .mobile-shift-person{background:#def6e7;color:#14633f;border-left:4px solid #239665}
#roster td.person-cell.own-person{box-shadow:inset 0 0 0 1px #b7e7c7}
#rosterMobile .mobile-shift-card.own-person{border-color:#81cba1}
.coverage-alert{display:grid;gap:3px;margin-bottom:12px;padding:13px 15px;border-radius:10px;font-size:12px}
.coverage-alert strong{font-size:14px}.coverage-alert.coverage-ok{background:#e7f7ed;border:1px solid #b0e1be;color:#196741}
.coverage-alert.coverage-warning{background:#fff0ef;border:1px solid #f0b2b0;color:#9e3031}
.coverage-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}
.coverage-day{border:1px solid #cbdfe9;background:#f8fafc;border-radius:10px;padding:13px;display:grid;gap:7px}
.coverage-day.critical{background:#fff4f3;border-color:#e4adaa}.coverage-day.ok{background:#f1fbf4;border-color:#b5e1c7}
.coverage-day strong{font-size:13px;color:#234e65}.coverage-day span{font-size:12px;color:#37566b}
.coverage-day.critical>span{font-weight:700;color:#b23434}
.coverage-timeline{display:flex;width:100%;height:15px;border-radius:5px;overflow:hidden;background:#dde5ec}
.coverage-timeline .covered{background:#2b9a6e;flex:none}.coverage-timeline .gap{background:#d24c48;flex:none}
.base-grid-import{padding:13px 14px;background:#f0f7fc;border:1px solid #b8d6e7;border-radius:11px;display:grid;gap:7px;margin:16px 0}
.base-grid-import label{margin:0}.base-grid-import .btn{justify-self:start}
.coverage-target{border:1px solid #dce6ef;background:#fbfdff;border-radius:10px;padding:12px;min-width:0}
.coverage-target .inline-times{display:grid;grid-template-columns:1fr 1fr;gap:9px}
#coverageChangeForm textarea{width:100%;padding:10px;border:1px solid #d9e4ed;border-radius:8px;font:inherit}
#mobileCoverageSummary{padding:11px;border-radius:8px;margin:8px 0 10px;background:#f2fbf5;border:1px solid #c2e6cd;display:grid;gap:4px;font-size:11px}
#mobileCoverageSummary.critical{background:#fff0ee;border-color:#eab5b1;color:#9b3534}
#mobileCoverageSummary strong{font-size:12px}
@media(max-width:700px){.coverage-days{grid-template-columns:1fr}.coverage-target .inline-times{grid-template-columns:1fr}}
@media print{.coverage-alert{display:block;break-inside:avoid}#coverageView,#illnessView,#coverageChangesView{display:none!important}}
/* Data evidenziata sul PC oltre alla selezione effettiva nel calendario mobile. */
#roster th.focused-day{background:#e1f0fb;color:#195c86}
#roster td.focused-day{background:#f3f9fd;box-shadow:inset 0 0 0 1px #d2e7f5}


/* RC5.1.1 — Navigazione a richiesta, identica su PC, iPhone e Android.
   La nav resta nello stesso DOM per mantenere autorizzazioni e conteggi esistenti. */
@media screen {
  .header {position:sticky;top:0;z-index:900;}
  .layout { display:block !important; grid-template-columns:minmax(0,1fr) !important; }
  .main { max-width:1700px; margin-inline:auto; }
  #primaryNav.nav {
    display:none !important;
    position:fixed !important;
    z-index:1000;
    inset:auto 12px auto auto;
    top:var(--menu-top,76px);
    right:var(--menu-right,12px);
    width:min(320px,calc(100vw - 24px));
    max-height:calc(100dvh - var(--menu-top,76px) - 12px);
    overflow-y:auto !important; overflow-x:hidden !important;
    flex-direction:column !important; grid-template-columns:1fr !important;
    align-items:stretch !important; gap:3px !important;
    padding:9px !important;
    border:1px solid #d9e5f0; border-radius:14px;
    background:#fff; box-shadow:0 15px 45px #102b4a30;
    -webkit-overflow-scrolling:touch;
  }
  #primaryNav.nav.menu-open {display:flex !important;}
  #primaryNav .nav-item {display:flex; align-items:center; justify-content:space-between; min-height:42px; width:100%; text-align:left !important; font-size:13px !important; padding:11px 13px !important; white-space:normal !important;}
  #primaryNav .nav-item.hide {display:none !important;}
  #primaryNav .nav-item b {float:none; margin-left:12px;}
  .menu-toggle {display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:38px; padding:7px 12px; border:1px solid #7397b5; border-radius:10px; background:#22486c; color:#fff; font-size:12px; font-weight:750; white-space:nowrap;}
  .menu-toggle.hide {display:none !important;}
  .menu-toggle[aria-expanded="true"] {background:#e8f4fe; color:#164a72; border-color:#c3ddec;}
  .menu-toggle:hover {background:#315b81;}
  .menu-toggle:focus-visible, #primaryNav .nav-item:focus-visible {outline:3px solid #65b2ef; outline-offset:2px;}
  .header .brand img {object-fit:contain; border-radius:8px;}
}
@media screen and (max-width:1100px) {
  .head-right .menu-toggle {margin-left:0; flex:0 0 auto; order:0;}
}
@media screen and (max-width:420px) {
  .head-right #modeBadge {display:none;}
  .head-right .menu-toggle {font-size:12px;}
  .brand span {display:none;}
}
@media print {#menuToggle, #primaryNav {display:none !important;}}

/* RC5.1.2 — Stampa configurabile (nessuna API, nessuna scrittura database). */
.print-overlay{position:fixed;inset:0;z-index:2500;background:rgba(10,34,57,.65);display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto}
.print-modal{width:min(1080px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:#fff;border-radius:17px;box-shadow:0 20px 80px #102b4a50;padding:23px;display:grid;gap:15px}
.print-modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.print-modal-heading h2{font-size:21px;line-height:1.2;margin:4px 0 7px}
.print-modal-heading p{font-size:12px;color:#72899f;margin:0}
.print-settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}
.print-settings label{min-width:0;display:grid;gap:5px;color:#425e78;font-size:12px;font-weight:700}
.print-settings select,.print-settings input[type=date]{width:100%;border:1px solid #cddde9;color:#1d405e;border-radius:8px;padding:9px;background:#fff;min-height:38px}
.print-settings .print-check{display:flex;flex-direction:row;align-items:center;gap:8px;align-self:center}
.print-settings .print-check input{accent-color:#207daa}
.print-summary{font-size:12px;color:#375d77;font-weight:650;margin:0}
.print-preview-wrap{border:1px solid #dde7f0;border-radius:11px;overflow:auto;background:#eef3f7;padding:12px}
.print-preview{min-width:620px;max-width:100%;background:#fff;margin:0 auto;padding:13px;box-shadow:0 3px 12px #123b5b12}
.print-preview .print-day{min-width:360px}
.print-preview .print-week{min-width:590px}
.print-actions{display:flex;justify-content:flex-end;gap:9px}
.print-privacy{font-size:11px;color:#6b8297;margin:0}
#printSheet{display:none}
.print-document{font-family:Inter,Arial,sans-serif;color:#203d55;background:#fff}
.print-heading{display:flex;align-items:center;gap:11px;padding-bottom:13px;border-bottom:2px solid #224d6f;margin-bottom:13px}
.print-heading img{width:46px;height:46px;object-fit:contain;border-radius:8px}
.print-heading h1{font-size:20px;letter-spacing:.8px;margin:0 0 2px;color:#143954}
.print-heading p{font-size:12px;margin:0;color:#4f7089}
.print-official{margin-left:auto;font-size:10px;color:#5c7388;white-space:nowrap}
.print-roster{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px}
.print-roster th,.print-roster td{border:1px solid #dce5ed;padding:7px 5px;vertical-align:middle;text-align:center;overflow-wrap:anywhere}
.print-roster thead th{background:#e9f1f7;color:#1c506e;font-size:10px}
.print-roster thead th span{display:block;margin-top:2px;font-weight:500;font-size:9px}
.print-roster th:first-child{width:21%;text-align:left;padding-left:8px}
.print-roster tbody th{font-size:10px;color:#29465e;font-weight:700}
.print-shift{border:1px solid #bfd9ed;background:#e9f3fb;color:#24587c;padding:6px 2px;border-radius:5px;min-height:28px;display:flex;flex-direction:column;gap:2px;justify-content:center}
.print-shift strong{font-size:10px}
.print-shift small{font-size:8px;line-height:1.15}
.print-shift.night{background:#f1ecfc;color:#694c92;border-color:#dcd1f2}
.print-shift.off{background:#f2f3f5;color:#607082;border-color:#e0e6ec}
.print-shift.leave{background:#fff1d9;color:#8f6520;border-color:#f2d6a5}
.print-shift.approved{background:#e1f6e9;color:#226947;border-color:#67b78a}
.print-shift.pending{background:#fff1ca;color:#7c581b;border-color:#eec15e}
.print-cover-row th{background:#f4f9fa}
.print-cover-row td{font-size:9px;font-weight:750}
.print-covered{background:#e9f7ec;color:#227047}
.print-uncovered{background:#ffe7e5;color:#b1302f}
.print-alert{padding:9px 11px;border:1px solid #eeada8;background:#fff1ef;color:#9e3730;margin-top:10px;font-size:10px;break-inside:avoid}
.print-legend{padding:12px 3px;font-size:9px;color:#61758a;line-height:1.6}
.print-legend small{display:block;margin-top:5px;color:#6f8395;font-size:8px}
.print-roster tr{break-inside:avoid}
@media(max-width:780px){
 .print-modal{padding:13px;max-height:calc(100dvh - 20px)}
 .print-overlay{padding:10px}
 .print-settings{grid-template-columns:1fr 1fr;gap:9px}
 .print-settings label:first-child{grid-column:1}
 .print-modal-heading h2{font-size:17px}
 .print-preview-wrap{padding:6px}
 .print-preview{padding:9px}
}
@media(max-width:440px){
 .print-settings{grid-template-columns:1fr 1fr}
 .print-settings label:nth-child(2){grid-column:2}
 .print-settings label:nth-child(3){grid-column:1 / -1}
 .print-settings .print-check{font-size:11px}
 .print-actions .btn{white-space:normal}
}
@media print {
 body.print-active{background:white!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 body.print-active > :not(#printSheet){display:none!important}
 body.print-active #printSheet{display:block!important;margin:0;padding:0}
 body.print-active .print-document{width:100%!important;margin:0!important;padding:0!important;box-shadow:none!important}
 body.print-active .print-roster{min-width:0!important;width:100%;table-layout:fixed}
 body.print-active .print-roster tr,body.print-active .print-cover-row{break-inside:avoid}
 body.print-active .print-roster thead{display:table-header-group}
 body.print-active .print-shift{font-size:9px}
 body.print-active .print-heading img{width:36px;height:36px}
 body.print-active .print-heading h1{font-size:17px}
 body.print-active .print-heading p{font-size:10px}
 body.print-active .print-day .print-roster th:first-child{width:44%}
 body.print-active .print-week .print-roster th:first-child{width:19%}
 body.print-active .print-portrait .print-roster th,body.print-active .print-portrait .print-roster td{padding:5px 2px}
 body.print-active .print-portrait .print-shift strong{font-size:8px}
 body.print-active .print-portrait .print-shift small{font-size:7px}
}
/* RC5.1.3: stampa mensile e intervalli, suddivisa automaticamente in fogli A4. */
.print-settings #printMonthGroup,.print-settings #printFromGroup,.print-settings #printToGroup{min-width:0}
.print-settings input[type=month]{width:100%;border:1px solid #cddde9;color:#1d405e;border-radius:8px;padding:9px;background:#fff;min-height:38px}
.print-summary.print-error{color:#a52d2d;background:#fff2ef;border:1px solid #f2c7c0;padding:10px;border-radius:8px}
.print-preview .print-document + .print-document{border-top:12px solid #e8eff5;margin-top:18px;padding-top:18px}
.print-page-dates{font-size:10px;color:#456b84;display:block;margin-top:4px;font-weight:700}
.print-pagination{text-align:right;font-size:9px;color:#74869a;margin-top:8px}
@media print{
 body.print-active .print-document{break-inside:avoid;page-break-inside:avoid}
 body.print-active .print-document:not(:last-child){break-after:page;page-break-after:always}
 body.print-active .print-document + .print-document{margin-top:0!important;padding-top:0!important;border-top:0!important}
 body.print-active .print-roster th:first-child{width:19%}
 body.print-active .print-one-day .print-roster th:first-child{width:44%}
}

/* RC5.1.3 — La colonna selezionata risalta, anche quando coincide con Oggi. */
@media screen and (min-width:701px){
 #roster th.focused-day{background:#d8ebf9;color:#124b77;border-left:2px solid #1774b3;border-right:2px solid #1774b3;border-top:3px solid #1774b3}
 #roster td.focused-day{background:#f0f8fd;border-left:2px solid #1774b3;border-right:2px solid #1774b3;box-shadow:inset 0 0 0 1px #d0e9f8}
 #roster tbody tr:last-child td.focused-day{border-bottom:3px solid #1774b3}
}
@media screen and (max-width:700px){
 .mobile-day-btn.selected{border:2px solid #0c4776;box-shadow:0 0 0 2px #97c9ec;font-weight:750}
}

/* Distintivo persistente per impedire confusioni con produzione */
.qa-staging-banner{background:#ffe9a8;color:#2e2100;padding:7px 16px;font:600 13px/1.35 system-ui,sans-serif;display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap;border-bottom:2px solid #dc9b21}
.qa-staging-banner span{font-weight:450}

/* RC5.1.5 — giornate con copertura H24 mancante: priorità al rosso anche su Oggi. */
@media screen {
  #roster th.coverage-gap, #roster th.coverage-gap.focused-day {
    background:#b92e37 !important; color:#fff !important; border:2px solid #8d1824 !important;
    border-top-width:3px !important; text-align:center;
  }
  #roster th.coverage-gap .gap-flag { display:block; font-size:9px; line-height:1.1; letter-spacing:.3px; margin-top:5px; font-weight:850; color:#fff; }
  #roster td.coverage-gap, #roster td.coverage-gap.focused-day {
    background:#fff0f0 !important; border-left:2px solid #ce4d55 !important; border-right:2px solid #ce4d55 !important;
    box-shadow:inset 0 0 0 1px #f4c3c7 !important;
  }
  #roster tbody tr:last-child td.coverage-gap {border-bottom:3px solid #b92e37 !important}
  #rosterMobile .mobile-day-btn.coverage-gap { background:#ffebed; color:#a8222e; border:2px solid #c74b56; font-weight:800; }
  #rosterMobile .mobile-day-btn.coverage-gap.selected { background:#b92e37; color:white; border:2px solid #7f1320; box-shadow:0 0 0 2px #efb1b9; }
  #rosterMobile .mobile-day-heading.coverage-gap { padding:8px 10px; background:#ffebed; color:#991e2a; border-left:4px solid #b92e37; border-radius:5px; }
  .menu-toggle {position:relative;}
  .menu-attention-badge { display:inline-flex; align-items:center; justify-content:center; min-width:22px; height:22px; padding:0 5px; border-radius:100px; background:#e02e3a; color:#fff; font-size:11px; font-weight:850; border:2px solid #fff; line-height:1; font-variant-numeric:tabular-nums; box-shadow:0 2px 6px #0004; }
  .menu-attention-badge.hide {display:none!important;}
  #primaryNav .nav-item b:not(:empty) {background:#ffe2e5; color:#a4202c; font-weight:800;}
}

/* RC5.1.7 — Rettifica malattie e rientri: usabile anche su schermi piccoli. */
.illness-period{align-items:flex-start;flex-wrap:wrap}.illness-detail{min-width:205px;flex:1 1 225px}.illness-controls{display:flex;flex-direction:column;gap:10px;align-items:flex-end;flex:1 1 275px}.illness-return-form{display:flex;gap:9px;flex-wrap:wrap;align-items:end;justify-content:flex-end;width:100%;padding:12px;background:#f2f7fc;border:1px solid #dae5ef;border-radius:10px}.illness-return-form.hide{display:none}.illness-return-form label{font-size:12px;font-weight:650;flex:1 1 165px}.illness-return-form input{display:block;width:100%;margin-top:5px}.illness-history-row{padding:7px 0;border-bottom:1px solid #edf1f5;color:#627b8f;font-size:12px}.illness-history-row:last-child{border:0}@media(max-width:600px){.illness-controls{align-items:stretch;flex-basis:100%}.illness-return-form{justify-content:flex-start}}

/* RC5.1.8.4 — selettori anno e mese leggibili su desktop e mobile. */
.import-period-selectors{display:grid;grid-template-columns:minmax(110px,1fr) minmax(160px,1.6fr);gap:12px;align-items:start;min-width:0}
.import-period-selectors label{min-width:0;margin:0!important}
.import-period-selectors select{width:100%;max-width:100%;min-width:0}
#importMessage.import-period-error{background:#fff1ee;color:#982b22;border:2px solid #cc493b;border-radius:10px;padding:14px 16px;font-size:13px;line-height:1.55;font-weight:700}
#importMessage.import-period-ok{color:#22664a;background:#eaf8f0;border:1px solid #b9dfc9;padding:10px 12px;border-radius:9px}
@media(max-width:400px){.import-period-selectors{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:8px}}

/* RC5.1.9.0 — preferenze promemoria */
#shiftReminderPanel{margin-bottom:1rem;max-width:780px}
#shiftReminderPanel form{display:grid;gap:.75rem}
#shiftReminderPanel label{display:flex;flex-direction:column;gap:.35rem;align-items:flex-start;font-weight:600}
#shiftReminderPanel .reminder-check{flex-direction:row;align-items:center;gap:.65rem}
#shiftReminderEnabled{width:20px;height:20px;flex-shrink:0}
#shiftReminderMinutes{max-width:170px;width:100%}
#shiftReminderSave{justify-self:start}

/* RC5.1.9.3 — report mensile modifiche confermate, stampa A4. */
.changes-month-control{display:flex;gap:12px;align-items:end;flex-wrap:wrap}
.changes-month-control label{display:flex;flex-direction:column;font-size:12px;font-weight:700;color:#4a6881;gap:6px}
.changes-month-control input{min-height:40px;padding:7px 9px;border:1px solid #cedce9;border-radius:8px;color:#193d5e;background:#fff}
.print-change-report .print-heading{margin-bottom:8px}
.changes-report-meta{font-size:11px;color:#4c6378;margin:7px 0 12px}
.changes-report-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:11px;color:#233e55}
.changes-report-table th,.changes-report-table td{border:1px solid #d3e0ea;padding:9px 7px;text-align:left;vertical-align:top;overflow-wrap:anywhere}
.changes-report-table thead th{background:#eaf2f8;color:#234c6e;font-weight:750}
.changes-report-table th:nth-child(1){width:31%}
.changes-report-table th:nth-child(2){width:17%}
.changes-report-table th:nth-child(3),.changes-report-table th:nth-child(4){width:26%}
.changes-report-table tbody tr:nth-child(even){background:#f7fafc}
.changes-report-table tbody tr,.changes-report-table tr{break-inside:avoid;page-break-inside:avoid}
.changes-empty{text-align:center!important;color:#6f8497}
.changes-report-note{font-size:9px;color:#72889a;margin-top:12px;line-height:1.5}
@media print{
 body.print-active .print-change-report{width:100%!important}
 body.print-active .changes-report-table{font-size:10px}
 body.print-active .changes-report-table th,body.print-active .changes-report-table td{padding:6px}
 body.print-active .changes-report-table thead{display:table-header-group}
 body.print-active .changes-report-note{font-size:8px}
}
