:root{font-family:Arial,Helvetica,sans-serif;color:#25372b;background:#f4f7f3;color-scheme:light}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:10px;padding:11px 16px;font-weight:700}button:disabled{opacity:.4;cursor:not-allowed}.primary{color:#071007;background:#52b244}.primary:hover{background:#429f35}.secondary{background:#f0f5ee;color:#24402a;border:1px solid #d9e5d7}.brand{display:flex;align-items:center;gap:12px}.brand-mark{background:#52b244;color:#101710;font-weight:900;font-size:23px;display:grid;place-items:center;width:46px;height:46px;border-radius:12px}.brand b{font-size:19px;letter-spacing:.08em}.brand small{display:block;color:#398c30;font-size:10px;letter-spacing:.22em;margin-top:4px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(140deg,#e7f5e5,#f8faf7 65%)}.login-box{width:min(420px,100%);background:#24362afff;border:1px solid #e1e9df;padding:38px;border-radius:22px;box-shadow:0 30px 90px #1d35251f}.login-box h1{margin:36px 0 3px;font-size:32px}.login-box p,.heading p{color:#6c7b70}.login-box label{display:block;margin-top:22px}.login-box input{margin-top:9px}.login-box .primary{width:100%;margin-top:24px}input,select{width:100%;background:#24362afff;color:#24362a;border:1px solid #d3dfd3;border-radius:9px;padding:12px;min-height:43px}input:focus,select:focus{outline:2px solid #52b244}.error{color:#ff9292;margin-top:12px}header{height:80px;display:flex;justify-content:space-between;align-items:center;padding:0 30px;border-bottom:1px solid #e2eae2}.profile{display:flex;align-items:center;gap:14px}.profile span{font-size:13px;color:#5b7060}.layout{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:calc(100vh - 80px)}nav{padding:25px 13px;border-right:1px solid #e1eae1;display:flex;flex-direction:column;gap:8px}nav button{background:transparent;color:#536757;text-align:left;font-weight:500;padding:15px}nav button.active,nav button:hover{color:#24362a;background:#e7f4e5}main{padding:35px;max-width:1450px;width:100%;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:25px;flex-wrap:wrap}h1{font-size:29px;margin:0}h2{font-size:18px;margin:0 0 20px}.heading p{margin:8px 0 0}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.stats article,.panel{background:#ffffff;border:1px solid #e1e9e2;border-radius:16px;padding:24px}.stats article small{color:#778879;display:block}.stats strong{display:block;font-size:40px;margin-top:14px}.stats article:last-child strong{color:#429f35}.panel{margin:0 0 20px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:end}.form-grid label{font-size:13px;color:#526454;display:grid;gap:7px}.form-grid .wide{grid-column:span 2}.form-grid .actions{display:flex;gap:8px;align-items:center}.muted{color:#718274;font-size:13px;margin:15px 0 0}.entries{display:grid;gap:8px}.entry{display:flex;gap:14px;align-items:center;justify-content:space-between;background:#f6f9f5;padding:12px 16px;border-radius:10px;flex-wrap:wrap}.entry small{display:block;color:#758778;margin-top:5px}.entry .actions{display:flex;gap:6px;flex-wrap:wrap}.entry button{padding:8px 11px;font-size:12px}.pill{display:inline-block;font-size:11px;padding:5px 9px;border-radius:100px;background:#42472e;color:#f8e39c;margin-left:8px}.pill.approved{color:#a8ef9b;background:#25492b}.pill.rejected{color:#ffb0b0;background:#562d2d}.toolbar{display:flex;align-items:center;gap:10px}.toolbar select{max-width:200px}.toolbar b{min-width:150px;text-align:center}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekdays{text-align:center;margin-bottom:8px;color:#66796b}.calendar-day{min-height:100px;background:#f6faf5;border:1px solid #e3eae2;border-radius:8px;padding:9px;text-align:left;color:#24362a;overflow:hidden;display:flex;flex-direction:column;gap:5px;font-weight:400}.calendar-day:hover{border-color:#52b244}.calendar-day.weekend{background:#e9efe8;color:#98a89a}.calendar-day.empty{background:transparent;border-color:transparent;cursor:default}.calendar-day .num{font-weight:700}.tag{display:block;border-radius:5px;background:#275733;color:#c9f2c6;padding:3px 5px;font-size:11px;line-height:1.25;overflow:hidden;text-overflow:ellipsis}.tag.pending{background:#594c23;color:#24362a0b1}.tag.holiday{background:#59362b;color:#ffd0bf}.tag.birthday{background:#3c345d;color:#e6d4ff}.legend{display:flex;flex-wrap:wrap;gap:22px;color:#697a6b;font-size:13px;margin-top:16px}.legend span:nth-child(1){color:#75ce78}.legend span:nth-child(2){color:#f0c46d}.legend span:nth-child(3){color:#ff9a7e}.detail p{color:#657966}#message:not(:empty){padding:15px;background:#233d29;border:1px solid #508b55;border-radius:12px;margin-bottom:16px} [hidden]{display:none!important}@media(max-width:900px){.layout{grid-template-columns:1fr}nav{border-right:0;border-bottom:1px solid #dfe7df;flex-direction:row;flex-wrap:wrap;padding:10px}nav button{padding:10px}main{padding:17px}.stats{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}.calendar-day{min-height:70px;padding:5px}.tag{font-size:9px}.profile span{display:none}}@media(max-width:550px){header{padding:10px 14px}.brand b{font-size:14px}.brand-mark{width:36px;height:36px;font-size:17px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.toolbar{width:100%;justify-content:space-between}.toolbar b{min-width:0;font-size:13px}.calendar-day{min-height:55px}.tag{max-height:24px}.stats strong{font-size:29px}.stats article,.panel{padding:14px}.heading{align-items:flex-start}nav{overflow-x:auto;flex-wrap:nowrap}nav button{white-space:nowrap;font-size:12px}.calendar-grid,.weekdays{gap:2px}}

/* V2 · diseño claro y accesible */
body{background:#f4f7f3;color:#24372b}header{background:#ffffff;box-shadow:0 2px 12px #2035230a}nav{background:#fff}nav button.active{color:#226b20;border-left:3px solid #52b244} .primary{background:#52b244;color:#fff}.primary:hover{background:#409a34} .secondary{background:#eff5ed;color:#28462c;border:1px solid #d8e5d5}.login-shell{background:linear-gradient(135deg,#e6f3e4,#fafcfa)}.login-box{box-shadow:0 20px 80px #1b351426}.brand small{color:#358b2d} .panel,.stats article{box-shadow:0 4px 22px #29452a0a}.stats strong{color:#26392c}.stats article:last-child strong{color:#368e2d}.entry{background:#f5f8f4}.calendar-day{color:#28412d;background:#f7faf6}.calendar-day.weekend{background:#edf1ed;color:#9dac9e}.tag{color:#fff}.tag.pending{background:#ffefc5;color:#735100}.tag.holiday{background:#ffddd6;color:#893e2c}.tag.birthday{background:#efe1fb;color:#65379b}.pill{background:#fff2cc;color:#885d00}.pill.approved{background:#def4de;color:#236e2f}.pill.rejected{background:#ffe4e4;color:#9b3434}.login-box input,.form-grid input,.form-grid select,#roleForm input{background:white;color:#203922}.permission-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:16px 0}.permission-grid label{display:flex;align-items:center;gap:10px;padding:12px;background:#f5f9f4;border-radius:10px}.permission-grid input{width:18px;height:18px;min-height:0;accent-color:#52b244}.permission-grid label{font-size:13px}.panel form>.actions{margin:12px 0}.entry .actions{max-width:100%}@media(max-width:650px){.permission-grid{grid-template-columns:1fr}}

/* V3: nombres completos de todas las personas ausentes, sin límite por día */
.calendar-day{height:auto;min-height:115px;align-content:start;overflow-wrap:anywhere}.calendar-day .tag.vacation-name{display:block;background:#ddf4de;color:#225c2e;font-weight:600;white-space:normal;line-height:1.3;margin:3px 0;padding:4px;border-radius:5px}.calendar-grid{align-items:stretch}

/* V4 · móvil: calendario primero, datos después y navegación en tarjetas */
.mobile-summary{display:none}
@media(max-width:700px){
 html,body{overflow-x:hidden}
 #app .layout{display:flex;flex-direction:column;min-height:calc(100dvh - 68px)}
 #app main{order:1;padding:12px 12px 8px;max-width:100%}
 #app nav{order:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:8px 12px 24px;overflow:visible;border:0;background:transparent}
 #app nav button{display:block;width:100%;white-space:normal;text-align:left;border:1px solid #e1e9df;border-radius:13px;min-height:64px;padding:12px;font-size:13px;font-weight:700;background:#fff;box-shadow:0 2px 12px #233e2610}
 #app nav button.active{border:1px solid #52b244;background:#eaf7e7;color:#226d25}
 header{height:auto;min-height:68px;padding:10px 12px;gap:8px}
 header .brand b{font-size:13px;letter-spacing:.05em}
 header .brand small{letter-spacing:.1em}
 header .brand-mark{width:38px;height:38px;border-radius:10px}
 header .profile{gap:0}header .profile button{font-size:11px;padding:9px 10px}
 #calendar .heading{margin-bottom:10px;display:block}
 #calendar .heading h1{font-size:20px}
 #calendar .heading p{font-size:12px;margin:3px 0 10px}
 #calendar .toolbar{display:grid;grid-template-columns:40px 1fr 40px;gap:7px;width:100%}
 #calendar .toolbar #siteFilter{grid-column:1 / -1;max-width:none;min-width:0;height:43px}
 #calendar .toolbar #prevMonth{grid-column:1;grid-row:2;padding:8px}
 #calendar .toolbar #monthLabel{grid-column:2;grid-row:2;min-width:0;font-size:14px;text-transform:capitalize}
 #calendar .toolbar #nextMonth{grid-column:3;grid-row:2;padding:8px}
 #calendar .panel{padding:8px;border-radius:12px;margin-bottom:10px}
 #calendar .calendar-grid,#calendar .weekdays{gap:3px}
 #calendar .weekdays{font-size:12px}
 #calendar .calendar-day{min-height:62px;padding:4px 2px;gap:2px;border-radius:6px;overflow:hidden}
 #calendar .calendar-day .num{font-size:12px}
 #calendar .calendar-day .tag{font-size:9px;margin:0;padding:2px 3px;line-height:1.2;white-space:normal;overflow-wrap:anywhere}
 #calendar .calendar-day .tag.vacation-name{margin:0;padding:2px 3px;font-size:9px;line-height:1.2}
 #calendar .legend{margin-top:10px;gap:7px 12px;font-size:10px}
 #calendarDetail h2{font-size:14px;margin-bottom:8px}
 #calendarDetail p{font-size:12px;margin:7px 0}
 .mobile-summary{display:block;margin-top:10px}
 .mobile-summary-title{font-size:16px;font-weight:800;margin:6px 2px 10px}
 .mobile-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
 .mobile-stats>div{border-radius:12px;background:white;border:1px solid #e4eee3;padding:12px;min-height:82px;box-shadow:0 2px 12px #233e260b}
 .mobile-stats span{font-size:11px;color:#667969;display:block}
 .mobile-stats b{font-size:29px;color:#328b2a;display:block;margin-top:6px}
 .mobile-request{width:100%;margin-top:11px;min-height:48px}
 .mobile-hint{font-size:12px;color:#78867a;text-align:center;margin:11px 0 2px}
 .form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .entry{align-items:flex-start}
}

/* V5: marca y verificación compacta */
.vac-label{display:inline-block;color:#257b2c;font-size:.72em;letter-spacing:.08em;margin-left:7px;font-weight:800}.challenge-line{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:10px 0 14px}.challenge-line>label{flex:1;min-width:150px}.challenge-side{display:flex;align-items:center;gap:8px;padding-bottom:3px}.challenge-side span{font-size:13px;font-variant-numeric:tabular-nums;color:#647665}.challenge-side button{white-space:nowrap}@media(max-width:480px){.challenge-line{display:block}.challenge-side{justify-content:space-between;margin-top:8px}}

/* V6 - Horarios */
.schedule-shortcut{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.schedule-shortcut h2{margin-bottom:0}
.schedule-list{display:grid;gap:9px}
.schedule-person{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#f4f8f3;border:1px solid #e2ebdf;border-radius:12px;padding:14px 16px}
.schedule-person b{font-size:14px;color:#25372b}
.schedule-person small{display:block;color:#667b68;margin-top:5px;font-size:12px}
.schedule-person strong{color:#286c2b;font-size:15px;text-align:right}
.schedule-kind{font-size:12px;background:#e2f4df;color:#28632a;border-radius:30px;padding:4px 8px;margin-left:6px}
@media(max-width:700px){.schedule-person{display:block}.schedule-person strong{display:block;margin-top:11px;text-align:left;font-size:14px}.schedule-kind{display:inline-block;margin-top:5px}.schedule-shortcut{align-items:flex-start}}

/* Mejora de legibilidad de la pantalla de acceso */
.login-box{background:#ffffff}.login-box input{background:#fff}.login-box .error{color:#ac3030}

/* V7 - calendario real de horarios */
.schedule-calendar-bar{display:flex;justify-content:center;align-items:center;gap:16px;margin-bottom:18px}.schedule-calendar-bar h2{margin:0;min-width:160px;text-align:center;text-transform:capitalize}.schedule-calendar-grid .calendar-day{min-height:105px}.schedule-calendar-grid .schedule-tag{background:#e1f3df;color:#245d2c;font-size:10px;white-space:normal;overflow-wrap:anywhere}.schedule-calendar-grid .schedule-selected{border:2px solid #52b244;background:#f0fbec}.schedule-calendar-grid .calendar-day.weekend{background:#edf1ed}.schedule-calendar-grid .calendar-day.weekend .schedule-tag{opacity:.8}@media(max-width:650px){.schedule-calendar-grid .calendar-day{min-height:65px;padding:4px 2px}.schedule-calendar-grid .schedule-tag{font-size:9px;max-height:30px;overflow:hidden}.schedule-calendar-bar h2{min-width:0;font-size:15px}.schedule-calendar-bar{gap:7px}}

/* V8: puntos de colores configurables en horarios, vacaciones y festivos. */
.color-dot{display:inline-block;vertical-align:middle;flex:none;width:9px;height:9px;border-radius:50%;margin-right:5px;border:1px solid rgba(0,0,0,.13)}
.tag .color-dot{width:8px;height:8px;margin-right:4px}
input[type=color]{padding:4px;width:100%;min-height:43px;cursor:pointer;background:#fff}

/* V9 - Filtro por año y menú de usuario */
.holiday-filters{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.holiday-filters label{min-width:130px;flex:1;max-width:260px;font-size:13px;color:#536757;display:grid;gap:6px}
.account-menu{position:relative}.account-toggle{display:flex;align-items:center;gap:10px}.account-toggle #who{display:inline!important;font-weight:700;white-space:normal;text-align:right}
.account-dropdown{position:absolute;right:0;top:calc(100% + 8px);min-width:190px;background:#fff;border:1px solid #dce8da;border-radius:12px;box-shadow:0 18px 38px #233b2926;z-index:30;padding:6px}
.account-dropdown button{width:100%;display:block;text-align:left;background:transparent;color:#24372b;font-size:13px;padding:12px;border-radius:8px}.account-dropdown button:hover{background:#e7f4e5}
.modal-shade{position:fixed;inset:0;z-index:100;background:#10201496;display:flex;align-items:center;justify-content:center;padding:20px}
.password-modal{background:#fff;border-radius:18px;padding:26px;width:min(460px,100%);box-shadow:0 25px 60px #0004;display:grid;gap:15px}
.password-modal-head{display:flex;align-items:center;justify-content:space-between}.password-modal-head h2{margin:0}.password-modal label{display:grid;gap:7px;font-size:13px;color:#526454}.password-modal .actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.password-modal .error{color:#b53636}
@media(max-width:700px){.account-toggle #who{display:inline!important;max-width:150px;overflow:hidden;text-overflow:ellipsis;font-size:11px}.holiday-filters label{max-width:none}}

/* V10: calendario unificado */
#calendar .schedule-tag{background:#e9f4ff;color:#224b6b;overflow-wrap:anywhere;white-space:normal;font-size:11px}
#calendar #scheduleList{margin-top:10px}
#calendar #scheduleAdminPanel,#calendar #scheduleAssignPanel{margin-top:18px}
@media(max-width:700px){#calendar .schedule-tag{font-size:9px;line-height:1.2}#calendar .calendar-day{overflow:hidden}#calendar .schedule-person{flex-wrap:wrap}}

/* V11 · editor semanal y color fiable en calendario unificado */
.weekday-editor{grid-column:1/-1}.weekday-editor h3{margin:4px 0;font-size:15px}.weekday-table{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:16px}.weekday-head{font-size:12px;font-weight:bold;color:#576b5b}.weekday-row{display:contents}.weekday-row input[type=time]{min-width:0;width:100%;font-size:13px;padding:8px 5px}.weekday-toggle{display:flex!important;align-items:center!important;gap:10px!important;background:#edf7ec;padding:10px;border-radius:8px}.weekday-toggle input{width:18px;min-width:18px;min-height:18px;accent-color:#52b244}.weekday-row.weekday-disabled input[type=time]{opacity:.45;background:#e7ebe6}.calendar-day .tag .color-dot,.schedule-person .color-dot,.entry .color-dot{display:inline-block!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;border-radius:50%!important;vertical-align:middle!important;opacity:1!important;flex-shrink:0!important;margin-right:6px!important;box-sizing:border-box!important}
@media(max-width:750px){.weekday-table{display:block}.weekday-head{display:none}.weekday-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;background:#f7faf6;border:1px solid #e1e9df;padding:10px;margin:9px 0;border-radius:12px}.weekday-toggle{grid-column:1/-1}.weekday-row input[type=time]{font-size:14px}}

/* V11.1: indicador de color SVG; evita que una política CSP bloquee estilos inline. */
.color-dot-svg{display:inline-block!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;flex-shrink:0!important;vertical-align:-1px!important;margin-right:6px!important;overflow:visible!important;background:transparent!important;border:0!important;opacity:1!important}
.entry .color-dot-svg,.tag .color-dot-svg{display:inline-block!important}

/* V12 · calendario: horario como fondo sin punto. */
#calendar .schedule-tag{color:#17291a!important;border:1px solid rgba(0,0,0,.05);font-weight:600;background:#e0f1dd;white-space:normal;overflow-wrap:anywhere;line-height:1.3}
#calendar .schedule-person{border-radius:9px;padding:12px}
#departmentFilter{max-width:240px}
@media(max-width:700px){#calendar .toolbar{display:flex;flex-wrap:wrap;gap:7px}#calendar #siteFilter,#calendar #departmentFilter{flex:1 1 130px;min-width:0;max-width:none}#calendar .schedule-tag{font-size:9px}}

/* V13: tarjetas uniformes y resumen real lunes-viernes. */
#calendar #scheduleList .schedule-person{display:block!important;background:#f4f8f3!important;border:1px solid #e2ebdf!important;color:#263829!important;padding:12px 14px!important}
#calendar .schedule-person-main{display:flex;align-items:center;justify-content:space-between;gap:16px}
#calendar .schedule-person-main strong{color:#255e2b;text-align:right;font-size:14px}
#calendar .week-mini{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin-top:10px}
#calendar .week-mini-day{min-width:0;background:#fff;border:1px solid #e2e9e0;border-radius:7px;padding:5px 7px;display:flex;gap:5px;align-items:flex-start;flex-direction:column}
#calendar .week-mini-label{font-size:11px;font-weight:800;color:#667b69}
#calendar .week-mini-hours{font-size:11px;line-height:1.35;color:#334d39;overflow-wrap:anywhere}
#calendar .week-mini-day.is-selected{background:#e7f4e4;border-color:#91ca88}
#calendar .week-mini-day.is-selected .week-mini-label{color:#286e2a}
@media(max-width:750px){#calendar .schedule-person-main{display:block}#calendar .schedule-person-main strong{display:block;text-align:left;margin-top:9px}#calendar .week-mini{grid-template-columns:repeat(5,minmax(0,1fr));gap:3px}#calendar .week-mini-day{padding:5px 3px}#calendar .week-mini-hours{font-size:9px}}

/* V15 · Resumen y meteorología */
.welcome-kicker{font-size:11px!important;letter-spacing:.09em;text-transform:uppercase;color:#438a45!important;font-weight:700;margin:0 0 8px!important}
#dashboard>.heading{margin-bottom:22px}#welcomeTitle{font-size:clamp(28px,3vw,37px);letter-spacing:-.04em}#dashboard>.heading p#'+'welcomeSubtitle{margin-top:6px}
.weather-panel{background:linear-gradient(115deg,#fff 0%,#f5fbf4 100%);border:1px solid #dce9db;border-radius:18px;padding:25px 28px;margin-bottom:20px;box-shadow:0 4px 22px #29452a08}
.weather-intro,.weather-main,.weather-location{display:flex;align-items:center}.weather-intro{justify-content:space-between;gap:12px}.weather-location{gap:12px}.weather-pin{width:40px;height:40px;border-radius:12px;background:#e4f3e1;color:#317b30;display:grid;place-items:center;font-size:27px}.weather-location>div{display:grid;gap:3px}.weather-eyebrow{font-size:10px;letter-spacing:.13em;color:#6c826d;font-weight:700}.weather-location strong{font-size:18px;color:#22392a}.weather-status{font-size:13px;color:#637a69}.weather-badge{background:#e5f3e1;color:#368734;font-size:10px;font-weight:700;border-radius:30px;padding:7px 12px;letter-spacing:.08em}.weather-main{justify-content:space-between;gap:18px;padding-top:20px}.weather-temperature{display:flex;align-items:center;gap:17px}.weather-icon{font-family:'Segoe UI Symbol','Apple Color Emoji',sans-serif;font-size:46px;width:60px;text-align:center;color:#e8a531}.weather-temperature strong{font-size:57px;letter-spacing:-.06em;font-weight:750;color:#213c2b;line-height:1}.weather-high-low{display:flex;align-items:center;gap:15px;flex-wrap:wrap;font-size:13px;color:#58725c}.weather-high-low span{white-space:nowrap}.weather-source{font-size:10px;color:#87988a;margin:17px 0 0}.weather-source a{color:#577a5a}
@media(max-width:650px){.weather-panel{padding:18px;margin-top:0}.weather-main{align-items:flex-start;flex-direction:column;gap:14px}.weather-temperature strong{font-size:48px}.weather-icon{font-size:39px;width:42px}.weather-badge{font-size:9px}.weather-high-low{gap:11px}#dashboard>.heading{gap:13px}}

/* V15.2: tarjeta meteorológica animada sin depender de imágenes externas */
.weather-panel{position:relative;isolation:isolate;overflow:hidden;transition:background 1.2s ease,color .5s}
.weather-panel>.weather-intro,.weather-panel>.weather-main{position:relative;z-index:2}
.weather-scene{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.weather-scene .weather-sun{position:absolute;top:10%;right:14%;width:130px;aspect-ratio:1;border-radius:50%;background:#fff6bb;box-shadow:0 0 0 30px #fff2aa32,0 0 0 65px #fff7bc1b,0 0 90px #fff5b2;animation:weatherBreathe 6s ease-in-out infinite}
.weather-scene .weather-moon{position:absolute;top:14%;right:18%;width:95px;aspect-ratio:1;border-radius:50%;background:#f8f5df;box-shadow:0 0 55px #fffbd16e}
.weather-scene .weather-cloud{position:absolute;width:180px;height:52px;border-radius:60px;background:#ffffffbd;top:37%;right:13%;filter:blur(1px);animation:cloudFloat 14s ease-in-out infinite}
.weather-scene .weather-cloud:before,.weather-scene .weather-cloud:after{content:'';position:absolute;border-radius:50%;background:inherit}.weather-scene .weather-cloud:before{width:90px;height:90px;bottom:15px;left:25px}.weather-scene .weather-cloud:after{width:68px;height:68px;bottom:12px;right:20px}
.weather-scene .weather-cloud.cloud-b{top:65%;right:50%;transform:scale(.65);animation-duration:19s;opacity:.7}
.weather-scene .weather-rain{position:absolute;inset:0;opacity:0;background:repeating-linear-gradient(105deg,transparent 0 16px,#ffffff83 17px 19px,transparent 20px 35px);background-size:100% 100px;animation:rainMove .6s linear infinite}
.weather-scene .weather-stars{position:absolute;inset:0;opacity:0;background-image:radial-gradient(circle,#fff 1px,transparent 2px),radial-gradient(circle,#fff 1px,transparent 2px);background-position:30px 30px,90px 75px;background-size:120px 105px}
.weather-scene .weather-sun,.weather-scene .weather-moon,.weather-scene .weather-cloud{opacity:0;transition:opacity .7s}
.weather-scene .weather-sun{display:none}.weather-scene .weather-moon{display:none}
.weather-scene .weather-sun~.weather-moon{display:none}
.weather-panel.weather-sun,.weather-panel.weather-partly{background:linear-gradient(120deg,#daf0ff,#fff0bb)}
.weather-panel.weather-cloud{background:linear-gradient(120deg,#dce6f0,#f0f4f6)}
.weather-panel.weather-rain,.weather-panel.weather-storm{background:linear-gradient(120deg,#bdccdc,#e4ebef)}
.weather-panel.weather-fog{background:linear-gradient(120deg,#d9e1df,#f3f5f1)}
.weather-panel.weather-snow{background:linear-gradient(120deg,#e5f0fa,#ffffff)}
.weather-panel.weather-night{background:linear-gradient(120deg,#203451,#364e75);color:#fff}
.weather-panel.weather-night .weather-location strong,.weather-panel.weather-night .weather-temperature strong,.weather-panel.weather-night .weather-status,.weather-panel.weather-night .weather-high-low,.weather-panel.weather-night .weather-eyebrow{color:#fff}
.weather-panel.weather-sun .weather-scene .weather-sun,.weather-panel.weather-partly .weather-scene .weather-sun{display:block;opacity:.95}
.weather-panel.weather-night .weather-scene .weather-moon{display:block;opacity:1}
.weather-panel.weather-night .weather-stars{opacity:.55}
.weather-panel.weather-partly .weather-cloud,.weather-panel.weather-cloud .weather-cloud,.weather-panel.weather-rain .weather-cloud,.weather-panel.weather-storm .weather-cloud,.weather-panel.weather-snow .weather-cloud,.weather-panel.weather-fog .weather-cloud{opacity:.75}
.weather-panel.weather-rain .weather-rain,.weather-panel.weather-storm .weather-rain{opacity:.45}
.weather-panel.weather-storm .weather-rain{animation-duration:.3s}
.weather-panel.weather-fog .weather-cloud{filter:blur(14px)}
@keyframes weatherBreathe{50%{transform:scale(1.09)}}@keyframes cloudFloat{50%{translate:-25px 0}}@keyframes rainMove{to{background-position:0 100px}}
.summary-year{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 16px}.summary-year label{font-weight:700;font-size:14px}.summary-year select{width:130px}.summary-note{font-size:12px;color:#687e6b}
@media(prefers-reduced-motion:reduce){.weather-scene *{animation:none!important;transition:none!important}}
@media(max-width:650px){.weather-scene .weather-sun{right:-5%;width:90px}.weather-scene .weather-moon{right:8%;width:64px}.weather-scene .weather-cloud{right:5%;width:110px;height:38px}.weather-panel{min-height:220px}}

/* V16: selector de ejercicio en administración */
.year-admin{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 18px}.year-admin label{font-weight:650}.year-admin select{min-width:110px;width:auto;padding:10px 12px}

/* V19: informe semanal listo para A4 apaisado. */
.export-week-btn{white-space:nowrap;font-size:12px;}
#weeklyPrint{display:none;}
@media print {
 @page {size:A4 landscape;margin:7mm;}
 html,body{margin:0!important;padding:0!important;background:#fff!important;}
 body>#app,body>#login{display:none!important;}
 #weeklyPrint{display:block!important;color:#203626!important;font-family:Arial,sans-serif!important;}
 .weekly-sheet{width:100%;height:190mm;display:flex;flex-direction:column;break-inside:avoid;page-break-inside:avoid;}
 .weekly-sheet-header{display:flex;justify-content:space-between;align-items:center;padding:5mm 4mm;background:#f1f8f0;border-bottom:2px solid #52b244;min-height:18mm;}
 .weekly-sheet-header strong{font-size:18pt;display:block;letter-spacing:1pt;}
 .weekly-sheet-header span{font-size:9pt;}
 .weekly-scope{text-align:right;font-size:9pt;font-weight:600;}
 .weekly-sheet-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.2fr) minmax(0,1.2fr) minmax(0,1.2fr) minmax(0,1.2fr) minmax(0,.7fr) minmax(0,.7fr);flex:1;min-height:0;gap:1.1mm;margin-top:2mm;}
 .weekly-sheet-day{min-width:0;border:1px solid #dce6db;border-radius:2mm;overflow:hidden;background:#fff;}
.weekly-sheet-day.weekend .weekly-sheet-events{padding:.8mm;gap:.7mm;}
.weekly-sheet-day.weekend .weekly-event{font-size:4.8pt;padding:.45mm;line-height:1.02;}
.weekly-sheet-day.weekend .weekly-empty{font-size:6pt;}

 .weekly-sheet-dayhead{padding:2mm 1mm;background:#e7f1e5;font-size:7pt;display:flex;justify-content:space-between;gap:1mm;flex-wrap:wrap;}
 .weekly-sheet-events{padding:1.1mm;display:flex;flex-direction:column;gap:1mm;}
 .weekly-event{border-radius:1mm;padding:1.1mm;font-size:6.5pt;line-height:1.13;overflow-wrap:anywhere;color:#142416!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
 .weekly-sheet.dense-1 .weekly-event{font-size:5.7pt;padding:.7mm;line-height:1.05;}
 .weekly-sheet.dense-2 .weekly-event{font-size:5pt;padding:.45mm;line-height:1.03;}
 .weekly-sheet.dense-3 .weekly-event{font-size:4.3pt;padding:.35mm;line-height:1.0;}
 .weekly-empty{color:#758575;font-size:7pt;}
 .weekly-sheet footer{padding:2mm;font-size:7pt;color:#607560;}
}

/* DIESEL PARTS - Filtro compacto multidepartamento V19.6 */
/* V19.6: filtros compactos, debajo de Sede y nunca expandiendo la cabecera */
#calendar .heading .toolbar{display:flex!important;align-items:center!important;justify-content:flex-end;gap:9px!important;flex-wrap:wrap;width:auto!important}
#calendar .calendar-filter-stack{display:flex;flex-direction:column;gap:5px;width:210px;min-width:170px;flex:0 0 210px;position:relative;z-index:50}
#calendar .calendar-filter-stack #siteFilter{width:100%!important;min-width:0!important;max-width:100%!important;grid-column:auto!important;height:39px!important;min-height:39px!important;padding:7px 11px}
#calendar .calendar-filter-stack .dept-filter{width:100%;max-width:none;min-width:0;position:relative;z-index:60}
#calendar .calendar-filter-stack .dept-filter[hidden]{display:none!important}
#calendar .calendar-filter-stack .dept-filter>summary{min-height:31px!important;padding:5px 10px!important;font-size:12px!important;border-radius:8px!important;background:#eef6ec!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#calendar .calendar-filter-stack .dept-filter-options{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:4px 10px!important;position:absolute!important;top:calc(100% + 4px)!important;left:0!important;right:auto!important;width:440px!important;max-width:min(440px,calc(100vw - 40px))!important;max-height:240px!important;padding:10px!important;background:#fff!important;border:1px solid #d5e3d4!important;border-radius:10px!important;box-shadow:0 12px 25px #203b2926!important;z-index:500!important}
#calendar .calendar-filter-stack .dept-filter-option{display:flex!important;flex-direction:row!important;align-items:center!important;gap:5px!important;margin:0!important;padding:6px!important;font-size:12px!important;line-height:1.2!important;min-width:0!important}
#calendar .calendar-filter-stack .dept-filter-option input{display:inline-block!important;width:15px!important;height:15px!important;min-height:15px!important;margin:0!important;padding:0!important;flex:0 0 15px!important;accent-color:#52b244!important}
#calendar .calendar-filter-stack .dept-filter-option span{min-width:0;white-space:normal;overflow-wrap:anywhere}
#calendar .toolbar #prevMonth,#calendar .toolbar #monthLabel,#calendar .toolbar #nextMonth{grid-column:auto!important;grid-row:auto!important}
@media(max-width:850px){#calendar .heading .toolbar{width:100%!important;justify-content:flex-start!important}#calendar .calendar-filter-stack{flex:1 1 180px;max-width:250px}#calendar .calendar-filter-stack .dept-filter-options{grid-template-columns:repeat(2,minmax(0,1fr))!important;width:340px!important}}
@media(max-width:480px){#calendar .calendar-filter-stack{flex:1 1 100%;max-width:100%}#calendar .calendar-filter-stack .dept-filter-options{width:100%!important;max-width:100%!important}#calendar .heading .toolbar{gap:6px!important}}

/* DIESEL PARTS - V19.9. Días pasados y día actual (calendario principal). */
#calendar .calendar-grid .calendar-day.past-day:not(.empty) {
  background-color: #e7ebe8;
  border-color: #d4dcd5;
}
#calendar .calendar-grid .calendar-day.today-day:not(.empty) {
  background-color: #f3fcf1;
  border: 2px solid #52b244;
  box-shadow: inset 0 0 0 1px rgba(82,178,68,.18), 0 0 0 2px rgba(82,178,68,.10);
}
#calendar .calendar-grid .calendar-day.today-day .num {
  color: #23782c;
  font-weight: 800;
}
/* No desaturar ni ocultar los eventos de días anteriores. */


