*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:auto;min-height:100%}
body{font-family:'Plus Jakarta Sans',sans-serif;background:#f7f9fb;color:#191c1e;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overflow-x:clip;padding-bottom:80px}

#app{display:flex;flex-direction:column;min-height:100vh;position:relative}

.app-content{flex:1;overflow:visible;padding-left:16px;padding-right:16px;max-width:1200px;margin:0 auto;width:100%}

.material-symbols-outlined{font-variation-settings:'FILL'0,'wght'400,'GRAD'0,'opsz'24;user-select:none}

.btn-press{transition:transform .1s ease-out}
.btn-press:active{transform:scale(.96)}

.skeleton{background:linear-gradient(90deg,#eceeef 25%,#f2f4f5 50%,#eceeef 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:12px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

.page-enter-active,.page-leave-active{transition:all .25s ease}
.page-enter-from{opacity:0;transform:translateY(16px)}
.page-leave-to{opacity:0;transform:translateY(-8px)}

[hidden]{display:none!important}

::view-transition-group(*){animation-duration:.4s;animation-timing-function:cubic-bezier(.4,0,.2,1)}
::view-transition-old(*):only-child{animation:fade-out .25s ease forwards}
::view-transition-new(*):only-child{animation:fade-in .3s ease .1s both}
@keyframes fade-out{to{opacity:0;transform:scale(.9)}}
@keyframes fade-in{from{opacity:0;transform:scale(.9)}}

.notification-container{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:10000;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:90%;width:400px;pointer-events:none}
.toast{pointer-events:auto;padding:14px 20px;border-radius:14px;color:#fff;font-size:14px;font-weight:600;box-shadow:0 8px 32px rgba(0,0,0,.18);opacity:0;transition:all .4s cubic-bezier(.34,1.56,.64,1);display:flex;align-items:center;gap:12px;width:100%;text-align:center;justify-content:center}
.toast.show{opacity:1}
.toast-success{background:linear-gradient(135deg,#244e5f,#1d3e4c)}
.toast-error{background:linear-gradient(135deg,#ba1a1a,#8b0000)}
.toast-warning{background:linear-gradient(135deg,#d97706,#b45309);color:#fff}
.toast-info{background:linear-gradient(135deg,#244e5f,#1d3e4c)}
.toast .icon{font-size:22px;flex-shrink:0}

.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9000;display:flex;align-items:center;justify-content:center;padding:16px;animation:fadeIn .2s ease}
.modal-card{background:#fff;border-radius:20px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease;padding:24px}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}

.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}
.hide-scrollbar::-webkit-scrollbar{display:none}

.loader-dots{display:flex;gap:6px;padding:20px 0;justify-content:center}
.loader-dots span{width:10px;height:10px;background:#244e5f;border-radius:50%;animation:bounce 1.4s ease-in-out infinite both}
.loader-dots span:nth-child(1){animation-delay:-.32s}
.loader-dots span:nth-child(2){animation-delay:-.16s}
.loader-dots span:nth-child(3){animation-delay:0s}
@keyframes bounce{0%,80%,100%{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}

html.embed-mode .app-content{padding-left:8px;padding-right:8px}

.input-base{width:100%;border:1px solid #cbd5e1;border-radius:12px;padding:12px 14px;font-size:15px;background:#fff;color:#191c1e;outline:none;transition:border-color .15s}
.input-base:focus{border-color:#244e5f;box-shadow:0 0 0 3px rgba(36,78,95,.15)}
label.lbl{display:block;font-size:13px;font-weight:600;color:#475569;margin-bottom:6px}

.lightbox-overlay{position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:20000;display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .2s ease}
.lightbox-img{max-width:100%;max-height:90vh;border-radius:12px;object-fit:contain}
.lightbox-close{position:absolute;top:16px;right:16px;background:rgba(255,255,255,.18);border:none;color:#fff;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}

.modulo-splash-enter-active,.modulo-splash-leave-active{transition:opacity .25s ease}
.modulo-splash-enter-from,.modulo-splash-leave-to{opacity:0}
@keyframes modulo-pop{0%{transform:scale(.7);opacity:0}60%{transform:scale(1.06);opacity:1}100%{transform:scale(1);opacity:1}}
.modulo-splash-contenido{animation:modulo-pop .5s cubic-bezier(.34,1.56,.64,1)}

@keyframes slide-up{from{transform:translateY(100%)}to{transform:translateY(0)}}
#calendarGrid{grid-auto-rows:minmax(70px,auto)}
@media(min-width:641px){#calendarGrid{grid-auto-rows:minmax(90px,auto)}}
@media(min-width:1024px){#calendarGrid{grid-auto-rows:minmax(100px,auto)}}
.calendar-cell{overflow:hidden;min-height:56px}
@media(max-width:768px){.calendar-day-button{min-height:70px!important}}
