/**
 * Institucional Gob - Template Stylesheet
 * Government Institutional Portal Template for Joomla 5.x / 6.x
 * Bootstrap 5.3 compatible | WCAG 2.1 AA
 */

/* ==========================================================================
   Critical CSS - Above the fold
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body.institucional-gob{
    margin:0;
    font-family:var(--font-body);
    font-size:1rem;
    line-height:1.6;
    color:var(--dark);
    background:#fff;
    overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent);text-decoration:none;transition:color .2s ease}
a:hover,a:focus{color:var(--primary)}
h1,h2,h3,h4,h5,h6{
    font-family:var(--font-heading);
    font-weight:600;
    line-height:1.3;
    color:var(--primary);
}
.skip-link{
    position:absolute;
    top:-100px;
    left:50%;
    transform:translateX(-50%);
    z-index:10000;
    padding:.75rem 1.5rem;
    background:var(--secondary);
    color:var(--dark);
    font-weight:600;
    border-radius:0 0 .5rem .5rem;
}
.skip-link:focus{
    top:0;
    outline:3px solid var(--accent);
    outline-offset:2px;
}

/* ==========================================================================
   Layout
   ========================================================================== */
.layout-boxed .container-fluid.container-xl{
    max-width:1320px;
    margin:0 auto;
}
.section-padding{padding:4rem 0}
.section-title{
    font-size:clamp(1.5rem,3vw,2rem);
    margin-bottom:1rem;
    position:relative;
}
.section-title::after{
    content:'';
    display:block;
    width:60px;
    height:4px;
    background:var(--secondary);
    margin-top:.5rem;
}
.section-title.text-center::after{margin-left:auto;margin-right:auto}
.bg-light{background-color:var(--light)!important}
.bg-primary-gradient{background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%)}

/* ==========================================================================
   Topbar - Ticker marquee
   ========================================================================== */
