:root{--blue:#276486;--dark:#17384b;--bg:#f3f6f8;--line:#dce5ea;--muted:#607582;--white:#fff;--green:#e4f6ed;--red:#ffebeb;--yellow:#fff4d9}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#182b36;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}header{background:linear-gradient(120deg,var(--dark),var(--blue));color:#fff;padding:22px max(18px,calc((100% - 1400px)/2));}header h1{margin:0;font-size:clamp(22px,3vw,32px)}header p{margin:5px 0 0;color:#e2edf3}.wrap{max-width:1400px;margin:auto;padding:18px}.toolbar,.panel,.stat{background:white;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:0 3px 12px #18384b08}.toolbar{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.toolbar .grow{flex:1}button,.filebtn{border:0;border-radius:9px;background:var(--blue);color:white;padding:10px 14px;font-weight:650;cursor:pointer;font-size:14px}button.secondary,.filebtn.secondary{background:#eaf1f5;color:var(--dark);border:1px solid var(--line)}button.danger{background:#a83e3e}button:hover,.filebtn:hover{filter:brightness(.96)}input,select{font:inherit;padding:9px 10px;border:1px solid #cbd8df;border-radius:8px;background:white;color:#1a2b35;min-width:0}input[type=number]{width:100px}.stats{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;margin:14px 0}.stat small{color:var(--muted);display:block}.stat strong{font-size:23px;color:var(--dark)}.layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:14px}.panel h2{font-size:18px;margin:0 0 12px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field{display:flex;flex-direction:column;gap:5px}.field.full{grid-column:1/-1}.field label{font-size:12px;font-weight:700;color:var(--muted)}.field input{width:100%}.employee-list{margin-top:14px;display:flex;flex-direction:column;gap:7px;max-height:380px;overflow:auto}.emp{border:1px solid var(--line);padding:10px;border-radius:9px;display:flex;justify-content:space-between;gap:8px;align-items:center;cursor:pointer}.emp.active{border-color:var(--blue);background:#edf6fa}.emp small{display:block;color:var(--muted)}.tabletop{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.tabletop h2{margin:0;flex:1}.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:10px}table{border-collapse:separate;border-spacing:0;width:100%;min-width:920px;background:#fff}th,td{padding:8px 9px;border-bottom:1px solid #e5ebef;text-align:left;white-space:nowrap;font-size:13px}th{position:sticky;top:0;background:#eaf1f5;color:#29495a;z-index:1}td input,td select{padding:6px;min-width:65px;width:100%;font-size:13px}td .hours{width:66px}tr:last-child td{border-bottom:0}.badge{display:inline-block;border-radius:20px;padding:3px 8px;font-size:11px;font-weight:700}.ok{background:var(--green);color:#17663e}.abs{background:var(--red);color:#8c3030}.vac{background:var(--yellow);color:#8a5b00}.note{font-size:12px;color:var(--muted);margin-top:10px}.paygrid{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:10px;margin-top:14px}.paybox{background:#f5f8fa;border-radius:9px;padding:10px}.paybox small{display:block;color:var(--muted)}.paybox strong{font-size:17px}.hidden{display:none!important}.foot{color:var(--muted);font-size:12px;text-align:center;padding:20px}.notice{padding:10px 12px;border-radius:9px;background:#edf6fa;color:#244b60;margin-bottom:12px;font-size:13px}#toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#18384b;color:white;padding:11px 16px;border-radius:9px;display:none;z-index:10;box-shadow:0 4px 16px #0002}
@media(max-width:900px){.layout{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.employee-list{max-height:220px}.paygrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.wrap{padding:10px}.toolbar{padding:11px}.stats{gap:8px}.stat{padding:11px}.stat strong{font-size:19px}.formgrid{grid-template-columns:1fr}.field.full{grid-column:auto}.paygrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{body{background:#fff;font-size:10px}header{background:#fff!important;color:#000;padding:0 0 12px;border-bottom:2px solid #222}header p{color:#333}.wrap{max-width:none;padding:8px}.toolbar,.layout>aside,.no-print,.foot{display:none!important}.layout{display:block}.panel,.stat{box-shadow:none;border:0;padding:4px}.stats{grid-template-columns:repeat(4,1fr);margin:6px 0}.stat strong{font-size:14px}.tablewrap{overflow:visible;border:0}table{min-width:0;width:100%;font-size:8px}th,td{font-size:8px;padding:4px;white-space:normal}th{position:static}td input,td select{border:0;padding:0;background:transparent;appearance:none}#printTitle{display:block!important}.paygrid{grid-template-columns:repeat(4,1fr)}.paybox{padding:5px}}
header{display:flex;align-items:center;gap:16px;flex-wrap:wrap}header .brand{flex:1;min-width:220px}.userbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:#e2edf3}.userbar button{background:#ffffff1f;border:1px solid #ffffff44}.syncstate{font-size:12px;padding:3px 9px;border-radius:20px;background:#ffffff1f}.syncstate.error{background:#a83e3e}
.auth{max-width:430px;margin:40px auto;padding:0 14px}.auth .panel{padding:22px}.auth h2{margin:0 0 6px;font-size:21px}.auth p.sub{margin:0 0 16px;color:var(--muted);font-size:14px}.auth form{display:flex;flex-direction:column;gap:12px}.auth .field input{width:100%}.auth button[type=submit]{width:100%;padding:12px}.auth .links{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:14px;font-size:13px}.linkbtn{background:none!important;border:0;color:var(--blue)!important;padding:0;font-weight:600;text-decoration:underline;cursor:pointer}.msg{padding:10px 12px;border-radius:9px;font-size:13px;margin-bottom:12px}.msg.error{background:var(--red);color:#7a2525}.msg.info{background:#edf6fa;color:#244b60}.msg.ok{background:var(--green);color:#17663e}.msg code{background:#fff8;padding:1px 4px;border-radius:4px}.loading{text-align:center;color:var(--muted);padding:60px 0}button:disabled{opacity:.55;cursor:not-allowed}
@media print{.auth,.userbar,#legacyNotice{display:none!important}}
.rolebadge{display:inline-block;background:#edf6fa;color:#244b60;border-radius:18px;padding:5px 10px;font-size:12px;font-weight:700}.subpanel{margin-top:14px;padding:14px;box-shadow:none}.subpanel h2{margin-bottom:10px}.subpanel .note{margin-bottom:0}.loss-list{display:flex;flex-direction:column;gap:7px;margin-top:12px}.lossitem{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--line);padding:9px;border-radius:8px}.lossitem small{color:var(--muted)}.lossitem button{margin-left:auto;padding:6px 10px;font-size:12px}

.notification-panel{margin:0 0 14px}.notification-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:12px 4px}.notification-item:last-child{border-bottom:0}.notification-item p{margin:4px 0}.notification-item small{color:var(--muted)}.notification-item.read{opacity:.72}#adminNotifications span{display:inline-block;min-width:20px;text-align:center;background:var(--blue);color:white;border-radius:99px;padding:0 5px;font-size:12px}

/* Barra organizada y adaptable para pantallas táctiles */
header{padding-left:max(16px,calc((100% - 1400px)/2));padding-right:max(16px,calc((100% - 1400px)/2));}
.userbar{max-width:100%;}
.toolbar{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:14px;margin-bottom:14px;}
.toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;}
.toolbar-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;}
.toolbar-caption,.month-picker label{font-weight:650;color:var(--muted);}
.company-picker select{min-width:150px;max-width:260px;}
.company-actions{justify-content:flex-end;}
.primary-actions button,.primary-actions .filebtn{white-space:nowrap;}
.month-picker{margin-left:auto;}
.toolbar button,.toolbar .filebtn{min-height:42px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;}
#notificationCount{margin-left:3px;}
.tabletop select{min-width:160px;}
.tablewrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;}
button,.filebtn,select,input{touch-action:manipulation;}
@media(max-width:900px){header{padding:18px;}.userbar{flex:1 1 100%;justify-content:flex-start;}.toolbar-row{align-items:flex-start;flex-wrap:wrap;}.company-actions{justify-content:flex-start;}.month-picker{margin-left:0;}}
@media(max-width:600px){
 body{font-size:16px;padding-bottom:env(safe-area-inset-bottom);}
 header{padding:16px max(14px,env(safe-area-inset-left));gap:12px;}
 header .brand{min-width:0;flex:1 1 100%;}
 header h1{font-size:26px;}
 .userbar{gap:7px;font-size:13px;}
 #userEmail{overflow-wrap:anywhere;max-width:100%;}
 .userbar button{min-height:42px;}
 .wrap{padding:10px max(10px,env(safe-area-inset-left));}
 .toolbar{padding:12px;gap:10px;border-radius:12px;}
 .toolbar-row{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;}
 .toolbar-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;}
 .company-picker{grid-template-columns:auto minmax(0,1fr);align-items:center;}
 .company-picker select{width:100%;max-width:none;min-width:0;}
 .company-picker .rolebadge{grid-column:1/-1;justify-self:start;}
 .toolbar button,.toolbar .filebtn{width:100%;min-width:0;min-height:44px;padding:9px 8px;text-align:center;white-space:normal;line-height:1.2;font-size:13px;}
 .month-picker{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;}
 .month-picker input{width:100%;min-height:44px;}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
 .stat{min-width:0;padding:12px;}
 .stat small{font-size:12px;}
 .stat strong{font-size:19px;overflow-wrap:anywhere;}
 .layout{grid-template-columns:minmax(0,1fr);}
 .layout>.panel{min-width:0;padding:14px;}
 .tabletop{align-items:stretch;}
 .tabletop h2{flex:1 1 100%;}
 .tabletop label{align-self:center;}
 .tabletop select{flex:1;min-width:0;}
 .tabletop button{flex:1 1 100%;min-height:44px;}
 .tablewrap{max-width:100%;}
 table{min-width:760px;}
 input,select{font-size:16px;min-height:42px;}
 .formgrid{grid-template-columns:repeat(2,minmax(0,1fr));}
 .field.full{grid-column:1/-1;}
 .paygrid{grid-template-columns:repeat(2,minmax(0,1fr));}
 #toast{width:calc(100% - 24px);bottom:max(12px,env(safe-area-inset-bottom));text-align:center;}
}
@media(max-width:360px){.toolbar-group{grid-template-columns:minmax(0,1fr);}.company-picker{grid-template-columns:1fr;}.company-picker .rolebadge{grid-column:auto;}.formgrid{grid-template-columns:minmax(0,1fr);}.field.full{grid-column:auto;}}

/* Formularios internos: funcionan aunque el navegador bloquee prompt/confirm */
.dialog-open{overflow:hidden;}
.dialog-backdrop{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:20px;background:#102b3bcc;}
.dialog-backdrop.hidden{display:none!important;}
.dialog-card{width:min(100%,440px);max-height:calc(100dvh - 32px);overflow:auto;padding:22px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 18px 60px #102b3b40;}
.dialog-card h2{margin:0 0 6px;font-size:21px;}
.dialog-card>p{margin:0 0 18px;color:var(--muted);font-size:14px;}
.dialog-card .field{margin:12px 0;}
.dialog-card input,.dialog-card select{width:100%;min-height:46px;}
.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px;}
.dialog-actions button{min-width:100px;min-height:44px;}
@media(max-width:600px){.dialog-backdrop{padding:12px max(12px,env(safe-area-inset-left));}.dialog-card{padding:18px;border-radius:14px;}.dialog-actions button{flex:1;}}

/* Paleta OnBloo y ajustes finales para Windows, macOS, iOS y Android */
:root{--blue:#0b5471;--dark:#07394d;--bg:#f4f8fa;--line:#d5e2e9;--muted:#797c82;--white:#fff;--green:#e8f5ee;--red:#fff0ef;--yellow:#fff6df;--oc-sky:#85b7d6;--oc-ice:#eaf4f9;--oc-ink:#17384b;}
html{min-width:320px;scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;}
body{min-width:320px;background:var(--bg);color:#18313e;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;}
header{background:linear-gradient(120deg,#0b5471 0%,#0b5471 76%,#246e8b 100%);border-bottom:4px solid var(--oc-sky);}
button,.filebtn{background:var(--blue);color:#fff;transition:background-color .15s ease,box-shadow .15s ease,transform .15s ease;}
button.secondary,.filebtn.secondary{background:var(--oc-ice);border-color:#c8dce7;color:#0b5471;}
button.danger{background:#934744;color:#fff;}
button:hover,.filebtn:hover{filter:none;background:#08455d;}
button.secondary:hover,.filebtn.secondary:hover{background:#d8eaf3;}
button:focus-visible,.filebtn:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #85b7d6;outline-offset:2px;}
input,select{border-color:#c3d3dc;color:#17384b;background:#fff;}
.panel,.stat,.toolbar{border-color:var(--line);box-shadow:0 4px 18px #0b54710b;}
.toolbar{gap:14px;}
.toolbar-group{gap:8px;}
.toolbar-caption,.month-picker label{color:#536d7a;}
.rolebadge,.notice{background:#e7f2f7;color:#0b5471;}
.stats .stat{border-top:3px solid #85b7d6;}
.tablewrap{border-color:#cbdce5;}
th{background:#e7f1f6;color:#0b5471;}
.payroll-overview{margin-top:16px;padding:18px;border-color:#c7dce7;background:#fff;}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;}
.section-heading h2{margin:0 0 3px;}
.section-heading p{margin:0;color:var(--muted);font-size:13px;}
.period-pill{display:inline-flex;align-items:center;min-height:34px;padding:6px 12px;border-radius:99px;background:#e7f2f7;color:#0b5471;font-size:13px;font-weight:700;text-transform:capitalize;}
.paygrid{grid-template-columns:repeat(4,minmax(0,1fr));}
.paybox{min-width:0;border:1px solid #e1eaf0;background:#f7fafc;}
.paybox strong{color:#0b5471;overflow-wrap:anywhere;}
.paybox-total{background:#e8f3f8;border-color:#85b7d6;}
.paybox-total strong{font-size:22px;color:#0b5471;}
.payroll-admin-only.subpanel{border-color:#d5e2e9;}
.employee-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.employee-actions button{min-height:42px;}
.tablewrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;}
#attendanceTable{min-width:760px;}
#attendanceTable td select.hours{min-width:85px;min-height:38px;padding:5px 8px;}
#attendanceTable td select:disabled{background:#f1f4f6;color:#797c82;opacity:1;}
.payroll-note{padding:12px 14px;border-left:4px solid #85b7d6;background:#eaf4f9;border-radius:0 9px 9px 0;}
@media(max-width:1024px){.paygrid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:700px){.paygrid{grid-template-columns:repeat(2,minmax(0,1fr));}.section-heading{align-items:flex-start;flex-direction:column;}.layout{grid-template-columns:minmax(0,1fr);}.layout>*{min-width:0;}}
@media(max-width:480px){
 header{padding:16px max(14px,env(safe-area-inset-right)) 16px max(14px,env(safe-area-inset-left));align-items:flex-start;gap:12px;flex-wrap:wrap;}
 .userbar{width:100%;max-width:100%;flex-wrap:wrap;gap:8px;}
 .userbar>*{min-width:0;}
 .wrap{padding:10px max(10px,env(safe-area-inset-right)) 10px max(10px,env(safe-area-inset-left));}
 .toolbar-group{grid-template-columns:repeat(2,minmax(0,1fr));}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr));}
 .payroll-overview{padding:14px;}
 .paygrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
 .paybox{padding:10px;}
 .paybox small{font-size:11px;line-height:1.3;}
 .paybox strong{font-size:16px;}
 .paybox-total strong{font-size:19px;}
 .employee-actions>*{flex:1 1 100%;}
 .tabletop button{width:100%;}
 .tablewrap{max-width:100%;}
 input,select{font-size:16px;}
 .tabletop select{min-width:0;width:100%;}
}
@media(max-width:360px){.toolbar-group,.paygrid,.stats{grid-template-columns:minmax(0,1fr);}.company-picker{grid-template-columns:1fr;}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;}}

/* Barra más compacta: reserva espacio para los controles de empresa y mes. */
.toolbar{gap:10px;padding:12px;}
.toolbar-row{gap:8px;}
.toolbar-group{gap:6px;}
.toolbar button,.toolbar .filebtn{min-height:36px;padding:6px 10px;font-size:13px;border-radius:8px;}
.toolbar .company-picker select{min-height:36px;padding:6px 9px;}
@media(max-width:480px){.toolbar button,.toolbar .filebtn{min-height:40px;padding:7px 8px;font-size:12px;}.toolbar-group{gap:6px;}}

/* Ajustes de viewport y área segura para Safari/iOS, Android y macOS. */
html,body{width:100%;max-width:100%;overflow-x:hidden;overflow-x:clip;overscroll-behavior-x:none;}
body{position:relative;}
body{min-height:100vh;min-height:100dvh;}
header{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));}
.wrap{width:100%;padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right));}
.userbar{min-width:0;}
#userEmail{overflow-wrap:anywhere;}
.layout,.layout>*{min-width:0;}
.section-heading,.tabletop,.toolbar-row,.toolbar-group,.notification-item,.lossitem,.emp{min-width:0;}
.notification-item>div,.emp>*{min-width:0;overflow-wrap:anywhere;}
.lossitem>span{min-width:0;overflow-wrap:anywhere;}
.tablewrap{display:block;width:100%;max-width:100%;overflow-x:auto;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;scrollbar-width:thin;}
#attendanceTable{width:max(100%,760px);}
.table-scroll-hint{display:none;margin:0 0 8px;color:var(--muted);font-size:12px;}
.auth{width:100%;max-width:460px;padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));}
.dialog-backdrop{padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));}
.dialog-card{max-height:calc(100vh - 24px);max-height:calc(100dvh - max(24px,env(safe-area-inset-top)) - max(24px,env(safe-area-inset-bottom)));overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
input,select,textarea{max-width:100%;}
img,svg,canvas,video{max-width:100%;}
@media(max-width:600px){
 body{padding-bottom:max(10px,env(safe-area-inset-bottom));}
 header{padding-top:max(14px,env(safe-area-inset-top));}
 .wrap{padding-top:10px;padding-bottom:12px;}
 .table-scroll-hint{display:block;}
 .tabletop{gap:8px;}
 .stats .stat,.paybox{overflow-wrap:anywhere;}
 .auth{margin:20px auto;}
}
@media(max-width:380px){
 .wrap{padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right));}
 .layout>.panel{padding:12px;}
 .formgrid{grid-template-columns:minmax(0,1fr);}
 .field.full{grid-column:auto;}
 .paygrid,.stats{grid-template-columns:minmax(0,1fr);}
 .toolbar-group{grid-template-columns:minmax(0,1fr);}
 .company-picker{grid-template-columns:minmax(0,1fr);}
 .company-picker .rolebadge{grid-column:auto;}
}
@media(max-height:520px) and (orientation:landscape){
 header{padding-top:10px;padding-bottom:10px;}
 .dialog-backdrop{place-items:start center;overflow-y:auto;}
 .dialog-card{margin:auto 0;}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}

/* Selector de mes compacto, manteniendo espacio para su calendario nativo. */
.month-picker{display:flex;align-items:center;gap:7px;flex:0 1 auto;min-width:0;}
.month-picker input[type="month"]{width:176px;max-width:100%;min-width:0;min-height:36px;padding:5px 8px;font-size:13px;}
@media(max-width:600px){.month-picker{display:grid;width:100%;grid-template-columns:auto minmax(0,1fr);}.month-picker input[type="month"]{width:100%;min-height:40px;font-size:15px;}}

/* En teléfonos el selector no debe estirarse para llenar toda la barra. */
@media(max-width:600px){
 .month-picker{display:flex;width:max-content;max-width:100%;justify-self:start;grid-template-columns:none;gap:6px;}
 .month-picker input[type="month"]{width:150px;max-width:calc(100vw - 82px);min-height:36px;padding:4px 6px;font-size:14px;}
}
@media(max-width:380px){.month-picker input[type="month"]{width:138px;max-width:calc(100vw - 78px);min-height:34px;padding:3px 5px;font-size:13px;}}

/* El nombre de empresa y trabajador ocupa todo el ancho antes de los filtros. */
.tabletop h2{flex:1 1 100%;width:100%;min-width:0;line-height:1.3;overflow-wrap:break-word;}

/* Acceso inclusivo, bandeja, calendario personal y notas privadas */
.password-row{display:flex;align-items:stretch;gap:7px;width:100%;}.password-row input{flex:1;min-width:0}.password-toggle{padding:7px 10px;white-space:nowrap}.personal-tools{margin:14px 0}.calendar-nav{display:flex;align-items:center;gap:8px}.calendar-nav strong{min-width:150px;text-align:center;text-transform:capitalize}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-weekdays{text-align:center;color:var(--muted);font-size:12px;font-weight:700;margin:8px 0}.calendar-day{position:relative;display:flex;justify-content:center;align-items:center;min-height:42px;padding:5px;background:#fff;border:1px solid var(--line);color:var(--dark)}.calendar-day.selected{background:#0b5471;color:#fff;border-color:#0b5471}.calendar-day.today{outline:2px solid #85b7d6;outline-offset:1px}.calendar-day small{position:absolute;right:4px;top:1px;font-size:10px}.calendar-empty{min-height:42px}.reminder-form{margin-top:14px;padding:12px;background:#f3f8fb;border:1px solid var(--line);border-radius:10px}.reminder-form>strong{display:block;margin-bottom:8px;text-transform:capitalize}.reminder-form .formgrid{margin-bottom:9px}.reminder-list,.private-note-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.reminder-item,.private-note{display:flex;align-items:flex-start;gap:9px;flex-wrap:wrap;padding:10px;border:1px solid var(--line);border-radius:9px}.reminder-item>div,.private-note>div{flex:1;min-width:0}.reminder-item p,.private-note p{margin:4px 0;overflow-wrap:anywhere}.reminder-item.done{opacity:.65}.private-note small{display:block;color:var(--muted);font-size:11px}.private-note .linkbtn{padding:3px 0}.personal-tools textarea{width:100%;resize:vertical;border:1px solid #cbd8df;border-radius:8px;padding:9px;font:inherit}.personal-tools button{min-height:36px}.calendar-nav button{min-width:38px;padding:5px 10px}
@media(max-width:600px){.calendar-day,.calendar-empty{min-height:38px}.calendar-grid,.calendar-weekdays{gap:3px}.reminder-item>button,.private-note>button.danger{padding:6px 8px;font-size:12px}.calendar-nav strong{min-width:130px}.personal-tools{padding:12px}.password-toggle{font-size:13px}}


/* Calendario compacto y notas visuales */
.calendar-layout{display:grid;grid-template-columns:minmax(270px,360px) minmax(0,1fr);gap:18px;align-items:start}.calendar-main{max-width:380px}.calendar-weekdays,.calendar-grid{gap:4px}.calendar-weekdays{margin:3px 0 7px}.calendar-day,.calendar-empty{min-height:34px}.calendar-day{border-radius:8px;padding:3px;font-size:13px}.calendar-day small{font-size:9px;right:3px}.calendar-hint{font-size:11px;color:var(--muted);margin:8px 0 0}.calendar-side{min-width:0}.reminder-form{margin:0;padding:11px}.reminder-form .formgrid{gap:8px;margin-bottom:8px}.reminder-form input{padding:7px 9px}.reminder-actions{display:flex;gap:7px;flex-wrap:wrap}.reminder-actions button{padding:8px 10px;font-size:12px}.reminder-list{margin-top:8px;gap:6px;max-height:230px;overflow:auto}.reminder-item{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;padding:8px;align-items:center}.reminder-item strong{font-size:13px}.reminder-item p{font-size:12px;margin:2px 0 0}.reminder-item button{padding:6px 8px;font-size:11px}.notes-layout{display:grid;grid-template-columns:minmax(230px,310px) minmax(0,1fr);gap:14px;align-items:start}.note-composer{padding:14px;border:1px solid #d5e5ed;border-radius:13px;background:linear-gradient(145deg,#f4faff,#eaf4f8)}.note-composer-title{display:flex;gap:10px;align-items:center;margin-bottom:12px}.note-mark,.note-card-mark{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:12px;background:#0b5471;color:#fff;font-weight:800;font-size:16px}.note-composer-title strong,.note-composer-title small{display:block}.note-composer-title small{font-size:11px;color:var(--muted);margin-top:2px}.note-composer .formgrid{grid-template-columns:minmax(0,1fr);gap:9px}.note-composer .field.full{grid-column:auto}.note-composer textarea{background:#fff;min-height:94px}.note-composer input[type=file]{font-size:12px;background:#fff}.note-composer button{justify-self:start;padding:8px 12px}.private-note-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:0}.private-note{display:block;position:relative;min-height:130px;padding:13px;border:1px solid #dce8ee;border-radius:13px;background:#fff;box-shadow:0 3px 12px #17384b0a;overflow:hidden}.private-note:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#85b7d6}.private-note-head{display:flex;align-items:center;gap:9px}.note-card-mark{width:32px;height:32px;flex-basis:32px;border-radius:10px;background:#e5f1f7;color:#0b5471;font-size:13px}.private-note-heading{flex:1;min-width:0}.private-note-heading strong{display:block;overflow-wrap:anywhere}.private-note-heading small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.note-delete{padding:5px 7px!important;font-size:11px!important;background:#f6f8f9!important;color:#607582!important}.private-note>p{font-size:13px;line-height:1.5;margin:12px 0 8px;overflow-wrap:anywhere;white-space:pre-wrap}.private-note .note-empty{color:#98a8b1;font-style:italic}.note-attachment{display:flex;align-items:center;gap:6px;border-top:1px solid #edf1f3;padding-top:7px;color:var(--muted);font-size:11px;min-width:0}.note-attachment .linkbtn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-align:left}.notes-empty{grid-column:1/-1;display:flex;flex-direction:column;gap:4px;justify-content:center;min-height:110px;padding:18px;border:1px dashed #cbdce5;border-radius:12px;color:var(--muted);font-size:13px}.notes-empty strong{color:var(--dark)}
@media(max-width:760px){.calendar-layout{grid-template-columns:minmax(0,1fr)}.calendar-main{max-width:360px;width:100%;margin:0 auto}.calendar-side{width:100%}.notes-layout{grid-template-columns:minmax(0,1fr)}.note-composer{max-width:none}.private-note-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}}
@media(max-width:420px){.calendar-day,.calendar-empty{min-height:30px}.calendar-weekdays,.calendar-grid{gap:3px}.calendar-nav strong{min-width:112px}.reminder-item{grid-template-columns:minmax(0,1fr) auto}.reminder-item>[data-reminder-delete]{grid-column:2;grid-row:2}.private-note-list{grid-template-columns:minmax(0,1fr)}}
