body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: hsl(6, 78%, 57%);--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-container-width: fit-content;--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-padding: 14px;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-toast-shadow: 0px 4px 12px rgba(0, 0, 0, .1);--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55);--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;width:var(--toastify-container-width);box-sizing:border-box;color:#fff;display:flex;flex-direction:column}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right);align-items:end}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right);align-items:end}.Toastify__toast{--y: 0;position:relative;touch-action:none;width:var(--toastify-toast-width);min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:var(--toastify-toast-padding);border-radius:var(--toastify-toast-bd-radius);box-shadow:var(--toastify-toast-shadow);max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);z-index:0;display:flex;flex:1 auto;align-items:center;word-break:break-word}@media only screen and (max-width:480px){.Toastify__toast-container{width:100vw;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}.Toastify__toast{--toastify-toast-width: 100%;margin-bottom:0;border-radius:0}}.Toastify__toast-container[data-stacked=true]{width:var(--toastify-toast-width)}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-icon{margin-inline-end:10px;width:22px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;position:absolute;top:6px;right:6px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;z-index:1}.Toastify__toast--rtl .Toastify__close-button{left:6px;right:unset}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:1;opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial}.Toastify__progress-bar--wrp{position:absolute;overflow:hidden;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.navbar{background:var(--bg-primary);border-bottom:1px solid var(--border-color);height:60px;display:flex;justify-content:center;align-items:center;font-size:.875rem;position:sticky;top:0;z-index:999;box-shadow:var(--shadow-sm)}.navbar-container{display:flex;justify-content:space-between;align-items:center;height:100%;width:100%;max-width:1600px;padding:0 1.5rem}.navbar-logo{display:flex;align-items:center;text-decoration:none;color:var(--text-primary);font-size:1.125rem;font-weight:600;cursor:pointer;transition:color .2s}.navbar-logo:hover{color:var(--primary-color)}.logo-icon{font-size:1.25rem;margin-right:.5rem;color:var(--primary-color)}.logo-icon-img{height:32px;width:32px;margin-right:.5rem;object-fit:contain}.logo-text{white-space:nowrap}.nav-menu{display:flex;list-style:none;align-items:center;gap:.25rem;margin:0;padding:0}.nav-item{height:60px;display:flex;align-items:center}.nav-link{color:var(--text-secondary);text-decoration:none;padding:.5rem .875rem;border-radius:var(--radius-md);transition:all .2s;font-weight:500;white-space:nowrap}.nav-link:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.nav-user{margin-left:1rem;padding:0 1rem;border-left:1px solid var(--border-color);display:flex;align-items:center;gap:.75rem}.user-name-link{color:var(--text-secondary);font-weight:500;white-space:nowrap;font-size:.875rem;text-decoration:none;padding:.5rem .875rem;border-radius:var(--radius-md);transition:all .2s;cursor:pointer}.user-name-link:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.btn-logout{background-color:var(--bg-primary);color:var(--text-secondary);border:1px solid var(--border-color);padding:.5rem 1rem;border-radius:var(--radius-md);cursor:pointer;font-weight:500;transition:all .2s;white-space:nowrap;font-size:.875rem}.btn-logout:hover{background-color:var(--bg-tertiary);color:var(--text-primary);border-color:var(--secondary-color)}.admin-dropdown{position:relative}.admin-toggle{background:none;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;color:#ff6b35;font-weight:600}.admin-toggle:hover{background-color:#ff6b351a;color:#ff6b35}.reserva-toggle{background:none;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;color:#2196f3;font-weight:600}.reserva-toggle:hover{background-color:#2196f31a;color:#2196f3}.admin-toggle-jefatura{background:none;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;color:#ff6b35;font-weight:600;padding:.5rem .875rem;border-radius:var(--radius-md);transition:all .2s}.admin-toggle-jefatura:hover{background-color:#ff6b351a;color:#ff6b35}.admin-toggle-only{background:none;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;color:#dc2626;font-weight:600;padding:.5rem .875rem;border-radius:var(--radius-md);transition:all .2s}.admin-toggle-only:hover{background-color:#dc26261a;color:#dc2626}.dropdown-arrow{font-size:.7rem;transition:transform .2s}.admin-dropdown-menu{position:absolute;top:100%;left:0;background:#fff;border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:0 4px 12px #00000026;min-width:180px;list-style:none;padding:.5rem 0;margin:0;z-index:1000;margin-top:.25rem}.admin-dropdown-menu li{margin:0;padding:0}.menu-separator{height:1px;background:var(--border-color);margin:.5rem 0;padding:0!important}.admin-dropdown-link{display:block;padding:.75rem 1.25rem;color:#ff6b35;text-decoration:none;transition:all .2s;font-weight:500}.admin-dropdown-link:hover{background-color:#ff6b351a;color:#ff6b35}.reserva-dropdown-link{display:block;padding:.75rem 1.25rem;color:#2196f3;text-decoration:none;transition:all .2s;font-weight:500}.reserva-dropdown-link:hover{background-color:#2196f31a;color:#2196f3}.admin-link-jefatura{display:block;padding:.75rem 1.25rem;color:#ff6b35;text-decoration:none;transition:all .2s;font-weight:500}.admin-link-jefatura:hover{background-color:#ff6b351a;color:#ff6b35}.admin-link-only{display:block;padding:.75rem 1.25rem;color:#dc2626;text-decoration:none;transition:all .2s;font-weight:500}.admin-link-only:hover{background-color:#dc26261a;color:#dc2626}.admin-link{color:#ff6b35!important;font-weight:600;border-left:3px solid #ff6b35;padding-left:1.5rem!important}.admin-link:hover{background-color:#ff6b351a}.desktop-only{display:flex}.mobile-only,.menu-icon{display:none}@media screen and (max-width:960px){.logo-icon-img{height:28px;width:28px}.menu-icon{display:block;font-size:1.5rem;cursor:pointer;color:var(--text-primary)}.icon-close,.icon-menu{transition:all .2s}.nav-menu{flex-direction:column;width:100%;height:auto;position:absolute;top:60px;left:-100%;opacity:0;transition:all .3s ease;background:var(--bg-primary);border-bottom:1px solid var(--border-color);box-shadow:var(--shadow-md);gap:0;padding:.5rem 0}.nav-menu.active{left:0;opacity:1}.nav-item{width:100%;height:auto;padding:.25rem 0}.nav-link{display:block;text-align:center;padding:.75rem 1rem;width:100%}.nav-user{margin-left:0;padding:.75rem 1rem;border-left:none;border-top:1px solid var(--border-color);justify-content:center}.btn-logout{width:90%;margin:0 auto;display:block}.desktop-only{display:none!important}.mobile-only{display:flex}.admin-link{text-align:center;border-left:none!important;padding-left:1rem!important}.admin-link.admin-link-jefatura{color:#ff6b35!important;border-left:3px solid #ff6b35}.admin-link.admin-link-jefatura:hover{background-color:#ff6b351a}.admin-link.admin-link-only{color:#dc2626!important;border-left:3px solid #dc2626}.admin-link.admin-link-only:hover{background-color:#dc26261a}.admin-dropdown{width:100%;flex-direction:column}.admin-toggle{width:100%;text-align:center;justify-content:center}.admin-dropdown-menu{position:static;width:100%;box-shadow:none;border:none;border-radius:0;margin-top:0;padding:0;background:var(--bg-secondary)}.admin-dropdown-link{text-align:center;padding:.75rem 1rem}.reserva-toggle{width:100%;text-align:center;justify-content:center}.reserva-dropdown-link{text-align:center;padding:.75rem 1rem}.menu-separator{display:none}}@media print{.navbar{display:none!important}}.install-pwa-container{position:fixed;bottom:0;left:0;right:0;z-index:9999;padding:0;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.install-pwa-banner{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:20px;box-shadow:0 -4px 20px #0000004d;position:relative;border-radius:20px 20px 0 0;max-width:600px;margin:0 auto}.install-pwa-close{position:absolute;top:10px;right:10px;background:#fff3;border:none;color:#fff;font-size:20px;width:30px;height:30px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.install-pwa-close:hover{background:#ffffff4d}.install-pwa-content{text-align:center}.install-pwa-icon{font-size:48px;margin-bottom:10px}.install-pwa-title{margin:0 0 10px;font-size:22px;font-weight:700}.install-pwa-subtitle{margin:10px 0;font-size:16px;opacity:.95}.install-pwa-instructions{margin:15px 0}.install-pwa-steps{text-align:left;margin:15px auto;padding:0;list-style:none;max-width:400px}.install-pwa-steps li{margin:12px 0;padding:12px;background:#ffffff26;border-radius:10px;display:flex;align-items:start;gap:10px;font-size:14px;line-height:1.5}.step-number{background:#ffffff4d;color:#fff;font-weight:700;width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:12px}.ios-share-icon{font-size:18px;vertical-align:middle}.install-pwa-button{background:#fff;color:#667eea;border:none;padding:14px 30px;border-radius:25px;font-size:16px;font-weight:700;cursor:pointer;margin:15px 0;transition:transform .2s,box-shadow .2s;box-shadow:0 4px 15px #0003}.install-pwa-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0000004d}.install-pwa-button:active{transform:translateY(0)}.install-pwa-note{font-size:13px;opacity:.9;margin:10px 0}.install-pwa-dismiss{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.3);padding:8px 16px;border-radius:15px;font-size:13px;cursor:pointer;margin-top:10px;transition:background .2s}.install-pwa-dismiss:hover{background:#ffffff1a}@media(max-width:768px){.install-pwa-banner{border-radius:15px 15px 0 0;padding:15px}.install-pwa-title{font-size:18px}.install-pwa-subtitle{font-size:14px}.install-pwa-steps li{font-size:13px;padding:10px}.install-pwa-icon{font-size:36px}}.google-login-container{width:100%;display:flex;justify-content:center;margin:1rem 0}.google-login-container>div{width:100%!important}.google-login-container iframe{width:100%!important;max-width:100%!important;min-width:100%!important}.google-login-container button{width:100%!important;display:flex!important;justify-content:center!important;align-items:center!important;font-family:inherit!important}.login-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:1rem}.login-card{background:#fff;border-radius:20px;box-shadow:0 20px 60px #0000004d;width:100%;max-width:420px;padding:3rem 2.5rem;animation:slideUp .5s ease-out}.login-header{text-align:center;margin-bottom:2.5rem}.login-header h1{color:#333;font-size:2rem;font-weight:700;margin-bottom:.5rem}.login-header p{color:#666;font-size:1rem}.login-form .form-group{margin-bottom:1.5rem}.login-form label{display:block;color:#333;font-weight:600;margin-bottom:.5rem;font-size:.95rem}.login-form input{width:100%;padding:.875rem 1rem;border:2px solid #e0e0e0;border-radius:10px;font-size:1rem;transition:all .3s ease;box-sizing:border-box}.login-form input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.login-form input:disabled{background-color:#f5f5f5;cursor:not-allowed}.forgot-password-link{text-align:right;margin-top:.5rem}.forgot-password-link a{color:#667eea;text-decoration:none;font-size:.875rem;font-weight:500;transition:color .3s ease}.forgot-password-link a:hover{color:#764ba2;text-decoration:underline}.btn-login{width:100%;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:10px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:1rem}.btn-login:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 25px #667eea66}.btn-login:active:not(:disabled){transform:translateY(0)}.btn-login:disabled{opacity:.6;cursor:not-allowed}.login-divider{display:flex;align-items:center;text-align:center;margin:1.5rem 0;color:#999}.login-divider:before,.login-divider:after{content:"";flex:1;border-bottom:1px solid #e0e0e0}.login-divider span{padding:0 1rem;font-weight:500;font-size:.9rem}.login-footer{margin-top:2rem;text-align:center;color:#999;font-size:.875rem}.link-nuevo-usuario{display:block;margin-top:1rem;color:#667eea;text-decoration:none;font-weight:600;font-size:.95rem;transition:color .3s ease}.link-nuevo-usuario:hover{color:#764ba2;text-decoration:underline}.info-android{background:#f0f7ff;border:1px solid #667eea;border-radius:8px;padding:1rem;margin:1.5rem 0;text-align:center}.info-android p{color:#333;margin:0;font-size:.95rem;line-height:1.5}.locked-account-message{text-align:center;padding:2rem 1rem}.lock-icon{font-size:4rem;margin-bottom:1rem;animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.locked-account-message h2{color:#dc2626;margin-bottom:1rem;font-size:1.5rem}.locked-account-message p{color:#666;margin-bottom:.75rem;line-height:1.5}.btn-unlock-page{display:inline-block;margin-top:1.5rem;padding:.875rem 2rem;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;text-decoration:none;border-radius:10px;font-weight:600;transition:all .3s ease}.btn-unlock-page:hover{transform:translateY(-2px);box-shadow:0 10px 25px #f59e0b66}.locked-info{margin-top:1.5rem;font-size:.875rem;color:#999}.attempts-warning{background:#fef3c7;border-left:4px solid #f59e0b;padding:.75rem 1rem;border-radius:8px;color:#92400e;font-weight:600;margin-bottom:1rem;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.captcha-container{margin:1.5rem 0;display:flex;justify-content:center;align-items:center}.modal-content{background:#fff;border-radius:16px;padding:2rem;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideInModal .3s ease-out}.modal-content h2{margin:0 0 1rem;font-size:1.5rem;color:#333;font-weight:700;text-align:center}.modal-content p{margin:.5rem 0;font-size:1rem;color:#666;line-height:1.6;text-align:center}.email-display-modal{font-weight:600;color:#667eea!important;font-size:1.1rem!important;word-break:break-all;margin-bottom:1.5rem!important}.codigo-input-modal{width:100%;padding:1rem;border:2px solid #e0e0e0;border-radius:8px;font-size:2rem!important;text-align:center;letter-spacing:8px;font-weight:600;transition:all .3s ease;box-sizing:border-box;font-family:Courier New,monospace}.codigo-input-modal:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.modal-actions{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.btn-verify,.btn-resend-modal,.btn-cancel-modal{width:100%;padding:.875rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-verify{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-verify:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-verify:disabled{opacity:.6;cursor:not-allowed}.btn-resend-modal{background:#fff;color:#667eea;border:2px solid #667eea}.btn-resend-modal:hover:not(:disabled){background:#667eea;color:#fff}.btn-resend-modal:disabled{opacity:.6;cursor:not-allowed}.btn-cancel-modal{background:#fff;color:#666;border:2px solid #e0e0e0}.btn-cancel-modal:hover:not(:disabled){background:#f5f5f5;border-color:#ccc}.btn-cancel-modal:disabled{opacity:.6;cursor:not-allowed}.verification-hint{margin-top:1.5rem;padding:1rem;background:#f8f9fa;border-radius:8px;border-left:4px solid #667eea}.verification-hint p{margin:.25rem 0;font-size:.875rem;color:#666;text-align:left}@media(max-width:480px){.login-card{padding:2rem 1.5rem}.login-header h1{font-size:1.5rem}.captcha-container{transform:scale(.85);transform-origin:center}.modal-content{padding:1.5rem}.modal-content h2{font-size:1.25rem}.codigo-input-modal{font-size:1.5rem!important;letter-spacing:4px}}.unlock-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#f59e0b,#d97706);padding:1rem}.unlock-card{background:#fff;border-radius:20px;box-shadow:0 20px 60px #0000004d;width:100%;max-width:480px;padding:3rem 2.5rem;animation:slideUp .5s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.unlock-header{text-align:center;margin-bottom:2.5rem}.unlock-icon{font-size:4rem;margin-bottom:1rem;animation:bounce 1s ease-in-out infinite}.unlock-header h1{color:#333;font-size:2rem;font-weight:700;margin-bottom:.5rem}.unlock-header p{color:#666;font-size:1rem}.unlock-form .form-group{margin-bottom:1.5rem}.unlock-form label{display:block;color:#333;font-weight:600;margin-bottom:.5rem;font-size:.95rem}.unlock-form input{width:100%;padding:.875rem 1rem;border:2px solid #e0e0e0;border-radius:10px;font-size:1rem;transition:all .3s ease;box-sizing:border-box}.unlock-form input:focus{outline:none;border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b1a}.unlock-form input:disabled{background-color:#f5f5f5;cursor:not-allowed}.code-input{text-align:center;font-size:2rem!important;font-weight:700;letter-spacing:1rem;font-family:monospace}.btn-unlock{width:100%;padding:1rem;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:none;border-radius:10px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:1rem}.btn-unlock:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 25px #f59e0b66}.btn-unlock:active:not(:disabled){transform:translateY(0)}.btn-unlock:disabled{opacity:.6;cursor:not-allowed}.unlock-actions{margin-top:2rem;display:flex;flex-direction:column;gap:1rem;align-items:center}.btn-resend{padding:.75rem 1.5rem;background:#f3f4f6;color:#374151;border:2px solid #e5e7eb;border-radius:10px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-resend:hover:not(:disabled){background:#e5e7eb;border-color:#d1d5db}.link-back{color:#667eea;text-decoration:none;font-weight:600;transition:all .3s ease}.link-back:hover{color:#5568d3;text-decoration:underline}.unlock-info{margin-top:2rem;padding-top:2rem;border-top:1px solid #e5e7eb;text-align:center}.unlock-info p{color:#6b7280;font-size:.875rem;margin-bottom:.5rem;line-height:1.5}@media(max-width:480px){.unlock-card{padding:2rem 1.5rem}.unlock-header h1{font-size:1.5rem}.code-input{font-size:1.5rem!important;letter-spacing:.75rem}}.recuperar-password-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.recuperar-password-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:500px;width:100%;padding:40px;animation:slideIn .4s ease-out}.recuperar-password-header{text-align:center;margin-bottom:30px}.recuperar-password-icon{font-size:64px;margin-bottom:16px;animation:bounce 2s infinite}.recuperar-password-header h1{font-size:28px;color:#333;margin:0 0 8px;font-weight:700}.recuperar-password-header p{color:#666;font-size:16px;margin:0}.recuperar-password-form{margin-bottom:24px}.recuperar-password-actions{text-align:center;padding:16px 0;border-top:1px solid #e0e0e0;margin-bottom:20px}.recuperar-password-info{background:#f8f9fa;border-radius:8px;padding:20px;border-left:4px solid #667eea}.recuperar-password-info h3{margin:0 0 12px;font-size:16px;color:#333}.recuperar-password-info ol{margin:0;padding-left:20px;color:#666;font-size:14px;line-height:1.8}.recuperar-password-info ol li{margin-bottom:8px}@media(max-width:600px){.recuperar-password-card{padding:24px}.recuperar-password-header h1{font-size:24px}.recuperar-password-icon{font-size:48px}}.verificar-codigo-password-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.verificar-codigo-password-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:500px;width:100%;padding:40px;animation:slideIn .4s ease-out}.verificar-codigo-password-header{text-align:center;margin-bottom:30px}.verificar-codigo-password-icon{font-size:64px;margin-bottom:16px;animation:bounce 2s infinite}.verificar-codigo-password-header h1{font-size:28px;color:#333;margin:0 0 8px;font-weight:700}.verificar-codigo-password-header p{color:#666;font-size:16px;margin:4px 0}.email-display{font-weight:600;color:#667eea;font-size:14px;margin-top:8px}.verificar-codigo-password-form{margin-bottom:24px}.codigo-input{text-align:center;font-size:24px;letter-spacing:8px;font-weight:600}.btn-verificar{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;margin-bottom:12px}.btn-resend{width:100%;padding:12px;background:#fff;color:#667eea;border:2px solid #667eea;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-resend:hover:not(:disabled){background:#667eea;color:#fff}.btn-resend:disabled{opacity:.6;cursor:not-allowed}.verificar-codigo-password-actions{text-align:center;padding:16px 0;border-top:1px solid #e0e0e0;margin-bottom:20px}.verificar-codigo-password-hint{background:#f8f9fa;border-radius:8px;padding:16px;text-align:center;border-left:4px solid #667eea}.verificar-codigo-password-hint p{margin:4px 0;font-size:13px;color:#666}@media(max-width:600px){.verificar-codigo-password-card{padding:24px}.verificar-codigo-password-header h1{font-size:24px}.verificar-codigo-password-icon{font-size:48px}.codigo-input{font-size:20px;letter-spacing:6px}}.nuevo-usuario-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.nuevo-usuario-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:500px;width:100%;padding:40px;animation:slideIn .4s ease-out}.nuevo-usuario-header{text-align:center;margin-bottom:30px}.nuevo-usuario-icon{font-size:64px;margin-bottom:16px;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.nuevo-usuario-header h1{font-size:28px;color:#333;margin:0 0 8px;font-weight:700}.nuevo-usuario-header p{color:#666;font-size:16px;margin:0}.nuevo-usuario-form{margin-bottom:24px}.form-group input{width:100%;padding:12px 16px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:all .3s ease;box-sizing:border-box}.form-hint{display:block;font-size:13px;color:#666;margin-top:6px}.btn-enviar-codigo{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-enviar-codigo:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-enviar-codigo:active:not(:disabled){transform:translateY(0)}.btn-enviar-codigo:disabled{opacity:.6;cursor:not-allowed}.nuevo-usuario-actions{text-align:center;padding:16px 0;border-top:1px solid #e0e0e0;margin-bottom:20px}.link-back{color:#667eea;text-decoration:none;font-weight:500;font-size:14px;transition:color .3s ease}.nuevo-usuario-info{background:#f8f9fa;border-radius:8px;padding:20px;border-left:4px solid #667eea}.nuevo-usuario-info h3{margin:0 0 12px;font-size:16px;color:#333}.nuevo-usuario-info ol{margin:0;padding-left:20px;color:#666;font-size:14px;line-height:1.8}.nuevo-usuario-info ol li{margin-bottom:8px}.info-note{margin:12px 0 0;font-size:13px;color:#666;font-style:italic}@media(max-width:600px){.nuevo-usuario-card{padding:24px}.nuevo-usuario-header h1{font-size:24px}.nuevo-usuario-icon{font-size:48px}}.verificar-codigo-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.verificar-codigo-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:500px;width:100%;padding:40px;animation:slideIn .4s ease-out}.verificar-codigo-header{text-align:center;margin-bottom:30px}.verificar-codigo-icon{font-size:64px;margin-bottom:16px;animation:pulse 2s infinite}.verificar-codigo-header h1{font-size:28px;color:#333;margin:0 0 8px;font-weight:700}.verificar-codigo-header p{color:#666;font-size:16px;margin:8px 0}.verificar-codigo-form{margin-bottom:24px}.codigo-input{width:100%;padding:16px;border:2px solid #e0e0e0;border-radius:8px;font-size:32px;text-align:center;letter-spacing:8px;font-weight:600;transition:all .3s ease;box-sizing:border-box;font-family:Courier New,monospace}.codigo-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.btn-verificar{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-verificar:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-verificar:active:not(:disabled){transform:translateY(0)}.btn-verificar:disabled{opacity:.6;cursor:not-allowed}.verificar-codigo-actions{display:flex;flex-direction:column;gap:12px;padding:16px 0;border-top:1px solid #e0e0e0;margin-bottom:20px}.btn-reenviar{padding:12px;background:#fff;color:#667eea;border:2px solid #667eea;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-reenviar:hover:not(:disabled){background:#667eea;color:#fff}.btn-reenviar:disabled{opacity:.6;cursor:not-allowed}.link-back{color:#667eea;text-decoration:none;font-weight:500;font-size:14px;text-align:center;transition:color .3s ease}.link-back:hover{color:#764ba2;text-decoration:underline}.verificar-codigo-info{background:#f8f9fa;border-radius:8px;padding:20px;border-left:4px solid #667eea}.verificar-codigo-info h3{margin:0 0 12px;font-size:16px;color:#333}.verificar-codigo-info ul{margin:0;padding-left:20px;color:#666;font-size:14px;line-height:1.8}.verificar-codigo-info ul li{margin-bottom:8px}@media(max-width:600px){.verificar-codigo-card{padding:24px}.verificar-codigo-header h1{font-size:24px}.verificar-codigo-icon{font-size:48px}.codigo-input{font-size:24px;letter-spacing:4px}}.verificar-documento-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.verificar-documento-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:800px;width:100%;padding:40px;animation:slideIn .4s ease-out}.verificar-documento-header{text-align:center;margin-bottom:30px}.verificar-documento-icon{font-size:64px;margin-bottom:16px;animation:pulse 2s infinite}.verificar-documento-header h1{font-size:32px;color:#333;margin:0 0 8px;font-weight:700}.verificar-documento-header p{color:#666;font-size:16px;margin:8px 0}.verificar-documento-form{margin-bottom:24px}.codigo-input-search{width:100%;padding:14px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:all .3s ease;box-sizing:border-box;font-family:Courier New,monospace}.codigo-input-search:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.codigo-input-search:disabled{background-color:#f5f5f5;cursor:not-allowed}.input-help{display:block;margin-top:6px;font-size:12px;color:#999;font-style:italic}.btn-verificar-doc,.btn-descargar,.btn-verificar-otro,.btn-nuevo-intento{padding:14px 24px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-verificar-doc{width:100%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-verificar-doc:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-verificar-doc:disabled{opacity:.6;cursor:not-allowed}.btn-descargar{background:#28a745;color:#fff;flex:1}.btn-descargar:hover:not(:disabled){background:#218838;transform:translateY(-2px);box-shadow:0 4px 12px #28a7454d}.btn-verificar-otro{background:#fff;color:#667eea;border:2px solid #667eea;flex:1}.btn-verificar-otro:hover{background:#667eea;color:#fff}.btn-nuevo-intento{background:#667eea;color:#fff;margin-top:20px}.btn-nuevo-intento:hover{background:#764ba2;transform:translateY(-2px)}.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.verificacion-error{text-align:center;padding:40px 20px}.error-icon{font-size:64px;margin-bottom:16px}.verificacion-error h2{color:#dc3545;font-size:24px;margin:0 0 12px}.verificacion-error p{color:#666;font-size:16px;margin-bottom:20px}.verificacion-resultado{animation:fadeIn .5s ease-out}.resultado-header{text-align:center;padding:30px;border-radius:12px;margin-bottom:30px}.resultado-header.success{background:linear-gradient(135deg,#d4edda,#c3e6cb);border:2px solid #28a745}.resultado-icon{font-size:72px;margin-bottom:16px;animation:scaleIn .5s ease-out}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}.resultado-header h2{color:#155724;font-size:28px;margin:0 0 8px;font-weight:700}.resultado-header p{color:#155724;font-size:16px;margin:0;opacity:.8}.documento-info{margin-bottom:30px}.info-section{background:#f8f9fa;border-radius:8px;padding:20px;margin-bottom:16px;border-left:4px solid #667eea}.info-section h3{margin:0 0 16px;font-size:18px;color:#333;font-weight:600}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}.info-item{display:flex;flex-direction:column;gap:4px}.info-item.full-width{grid-column:1 / -1}.info-label{font-size:13px;color:#666;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.info-value{font-size:16px;color:#333;font-weight:600}.hash-value{font-family:Courier New,monospace;font-size:14px;word-break:break-all;background:#fff;padding:8px 12px;border-radius:6px;border:1px solid #dee2e6;color:#495057}.badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.badge.concedido_definitivo{background:#d4edda;color:#155724}.badge.concedido_provisional{background:#fff3cd;color:#856404}.badge.solicitado{background:#d1ecf1;color:#0c5460}.documento-acciones{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.seguridad-info{background:#e7f3ff;border-radius:8px;padding:20px;border-left:4px solid #0066cc}.seguridad-info h4{margin:0 0 12px;font-size:16px;color:#06c;font-weight:600}.seguridad-info ul{margin:0;padding-left:20px;color:#004085;font-size:14px;line-height:1.8}.seguridad-info ul li{margin-bottom:8px}.verificar-info{background:#f8f9fa;border-radius:8px;padding:20px;border-left:4px solid #667eea;margin-bottom:20px}.verificar-info h3{margin:0 0 12px;font-size:16px;color:#333}.verificar-info ul{margin:0;padding-left:20px;color:#666;font-size:14px;line-height:1.8}.verificar-info ul li{margin-bottom:12px}.verificar-info strong{color:#667eea;font-weight:600}.verificar-footer{text-align:center;padding-top:20px;border-top:1px solid #e0e0e0}.link-login{color:#667eea;text-decoration:none;font-weight:500;font-size:14px;transition:color .3s ease}.link-login:hover{color:#764ba2;text-decoration:underline}@media(max-width:768px){.verificar-documento-card{padding:24px}.verificar-documento-header h1{font-size:24px}.verificar-documento-icon{font-size:48px}.resultado-icon{font-size:56px}.resultado-header h2{font-size:22px}.info-grid{grid-template-columns:1fr}.documento-acciones{flex-direction:column}.btn-descargar,.btn-verificar-otro{width:100%}}@media(max-width:600px){.verificar-documento-card{padding:20px}.verificar-documento-header h1{font-size:20px}.info-section{padding:16px}.info-section h3{font-size:16px}}.seleccion-perfil-container{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.seleccion-perfil-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:600px;width:100%;padding:40px;animation:slideIn .4s ease-out}.seleccion-perfil-card.wide{max-width:800px}.seleccion-perfil-header{text-align:center;margin-bottom:30px}.seleccion-perfil-icon{font-size:64px;margin-bottom:16px}.seleccion-perfil-header h1{font-size:28px;color:#333;margin:0 0 8px;font-weight:700}.seleccion-perfil-header p{color:#666;font-size:16px;margin:8px 0}.email-display{font-weight:600;color:#667eea!important;font-size:18px!important;word-break:break-all}.options-grid{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:20px}.option-card{background:#f8f9fa;border:2px solid #e0e0e0;border-radius:12px;padding:24px;cursor:pointer;transition:all .3s ease;text-align:center}.option-card:hover{border-color:#667eea;background:#f0f2ff;transform:translateY(-4px);box-shadow:0 8px 20px #667eea33}.option-icon{font-size:48px;margin-bottom:12px}.option-card h3{font-size:20px;color:#333;margin:0 0 8px;font-weight:600}.option-card p{color:#666;font-size:14px;margin:0;line-height:1.5}.search-box{margin-bottom:20px}.search-box input{width:100%;padding:14px 16px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:all .3s ease;box-sizing:border-box}.search-box input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.profesores-list{max-height:400px;overflow-y:auto;margin-bottom:20px;border:1px solid #e0e0e0;border-radius:8px}.profesor-item{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e0e0e0;cursor:pointer;transition:all .2s ease}.profesor-item:last-child{border-bottom:none}.profesor-item:hover{background:#f0f2ff}.profesor-info h4{margin:0 0 4px;font-size:18px;color:#333;font-weight:600}.profesor-email{margin:0;font-size:14px;color:#666}.profesor-action{font-size:24px;color:#667eea;font-weight:700}.loading-message,.empty-message{text-align:center;padding:40px 20px;color:#666;font-size:16px}.empty-message p,.nuevo-perfil-form,.form-group{margin-bottom:20px}.form-group label{display:block;font-weight:600;color:#333;margin-bottom:8px;font-size:14px}.form-group input{width:100%;padding:14px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:all .3s ease;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.password-hint{background:#fff3cd;border-left:4px solid #ffc107;padding:12px 16px;border-radius:4px;font-size:14px;color:#856404;line-height:1.6;margin-bottom:20px}.btn-submit{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-submit:active:not(:disabled){transform:translateY(0)}.btn-submit:disabled{opacity:.6;cursor:not-allowed}.btn-back{width:100%;padding:12px;background:#fff;color:#667eea;border:2px solid #667eea;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-back:hover:not(:disabled){background:#667eea;color:#fff}.btn-back:disabled{opacity:.6;cursor:not-allowed}.modal-content{background:#fff;border-radius:16px;padding:32px;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideInModal .3s ease-out}.modal-content h2{margin:0 0 16px;font-size:24px;color:#333;font-weight:700}.modal-content p{margin:0 0 20px;font-size:16px;color:#666;line-height:1.6}.modal-actions{display:flex;gap:12px;margin-top:24px}.btn-confirm,.btn-cancel{flex:1;padding:12px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-confirm{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-confirm:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-confirm:disabled{opacity:.6;cursor:not-allowed}.btn-cancel{background:#fff;color:#666;border:2px solid #e0e0e0}.btn-cancel:hover:not(:disabled){background:#f5f5f5;border-color:#ccc}.btn-cancel:disabled{opacity:.6;cursor:not-allowed}@media(min-width:601px){.modal-sustituto{max-width:650px}}@media(max-width:600px){.seleccion-perfil-card{padding:24px}.seleccion-perfil-header h1{font-size:24px}.seleccion-perfil-icon{font-size:48px}.option-icon{font-size:36px}.option-card h3{font-size:18px}.modal-content{padding:24px}.modal-content h2{font-size:20px}.modal-actions{flex-direction:column}}.home-container{min-height:calc(100vh - 70px);padding:3rem 2rem;max-width:1400px;margin:0 auto}.welcome-section{text-align:center;margin-bottom:3rem;animation:fadeIn .6s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.welcome-section h1{font-size:2.5rem;color:#333;margin-bottom:.5rem;font-weight:700}.welcome-section p{font-size:1.2rem;color:#666}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;animation:fadeIn .8s ease-out .2s both}.home-card{background:#fff;border-radius:16px;padding:2.5rem 2rem;text-decoration:none;color:#333;box-shadow:0 4px 20px #00000014;transition:all .3s ease;display:flex;flex-direction:column;align-items:center;text-align:center}.home-card:hover{transform:translateY(-8px);box-shadow:0 12px 40px #667eea33}.card-icon{font-size:3.5rem;margin-bottom:1rem}.home-card h3{font-size:1.5rem;margin-bottom:.5rem;color:#333;font-weight:700}.home-card p{font-size:1rem;color:#666;margin:0}.admin-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.admin-card h3,.admin-card p{color:#fff}.jefatura-card{border:1px solid #ff6b35;background:#fff}.jefatura-card h3,.jefatura-card p{color:#ff6b35}@media(max-width:768px){.home-container{padding:2rem 1rem}.welcome-section h1{font-size:2rem}.welcome-section p{font-size:1rem}.cards-grid{grid-template-columns:1fr;gap:1.5rem}.home-card{padding:1em 1.5rem}.home-card p{display:none}.home-card h3{margin:0;display:flex;align-items:center;gap:.75rem;font-size:1.25rem}.home-card .card-icon{margin:0;font-size:1.6rem}.home-card{flex-direction:row;justify-content:flex-start;text-align:left;gap:.75rem}}.aula-card{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all .2s;cursor:pointer;overflow:hidden;display:flex;flex-direction:column}.aula-card:hover{box-shadow:var(--shadow-md);border-color:var(--primary-color)}.aula-card.aula-no-reservable{opacity:.85;background:var(--bg-secondary)}.aula-card.aula-no-reservable:hover{border-color:var(--text-secondary)}.aula-card-header{background:var(--bg-primary);border-bottom:1px solid var(--border-color);color:var(--text-primary);padding:1rem;display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.header-left{flex:1;min-width:0}.aula-nombre{font-size:1.125rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.aula-badges{display:flex;gap:.5rem;flex-wrap:wrap}.aula-card-header .mobile-info{display:none!important}.aula-card-body.desktop-info{display:block}.badge{padding:.25rem .625rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;border:1px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-secondary)}.badge-ordenadores{border-color:var(--primary-color);background:var(--primary-light);color:var(--primary-color)}.badge-comun{border-color:var(--success);background:#d1fae5;color:var(--success)}.badge-carrito{border-color:#f59e0b;background:#fef3c7;color:#d97706}.badge-no-reservable{border-color:#9ca3af;background:#f3f4f6;color:#6b7280}.aula-card-body{padding:.75rem 1rem;flex:1}.aula-info-compact{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:.5rem;background:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.info-item-compact{display:flex;align-items:center;gap:.5rem}.info-icon{font-size:1.25rem;color:var(--text-secondary)}.info-value{font-weight:600;color:var(--text-primary);font-size:1rem}.aula-info{display:flex;flex-direction:column;gap:.75rem}.info-item{display:flex;align-items:center;gap:.5rem;padding:.625rem;background:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.info-label{font-weight:500;color:var(--text-secondary);font-size:.75rem}.info-value-small{font-size:.75rem}.aula-card-footer{padding:1rem;background:var(--bg-secondary);border-top:1px solid var(--border-color)}.btn-ver-disponibilidad{width:100%;padding:.625rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-ver-disponibilidad:hover{background:var(--primary-hover)}.btn-ver-sesiones{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color)}.btn-ver-sesiones:hover{background:var(--bg-secondary);color:var(--text-primary)}@media(max-width:768px){.aula-card-body.desktop-info{display:none!important}.aula-card-header .mobile-info{display:flex!important;flex-direction:row;gap:.75rem;align-items:center}.mobile-info .info-item-compact{gap:.4rem}.mobile-info .info-icon{font-size:1.1rem}.mobile-info .info-value{font-size:.9rem}.aula-card-header{padding:.75rem;align-items:center}.aula-nombre{font-size:1rem;margin-bottom:.35rem}.aula-card-footer{padding:.75rem}.btn-ver-disponibilidad{padding:.5rem;font-size:.8125rem}.badge{font-size:.7rem;padding:.2rem .5rem}.aula-card-header{border-bottom:none}}@media(max-width:480px){.aula-card-header{padding:.6rem}.aula-nombre{font-size:.95rem}.aula-card-footer{padding:.6rem}}.aulas-page{min-height:calc(100vh - 60px);padding:1.5rem;max-width:1220px;margin:0 auto}.filter-actions{display:flex;gap:.75rem;margin-bottom:1.5rem;flex-wrap:wrap;align-items:center}.btn-filter{padding:.5rem 1rem;border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-filter:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--secondary-color)}.btn-filter.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.btn-primary{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary:hover{background:var(--primary-hover)}.btn-buscar{width:auto;white-space:nowrap}.filter-tabs{display:flex;gap:.75rem;margin-bottom:1.5rem;flex-wrap:wrap;border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.tab{padding:.5rem 1rem;background:transparent;border:none;border-bottom:2px solid transparent;font-size:.875rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.aulas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.no-results{text-align:center;padding:2rem;color:var(--text-secondary);font-size:.875rem;background:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-color)}@media(max-width:768px){.aulas-page{padding:1rem}.page-header h1{font-size:2rem}.filter-actions{flex-direction:column}.btn-filter,.btn-primary{width:100%}.btn-buscar{width:auto}.aulas-grid{grid-template-columns:1fr;gap:.75rem}}.modal-content{background:#fff;border-radius:8px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px #00000026;animation:slideIn .2s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid #e0e0e0}.btn-close-modal{background:none;border:none;font-size:2rem;color:#666;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.btn-close-modal:hover{background:#f5f5f5;color:#1a1a1a}.modal-body{padding:1.5rem}.reserva-info-summary{background:#f8f9fa;border-radius:6px;padding:1rem;margin-bottom:1.5rem;border-left:3px solid #667eea}.info-row{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #e0e0e0}.info-row:last-child{border-bottom:none}.info-row .label{font-weight:500;color:#666;font-size:.9rem}.info-row .value{font-weight:600;color:#1a1a1a;font-size:.9rem}.form-group input,.form-group textarea{width:100%;padding:.75rem;border:1px solid #d0d0d0;border-radius:6px;font-size:.95rem;font-family:inherit;transition:all .2s;box-sizing:border-box}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input.error,.form-group textarea.error{border-color:#dc3545}.error-message{display:block;color:#dc3545;font-size:.85rem;margin-top:.25rem}.modal-actions{display:flex!important;flex-direction:row!important;gap:.75rem;margin-top:1.5rem}.btn-primary,.btn-secondary{flex:1;width:auto!important;padding:.75rem 1.5rem;border-radius:6px;font-weight:500;font-size:.95rem;cursor:pointer;transition:all .2s;border:none}.btn-primary{background:#667eea;color:#fff}.btn-primary:hover{background:#5568d3}.btn-secondary{background:#f5f5f5;color:#666;border:1px solid #d0d0d0}.btn-secondary:hover{background:#e8e8e8}.checkbox-group{background:var(--primary-light);border:2px solid var(--primary-color);border-radius:var(--radius-md);padding:1.25rem;margin-top:.5rem;box-shadow:0 2px 8px #667eea26}.checkbox-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;font-weight:600;color:var(--text-primary);margin-bottom:.75rem;font-size:1rem}.checkbox-label input[type=checkbox]{width:22px;height:22px;cursor:pointer;accent-color:var(--primary-color);flex-shrink:0}.checkbox-label span{-webkit-user-select:none;user-select:none;line-height:1.4}.carrito-info{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border-radius:var(--radius-sm);margin-left:1.5rem}.carrito-info .info-icon{font-size:1.25rem}.carrito-nombre{font-weight:600;color:var(--text-primary)}.carrito-equipos{color:var(--text-secondary);font-size:.875rem}.checkbox-label.disabled{opacity:.6;cursor:not-allowed}.checkbox-label.disabled input[type=checkbox]{cursor:not-allowed}.carrito-no-disponible{margin-top:.75rem;padding:.75rem;background:#fff3cd;border:1px solid #ffc107;border-radius:6px;color:#856404;font-size:.875rem;font-weight:500;display:flex;align-items:center;gap:.5rem}.carrito-disponibilidad-parcial{margin-top:.75rem;padding:.75rem;background:#d1ecf1;border:1px solid #17a2b8;border-radius:6px;color:#0c5460;font-size:.875rem;font-weight:500;display:flex;align-items:center;gap:.5rem;line-height:1.4}.carrito-disponibilidad-completa{margin-top:.75rem;padding:.75rem;background:#d4edda;border:1px solid #28a745;border-radius:6px;color:#155724;font-size:.875rem;font-weight:500;display:flex;align-items:center;gap:.5rem}.fecha-hasta-group input[type=date].error{border-color:#dc3545}@media(max-width:576px){.modal-content{width:95%;max-height:95vh}.modal-header,.modal-body{padding:1rem}}.modal-recurrentes{max-width:600px;max-height:85vh}.loading-container{text-align:center;padding:2rem}.spinner{width:40px;height:40px;margin:0 auto 1rem;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite}.resumen-reservas{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.resumen-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:6px;font-size:.95rem}.resumen-validas{background:#d1fae5;border:1px solid #10b981;color:#065f46}.resumen-conflictos{background:#fee2e2;border:1px solid #ef4444;color:#991b1b}.resumen-icon{font-size:1.25rem;font-weight:700;flex-shrink:0}.resumen-texto{line-height:1.5}.lista-reservas{margin-bottom:1.5rem}.lista-reservas h3{font-size:1rem;font-weight:600;color:#1a1a1a;margin-bottom:.75rem}.reservas-scroll{max-height:400px;overflow-y:auto;border:1px solid #e0e0e0;border-radius:6px;background:#f8f9fa;padding:.5rem}.reserva-item{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;margin-bottom:.5rem;background:#fff;border-radius:6px;border:2px solid transparent;transition:all .2s}.reserva-item:last-child{margin-bottom:0}.reserva-valida{border-color:#10b981}.reserva-valida .reserva-icon{color:#10b981;background:#d1fae5}.reserva-conflicto{border-color:#ef4444;opacity:.7}.reserva-conflicto .reserva-icon{color:#ef4444;background:#fee2e2}.reserva-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;font-size:1.1rem;flex-shrink:0}.reserva-info{flex:1;min-width:0}.reserva-fecha{font-weight:600;color:#1a1a1a;font-size:.95rem;margin-bottom:.25rem}.reserva-horario{color:#666;font-size:.85rem}.reserva-conflicto-motivo{margin-top:.5rem;padding:.5rem;background:#fef2f2;border-left:3px solid #ef4444;border-radius:4px;color:#991b1b;font-size:.8rem;line-height:1.4}.resumen-advertencia{background:#fef3c7;border:1px solid #f59e0b;color:#92400e}.reserva-decision{border-color:#f59e0b;flex-direction:column;padding:1rem}.reserva-info-header{width:100%;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #e0e0e0}.reserva-fecha-hora{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.reserva-problema{padding:.5rem;background:#fef3c7;border-left:3px solid #f59e0b;border-radius:4px;color:#92400e;font-size:.85rem}.reserva-extra-info{margin-top:.5rem;padding:.4rem;background:#dbeafe;border-left:3px solid #3b82f6;border-radius:4px;color:#1e40af;font-size:.8rem}.opciones-decision{display:flex;flex-direction:column;gap:.75rem;width:100%}.opcion-radio{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#f8f9fa;border:2px solid #e0e0e0;border-radius:6px;cursor:pointer;transition:all .2s}.opcion-radio:hover{background:#f1f3f5;border-color:#667eea}.opcion-radio input[type=radio]{width:20px;height:20px;cursor:pointer;accent-color:#667eea}.opcion-radio input[type=radio]:checked+span{font-weight:600;color:#667eea}.opcion-radio span{font-size:.9rem;color:#333;line-height:1.4}.reservas-scroll::-webkit-scrollbar{width:8px}.reservas-scroll::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.reservas-scroll::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.reservas-scroll::-webkit-scrollbar-thumb:hover{background:#555}@media(max-width:576px){.modal-recurrentes{width:95%;max-height:90vh}.resumen-item{font-size:.85rem;padding:.6rem .8rem}.reservas-scroll{max-height:300px}.reserva-item{padding:.6rem}.reserva-fecha{font-size:.9rem}.reserva-horario{font-size:.8rem}}.modal-cancelar-recurrente{max-width:500px;width:95%}.modal-cancelar-recurrente .modal-header{background-color:#dc3545;color:#fff}.modal-cancelar-recurrente .btn-close-modal{color:#fff}.modal-cancelar-recurrente .btn-close-modal:hover{background-color:#fff3}.info-grupo{margin-bottom:1.5rem;padding:1rem;background-color:#f8f9fa;border-radius:8px}.info-grupo p{margin:0 0 1rem;color:#495057}.grupo-stats{display:flex;gap:1.5rem;justify-content:center}.stat{display:flex;flex-direction:column;align-items:center;padding:.5rem 1rem;background-color:#fff;border-radius:6px;box-shadow:0 1px 3px #0000001a}.stat-valor{font-size:1.5rem;font-weight:700;color:#495057}.stat-label{font-size:.75rem;color:#6c757d;text-transform:uppercase}.opciones-cancelacion{margin-bottom:1.5rem}.pregunta{font-weight:600;margin-bottom:1rem;color:#495057}.opcion-radio-card{display:flex;align-items:flex-start;padding:1rem;margin-bottom:.75rem;border:2px solid #dee2e6;border-radius:8px;cursor:pointer;transition:all .2s ease}.opcion-radio-card:hover{border-color:#adb5bd;background-color:#f8f9fa}.opcion-radio-card.selected{border-color:#dc3545;background-color:#fff5f5}.opcion-radio-card input[type=radio]{margin-top:3px;margin-right:.75rem;accent-color:#dc3545}.opcion-content{display:flex;flex-direction:column}.opcion-titulo{font-weight:600;color:#212529;margin-bottom:.25rem}.opcion-descripcion{font-size:.85rem;color:#6c757d}.opcion-peligro .opcion-titulo{color:#dc3545}.opcion-peligro.selected{border-color:#dc3545;background-color:#ffe5e5}.modal-cancelar-recurrente .modal-actions{display:flex!important;flex-direction:row!important;gap:.75rem;padding-top:1rem;border-top:1px solid #dee2e6}.modal-cancelar-recurrente .modal-actions button{flex:1;width:auto!important}.modal-cancelar-recurrente .btn-secondary{padding:.5rem 1rem;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:500}.modal-cancelar-recurrente .btn-secondary:hover{background-color:#5a6268}.modal-cancelar-recurrente .btn-danger{padding:.5rem 1rem;background-color:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:500}.modal-cancelar-recurrente .btn-danger:hover{background-color:#c82333}.modal-cancelar-recurrente .btn-danger-strong{background-color:#a71d2a}.modal-cancelar-recurrente .btn-danger-strong:hover{background-color:#8b1621}.loading-container{display:flex;flex-direction:column;align-items:center;padding:2rem}.spinner{width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid #dc3545;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@media(max-width:480px){.grupo-stats{flex-direction:column;gap:.75rem}}.vista-semanal{width:100%}.tabla-semanal{width:100%;border-collapse:collapse;min-width:800px}.columna-tramo{text-align:left;min-width:140px;max-width:180px}.columna-dia{min-width:150px;text-align:center}.celda-contenido{min-height:70px;height:100%;padding:.75rem;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.25rem;text-align:center}.celda-sesion-habitual{border-left:3px solid var(--warning)!important;background:#fffbeb!important}.celda-primera-linea{margin-bottom:.25rem;line-height:1.2}.celda-materia,.celda-grupo{font-size:.75rem;font-weight:600;color:var(--text-primary);cursor:help}.celda-profesor{font-size:.75rem;color:var(--text-secondary)}.celda-reserva{border-left:3px solid #3b82f6!important;background:#dbeafe!important}.celda-reserva-primera-linea{font-size:.7rem;color:var(--text-primary);font-weight:600;margin-bottom:.25rem;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.celda-libre{background:transparent}.btn-reservar-celda{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s}.celda-libre-text,.celda-loading,.celda-no-info{font-size:.75rem;color:var(--text-secondary);font-style:italic}.tramo-mediodia-row .celda-tramo,.celda-mediodia{background:#f3f4f6}@media(max-width:1024px){.tabla-semanal{min-width:600px;font-size:.85rem}.columna-tramo,.columna-dia{min-width:100px}.celda-contenido{min-height:60px;height:100%;padding:.5rem}}.celda-reserva-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.25rem}.btn-cancelar-reserva-celda{background:transparent;border:none;cursor:pointer;padding:.125rem;font-size:.75rem;opacity:.5;transition:opacity .2s,transform .2s;flex-shrink:0;line-height:1}.btn-cancelar-reserva-celda:hover{opacity:1;transform:scale(1.15)}.vista-listado{width:100%;padding:0}.tabla-listado{width:100%;border-collapse:collapse}.tabla-listado thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.tabla-listado th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem}.tabla-listado th:nth-child(5){text-align:center}.tabla-listado tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.tabla-listado tbody tr:hover{background:var(--bg-secondary)}.tabla-listado td{padding:.875rem 1rem;font-size:.875rem;color:var(--text-primary)}.asistentes-cell,.estado-cell{text-align:center}.badge-estado{padding:.25rem .625rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;white-space:nowrap}.badge-estado.activa{background:var(--primary-light);color:var(--primary-color)}.reserva-card-header{background:linear-gradient(135deg,var(--primary-color),var(--primary-hover));color:#fff;padding:1rem;display:flex;justify-content:space-between;align-items:center}.reserva-pasado .reserva-card-header{background:linear-gradient(135deg,#6b7280,#9ca3af)}.reserva-fecha-info{display:flex;flex-direction:column;gap:.25rem}.reserva-dia{font-size:.875rem;font-weight:600;opacity:.95}.reserva-hora{display:flex;align-items:center;gap:.375rem;font-size:.875rem;font-weight:600;background:#fff3;padding:.375rem .75rem;border-radius:var(--radius-md)}.hora-icon{font-size:1rem}.reserva-asistentes{font-size:.875rem;color:var(--text-secondary);text-align:left}.reserva-card-body{padding:1rem;display:flex;flex-direction:column;gap:.75rem}.reserva-info-row{display:flex;align-items:flex-start;gap:.5rem;font-size:.875rem}.reserva-label{font-weight:600;color:var(--text-secondary);min-width:85px;flex-shrink:0}.reserva-valor{color:var(--text-primary);flex:1;word-break:break-word}.reserva-badge-container{margin-top:.5rem;padding-top:.75rem;border-top:1px solid var(--border-color)}.badge-recurrente{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;background:var(--primary-light);color:var(--primary-color);border-radius:var(--radius-md);font-size:.75rem;font-weight:600;border:1px solid var(--primary-color)}.reserva-estado{margin-top:.5rem;padding-top:.75rem;border-top:1px solid var(--border-color);text-align:center}.estado-pasado{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;background:#f3f4f6;color:#6b7280;border-radius:var(--radius-md);font-size:.75rem;font-weight:600}@media(max-width:768px){.desktop-view{display:none}.mobile-view{display:grid!important;grid-template-columns:1fr!important}.mes-navegacion{gap:.5rem}.btn-mes-nav .btn-nav-text{display:none}.btn-mes-nav{min-width:auto;padding:.5rem .75rem}.selector-mes{flex:1;min-width:0}.reserva-card-header{flex-direction:column;align-items:flex-start;gap:.75rem}.reserva-hora{align-self:flex-start}.reserva-label{min-width:75px}}@media(max-width:480px){.vista-listado{padding:0}.reserva-info-row{flex-direction:column;gap:.25rem}.reserva-label{min-width:auto}}.reserva-aula-page{min-height:calc(100vh - 60px);padding:1.5rem;max-width:1200px;margin:0 auto}.aula-info-header h1{font-size:1.5rem;color:var(--text-primary);margin-bottom:.75rem;font-weight:600}.aula-details{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;font-size:.875rem;color:var(--text-secondary)}.aula-details .badge{padding:.25rem .625rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;border:1px solid var(--border-color)}.badge-ordenadores{background:var(--primary-light);color:var(--primary-color);border-color:var(--primary-color)}.badge-comun{background:#d1fae5;color:var(--success);border-color:var(--success)}.badge-no-reservable{background:#f3f4f6;color:#6b7280;border-color:#9ca3af}.fecha-navegacion{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-color)}.selector-fecha{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:border-color .2s}.selector-fecha:focus{outline:none;border-color:var(--primary-color)}.table-container-reserva{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;margin-bottom:1.5rem}.reserva-table{width:100%;border-collapse:collapse}.reserva-table thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.reserva-table th{padding:1rem;text-align:center;font-weight:600;color:var(--text-primary);font-size:.875rem}.reserva-table th:first-child,.reserva-table th:nth-child(3){text-align:left}.reserva-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.reserva-table tbody tr:hover{background:var(--bg-secondary)}.reserva-table tbody tr.tramo-libre-row{border-left:3px solid var(--success)}.reserva-table tbody tr.tramo-sesion-row{border-left:3px solid var(--warning);background:#fffbeb}.reserva-table tbody tr.tramo-reserva-row{border-left:3px solid var(--primary-color);background:var(--primary-light)}.reserva-table tbody tr.tramo-pasado-row{opacity:.7;background:var(--bg-tertiary);border-left:3px solid #9ca3af}.reserva-table tbody tr.tramo-especial-row{background:var(--bg-tertiary);opacity:.85}.reserva-table td{padding:1rem;color:var(--text-primary);font-size:.875rem}.estado-cell{min-width:120px}.badge-estado.reserva{background:var(--primary-light);color:var(--primary-color)}.badge-estado.sesion{background:#fef3c7;color:var(--warning)}.detalles-cell{max-width:300px}.detalles-info{font-size:.8125rem}.detalles-info div{margin:.25rem 0;color:var(--text-secondary)}.detalles-info strong{color:var(--text-primary);font-weight:600}.acciones-cell{min-width:100px}.tramo-card-compact{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;border:1px solid var(--border-color);transition:all .2s;border-left:3px solid}.tramo-card-compact.libre{border-left-color:var(--success)}.tramo-card-compact.ocupado-sesion{border-left-color:var(--warning);background:#fffbeb}.tramo-card-compact.ocupado-reserva{border-left-color:var(--primary-color);background:var(--primary-light)}.tramo-card-compact.pasado{opacity:.7;background:var(--bg-tertiary);border-left-color:#9ca3af}.tramo-card-compact.tramo-especial{background:var(--bg-tertiary);border-left-color:var(--text-muted);opacity:.85}.tramo-card-compact:hover:not(.pasado):not(.tramo-especial){box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-body-compact{padding:1rem;background:var(--bg-secondary)}.detalles-info-compact{font-size:.8125rem}.detalles-info-compact div{margin:.25rem 0;color:var(--text-secondary)}.detalles-info-compact strong{color:var(--text-primary);font-weight:600}.no-reservable-text{color:var(--text-secondary);font-size:.875rem;font-style:italic;padding:.5rem;display:inline-block}.card-footer-compact.no-reservable{display:flex;justify-content:center;align-items:center;padding:.75rem}.aula-info-content{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;flex-wrap:wrap}.aula-info-left{flex:1;min-width:250px}@media(max-width:768px){.reserva-aula-page{padding:1rem}.aula-info-header h1{font-size:1.25rem}.fecha-navegacion{gap:.5rem}.btn-fecha-nav .btn-nav-text{display:none}.btn-fecha-nav{min-width:auto;padding:.5rem .75rem}.selector-fecha{flex:1;min-width:0}.desktop-view{display:none}.mobile-view{display:flex}.aula-info-content{flex-direction:row;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:nowrap}.aula-info-left{flex:1;min-width:auto}.vista-toggle-compact{gap:.25rem;padding:.1875rem;flex-shrink:0}.btn-vista-compact{padding:.5rem;min-width:2.5rem;justify-content:center}.btn-vista-compact .btn-text{display:none}.btn-vista-compact .btn-icon{font-size:1.125rem}}.detalles-header-con-cancelar{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.btn-cancelar-reserva{background:transparent;border:none;cursor:pointer;padding:.25rem;font-size:1rem;opacity:.6;transition:opacity .2s,transform .2s;flex-shrink:0}.btn-cancelar-reserva:hover{opacity:1;transform:scale(1.1)}.buscar-ordenadores-page{min-height:calc(100vh - 60px);padding:1.5rem;max-width:1200px;margin:0 auto}@media(max-width:768px){.buscar-ordenadores-page{padding:1rem}.page-header-buscar h1{font-size:1.25rem}.calendar-section{padding:.75rem;gap:.5rem}.calendar-section input[type=date]{min-width:150px;font-size:.8rem}.btn-nav-fecha{min-width:40px;height:40px;padding:.4rem}.btn-nav-fecha .btn-nav-text{display:none}.btn-nav-fecha .btn-nav-icon{font-size:1.2rem}.desktop-view{display:none}.mobile-view{display:flex}}.buscar-comunes-page{min-height:calc(100vh - 60px);padding:1.5rem;max-width:1200px;margin:0 auto}.page-header-buscar{margin-bottom:1.5rem}.page-header-buscar h1{font-size:1.5rem;color:var(--text-primary);margin-bottom:.5rem;font-weight:600}.page-header-buscar p{font-size:.875rem;color:var(--text-secondary)}.table-container-buscar{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;margin-bottom:1.5rem}.buscar-table{width:100%;border-collapse:collapse}.buscar-table thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.buscar-table th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.buscar-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.buscar-table tbody tr:hover{background:var(--bg-secondary)}.buscar-table tbody tr.tramo-pasado-row{opacity:.7;background:var(--bg-tertiary)}.buscar-table td{padding:1rem;color:var(--text-primary);font-size:.875rem}.horario-cell{min-width:150px}.horario-info{display:flex;align-items:center;gap:.5rem}.hora-text-table{font-weight:600;font-size:.875rem}.disponibilidad-cell{min-width:120px}.aulas-cell{max-width:500px}.aulas-list-table{display:flex;flex-wrap:wrap;gap:.5rem}.btn-aula-table{padding:.4rem .8rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-aula-table:hover{background:var(--primary-hover);transform:scale(1.05)}.capacidad-badge{font-size:.75rem;opacity:.9;margin-left:.25rem}.sin-aulas-text{color:var(--text-secondary);font-style:italic;font-size:.8125rem}.tramo-card-compact:hover:not(.pasado){box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-body-compact{padding:1rem}.no-disponibles-compact{text-align:center;padding:1rem;color:var(--text-secondary);font-size:.875rem;font-style:italic}.aulas-grid-compact{display:flex;flex-direction:column;gap:.5rem}.btn-aula-mobile{width:100%;padding:.75rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;justify-content:space-between;align-items:center}.btn-aula-mobile:hover{background:var(--primary-hover)}.aula-nombre-mobile{font-weight:600}.capacidad-mobile{font-size:.8rem;opacity:.9}@media(max-width:768px){.buscar-comunes-page{padding:1rem}.page-header-buscar h1{font-size:1.25rem}.calendar-section{padding:.75rem;gap:.5rem}.calendar-section input[type=date]{min-width:150px;font-size:.8rem}.btn-nav-fecha{min-width:40px;height:40px;padding:.4rem}.btn-nav-fecha .btn-nav-text{display:none}.btn-nav-fecha .btn-nav-icon{font-size:1.2rem}.desktop-view{display:none}.mobile-view{display:flex}}.carrito-card{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all .2s;cursor:pointer;overflow:hidden;display:flex;flex-direction:column}.carrito-card:hover{box-shadow:var(--shadow-md);border-color:var(--primary-color)}.carrito-card-header{background:var(--bg-primary);border-bottom:1px solid var(--border-color);color:var(--text-primary);padding:1rem}.carrito-nombre{font-size:1.125rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.carrito-badges{display:flex;gap:.5rem;flex-wrap:wrap}.badge-aula{border-color:var(--warning);background:#fef3c7;color:var(--warning)}.carrito-card-body{padding:1rem;flex:1}.carrito-descripcion{font-size:.875rem;color:var(--text-secondary);margin-bottom:1rem;line-height:1.5}.carrito-info{display:flex;flex-direction:column;gap:.75rem}.info-item{display:flex;flex-direction:row;align-items:baseline;gap:.5rem}.info-icon{font-size:1.25rem}.info-label{font-size:.875rem;color:var(--text-secondary);font-weight:500}.info-value{font-size:1rem;color:var(--text-primary);font-weight:600}.info-value-small{font-size:.875rem}.carrito-card-footer{padding:1rem;background:var(--bg-secondary);border-top:1px solid var(--border-color)}@media(max-width:480px){.carrito-card-header{padding:.875rem}.carrito-nombre{font-size:1rem}.carrito-card-body{padding:.875rem}}.carritos-page{max-width:1220px;margin:0 auto;padding:2rem}.carritos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;margin-top:1.5rem}.no-results{text-align:center;padding:3rem;background:var(--bg-secondary);border-radius:var(--radius-lg);color:var(--text-secondary)}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:1rem}.spinner{width:40px;height:40px;border:4px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin .8s linear infinite}@media(max-width:768px){.carritos-page{padding:1rem}.page-header h1{font-size:1.5rem}.carritos-grid{grid-template-columns:1fr;gap:1rem}}.vista-semanal-carrito{width:100%}.semana-navegacion{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-color)}.btn-semana-nav{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-semana-nav:hover{background:var(--primary-hover);transform:scale(1.05)}.selector-semana{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:border-color .2s}.selector-semana:focus{outline:none;border-color:var(--primary-color)}.tabla-semanal-container{overflow-x:auto;background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--border-color)}.tabla-semanal{width:100%;border-collapse:collapse;table-layout:fixed}.tabla-semanal thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color);position:sticky;top:0;z-index:10}.tabla-semanal th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem}.columna-tramo{text-align:left;max-width:180px;width:18%}.columna-dia{width:16.4%;text-align:center}.dia-nombre{font-size:.9rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem;text-align:center}.dia-fecha{font-size:.75rem;color:var(--text-secondary);font-weight:400;text-align:center}.tabla-semanal tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.tabla-semanal tbody tr:hover{background:var(--bg-secondary)}.celda-tramo{padding:.75rem;background:var(--bg-secondary);font-weight:500;vertical-align:top}.tramo-horario-comun{font-size:.875rem;color:var(--text-primary);font-weight:600;margin-bottom:.25rem}.tramo-horario-fp{font-size:.875rem;color:var(--text-secondary);margin-bottom:.25rem;font-weight:600}.tramo-nombre{font-size:.7rem;color:var(--text-secondary);font-weight:400;margin-top:.25rem}.sesion-nombre{font-size:.7rem;color:var(--text-secondary);margin-top:.125rem}.celda-dia{padding:0;vertical-align:top;text-align:center;height:1px}.celda-contenido-carrito{min-height:85px;height:100%;padding:.75rem;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.375rem;text-align:center}.celda-libre-carrito{background:transparent}.celda-parcial{border-left:3px solid var(--warning);background:#fffbeb}.celda-completo{border-left:3px solid #ef4444;background:#fee2e2}.celda-sesion-habitual{border-left:3px solid #3b82f6;background:#dbeafe}.celda-sesion-info{display:flex;align-items:center;justify-content:center;gap:.25rem;margin-bottom:.25rem}.sesion-badge-small{font-size:.875rem}.sesion-text-small{font-size:.75rem;font-weight:600;color:#1d4ed8}.celda-profesor-mini{font-size:.7rem;font-weight:600;color:var(--text-primary);text-align:center;white-space:normal;word-break:break-word;max-width:100%}.celda-grupo-mini{font-size:.65rem;color:var(--text-secondary);text-align:center;white-space:normal;word-break:break-word;max-width:100%}.celda-equipos-info{font-size:.8125rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.celda-reservas-mini{font-size:.7rem;color:var(--text-secondary);width:100%}.reserva-mini-item{text-align:left;padding:.125rem 0;white-space:normal;word-break:break-word}.profesor-nombre{font-weight:600;color:var(--primary-color)}.reserva-mini-mas{font-size:.65rem;color:var(--text-tertiary);font-style:italic;margin-top:.125rem}.btn-reservar-celda{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s;margin-top:.25rem}.btn-reservar-celda:hover{background:var(--primary-hover);transform:scale(1.05)}.btn-reservar-celda-mini{padding:.375rem .75rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.7rem;font-weight:500;cursor:pointer;transition:all .2s;margin-top:.25rem}.btn-reservar-celda-mini:hover{background:var(--primary-hover)}.celda-pasado{opacity:.6;background:var(--bg-tertiary);cursor:not-allowed;position:relative}.celda-pasado:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(0,0,0,.02) 10px,rgba(0,0,0,.02) 20px);pointer-events:none}.celda-libre-text{font-size:.8rem;color:var(--text-secondary);font-style:italic}.celda-loading,.celda-no-info{font-size:.75rem;color:var(--text-secondary);font-style:italic;height:100%;display:flex;align-items:center;justify-content:center;padding:.75rem}.tramo-mediodia-row{background:#f3f4f6;border-top:2px solid #9ca3af;border-bottom:2px solid #9ca3af}.celda-mediodia-unida{background:#f3f4f6;padding:0}.celda-mediodia-content{color:#6b7280;font-weight:600;font-size:.875rem;text-align:center;padding:.75rem}@media(max-width:1024px){.tabla-semanal{min-width:600px;font-size:.85rem}.columna-tramo{min-width:100px}.columna-dia{min-width:120px}.celda-contenido-carrito{min-height:70px;padding:.5rem}}@media(max-width:768px){.semana-navegacion{gap:.5rem}.btn-semana-nav .btn-nav-text{display:none}.btn-semana-nav{min-width:auto;padding:.5rem .75rem}.selector-semana{flex:1;min-width:0}}.reserva-mini-con-cancelar{display:flex;justify-content:space-between;align-items:center;gap:.25rem}.reserva-mini-info{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.btn-cancelar-reserva-celda-mini{background:transparent;border:none;cursor:pointer;padding:.125rem;font-size:.625rem;opacity:.5;transition:opacity .2s,transform .2s;flex-shrink:0;line-height:1}.btn-cancelar-reserva-celda-mini:hover{opacity:1;transform:scale(1.15)}.vista-listado-carrito{width:100%;padding:0}.mes-navegacion{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-color)}.btn-mes-nav{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-mes-nav:hover:not(:disabled){background:var(--primary-hover);transform:scale(1.05)}.btn-mes-nav:disabled{background:var(--bg-tertiary);color:var(--text-secondary);cursor:not-allowed;opacity:.5}.selector-mes{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:border-color .2s;background:var(--bg-primary);color:var(--text-primary)}.selector-mes:focus{outline:none;border-color:var(--primary-color)}.tabla-listado-container{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--border-color);overflow-x:auto}.tabla-listado-carrito{width:100%;border-collapse:collapse}.tabla-listado-carrito thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.tabla-listado-carrito th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem}.tabla-listado-carrito th:nth-child(5){text-align:center}.tabla-listado-carrito tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.tabla-listado-carrito tbody tr:hover{background:var(--bg-secondary)}.tabla-listado-carrito td{padding:.875rem 1rem;font-size:.875rem;color:var(--text-primary)}.hora-cell{white-space:nowrap;color:var(--text-secondary)}.profesor-cell{max-width:200px}.motivo-cell{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.equipos-cell{text-align:center;font-weight:600;color:var(--primary-color)}.aula-cell{white-space:nowrap;color:var(--text-secondary)}.reserva-row-pasado{opacity:.6;background:var(--bg-tertiary)}.reserva-row-recurrente{border-left:3px solid var(--primary-color)}.badge-recurrente-tabla{margin-left:.375rem;font-size:.85rem}.reservas-grid{display:grid;grid-template-columns:1fr;gap:1rem}.reserva-card{background:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);overflow:hidden;transition:all .2s}.reserva-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.reserva-card.reserva-pasado{opacity:.7;background:var(--bg-secondary)}.reserva-card.reserva-pasado:hover{transform:none}.reserva-card.reserva-recurrente{border-left:4px solid var(--primary-color)}.reserva-card-header-compact{background:linear-gradient(135deg,var(--primary-color),var(--primary-hover));color:#fff;padding:.75rem;display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;font-weight:500}.reserva-pasado .reserva-card-header-compact{background:linear-gradient(135deg,#6b7280,#9ca3af)}.reserva-fecha-hora{flex:1}.badge-recurrente-compact{font-size:1rem;margin-left:.5rem}.reserva-card-body-compact{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.reserva-profesor-motivo{font-size:.9375rem;font-weight:500;color:var(--text-primary);line-height:1.4}.reserva-equipos{font-size:.875rem;color:var(--text-secondary);text-align:left;font-weight:600}.reserva-aula{font-size:.8125rem;color:var(--text-tertiary);text-align:left;font-style:italic}.listado-vacio{text-align:center;padding:3rem 1.5rem;background:var(--bg-primary);border-radius:var(--radius-lg);border:2px dashed var(--border-color)}.vacio-icon{font-size:3rem;margin-bottom:1rem}.listado-vacio h3{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin-bottom:.75rem}.listado-vacio p{font-size:.875rem;color:var(--text-secondary);margin:.5rem 0;line-height:1.6}.vacio-hint{font-size:.8125rem;color:var(--text-tertiary);font-style:italic;margin-top:1rem}@media(max-width:768px){.desktop-view{display:none}.mobile-view{display:grid!important;grid-template-columns:1fr!important}.mes-navegacion{gap:.5rem}.btn-mes-nav .btn-nav-text{display:none}.btn-mes-nav{min-width:auto;padding:.5rem .75rem}.selector-mes{flex:1;min-width:0}}@media(max-width:480px){.vista-listado-carrito{padding:0}}.acciones-cell{text-align:center;width:50px}.btn-cancelar-reserva-listado{background:transparent;border:none;cursor:pointer;padding:.25rem;font-size:1rem;opacity:.6;transition:opacity .2s,transform .2s}.btn-cancelar-reserva-listado:hover{opacity:1;transform:scale(1.1)}.reserva-card-badges{display:flex;align-items:center;gap:.5rem}.btn-cancelar-reserva-card{background:transparent;border:none;cursor:pointer;padding:.25rem;font-size:1rem;opacity:.6;transition:opacity .2s,transform .2s}.btn-cancelar-reserva-card:hover{opacity:1;transform:scale(1.1)}.reserva-carrito-page{min-height:calc(100vh - 60px);padding:1.5rem;max-width:1200px;margin:0 auto}.page-header-reserva{margin-bottom:1.5rem}.carrito-info-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;flex-wrap:wrap}.header-left{flex:1;min-width:280px}.carrito-info-header h1{font-size:1.5rem;color:var(--text-primary);margin-bottom:.75rem;font-weight:600}.carrito-info-header p{color:var(--text-secondary);margin-bottom:.5rem}.carrito-details{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;font-size:.875rem;color:var(--text-secondary)}.vista-toggle-compact{display:flex;gap:.375rem;align-items:center;background:var(--bg-secondary);padding:.25rem;border-radius:var(--radius-md);border:1px solid var(--border-color)}.btn-vista-compact{padding:.5rem .875rem;background:transparent;color:var(--text-primary);border:none;border-radius:var(--radius-sm);font-size:.8125rem;font-weight:500;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.375rem;white-space:nowrap}.btn-vista-compact .btn-icon{font-size:1rem;line-height:1}.btn-vista-compact .btn-text{font-size:.8125rem}.btn-vista-compact:hover{background:var(--bg-tertiary);color:var(--primary-color)}.btn-vista-compact.activo{background:var(--primary-color);color:#fff;box-shadow:0 1px 2px #0000001a}.btn-vista-compact.activo:hover{background:var(--primary-hover)}.calendar-section{background:var(--bg-primary);padding:1rem;border-radius:var(--radius-lg);border:1px solid var(--border-color);margin-bottom:1.5rem;display:flex;align-items:center;justify-content:center;gap:1rem}.calendar-section label{display:block;font-weight:500;color:var(--text-primary);margin-bottom:.5rem;font-size:.875rem}.calendar-section input[type=date]{flex:0 0 auto;min-width:200px;max-width:250px;padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:border-color .2s}.calendar-section input[type=date]:focus{outline:none;border-color:var(--primary-color)}.btn-nav-fecha{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.25rem;white-space:nowrap}.btn-nav-fecha:hover{background:var(--primary-hover);transform:scale(1.05)}.btn-nav-fecha .btn-nav-icon{font-size:1rem}.btn-nav-fecha .btn-nav-text{font-size:.875rem}.no-disponibilidad{background:var(--bg-primary);padding:2rem;border-radius:var(--radius-lg);border:1px solid var(--border-color);text-align:center;color:var(--text-secondary);margin:1rem 0}.no-disponibilidad p{font-size:.875rem;margin:.5rem 0}.no-disponibilidad p:first-child{font-weight:600;color:var(--text-primary);font-size:1rem}.section-title{font-size:1.25rem;color:var(--text-primary);margin-bottom:1rem;font-weight:600}.table-container-carrito{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;margin-bottom:1.5rem}.carrito-table{width:100%;border-collapse:collapse}.carrito-table thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.carrito-table th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.carrito-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.carrito-table tbody tr:hover:not(.tramo-especial-row){background:var(--bg-secondary)}.carrito-table tbody tr.tramo-pasado-row{opacity:.7;background:var(--bg-tertiary)}.carrito-table tbody tr.tramo-especial-row{background:var(--bg-tertiary);opacity:.85}.carrito-table td{padding:1rem;color:var(--text-primary);font-size:.875rem}.horario-cell{display:flex;align-items:center;gap:.5rem;font-weight:600}.hora-icon{font-size:1.2rem}.sesion-nombre-small{font-size:.75rem;color:var(--text-secondary);font-weight:400}.mediodia-text{text-align:center;color:var(--text-secondary);font-style:italic}.badge-estado.disponible{background:#d1fae5;color:var(--success)}.badge-estado.completo{background:#fee2e2;color:var(--error)}.badge-estado.pasado{background:#f3f4f6;color:#6b7280}.disponibilidad-cell{font-weight:500}.reservas-cell{max-width:300px}.reservas-list-table{display:flex;flex-direction:column;gap:.25rem}.reserva-mini{font-size:.8125rem;color:var(--text-secondary);display:flex;align-items:center;gap:.25rem}.reserva-bullet{color:var(--primary-color);font-size:1.2rem;line-height:1}.reserva-equipos-text{color:var(--text-secondary);font-weight:500}.btn-reservar-table{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-reservar-table:hover:not(:disabled){background:var(--primary-hover);transform:scale(1.05)}.btn-reservar-table:disabled{opacity:.6;cursor:not-allowed}.tramos-cards{display:flex;flex-direction:column;gap:1rem}.tramo-card-compact{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;border:1px solid var(--border-color);transition:all .2s}.tramo-card-compact.pasado{opacity:.7;background:var(--bg-tertiary)}.tramo-card-compact.tramo-especial{background:var(--bg-tertiary);opacity:.85}.tramo-card-compact:hover:not(.tramo-especial):not(.pasado){box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-header-compact{padding:.75rem 1rem;background:var(--bg-secondary);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.horario-compact{display:flex;align-items:center;gap:.5rem}.hora-text-compact{font-weight:600;font-size:.9rem}.sesion-nombre-compact{font-size:.7rem;color:var(--text-secondary)}.badge-especial{padding:.35rem .75rem;background:var(--bg-tertiary);color:var(--text-secondary);border-radius:15px;font-weight:600;font-size:.7rem;font-style:italic}.card-body-compact{padding:1rem;display:flex;flex-direction:column;gap:.75rem}.equipos-info-compact{font-size:.875rem;color:var(--text-secondary);padding:.5rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.reservas-info-compact{padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.reservas-header-compact{font-weight:600;font-size:.8125rem;color:var(--text-primary);margin-bottom:.5rem}.reserva-item-compact{font-size:.8125rem;color:var(--text-secondary);margin-top:.25rem;display:flex;flex-wrap:wrap;gap:.25rem}.reserva-separator{color:var(--border-color)}.card-footer-compact{padding:.75rem 1rem;background:var(--bg-secondary);border-top:1px solid var(--border-color)}.btn-reservar-mobile{width:100%;padding:.7rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-reservar-mobile:hover:not(:disabled){background:var(--primary-hover)}.btn-reservar-mobile:disabled{opacity:.6;cursor:not-allowed}.modal-content{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:500px;max-height:90vh;overflow-y:auto;padding:1.5rem}.modal-content h2{margin-top:0;margin-bottom:1rem;color:var(--text-primary)}.modal-info{background:var(--bg-secondary);padding:1rem;border-radius:var(--radius-md);margin-bottom:1rem}.modal-info p{margin:.5rem 0;font-size:.875rem}.form-group{margin-bottom:1rem}.form-group textarea,.form-group input{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;font-family:inherit;transition:all .2s}.form-group textarea:focus,.form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a}.form-group small{display:block;margin-top:.375rem;color:var(--text-secondary);font-size:.8125rem}.aviso-equipos-limitados{margin-top:.75rem;padding:.75rem;background:#fff3cd;border:1px solid #ffc107;border-left:4px solid #ff9800;border-radius:var(--radius-md);color:#856404;font-size:.8125rem;line-height:1.5}.modal-actions{display:flex!important;flex-direction:row!important;gap:1rem;margin-top:1.5rem}.btn-modal-cancel{flex:1;padding:.75rem;border:1px solid #d0d0d0;border-radius:var(--radius-md);background:#f5f5f5;color:#666;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-modal-cancel:hover:not(:disabled){background:#e0e0e0}.btn-modal-cancel:disabled{opacity:.6;cursor:not-allowed}.btn-modal-confirm{flex:1;padding:.75rem;border:none;border-radius:var(--radius-md);background:var(--primary-color);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-modal-confirm:hover{background:var(--primary-hover)}.btn-modal-confirm:disabled{opacity:.6;cursor:not-allowed}.loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:200px;color:var(--text-secondary)}.error-container{text-align:center;padding:3rem;color:var(--error)}.checkbox-label{display:flex;align-items:center;gap:.75rem;font-weight:500;cursor:pointer;font-size:.9rem}.checkbox-label input[type=checkbox]{width:auto;cursor:pointer;transform:scale(1.1)}.fecha-hasta-group{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e0e0e0}.fecha-hasta-group label{display:block;font-weight:500;color:#1a1a1a;margin-bottom:.5rem;font-size:.9rem}.fecha-hasta-group input[type=date]{width:100%;padding:.75rem;border:1px solid #d0d0d0;border-radius:6px;font-size:.95rem;font-family:inherit;transition:all .2s;box-sizing:border-box;background:#fff}.fecha-hasta-group input[type=date]:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.info-recurrentes{margin-top:.5rem;padding:.5rem;background:#e8f0fe;border-left:3px solid #667eea;border-radius:4px;color:#4a5568;font-size:.85rem;line-height:1.5}@media(max-width:768px){.reserva-carrito-page{padding:1rem}.carrito-info-header{flex-direction:row;align-items:flex-start;justify-content:space-between}.header-left{flex:1;min-width:auto}.carrito-info-header h1{font-size:1.25rem}.section-title{font-size:1.1rem}.vista-toggle-compact{gap:.25rem;padding:.1875rem}.btn-vista-compact{padding:.5rem;min-width:2.5rem;justify-content:center}.btn-vista-compact .btn-text{display:none}.btn-vista-compact .btn-icon{font-size:1.125rem}.calendar-section{padding:.75rem;gap:.5rem}.calendar-section input[type=date]{min-width:150px;font-size:.8rem}.btn-nav-fecha{min-width:40px;height:40px;padding:.4rem}.btn-nav-fecha .btn-nav-text{display:none}.btn-nav-fecha .btn-nav-icon{font-size:1.2rem}.desktop-view{display:none}.mobile-view{display:flex}.modal-content{width:95%;padding:1rem}}.reserva-mini-con-cancelar{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.reserva-mini-info{flex:1;min-width:0}.reserva-item-con-cancelar{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.reserva-item-info{flex:1;min-width:0}.btn-cancelar-reserva-mini{background:transparent;border:none;cursor:pointer;padding:.125rem .25rem;font-size:.875rem;opacity:.5;transition:opacity .2s,transform .2s;flex-shrink:0}.btn-cancelar-reserva-mini:hover{opacity:1;transform:scale(1.1)}.mis-reservas-page{min-height:calc(100vh - 70px);padding:2rem;max-width:1200px;margin:0 auto}.reservas-section{margin-bottom:3rem}.reservas-section h2{font-size:1.8rem;color:var(--text-primary);margin-bottom:1.5rem;font-weight:700}.no-reservas{text-align:center;padding:3rem;background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);color:var(--text-secondary);font-size:1.1rem}.admin-table tbody tr:hover{background:var(--bg-secondary)}.admin-table tbody tr.futura{border-left:3px solid #4caf50}.admin-table tbody tr.pasada{border-left:3px solid #9e9e9e;opacity:.85}.recurso-cell{min-width:200px}.recurso-info{display:flex;align-items:center;gap:.5rem}.recurso-icon{font-size:1.2rem}.recurso-nombre{font-weight:600;display:block}.carrito-extra{display:block;font-size:.75rem;color:var(--primary-color);margin-top:.15rem;font-weight:500}.badge-tipo{padding:.35rem .75rem;border-radius:15px;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.3px;display:inline-block}.badge-tipo.aula{background:#e3f2fd;color:#1976d2}.badge-tipo.carrito{background:#f3e5f5;color:#7b1fa2}.badge-tipo.aula-carrito{background:linear-gradient(135deg,#e3f2fd,#f3e5f5);color:#5e35b1;border:1px solid #9575cd}.btn-cancelar-table{padding:.5rem 1rem;background:#f44336;color:#fff;border:none;border-radius:var(--radius-md);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-cancelar-table:hover:not(:disabled){background:#d32f2f;transform:scale(1.05)}.btn-cancelar-table:disabled{opacity:.6;cursor:not-allowed}.reserva-card{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:1rem;transition:all .2s;border:1px solid var(--border-color)}.reserva-card.futura{border-left:4px solid #4caf50}.reserva-card.pasada{border-left:4px solid #9e9e9e;opacity:.85}.reserva-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-row-action{grid-template-columns:1fr;margin-top:.25rem}.card-item.full-width{grid-column:1 / -1}.card-horario-small{font-size:.8rem}.carrito-extra-mobile{display:block;font-size:.75rem;color:var(--primary-color);margin-top:.15rem;font-weight:500}.btn-cancelar-mobile{width:100%;padding:.7rem;background:#f44336;color:#fff;border:none;border-radius:var(--radius-md);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-cancelar-mobile:hover:not(:disabled){background:#d32f2f}.btn-cancelar-mobile:disabled{opacity:.6;cursor:not-allowed}.loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 70px);color:var(--text-secondary)}.spinner{border:4px solid var(--border-color);border-top:4px solid var(--primary-color);border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite;margin-bottom:1rem}.badge-recurrente{display:inline-flex;align-items:center;justify-content:center;margin-left:.5rem;padding:.25rem .5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:12px;font-size:.75rem;font-weight:600;white-space:nowrap;box-shadow:0 2px 4px #667eea4d;cursor:help;transition:transform .2s}.badge-recurrente:hover{transform:scale(1.05)}@media(max-width:768px){.mis-reservas-page{padding:1rem}.page-header h1{font-size:2rem}.reservas-section h2{font-size:1.5rem}.desktop-view{display:none}.mobile-view{display:flex}}.mi-perfil-page{min-height:calc(100vh - 70px);padding:2rem;max-width:900px;margin:0 auto}.page-header-perfil{text-align:center;margin-bottom:3rem}.page-header-perfil h1{font-size:2.5rem;color:#333;margin-bottom:.5rem;font-weight:700}.page-header-perfil p{font-size:1.1rem;color:#666}.perfil-container{display:flex;flex-direction:column;gap:2rem}.perfil-card{background:#fff;border-radius:16px;box-shadow:0 4px 20px #00000014;padding:3rem}.perfil-avatar{display:flex;justify-content:center;margin-bottom:2rem}.avatar-circle{width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:3rem;color:#fff;font-weight:700;box-shadow:0 8px 30px #667eea4d}.perfil-info{display:flex;flex-direction:column;gap:2rem}.info-group{display:flex;flex-direction:column;gap:.5rem}.info-group label{font-weight:700;color:#666;font-size:.9rem;text-transform:uppercase;letter-spacing:.5px}.info-value{font-size:1.2rem;color:#333;font-weight:500;margin:0}.info-group input{padding:.875rem 1rem;border:2px solid #e0e0e0;border-radius:10px;font-size:1.1rem;transition:all .3s ease;font-family:inherit}.info-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.info-note{font-size:.85rem;color:#999;font-style:italic}.roles-list{display:flex;gap:1rem;flex-wrap:wrap}.role-badge{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:25px;font-weight:600;font-size:1rem}.status-badge{padding:.75rem 1.5rem;border-radius:25px;font-weight:700;font-size:1rem;display:inline-block}.status-badge.activo{background:#e8f5e9;color:#2e7d32}.status-badge.inactivo{background:#ffebee;color:#c62828}.perfil-actions{margin-top:2rem;display:flex;justify-content:center}.btn-editar{padding:1rem 2rem;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:none;border-radius:10px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-editar:hover{transform:translateY(-2px);box-shadow:0 8px 25px #f59e0b66}.edit-actions{display:flex;gap:1rem}.btn-guardar{padding:1rem 2rem;background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;border:none;border-radius:10px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-guardar:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #4caf5066}.btn-guardar:disabled{opacity:.6;cursor:not-allowed}.btn-cancelar-edit{padding:1rem 2rem;background:#f5f5f5;color:#666;border:2px solid #e0e0e0;border-radius:10px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-cancelar-edit:hover:not(:disabled){background:#e0e0e0}.btn-cancelar-edit:disabled{opacity:.6;cursor:not-allowed}.perfil-nota{background:#fff;border-radius:16px;box-shadow:0 4px 20px #00000014;padding:2rem;border-left:4px solid #667eea}.perfil-nota h3{font-size:1.3rem;color:#333;margin-bottom:1rem}.perfil-nota p{color:#666;margin:.75rem 0;line-height:1.6}.codigo-impresion{display:flex;align-items:center;gap:10px}.codigo-text{font-family:Courier New,monospace;font-size:1.1rem;font-weight:600;color:#2c3e50;background:#e8f4fd;padding:8px 16px;border-radius:6px;border:2px solid #3498db;letter-spacing:1px}.codigo-icon{font-size:1.5rem}.sin-codigo{color:#999;font-style:italic}@media(max-width:768px){.mi-perfil-page{padding:1rem}.page-header-perfil h1{font-size:2rem}.perfil-card{padding:2rem 1.5rem}.avatar-circle{width:100px;height:100px;font-size:2.5rem}.edit-actions{flex-direction:column}.btn-guardar,.btn-cancelar-edit,.btn-editar{width:100%}}.mi-horario-page{padding:20px;max-width:1600px;margin:0 auto;--sesion-lectiva-bg: #b8daff;--sesion-guardia-bg: #fff3cd;--sesion-reunion-bg: #f8f9fa;--sesion-complementaria-bg: #d4edda;--sesion-funcion-bg: #e7d4f5;--sesion-lectiva-text: #667eea;--sesion-guardia-text: #ff8c00;--sesion-reunion-text: #138496;--sesion-complementaria-text: #28a745;--sesion-funcion-text: #9c27b0}.nombre-profesor-print{display:none}.page-header-horario{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding:0 10px}.horario-jefatura-page .page-header-horario{flex-direction:column;align-items:stretch}.horario-jefatura-page .horarios-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.horario-jefatura-page .horarios-header h1{margin-right:auto}.horario-jefatura-page .horarios-controls{display:flex;align-items:center;gap:12px;flex-wrap:nowrap}.horario-jefatura-page .horarios-selects{display:flex;gap:10px;align-items:center}.horario-jefatura-page .horarios-selects .searchable-select-wrapper{min-width:200px;width:200px}.horario-jefatura-page .horarios-checks{display:flex;align-items:center;gap:12px}.horario-jefatura-page .mobile-only{display:none}.horario-jefatura-page .desktop-only{display:flex}.horario-header-row{display:flex;align-items:center;gap:16px;justify-content:space-between;width:100%}.page-header-horario h1{font-size:2.5em;color:#333;margin:0}.horario-filtros{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.horario-selects{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.horario-selects select{padding:6px 12px;border-radius:6px;border:1px solid var(--border-color, #ddd);font-size:.9em;min-width:180px;background:var(--bg-primary, #fff);color:var(--text-primary, #333)}.horario-controles{display:flex;align-items:center;gap:20px}.controles-recreos{display:flex;gap:10px;align-items:center}.checkbox-label{display:flex;align-items:center;gap:3px;cursor:pointer;font-size:.75em;color:#999;background:none;border:none;padding:0;margin:0}.checkbox-label input[type=checkbox]{width:12px;height:12px;cursor:pointer;margin:0}.checkbox-label span{-webkit-user-select:none;user-select:none;white-space:nowrap;font-weight:400}.controles-recreos .checkbox-label span{font-weight:400}.horarios-checks{display:flex;gap:10px;align-items:center}.horarios-checks .checkbox-label{display:flex!important;align-items:center!important;gap:3px!important;cursor:pointer!important;font-size:.9em!important;color:#999!important;background:none!important;border:none!important;padding:0!important;margin:0!important;border-radius:0!important;box-shadow:none!important;transition:none!important}.horarios-checks .checkbox-label input[type=checkbox]{width:12px!important;height:12px!important;cursor:pointer!important;margin:0!important}.horarios-checks .checkbox-label span{-webkit-user-select:none!important;user-select:none!important;white-space:nowrap!important;font-weight:700!important}.btn-imprimir{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:8px 12px;border-radius:6px;font-size:1.2em;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 5px #00000026;display:flex;align-items:center;justify-content:center}.btn-imprimir:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003}.btn-imprimir:active{transform:translateY(0)}.horario-container{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:20px;overflow-x:auto;max-width:1000px;margin:0 auto}.celda-sesion{padding:8px;border:1px solid #ddd;vertical-align:middle;min-height:60px}.sesion-item{background:var(--sesion-lectiva-bg);padding:8px;border-radius:6px;transition:all .2s ease}.sesion-tipo-guardia{background:var(--sesion-guardia-bg)}.sesion-tipo-guardia .sesion-grupo{color:var(--sesion-guardia-text)}.sesion-tipo-reunion{background:var(--sesion-reunion-bg)}.sesion-tipo-reunion .sesion-grupo{color:var(--sesion-reunion-text)}.sesion-tipo-complementaria{background:var(--sesion-complementaria-bg)}.sesion-tipo-complementaria .sesion-grupo{color:var(--sesion-complementaria-text)}.sesion-tipo-funcion_especifica{background:var(--sesion-funcion-bg)}.sesion-tipo-funcion_especifica .sesion-grupo{color:var(--sesion-funcion-text)}.sesion-grupo{font-weight:700;color:var(--sesion-lectiva-text);font-size:1.1em;margin-bottom:0;cursor:default;display:block;text-align:center}.sesion-materia{color:#333;font-size:.95em;margin-bottom:0;font-weight:500;text-align:center;cursor:default}.sesion-aula{color:#666;font-size:.85em;font-style:italic;text-align:center;cursor:default;display:block}.sesion-clickable{cursor:pointer!important;transition:all .2s ease;text-decoration:underline;text-decoration-style:dotted;text-decoration-color:currentColor;text-underline-offset:2px;color:inherit}.sesion-clickable:active{transform:scale(.98)}.sesion-vacia{text-align:center;color:#ccc;padding:20px;font-size:1.2em}.leyendas-container{margin-top:30px;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.leyenda-grupos{padding:20px;background:#f8f9fa;border-radius:8px;border:1px solid #e0e0e0}.leyenda-grupos h3{margin:0 0 15px;font-size:1.2em;color:#333;font-weight:600}.leyenda-items{display:flex;flex-direction:column;gap:8px}.leyenda-item{display:flex;align-items:center;gap:8px;font-size:.9em}.leyenda-abreviatura{font-weight:700;color:#667eea;min-width:50px}.leyenda-separador{color:#999}.leyenda-nombre{color:#555}.sin-sesiones{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:60px 20px;text-align:center}.sin-sesiones p{font-size:1.3em;color:#999}@media(max-width:960px){.page-header-horario{flex-direction:column;align-items:flex-start;gap:10px}.horario-jefatura-page .horarios-header{width:100%;align-items:center}.horario-jefatura-page .horarios-controls{flex-wrap:nowrap}.horario-jefatura-page .horarios-selects{width:100%;flex-direction:column}.horario-jefatura-page .horarios-selects .searchable-select-wrapper{width:100%;min-width:100%}.horario-jefatura-page .mobile-only{display:flex}.horario-jefatura-page .desktop-only{display:none}}@media(max-width:768px){.mi-horario-page{padding:10px}.horario-header-row{width:100%;justify-content:space-between;align-items:center}.page-header-horario h1{font-size:1.6em}.horario-filtros{width:100%;align-items:stretch;gap:8px}.horario-selects{width:100%;gap:8px}.horario-selects select{flex:1 1 100%;min-width:100%;font-size:.8em;padding:6px 8px}.horario-controles{align-self:flex-start;gap:12px;width:100%;justify-content:flex-end}.checkbox-label{font-size:.8em}.checkbox-label input[type=checkbox]{width:12px;height:12px}.btn-imprimir{padding:6px 10px;font-size:1em}.horario-container{padding:10px}.tabla-horario{font-size:11px}.columna-tramo{min-width:auto;width:auto}.materia-desktop{display:none}.materia-mobile{display:inline}.columna-dia{min-width:100px}.celda-tramo,.tabla-horario thead th{padding:10px 5px}.celda-sesion{padding:5px}.sesion-item{padding:6px}.tramo-horario{font-size:.75em}.leyenda-grupos{margin-top:20px;padding:15px}.leyenda-grupos h3{font-size:1em}.leyenda-items{gap:6px}.leyenda-item{font-size:.85em}}@media print{.mi-horario-page{padding:10px;max-width:100%}.nombre-profesor-print{display:block!important;text-align:center;margin-bottom:8px;page-break-after:avoid}.nombre-profesor-print h2{font-size:1.5em;color:#333;margin:0;font-weight:600}.page-header-horario{display:none!important}.horario-container{box-shadow:none;padding:0;page-break-before:avoid}.leyenda-grupos{margin-top:20px;padding:15px;page-break-inside:avoid}.leyenda-grupos h3{font-size:1em}.leyenda-items{gap:6px}.leyenda-item{font-size:.85em}.tabla-horario{font-size:10px;page-break-inside:auto}.tabla-horario tr{page-break-inside:avoid;page-break-after:auto}.tabla-horario thead th{background:#fff!important;color:#000!important;border:2px solid #333!important;padding:8px 5px}.celda-tramo,.celda-sesion{padding:5px}.sesion-item{padding:4px}.sesion-item,.sesion-tipo-guardia,.sesion-tipo-reunion,.sesion-tipo-complementaria,.sesion-tipo-funcion_especifica{background:#fff!important;box-shadow:none!important}.sesion-item{border:1px solid #333}.sesion-grupo,.sesion-tipo-guardia .sesion-grupo,.sesion-tipo-reunion .sesion-grupo,.sesion-tipo-complementaria .sesion-grupo,.sesion-tipo-funcion_especifica .sesion-grupo{color:#000!important}tr{page-break-inside:avoid}.sesion-clickable{cursor:default!important;text-decoration:none!important}}.mis-guardias-page{padding:20px;max-width:1400px;margin:0 auto}.page-header{margin-bottom:30px;padding-bottom:15px;border-bottom:2px solid #e0e0e0}.page-header h1{margin:0;color:#333;font-size:28px}.guardias-section{margin-bottom:40px}.guardias-section h2{color:#007bff;margin-bottom:20px;font-size:24px;border-bottom:2px solid #007bff;padding-bottom:10px}.tramo-section{margin-bottom:30px}.dia-guardias-section{margin-bottom:25px;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px #0000001a}.dia-guardias-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:15px 20px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}.dia-guardias-header h3{margin:0;font-size:18px;font-weight:600}.guardias-contador{font-size:14px;font-weight:500}.eso-badge{background:#fff3;padding:2px 8px;border-radius:12px;font-size:13px}.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch}.guardias-table{width:100%;border-collapse:collapse;font-size:14px}.guardias-table thead{background:#f5f5f5}.guardias-table th{padding:12px 15px;text-align:left;font-weight:600;color:#555;border-bottom:2px solid #ddd;white-space:nowrap}.guardias-table td{padding:12px 15px;border-bottom:1px solid #e0e0e0;vertical-align:top}.guardias-table tbody tr:hover{background-color:#f8f9fa}.fecha-cell{font-weight:500;color:#333;min-width:100px}.tramo-cell{color:#666;min-width:100px;font-weight:500}.profesor-cell{color:#555;min-width:150px}.aula-cell{font-weight:500;color:#007bff;min-width:100px;line-height:1.6}.grupo-cell{font-weight:500;color:#28a745;min-width:80px;line-height:1.6}.cubiertas-table .aula-cell,.cubiertas-table .grupo-cell{text-align:left}.comentario-cell{color:#666;font-style:italic;min-width:150px}.sustitucion-badge{color:#ff9800;font-size:11px;font-style:italic;display:inline-block;margin-top:2px}.no-asignado{color:#999;font-style:italic}.no-comentario{color:#ccc}.no-datos{text-align:center;padding:40px 20px;background:#f9f9f9;border-radius:8px;color:#666}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px}.spinner{border:4px solid #f3f3f3;border-top:4px solid #007bff;border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite;margin-bottom:20px}@media(max-width:1024px){.mis-guardias-page{padding:15px}.guardias-table{font-size:13px}.guardias-table th,.guardias-table td{padding:10px 12px}}@media(max-width:768px){.mis-guardias-page{padding:10px}.page-header h1{font-size:22px}.dia-guardias-header{flex-direction:column;align-items:flex-start}.guardias-section h2{font-size:20px}.guardias-table thead{display:none}.guardias-table,.guardias-table tbody,.guardias-table tr{display:block;width:100%}.guardias-table tr{margin-bottom:12px;border:1px solid #ddd;border-radius:6px;overflow:hidden;background:#fff;padding:10px;box-sizing:border-box}.guardias-table td{display:block;width:100%;box-sizing:border-box;padding:0;border:none;min-width:unset;max-width:100%;line-height:1.5}.ausencias-table .fecha-cell,.ausencias-table .tramo-cell{display:inline;font-weight:700;color:#333;font-size:15px}.ausencias-table .fecha-cell:after{content:"  "}.ausencias-table .aula-cell,.ausencias-table .grupo-cell{display:block;width:100%;font-size:13px;margin-top:2px;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.ausencias-table .aula-cell:before{content:"Aula: ";font-weight:600;color:#666}.ausencias-table .grupo-cell:before{content:"Grupo: ";font-weight:600;color:#666}.ausencias-table .profesor-cell{display:block;width:100%;font-size:13px;margin-top:6px;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.ausencias-table .profesor-cell[data-label="Profesor Ausente"]:before{content:"Profesor ausente: ";font-weight:600;color:#666}.ausencias-table .profesor-cell[data-label="Cubierto por"]:before{content:"Cubierto por: ";font-weight:600;color:#666}.ausencias-table .comentario-cell{display:block;width:100%;font-size:13px;margin-top:6px;text-align:left;font-style:italic;word-wrap:break-word;overflow-wrap:break-word}.ausencias-table .comentario-cell:before{content:"Comentario: ";font-weight:600;color:#666;font-style:normal}.cubiertas-table .fecha-cell{font-weight:700;color:#333;font-size:15px;margin-bottom:6px}.cubiertas-table .profesor-cell{display:block;width:100%;font-size:13px;margin-bottom:4px;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.cubiertas-table .profesor-cell[data-label="Profesor Ausente"]:before{content:"Profesor ausente: ";font-weight:600;color:#666}.cubiertas-table .profesor-cell[data-label="Cubierto por"]:before{content:"Cubierto por: ";font-weight:600;color:#666}.cubiertas-table .aula-cell{display:block;width:100%;font-size:13px;margin-bottom:4px;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.cubiertas-table .aula-cell:before{content:"Aulas: ";font-weight:600;color:#666}.cubiertas-table .grupo-cell{display:block;width:100%;font-size:13px;margin-bottom:4px;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.cubiertas-table .grupo-cell:before{content:"Grupos: ";font-weight:600;color:#666}.cubiertas-table .comentario-cell{display:block;width:100%;font-size:13px;margin-top:4px;font-style:italic;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.cubiertas-table .comentario-cell:before{content:"Comentario: ";font-weight:600;color:#666;font-style:normal}.sustitucion-badge{display:inline;font-size:11px}.guardias-contador{font-size:13px}.table-container{overflow-x:visible}}@media(max-width:480px){.page-header h1{font-size:20px}.dia-guardias-header h3{font-size:16px}.ausencias-table .fecha-cell,.ausencias-table .tramo-cell,.cubiertas-table .fecha-cell{font-size:14px}}.codigo-impresion-page{max-width:800px;margin:0 auto;padding:20px}.page-header-codigo{text-align:center;margin-bottom:30px}.page-header-codigo h1{font-size:2.5em;color:#333;margin-bottom:10px}.codigo-container{display:flex;justify-content:center}.codigo-card{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:40px;width:100%;max-width:600px}.codigo-info{text-align:center}.info-group-codigo{margin-bottom:30px}.info-group-codigo label{display:block;font-size:1.2em;color:#666;margin-bottom:20px;font-weight:500}.codigo-display{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:15px;padding:40px;margin:20px 0;box-shadow:0 4px 15px #667eea66}.codigo-number{display:block;font-size:4em;font-weight:700;color:#fff;letter-spacing:.1em;margin-bottom:10px;font-family:Courier New,monospace}.codigo-icon-large{font-size:3em}.sin-codigo-display{background:#f5f5f5;border-radius:15px;padding:40px;margin:20px 0}.sin-codigo-text{display:block;font-size:1.5em;color:#999;margin-bottom:15px}.sin-codigo-note{font-size:1em;color:#666;margin-top:10px}.codigo-description{display:block;font-size:1em;color:#666;margin-top:15px;font-style:italic}.codigo-usuario-info{margin-top:30px;padding-top:20px;border-top:1px solid #eee;text-align:left}.codigo-usuario-info p{margin:10px 0;color:#555}.codigo-usuario-info strong{color:#333;margin-right:10px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60vh}.spinner{border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite}.loading-container p{margin-top:15px;color:#666;font-size:1.1em}@media(max-width:768px){.codigo-card{padding:20px}.codigo-number{font-size:3em}.page-header-codigo h1{font-size:2em}}.modal-editar-usuario{max-width:600px;width:90%}.field-note{display:block;font-size:.75rem;color:var(--text-secondary);margin-top:.25rem;font-style:italic}.roles-checkboxes{display:flex;flex-direction:column;gap:1rem;padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.checkbox-label{display:inline-flex;flex-direction:row;align-items:center;cursor:pointer;padding:.75rem;background:var(--bg-primary);border-radius:var(--radius-md);border:2px solid var(--border-color);transition:all .2s}.checkbox-label:hover{border-color:var(--primary-color);background:var(--bg-tertiary)}.checkbox-label input[type=checkbox]{display:inline-block;width:20px;height:20px;cursor:pointer;margin-right:1rem;accent-color:var(--primary-color);flex-shrink:0}.checkbox-text{display:inline-flex;align-items:center;gap:.5rem;font-size:.9375rem;font-weight:500;color:var(--text-primary)}.role-icon{font-size:1.25rem}.checkbox-label-enabled{display:inline-flex;flex-direction:row;align-items:center;cursor:pointer;padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md);border:2px solid var(--border-color);transition:all .2s}.checkbox-label-enabled:hover{border-color:var(--primary-color);background:var(--bg-tertiary)}.checkbox-label-enabled input[type=checkbox]{display:inline-block;width:20px;height:20px;cursor:pointer;margin-right:1rem;accent-color:var(--success);flex-shrink:0}.enabled-icon{font-size:1.25rem;margin-right:.25rem}.checkbox-label:has(input:checked){border-color:var(--primary-color);background:var(--primary-light)}.checkbox-label:has(input:checked) .checkbox-text{color:var(--primary-color);font-weight:600}input:disabled{background:var(--bg-tertiary);cursor:not-allowed;opacity:.7}@media(max-width:768px){.modal-editar-usuario{width:95%;max-height:90vh;overflow-y:auto}.roles-checkboxes{padding:.75rem;gap:.75rem}.checkbox-label{padding:.625rem}}.modal-cambiar-password{max-width:500px;width:90%}.modal-cambiar-password .usuario-info{background-color:#f5f5f5;padding:15px;border-radius:8px;margin-bottom:20px}.modal-cambiar-password .usuario-info p{margin:0 0 10px;font-size:14px}.modal-cambiar-password .usuario-info p:last-child{margin-bottom:0}.modal-cambiar-password .info-note{background-color:#e3f2fd;padding:10px;border-radius:5px;font-size:13px;color:#1976d2;margin-top:10px}.modal-cambiar-password .form-group{margin-bottom:20px}.modal-cambiar-password .form-group label{display:block;margin-bottom:8px;font-weight:600;color:#333;font-size:14px}.modal-cambiar-password .form-group input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .3s}.modal-cambiar-password .form-group input:focus{outline:none;border-color:#4a90e2}.modal-cambiar-password .form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.modal-cambiar-password .modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:30px}.modal-cambiar-password .btn-primary,.modal-cambiar-password .btn-secondary{padding:10px 20px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .3s;font-weight:500}.modal-cambiar-password .btn-primary{background-color:#4a90e2;color:#fff}.modal-cambiar-password .btn-primary:hover:not(:disabled){background-color:#357abd}.modal-cambiar-password .btn-primary:disabled{background-color:#ccc;cursor:not-allowed}.modal-cambiar-password .btn-secondary{background-color:#f5f5f5;color:#333}.modal-cambiar-password .btn-secondary:hover:not(:disabled){background-color:#e0e0e0}.modal-cambiar-password .btn-secondary:disabled{opacity:.5;cursor:not-allowed}.usuarios-admin-page{padding:2rem;max-width:1400px;margin:0 auto}.btn-crear-usuario{padding:.75rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-crear-usuario:hover{background:#5a7fd8;transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-crear-usuario:active{transform:translateY(0)}.search-filter-container{margin-top:1.5rem;display:flex;align-items:center;gap:1rem}.search-input{flex:1;min-width:300px;max-width:500px;padding:.75rem 1rem;border:2px solid var(--border-color);border-radius:var(--radius-md);font-size:1rem;transition:all .2s}.search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #638bfa1a}.search-results-count{color:var(--text-secondary);font-size:.875rem;font-weight:500}.usuarios-table-container{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;margin-top:1.5rem}.usuarios-table{width:100%;border-collapse:collapse}.usuarios-table thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.usuarios-table th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.usuarios-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.usuarios-table tbody tr.clickable-row{cursor:pointer}.usuarios-table tbody tr.clickable-row:hover{background:var(--bg-secondary);box-shadow:inset 0 0 0 1px var(--primary-color)}.usuarios-table tbody tr.usuario-bloqueado{background:#fef3c7!important;border-left:4px solid #f59e0b}.usuarios-table tbody tr.usuario-bloqueado:hover{background:#fde68a!important;box-shadow:inset 0 0 0 1px #f59e0b}.usuarios-table tbody tr.usuario-desactivado{opacity:.6;background:#f3f4f6!important}.usuarios-table td{padding:1rem;color:var(--text-primary);font-size:.875rem}.email-cell{font-weight:500;color:var(--primary-color);display:flex;align-items:center;gap:.5rem}.badge-bloqueado{display:inline-block;padding:.25rem .5rem;background:#f59e0b;color:#fff;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600;white-space:nowrap}.abbr-cell{font-family:monospace;font-weight:600;color:var(--text-secondary)}.sustituto-cell{color:#8b5cf6;font-weight:500;font-style:italic}.roles-badges{display:flex;gap:.5rem;flex-wrap:wrap}.role-badge{padding:.25rem .625rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;border:1px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-secondary)}.role-badge.ROLE_ADMIN{border-color:var(--primary-color);background:var(--primary-light);color:var(--primary-color)}.role-badge.ROLE_PROFESOR{border-color:var(--success);background:#d1fae5;color:var(--success)}.role-badge.ROLE_JEFATURA{border-color:#8b5cf6;background:#ede9fe;color:#8b5cf6}.role-badge.ROLE_CONSERJE{border-color:#0ea5e9;background:#e0f2fe;color:#0284c7}.role-badge-impresion{border-color:#f59e0b;background:#fef3c7;color:#d97706}.role-badge-agenda{border-color:#8b5cf6;background:#ede9fe;color:#7c3aed}.status-badge{padding:.375rem .75rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;display:inline-block}.status-badge.activo{background:#d1fae5;color:var(--success);border:1px solid var(--success)}.status-badge.inactivo{background:#fee2e2;color:#dc2626;border:1px solid #dc2626}.action-buttons{display:flex;gap:.5rem;align-items:center}.btn-password{padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-size:1rem;cursor:pointer;transition:all .2s;background:#fff3cd;line-height:1}.btn-password:hover{background:#ffc107}.btn-delete{padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-size:1rem;cursor:pointer;transition:all .2s;background:#fee2e2;line-height:1}.btn-delete:hover{background:#dc2626}.btn-unlock{padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s;background:#fef3c7;color:#f59e0b;border:1px solid #f59e0b;white-space:nowrap}.btn-unlock:hover{background:#f59e0b;color:#fff}.btn-toggle{padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-desactivar{background:#fee2e2;color:#dc2626}.btn-desactivar:hover{background:#dc2626;color:#fff}.btn-activar{background:#d1fae5;color:var(--success)}.btn-activar:hover{background:var(--success);color:#fff}.btn-asignar-email{padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s;background:#dbeafe;color:#3b82f6;border:1px solid #3b82f6;white-space:nowrap}.btn-asignar-email:hover{background:#3b82f6;color:#fff}.btn-desasociar-email{padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s;background:#e0e7ff;color:#6366f1;border:1px solid #6366f1;white-space:nowrap}.btn-desasociar-email:hover{background:#6366f1;color:#fff}.rol-impresion-cell{text-align:center;vertical-align:middle}.checkbox-rol-impresion{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem;border-radius:6px;transition:background-color .2s}.checkbox-rol-impresion:hover{background-color:#f9fafb}.checkbox-rol-impresion input[type=checkbox]{cursor:pointer;width:18px;height:18px;accent-color:#f59e0b}.checkbox-text-impresion{font-size:.875rem;font-weight:500;color:#6b7280;-webkit-user-select:none;user-select:none}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-content-custom{background:#fff;border-radius:16px;padding:2rem;max-width:500px;width:90%;box-shadow:0 20px 60px #0000004d;animation:slideInModal .3s ease-out}@keyframes slideInModal{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content-custom h2{margin:0 0 1rem;font-size:1.5rem;color:#333;font-weight:700}.modal-content-custom p{margin:.5rem 0;font-size:1rem;color:#666;line-height:1.6}.current-email{font-size:.875rem!important;margin-bottom:1.5rem!important}.current-email span{font-weight:600;color:#667eea;font-family:monospace}.modal-content-custom .form-group{margin-bottom:1.5rem}.modal-content-custom .form-group label{display:block;font-weight:600;color:#333;margin-bottom:.5rem;font-size:.95rem}.modal-content-custom .form-group input{width:100%;padding:.875rem 1rem;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;transition:all .3s ease;box-sizing:border-box}.modal-content-custom .form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.modal-actions-custom{display:flex;gap:.75rem;margin-top:1.5rem}.btn-confirm-custom,.btn-cancel-custom{flex:1;padding:.875rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-confirm-custom{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-confirm-custom:hover{transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.btn-cancel-custom{background:#fff;color:#666;border:2px solid #e0e0e0}.btn-cancel-custom:hover{background:#f5f5f5;border-color:#ccc}@media(max-width:768px){.usuarios-admin-page{padding:1rem}.usuarios-table-container{overflow-x:auto}.usuarios-table{min-width:800px}.usuarios-table th,.usuarios-table td{padding:.75rem .5rem;font-size:.8125rem}}.modal-content-sesion{background:#fff;border-radius:8px;width:90%;max-width:700px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px #00000026;animation:slideIn .2s ease-out}.sesion-info{background:#f8f9fa;border-radius:6px;padding:1rem 1.5rem;margin:1.5rem;border-left:3px solid #667eea}.sesion-info p{margin:.5rem 0;font-size:.9rem;color:#333}.sesion-info p strong{color:#667eea;margin-right:.5rem}.form-group select,.form-group input,.form-group textarea{width:100%;padding:.75rem;border:1px solid #d0d0d0;border-radius:6px;font-size:.95rem;font-family:inherit;transition:all .2s;box-sizing:border-box;background:#fff}.form-group select:disabled{background:#f5f5f5;cursor:not-allowed;color:#999}.form-group select:focus,.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group select.error,.form-group input.error,.form-group textarea.error{border-color:#dc3545}.btn-cancelar,.btn-guardar{width:50%;padding:.75rem 1.5rem;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;border:none;transition:all .2s}@media(max-width:600px){.modal-content-sesion{width:95%;max-width:none}.modal-header,.modal-form{padding:1rem}.modal-actions{flex-direction:column}.btn-cancelar,.btn-guardar{width:100%}}.sesiones-admin-page{min-height:calc(100vh - 70px);padding:2rem;max-width:1400px;margin:0 auto}.page-header p{font-size:1rem;color:#666;margin-bottom:.75rem}.sesiones-selects{display:flex;flex-direction:row;gap:10px;align-items:center;flex:1}.sesiones-selects .searchable-select-wrapper{min-width:220px;width:220px}.btn-crear{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;white-space:nowrap}.loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:4rem 2rem;color:#666}.no-results p{color:#999;font-size:1.1rem;margin:0}.actions-bar-botones{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.btn-cambiar-aula-grupo{padding:10px 14px;background:#fff;color:#555;border:1.5px solid #ccc;border-radius:8px;font-size:1.1em;cursor:pointer;transition:all .2s ease;line-height:1;height:44px;display:flex;align-items:center}.btn-cambiar-aula-grupo:hover{background:#f0f0f0;border-color:#999}.modal-cambiar-aula{background:#fff;border-radius:12px;padding:0;width:420px;max-width:95vw;box-shadow:0 10px 40px #0003}.modal-cambiar-aula .modal-header{border-radius:12px 12px 0 0}.modal-cambiar-aula .modal-actions{border-radius:0 0 12px 12px;padding:1rem 1.5rem;border-top:1px solid #e0e0e0}.modal-cambiar-aula-body{padding:1.25rem 1.5rem .5rem}.modal-cambiar-aula-info{font-size:.9rem;color:#666;margin-bottom:1rem}.horario-container{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:20px;overflow-x:auto}.tabla-horario-wrapper{min-width:100%;overflow-x:auto}.tabla-horario{width:100%;border-collapse:collapse;font-size:14px}.tabla-horario thead th{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:15px 10px;text-align:center;font-weight:600;border:1px solid #ddd;position:sticky;top:0;z-index:10}.columna-tramo{min-width:180px;width:180px}.columna-dia{min-width:150px;width:auto}.tabla-horario tbody tr{border-bottom:1px solid #eee}.tabla-horario tbody tr:hover{background-color:#f8f9fa}.celda-tramo{background:#f5f5f5;padding:15px 10px;text-align:center;font-weight:500;border:1px solid #ddd;vertical-align:middle}.tramo-nombre{font-size:1em;font-weight:600;color:#333;margin-bottom:5px}.tramo-horario{font-size:.85em;color:#666;font-weight:400}.celda-sesion{padding:8px;border:1px solid #ddd;vertical-align:middle;min-height:80px;position:relative}.sesiones-dia{display:flex;flex-direction:column;gap:8px;justify-content:center;height:100%}.sesion-item{background:#b8daff;padding:8px;border-radius:6px;transition:all .2s ease;position:relative}.celda-sesion.drag-over{background-color:#667eea26;outline:2px dashed #667eea;outline-offset:-2px}.celda-sesion.drag-over-copy{background-color:#28a74526;outline:2px dashed #28a745;outline-offset:-2px}.sesion-tipo-guardia{background:#fff3cd}.sesion-tipo-guardia .sesion-grupo{color:#ff8c00}.sesion-tipo-reunion{background:#f8f9fa}.sesion-tipo-reunion .sesion-grupo{color:#138496}.sesion-tipo-complementaria{background:#d4edda}.sesion-tipo-complementaria .sesion-grupo{color:#28a745}.sesion-tipo-funcion_especifica{background:#e7d4f5}.sesion-tipo-funcion_especifica .sesion-grupo{color:#9c27b0}.sesion-grupo{font-weight:700;color:#667eea;font-size:1.1em;margin-bottom:4px;cursor:default;display:block;text-align:center}.sesion-materia{color:#333;font-size:.95em;margin-bottom:3px;font-weight:500;text-align:center}.materia-mobile{display:none}.materia-desktop{display:inline}.sesion-aula{color:#666;font-size:.85em;font-style:italic;text-align:center}.sesion-vacia{text-align:center;color:#ccc;padding:20px;font-size:1.2em;position:relative;min-height:80px;height:80px;display:flex;align-items:center;justify-content:center}.btn-crear-celda{padding:6px 10px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:1em;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 6px #667eea4d;animation:fadeIn .2s ease;position:absolute}.btn-crear-celda:hover{transform:scale(1.05);box-shadow:0 3px 8px #667eea80}.sesion-acciones{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:4px;z-index:20;background:#fffffff2;padding:4px;border-radius:6px;box-shadow:0 4px 12px #00000026;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.btn-edit-icon,.btn-move-icon,.btn-delete-icon{padding:4px 7px;border:none;border-radius:4px;font-size:.85em;cursor:pointer;transition:all .2s ease;background:#fff;line-height:1}.btn-edit-icon{color:#4a90e2;border:1.5px solid #4a90e2}.btn-edit-icon:hover{background:#4a90e2;color:#fff}.btn-move-icon{color:#f0a030;border:1.5px solid #f0a030;cursor:grab}.btn-move-icon:active{cursor:grabbing}.btn-move-icon:hover{background:#f0a030;color:#fff}.btn-delete-icon{color:#e74c3c;border:1.5px solid #e74c3c}.btn-delete-icon:hover{background:#e74c3c;color:#fff}@media(max-width:1200px){.tabla-horario{font-size:12px}.columna-tramo{min-width:140px;width:140px}.columna-dia{min-width:120px}}@media(max-width:960px){.actions-bar{flex-direction:column;align-items:stretch}.sesiones-selects{flex-direction:column;width:100%}.sesiones-selects .searchable-select-wrapper{width:100%;min-width:100%}.actions-bar-botones{width:100%}.btn-crear{flex:1}.btn-cambiar-aula-grupo{flex-shrink:0}}@media(max-width:768px){.sesiones-admin-page{padding:1rem}.page-header h1{font-size:1.8rem}.horario-container{padding:10px}.tabla-horario{font-size:11px}.columna-tramo{min-width:auto;width:auto}.materia-desktop{display:none}.materia-mobile{display:inline}.columna-dia{min-width:100px}.celda-tramo,.tabla-horario thead th{padding:10px 5px}.celda-sesion{padding:5px}.sesion-item{padding:6px}.tramo-horario{font-size:.75em}.btn-edit-icon,.btn-move-icon,.btn-delete-icon{padding:3px 5px;font-size:.75em}}@media print{.sesion-item,.sesion-tipo-guardia,.sesion-tipo-reunion,.sesion-tipo-complementaria,.sesion-tipo-funcion_especifica{background:#fff!important;box-shadow:none!important}.sesion-item{border:1px solid #333}.sesion-grupo,.sesion-tipo-guardia .sesion-grupo,.sesion-tipo-reunion .sesion-grupo,.sesion-tipo-complementaria .sesion-grupo,.sesion-tipo-funcion_especifica .sesion-grupo{color:#000!important}.tabla-horario thead th{background:#fff!important;color:#000!important;border:2px solid #333!important}.sesion-acciones,.btn-crear-celda,.btn-crear,.actions-bar{display:none!important}}.modal-crear-reserva{max-width:600px}.modal-crear-reserva .form-group select{width:100%;padding:.75rem;border:1px solid #d0d0d0;border-radius:6px;font-size:.95rem;font-family:inherit;transition:all .2s;box-sizing:border-box;background:#fff;cursor:pointer}.modal-crear-reserva .form-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.modal-crear-reserva .form-group select.error{border-color:#dc3545}.modal-editar-reserva{max-width:600px}.modal-editar-reserva .form-group select{width:100%;padding:.75rem;border:1px solid #d0d0d0;border-radius:6px;font-size:.95rem;font-family:inherit;transition:all .2s;box-sizing:border-box;background:#fff;cursor:pointer}.modal-editar-reserva .form-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.modal-editar-reserva .form-group select.error{border-color:#dc3545}.loading-spinner{text-align:center;padding:2rem;color:#666;font-size:.95rem}.modal-confirmacion-sesion{max-width:600px;width:90%}.modal-header.warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;padding:1.5rem;border-radius:8px 8px 0 0;display:flex;justify-content:space-between;align-items:center}.modal-header.warning h2{margin:0;font-size:1.5rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.modal-confirmacion-sesion .modal-body{padding:2rem;text-align:center}.warning-icon{font-size:4rem;margin-bottom:1rem;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.mensaje-advertencia{font-size:1rem;line-height:1.6;color:#1f2937;margin:0;white-space:pre-line;text-align:left;background-color:#fff7ed;padding:1.5rem;border-radius:8px;border-left:4px solid #f59e0b}.modal-confirmacion-sesion .modal-actions{display:flex;gap:1rem;justify-content:flex-end;padding:1.5rem;border-top:1px solid #e5e7eb}.btn-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:500;transition:all .2s;box-shadow:0 2px 4px #0000001a}.btn-warning:hover{transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.btn-warning:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.modal-confirmacion-sesion .btn-secondary{background-color:#e5e7eb;color:#1f2937;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:500;transition:all .2s}.modal-confirmacion-sesion .btn-secondary:hover{background-color:#d1d5db}.reservas-admin-page{padding:2rem;max-width:1400px;margin:0 auto}.total-reservas{font-size:.875rem;color:var(--text-secondary);font-weight:500;padding:.5rem 1rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.filtros-section{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem;margin-top:1.5rem;box-shadow:var(--shadow-sm)}.filtros-section h3{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--text-primary)}.filtros-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.filtro-item{display:flex;flex-direction:column;gap:.5rem}.filtro-item label{font-size:.875rem;font-weight:500;color:var(--text-secondary)}.filtro-item select,.filtro-item input[type=date]{width:100%;padding:.625rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-primary);font-size:.875rem;transition:all .2s}.filtro-item select:focus,.filtro-item input[type=date]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.filtros-actions{margin-top:1rem;display:flex;justify-content:flex-end}.btn-limpiar-filtros{padding:.625rem 1.25rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-limpiar-filtros:hover{background:var(--bg-primary);color:var(--text-primary);border-color:var(--text-secondary)}.reservas-table-container{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;margin-top:1rem}.reservas-table{width:100%;border-collapse:collapse}.reservas-table thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.reservas-table th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.reservas-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.reservas-table tbody tr.clickable-row{cursor:pointer}.reservas-table tbody tr.clickable-row:hover{background:var(--bg-secondary);box-shadow:inset 0 0 0 1px var(--primary-color)}.reservas-table td{padding:1rem;color:var(--text-primary);font-size:.875rem}.hora-cell{font-family:monospace;font-size:.8125rem;color:var(--text-secondary)}.aula-cell{font-weight:500}.profesor-cell{color:var(--text-secondary)}.motivo-cell{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asistentes-cell{text-align:center;font-weight:600}.badge-recurrente-discreto{display:inline-block;margin-left:.5rem;font-size:1rem;cursor:help;opacity:.7;transition:opacity .2s}.badge-recurrente-discreto:hover{opacity:1}@media(max-width:768px){.reservas-admin-page{padding:1rem}.actions-bar{flex-direction:column;gap:1rem;align-items:stretch}.btn-crear{width:100%}.total-reservas{text-align:center}.reservas-table-container{overflow-x:auto}.reservas-table{min-width:800px}.reservas-table th,.reservas-table td{padding:.75rem .5rem;font-size:.8125rem}.motivo-cell{max-width:150px}.filtros-section{padding:1rem}.filtros-grid{grid-template-columns:1fr}.filtros-actions{justify-content:center}.btn-limpiar-filtros{width:100%}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content-carrito{background:#fff;border-radius:8px;width:90%;max-width:550px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px #00000026;animation:slideIn .2s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid #e0e0e0;background:linear-gradient(135deg,#f8f9fa,#e9ecef)}.modal-header h2{font-size:1.25rem;font-weight:600;color:#1a1a1a;margin:0}.modal-close{background:none;border:none;font-size:2rem;color:#666;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.modal-close:hover{background:#f5f5f5;color:#1a1a1a}.modal-loading{padding:2rem;text-align:center;color:#666}.form-group label{display:block;font-weight:500;color:#1a1a1a;margin-bottom:.5rem;font-size:.9rem}.form-group input,.form-group textarea,.form-group select{width:100%;padding:.75rem;border:1px solid #d0d0d0;border-radius:6px;font-size:.95rem;font-family:inherit;transition:all .2s;box-sizing:border-box;background:#fff}.form-group select{cursor:pointer}.form-group textarea{resize:vertical;min-height:80px}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input.error,.form-group textarea.error,.form-group select.error{border-color:#dc3545}.error-message{display:block;color:#dc3545;font-size:.85rem;margin-top:.375rem;font-weight:500}.help-text{display:block;color:#666;font-size:.8rem;margin-top:.375rem;font-style:italic}.modal-actions{display:flex;gap:1rem;justify-content:flex-end;padding-top:1rem;border-top:1px solid #e0e0e0;margin-top:1.5rem}.btn-cancelar,.btn-guardar{padding:.75rem 1.5rem;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;border:none;transition:all .2s}.btn-cancelar{background:#f5f5f5;color:#666}.btn-cancelar:hover{background:#e0e0e0;color:#333}.btn-guardar{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-guardar:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}@media(max-width:600px){.modal-content-carrito{width:95%;max-width:none}.modal-header,.modal-form{padding:1rem}.modal-actions{flex-direction:column}.btn-cancelar,.btn-guardar{width:100%}}.carritos-admin-page{min-height:calc(100vh - 70px);padding:2rem;max-width:1400px;margin:0 auto}.page-header{text-align:center;margin-bottom:2rem}.page-header h1{font-size:2.2rem;color:#333;margin-bottom:.5rem;font-weight:700}.page-header p{font-size:1rem;color:#666}.actions-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;gap:1rem;flex-wrap:wrap}.btn-crear{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.btn-crear:hover{transform:translateY(-2px);box-shadow:0 5px 15px #667eea66}.total-carritos{font-weight:600;color:#333;font-size:.95rem}.carritos-table-container{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.carritos-table{width:100%;border-collapse:collapse}.carritos-table thead{background:linear-gradient(135deg,#f8f9fa,#e9ecef)}.carritos-table th{padding:1rem;text-align:left;font-weight:600;color:#333;font-size:.9rem;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid #e0e0e0}.carritos-table tbody tr{border-bottom:1px solid #f0f0f0;transition:all .2s}.carritos-table tbody tr.clickable-row{cursor:pointer}.carritos-table tbody tr.clickable-row:hover{background:#f8f9fa;transform:scale(1.01);box-shadow:0 2px 8px #00000014}.carritos-table td{padding:1rem;color:#444;font-size:.95rem}.nombre-cell{font-weight:600;color:#667eea}.descripcion-cell{color:#666;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sin-descripcion{color:#999;font-style:italic}.equipos-cell{text-align:center}.badge-equipos{display:inline-block;padding:.35rem .75rem;background:#e3f2fd;color:#1976d2;border-radius:15px;font-weight:600;font-size:.85rem}.aula-cell{color:#444}.sin-aula{color:#999;font-style:italic}.btn-delete{padding:.5rem 1rem;background:linear-gradient(135deg,#f44336,#d32f2f);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-delete:hover{transform:scale(1.05);box-shadow:0 3px 10px #f443364d}.loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 70px);color:#666}.spinner{border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite;margin-bottom:1rem}.no-results{text-align:center;padding:4rem 2rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a}.no-results p{color:#999;font-size:1.1rem;margin:.5rem 0}.no-results .hint{font-size:.95rem;color:#bbb}@media(max-width:1200px){.carritos-table{font-size:.9rem}.carritos-table th,.carritos-table td{padding:.75rem}}@media(max-width:768px){.carritos-admin-page{padding:1rem}.page-header h1{font-size:1.8rem}.actions-bar{flex-direction:column;align-items:stretch}.btn-crear{width:100%}.carritos-table-container{overflow-x:auto}.carritos-table{min-width:700px}.carritos-table th,.carritos-table td{padding:.5rem;font-size:.85rem}}.aulas-admin-page{padding:2rem;max-width:1400px;margin:0 auto}.reservable-cell{text-align:center}.badge{padding:.375rem .75rem;border-radius:var(--radius-md);font-size:.75rem;font-weight:600;display:inline-block}.badge-si{background:#d1fae5;color:#065f46}.badge-no{background:#fee2e2;color:#991b1b}.checkbox-group{margin-bottom:1rem;display:flex;flex-direction:column;gap:.5rem}@media(max-width:768px){.aulas-admin-page{padding:1rem}.actions-bar{flex-direction:column;gap:1rem;align-items:stretch}.admin-table{font-size:.75rem}.admin-table th,.admin-table td{padding:.75rem .5rem}.modal-content-carrito{width:95%;max-height:95vh}.modal-actions{flex-direction:column}.btn-cancelar,.btn-guardar{width:100%}}.tramos-admin-page{padding:2rem;max-width:1400px;margin:0 auto}.admin-table tbody tr.clickable-row{cursor:pointer}.admin-table tbody tr.clickable-row:hover{background:var(--bg-secondary);box-shadow:inset 0 0 0 1px var(--primary-color)}.nombre-cell{font-weight:600;color:var(--primary-color)}.capacidad-cell,.numero-cell{text-align:center;font-weight:600}.tipo-cell{color:var(--text-secondary)}.carrito-cell{font-style:italic;color:var(--text-secondary)}.btn-delete{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#fee2e2;color:#dc2626;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-delete:hover{background:#dc2626;color:#fff;border-color:#dc2626}.modal-content-carrito{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:600px;max-height:90vh;overflow-y:auto}.form-group input[type=text],.form-group input[type=number],.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;font-family:inherit;transition:all .2s}.checkbox-group input[type=checkbox]{width:1.25rem;height:1.25rem;margin-right:.75rem;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:2px solid var(--border-color);border-radius:4px;position:relative;transition:all .2s;flex-shrink:0}@media(max-width:768px){.tramos-admin-page{padding:1rem}.actions-bar{flex-direction:column;gap:1rem;align-items:stretch}.admin-table{font-size:.75rem}.admin-table th,.admin-table td{padding:.75rem .5rem}.modal-content-carrito{width:95%;max-height:95vh}.modal-actions{flex-direction:column}.btn-cancelar,.btn-guardar{width:100%}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content-firma{max-width:500px;width:90%;background:#fff;border-radius:var(--radius-lg);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--border-color)}.modal-header h2{margin:0;font-size:1.25rem;color:var(--text-primary)}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--text-secondary);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all .2s}.modal-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.modal-body-firma{padding:1.5rem}.info-email{background:#f0f9ff;border-left:4px solid #0284c7;padding:1rem;border-radius:var(--radius-md);margin-bottom:1.5rem;font-size:.9375rem;color:#0c4a6e;line-height:1.6}.codigo-input{width:100%;padding:1rem;font-size:1.5rem;text-align:center;letter-spacing:.5rem;border:2px solid var(--border-color);border-radius:var(--radius-md);font-weight:600;transition:all .2s}.codigo-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-light)}.codigo-input.error{border-color:#dc2626}.codigo-input::placeholder{letter-spacing:normal;font-weight:400;font-size:1rem}.error-message{display:block;color:#dc2626;font-size:.875rem;margin-top:.5rem}.modal-actions{display:flex;gap:1rem;margin-top:1.5rem}.modal-actions button{flex:1;padding:.75rem 1.5rem;border:none;border-radius:var(--radius-md);font-size:.9375rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary{background:var(--primary-color);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px)}.btn-primary:disabled{background:#cbd5e1;cursor:not-allowed;transform:none}.btn-secondary{background:#f1f5f9;color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:#e2e8f0}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.loader-container{text-align:center;padding:2rem 1.5rem}.spinner{width:48px;height:48px;border:4px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 1.5rem}.loader-text{font-size:1rem;color:var(--text-secondary);margin-bottom:.5rem}.loader-subtext{font-size:.875rem;color:var(--text-tertiary)}.moscosos-page{padding:2rem;max-width:1200px;margin:0 auto}.page-header{text-align:center;margin-bottom:3rem}.page-header h1{font-size:2.5rem;color:var(--text-primary);margin-bottom:.5rem;font-weight:700}.page-header p{font-size:1.1rem;color:var(--text-secondary)}.table-container{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;margin-top:1rem}.admin-table{width:100%;border-collapse:collapse}.admin-table thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.admin-table th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.admin-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.admin-table td{padding:1rem;color:var(--text-primary);font-size:.875rem}.fecha-cell{font-weight:600;color:var(--primary-color)}.badge-tipo{padding:.35rem .75rem;border-radius:15px;font-weight:600;font-size:.75rem;display:inline-block}.badge-tipo.lectivo{background:#fef3c7;color:#d97706}.badge-tipo.no-lectivo{background:#dbeafe;color:#2563eb}.badge-estado{padding:.35rem .75rem;border-radius:15px;font-weight:600;font-size:.75rem;display:inline-block}.estado-no-firmada{background:#fef3c7;color:#f59e0b}.estado-solicitado{background:#e0e7ff;color:#4f46e5}.estado-provisional{background:#fef3c7;color:#d97706}.estado-definitivo{background:#d1fae5;color:#059669}.estado-anulado{background:#f3f4f6;color:#6b7280}.estado-no-concedido{background:#fee2e2;color:#dc2626}.modal-content-moscoso{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:960px;max-height:90vh;overflow-y:auto}.modal-header{padding:1.5rem;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.modal-header h2{font-size:1.25rem;color:var(--text-primary);margin:0}.modal-close{background:none;border:none;font-size:1.5rem;color:var(--text-secondary);cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s}.modal-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-form{padding:1.5rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.25rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-weight:600;color:var(--text-primary);margin-bottom:.5rem;font-size:.875rem}.form-group input[type=text],.form-group input[type=number],.form-group input[type=date],.form-group input[type=tel],.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;font-family:inherit;transition:all .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a}.checkbox-group{margin-bottom:1rem}.checkbox-group label{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:500;color:var(--text-primary);padding:.75rem;border-radius:var(--radius-md);transition:background .2s}.checkbox-group label:hover{background:var(--bg-secondary)}.checkbox-group input[type=checkbox]{width:1.25rem;height:1.25rem;margin-right:.75rem;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:2px solid var(--primary-color);border-radius:4px;position:relative;transition:all .2s;flex-shrink:0}.checkbox-group input[type=checkbox]:hover{border-color:var(--primary-color)}.checkbox-group input[type=checkbox]:checked{background:var(--primary-color);border-color:var(--primary-color)}.checkbox-group input[type=checkbox]:checked:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:1rem;font-weight:700}.radio-group{display:flex;gap:1.5rem;margin-top:.5rem}.radio-label{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:500;color:var(--text-primary);padding:.75rem 1rem;border:2px solid var(--border-color);border-radius:var(--radius-md);transition:all .2s;flex:1}.radio-label:hover{border-color:var(--primary-color);background:var(--bg-secondary)}.radio-label input[type=radio]{width:1.25rem;height:1.25rem;margin-right:.75rem;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:2px solid var(--primary-color);border-radius:50%;position:relative;transition:all .2s;flex-shrink:0}.radio-label input[type=radio]:hover{border-color:var(--primary-color)}.radio-label input[type=radio]:checked{background:var(--primary-color);border-color:var(--primary-color)}.radio-label input[type=radio]:checked:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:.5rem;height:.5rem;background:#fff;border-radius:50%}.radio-label:has(input[type=radio]:checked){border-color:var(--primary-color);background:#667eea0d}.modal-actions{display:flex;gap:1rem;justify-content:flex-end;padding-top:1.5rem;border-top:1px solid var(--border-color)}.btn-cancelar{width:50%;padding:.75rem 1.5rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-secondary);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-cancelar:hover{background:var(--bg-tertiary);border-color:var(--text-secondary)}.btn-guardar{width:50%;padding:.75rem 1.5rem;border:none;border-radius:var(--radius-md);background:var(--primary-color);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-guardar:hover{background:var(--primary-hover)}.clickable-row{cursor:pointer;transition:background-color .2s}.clickable-row:hover{background-color:var(--bg-secondary)}.modal-body-detalle{padding:1.5rem;max-height:calc(90vh - 120px);overflow-y:auto}.detalle-section h3{color:var(--primary-color);font-size:1.1rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.detalle-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem}.detalle-item-full{margin-top:1rem;padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md)}.detalle-label{font-weight:600;color:var(--text-secondary);font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}.detalle-value{color:var(--text-primary);font-size:1rem;word-break:break-word}.detalle-descripcion{margin:.5rem 0 0;color:var(--text-primary);line-height:1.6;white-space:pre-wrap}.motivo-denegacion-box{background:#fee2e2;border-left:4px solid #dc2626}.motivo-denegacion-box .detalle-label{color:#dc2626}.motivo-denegacion-box .detalle-descripcion{color:#7f1d1d;font-weight:500}.info-icon{position:relative;display:inline-block;cursor:help;font-size:.85rem;color:var(--primary-color);margin-left:.25rem;vertical-align:middle}.tooltip-info{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:.5rem;padding:.75rem 1rem;background:#1e293b;color:#fff;font-size:.8rem;font-weight:400;line-height:1.5;border-radius:var(--radius-md);white-space:normal;width:350px;max-width:90vw;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:none;text-align:left}.tooltip-info:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#1e293b}.cards-container{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.solicitud-card{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:1rem;cursor:pointer;transition:all .2s;border:1px solid var(--border-color)}.solicitud-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px);background:var(--bg-secondary)}.card-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:.75rem}.card-row:last-child{margin-bottom:0}.card-item{display:flex;flex-direction:column;gap:.25rem}.card-label{font-size:.7rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.card-value{font-size:.9rem;color:var(--text-primary);font-weight:500}.card-fecha-small{font-size:.8rem}.desktop-view{display:block}.mobile-view{display:none}@media(max-width:768px){.moscosos-page{padding:1rem}.page-header h1{font-size:2rem}.desktop-view{display:none}.mobile-view{display:flex}.form-row{grid-template-columns:1fr}.modal-content-moscoso{width:95%;max-height:95vh}.modal-actions{flex-direction:column}.btn-cancelar,.btn-guardar{width:100%}.detalle-grid{grid-template-columns:1fr}.modal-body-detalle{padding:1rem}}.firma-pendiente{margin-top:1rem;padding:1rem;background:#fef3c7;border-left:4px solid #f59e0b;border-radius:var(--radius-md);display:flex;gap:.75rem;align-items:flex-start}.firma-texto{flex:1;display:flex;flex-direction:column;gap:.75rem;color:#78350f}.btn-firmar{align-self:flex-start;padding:.5rem 1rem;background:#f59e0b;color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-firmar:hover{background:#d97706;transform:translateY(-1px);box-shadow:0 2px 4px #f59e0b4d}.modal-crear-moscoso{max-width:800px;width:90%;max-height:90vh;overflow-y:auto}.section-title{font-size:1.1rem;color:var(--primary-color);margin:1.5rem 0 1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.section-title:first-child{margin-top:0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:768px){.form-row{grid-template-columns:1fr}}.checkbox-group{margin:1rem 0}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9375rem}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.info-note{padding:1rem;background:#e7f3ff;border-left:4px solid var(--primary-color);border-radius:var(--radius-md);font-size:.875rem;color:var(--text-primary);margin-top:1rem}textarea{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-family:inherit;font-size:.9375rem;resize:vertical}textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-light)}.modal-crear-moscoso .btn-primary,.modal-crear-moscoso .btn-secondary{padding:10px 20px;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:.9375rem;font-weight:500;transition:background-color .3s ease}.modal-crear-moscoso .btn-primary{background-color:#4a90e2;color:#fff}.modal-crear-moscoso .btn-primary:hover:not(:disabled){background-color:#357abd}.modal-crear-moscoso .btn-primary:disabled{background-color:#ccc;cursor:not-allowed}.modal-crear-moscoso .btn-secondary{background-color:#f5f5f5;color:var(--text-primary)}.modal-crear-moscoso .btn-secondary:hover{background-color:#e0e0e0}.moscosos-admin-page{padding:2rem;max-width:1600px;margin:0 auto}.page-header-content{display:flex;justify-content:space-between;align-items:center;gap:2rem}.page-header h1{font-size:2rem;color:var(--text-primary);margin:0 0 .5rem}.page-header p{color:var(--text-secondary);margin:0;font-size:.95rem}.btn-crear-moscoso{padding:.75rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.9375rem;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-crear-moscoso:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:var(--shadow-md)}.grupos-container{display:flex;flex-direction:column;gap:2rem}.grupo-fecha{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.grupo-header{background:var(--bg-secondary);padding:1rem 1.5rem;border-bottom:2px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.grupo-header h3{font-size:1.1rem;color:var(--primary-color);margin:0;font-weight:600}.grupo-count{font-size:.875rem;color:var(--text-secondary);background:var(--bg-tertiary);padding:.25rem .75rem;border-radius:12px;font-weight:500}.table-container-admin{overflow-x:auto}.admin-table-compact{width:100%;border-collapse:collapse}.admin-table-compact thead{background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.admin-table-compact th{padding:.6rem .75rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.8rem;text-transform:uppercase;letter-spacing:.3px}.admin-table-compact tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.admin-table-compact tbody tr:hover{background:var(--bg-secondary);cursor:pointer}.admin-table-compact td{padding:.5rem .75rem;color:var(--text-primary);font-size:.85rem}.solicitud-row{position:relative}.profesor-cell{font-weight:500;color:var(--text-primary)}.profesor-hover{cursor:help;position:relative;text-decoration:underline dotted;text-decoration-color:var(--primary-color);text-underline-offset:3px}.center-cell{text-align:center}.badge-tipo-small{padding:.25rem .6rem;border-radius:12px;font-weight:600;font-size:.7rem;display:inline-block;text-transform:uppercase}.badge-tipo-small.lectivo{background:#fef3c7;color:#d97706}.badge-tipo-small.no-lectivo{background:#dbeafe;color:#2563eb}.badge-si{background:#d1fae5;color:#059669;padding:.2rem .5rem;border-radius:10px;font-weight:600;font-size:.7rem;display:inline-block}.badge-no{background:#f3f4f6;color:#6b7280;padding:.2rem .5rem;border-radius:10px;font-weight:600;font-size:.7rem;display:inline-block}.badge-funcionario{padding:.2rem .5rem;border-radius:10px;font-weight:600;font-size:.7rem;display:inline-block}.badge-funcionario.carrera{background:#dbeafe;color:#1e40af}.badge-funcionario.interino{background:#fef3c7;color:#d97706}.estado-select{padding:.35rem .5rem;border-radius:8px;font-weight:600;font-size:.75rem;border:none;cursor:pointer;transition:all .2s;outline:none}.estado-select:hover{opacity:.9;transform:scale(1.02)}.estado-select.estado-no-firmada{background:#fef3c7;color:#f59e0b}.estado-select.estado-solicitado{background:#e0e7ff;color:#4f46e5}.estado-select.estado-provisional{background:#fef3c7;color:#d97706}.estado-select.estado-definitivo{background:#d1fae5;color:#059669}.estado-select.estado-anulado{background:#f3f4f6;color:#6b7280}.estado-select.estado-no-concedido{background:#fee2e2;color:#dc2626}.disfrutado-select{padding:.35rem .5rem;border-radius:8px;font-weight:600;font-size:.75rem;border:none;cursor:pointer;transition:all .2s;outline:none}.disfrutado-select:hover{opacity:.9;transform:scale(1.02)}.disfrutado-select.si{background:#d1fae5;color:#059669}.disfrutado-select.no{background:#f3f4f6;color:#6b7280}.disfrutado-select:disabled{cursor:wait;opacity:.6}.acciones-cell{text-align:center}.btn-descargar-small{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:all .2s}.btn-descargar-small:hover{background:#dbeafe;transform:scale(1.1)}.modal-content-detalle{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:900px;max-height:90vh;overflow-y:auto}.modal-body-detalle{padding:1.5rem}.detalle-section{margin-bottom:2rem}.detalle-section:last-child{margin-bottom:0}.detalle-section h3{font-size:1rem;color:var(--primary-color);margin:0 0 1rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color);font-weight:600}.detalle-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.detalle-item{display:flex;flex-direction:column;gap:.25rem}.detalle-item.full-width{grid-column:1 / -1}.detalle-label{font-size:.8rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.detalle-value{font-size:.95rem;color:var(--text-primary);padding:.5rem;background:var(--bg-secondary);border-radius:var(--radius-sm)}.fecha-destacada{color:var(--primary-color);font-weight:600;font-size:1.1rem}.motivo-denegacion{color:#dc2626;font-weight:500}.table-container-historial{overflow-x:auto;margin-top:.5rem}.historial-table{width:100%;border-collapse:collapse;font-size:.85rem}.historial-table thead{background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.historial-table th{padding:.6rem .75rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.75rem;text-transform:uppercase;letter-spacing:.3px}.historial-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s}.historial-table tbody tr:hover{background:var(--bg-secondary)}.historial-table tbody tr.solicitud-actual{background:#e0f2fe;font-weight:600;border-left:3px solid var(--primary-color)}.historial-table td{padding:.5rem .75rem;color:var(--text-primary)}.modal-footer{display:flex;justify-content:flex-end;padding:1.5rem;border-top:1px solid var(--border-color)}.btn-cerrar{padding:.75rem 1.5rem;border:none;border-radius:var(--radius-md);background:var(--primary-color);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-cerrar:hover{background:var(--primary-hover)}.loading-container,.no-results{padding:3rem;text-align:center;color:var(--text-secondary)}.spinner{border:3px solid var(--border-color);border-top:3px solid var(--primary-color);border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin:0 auto 1rem}@media(max-width:1200px){.admin-table-compact{font-size:.8rem}.admin-table-compact th,.admin-table-compact td{padding:.4rem .5rem}}@media(max-width:768px){.moscosos-admin-page{padding:1rem}.grupo-header{flex-direction:column;align-items:flex-start;gap:.5rem}.table-container-admin{overflow-x:scroll}.admin-table-compact{min-width:900px}.detalle-grid{grid-template-columns:1fr}.modal-content-detalle{width:95%;max-height:95vh}}.profesor-tooltip{position:fixed;background:#fff;border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:0 4px 12px #0003;z-index:10000;min-width:300px;max-width:400px;pointer-events:none}.tooltip-header{background:var(--primary-color);color:#fff;padding:.5rem 1rem;font-weight:600;font-size:.85rem;border-radius:var(--radius-md) var(--radius-md) 0 0}.tooltip-body{padding:.75rem;max-height:300px;overflow-y:auto}.tooltip-empty{margin:0;padding:.5rem;color:var(--text-secondary);font-size:.85rem;text-align:center}.tooltip-table{width:100%;border-collapse:collapse;font-size:.8rem}.tooltip-table thead{background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.tooltip-table th{padding:.4rem .6rem;text-align:left;font-weight:600;color:var(--text-primary);font-size:.75rem;text-transform:uppercase}.tooltip-table tbody tr{border-bottom:1px solid var(--border-color)}.tooltip-table tbody tr:last-child{border-bottom:none}.tooltip-table td{padding:.4rem .6rem;color:var(--text-primary)}.badge-estado-mini{padding:.2rem .5rem;border-radius:8px;font-weight:600;font-size:.65rem;display:inline-block}.badge-estado-mini.estado-no-firmada{background:#fef3c7;color:#f59e0b}.badge-estado-mini.estado-solicitado{background:#e0e7ff;color:#4f46e5}.badge-estado-mini.estado-provisional{background:#fef3c7;color:#d97706}.badge-estado-mini.estado-definitivo{background:#d1fae5;color:#059669}.badge-estado-mini.estado-anulado{background:#f3f4f6;color:#6b7280}.badge-estado-mini.estado-no-concedido{background:#fee2e2;color:#dc2626}.creado-por-info{margin-top:1rem;padding:.875rem 1rem;background:#f0f9ff;border-left:4px solid #0284c7;border-radius:var(--radius-md);display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#0c4a6e}.creado-por-info .icon-info{font-size:1.2rem}.creado-por-info strong{color:#0369a1;font-weight:600}.firma-info{margin-top:1rem;padding:1rem;background:#f0fdf4;border-left:4px solid #22c55e;border-radius:var(--radius-md);display:flex;gap:.75rem;align-items:flex-start}.icon-firma{font-size:1.5rem;line-height:1}.firma-detalles{flex:1;font-size:.9rem;line-height:1.6;color:#064e3b}.firma-detalles strong{color:#047857;font-weight:600}.firma-fecha{color:#065f46;font-size:.85rem;margin-top:.25rem}.firma-metodo{color:#065f46;font-size:.85rem;font-style:italic;margin-top:.25rem}.estado-cell-container{display:flex;align-items:center;gap:.5rem;justify-content:flex-start}.email-icon{font-size:1.2rem;cursor:pointer;border:none;background:none;padding:.25rem;display:flex;align-items:center;justify-content:center;transition:all .2s;border-radius:4px;min-width:28px;height:28px}.email-icon.email-pending{color:#f59e0b;opacity:.8}.email-icon.email-pending:hover{opacity:1;background:#fef3c7;transform:scale(1.1)}.email-icon.email-pending.sending{cursor:wait;opacity:.6;animation:pulse 1.5s ease-in-out infinite}.email-icon.email-sent{color:#22c55e;font-size:1.3rem;font-weight:700;cursor:default}.email-icon.email-disabled{color:#9ca3af;opacity:.5;cursor:not-allowed}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.configuracion-page{max-width:1200px;margin:0 auto;padding:20px}.configuracion-header{text-align:center;margin-bottom:30px}.configuracion-header h1{color:#2c3e50;margin-bottom:10px}.subtitle{color:#7f8c8d;font-size:14px}.configuracion-container{max-width:900px;margin:0 auto}.configuracion-form{background:#fff;padding:30px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.configuracion-seccion{margin-bottom:30px}.configuracion-seccion h2{color:#2c3e50;margin-bottom:10px;font-size:1.5em}.seccion-descripcion{color:#7f8c8d;margin-bottom:20px;line-height:1.6}.campo-info{font-weight:400;color:#7f8c8d;font-size:.9em}.checkbox-label{display:flex;align-items:center;cursor:pointer;font-weight:400}.checkbox-text{font-weight:600;color:#2c3e50}.alerta{padding:15px;border-radius:4px;margin:20px 0;line-height:1.6}.alerta-info{background-color:#e3f2fd;border-left:4px solid #2196f3;color:#1565c0}.alerta-warning{background-color:#fff3e0;border-left:4px solid #ff9800;color:#e65100}.alerta-success{background-color:#e8f5e9;border-left:4px solid #4caf50;color:#2e7d32}.form-actions{margin-top:30px;padding-top:20px;border-top:1px solid #eee}.btn{padding:12px 30px;border:none;border-radius:4px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s}.btn-primary{background-color:#3498db;color:#fff}.btn-primary:hover:not(:disabled){background-color:#2980b9}.btn-primary:disabled{background-color:#95a5a6;cursor:not-allowed}.loading-container{display:flex;justify-content:center;align-items:center;min-height:400px;font-size:18px;color:#7f8c8d}.configuracion-tabs{display:flex;gap:5px;margin-bottom:0;border-bottom:2px solid #e0e0e0;padding-bottom:0}.configuracion-tab{padding:12px 24px;background:transparent;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:1rem;transition:all .3s ease;color:#666;white-space:nowrap;font-weight:500;margin-bottom:-2px}.configuracion-tab:hover{color:#3498db;background:#f8f9fa}.configuracion-tab.active{color:#3498db;border-bottom-color:#3498db;font-weight:600}.configuracion-tab-content{animation:configFadeIn .3s ease}@keyframes configFadeIn{0%{opacity:0}to{opacity:1}}.backup-conexion{text-align:center;padding:20px 0}.btn-google{display:inline-flex;align-items:center;padding:12px 30px;border:none;border-radius:4px;font-size:16px;font-weight:600;cursor:pointer;background-color:#4285f4;color:#fff;transition:background-color .3s;margin-top:15px}.btn-google:hover{background-color:#357ae8}.btn-danger-outline{padding:12px 30px;border:1px solid #e74c3c;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;background-color:transparent;color:#e74c3c;transition:all .3s}.btn-danger-outline:hover{background-color:#e74c3c;color:#fff}.backup-programacion{background:#f8f9fa;padding:20px;border-radius:8px;margin:20px 0;border:none}.backup-programacion h3{color:#2c3e50;margin-bottom:15px;font-size:1.2em}.backup-acciones{display:flex;gap:15px;margin:25px 0;align-items:center;padding:20px 0;border-top:1px solid #eee;border-bottom:1px solid #eee}.backup-lista{margin-top:20px}.backup-lista h3{color:#2c3e50;margin-bottom:15px;font-size:1.2em}.backup-vacio{color:#7f8c8d;font-style:italic;padding:20px 0}.backup-tabla{width:100%;border-collapse:collapse;font-size:14px}.backup-tabla th,.backup-tabla td{padding:12px 15px;text-align:left;border-bottom:1px solid #eee}.backup-tabla th{background-color:#f8f9fa;font-weight:600;color:#2c3e50}.backup-tabla tr:hover{background-color:#f5f5f5}.btn-descargar{background:none;border:1px solid #3498db;color:#3498db;padding:6px 14px;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500;transition:all .3s}.btn-descargar:hover{background-color:#3498db;color:#fff}@media(max-width:768px){.configuracion-page{padding:15px}.configuracion-form{padding:20px}.configuracion-tabs{flex-wrap:wrap}.configuracion-tab{flex:1;text-align:center;padding:10px 12px;font-size:.85rem}.backup-acciones{flex-direction:column}.backup-acciones .btn,.backup-acciones .btn-danger-outline{width:100%;text-align:center}.backup-tabla{font-size:12px}.backup-tabla th,.backup-tabla td{padding:8px 10px}}.codigos-impresion-page{padding:2rem;max-width:1400px;margin:0 auto}.codigos-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.codigos-info{background:#e3f2fd;padding:15px;border-radius:6px;margin-bottom:20px;border-left:4px solid #2196f3}.codigos-info p{margin:0;color:#1976d2;font-size:14px}.search-filter-container{margin-top:1.5rem;margin-bottom:1.5rem;display:flex;align-items:center;gap:1rem}.search-input{flex:1;min-width:300px;max-width:500px;padding:.75rem 1rem;border:2px solid #ddd;border-radius:8px;font-size:1rem;transition:all .2s}.search-input:focus{outline:none;border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a}.search-results-count{color:#666;font-size:.875rem;font-weight:500}.tabla-wrapper{overflow-x:auto}.tabla-codigos{width:100%;border-collapse:collapse;min-width:800px}.tabla-codigos thead{background:#f5f5f5}.tabla-codigos th{padding:12px;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #ddd}.tabla-codigos tbody tr{border-bottom:1px solid #eee;transition:background-color .2s}.tabla-codigos tbody tr:hover{background-color:#f9f9f9}.tabla-codigos td{padding:12px}.nombre-usuario{font-weight:500;color:#333}.email-usuario{color:#666;font-size:14px}.abreviatura-usuario{color:#888;text-align:center;font-family:monospace;font-size:14px}.codigo-input-cell{position:relative}.codigo-input{width:100%;max-width:200px;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;transition:border-color .2s}.codigo-input:focus{outline:none;border-color:#2196f3;box-shadow:0 0 0 2px #2196f31a}.codigo-input:disabled{background-color:#f5f5f5;cursor:not-allowed}.codigo-input::placeholder{color:#aaa;font-style:italic}.guardando-indicator{display:inline-block;margin-left:10px;color:#2196f3;font-size:13px;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.no-usuarios{text-align:center;padding:40px;color:#999;font-size:16px}.loading-container{display:flex;justify-content:center;align-items:center;min-height:400px;font-size:18px;color:#666}@media(max-width:768px){.codigos-impresion-page{padding:1rem}.page-header h1{font-size:1.5rem}.tabla-codigos{font-size:13px}.tabla-codigos th,.tabla-codigos td{padding:8px}.codigo-input{max-width:150px;font-size:13px}}.calendario-page{max-width:1400px;margin:0 auto;padding:2rem}.page-header{margin-bottom:2rem}.page-header h1{font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.page-header p{color:var(--text-secondary);font-size:1rem}.actions-bar{display:flex;justify-content:space-between;align-items:center;margin-top:1.5rem;margin-bottom:1rem}.btn-crear{padding:.75rem 1.5rem;border:none;border-radius:var(--radius-md);background:var(--primary-color);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-sm)}.btn-crear:hover{background:var(--primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.calendario-container{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.empty-state{text-align:center;padding:60px 20px;color:#7f8c8d}.empty-state p{margin-bottom:20px;font-size:16px}.table-container{background:var(--bg-primary, white);border-radius:var(--radius-lg, 8px);box-shadow:var(--shadow-md, 0 2px 4px rgba(0, 0, 0, .1));overflow:hidden;margin-top:1.5rem}.tabla-dias{width:100%;border-collapse:collapse}.tabla-dias thead{background:var(--bg-secondary, #f8f9fa);border-bottom:2px solid var(--border-color, #ddd)}.tabla-dias th{padding:1rem;text-align:left;font-weight:600;color:var(--text-primary, #2c3e50);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.tabla-dias tbody tr{border-bottom:1px solid var(--border-color, #ddd);transition:background .2s}.tabla-dias tbody tr.clickable-row{cursor:pointer}.tabla-dias tbody tr.clickable-row:hover{background:var(--bg-secondary, #f0f8ff);box-shadow:inset 0 0 0 1px #3498db}.tabla-dias td{padding:1rem;color:var(--text-primary, #2c3e50);font-size:.875rem}.descripcion-cell{color:#555}.text-center{text-align:center}.tipo-badge{display:inline-block;padding:.375rem .75rem;border-radius:var(--radius-sm, 4px);color:#fff;font-size:.75rem;font-weight:600;white-space:nowrap}.recurrente-badge{display:inline-block;padding:.25rem .625rem;background-color:#d1fae5;color:var(--success, #10b981);border:1px solid var(--success, #10b981);border-radius:var(--radius-sm, 4px);font-size:.75rem;font-weight:600}.no-recurrente{color:#7f8c8d}.actions-cell{white-space:nowrap}.btn-action{padding:.5rem 1rem;border:none;border-radius:var(--radius-md, 4px);font-size:1rem;cursor:pointer;transition:all .2s;margin-right:.5rem;line-height:1}.btn-action:last-child{margin-right:0}.btn-editar{background:#fff3cd}.btn-editar:hover{background:#ffc107}.btn-eliminar{background:#fee2e2}.btn-eliminar:hover{background:#dc2626}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px #00000026}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee}.modal-header h2{margin:0;color:#2c3e50}.modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#7f8c8d;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px}.modal-close:hover{background-color:#ecf0f1;color:#2c3e50}.modal-content form{padding:20px}.form-group label{display:block;margin-bottom:8px;font-weight:600;color:#2c3e50}.form-input{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px;transition:border-color .3s}.form-input:focus{outline:none;border-color:#3498db}.checkbox-group{margin:20px 0}.checkbox-label{display:flex;align-items:center;cursor:pointer}.checkbox-label input[type=checkbox]{width:18px;height:18px;margin-right:10px;cursor:pointer}.checkbox-label span{font-weight:600;color:#2c3e50}.campo-ayuda{display:block;margin-top:5px;color:#7f8c8d;font-size:12px;line-height:1.4}.modal-actions{display:flex;gap:10px;justify-content:flex-end;padding-top:20px;border-top:1px solid #eee}.btn-secondary{padding:10px 20px;background-color:#ecf0f1;color:#2c3e50;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;transition:background-color .3s}.btn-secondary:hover{background-color:#d5dbdb}.loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:400px;color:#7f8c8d}.spinner{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin-bottom:20px}@media(max-width:768px){.calendario-page{padding:1rem}.page-header h1{font-size:1.5rem}.table-container{overflow-x:auto}.tabla-dias{min-width:800px}.tabla-dias th,.tabla-dias td{padding:.75rem .5rem;font-size:.8125rem}.modal-content{width:95%}}.importacion-page{padding:20px;background-color:#f5f5f5;min-height:calc(100vh - 60px)}.importacion-container{max-width:1200px;margin:0 auto;background:#fff;padding:30px;border-radius:8px;box-shadow:0 2px 8px #0000001a}.importacion-container h1{color:#333;margin-bottom:10px}.descripcion{color:#666;margin-bottom:30px}.paso-seccion{margin-bottom:30px;padding:20px;border:1px solid #e0e0e0;border-radius:8px;background:#fafafa}.paso-seccion h2{font-size:1.5rem;color:#007bff;margin-bottom:15px;border-bottom:2px solid #007bff;padding-bottom:10px}.file-input-container{display:flex;gap:15px;align-items:center}#file-input,#file-delphos-input{display:none}.file-label{flex:1;padding:12px 20px;background:#fff;border:2px dashed #ccc;border-radius:6px;cursor:pointer;transition:all .3s ease;text-align:center;color:#666}.file-label:hover{border-color:#007bff;background:#f0f8ff}.btn{padding:12px 24px;border:none;border-radius:6px;cursor:pointer;font-size:1rem;transition:all .3s ease;font-weight:500}.btn-primary{background:#007bff;color:#fff}.btn-primary:hover:not(:disabled){background:#0056b3}.btn-success{background:#28a745;color:#fff}.btn-success:hover:not(:disabled){background:#218838}.btn-large{padding:15px 40px;font-size:1.2rem;width:100%}.version-alert{padding:15px;border-radius:6px;margin-bottom:20px;border-left:4px solid}.alert-info{background:#d1ecf1;border-color:#0c5460;color:#0c5460}.alert-warning{background:#fff3cd;border-color:#856404;color:#856404}.tabs{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:20px;border-bottom:2px solid #e0e0e0;padding-bottom:5px}.tab{padding:10px 16px;background:transparent;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:.95rem;transition:all .3s ease;color:#666;white-space:nowrap}.tab:hover{color:#007bff;background:#f8f9fa}.tab.active{color:#007bff;border-bottom-color:#007bff;font-weight:600}.tab-content{background:#fff;padding:20px;border:1px solid #e0e0e0;border-radius:0 0 8px 8px}.tab-panel{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.stats{display:flex;gap:15px;margin-bottom:20px}.stat-badge{padding:8px 16px;border-radius:20px;font-weight:600;font-size:.9rem}.stat-badge.nueva{background:#d4edda;color:#155724}.stat-badge.existente{background:#d1ecf1;color:#0c5460}.stat-badge.error{background:#f8d7da;color:#721c24}.options-box{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:20px;border:1px solid #e0e0e0}.options-box label{display:block;margin-bottom:12px;cursor:pointer;font-weight:500;color:#333}.options-box input[type=checkbox],.options-box input[type=radio]{margin-right:10px;cursor:pointer;transform:scale(1.2)}.options-box small{display:block;margin-left:32px;color:#666;font-size:.85rem}.password-config{margin-top:20px;padding-top:20px;border-top:1px solid #dee2e6}.password-config h4{margin-bottom:15px;color:#495057}.password-input{width:100%;max-width:300px;padding:10px;margin-left:32px;margin-top:10px;border:1px solid #ced4da;border-radius:4px;font-size:1rem}.password-input:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 .2rem #007bff40}.lista-preview{max-height:400px;overflow-y:auto;border:1px solid #e0e0e0;border-radius:6px;padding:10px;background:#fff}.item-preview{padding:12px;margin-bottom:8px;border-radius:6px;transition:all .2s ease}.item-preview:hover{transform:translate(5px)}.item-preview.nueva{background:#d4edda;border-left:4px solid #28a745}.item-preview.existente{background:#d1ecf1;border-left:4px solid #17a2b8}.item-preview.error{background:#f8d7da;border-left:4px solid #dc3545}.item-preview strong{display:block;margin-bottom:4px;color:#333}.item-preview small{color:#666;font-size:.85rem}.badge-existente,.badge-error{display:inline-block;padding:4px 8px;border-radius:12px;font-size:.75rem;font-weight:600;margin-left:10px}.badge-existente{background:#17a2b8;color:#fff}.badge-error{background:#dc3545;color:#fff}.expandir-link{text-align:center;padding:12px;margin-top:10px;color:#007bff;font-weight:600;cursor:pointer;transition:all .2s ease;border-radius:6px;-webkit-user-select:none;user-select:none}.expandir-link:hover{background:#f0f8ff;color:#0056b3}.result-box{padding:25px;border-radius:8px;margin-top:30px;border-left:5px solid}.result-box.success{background:#d4edda;border-color:#28a745}.result-box.error{background:#f8d7da;border-color:#dc3545}.result-box h3{margin-top:0;margin-bottom:15px}.result-stats{margin-top:20px;padding:15px;background:#ffffffb3;border-radius:6px}.result-stats div{padding:8px 0;border-bottom:1px solid rgba(0,0,0,.1);font-weight:500}.result-stats div:last-child{border-bottom:none}details{margin-top:15px}details summary{cursor:pointer;font-weight:600;padding:10px;background:#0000000d;border-radius:4px}details pre{margin-top:10px;padding:15px;background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;overflow-x:auto;font-size:.85rem}.lista-preview::-webkit-scrollbar{width:8px}.lista-preview::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.lista-preview::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.lista-preview::-webkit-scrollbar-thumb:hover{background:#555}@media(max-width:768px){.importacion-container{padding:15px}.file-input-container{flex-direction:column}.tabs{flex-wrap:wrap}.stats{flex-direction:column}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-width:600px;width:90%;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #e0e0e0}.modal-header h2{margin:0;font-size:20px;color:#333}.btn-close-modal{background:none;border:none;font-size:28px;color:#999;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .3s}.btn-close-modal:hover{background:#f5f5f5;color:#333}.btn-close-modal:disabled{cursor:not-allowed;opacity:.5}.modal-body{padding:20px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:20px;border-top:1px solid #e0e0e0}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:600;color:#333;font-size:14px}.form-input,.form-select{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;transition:border-color .3s}.form-input:focus,.form-select:focus{outline:none;border-color:#2196f3}.form-input:disabled,.form-select:disabled{background:#f5f5f5;cursor:not-allowed}.form-select{cursor:pointer}.form-textarea{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;font-family:inherit;resize:vertical;transition:border-color .3s}.form-textarea:focus{outline:none;border-color:#2196f3}.form-textarea:disabled{background:#f5f5f5;cursor:not-allowed}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}.info-box{background:#e3f2fd;border-left:4px solid #2196F3;padding:12px 15px;border-radius:4px;font-size:13px;color:#0d47a1;line-height:1.5}.alert{padding:12px 15px;border-radius:4px;margin-bottom:15px;font-size:14px}.alert-error{background:#ffebee;border-left:4px solid #f44336;color:#c62828}.alert-success{background:#e8f5e9;border-left:4px solid #4CAF50;color:#2e7d32}.btn{padding:10px 20px;border:none;border-radius:6px;cursor:pointer;font-weight:600;font-size:14px;transition:all .3s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:#f5f5f5;color:#333}.btn-secondary:hover:not(:disabled){background:#e0e0e0}.btn-primary{background:#2196f3;color:#fff}.btn-primary:hover:not(:disabled){background:#0b7dda}.modal-historial{max-width:900px}.modal-subtitle{margin:5px 0 0;font-size:14px;color:#666;font-weight:400}.loading-historial{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px}.spinner-small{border:3px solid #f3f3f3;border-top:3px solid #2196F3;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin-bottom:15px}.no-historial{text-align:center;padding:40px 20px;color:#999;font-style:italic}.historial-summary{background:#e3f2fd;padding:12px 15px;border-radius:4px;margin-bottom:20px;font-size:14px;color:#0d47a1}.historial-table-container{overflow-x:auto;border-radius:4px;border:1px solid #e0e0e0}.historial-table{width:100%;border-collapse:collapse;font-size:13px}.historial-table thead{background:#f5f5f5}.historial-table th{padding:12px 10px;text-align:left;font-weight:600;color:#555;border-bottom:2px solid #e0e0e0;white-space:nowrap}.historial-table tbody tr{border-bottom:1px solid #f0f0f0;transition:background .2s}.historial-table tbody tr:hover{background:#f9f9f9}.historial-table td{padding:12px 10px;color:#333}.fecha-cell{font-weight:500;white-space:nowrap}.profesor-cell{font-weight:500}.grupo-cell,.aula-cell{text-align:center}.comentario-cell{max-width:250px;overflow:hidden;text-overflow:ellipsis}.no-comentario{color:#999}.aula-grupo-cell{vertical-align:top}.aulas-grupos-compacto{display:flex;flex-direction:column;gap:2px;line-height:1.3}.linea-compacta{display:flex;gap:6px;font-size:13px}.linea-compacta .etiqueta{font-weight:600;color:#666;min-width:50px}.linea-compacta .valores{color:#333}@media(max-width:640px){.modal-content{width:95%;max-height:95vh}.form-row{grid-template-columns:1fr}.modal-historial{max-width:95%}.historial-table{font-size:12px}.historial-table th,.historial-table td{padding:8px 6px}}.guardias-page{padding:20px;max-width:1600px;min-width:1270px;margin:0 auto}.guardias-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:15px;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.fecha-selector{display:flex;align-items:center;gap:12px;flex:1;justify-content:center}.fecha-input-wrapper{display:flex;align-items:center;gap:10px}.fecha-selector label{font-weight:600}.fecha-selector input[type=date]{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.input-fecha-grande{padding:6px 12px!important;font-size:14px!important;font-weight:600;min-width:200px;text-align:center;cursor:pointer;border:2px solid #2196F3!important}.action-buttons{display:flex;gap:10px}.btn-fecha-nav{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-fecha-nav:hover{background:var(--primary-hover);transform:scale(1.05)}.btn-dia-completo,.btn-varios-dias,.btn-imprimir{padding:10px 20px;border:none;border-radius:6px;cursor:pointer;font-weight:600;transition:all .3s}.btn-dia-completo{background:#4caf50;color:#fff}.btn-varios-dias{background:#2196f3;color:#fff}.btn-imprimir{background:#ff9800;color:#fff}.btn-dia-completo:hover{background:#45a049}.btn-varios-dias:hover{background:#0b7dda}.btn-imprimir:hover{background:#e68900}.cuadrante-section{margin-bottom:40px}.cuadrante-section h2{margin-bottom:15px;color:#333;border-bottom:2px solid #2196F3;padding-bottom:10px}.tramo-container{background:#fff;border-radius:8px;margin-bottom:15px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.tramo-header{background:#f5f5f5;padding:5px 15px;font-weight:600;border-bottom:1px solid #ddd}.tramo-hora{font-size:16px;color:#333}.tramo-content{display:grid;grid-template-columns:1fr 430px;gap:5px;padding:15px}.tramo-content-recreo{grid-template-columns:1fr!important}.ausencias-column{display:flex;flex-direction:column;gap:10px}.ausencia-row{display:grid;grid-template-columns:200px 40px 100px 55px 150px 1fr;gap:10px;align-items:start;padding:0 8px;background:#f9f9f9;border-radius:4px;border-left:3px solid #f44336}.ausencia-profesor{font-weight:600;align-self:center}.ausencia-eliminar{display:flex;align-items:center;justify-content:center;align-self:center}.ausencia-aulas{text-align:center;font-weight:500;font-size:13px;line-height:1.4;align-self:center}.ausencia-grupos{font-size:13px;color:#666;font-weight:500;line-height:1.4;align-self:center}.reserva-row{display:grid;grid-template-columns:160px 40px 100px 150px 150px 1fr;gap:10px;align-items:center;padding:8px;background:#f0f8ff;border-radius:4px;border-left:3px solid #2196F3;margin-top:8px}.reserva-profesor{font-weight:600;color:#1976d2}.reserva-icono{display:flex;align-items:center;justify-content:center}.badge-reserva{font-size:18px;cursor:help}.reserva-aula{text-align:center;font-weight:600;font-size:13px;color:#1976d2}.reserva-motivo-col{font-size:13px;color:#666}.reserva-motivo{font-style:italic}.reserva-asistentes{font-size:12px;color:#999}.btn-delete-ausencia{background:#f5f5f5;color:#666;border:1px solid #ddd;width:24px;height:24px;border-radius:4px;cursor:pointer;font-size:14px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;transition:all .3s}.btn-delete-ausencia:hover{background:#e0e0e0;border-color:#999;transform:scale(1.1)}.ausencia-grupo{font-size:13px;color:#666;text-align:center;font-weight:500}.ausencia-cubre{align-self:center}.select-profesor-cubre{width:100%;padding:6px;border:1px solid #ddd;border-radius:4px;font-size:13px}.ausencia-aula{text-align:center;font-weight:500}.ausencia-comentario{align-self:center}.input-comentario{width:100%;padding:6px;border:1px solid #ddd;border-radius:4px;font-size:13px}.add-ausencia-row{padding:8px;background:#e8f5e9;border-radius:4px}.select-add-ausencia{width:100%;padding:8px;border:1px solid #4CAF50;border-radius:4px;cursor:pointer;background:#fff}.no-ausencias{padding:20px;text-align:center;color:#999;font-style:italic}.guardianes-column{border-left:2px solid #e0e0e0;padding-left:5px}.guardianes-column-recreo{border-left:none;padding-left:0}.guardianes-title{font-weight:600;margin-bottom:2px;color:#555;font-size:14px}.guardianes-list{display:flex;flex-direction:column;gap:4px}.guardianes-list-recreo{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px}.guardian-item{display:flex;align-items:flex-start;justify-content:space-between;padding:2px;background:#f5f5f5;border-radius:4px;font-size:13px;gap:2px}.guardian-nombre{font-weight:500;flex-shrink:1;max-width:240px;min-width:240px;word-wrap:break-word;overflow-wrap:break-word;line-height:1.3}.guardian-numero{font-weight:700;color:#2196f3;margin-right:3px}.badge-biblio{color:#2196f3;font-size:11px;font-weight:600;white-space:nowrap}.sustitucion-badge{color:#ff9800;font-size:11px;font-weight:600;white-space:nowrap;font-style:italic}.guardian-stats{color:#666;font-size:12px;flex:1;margin-left:4px;line-height:1.3;min-width:0}.guardian-ultima{color:#999;white-space:nowrap}.btn-historial{background:transparent;border:none;cursor:pointer;font-size:12px;opacity:.6;transition:opacity .3s}.btn-historial:hover{opacity:1}.no-guardianes{padding:10px;text-align:center;color:#999;font-style:italic;font-size:13px}@media print{.guardias-toolbar,.btn-delete-ausencia,.btn-historial,.add-ausencia-row{display:none!important}}@media(max-width:1024px){.guardias-page{min-width:auto;padding:10px;overflow-x:auto}.page-header{position:sticky;top:0;left:0;right:0;background:#f5f5f5;z-index:100;margin:-10px -10px 10px;padding:10px}.page-header h1{font-size:1.3rem;margin:0}.guardias-toolbar{position:sticky;top:0;left:0;z-index:99;margin-bottom:15px;padding:10px;flex-wrap:wrap;gap:10px}.fecha-selector{flex:1 1 100%;justify-content:center;order:1}.action-buttons{flex:1 1 100%;justify-content:center;order:2;flex-wrap:wrap}.cuadrante-section{margin-bottom:25px}.tramos-list{overflow-x:auto;-webkit-overflow-scrolling:touch}.tramo-container{position:relative;min-width:1100px}.tramo-content{grid-template-columns:1fr 350px;gap:15px;padding:10px}.ausencia-row{grid-template-columns:140px 35px 80px 90px 130px 1fr;gap:8px;padding:6px}.guardian-nombre{max-width:160px;min-width:100px}.guardian-stats{font-size:11px}.btn-dia-completo,.btn-varios-dias,.btn-imprimir{padding:8px 12px;font-size:13px}.btn-fecha-nav{padding:6px 10px;font-size:13px}.input-fecha-grande{min-width:160px;font-size:13px!important}}@media(max-width:768px){.page-header h1{font-size:1.1rem}.guardias-toolbar{padding:8px}.btn-fecha-nav .btn-nav-text{display:none}.btn-fecha-nav{padding:8px 12px}.action-buttons{gap:6px}.btn-dia-completo,.btn-varios-dias,.btn-imprimir{padding:8px 10px;font-size:12px}}@media(max-width:480px){.guardias-page{padding:5px}.page-header{margin:-5px -5px 8px;padding:8px}.page-header h1{font-size:1rem}.fecha-selector{gap:6px}.input-fecha-grande{min-width:130px;padding:4px 8px!important;font-size:12px!important}.btn-fecha-nav{padding:6px 10px}.btn-dia-completo,.btn-varios-dias,.btn-imprimir{padding:6px 8px;font-size:11px}.cuadrante-section h2{font-size:1rem;margin-bottom:10px;padding-bottom:5px}}.imprimir-guardias-page{padding:20px;max-width:1200px;margin:0 auto;background:#fff}.print-header{text-align:center;margin-bottom:30px;padding-bottom:20px;border-bottom:3px solid #333}.print-header h1{margin:0;font-size:calc(28px * var(--font-scale, 1));color:#333;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px}.print-titulo{font-weight:700}.print-fecha-inline{font-weight:400;font-size:calc(28px * var(--font-scale, 1));text-transform:capitalize}.print-turno{font-weight:400;font-size:calc(28px * var(--font-scale, 1))}.print-controls{display:flex;justify-content:center;gap:15px;margin-bottom:30px;padding:15px;background:#f5f5f5;border-radius:8px}.btn-imprimir-ahora,.btn-volver{padding:10px 20px;border:none;border-radius:6px;cursor:pointer;font-weight:600;font-size:14px;transition:all .3s}.btn-imprimir-ahora{background:#2196f3;color:#fff}.btn-imprimir-ahora:hover{background:#0b7dda}.btn-volver{background:#f5f5f5;color:#333;border:1px solid #ddd}.btn-volver:hover{background:#e0e0e0}.font-size-controls{display:flex;align-items:center;gap:8px;padding:5px 10px;background:#fff;border:1px solid #ddd;border-radius:6px}.font-size-label{font-size:13px;color:#555;font-weight:500}.font-size-value{font-size:13px;color:#333;min-width:40px;text-align:center;font-weight:600}.btn-font-size{padding:5px 10px;border:1px solid #ddd;border-radius:4px;background:#f5f5f5;cursor:pointer;font-weight:700;font-size:14px;color:#333;transition:all .2s}.btn-font-size:hover{background:#e0e0e0;border-color:#ccc}.print-tramos{margin-bottom:30px}.print-tramo{margin-bottom:30px;page-break-inside:avoid;border:1px solid #ddd;border-radius:8px;overflow:hidden}.print-tramo-header{background:#f5f5f5;padding:2px 10px;border-bottom:2px solid #ddd}.print-tramo-header h2{margin:0;font-size:calc(18px * var(--font-scale, 1));color:#333;font-weight:600}.print-tramo-content{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,.9fr);gap:10px;padding:10px}.print-tramo-recreo{grid-template-columns:1fr!important}.print-table{width:100%;border-collapse:collapse;font-size:calc(13px * var(--font-scale, 1))}.print-table thead{background:#f9f9f9}.print-table th{padding:4px 5px;text-align:left;font-weight:600;color:#000;border:1px solid #e0e0e0;font-size:calc(12px * var(--font-scale, 1))}.print-table td{padding:2px 5px;border:1px solid #e0e0e0;color:#333;font-size:calc(13px * var(--font-scale, 1))}.print-table .col-profesor-ausente{min-width:240px}.print-table .col-aula{min-width:95px}.print-table .col-grupo{min-width:60px}.print-table .col-entra{min-width:25px}.print-table .col-comentario{min-width:220px}.profesor-ausente{font-weight:600}.grupo,.aula{text-align:center}.sin-asignar{color:#000;font-style:italic}.comentario{font-size:calc(12px * var(--font-scale, 1));color:#000}.print-guardianes-box{padding:8px;background:#f9f9f9;border-radius:4px;border:1px solid #ddd;font-size:calc(12px * var(--font-scale, 1));min-width:0}.print-guardian-line{padding:3px 0;line-height:1.4;font-size:calc(12px * var(--font-scale, 1))}.print-guardian-line:not(:last-child){border-bottom:1px dotted #ddd}.guardian-nombre{font-weight:600;display:inline}.badge-biblio{color:#000;font-size:calc(10px * var(--font-scale, 1));font-weight:600}.sustitucion-badge{color:#000;font-size:calc(10px * var(--font-scale, 1));font-weight:600;font-style:italic}.guardian-stats{font-size:calc(11px * var(--font-scale, 1));color:#000;display:inline}.guardian-ultima{color:#000;font-size:calc(11px * var(--font-scale, 1))}.sin-datos{text-align:center;padding:20px;color:#000;font-style:italic;font-size:calc(14px * var(--font-scale, 1))}.print-empty-row td{height:24px}.sin-tramos{text-align:center;padding:40px;color:#999}.print-recreo-guardianes{width:100%}.print-guardianes-recreo-box{padding:15px;background:#f9f9f9;border-radius:4px;border:1px solid #ddd;text-align:center;line-height:2;font-size:calc(14px * var(--font-scale, 1))}.guardian-recreo-nombre{font-weight:600;display:inline;margin:0 5px;font-size:calc(14px * var(--font-scale, 1))}.guardian-numero{font-weight:700;color:#000;margin-right:3px}.print-footer{text-align:center;padding-top:20px;border-top:1px solid #ddd;color:#999;font-size:12px;margin-top:30px}.print-loading,.print-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:40px}.print-loading .spinner{border:4px solid #f3f3f3;border-top:4px solid #2196F3;border-radius:50%;width:50px;height:50px;animation:spin 1s linear infinite;margin-bottom:20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.print-error{text-align:center}.print-error h2{color:#f44336;margin-bottom:15px}@media print{@page{size:A3;margin:10mm}.imprimir-guardias-page{padding:5px;max-width:100%}.no-print,.print-controls{display:none!important}.print-header{margin-bottom:10px;padding-bottom:5px;border-bottom:2px solid #000}.print-header h1{font-size:calc(14px * var(--font-scale, 1));margin:0}.print-titulo{font-weight:700}.print-fecha-inline,.print-turno{font-weight:400;font-size:calc(14px * var(--font-scale, 1))}.print-tramos{margin-bottom:10px}.print-tramo{margin-bottom:8px;border:1px solid #333;page-break-inside:avoid}.print-tramo-header{background:#f0f0f0!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;padding:2px 10px}.print-tramo-header h2{font-size:calc(12px * var(--font-scale, 1));margin:0}.print-tramo-content{padding:4px;gap:6px;display:grid;grid-template-columns:65% 33%}.print-ausencias-section,.print-guardianes-section{overflow:hidden;min-width:0}.print-table{font-size:calc(9px * var(--font-scale, 1));table-layout:fixed;width:100%}.print-table .col-profesor-ausente{width:35%}.print-table .col-aula{width:16%}.print-table .col-grupo{width:12%}.print-table .col-entra{width:6%}.print-table .col-comentario{width:31%}.print-table th{background:#f0f0f0!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid #333;padding:3px 4px;font-size:calc(9px * var(--font-scale, 1));white-space:nowrap;overflow:hidden}.print-table td{border:1px solid #333;padding:0 4px;font-size:calc(9px * var(--font-scale, 1));overflow:hidden;text-overflow:ellipsis}.print-guardianes-box{background:#f5f5f5!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid #333;padding:4px;font-size:calc(9px * var(--font-scale, 1))}.print-guardian-line{padding:1px 0;font-size:calc(9px * var(--font-scale, 1));line-height:1.2}.guardian-stats,.guardian-ultima{font-size:calc(8px * var(--font-scale, 1))}.sin-datos{padding:4px;font-size:calc(9px * var(--font-scale, 1))}.print-empty-row td{height:20px}.print-footer{font-size:calc(8px * var(--font-scale, 1));margin-top:10px;padding-top:10px}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-guardianes-recreo-box{background:#f5f5f5!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid #333;padding:6px 8px;font-size:calc(9px * var(--font-scale, 1));line-height:1.6}.guardian-recreo-nombre{font-size:calc(9px * var(--font-scale, 1));margin:0 2px}.guardian-numero{font-weight:700;color:#000!important;margin-right:2px}}.tutores-page .page-header-content{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.btn-modificar-tutores{display:inline-flex;align-items:center;padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:600;text-decoration:none;transition:all .2s}.btn-modificar-tutores:hover{opacity:.9;transform:translateY(-1px)}.tutores-info-banner{background:#fff8e1;border:1px solid #ffe082;border-radius:var(--radius-md);padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#6d4c00}.tutores-search-container{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.tutores-search-input{flex:1;padding:.625rem 1rem;border:2px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;color:var(--text-primary);background:var(--bg-primary);transition:all .2s}.tutores-search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #638bfa1a}.tutores-search-input::placeholder{color:var(--text-secondary)}.tutores-search-count{font-size:.8rem;color:var(--text-secondary);white-space:nowrap}.grupo-nombre-cell{white-space:nowrap}.grupo-info{display:flex;flex-direction:row;align-items:baseline;gap:.3rem}.tutor-mobile{display:none}.grupo-curso{font-size:.85rem;color:var(--text-secondary)}.tutor-nombre-cell{width:50%}.tutor-display{display:flex;align-items:center;gap:.5rem}.tutor-nombre{color:var(--text-primary)}.tutor-sin-asignar{color:var(--text-secondary);font-style:italic}.tutor-sustituto-info{font-size:.8rem;color:var(--text-secondary);font-style:italic;font-weight:400}.btn-editar-tutor{background:none;border:none;cursor:pointer;padding:.15rem .3rem;font-size:.85rem;line-height:1;border-radius:var(--radius-sm);opacity:.5;transition:opacity .2s}.btn-editar-tutor:hover{opacity:1}.tutor-select-inline{width:100%;padding:.4rem .6rem;border:2px solid var(--primary-color);border-radius:var(--radius-md);font-size:.875rem;color:var(--text-primary);background:var(--bg-primary);cursor:pointer;box-shadow:0 0 0 3px #638bfa1a}.tutor-select-inline:focus{outline:none}.tutores-no-results{text-align:center;padding:2rem 1rem!important;color:var(--text-secondary);font-style:italic}@media(max-width:768px){.tutores-page{padding:1rem}.tutores-page .page-header-content{flex-direction:column;align-items:flex-start;gap:.75rem}.btn-modificar-tutores{width:100%;justify-content:center}.tutores-search-container{flex-direction:column;align-items:stretch}.tutores-table{table-layout:fixed}.tutores-table thead tr{display:flex}.tutores-table tbody tr{display:block}.th-tutor,.tutor-nombre-cell{display:none!important}.grupo-nombre-cell{display:block!important;white-space:normal;word-wrap:break-word;overflow-wrap:break-word;width:100%}.grupo-info{flex-wrap:wrap}.tutor-mobile{display:block;margin-top:.25rem;font-size:.85rem;color:var(--text-secondary)}.tutores-table th,.tutores-table td{padding:.625rem .75rem}}.tutores-page{padding:2rem;max-width:900px;margin:0 auto}.tutores-page .page-header-content{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.tutores-page .page-header-content h1{margin:0;font-size:1.5rem;color:var(--text-primary)}.tutores-table-container{background:var(--bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.tutores-table{width:100%;border-collapse:collapse}.tutores-table thead{background:var(--bg-secondary);border-bottom:2px solid var(--border-color)}.tutores-table th{padding:.875rem 1rem;text-align:left;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.tutores-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border-color);vertical-align:middle}.tutores-table tbody tr:last-child td{border-bottom:none}.tutores-table tbody tr:hover{background:var(--bg-secondary)}.grupo-nombre-cell{display:flex;flex-direction:row;align-items:baseline;gap:.3rem;white-space:nowrap}.grupo-nombre{font-weight:600;color:var(--text-primary)}.grupo-curso{font-size:.8rem;color:var(--text-secondary)}.tutor-select-cell{width:50%}.tutor-select{width:100%;padding:.5rem .75rem;border:2px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;color:var(--text-primary);background:var(--bg-primary);cursor:pointer;transition:all .2s}.tutor-select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #638bfa1a}.tutor-select:hover{border-color:var(--primary-color)}.btn-volver-tutores{display:inline-flex;align-items:center;padding:.5rem 1rem;background:var(--bg-primary);color:var(--primary-color);border:2px solid var(--primary-color);border-radius:var(--radius-md);font-size:.875rem;font-weight:600;text-decoration:none;transition:all .2s}.btn-volver-tutores:hover{background:var(--primary-color);color:#fff}@media(max-width:768px){.tutores-page{padding:1rem}.tutores-table th,.tutores-table td{padding:.625rem .75rem}.tutor-select{font-size:.8rem}}.ea-page{max-width:1400px;margin:0 auto;padding:1.5rem 2rem}.ea-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.ea-header-left h1{font-size:1.75rem;font-weight:700;color:var(--text-primary, #2c3e50);margin:0}.ea-header-right{display:flex;align-items:center;gap:.75rem}.ea-view-toggle{display:flex;border:1px solid var(--border-color, #ddd);border-radius:var(--radius-md, 6px);overflow:hidden}.ea-view-btn{padding:.4rem .85rem;border:none;background:var(--bg-primary, white);color:var(--text-secondary, #7f8c8d);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s;border-right:1px solid var(--border-color, #ddd)}.ea-view-btn:last-child{border-right:none}.ea-view-btn:hover{background:var(--bg-secondary, #f0f0f0)}.ea-view-btn.ea-view-active{background:var(--primary-color, #3498db);color:#fff}.ea-btn-primary{padding:.5rem 1rem;border:none;border-radius:var(--radius-md, 6px);background:var(--primary-color, #3498db);color:#fff;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}.ea-btn-primary:hover{background:var(--primary-hover, #2980b9);transform:translateY(-1px)}.ea-btn-add-top{padding:.4rem .85rem;font-size:.8rem}.ea-btn-hoy{padding:.4rem .85rem;border:1px solid #e67e22;border-radius:var(--radius-md, 6px);background:var(--bg-primary, white);color:#e67e22;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s}.ea-btn-hoy:hover{background:#fef5ec;border-color:#d35400;color:#d35400}.ea-btn-icon{background:none;border:1px solid var(--border-color, #ddd);border-radius:var(--radius-sm, 4px);padding:.1rem .2rem;cursor:pointer;font-size:1rem;transition:all .2s;color:var(--text-secondary, #7f8c8d)}.ea-btn-icon:hover{background:var(--bg-secondary, #f0f0f0);color:var(--text-primary, #2c3e50)}.ea-btn-icon-danger:hover{background:#fee2e2;color:#dc2626;border-color:#fca5a5}.ea-empty{text-align:center;padding:4rem 2rem;color:var(--text-secondary, #7f8c8d)}.ea-empty p{margin-bottom:1rem;font-size:1rem}.ea-agenda{display:flex;flex-direction:column;gap:1.5rem}.ea-agenda-grupo{background:var(--bg-primary, white);border-radius:var(--radius-lg, 8px);box-shadow:var(--shadow-sm, 0 1px 3px rgba(0,0,0,.08));overflow:hidden}.ea-agenda-mes{margin:0;padding:.75rem 1.25rem;background:var(--bg-secondary, #f8f9fa);color:var(--text-primary, #2c3e50);font-size:1rem;font-weight:700;border-bottom:1px solid var(--border-color, #eee)}.ea-agenda-lista{display:flex;flex-direction:column}.ea-agenda-item{display:flex;align-items:flex-start;gap:1.25rem;padding:.875rem 1.25rem;border-bottom:1px solid var(--border-color, #f0f0f0);transition:background .15s;cursor:default}.ea-agenda-item:last-child{border-bottom:none}.ea-agenda-item:hover{background:#f7fafc}.ea-agenda-fechas{min-width:180px;font-size:.8rem;color:var(--primary-color, #3498db);font-weight:600;padding-top:2px}.ea-agenda-info{flex:1;display:flex;flex-direction:column;gap:.2rem}.ea-agenda-titulo{font-weight:600;color:var(--text-primary, #2c3e50);font-size:.9rem}.ea-agenda-desc{color:var(--text-secondary, #7f8c8d);font-size:.8rem;line-height:1.4}.ea-agenda-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem;min-width:140px}.ea-agenda-autor-row{display:flex;align-items:center;gap:.35rem}.ea-agenda-creador{font-size:.75rem;color:var(--text-secondary, #7f8c8d);font-weight:500}.ea-agenda-creacion{font-size:.7rem;color:#aaa}.ea-mensual{background:var(--bg-primary, white);border-radius:var(--radius-lg, 8px);box-shadow:var(--shadow-sm, 0 1px 3px rgba(0,0,0,.08));padding:1rem}.ea-mensual-nav{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:1rem}.ea-nav-btn{background:none;border:1px solid var(--border-color, #ddd);border-radius:var(--radius-sm, 4px);padding:.3rem .75rem;font-size:1rem;cursor:pointer;color:var(--text-primary, #2c3e50);transition:all .15s;font-weight:600}.ea-nav-btn:hover{background:var(--bg-secondary, #f0f0f0)}.ea-mensual-titulo{margin:0;font-size:1.1rem;font-weight:700;color:var(--text-primary, #2c3e50);min-width:180px;text-align:center}.ea-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--border-color, #e0e0e0);border-radius:var(--radius-md, 6px);overflow:hidden}.ea-cal-header{padding:.4rem;text-align:center;font-weight:700;font-size:.75rem;color:var(--text-secondary, #7f8c8d);background:var(--bg-secondary, #f8f9fa);border-bottom:1px solid var(--border-color, #e0e0e0)}.ea-cal-cell{min-height:80px;border-right:1px solid var(--border-color, #f0f0f0);border-bottom:1px solid var(--border-color, #f0f0f0);padding:.2rem;cursor:pointer;transition:background .15s;overflow:hidden}.ea-cal-cell:nth-child(7n){border-right:none}.ea-cal-empty{background:#fafafa;cursor:default}.ea-cal-day:hover{background:#f0f7ff}.ea-cal-today{border:2px solid #e67e22!important;background:#fff0e0}.ea-cal-daynum{display:block;font-size:.75rem;font-weight:600;color:var(--text-primary, #2c3e50);padding:.15rem .3rem}.ea-cal-today .ea-cal-daynum{color:#e67e22;font-weight:700}.ea-cal-festivo{background:#fff0f0!important}.ea-cal-festivo:hover{background:#ffe5e5!important}.ea-cal-today.ea-cal-festivo{background:#fff0e0!important}.ea-cal-daynum-festivo{color:#dc2626!important}.ea-cal-nolectivo-desc{font-size:.55rem;color:#dc2626;padding:0 .3rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-style:italic;opacity:.85}.ea-cal-events{display:flex;flex-direction:column;gap:1px}.ea-cal-event-pill{font-size:.65rem;padding:.1rem .3rem;background:#e8f4fd;color:#2980b9;border-radius:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4;border-left:2px solid #3498db}.ea-cal-event-more{font-size:.6rem;color:var(--text-secondary, #999);padding:.1rem .3rem;font-weight:500}.ea-mensual-eventos{margin-top:1.25rem;border-top:1px solid var(--border-color, #e0e0e0);padding-top:1rem}.ea-mensual-eventos-titulo{margin:0 0 .75rem;font-size:.95rem;font-weight:700;color:var(--text-primary, #2c3e50)}.ea-mensual-eventos-lista{display:flex;flex-direction:column;gap:.5rem}.ea-mensual-evento-item{display:flex;align-items:flex-start;gap:1rem;padding:.6rem .75rem;background:#f8fafb;border-radius:var(--radius-md, 6px);border-left:3px solid var(--primary-color, #3498db);cursor:default;transition:background .15s}.ea-mensual-evento-item:hover{background:#f0f7ff}.ea-mensual-evento-fechas{min-width:150px;font-size:.78rem;color:var(--primary-color, #3498db);font-weight:600;padding-top:1px}.ea-mensual-evento-info{flex:1;display:flex;flex-direction:column;gap:.15rem}.ea-mensual-evento-actions{display:flex;align-items:flex-start}.ea-mensual-evento-titulo{font-weight:600;color:var(--text-primary, #2c3e50);font-size:.85rem}.ea-mensual-evento-desc{color:var(--text-secondary, #7f8c8d);font-size:.78rem;line-height:1.4}.ea-anual{background:var(--bg-primary, white);border-radius:var(--radius-lg, 8px);box-shadow:var(--shadow-sm, 0 1px 3px rgba(0,0,0,.08));padding:1.25rem}.ea-anual-titulo{text-align:center;margin:0 0 1.25rem;font-size:1.1rem;font-weight:700;color:var(--text-primary, #2c3e50)}.ea-anual-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem}.ea-mini-mes{border:1px solid var(--border-color, #e8e8e8);border-radius:var(--radius-md, 6px);overflow:visible}.ea-mini-mes-header{text-align:center;padding:.35rem;font-weight:700;font-size:.7rem;background:var(--bg-secondary, #f8f9fa);color:var(--text-primary, #2c3e50);border-bottom:1px solid var(--border-color, #e8e8e8);border-radius:var(--radius-md, 6px) var(--radius-md, 6px) 0 0}.ea-mini-grid{display:grid;grid-template-columns:repeat(7,1fr)}.ea-mini-header{text-align:center;font-size:.55rem;font-weight:700;color:#aaa;padding:.15rem 0}.ea-mini-cell{text-align:center;font-size:.6rem;padding:.2rem 0;color:var(--text-primary, #444);line-height:1.3}.ea-mini-day{cursor:pointer;border-radius:2px;transition:background .15s;position:relative}.ea-mini-day:hover{background:#e8f4fd}.ea-mini-day[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);background:#2c3e50;color:#fff;padding:4px 8px;border-radius:4px;font-size:.65rem;font-weight:400;white-space:pre-line;line-height:1.4;z-index:100;pointer-events:none;opacity:0;transition:opacity .15s;max-width:180px;width:max-content;text-align:left;box-shadow:0 2px 8px #0003}.ea-mini-day[data-tooltip]:hover:after{opacity:1}.ea-mini-today{background:#fff3e0!important;font-weight:700;color:#e67e22!important;border:1px solid #e67e22;border-radius:50%}.ea-mini-has-event{background:#e3f2fd;font-weight:600;color:#1976d2!important}.ea-mini-today.ea-mini-has-event{background:#fff3e0!important;box-shadow:0 0 0 1px #1976d2}.ea-mini-festivo{color:#dc2626!important;background:#fff0f0}.ea-mini-festivo.ea-mini-has-event{color:#dc2626!important;background:#fce4ec}.ea-mini-today.ea-mini-festivo{color:#e67e22!important;background:#fff3e0!important}.ea-day-modal{max-width:550px}.ea-day-body{padding:1.25rem}.ea-day-empty{text-align:center;color:var(--text-secondary, #999);padding:1rem 0}.ea-day-list{display:flex;flex-direction:column;gap:.75rem}.ea-day-event{padding:.75rem;background:#f8fafb;border-radius:var(--radius-md, 6px);border-left:3px solid var(--primary-color, #3498db)}.ea-day-event-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.3rem}.ea-day-event-titulo{font-weight:700;color:var(--text-primary, #2c3e50);font-size:.95rem}.ea-day-event-actions{display:flex;gap:.4rem}.ea-day-event-fechas{font-size:.8rem;color:var(--primary-color, #3498db);font-weight:500;margin-bottom:.3rem}.ea-day-event-desc{font-size:.85rem;color:var(--text-secondary, #666);line-height:1.5}.ea-day-footer{padding:.75rem 1.25rem;border-top:1px solid var(--border-color, #eee);display:flex;justify-content:flex-end}.ea-form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.ea-textarea{resize:vertical;min-height:60px;font-family:inherit}@media(max-width:1200px){.ea-anual-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:992px){.ea-anual-grid{grid-template-columns:repeat(3,1fr)}.ea-agenda-item{flex-direction:column;gap:.5rem}.ea-agenda-meta{flex-direction:row;align-items:center;min-width:auto}.ea-agenda-autor-row{gap:.25rem}.ea-agenda-fechas{min-width:auto}}@media(max-width:768px){.ea-page{padding:1rem}.ea-header{flex-direction:column;align-items:stretch}.ea-header-left h1{font-size:1.35rem}.ea-header-right{justify-content:space-between}.ea-anual-grid{grid-template-columns:repeat(2,1fr)}.ea-cal-cell{min-height:60px}.ea-cal-event-pill{font-size:.6rem}.ea-cal-nolectivo-desc{font-size:.5rem}.ea-form-row{grid-template-columns:1fr}.ea-mensual-evento-item{flex-direction:column;gap:.3rem}.ea-mensual-evento-fechas{min-width:auto}.ea-mensual-evento-actions{align-self:flex-end}}@media(max-width:480px){.ea-anual-grid{grid-template-columns:1fr}.ea-view-btn{padding:.35rem .6rem;font-size:.75rem}.ea-cal-cell{min-height:50px}}.ea-adjuntos{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}.ea-adjuntos-compact{gap:.25rem}.ea-adjunto-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem .3rem .55rem;background:#e8f4fd;border:1px solid #90caf9;border-radius:1rem;font-size:.78rem;font-weight:500;color:#1565c0;cursor:pointer;transition:all .2s;max-width:260px}.ea-adjunto-chip:hover{background:#bbdefb;border-color:var(--primary, #2196F3);color:#0d47a1;box-shadow:0 1px 4px #2196f340}.ea-adjunto-icon{font-size:1rem;flex-shrink:0}.ea-adjunto-nombre{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ea-adjunto-download{font-size:.75rem;font-weight:700;flex-shrink:0;opacity:.5;transition:opacity .2s}.ea-adjunto-chip:hover .ea-adjunto-download{opacity:1}.ea-adjuntos-existentes,.ea-adjuntos-nuevos{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.5rem}.ea-adjunto-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem .65rem;background:var(--bg-secondary, #f8f9fa);border:1px solid var(--border-color, #e0e0e0);border-radius:.5rem;font-size:.8rem}.ea-adjunto-nuevo{border-style:dashed;background:#fafff5}.ea-adjunto-info{display:flex;align-items:center;gap:.4rem;min-width:0;flex:1}.ea-adjunto-item-nombre{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary, #333)}.ea-adjunto-size{color:var(--text-tertiary, #999);font-size:.72rem;white-space:nowrap}.ea-adjunto-badge-new{font-size:.6rem;font-weight:600;text-transform:uppercase;color:#4caf50;background:#e8f5e9;padding:.1rem .4rem;border-radius:.25rem;white-space:nowrap}.ea-btn-adjunto{display:inline-flex;align-items:center;gap:.3rem;padding:.45rem .9rem;border:1px dashed var(--border-color, #bbb);border-radius:.5rem;background:transparent;color:var(--text-secondary, #666);cursor:pointer;font-size:.8rem;transition:all .2s}.ea-btn-adjunto:hover{border-color:var(--primary, #2196F3);color:var(--primary, #2196F3);background:var(--primary-light, #e3f2fd)}.ea-day-event-adjuntos{margin-top:.5rem}.ea-agenda-horas,.ea-mensual-horas,.ea-day-horas{display:block;font-size:.75rem;color:#5dade2;font-weight:500;margin-top:.1rem}.ea-agenda-filtro{display:flex;justify-content:center;padding:.25rem 0 .5rem}.ea-btn-mostrar-pasados{background:transparent;border:1px solid var(--border-color, #ddd);color:var(--text-secondary, #7f8c8d);padding:.35rem 1rem;border-radius:var(--radius-md, 6px);font-size:.78rem;cursor:pointer;transition:all .15s}.ea-btn-mostrar-pasados:hover{background:var(--bg-secondary, #f8f9fa);color:var(--text-primary, #2c3e50);border-color:var(--text-secondary, #7f8c8d)}.ea-btn-mostrar-pasados--active{border-color:var(--primary-color, #3498db);color:var(--primary-color, #3498db)}.ea-agenda-item--pasado{opacity:.45}.ea-agenda-item--pasado:hover{opacity:.65}.ea-agenda-item--hoy{border-left:3px solid #e67e22}.ea-agenda-item--hoy .ea-agenda-titulo{color:inherit}:root{--primary-color: #2563eb;--primary-hover: #1d4ed8;--primary-light: #dbeafe;--secondary-color: #64748b;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--border-color: #e2e8f0;--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--success: #10b981;--error: #ef4444;--warning: #f59e0b;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-secondary);color:var(--text-primary);font-size:14px;line-height:1.5}.App{min-height:100vh}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;outline:none}input,textarea,select{font-family:inherit;font-size:inherit;color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.5rem .75rem;transition:border-color .2s,box-shadow .2s}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-light)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-tertiary)}::-webkit-scrollbar-thumb{background:var(--secondary-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:1rem}.spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
