: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}
/* Nome dell'utente collegato: l'evidenziazione riguarda l'intera riga/scheda, non il solo nome. */
#roster td.person-cell.own-person{color:#14633f;border-left:4px solid #239665;font-weight:750}
#rosterMobile .mobile-shift-card.own-person{background:#e7f7ec;border:2px solid #79c79b;box-shadow:inset 4px 0 0 #239665}
#rosterMobile .mobile-shift-card.own-person .mobile-shift-person{background:transparent;border-left:0;padding-left:8px;color:#14633f}
#rosterMobile .mobile-shift-card.own-person .mobile-shift-person strong{color:#14633f}
.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; }
  /* Fasce precise sotto SCOPERTO, una per riga: mai nella barra superiore. */
  #roster th.coverage-gap .gap-ranges { display:block; margin-top:4px; color:#fff; font-size:10px; line-height:1.3; font-weight:750; font-variant-numeric:tabular-nums; }
  #roster th.coverage-gap .gap-range { display:block; white-space:nowrap; }
  #rosterMobile .mobile-day-heading .mobile-gap-ranges { display:block; font-size:12px; font-weight:800; margin-top:5px; line-height:1.35; color:#991e2a; font-variant-numeric:tabular-nums; white-space:normal; }
  #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}
}

.auth-recovery-link{margin-top:12px;text-align:right}.auth-recovery-link a{font-size:.89rem;color:#175486;text-decoration:underline;text-underline-offset:3px}


/* RC5.1.9.9 — Comandi avvisi locali: fine dell'intera pagina Notifiche.
   Due colonne identiche, leggibili su smartphone, senza scorrimento orizzontale. */
#notificationsView .notices-local-actions {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:stretch;
  gap:12px;
  margin-top:18px;
  padding:15px 0 max(6px,env(safe-area-inset-bottom));
  border-top:1px solid #e1eaf2;
  width:100%;
  min-width:0;
}
#notificationsView .notices-local-actions .btn {
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-width:0;
  min-height:68px;
  height:100%;
  padding:12px 9px;
  text-align:center;
  white-space:normal;
  overflow-wrap:break-word;
  font-size:clamp(11px,2.9vw,14px);
  line-height:1.35;
  border-radius:12px;
}
@media (max-width:380px) {
  #notificationsView .notices-local-actions { gap:8px; }
  #notificationsView .notices-local-actions .btn { min-height:82px; padding:10px 6px; }
}
@media print { #notificationsView .notices-local-actions {display:none!important;} }

/* RC5.2.0.3 QA — selezione diretta dei turni, storico privato filtrabile. */
.own-shift-button {width:100%;border:1px solid #b9d8f0;border-radius:12px;background:#f2f8fe;color:#204d70;padding:15px;display:flex;justify-content:space-between;align-items:center;gap:16px;text-align:left;flex-wrap:wrap;min-height:76px}
.own-shift-button:hover,.own-shift-button.selected{border-color:#267ab8;background:#e6f3fd;box-shadow:0 0 0 2px #bcdcf5}
.own-shift-button strong,.own-shift-button small{display:block}.own-shift-button strong{font-size:13px}.own-shift-button small{font-size:11px;color:#587b99;margin-top:4px}
.own-shift-value{font-size:17px;font-weight:800;letter-spacing:-.3px;white-space:nowrap}
.peer-advanced{border:1px solid #e0e8f0;border-radius:10px;padding:11px 14px;background:#fcfdff}.peer-advanced summary{font-size:12px;cursor:pointer;color:#28618b;font-weight:750}.peer-fields{margin-top:16px}
.coverage-pick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:13px 0}
.coverage-pick-card{border:1px solid #dae6ef;border-radius:11px;padding:13px 14px;background:#fff;display:flex;flex-direction:column;gap:5px;text-align:left;color:#214763;min-width:0;min-height:92px;justify-content:center}
.coverage-pick-card:not(:disabled):hover{border-color:#2a84c3;background:#f1f9ff}.coverage-pick-card.selected{border:2px solid #1783bd;background:#e5f4ff;box-shadow:0 0 0 1px #83bde0}.coverage-pick-card:disabled{opacity:.58;background:#f8f9fb}.coverage-pick-name{font-size:12px;font-weight:800;overflow-wrap:anywhere}.coverage-pick-turn{font-size:15px;font-weight:800;color:#2c6d9a}.coverage-pick-status{font-size:11px;color:#6d8699}
.coverage-selection-summary{font-size:12px;color:#47728e;margin:8px 0 14px}.cov-select-fallback{display:none!important}
.coverage-target{border:1px solid #dceaf4;border-radius:12px;padding:16px;background:#fbfdff;min-width:0}.coverage-target h3{margin-top:0}
.history-toggle{width:100%;margin-top:12px;white-space:normal;min-height:44px}
.private-history-controls{display:flex;justify-content:space-between;gap:14px;align-items:end;flex-wrap:wrap;margin:18px 0 12px}
.private-history-controls label{font-size:12px;font-weight:700;display:flex;flex-direction:column;gap:7px;color:#54768d}
.private-calendar-navigation{display:flex;align-items:center;gap:12px;justify-content:space-between;min-width:min(100%,210px)}
.private-calendar-navigation strong{font-size:13px;text-transform:capitalize;text-align:center}.private-calendar-navigation button{font-size:20px;min-width:39px}
.private-calendar-weekdays,.private-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;max-width:560px}
.private-calendar-weekdays span{font-size:11px;font-weight:800;text-align:center;color:#59728a;padding:7px 0}
.private-calendar-day,.private-calendar-empty{min-height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px}
.private-calendar-day{border:1px solid #e1e7ee;background:#fff;color:#234a67;font-size:13px;font-weight:650}
.private-calendar-day.approved{background:#dcf5e5;border-color:#8cccaa;color:#16663e}
.private-calendar-day.rejected{background:#ffe4e3;border-color:#eca9a5;color:#96302d}
.private-calendar-day.pending{background:#fff2d5;border-color:#efcf86;color:#8b651c}
.private-calendar-day.cancelled{background:#f2f2f2;color:#626b71}
.private-calendar-day.mixed{background:linear-gradient(125deg,#dcf5e5 0%,#dcf5e5 49%,#ffe4e3 51%,#ffe4e3 100%);border-color:#9ac4a7}
.private-calendar-day.chosen{outline:2px solid #146da9;outline-offset:1px}
.private-calendar-day:focus-visible,.coverage-pick-card:focus-visible,.own-shift-button:focus-visible{outline:3px solid #1878b9;outline-offset:2px}
.private-calendar-legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:11px;color:#527083;margin:13px 0 17px}
.private-calendar-legend span{display:flex;align-items:center;gap:5px}.legend-square{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid #d4dbe3;background:#fff}.legend-square.approved{background:#dcf5e5;border-color:#8cccaa}.legend-square.rejected{background:#ffe4e3;border-color:#eca9a5}.legend-square.pending{background:#fff2d5;border-color:#efcf86}
.history-day-result{border-top:1px solid #e6ebf0;padding-top:12px}.history-day-result h3{margin:7px 0 10px}.operational-item>div:first-child{min-width:0;flex:1 1 230px}.operational-item{flex-wrap:wrap;align-items:start}
@media(max-width:600px){.coverage-pick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.coverage-pick-card{padding:10px;min-height:95px}.coverage-pick-turn{font-size:13px}.coverage-target{padding:12px}.private-history-controls{display:block}.private-calendar-navigation{margin-top:12px;width:100%;max-width:560px}.own-shift-value{font-size:16px}.operational-item .item-actions{width:100%}.operational-item .item-actions>.btn{flex:1 1 110px;min-height:42px}}
@media(max-width:375px){.coverage-pick-grid{grid-template-columns:1fr}}

/* RC5.2.0.5 QA — saldo OFF: segnalazione 1, blocco 0 */
.weekly-rest-alert{margin:12px 0;padding:12px 14px;border:1px solid #d9bf8c;border-left:4px solid #9a6412;border-radius:10px;background:#fffaf0;color:#67430b;font-size:12px;font-weight:650;line-height:1.6;overflow-wrap:anywhere}
.weekly-rest-preview{white-space:pre-line;border-radius:10px;padding:11px 12px;font-size:12px;line-height:1.55;overflow-wrap:anywhere}
.weekly-rest-critical{border:1px solid #d9bf8c;background:#fff8eb;color:#74400b!important;font-weight:650;white-space:pre-line;padding:10px 12px;border-radius:9px}
.weekly-rest-ok{border:1px solid #c6d9d2;background:#f4faf8;color:#335e4d}
#opPreview{white-space:pre-line}
@media(max-width:600px){.weekly-rest-alert,.weekly-rest-preview{font-size:11px}}

.weekly-rest-forbidden{background:#fff0f0!important;border:2px solid #b42318!important;border-left:5px solid #b42318!important;color:#8a130a!important;font-weight:750!important}

/* RC5.2.1.8: anomalies are shown inside the ORIGINAL import screen. */
#sourceIssues {margin:.9rem 0;padding:.8rem;border:1px solid #d6a049;border-radius:.55rem;background:#fffaed}
.source-issue{padding:.7rem 0;border-bottom:1px solid #e5d2a1;display:flex;flex-wrap:wrap;gap:.55rem;align-items:end}
.source-issue p{width:100%;margin:.1rem 0}
.source-issue label{display:flex;flex-direction:column;gap:.3rem;flex:1 1 160px}
#sourceIssuesRows button{align-self:end}
.roster .shift.pending b{font-weight:750}
.roster .shift.pending small{display:block;font-size:.68rem;line-height:1.15}

/* RC5.2.1.11: turni cliccabili senza alterare aspetto, dati o dimensioni */
#roster .shift[data-calendar-code],#rosterMobile .shift[data-calendar-code]{cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none}
#roster .shift[data-calendar-code]:focus-visible,#rosterMobile .shift[data-calendar-code]:focus-visible{outline:3px solid #1b71b6;outline-offset:2px}
.calendar-history-modal{width:min(650px,100%);gap:12px}
.calendar-history-base{background:#f4f8fc;border:1px solid #dfe9f2;padding:12px 14px;border-radius:9px;display:grid;gap:7px;font-size:13px}
.calendar-history-entry{border-bottom:1px solid #e2eaf2;padding:14px 2px;font-size:13px}
.calendar-history-entry p{margin:7px 0;color:#284f6d}
.calendar-history-entry small{color:#6d8599}
.calendar-history-status{display:inline-block;background:#f0f5fb;border-radius:6px;padding:2px 7px;font-size:11px;margin-left:6px}

/* RC5.2.1.12: desktop, evidenziazione estesa a tutte le celle della propria riga.
   Non coprire gli allarmi rossi H24 né la colonna del giorno selezionato. */
@media screen and (min-width:701px){
  #roster tbody tr.own-person > td:not(.coverage-gap):not(.focused-day){background:#e7f7ec}
  #roster tbody tr.own-person > td.person-cell.own-person{border-left:4px solid #239665}
}

/* RC5.2.1.14 — il mancato riposo è segnalato solo sul giorno OFF lavorato.
   Non alterare i colori di fondo del turno approvato o in attesa. */
#roster .shift.missing-rest-day,
#rosterMobile .shift.missing-rest-day,
#roster .shift.missing-rest-proposed,
#rosterMobile .shift.missing-rest-proposed { border-left:4px solid #b43c2d; }
#roster .shift .missing-rest-flag,
#rosterMobile .shift .missing-rest-flag {display:block;box-sizing:border-box;
  width:calc(100% - 5px);max-width:100%;padding:3px 4px;border-radius:4px;
  color:#8b241c;background:#fff0eb;border:1px solid #f0c7bf;
  font-size:10px;font-weight:800;letter-spacing:.01em;line-height:1.2;
  text-align:center;overflow-wrap:anywhere;white-space:normal;}
#roster .shift.missing-rest-proposed .missing-rest-flag,
#rosterMobile .shift.missing-rest-proposed .missing-rest-flag {background:#fff7e7;color:#8b4b1e;border-color:#f1d5aa;}

/* ================================================================
   RC5.2.1.15 QA — Calendario mobile: due viste, nessun cambio dati.
   Desktop e stampa mantengono la turnazione ufficiale precedente.
   ================================================================ */
.week-date-wrap{display:inline-flex;position:relative;min-width:0;align-items:center}
.week-date-wrap input[type=date]{min-width:0}
.mobile-range-label{display:none}
.calendar-mobile-mode{display:none}
@media screen and (max-width:1100px){
  #calendarView{display:flex;flex-direction:column;gap:0}
  /* Le due statistiche essenziali precedono il titolo. */
  #calendarView>.stat-grid{order:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 14px}
  #calendarView>.section-title{order:1;gap:10px;margin-bottom:13px}
  #calendarView>.coverage-alert{order:2}
  #calendarView>.weekly-rest-alert{order:3}
  #calendarView>.panel{order:4}
  #calendarView .stat-grid>.stat:nth-child(1),
  #calendarView .stat-grid>.stat:nth-child(3){display:none}
  #calendarView .stat-grid>.stat{padding:10px 12px;min-height:76px;border-radius:12px}
  #calendarView .stat-grid>.stat small{font-size:11px;line-height:1.3}
  #calendarView .stat-grid>.stat strong{font-size:19px;line-height:1.15;margin-top:6px;overflow-wrap:anywhere}
  #calendarView .section-title .calendar-description,
  #calendarView #calendarHint{display:none}
  #calendarView .section-title h1{font-size:24px;line-height:1.1;margin:5px 0}
  #calendarView .section-title .actions{display:grid;grid-template-columns:40px minmax(0,1fr) 40px auto;gap:6px;align-items:stretch;width:100%}
  #calendarView .section-title .actions>.btn{min-width:0;min-height:44px;padding:7px;font-size:13px}
  #calendarView .section-title .actions #todayBtn{padding:6px 10px}
  #calendarView .week-date-wrap{display:block;height:44px;border:1px solid #d6e2ed;background:#fff;border-radius:10px;min-width:0;overflow:hidden;cursor:pointer}
  #calendarView .week-date-wrap::before{content:'▦';position:absolute;top:50%;left:10px;transform:translateY(-50%);color:#416f97;font-size:17px;pointer-events:none}
  #calendarView .mobile-range-label{display:flex;align-items:center;justify-content:center;min-width:0;height:100%;padding:0 5px 0 22px;color:#153e62;font-size:clamp(12px,3.8vw,16px);font-weight:800;text-align:center;white-space:nowrap;pointer-events:none;letter-spacing:-.3px}
  #calendarView .week-date-wrap input[type=date]{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;cursor:pointer;z-index:2}
  #calendarView .calendar-mobile-mode{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;padding:3px;border:1px solid #d6e1ec;border-radius:11px;background:#eff3f9;width:100%}
  #calendarView .calendar-mode-button{border:0;border-radius:8px;padding:10px 5px;min-width:0;min-height:43px;background:transparent;color:#58738d;font-weight:750;font-size:clamp(11px,3.5vw,14px);line-height:1.2}
  #calendarView .calendar-mode-button.active{background:#164e79;color:#fff;box-shadow:0 2px 5px #1736531f}
  #calendarView .calendar-mode-button:disabled{opacity:.45}
  #calendarView .calendar-mode-button:focus-visible{outline:2px solid #268bc5;outline-offset:2px}
  #calendarView .panel-top{padding:12px 12px 8px}
  #calendarView .panel-top h2{font-size:15px;margin:0}
  #calendarView .mobile-schedule{padding:2px 8px 13px}
  #calendarView .calendar-primary-list{display:grid;gap:7px}
  #calendarView .calendar-personal-row{display:grid;grid-template-columns:64px 31px minmax(0,1fr);gap:8px;align-items:center;padding:7px 10px;min-height:59px;background:#fff;border:1px solid #dfe8f1;border-radius:10px;box-shadow:0 2px 5px #102b4a0c;min-width:0}
  #calendarView .calendar-personal-day{display:flex;flex-direction:column;line-height:1.25;border-right:1px solid #dde8f1;padding-right:6px}
  #calendarView .calendar-personal-day strong{font-size:13px;color:#153e62}
  #calendarView .calendar-personal-day small{font-size:11px;color:#697f96;white-space:nowrap}
  #calendarView .calendar-personal-icon{font-size:22px;text-align:center;line-height:1}
  #calendarView .calendar-personal-value{min-width:0}
  #calendarView .mobile-calendar-shift{font-size:13px;line-height:1.2;min-height:35px;gap:3px;border:0;background:transparent;color:#1d4567;text-align:left;align-items:flex-start;padding:4px 5px;overflow-wrap:anywhere}
  #calendarView .mobile-calendar-shift.night{color:#66519c;background:#f0ebfb;border-radius:7px}
  #calendarView .mobile-calendar-shift.off{color:#667c91;background:#f5f7f9;border-radius:7px}
  #calendarView .mobile-calendar-shift.leave{color:#936519;background:#fff5e4;border-radius:7px}
  #calendarView .mobile-calendar-shift.confirmed-change{background:#e3f5ea;border-radius:7px;color:#12633a}
  #calendarView .mobile-calendar-shift.pending{background:#fff6df;outline:1px solid #e1b14f;border-radius:7px}
  #calendarView .mobile-calendar-shift-value{font-weight:800;white-space:normal}
  #calendarView .calendar-shift-proposal,#calendarView .calendar-shift-note,#calendarView .calendar-shift-pending,#calendarView .calendar-shift-warning{display:block;line-height:1.25;font-weight:600;font-size:10px}
  #calendarView .calendar-shift-proposal{color:#855820}
  #calendarView .calendar-shift-note{color:#37775e}
  #calendarView .calendar-shift-pending{color:#a36d1a}
  #calendarView .calendar-shift-warning{color:#ae2c32}
  #calendarView .calendar-no-shift{font-size:12px;color:#75899a}
  #calendarView .calendar-daily-coverage{margin:0 0 10px;padding:10px 12px;color:#9e3031;background:#fff0ef;border:1px solid #f0b2b0;border-radius:9px;font-size:12px}
  #calendarView .calendar-group{padding:9px;background:#f8fafc;border:1px solid #e4eaf1;border-radius:11px;display:grid;gap:6px}
  #calendarView .calendar-group-ended{background:#eff5fd;border-color:#cddff5}
  #calendarView .calendar-group-starting{background:#f1ecfc;border-color:#d5c9f5}
  #calendarView .calendar-group-heading{display:flex;flex-direction:column;gap:3px;padding:2px 4px 5px}
  #calendarView .calendar-group-heading strong{font-size:13px;color:#173d61;line-height:1.25}
  #calendarView .calendar-group-heading small{font-size:11px;line-height:1.2;color:#647d95}
  #calendarView .calendar-all-row{display:grid;grid-template-columns:25px minmax(95px,1fr) minmax(95px,1fr);gap:7px;align-items:center;background:#fff;border:1px solid #e1e9f2;border-radius:8px;padding:7px 8px;min-width:0}
  #calendarView .calendar-all-row.own-person{border:1px solid #6abb9b;background:#f3fcf7}
  #calendarView .calendar-all-icon{font-size:18px;text-align:center}
  #calendarView .calendar-all-person{font-size:12px;color:#1b4262;overflow-wrap:anywhere;min-width:0}
  #calendarView .calendar-all-row .mobile-calendar-shift{min-height:31px;font-size:12px;padding:4px;align-items:flex-end;text-align:right}
  #calendarView .calendar-group-empty{padding:4px 6px;font-size:11px;color:#6e8196}
  #calendarView .legend{padding:10px 12px}
}
@media screen and (max-width:375px){
  #calendarView .section-title .actions{grid-template-columns:34px minmax(0,1fr) 34px 44px;gap:4px}
  #calendarView .section-title .actions #todayBtn{padding:5px 3px;font-size:12px}
  #calendarView .mobile-range-label{font-size:12px;padding-left:18px}
  #calendarView .week-date-wrap::before{left:5px;font-size:15px}
  #calendarView .calendar-all-row{grid-template-columns:19px minmax(75px,1fr) minmax(80px,1fr);gap:4px;padding:6px}
  #calendarView .calendar-all-person{font-size:11px}
}
@media print{
  #calendarView .calendar-mobile-mode,#calendarView .mobile-range-label{display:none!important}
  #calendarView .week-date-wrap input[type=date]{opacity:1;position:static}
}

/* RC5.2.1.16 QA — Riepilogo mensile e navigazione; nessuna modifica ai dati. */
.pending-approval-quick{border:1px solid #eab44b;background:#fff3ce;color:#74490e;border-radius:10px;padding:10px 14px;font-size:12px;font-weight:850;box-shadow:0 1px 4px #081a2917;white-space:nowrap;min-height:36px}
.pending-approval-quick:hover{background:#ffe6a0}.pending-approval-quick:focus-visible{outline:3px solid #ffd36f}
#calendarView .section-title{display:flex;flex-wrap:wrap;gap:13px}
#calendarView .section-title .actions{flex:1 1 340px;justify-content:center;flex-wrap:nowrap}
#calendarView .section-title .actions .btn{font-size:17px;min-width:49px;min-height:49px;font-weight:850}
#calendarView .section-title .week-date-wrap input[type=date]{min-width:195px;min-height:49px;font-size:19px;font-weight:850;text-align:center}
#calendarView .calendar-description,#calendarView #calendarHint{display:none}
.monthly-hours-block{margin:0 0 18px}
.monthly-hours-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;color:#214d73}
.monthly-hours-heading strong{font-size:14px;font-weight:800}
.monthly-hours-heading small{color:#758da1;font-size:11px}
.monthly-hours-desktop{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.monthly-hours-desktop .stat{padding:13px 17px}
.monthly-hours-desktop .stat strong{font-size:21px}
.monthly-hours-mobile{display:none}
.grid-version-admin{padding:12px 13px;margin:0 0 18px;border:1px solid #d5e4ef;background:#f6f9fc;border-radius:10px}
.grid-version-admin h2{margin:0 0 4px}
.grid-version-admin p{margin:0}
@media screen and (max-width:1100px){
 #calendarView .section-title{order:1}
 #calendarView>.monthly-hours-block{order:2;margin:0 0 12px}
 #calendarView>.coverage-alert{order:3}
 #calendarView>.weekly-rest-alert{order:4}
 #calendarView>.panel{order:5}
 #calendarView .section-title .actions{flex:initial;justify-content:stretch}
 #calendarView .section-title .actions .btn{min-height:44px;min-width:0;font-size:14px}
 #calendarView .section-title .week-date-wrap input[type=date]{font-size:16px;min-height:44px;min-width:0}
 .monthly-hours-heading,.monthly-hours-desktop{display:none}
 .monthly-hours-mobile{display:block;background:#fff;border:1px solid #dce7f0;border-radius:11px;box-shadow:0 2px 5px #102b4a08;overflow:hidden}
 .monthly-hours-mobile summary{cursor:pointer;padding:12px 13px;display:flex;gap:8px;justify-content:space-between;align-items:center;list-style:none;min-height:45px;font-size:12px;color:#214d73;font-weight:750}
 .monthly-hours-mobile summary::-webkit-details-marker{display:none}
 .monthly-hours-expand{font-size:11px;color:#47749a;white-space:nowrap}
 .monthly-hours-mobile[open] .monthly-hours-expand{font-size:0}
 .monthly-hours-mobile[open] .monthly-hours-expand::after{content:'Chiudi ▴';font-size:11px}
 .monthly-hours-mobile-grid{border-top:1px solid #e6eef5;padding:11px 8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;text-align:center}
 .monthly-hours-mobile-grid>div{min-width:0}
 .monthly-hours-mobile-grid small{display:block;font-size:10px;color:#697f95;line-height:1.25}
 .monthly-hours-mobile-grid strong{display:block;font-size:15px;color:#173e62;margin-top:6px}
 .pending-approval-quick{order:1;margin-left:auto;padding:8px 10px;font-size:11px;white-space:normal;text-align:center}
}
@media print{.monthly-hours-mobile,.pending-approval-quick{display:none!important}}

/* Barra data a tutta larghezza per centrarla realmente sul desktop */
@media screen and (min-width:1101px){
 #calendarView .section-title{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
 #calendarView .section-title>.actions{grid-column:1/-1;display:flex;justify-content:center;width:100%;flex:none}
 #calendarView .section-title>.actions #weekDate{min-width:205px}
}


/* RC5.2.1.17 — dati orari individuali e calendario coerente in tutti i moduli */
.monthly-hours-block.hide{display:none!important}
.hours-employee-select{display:flex;align-items:center;gap:9px;margin:0 0 12px;flex-wrap:wrap}
.hours-employee-select label{font-size:12px;font-weight:800;color:#456481}
.hours-employee-select select{width:min(310px,100%);border:1px solid #cedde9;border-radius:9px;background:#fff;padding:10px 12px;color:#163e61;font-size:13px;font-weight:750;min-height:42px}
@media screen and (max-width:1100px){.hours-employee-select{margin-bottom:9px}.monthly-hours-block .hours-employee-select{display:flex}}
@media print{.monthly-hours-block,.css-calendar-backdrop,.css-date-picker-trigger{display:none!important}}
.css-date-widget{display:inline-flex;position:relative;min-width:0;align-items:center;width:100%}
.css-date-widget .css-date-real-input,.week-date-wrap .css-date-widget input[type=date],
#calendarView .section-title .week-date-wrap .css-date-widget input[type=date]{
 position:absolute!important;left:0!important;top:0!important;width:1px!important;height:1px!important;
 min-height:1px!important;min-width:1px!important;padding:0!important;border:0!important;
 clip-path:inset(50%)!important;opacity:0!important;pointer-events:none!important;z-index:-1!important;
}
.css-date-widget .css-date-picker-trigger{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;
 min-height:42px;padding:9px 12px;border:1px solid #d1e0ec;border-radius:10px;background:#fff;
 color:#183f60;font-size:13px;font-weight:750;text-align:left;box-shadow:0 1px 2px #0f274408;white-space:normal}
.css-date-widget .css-date-picker-trigger:hover{background:#f7fbff;border-color:#83aacb}
.css-date-widget .css-date-picker-trigger:focus-visible{outline:3px solid #5da8e3;outline-offset:2px}
.css-date-widget .css-date-picker-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.css-date-widget .css-date-icon{font-size:20px;color:#336f9d;font-weight:400;line-height:1}
.css-date-widget.css-date-error .css-date-picker-trigger{border-color:#d74646;box-shadow:0 0 0 2px #f6cece}
#calendarView .week-date-wrap:has(.css-date-widget){height:auto;overflow:visible;border:0;background:transparent;min-width:195px}
#calendarView .week-date-wrap:has(.css-date-widget)::before{display:none}
#calendarView .week-date-wrap .css-date-widget .css-date-picker-trigger{min-width:195px;min-height:49px;font-size:17px;font-weight:850;justify-content:center}
#calendarView .week-date-wrap .mobile-range-label{display:none!important}
#calendarView .section-title .week-date-wrap .css-date-widget .css-date-picker-trigger{min-width:0;min-height:49px;font-size:clamp(12px,2.3vw,18px);}
@media screen and (max-width:1100px){#calendarView .week-date-wrap:has(.css-date-widget){height:44px;min-width:0}
#calendarView .week-date-wrap .css-date-widget .css-date-picker-trigger{min-height:44px;padding:5px 7px;font-size:clamp(11px,3.2vw,15px)}
#calendarView .section-title .week-date-wrap .css-date-widget .css-date-picker-trigger{min-height:44px}}
body.css-calendar-open{overflow:hidden}
.css-calendar-backdrop{position:fixed;inset:0;z-index:10020;display:flex;justify-content:center;align-items:center;
 padding:16px;background:#102b4a80;backdrop-filter:blur(3px)}
.css-calendar-backdrop[hidden]{display:none!important}
.css-calendar-popup{width:min(350px,100%);border-radius:19px;background:#fff;overflow:hidden;
 border:1px solid #dbe6ef;box-shadow:0 22px 65px #071b3266;padding:16px;color:#163b5e}
.css-cal-top{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:16px}
.css-cal-top>button{border:0;background:#ecf4fb;color:#1e5e91;font-weight:900;border-radius:10px;min-width:40px;height:40px;font-size:26px}
.css-cal-top .css-cal-title{flex:1;background:transparent;color:#193f63;font-size:17px;font-weight:850}
.css-cal-top button:disabled{opacity:1}
.css-cal-day-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}
.css-cal-weekday{padding:7px 2px 8px;color:#607c93;font-size:11px;font-weight:800}
.css-cal-weekday.weekend{color:#af6672}
.css-cal-day,.css-cal-month{border:0;border-radius:9px;background:transparent;color:#244765;min-height:38px;font-size:13px;font-weight:750}
.css-cal-day.weekend{color:#a65366}
.css-cal-day.week-selected{background:#e5f2ff;border-radius:7px}
.css-cal-day.today{outline:2px solid #75a9d3;outline-offset:-2px}
.css-cal-day.selected,.css-cal-month.selected{background:#155986;color:#fff}
.css-cal-day:disabled,.css-cal-month:disabled{opacity:.27;cursor:not-allowed}
.css-cal-day:not(:disabled):hover,.css-cal-month:not(:disabled):hover{background:#bcdff9;color:#13496f}
.css-cal-day.selected:not(:disabled):hover,.css-cal-month.selected:not(:disabled):hover{background:#0c496f;color:#fff}
.css-cal-month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:3px 0 9px}
.css-cal-month{min-height:52px;border:1px solid #dce9f4;background:#f8fbfe}
.css-cal-bottom{border-top:1px solid #e8eef5;margin-top:16px;padding-top:12px;display:flex;justify-content:space-between;gap:8px}
.css-cal-bottom button{border:1px solid #dce7f1;background:#f7fafd;border-radius:9px;color:#255475;font-weight:800;font-size:12px;padding:9px 10px}
.css-cal-bottom button[data-today]{background:#e0effe;border-color:#c0dbf2}
.css-cal-bottom button:disabled{opacity:.4}
@media(max-width:380px){.css-calendar-popup{padding:11px}.css-cal-day-grid{gap:2px}.css-cal-day{min-height:36px;font-size:12px}}

/* RC5.2.1.18 — approvazioni dal turno, stesso stile su PC e iPhone. */
#roster .shift[data-can-approve="true"],#rosterMobile .shift[data-can-approve="true"] {background:#fff0c6;border-color:#dba645;color:#6e4c10;box-shadow:0 0 0 2px rgba(238,180,65,.3);}
#roster .shift[data-can-approve="true"]:hover,#rosterMobile .shift[data-can-approve="true"]:active {background:#ffe3a3;}
.calendar-approval-modal{width:min(570px,100%);gap:14px;}
.calendar-approval-list{display:grid;gap:12px;max-height:66dvh;overflow-y:auto;}
.calendar-approval-entry{padding:16px;border-radius:12px;background:#f8fbff;border:1px solid #dbe6f2;}
.calendar-approval-top{display:flex;align-items:center;flex-wrap:wrap;gap:8px;}
.calendar-approval-top strong{font-size:15px;color:#173653;}
.calendar-approval-entry p{font-size:13px;color:#36536f;line-height:1.5;margin:10px 0 0;}
.calendar-approval-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap;}
.calendar-approval-actions .btn{min-height:43px;min-width:105px;}
.calendar-approval-footer{display:flex;justify-content:flex-end;}
@media(max-width:600px){.calendar-approval-modal{padding:16px}.calendar-approval-entry{padding:14px}.calendar-approval-actions .btn{flex:1}}
@media print{#calendarApprovalDialog{display:none!important}}

/* RC5.2.1.21 — Giorno di riferimento e navigazione settimanale; solo presentazione. */
.calendar-selected-day-title,.calendar-week-day-picker{display:none}
@media screen and (max-width:1100px){
 #calendarView .calendar-selected-day-title:not([hidden]){display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;width:100%;padding:9px 10px;background:#e5f0fd;border:1px solid #ccdfef;border-radius:12px;color:#143d60;text-align:center}
 #calendarView .calendar-selected-day-title small{font-size:12px;color:#517495;font-weight:750;line-height:1.2}
 #calendarView .calendar-selected-day-title strong{font-size:clamp(20px,5.4vw,27px);font-weight:900;line-height:1.2;text-transform:capitalize}
 #calendarView .calendar-week-day-picker:not([hidden]){display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;width:100%}
 #calendarView .calendar-week-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:1px solid #c7dceb;border-radius:10px;background:#f3f7fc;color:#1d4568;padding:8px 2px;min-width:0;min-height:56px;cursor:pointer;font:inherit}
 #calendarView .calendar-week-day span{font-size:12px;font-weight:750}
 #calendarView .calendar-week-day strong{font-size:19px;font-weight:850;line-height:1}
 #calendarView .calendar-week-day.selected{background:#14517d;color:#fff;border-color:#14517d;box-shadow:0 2px 5px #17365326}
 #calendarView .calendar-week-day:focus-visible{outline:3px solid #f7bf5c;outline-offset:2px}
}
@media screen and (max-width:410px){
 #calendarView .calendar-week-day-picker:not([hidden]){gap:3px}
 #calendarView .calendar-week-day{padding:6px 0;min-height:52px;border-radius:8px}
 #calendarView .calendar-week-day span{font-size:10px}
 #calendarView .calendar-week-day strong{font-size:17px}
}
@media print{.calendar-selected-day-title,.calendar-week-day-picker{display:none!important}}

/* RC5.2.1.30: margine fisico interno, senza URL automatico a piè di pagina.
   Clonare lo spazio verticale anche quando il report attraversa più fogli. */
@media print{
 body.print-active .print-document{
  padding-top:10mm!important;padding-bottom:10mm!important;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;
 }
 body.print-active .print-document.print-change-report{
  padding-top:12mm!important;padding-bottom:12mm!important;
  break-inside:auto;page-break-inside:auto;
 }
}

/* RC5.2.1.28 - area annullamento FERIE/ROL, PC e smartphone */
.timeoff-cancel-box{margin-top:16px;display:flex;flex-direction:column;align-items:flex-start;gap:9px}
.timeoff-cancel-box h3{margin:0;font-size:1.04rem}
.timeoff-cancel-box p{margin:0;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.timeoff-cancel-box .btn{min-height:42px;max-width:100%;white-space:normal}
.timeoff-cancel-box .btn.hide{display:none!important}
.timeoff-cancel-box .timeoff-undo-note{font-size:.85rem;opacity:.85}
@media(max-width:700px){.timeoff-cancel-box{gap:10px;padding-top:10px}.timeoff-cancel-box .btn{width:100%;justify-content:center}}

.timeoff-cancel-entries{width:100%;display:flex;flex-direction:column;gap:8px}
.timeoff-cancel-entry{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 14px;border:1px solid rgba(96,140,182,.27);border-radius:12px;background:rgba(255,255,255,.24);width:100%}
.timeoff-cancel-entry strong{font-size:.94rem;display:block}.timeoff-cancel-entry small{display:block;font-size:.8rem;opacity:.75;margin-top:4px}
.timeoff-cancel-entry .btn{min-width:125px}
@media(max-width:700px){.timeoff-cancel-entry .btn{width:100%}}

#personalTimeOffCancelPanel{border-top:1px solid rgba(90,125,165,.23);padding-top:13px;margin-top:0;margin-bottom:8px}