.topbar{
    background:#006c5b;
    background:var(--primary);
    color:#fff;
    font-size:.875rem;
    padding:.45rem 0;
    overflow:hidden;
}
.topbar-inner{gap:1.5rem;min-height:36px}
.topbar-ticker{
    overflow:hidden;
    position:relative;
    mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
}
.ticker-wrap{overflow:hidden;width:100%}
.ticker-track{
    display:flex;
    width:max-content;
    animation:ticker-scroll 40s linear infinite;
}
.topbar-ticker:hover .ticker-track,
.topbar-ticker:focus-within .ticker-track{
    animation-play-state:paused;
}
.ticker-item{
    display:inline-flex;
    align-items:center;
    padding:0 2.5rem;
    white-space:nowrap;
    font-weight:500;
    letter-spacing:.2px;
}
.ticker-item::after{
    content:'•';
    margin-left:2.5rem;
    color:var(--secondary);
    font-size:1.2rem;
}
@keyframes ticker-scroll{
    0%{transform:translateX(0)}
    100%{transform:translateX(-50%)}
}
.topbar a{color:#fff;text-decoration:none}
.topbar a:hover,.topbar a:focus{color:var(--secondary)}
.social-links a{
    display:flex;align-items:center;justify-content:center;
    width:32px;height:32px;
    background:rgba(255,255,255,.15);
    border-radius:50%;
    color:#fff;
    transition:background .2s,transform .2s;
}
.social-links a:hover,.social-links a:focus{
    background:var(--secondary);
    color:var(--dark);
    transform:translateY(-2px);
}

/* ==========================================================================
   Header
   ========================================================================== */
.site-header{
    background:#fff;
    box-shadow:0 2px 10px rgba(0,0,0,.08);
    z-index:1000;
    overflow:visible;
}
.has-sticky-header .site-header{
    position:sticky;
    top:0;
}
.header-main{padding:1rem 0}
.site-logo{width:60px;height:60px;object-fit:contain}
.brand-link{text-decoration:none;color:inherit}
.brand-link:hover .institution-name{color:var(--accent)}
.institution-name{
    display:block;
    font-family:var(--font-heading);
    font-weight:700;
    font-size:1.1rem;
    color:var(--primary);
    line-height:1.2;
}
.institution-name-line{
    display:block;
}
.institution-tagline{
    font-size:.8rem;
    color:#6c757d;
}
.header-search-form{
    position:relative;
    max-width:280px;
}
.header-search-form .form-control{
    border-radius:2rem 0 0 2rem;
    border:2px solid var(--light);
    padding-left:1rem;
    font-size:.875rem;
}
.header-search-form .form-control:focus{
    border-color:var(--accent);
    box-shadow:0 0 0 .2rem rgba(31,111,178,.25);
}
.btn-search{
    border-radius:0 2rem 2rem 0;
    background:var(--primary);
    color:#fff;
    border:2px solid var(--primary);
    padding:.375rem 1rem;
}
.btn-search:hover{background:var(--accent);border-color:var(--accent);color:#fff}
.header-portal-search-results{
    position:absolute;
    top:calc(100% + .35rem);
    left:0;
    right:0;
    z-index:1200;
    padding:.85rem 1rem;
    border:1px solid rgba(0,48,108,.15);
    border-radius:.65rem;
    background:#fff;
    box-shadow:0 12px 28px rgba(0,0,0,.12);
    max-height:18rem;
    overflow:auto;
}
.header-portal-search-results-title{
    font-size:.75rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.03em;
    color:#00306c;
}
.header-portal-search-results-link{
    display:block;
    padding:.35rem 0;
    color:#00306c;
    font-size:.875rem;
    font-weight:600;
    text-decoration:none;
}
.header-portal-search-results-link:hover,
.header-portal-search-results-link:focus{
    color:var(--accent,#1f6fb2);
    text-decoration:underline;
}
.btn-menu-toggle{
    background:var(--primary);
    color:#fff;
    border:none;
    padding:.5rem .75rem;
    border-radius:.375rem;
    font-size:1.5rem;
}
.btn-menu-toggle:hover,.btn-menu-toggle:focus{background:var(--accent);color:#fff}

/* ==========================================================================
   Navigation
   ========================================================================== */
.main-navigation{
    background:var(--primary);
    border-top:3px solid var(--secondary);
    overflow-x:auto;
    overflow-y:hidden;
    -ms-overflow-style:none;
    scrollbar-width:none;
}
.main-navigation::-webkit-scrollbar{
    display:none;
}
.main-navigation > .container-fluid.container-xl{
    overflow:visible;
}
.nav-menu > li.ces-editor-nav-item > a .bi{
    font-size:.85rem;
    opacity:.85;
    margin-right:.15rem;
}
.ces-editor-submenu .ces-editor-nav-item > a{
    display:flex;
    align-items:center;
    gap:.35rem;
}
.home-contact-editor-list{
    display:flex;
    flex-direction:column;
    gap:.5rem;
}
.home-contact-editor-item a{
    display:flex;
    align-items:center;
    gap:.4rem;
    color:var(--primary);
    font-size:.9rem;
    text-decoration:none;
}
.home-contact-editor-item a:hover{
    color:var(--accent);
}
.home-contact-editor-logout a{
    color:#6c757d;
    font-weight:500;
}
.home-contact-editor-logout a:hover{
    color:#842029;
}
.ces-editor-logout-item > a{
    color:#6c757d;
    font-weight:500;
}
.nav-menu .dropdown-menu .ces-editor-logout-item > a:hover,
.nav-menu .dropdown-menu .ces-editor-logout-item > a:focus{
    color:#842029;
    background:rgba(132,32,41,.08);
}
.nav-menu{
    display:flex;
    flex-wrap:nowrap;
    gap:0;
    margin:0;
    padding:0;
    font-family:var(--font-nav);
    min-width:max-content;
}
.nav-menu > li{
    position:relative;
    overflow:visible;
}
.nav-menu > li > a{
    display:block;
    padding:.9rem .95rem;
    color:#fff;
    font-weight:500;
    font-size:.82rem;
    text-transform:uppercase;
    letter-spacing:.4px;
    transition:background .2s,color .2s;
    position:relative;
    white-space:nowrap;
}
.nav-menu > li > a .menu-arrow{
    font-size:.65rem;
    margin-left:.35rem;
    transition:transform .2s;
}
.nav-menu > li:hover > a .menu-arrow,
.nav-menu > li.open > a .menu-arrow,
.nav-menu > li.active > a .menu-arrow,
.nav-menu > li.current > a .menu-arrow{
    transform:rotate(180deg);
}
/* Ítem activo / seleccionado */
.nav-menu > li.active > a,
.nav-menu > li.current > a{
    background:var(--secondary);
    color:var(--dark);
    font-weight:700;
}
.nav-menu > li.active > a:hover,
.nav-menu > li.current > a:hover,
.nav-menu > li.active > a:focus,
.nav-menu > li.current > a:focus{
    background:var(--secondary);
    color:var(--dark);
}
.nav-menu > li > a:hover,
.nav-menu > li > a:focus,
.nav-menu > li:hover > a{
    background:var(--accent);
    color:#fff;
}
.nav-menu > li.active:hover > a,
.nav-menu > li.current:hover > a{
    background:var(--secondary);
    color:var(--dark);
}
.nav-menu > li.open > a{
    background:var(--accent);
    color:#fff;
}
.nav-menu > li.active.open > a,
.nav-menu > li.current.open > a{
    background:var(--secondary);
    color:var(--dark);
}
.nav-menu .dropdown-menu,
.nav-menu .megamenu-panel{
    position:fixed;
    top:-10000px;
    left:0;
    min-width:260px;
    background:#fff;
    box-shadow:0 8px 25px rgba(0,0,0,.15);
    border-radius:0 0 .5rem .5rem;
    opacity:0;
    visibility:hidden;
    transform:translateY(10px);
    transition:opacity .3s ease,visibility .3s ease,transform .3s ease;
    z-index:1101;
    list-style:none;
    padding:.5rem 0;
    margin:0;
    display:block;
    pointer-events:none;
}
.nav-menu .megamenu-panel{
    padding:1.5rem;
    border-radius:.5rem;
    width:min(800px,calc(100vw - 24px));
    min-width:0;
}
.nav-menu .has-dropdown:hover > .dropdown-menu,
.nav-menu .has-dropdown:focus-within > .dropdown-menu,
.nav-menu .has-dropdown.open > .dropdown-menu,
.nav-menu .has-megamenu:hover > .megamenu-panel,
.nav-menu .has-megamenu:focus-within > .megamenu-panel,
.nav-menu .has-megamenu.open > .megamenu-panel{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
    pointer-events:auto;
    top:var(--dropdown-top,auto);
    left:var(--dropdown-left,0);
}
.nav-menu .dropdown-menu a{
    display:block;
    padding:.6rem 1.25rem;
    color:var(--dark);
    font-size:.875rem;
}
.nav-menu .dropdown-menu a:hover,
.nav-menu .dropdown-menu a:focus{
    background:var(--light);
    color:var(--primary);
}
.nav-menu .dropdown-menu > li.has-dropdown{
    position:relative;
}
.nav-menu .dropdown-menu > li.has-dropdown > .dropdown-menu{
    position:absolute;
    top:0;
    left:100%;
    transform:translateX(10px);
    border-radius:.5rem;
    pointer-events:none;
}
.nav-menu .dropdown-menu > li.has-dropdown:hover > .dropdown-menu,
.nav-menu .dropdown-menu > li.has-dropdown:focus-within > .dropdown-menu,
.nav-menu .dropdown-menu > li.has-dropdown.open > .dropdown-menu{
    opacity:1;
    visibility:visible;
    transform:translateX(0);
    pointer-events:auto;
}
.nav-menu .dropdown-menu > li.has-dropdown > a{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:.5rem;
}
.nav-menu .has-megamenu{position:static}
.megamenu-item{
    display:flex;
    align-items:center;
    gap:.75rem;
    padding:.75rem;
    border-radius:.5rem;
    color:var(--dark);
    transition:background .2s;
}
.megamenu-item i{
    font-size:1.5rem;
    color:var(--primary);
    width:40px;
    text-align:center;
}
.megamenu-item:hover,.megamenu-item:focus{
    background:var(--light);
    color:var(--primary);
}

/* Mobile menu */
.mobile-menu-offcanvas{width:300px;background:var(--primary)}
.mobile-menu-offcanvas .offcanvas-header{border-bottom:1px solid rgba(255,255,255,.2)}
.mobile-menu-offcanvas .offcanvas-title{color:#fff;font-family:var(--font-heading)}
.mobile-menu-offcanvas .btn-close{filter:invert(1)}
.mobile-nav li{border-bottom:1px solid rgba(255,255,255,.1)}
.mobile-nav a{
    display:block;
    padding:1rem;
    color:#fff;
    font-family:var(--font-nav);
    font-weight:500;
}
.mobile-nav a:hover,.mobile-nav a:focus{background:var(--accent);color:#fff}
.mobile-nav li.active > a,
.mobile-nav li.current > a{
    background:var(--secondary);
    color:var(--dark);
    font-weight:700;
}
.mobile-submenu{
    background:rgba(0,0,0,.15);
    padding-left:1rem;
    display:none;
}
.mobile-nav li.has-dropdown.open > .mobile-submenu{
    display:block;
}
.mobile-submenu a{
    font-size:.9rem;
    padding:.75rem 1rem;
}

/* ==========================================================================
   Hero Slider - Multi-effect transitions
   ========================================================================== */
.hero-section{position:relative;overflow:hidden}
.hero-slider{position:relative;width:100%}
.hero-slides-wrapper{
    position:relative;
    height:520px;
    overflow:hidden;
    background:var(--dark);
}
.hero-slide-item{
    position:absolute;
    inset:0;
    opacity:0;
    visibility:hidden;
    z-index:1;
    display:flex;
    align-items:center;
}
.hero-slide-item.is-active{
    opacity:1;
    visibility:visible;
    z-index:2;
}
.hero-slide-bg{
    position:absolute;
    inset:0;
    background-size:cover;
    background-position:center;
    transform:scale(1);
}
.hero-overlay{
    position:absolute;
    inset:0;
    background:linear-gradient(90deg,rgba(0,0,0,.65) 0%,rgba(0,108,91,.45) 50%,rgba(0,0,0,.25) 100%);
    z-index:1;
}
.hero-slide-item--image-only .hero-overlay{
    background:linear-gradient(180deg,rgba(0,0,0,.08) 0%,rgba(0,0,0,.18) 100%);
}
.hero-slide-item .container-fluid{
    position:relative;
    z-index:2;
    display:flex;
    align-items:center;
    height:100%;
}
.hero-content{
    max-width:650px;
    padding:3rem 0;
    color:#fff;
    animation:heroContentIn .8s ease both;
}
@keyframes heroContentIn{
    from{opacity:0;transform:translateY(30px)}
    to{opacity:1;transform:translateY(0)}
}
.hero-title{
    font-size:clamp(1.75rem,4vw,2.75rem);
    font-weight:700;
    color:#fff;
    margin-bottom:1rem;
    line-height:1.2;
    text-shadow:0 2px 8px rgba(0,0,0,.3);
}
.hero-subtitle{
    font-size:clamp(1rem,2vw,1.15rem);
    margin-bottom:2rem;
    opacity:.92;
    line-height:1.6;
    max-width:550px;
}
.hero-buttons{display:flex;flex-wrap:wrap;gap:1rem}
.btn-hero-primary{
    background:var(--primary);
    border:2px solid var(--primary);
    color:#fff;
    font-weight:600;
    padding:.65rem 2rem;
    border-radius:.25rem;
    transition:background .2s,transform .2s;
}
.btn-hero-primary:hover,.btn-hero-primary:focus{
    background:#005a4b;
    border-color:#005a4b;
    color:#fff;
    transform:translateY(-2px);
}
.btn-hero-secondary{
    background:transparent;
    border:2px solid rgba(255,255,255,.7);
    color:#fff;
    font-weight:500;
    padding:.65rem 2rem;
    border-radius:.25rem;
}
.btn-hero-secondary:hover,.btn-hero-secondary:focus{
    background:rgba(255,255,255,.15);
    border-color:#fff;
    color:#fff;
}

/* Box / Mosaico effect layer */
.hero-box-layer{
    position:absolute;
    inset:0;
    z-index:20;
    display:none;
    grid-gap:2px;
    pointer-events:none;
}
.hero-box-layer.is-active{display:grid}
.hero-box-tile{
    background-size:cover;
    background-repeat:no-repeat;
    opacity:0;
    transform:scale(0);
    animation:heroBoxIn .5s ease forwards;
}
@keyframes heroBoxIn{
    to{opacity:1;transform:scale(1)}
}

/* Transition states */
.hero-slide-item.effect-fade-out{animation:heroFadeOut .7s ease forwards}
.hero-slide-item.effect-fade-in{animation:heroFadeIn .7s ease forwards}
@keyframes heroFadeOut{to{opacity:0}}
@keyframes heroFadeIn{from{opacity:0}to{opacity:1}}

.hero-slide-item.effect-slide-out-left{animation:heroSlideOutLeft .7s ease forwards}
.hero-slide-item.effect-slide-in-right{animation:heroSlideInRight .7s ease forwards}
@keyframes heroSlideOutLeft{to{transform:translateX(-100%);opacity:0}}
@keyframes heroSlideInRight{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

.hero-slide-item.effect-slide-out-right{animation:heroSlideOutRight .7s ease forwards}
.hero-slide-item.effect-slide-in-left{animation:heroSlideInLeft .7s ease forwards}
@keyframes heroSlideOutRight{to{transform:translateX(100%);opacity:0}}
@keyframes heroSlideInLeft{from{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}

.hero-slide-item.effect-slide-up-out{animation:heroSlideUpOut .7s ease forwards}
.hero-slide-item.effect-slide-up-in{animation:heroSlideUpIn .7s ease forwards}
@keyframes heroSlideUpOut{to{transform:translateY(-100%);opacity:0}}
@keyframes heroSlideUpIn{from{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}

.hero-slide-item.effect-zoom-out .hero-slide-bg{animation:heroZoomOut .8s ease forwards}
.hero-slide-item.effect-zoom-in .hero-slide-bg{animation:heroZoomIn .8s ease forwards}
@keyframes heroZoomOut{to{transform:scale(1.3);opacity:0}}
@keyframes heroZoomIn{from{transform:scale(1.3);opacity:0}to{transform:scale(1);opacity:1}}

/* Navigation controls */
.hero-nav-controls{
    position:absolute;
    top:50%;
    left:0;
    right:0;
    transform:translateY(-50%);
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:0 1rem;
    z-index:30;
    pointer-events:none;
}
.hero-controls-right{
    display:flex;
    align-items:center;
    gap:.5rem;
    pointer-events:auto;
}
.hero-nav-controls .hero-nav,
.hero-nav-controls .hero-pause{pointer-events:auto}
.hero-nav{
    width:44px;height:44px;
    background:rgba(255,255,255,.2);
    border:1px solid rgba(255,255,255,.3);
    color:#fff;
    display:flex;align-items:center;justify-content:center;
    border-radius:.25rem;
    cursor:pointer;
    transition:background .2s;
    backdrop-filter:blur(4px);
    font-size:1.25rem;
    flex-shrink:0;
}
.hero-nav:hover,.hero-nav:focus{background:rgba(255,255,255,.35);color:#fff}
.hero-pause{
    width:44px;height:44px;
    background:rgba(255,255,255,.2);
    border:1px solid rgba(255,255,255,.3);
    color:#fff;
    display:flex;align-items:center;justify-content:center;
    border-radius:.25rem;
    cursor:pointer;
    backdrop-filter:blur(4px);
    font-size:1.1rem;
    flex-shrink:0;
}
.hero-pause .hero-play-icon{display:none}
.hero-pause[data-paused="true"] .hero-pause-icon{display:none}
.hero-pause[data-paused="true"] .hero-play-icon{display:block}
.hero-pause:hover,.hero-pause:focus{background:rgba(255,255,255,.35)}

/* Dots pagination */
.hero-dots{
    position:absolute;
    bottom:1.25rem;
    left:50%;
    transform:translateX(-50%);
    display:flex;
    gap:.5rem;
    z-index:30;
}
.hero-dot{
    width:12px;height:12px;
    border-radius:50%;
    border:2px solid rgba(255,255,255,.6);
    background:transparent;
    padding:0;
    cursor:pointer;
    transition:background .2s,transform .2s;
}
.hero-dot.is-active,.hero-dot:hover,.hero-dot:focus{
    background:var(--secondary);
    border-color:var(--secondary);
    transform:scale(1.2);
}

/* ==========================================================================
   Breadcrumb
   ========================================================================== */
.breadcrumb-section{
    background:var(--light);
    padding:1rem 0;
    border-bottom:1px solid #dee2e6;
}
.breadcrumb{margin:0;font-size:.875rem}
.breadcrumb-item a{color:var(--accent)}
.breadcrumb-item.active{color:var(--dark)}

/* ==========================================================================
   Quick Access / Showcase
   ========================================================================== */
.quick-access-grid{
    --qa-logo-size:6.5rem;
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    align-items:stretch;
    gap:1.5rem;
}
.quick-access-item{
    flex:0 0 auto;
    width:calc(50% - .75rem);
    max-width:11.5rem;
}
@media (min-width:576px){
    .quick-access-item{width:calc(33.333% - 1rem);max-width:11rem}
}
@media (min-width:992px){
    .quick-access-item{width:11.5rem;max-width:11.5rem}
}
.quick-access-card{
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    padding:1.5rem 1rem;
    background:#fff;
    border-radius:.75rem;
    box-shadow:0 4px 15px rgba(0,0,0,.08);
    transition:transform .3s,box-shadow .3s;
    text-decoration:none;
    color:var(--dark);
    height:100%;
    border-top:4px solid var(--primary);
}
.quick-access-card:hover,.quick-access-card:focus{
    transform:translateY(-5px);
    box-shadow:0 8px 25px rgba(0,0,0,.12);
    color:var(--primary);
}
.quick-access-card.card-primary{border-top-color:var(--primary)}
.quick-access-card.card-secondary{border-top-color:var(--secondary)}
.quick-access-card.card-accent{border-top-color:var(--accent)}
.quick-access-card.card-success{border-top-color:var(--success)}
.quick-access-card-empty{
    opacity:.35;
    pointer-events:none;
    box-shadow:none;
    border:2px dashed rgba(0,0,0,.12);
    border-top:2px dashed rgba(0,0,0,.12);
    background:rgba(255,255,255,.65);
}
.quick-access-card-empty .qa-icon{
    background:#fff;
}
.qa-icon{
    width:var(--qa-logo-size);
    height:var(--qa-logo-size);
    display:flex;align-items:center;justify-content:center;
    background:var(--light);
    border-radius:50%;
    margin-bottom:1rem;
    overflow:hidden;
}
.qa-icon .qa-logo{
    width:100%;
    height:100%;
    object-fit:contain;
    padding:.25rem;
    display:block;
}
.qa-title{font-weight:600;font-size:.95rem}

/* ==========================================================================
   About Section
   ========================================================================== */
.about-text{font-size:1.05rem;color:#495057}
.about-side-image{
    width:600px;
    max-width:100%;
    height:400px;
    object-fit:cover;
    object-position:center;
    display:block;
}
.about-side-media{
    display:flex;
    flex-direction:column;
    align-items:center;
    width:100%;
    max-width:600px;
}
.about-more-btn{
    min-width:10rem;
    font-weight:600;
    margin-top:1.5cm;
    align-self:center;
}
.about-values{display:flex;flex-direction:column;gap:1rem}
.value-card{
    background:#fff;
    padding:1.25rem;
    border-radius:.5rem;
    box-shadow:0 2px 10px rgba(0,0,0,.06);
    border-left:4px solid var(--secondary);
}
.value-card h3{
    font-size:1rem;
    margin-bottom:.5rem;
    color:var(--primary);
}
.value-card p{font-size:.875rem;margin:0;color:#6c757d}
.value-card .value-list{
    font-size:.875rem;
    margin:0;
    padding-left:1.1rem;
    color:#6c757d;
}
.value-card .value-list li + li{margin-top:.35rem}
@media (max-width:991.98px){
    .about-side-image{
        width:100%;
        max-width:600px;
        height:auto;
        aspect-ratio:600/400;
    }
}

/* ==========================================================================
   Statistics
   ========================================================================== */
.statistics-section{
    background:linear-gradient(135deg,var(--primary) 0%,#004d40 100%);
    position:relative;
    overflow:hidden;
}
.statistics-section::before{
    content:'';
    position:absolute;
    top:-50%;right:-20%;
    width:400px;height:400px;
    background:var(--secondary);
    opacity:.1;
    border-radius:50%;
}
.stat-card{padding:1.5rem}
.stat-number{
    display:block;
    font-family:var(--font-heading);
    font-size:clamp(2rem,5vw,3rem);
    font-weight:700;
    color:var(--secondary);
    line-height:1;
}
.stat-label{
    display:block;
    margin-top:.5rem;
    color:rgba(255,255,255,.9);
    font-size:.9rem;
}

/* ==========================================================================
   Council Directory
   ========================================================================== */
.council-directory-section{padding-top:2.5rem;padding-bottom:2.5rem}
.council-directory-image-wrap{margin:0 auto;max-width:1100px}
.council-directory-image{
    width:100%;
    height:auto;
    margin:0 auto;
    object-fit:contain;
}

/* ==========================================================================
   Services
   ========================================================================== */
.service-card{
    background:#fff;
    border-radius:.75rem;
    overflow:hidden;
    box-shadow:0 4px 15px rgba(0,0,0,.08);
    transition:transform .3s,box-shadow .3s;
    height:100%;
}
.service-card:hover{transform:translateY(-5px);box-shadow:0 8px 25px rgba(0,0,0,.12)}
.service-image{position:relative;overflow:hidden}
.service-image img{width:100%;height:200px;object-fit:cover;transition:transform .5s}
.service-card:hover .service-image img{transform:scale(1.05)}
.service-icon{
    position:absolute;
    bottom:-20px;right:20px;
    width:50px;height:50px;
    background:var(--secondary);
    border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-size:1.25rem;
    color:var(--dark);
    box-shadow:0 4px 10px rgba(0,0,0,.2);
}
.service-body{padding:1.5rem;padding-top:2rem}
.service-body h3{font-size:1.1rem;margin-bottom:.5rem}
.service-body p{font-size:.875rem;color:#6c757d;margin-bottom:1rem}
.service-body .btn-link{
    padding:0;
    font-weight:600;
    color:var(--accent);
    text-decoration:none;
}
.service-body .btn-link:hover{color:var(--primary)}

.commission-card-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    padding:1.25rem 1.5rem;
    background:linear-gradient(135deg,var(--primary) 0%,#004d40 100%);
}
.commission-icon{
    width:52px;
    height:52px;
    border-radius:50%;
    background:var(--secondary);
    color:var(--dark);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.35rem;
    flex-shrink:0;
}
.commission-badge{
    display:inline-block;
    padding:.35rem .75rem;
    border-radius:999px;
    font-size:.75rem;
    font-weight:700;
    letter-spacing:.02em;
    text-transform:uppercase;
}
.commission-badge-permanente{
    background:rgba(255,255,255,.16);
    color:#fff;
    border:1px solid rgba(255,255,255,.28);
}
.commission-badge-especial{
    background:var(--secondary);
    color:var(--dark);
}
.commission-card-body{
    padding-top:1.25rem;
}
.commission-card-body h3{
    font-size:1rem;
    line-height:1.45;
    margin-bottom:.75rem;
}
.commission-card-body p{
    font-size:.875rem;
    color:#6c757d;
    line-height:1.55;
    margin-bottom:0;
}

/* ==========================================================================
   News
   ========================================================================== */
.news-card{
    background:#fff;
    border-radius:.75rem;
    overflow:hidden;
    box-shadow:0 4px 15px rgba(0,0,0,.08);
    transition:transform .3s,box-shadow .3s;
    height:100%;
}
.news-card:hover{transform:translateY(-5px);box-shadow:0 8px 25px rgba(0,0,0,.12)}
.news-image-link{display:block;overflow:hidden}
.news-image-link img{width:100%;height:200px;object-fit:cover;transition:transform .5s}
.news-card:hover .news-image-link img{transform:scale(1.05)}
.news-body{padding:1.25rem}
.news-meta{
    display:flex;gap:1rem;
    font-size:.8rem;
    color:#6c757d;
    margin-bottom:.75rem;
}
.news-category{
    background:var(--light);
    padding:.15rem .5rem;
    border-radius:.25rem;
    color:var(--primary);
    font-weight:500;
}
.news-body h3{font-size:1rem;margin-bottom:.5rem}
.news-body h3 a{color:var(--dark)}
.news-body h3 a:hover{color:var(--primary)}
.news-body p{font-size:.875rem;color:#6c757d;margin-bottom:1rem}
.read-more{
    font-weight:600;
    font-size:.875rem;
    color:var(--accent);
    display:inline-flex;
    align-items:center;
    gap:.25rem;
}
.read-more:hover{color:var(--primary)}

/* ==========================================================================
   Events - Interactive Calendar
   ========================================================================== */
.inst-calendar{
    border:none;
    border-radius:.75rem;
    overflow:hidden;
    box-shadow:0 4px 20px rgba(0,0,0,.08);
}
.inst-calendar-header{
    display:flex;
    align-items:center;
    gap:.75rem;
    padding:1rem 1.25rem;
    background:#fff;
    border-bottom:1px solid #e9ecef;
    flex-wrap:wrap;
}
.inst-calendar-nav{display:flex;gap:.25rem;flex-shrink:0}
.inst-calendar-title{
    flex:1 1 180px;
    min-width:0;
    font-family:var(--font-heading);
    font-size:1.25rem;
    color:var(--primary);
    text-transform:capitalize;
}
.inst-calendar-views{
    flex:0 0 auto;
    max-width:100%;
}
.inst-calendar-views .inst-cal-view-btn{
    font-weight:500;
    border-color:var(--primary);
    color:var(--primary);
    font-size:.8rem;
    padding:.25rem .65rem;
    white-space:nowrap;
}
.inst-cal-nav-btn{
    width:36px;height:36px;
    border:1px solid #dee2e6;
    background:#fff;
    border-radius:.25rem;
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;
    color:var(--dark);
    transition:background .2s,border-color .2s;
}
.inst-cal-nav-btn:hover,.inst-cal-nav-btn:focus{
    background:var(--light);
    border-color:var(--primary);
    color:var(--primary);
}
.inst-calendar-views .inst-cal-view-btn.active,
.inst-calendar-views .inst-cal-view-btn:hover,
.inst-calendar-views .inst-cal-view-btn:focus{
    background:var(--primary);
    border-color:var(--primary);
    color:#fff;
}
.inst-calendar-view--today .inst-calendar-weekdays{display:none}
.inst-calendar-grid--today{
    display:block;
    grid-template-columns:none;
    grid-auto-rows:auto;
}
.inst-calendar-grid--week{
    grid-auto-rows:minmax(120px,auto);
}
.inst-cal-today-panel{
    display:flex;
    flex-direction:column;
    gap:.75rem;
    padding:1rem 1.25rem;
    min-height:220px;
}
.inst-cal-today-empty{
    text-align:center;
    color:#6c757d;
    padding:2.5rem 1rem;
}
.inst-cal-today-event{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:.35rem;
    width:100%;
    padding:1rem 1.1rem;
    border:1px solid #e9ecef;
    border-radius:.5rem;
    background:#fff;
    text-align:left;
    cursor:pointer;
    transition:border-color .2s,box-shadow .2s,transform .2s;
}
.inst-cal-today-event:hover,
.inst-cal-today-event:focus{
    border-color:var(--primary);
    box-shadow:0 4px 14px rgba(0,108,91,.12);
    transform:translateY(-1px);
}
.inst-cal-today-event.is-past{
    background:#f1f3f5;
    border-color:#dee2e6;
}
.inst-cal-today-event.is-past:hover,
.inst-cal-today-event.is-past:focus{
    border-color:#ced4da;
    box-shadow:none;
    transform:none;
}
.inst-cal-today-event.is-past .inst-cal-today-event-title{
    color:#6c757d;
}
.inst-cal-today-event-time,
.inst-cal-today-event-location{
    font-size:.85rem;
    color:#6c757d;
}
.inst-cal-today-event-title{
    font-family:var(--font-heading);
    color:var(--primary);
    font-size:1rem;
}
.inst-calendar-weekdays{
    display:grid;
    grid-template-columns:repeat(7,1fr);
    background:var(--light);
    border-bottom:1px solid #e9ecef;
    text-align:center;
    font-size:.75rem;
    font-weight:600;
    color:#6c757d;
    text-transform:uppercase;
}
.inst-calendar-weekdays span{padding:.6rem .25rem}
.inst-calendar-grid{
    display:grid;
    grid-template-columns:repeat(7,1fr);
    grid-auto-rows:minmax(90px,auto);
    background:#fff;
}
.inst-cal-day{
    border:1px solid #f0f0f0;
    padding:.35rem;
    min-height:90px;
    position:relative;
    vertical-align:top;
}
.inst-cal-day.other-month{background:#fafafa}
.inst-cal-day.other-month .inst-cal-day-num{color:#adb5bd}
.inst-cal-day.is-today .inst-cal-day-num{
    background:var(--primary);
    color:#fff;
    border-radius:50%;
    width:28px;height:28px;
    display:inline-flex;align-items:center;justify-content:center;
}
.inst-cal-day-num{
    font-size:.85rem;
    font-weight:500;
    color:var(--dark);
    margin-bottom:.25rem;
    display:inline-block;
}
.inst-cal-event{
    display:block;
    width:100%;
    background:var(--primary);
    color:#fff;
    font-size:.7rem;
    padding:.2rem .4rem;
    border-radius:.2rem;
    margin-bottom:2px;
    cursor:pointer;
    border:none;
    text-align:left;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    transition:background .2s,transform .2s;
    line-height:1.3;
}
.inst-cal-event:hover,.inst-cal-event:focus{
    background:#005a4b;
    transform:scale(1.02);
    color:#fff;
}
.inst-cal-event.is-past{
    background:#adb5bd;
    color:#fff;
}
.inst-cal-event.is-past:hover,.inst-cal-event.is-past:focus{
    background:#949aa1;
    color:#fff;
}
.inst-cal-event-more{
    font-size:.65rem;
    color:var(--primary);
    background:transparent;
    border:none;
    padding:.1rem .3rem;
    cursor:pointer;
    font-weight:600;
}
.inst-cal-event-more:hover{text-decoration:underline}
.inst-calendar-footer{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:.75rem 1.25rem;
    background:var(--light);
    border-top:1px solid #e9ecef;
    font-size:.8rem;
    color:#6c757d;
}
.inst-calendar-add{color:var(--accent);font-weight:500}
.inst-calendar-add:hover{color:var(--primary)}

/* Event detail modal */
.event-detail-modal .modal-content{
    border:none;
    border-radius:.75rem;
    box-shadow:0 10px 40px rgba(0,0,0,.15);
}
.event-detail-modal .modal-header{
    padding:1.25rem 1.25rem .5rem;
}
.event-modal-icon{
    width:40px;height:40px;
    background:var(--primary);
    color:#fff;
    border-radius:.35rem;
    display:flex;align-items:center;justify-content:center;
    font-size:1.25rem;
}
.event-modal-title{
    font-size:1.35rem;
    font-weight:600;
    color:var(--dark);
    line-height:1.3;
}
.event-modal-date{font-size:.95rem}
.event-modal-meta li{
    display:flex;align-items:center;gap:.5rem;
    font-size:.9rem;
    color:#495057;
    margin-bottom:.35rem;
}
.event-modal-meta i{color:var(--primary)}
.event-modal-description{
    font-size:.9rem;
    color:#6c757d;
    line-height:1.6;
    border-top:1px solid #e9ecef;
    padding-top:1rem;
}
.event-detail-modal .modal-footer{
    justify-content:flex-start;
    gap:1rem;
    padding:0 1.25rem 1.25rem;
}
.event-detail-modal .btn-link{
    color:var(--accent);
    font-weight:500;
    text-decoration:none;
    padding:0;
}
.event-detail-modal .btn-link:hover{color:var(--primary);text-decoration:underline}

.events-list-title{color:var(--primary);font-weight:600}
.event-item-clickable{cursor:pointer;transition:transform .2s,box-shadow .2s}
.event-item-clickable:hover,.event-item-clickable:focus{
    transform:translateX(4px);
    box-shadow:0 4px 15px rgba(0,0,0,.1);
    outline:none;
}
.event-item{
    display:flex;
    gap:1.5rem;
    padding:1.25rem;
    background:#fff;
    border-radius:.75rem;
    box-shadow:0 2px 10px rgba(0,0,0,.06);
    margin-bottom:1rem;
    transition:box-shadow .3s;
}
.event-item:hover{box-shadow:0 4px 15px rgba(0,0,0,.1)}
.event-item--past{
    background:#f8f9fa;
    box-shadow:0 2px 8px rgba(0,0,0,.04);
}
.event-item--past .event-date{
    background:#adb5bd;
    color:#fff;
}
.event-item--past .event-details h4,
.event-item--past .event-details h6,
.event-item--past .event-meta{
    color:#6c757d;
}
.event-item--past:hover{box-shadow:0 2px 8px rgba(0,0,0,.06)}
.event-date{
    flex-shrink:0;
    width:70px;
    text-align:center;
    background:var(--primary);
    color:#fff;
    border-radius:.5rem;
    padding:.75rem .5rem;
}
.event-day{display:block;font-size:1.5rem;font-weight:700;line-height:1}
.event-month{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:1px}
.event-details h3{font-size:1rem;margin-bottom:.5rem}
.event-meta{font-size:.8rem;color:#6c757d;margin-bottom:.5rem}
.event-meta li{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}
.event-details p{font-size:.875rem;color:#6c757d;margin:0}

/* ==========================================================================
   Gallery
   ========================================================================== */
.gallery-filter{
    background:transparent;
    border:2px solid var(--primary);
    color:var(--primary);
    padding:.5rem 1.25rem;
    border-radius:2rem;
    font-weight:500;
    margin:0 .25rem;
    cursor:pointer;
    transition:all .2s;
}
.gallery-filter.active,.gallery-filter:hover,.gallery-filter:focus{
    background:var(--primary);
    color:#fff;
}
.gallery-item{transition:opacity .3s,transform .3s}
.gallery-item.hidden{opacity:0;transform:scale(.9);pointer-events:none;position:absolute;visibility:hidden}
.gallery-link{
    display:block;
    position:relative;
    border-radius:.5rem;
    overflow:hidden;
    aspect-ratio:1;
}
.gallery-link img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.gallery-link:hover img{transform:scale(1.1)}
.gallery-overlay{
    position:absolute;
    inset:0;
    background:linear-gradient(transparent 50%,rgba(15,76,129,.9));
    display:flex;
    align-items:flex-end;
    padding:.75rem;
    color:#fff;
    font-size:.75rem;
    opacity:0;
    transition:opacity .3s;
}
.gallery-link:hover .gallery-overlay,.gallery-link:focus .gallery-overlay{opacity:1}
.gallery-play{
    position:absolute;
    top:50%;left:50%;
    transform:translate(-50%,-50%);
    font-size:2.5rem;
    color:#fff;
    text-shadow:0 2px 10px rgba(0,0,0,.5);
}

/* Lightbox */
.lightbox-overlay{
    position:fixed;
    inset:0;
    background:rgba(0,0,0,.9);
    z-index:10000;
    display:flex;
    align-items:center;
    justify-content:center;
    opacity:0;
    visibility:hidden;
    transition:opacity .3s,visibility .3s;
}
.lightbox-overlay.active{opacity:1;visibility:visible}
.lightbox-content{max-width:90vw;max-height:90vh;position:relative}
.lightbox-content img{max-width:100%;max-height:85vh;border-radius:.5rem}
.lightbox-caption{color:#fff;text-align:center;margin-top:1rem;font-size:1rem}
.lightbox-close{
    position:absolute;
    top:-40px;right:0;
    background:none;border:none;
    color:#fff;font-size:2rem;
    cursor:pointer;
}
.lightbox-nav{
    position:absolute;
    top:50%;
    transform:translateY(-50%);
    background:rgba(255,255,255,.2);
    border:none;
    color:#fff;
    font-size:2rem;
    padding:.5rem 1rem;
    cursor:pointer;
    border-radius:.25rem;
}
.lightbox-prev{left:1rem}
.lightbox-next{right:1rem}
.lightbox-nav:hover{background:var(--secondary);color:var(--dark)}

/* ==========================================================================
   Authorities
   ========================================================================== */
.authority-card{
    background:#fff;
    padding:2rem 1.5rem;
    border-radius:.75rem;
    box-shadow:0 4px 15px rgba(0,0,0,.08);
    transition:transform .3s;
}
.authority-card:hover{transform:translateY(-5px)}
.authority-photo{
    width:150px;
    height:150px;
    margin:0 auto 1.5rem;
    border-radius:50%;
    overflow:hidden;
    border:4px solid var(--secondary);
    display:flex;
    align-items:center;
    justify-content:center;
    background:#fff;
    padding:0;
}
.authority-photo-trigger{
    cursor:zoom-in;
    transition:transform .2s ease, box-shadow .2s ease;
}
.authority-photo-trigger:hover,
.authority-photo-trigger:focus{
    transform:scale(1.03);
    box-shadow:0 8px 20px rgba(0,0,0,.15);
    outline:none;
}
.authority-photo-trigger:focus-visible{
    outline:3px solid var(--accent);
    outline-offset:3px;
}
.authority-photo img{
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center top;
    display:block;
    pointer-events:none;
}
.authority-lightbox-overlay{
    position:fixed;
    inset:0;
    z-index:10050;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:1.5rem;
    background:rgba(0,0,0,.88);
}
.authority-lightbox-overlay[hidden]{display:none}
.authority-lightbox-dialog{
    position:relative;
    text-align:center;
    max-width:min(750px, 90vw);
}
.authority-lightbox-image{
    width:750px;
    height:750px;
    max-width:min(750px, 90vw);
    max-height:min(750px, 80vh);
    object-fit:cover;
    object-position:center top;
    border-radius:50%;
    border:6px solid var(--secondary);
    background:#fff;
    box-shadow:0 16px 40px rgba(0,0,0,.35);
}
.authority-lightbox-caption{
    margin:1rem 0 0;
    color:#fff;
    font-size:1.05rem;
    font-weight:600;
}
.authority-lightbox-role{
    margin:.35rem 0 0;
    color:rgba(255,255,255,.85);
    font-size:.95rem;
}
.authority-lightbox-close{
    position:absolute;
    top:-2.5rem;
    right:0;
    border:none;
    background:none;
    color:#fff;
    font-size:2rem;
    line-height:1;
    cursor:pointer;
}
.authority-card h3{font-size:1.1rem;margin-bottom:.25rem}
.authority-role{color:var(--accent);font-weight:500;margin-bottom:1rem}
.authority-social a{
    display:flex;align-items:center;justify-content:center;
    width:36px;height:36px;
    background:var(--light);
    border-radius:50%;
    color:var(--primary);
    transition:background .2s,color .2s;
}
.authority-social a:hover{background:var(--primary);color:#fff}

/* ==========================================================================
   Transparency
   ========================================================================== */
.transparency-link{
    display:flex;
    align-items:center;
    gap:.75rem;
    padding:.75rem;
    border-radius:.5rem;
    color:#fff;
    background:transparent;
    text-decoration:none;
    font-weight:600;
    height:100%;
    transition:background .2s ease, transform .2s ease;
}
.transparency-link i{
    font-size:1.5rem;
    color:#fff;
    width:40px;
    text-align:center;
    background:transparent;
}
.transparency-link:hover,
.transparency-link:focus{
    background:rgba(255,255,255,.12);
    color:#fff;
    transform:translateY(-2px);
}
.transparency-link:hover i,
.transparency-link:focus i{
    color:#fff;
}

/* ==========================================================================
   Interest Links
   ========================================================================== */
.interest-link-card{
    background:#fff;
    padding:1.5rem;
    border-radius:.75rem;
    box-shadow:0 4px 15px rgba(0,0,0,.08);
    border-left:4px solid var(--secondary);
    height:100%;
}
.interest-link-card-header{
    display:flex;
    align-items:center;
    gap:.85rem;
    margin-bottom:1rem;
}
.interest-link-card-logo{
    flex-shrink:0;
    width:64px;
    height:64px;
    object-fit:contain;
    border-radius:.5rem;
    background:#fff;
    border:1px solid rgba(0,0,0,.06);
    padding:.35rem;
}
.interest-link-card-title{
    font-size:1.05rem;
    color:var(--primary);
    margin-bottom:0;
    line-height:1.35;
}
.interest-link-card-list li{
    display:flex;
    flex-wrap:wrap;
    align-items:flex-start;
    gap:.35rem .5rem;
    margin-bottom:.75rem;
    font-size:.9rem;
    line-height:1.5;
    color:#495057;
}
.interest-link-card-list li:last-child{
    margin-bottom:0;
}
.interest-link-card-list i{
    flex-shrink:0;
    width:1.1rem;
    margin-top:.15rem;
    color:var(--primary);
}
.interest-link-card-list span{
    font-weight:600;
    color:#3d464f;
}
.interest-link-card-list a{
    color:var(--accent);
    text-decoration:none;
    word-break:break-word;
}
.interest-link-card-list a:hover,
.interest-link-card-list a:focus{
    color:var(--primary);
    text-decoration:underline;
}

/* ==========================================================================
   CTA / Citizen Participation
   ========================================================================== */
.cta-banner{
    background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);
    border-radius:1rem;
    padding:3rem;
    color:#fff;
    position:relative;
    overflow:hidden;
}
.cta-banner::before{
    content:'';
    position:absolute;
    top:-30%;right:-10%;
    width:300px;height:300px;
    background:var(--secondary);
    opacity:.15;
    border-radius:50%;
}
.cta-banner h2{color:#fff;font-size:clamp(1.5rem,3vw,2rem);margin-bottom:1rem}
.cta-banner p{opacity:.9;margin-bottom:0}
.cta-buttons .btn-secondary{
    background:var(--secondary);
    border-color:var(--secondary);
    color:var(--dark);
    font-weight:600;
    display:flex;align-items:center;justify-content:center;gap:.5rem;
}
.cta-buttons .btn-secondary:hover{background:#e5a800;border-color:#e5a800}
.cta-buttons .btn-outline-light:hover{background:#fff;color:var(--primary)}

/* ==========================================================================
   Home Contact Section
   ========================================================================== */
.home-contact-section{
    background:#fff;
    border-top:1px solid #e9ecef;
}
.home-contact-wrapper{overflow:hidden}
.home-contact-map{
    background:var(--light);
    display:flex;
    flex-direction:column;
}
.map-container{
    flex:1;
    min-height:420px;
    position:relative;
    background:#e9ecef;
}
.map-placeholder{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    background:
        radial-gradient(circle at 30% 20%, rgba(0,108,91,.12), transparent 45%),
        linear-gradient(180deg, #eef2f4 0%, #e3e8ec 100%);
    background-size:cover;
    background-position:center;
    transition:opacity .35s ease, visibility .35s ease;
}
.map-placeholder-has-preview .map-placeholder-content{
    background:rgba(255,255,255,.88);
    border:1px solid rgba(0,0,0,.08);
    box-shadow:0 8px 24px rgba(0,0,0,.12);
}
.map-placeholder-content{
    display:flex;
    align-items:center;
    gap:.65rem;
    padding:.65rem 1rem;
    border-radius:999px;
    color:var(--primary);
    font-size:.875rem;
    font-weight:600;
}
.map-placeholder-content i{
    font-size:1.15rem;
    color:var(--accent);
}
.map-container.is-loaded .map-placeholder{
    opacity:0;
    visibility:hidden;
    pointer-events:none;
}
.map-container iframe{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    border:0;
    opacity:0;
    transition:opacity .35s ease;
}
.map-container.is-loaded iframe{
    opacity:1;
}
.map-actions{
    display:flex;
    gap:1.5rem;
    padding:.75rem 1rem;
    background:#fff;
    border-top:1px solid #e9ecef;
    font-size:.85rem;
}
.map-actions a{
    color:var(--accent);
    font-weight:500;
}
.map-actions a:hover{color:var(--primary)}
.home-contact-info{
    background:#fff;
    border-left:1px solid #e9ecef;
    border-right:1px solid #e9ecef;
}
.contact-info-inner{
    padding:2.5rem 2rem;
    height:100%;
}
.contact-institution-name{
    font-size:1.5rem;
    color:var(--primary);
    font-weight:700;
    margin-bottom:.5rem;
}
.contact-institution-desc{
    color:#6c757d;
    font-size:.9rem;
    margin-bottom:2rem;
}
.contact-block-title{
    font-size:1.1rem;
    color:var(--primary);
    font-weight:600;
    margin-bottom:1rem;
    padding-bottom:.5rem;
    border-bottom:2px solid var(--secondary);
    display:inline-block;
}
.contact-address{
    font-style:normal;
    color:#495057;
    line-height:1.7;
    display:flex;
    gap:.75rem;
    align-items:flex-start;
}
.contact-address i{
    color:var(--primary);
    font-size:1.25rem;
    margin-top:.15rem;
    flex-shrink:0;
}
.contact-hours li{
    padding:.4rem 0;
    color:#495057;
    font-size:.95rem;
    border-bottom:1px solid #f0f0f0;
}
.contact-hours li:last-child{border-bottom:none}
.contact-hours strong{color:var(--dark)}
.contact-details li{
    padding:.35rem 0;
    font-size:.95rem;
    color:#495057;
}
.contact-details strong{color:var(--dark);margin-right:.25rem}
.contact-details a{color:var(--accent)}
.contact-details a:hover{color:var(--primary)}
.home-contact-form{
    position:relative;
    background:linear-gradient(135deg,#fff 60%,rgba(0,108,91,.08) 100%);
    overflow:hidden;
}
.contact-form-inner{
    padding:2.5rem 2rem;
    position:relative;
    z-index:2;
    height:100%;
}
.contact-form-deco{
    position:absolute;
    top:-20%;
    right:-15%;
    width:280px;
    height:280px;
    background:var(--primary);
    opacity:.12;
    transform:rotate(25deg);
    border-radius:2rem;
    z-index:1;
}
.contact-form-desc{
    font-size:.875rem;
    color:#495057;
    margin-bottom:1.5rem;
    line-height:1.5;
}
.home-contact-form .ces-contact-form .form-label,
.ces-contact-page .home-contact-form .ces-contact-form .form-label{
    color:#374151;
    font-weight:500;
}
.home-contact-form .ces-contact-form .contact-input,
.home-contact-form .ces-contact-form textarea.contact-input,
.home-contact-form .ces-contact-form input.contact-input{
    background:#fff;
    border:1px solid #ced4da;
    color:#212529;
}
.home-contact-form .ces-contact-form .contact-input::placeholder{
    color:#6c757d;
}
.home-contact-form .ces-contact-form .invalid-feedback,
.home-contact-form .ces-contact-form .form-text{
    color:#842029;
}
.contact-input{
    background:#3d4f5f;
    border:1px solid #3d4f5f;
    color:#fff;
    border-radius:.25rem;
    padding:.75rem 1rem;
    font-size:.9rem;
}
.contact-input::placeholder{color:rgba(255,255,255,.6)}
.contact-input:focus{
    background:#354656;
    border-color:var(--primary);
    color:#fff;
    box-shadow:0 0 0 .2rem rgba(0,108,91,.25);
}
.btn-contact-send{
    background:var(--accent);
    color:#fff;
    border:none;
    padding:.65rem 2.5rem;
    font-weight:600;
    border-radius:.25rem;
    transition:background .2s,transform .2s;
}
.btn-contact-send:hover,.btn-contact-send:focus{
    background:var(--primary);
    color:#fff;
    transform:translateY(-2px);
}

.ces-contact-page-wrapper{
    padding:0;
    background:#fff;
}
.ces-contact-page .map-container{min-height:480px}
.ces-contact-form .form-label{
    color:#374151;
    font-size:.85rem;
    font-weight:500;
    margin-bottom:.35rem;
}
.ces-contact-form .contact-input,
.ces-contact-form textarea.contact-input,
.ces-contact-form input.contact-input{
    background:#fff;
    border:1px solid #ced4da;
    color:#212529;
}
.ces-contact-form .invalid-feedback,
.ces-contact-form .form-text{
    color:#842029;
}
.ces-contact-form .form-check-label{color:rgba(255,255,255,.9)}
.ces-contact-form .g-recaptcha{margin-bottom:1rem}

/* ==========================================================================
   Floating Quick Access
   ========================================================================== */
.floating-quick-access{
    position:fixed;
    right:0;
    top:50%;
    transform:translateY(-50%);
    z-index:9990;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    width:52px;
    background:var(--primary);
    border-radius:.5rem 0 0 .5rem;
    box-shadow:-4px 0 20px rgba(0,0,0,.15);
    overflow:hidden;
}
.floating-quick-access::before{
    content:'';
    position:absolute;
    top:0;left:0;right:0;
    height:80px;
    background-image:radial-gradient(circle,rgba(255,255,255,.15) 1px,transparent 1px);
    background-size:8px 8px;
    pointer-events:none;
}
.fqa-btn,.fqa-link{
    display:flex;
    align-items:center;
    justify-content:center;
    width:52px;
    height:52px;
    border:none;
    background:var(--accent);
    color:#fff;
    font-size:1.35rem;
    cursor:pointer;
    transition:background .2s,transform .2s;
    text-decoration:none;
    position:relative;
    z-index:1;
}
.fqa-btn:hover,.fqa-btn:focus,
.fqa-link:hover,.fqa-link:focus{
    background:#005a4b;
    color:#fff;
    transform:scale(1.05);
}
.fqa-whatsapp{
    background:#25d366;
    font-size:1.5rem;
}
.fqa-whatsapp:hover,.fqa-whatsapp:focus{background:#1da851}
.fqa-messenger{
    background:#0084ff;
    font-size:1.4rem;
}
.fqa-messenger:hover,.fqa-messenger:focus{background:#006fdb}

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer{background:var(--dark);color:rgba(255,255,255,.8)}
.footer-main{border-bottom:1px solid rgba(255,255,255,.1)}
.footer-col h3,
.footer-col-title,
.footer-brand-title{
    color:#fff;
    font-size:1.1rem;
    margin-bottom:1.25rem;
    position:relative;
    padding-bottom:.5rem;
}
.footer-col h3::after,
.footer-col-title::after,
.footer-brand-title::after{
    content:'';
    position:absolute;
    bottom:0;left:0;
    width:40px;height:3px;
    background:var(--secondary);
}
.footer-logo{filter:brightness(0) invert(1);opacity:.9}
.footer-links li{margin-bottom:.5rem}
.footer-links a{color:rgba(255,255,255,.7);font-size:.9rem}
.footer-links a:hover,.footer-links a:focus{color:var(--secondary)}
.footer-contact li{
    display:flex;align-items:flex-start;gap:.75rem;
    margin-bottom:.75rem;
    font-size:.9rem;
}
.footer-contact i{color:var(--secondary);margin-top:.2rem}
.footer-social a{
    display:flex;align-items:center;justify-content:center;
    width:40px;height:40px;
    background:rgba(255,255,255,.1);
    border-radius:50%;
    color:#fff;
    transition:background .2s,transform .2s;
}
.footer-social a:hover{background:var(--secondary);color:var(--dark)}
.footer-bottom{
    padding:1.25rem 0;
    font-size:.875rem;
}
.copyright{color:rgba(255,255,255,.6)}
.footer-legal a{color:rgba(255,255,255,.7)}
.footer-legal a:hover{color:var(--secondary)}

/* Footer gubernamental (estilo portal institucional) */
.site-footer-gov{
    background:#f7f7f7;
    color:#212529;
    position:relative;
}
.site-footer-gov .footer-wave{
    margin-top:-1px;
    line-height:0;
    background:transparent;
}
.site-footer-gov .footer-wave svg{
    display:block;
    width:100%;
    height:48px;
}
.site-footer-gov .footer-main{
    padding:3rem 0 2.5rem;
    border-bottom:none;
}
.site-footer-gov .footer-col-title,
.site-footer-gov .footer-brand-title{
    color:#073c0b;
    font-size:1.05rem;
    font-weight:600;
    margin-bottom:1.25rem;
    padding-bottom:.65rem;
    border-bottom:3px solid var(--secondary);
    display:inline-block;
}
.site-footer-gov .footer-col-title::after,
.site-footer-gov .footer-brand-title::after{display:none}
.site-footer-gov .footer-brand-desc,
.site-footer-gov .footer-extra-text,
.site-footer-gov .footer-col4-text{
    font-size:.9rem;
    line-height:1.7;
    color:#212529;
}
.site-footer-gov .footer-logo{
    filter:none;
    opacity:1;
    object-fit:contain;
    width:270px;
    height:135px;
    max-width:270px;
}
.site-footer-gov .footer-links a{
    color:#212529;
    display:inline-flex;
    align-items:center;
    gap:.35rem;
    transition:color .2s,padding-left .2s;
}
.site-footer-gov .footer-links a i{
    font-size:.65rem;
    color:var(--secondary);
}
.site-footer-gov .footer-links a:hover,
.site-footer-gov .footer-links a:focus{
    color:var(--secondary);
    padding-left:.25rem;
}
.site-footer-gov .footer-contact i{
    flex-shrink:0;
    margin-top:.15rem;
}
.site-footer-gov .footer-contact a{color:#212529}
.site-footer-gov .footer-contact a:hover{color:var(--secondary)}
.site-footer-gov .footer-social a{
    width:42px;height:42px;
    background:#fff;
    border:1px solid #dee2e6;
    color:#212529;
}
.site-footer-gov .footer-social a:hover{
    background:var(--secondary);
    color:var(--dark);
    border-color:var(--secondary);
    transform:translateY(-3px);
}
.site-footer-gov .footer-bottom{
    background:#ececec;
    padding:1.15rem 0;
    border-top:1px solid #0e4208;
}
.site-footer-gov .copyright{color:#212529}
.site-footer-gov .footer-legal a{font-size:.85rem;color:#212529}
.site-footer-gov .footer-language{
    color:#212529;
    font-size:.85rem;
}
.site-footer-gov .footer-language i{color:var(--secondary)}
.site-footer-gov .footer-custom-html{
    padding-top:1rem;
    border-top:1px solid #dee2e6;
    color:#212529;
}

/* ==========================================================================
   Content Area
   ========================================================================== */
.content-area .card{
    border:none;
    box-shadow:0 2px 10px rgba(0,0,0,.06);
    border-radius:.5rem;
}
.content-inner{background:var(--light)}

/* ==========================================================================
   Buttons
   ========================================================================== */
.btn-primary{background:var(--primary);border-color:var(--primary)}
.btn-primary:hover,.btn-primary:focus{background:var(--accent);border-color:var(--accent)}
.btn-outline-primary{color:var(--primary);border-color:var(--primary)}
.btn-outline-primary:hover{background:var(--primary);border-color:var(--primary)}
.btn-outline-secondary{color:var(--dark);border-color:#adb5bd;background:#fff}
.btn-outline-secondary:hover,.btn-outline-secondary:focus{
    color:var(--primary);
    border-color:var(--primary);
    background:var(--light);
}

/* Sidebar / content modules: avoid main-nav white-on-white links */
.mod-menu-sidebar .sidebar-nav > li,
.sidebar-right .nav-menu > li,
.sidebar-left .nav-menu > li{
    border-bottom:1px solid rgba(0,0,0,.06);
}
.mod-menu-sidebar .sidebar-nav > li:last-child,
.sidebar-right .nav-menu > li:last-child,
.sidebar-left .nav-menu > li:last-child{
    border-bottom:0;
}
.mod-menu-sidebar .sidebar-nav > li > a,
.sidebar-right .nav-menu > li > a,
.sidebar-left .nav-menu > li > a{
    display:block;
    padding:.65rem .85rem;
    color:var(--primary);
    font-family:var(--font-nav);
    font-weight:500;
    font-size:.9rem;
    text-transform:none;
    letter-spacing:0;
    white-space:normal;
}
.mod-menu-sidebar .sidebar-nav > li > a:hover,
.mod-menu-sidebar .sidebar-nav > li > a:focus,
.sidebar-right .nav-menu > li > a:hover,
.sidebar-right .nav-menu > li > a:focus,
.sidebar-left .nav-menu > li > a:hover,
.sidebar-left .nav-menu > li > a:focus{
    background:var(--light);
    color:var(--accent);
}
.mod-menu-sidebar .sidebar-nav > li.active > a,
.mod-menu-sidebar .sidebar-nav > li.current > a,
.sidebar-right .nav-menu > li.active > a,
.sidebar-right .nav-menu > li.current > a,
.sidebar-left .nav-menu > li.active > a,
.sidebar-left .nav-menu > li.current > a{
    background:rgba(31,111,178,.08);
    color:var(--primary);
    font-weight:600;
}

/* Joomla front-end module / menu editing (logged-in editors) */
.btn.jmodedit{
    position:absolute;
    top:.35rem;
    right:.35rem;
    left:auto;
    z-index:900;
    color:var(--primary);
    background-color:rgba(255,255,255,.95);
    border:1px solid #adb5bd;
    border-radius:.25rem;
    padding:.2rem .45rem;
    line-height:1;
}
.btn.jmodedit:hover,.btn.jmodedit:focus{
    color:var(--accent);
    background-color:#fff;
    border-color:var(--primary);
}
.jmenuedit{
    display:inline-flex;
    align-items:center;
    margin-left:.35rem;
    color:var(--accent);
    vertical-align:middle;
}
.jmenuedit:hover,.jmenuedit:focus{color:var(--primary)}

/* ==========================================================================
   Error & Offline Pages
   ========================================================================== */
.page-error,.page-offline{background:var(--light)}
.error-code{line-height:1}
.offline-logo{margin:0 auto}
.offline-content{max-width:500px}

/* ==========================================================================
   Module Overrides
   ========================================================================== */
.mod-articles-latest .article-card,
.com-content-category-blog .blog-item{
    background:#fff;
    border-radius:.75rem;
    overflow:hidden;
    box-shadow:0 4px 15px rgba(0,0,0,.08);
    margin-bottom:1.5rem;
}

/* ==========================================================================
   Accessibility
   ========================================================================== */
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
    *,*::before,*::after{
        animation-duration:.01ms!important;
        animation-iteration-count:1!important;
        transition-duration:.01ms!important;
        scroll-behavior:auto!important;
    }
    .ticker-track{
        animation:none;
        flex-wrap:wrap;
        width:100%;
    }
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:991.98px){
    .hero-slides-wrapper{height:420px}
    .section-padding{padding:3rem 0}
    .cta-banner{padding:2rem}
    .inst-calendar-grid{grid-auto-rows:minmax(70px,auto)}
    .inst-cal-day{min-height:70px}
    .inst-cal-event{font-size:.6rem}
    .inst-calendar-header{flex-wrap:wrap}
    .inst-calendar-views{width:100%;justify-content:center}
    .event-item{flex-direction:column;gap:1rem}
    .event-date{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem}
    .event-day,.event-month{display:inline}
}
@media (max-width:767.98px){
    .topbar-inner{flex-direction:column;gap:.5rem}
    .topbar-ticker{width:100%;mask-image:none;-webkit-mask-image:none}
    .topbar-right{width:100%;justify-content:center}
    .hero-slides-wrapper{height:380px}
    .hero-content{padding:2rem 0}
    .hero-buttons{flex-direction:column}
    .hero-buttons .btn-hero-primary,
    .hero-buttons .btn-hero-secondary{width:100%;text-align:center}
    .section-padding{padding:2.5rem 0}
    .footer-legal{justify-content:center!important;margin-top:1rem}
    .copyright{text-align:center}
    .cta-banner .row{text-align:center}
    .cta-buttons{margin-top:1.5rem}
    .home-contact-wrapper .row{flex-direction:column}
    .map-container{min-height:300px}
    .contact-info-inner,.contact-form-inner{padding:2rem 1.5rem}
    .home-contact-info{border-left:none;border-right:none;border-top:1px solid #e9ecef}
    .floating-quick-access{width:46px}
    .fqa-btn,.fqa-link{width:46px;height:46px;font-size:1.2rem}
}
@media (max-width:575.98px){
    .institution-name{font-size:.95rem}
    .quick-access-card{padding:1rem .5rem}
    .quick-access-grid{--qa-logo-size:5.25rem;gap:1rem}
    .quick-access-item{width:calc(50% - .5rem);max-width:10rem}
}

/* Hero banner editor modal */
.ces-hero-banner-editor-modal .modal-content{
    border:0;
    border-radius:.75rem;
    box-shadow:0 12px 40px rgba(0,0,0,.18);
}
.ces-hero-banner-slides-title{color:var(--primary);font-weight:600}
.ces-hero-banner-settings{
    background:#f4f6f8;
    border:1px solid #e2e6ea;
    border-radius:.75rem;
    padding:1rem 1.25rem;
}
.ces-hero-banner-settings-title{
    color:var(--primary);
    font-size:.95rem;
}
.ces-hero-banner-settings-title .bi{margin-right:.35rem}
.ces-hero-banner-settings-desc{color:#5c6570;line-height:1.45}
.ces-hero-banner-settings .form-text{color:#6c757d}
.ces-hero-banner-slide{border:1px solid #e9ecef;border-radius:.75rem}
.ces-hero-banner-slide.is-uploading{opacity:.65;pointer-events:none}
.ces-hero-banner-preview{
    width:100%;
    aspect-ratio:16/9;
    object-fit:cover;
    border-radius:.5rem;
    background:#f1f3f5;
}
.ces-hero-banner-preview--empty{
    display:flex;
    align-items:center;
    justify-content:center;
    color:#6c757d;
    font-size:.9rem;
    min-height:120px;
}
.ces-hero-banner-slide-label{color:var(--primary)}
.ces-hero-banner-image-guide{color:#495057;line-height:1.5}
.ces-hero-banner-image-guide .bi{color:var(--primary)}
.ces-hero-banner-upload-hint{color:#6c757d;font-size:.8rem;line-height:1.4}
.ces-hero-banners-trigger{cursor:pointer}

/* News editor modal */
.ces-news-editor-modal .modal-content{
    border:0;
    border-radius:.75rem;
    box-shadow:0 12px 40px rgba(0,0,0,.18);
}
.ces-news-editor-list-panel{
    background:#f4f6f8;
    border:1px solid #e2e6ea;
    border-radius:.75rem;
    padding:1rem;
}
.ces-news-editor-list-title{color:var(--primary);font-weight:600}
.ces-news-editor-list-item{
    border:1px solid #e2e6ea;
    border-radius:.5rem;
    padding:.65rem .75rem;
}
.ces-news-editor-list-item.is-active,
.ces-news-editor-list-item:hover,
.ces-news-editor-list-item:focus{
    border-color:var(--accent);
    background:#fff;
}
.ces-news-editor-list-item-inner{
    display:flex;
    align-items:center;
    gap:.75rem;
}
.ces-news-editor-list-thumb{
    width:56px;
    height:56px;
    border-radius:.4rem;
    object-fit:cover;
    flex-shrink:0;
    background:#e9ecef;
    border:1px solid #dee2e6;
}
.ces-news-editor-list-item-body{flex:1;min-width:0}
.ces-news-editor-list-item-title{
    display:block;
    font-weight:600;
    color:var(--dark);
    line-height:1.35;
}
.ces-news-editor-form-panel{
    border:1px solid #e9ecef;
    border-radius:.75rem;
    padding:1rem 1.25rem;
    background:#fff;
}
.ces-news-editor-categories{
    max-height:220px;
    overflow:auto;
    background:#fff;
}
.ces-news-editor-category-item{
    margin-bottom:.35rem;
}
.ces-news-editor-category-item:last-child{
    margin-bottom:0;
}
.ces-news-editor-thumb-preview-wrap{
    position:relative;
    margin-bottom:.75rem;
    min-height:180px;
    max-width:480px;
    border-radius:.5rem;
    border:1px solid #e2e6ea;
    background:#f1f3f5 center/cover no-repeat;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
}
.ces-news-editor-thumb-preview-wrap.has-preview{
    min-height:220px;
}
.ces-news-editor-thumb-preview-wrap.has-preview .ces-news-editor-thumb-empty{
    display:none;
}
.ces-news-editor-thumb-preview{
    display:none;
    width:100%;
    max-width:100%;
    max-height:280px;
    object-fit:contain;
    border-radius:.5rem;
    background:transparent;
    border:0;
}
.ces-news-editor-thumb-preview.is-visible{
    display:block;
}
.ces-news-editor-texto{font-family:var(--font-body);font-size:.95rem}
.ces-news-editor-texto-block .tox-tinymce{
    border-radius:.5rem;
    border-color:#ced4da;
}
.ces-news-editor-attachments-block{
    border:1px solid #e9ecef;
    border-radius:.75rem;
    padding:1rem;
    background:#f8f9fa;
}
.ces-news-editor-attachments-list .list-group-item{
    background:#fff;
}
.ces-news-editor-attachment-name{
    font-weight:500;
    color:var(--dark);
}
.ces-news-editor-modal .modal-dialog.modal-xxl{
    max-width:min(1320px, calc(100vw - 2rem));
}
.ces-news-editor-trigger{cursor:pointer}
.tox-tinymce-aux,
.tox-dialog-wrap{
    z-index:2000 !important;
}

/* Events editor modal */
.ces-events-editor-modal .modal-content{
    border:0;
    border-radius:.75rem;
    box-shadow:0 1rem 3rem rgba(0,0,0,.15);
}
.mod-ces-separator-wrap{
    position:relative;
    display:block;
    width:100%;
    max-width:960px;
    margin:0 auto 1rem;
}
.ces-editor-modal-header{
    padding:1rem 1rem 0.75rem;
}
.ces-editor-modal-header .mod-ces-separator-wrap{
    margin-bottom:0;
}
.mod-ces-separator-wrap svg{
    width:100%;
    height:auto;
    display:block;
    border-radius:10px;
}
.mod-ces-separator-wrap .mod-ces-module-separador,
.mod-ces-separator-wrap img{
    width:100%;
    height:auto;
    display:block;
    border-radius:10px;
}
.ces-events-editor-list-panel{
    background:#f4f6f8;
    border:1px solid #e2e6ea;
    border-radius:.75rem;
    padding:1rem;
}
.ces-events-editor-list-title{color:var(--primary);font-weight:600}
.ces-events-editor-list-item{
    border:1px solid #e2e6ea;
    border-radius:.5rem;
    padding:.65rem .75rem;
}
.ces-events-editor-list-item.is-active,
.ces-events-editor-list-item:hover,
.ces-events-editor-list-item:focus{
    border-color:var(--accent);
    background:#fff;
}
.ces-events-editor-list-item-title{
    display:block;
    font-weight:600;
    color:var(--dark);
    line-height:1.35;
}
.ces-events-editor-form-panel{
    border:1px solid #e9ecef;
    border-radius:.75rem;
    padding:1rem 1.25rem;
    background:#fff;
}
.ces-events-editor-form-title{color:var(--primary);font-weight:600}
.ces-events-editor-settings{
    border:1px solid #e9ecef;
    border-radius:.75rem;
    padding:1rem 1.25rem;
    background:#f8f9fa;
}
