/* Shared tokens and components, loaded after the established brand stylesheet. */
:root {
    --dio-font: 'Poppins', sans-serif;
    --dio-text-sm: .875rem;
    --dio-text-base: 1rem;
    --dio-text-lg: 1.125rem;
    --dio-h1: clamp(1.75rem, 3.5vw, 2.5rem);
    --dio-h2: clamp(1.5rem, 2.5vw, 2rem);
    --dio-h3: clamp(1.25rem, 2vw, 1.5rem);
    --dio-h4: 1.125rem;
    --dio-h5: 1.0625rem;
    --dio-h6: 1rem;
    --dio-radius: .5rem;
    --dio-space: clamp(1rem, 2vw, 1.5rem);
    --bs-body-font-family: var(--dio-font);
    --bs-body-font-size: var(--dio-text-base);
}
/* Layered important tokens take precedence over legacy unlayered/ID rules. */
@layer dio-typography {
body.dio-site {
    font-family: var(--dio-font) !important;
    font-size: var(--dio-text-base);
    line-height: 1.65;
}
body.dio-site *:not(.fa):not(.fas):not(.far):not(.fab):not(.bi):not([class^="fa-"]):not([class*=" fa-"]) {
    font-family: var(--dio-font) !important;
}
html body.dio-site :is(h1,h2,h3,h4,h5,h6) {
    line-height: 1.3 !important;
    overflow-wrap: anywhere;
    letter-spacing: normal !important;
    text-transform: none !important;
    font-weight: 600 !important;
}
html body.dio-site h1 { font-size: var(--dio-h1) !important; }
html body.dio-site h2 { font-size: var(--dio-h2) !important; }
html body.dio-site h3 { font-size: var(--dio-h3) !important; }
html body.dio-site h4 { font-size: var(--dio-h4) !important; }
html body.dio-site h5 { font-size: var(--dio-h5) !important; }
html body.dio-site h6 { font-size: var(--dio-h6) !important; }
html body.dio-site :is(p,li,address,td,th,dt,dd,label,input,select,textarea) {
    font-size: var(--dio-text-base) !important;
    line-height: 1.65 !important;
}
html body.dio-site main a, html body.dio-site .modal a {
    font-size: var(--dio-text-base) !important;
}
html body.dio-site :is(h1,h2,h3,h4,h5,h6,p) :is(a,span,strong,em,b,small) {
    font-size: inherit !important;
    line-height: inherit !important;
    text-transform: none !important;
    letter-spacing: inherit !important;
}
body.dio-site :is(input,select,textarea) { font-size: var(--dio-text-base); max-width: 100%; }
html body.dio-site :is(button,.btn,a[class*="-btn"],a[class*="btn-"],a[class*="-button"],.warangal-engagement-link,.warangal-archive-link,.accordion-button,.page-link,.dio-nav-toggle,.desktop-menu > a,.dio-mobile-toggle,.contact-details a) {
    font-size: var(--dio-text-base) !important;
    text-transform: none !important;
}
html body.dio-site :is(a[class*="-btn"],a[class*="btn-"],a[class*="-button"],.warangal-engagement-link,.warangal-archive-link) {
    line-height: 1.5 !important;
    letter-spacing: normal !important;
}
body.dio-site :is(p,.dio-content-shell li,.modal-body li) {
    text-align: justify !important;
    text-align-last: start !important;
    text-justify: inter-word;
}
}
.dio-error-page {
    box-sizing: border-box; max-width: 44rem; margin: 10vh auto; padding: var(--dio-space);
    border: 1px solid #e5e5e5; border-radius: var(--dio-radius); overflow-wrap: anywhere;
}
.dio-error-page h1, .dio-error-page a { color: #a00000; }
body.dio-site :is(.row > *,[class*="-grid"] > *, .dio-page-heading > *) { min-width: 0; }
body.dio-site main :is(img,video,iframe,audio) { max-width: 100%; }
body.dio-site main img:not([class]) { height: auto; }
body.dio-site img[hidden] { display: none !important; }
.dio-page, .dio-content-shell { min-width: 0; }
.dio-content-shell :is(p,li,a,address,td,th) { overflow-wrap: anywhere; }
.dio-skip-link {
    position: fixed; top: -6rem; left: 1rem; z-index: 1100;
    padding: .75rem 1rem; background: white; color: var(--dio-maroon);
}
.dio-skip-link:focus { top: 1rem; }
body.dio-site :focus-visible { outline: 3px solid var(--dio-blue); outline-offset: 3px; }
body.dio-site :is(.btn,.page-link,.btn-close,.menu-button) { min-height: 44px; min-width: 44px; }
body.dio-site :is(a[class*="-btn"],a[class*="btn-"],a[class*="-button"],.warangal-engagement-link,.warangal-archive-link) {
    display: inline-flex; align-items: center; justify-content: center;
    min-height: 44px; max-width: 100%; white-space: normal;
}
body.dio-site button:not(.btn-close):not([data-bs-slide-to]):not([data-bs-slide]) { min-height: 44px; }
body.dio-site .pagination { flex-wrap: wrap; gap: .25rem; }
.dio-table-scroll { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
body.dio-site .dio-content-shell table { display: table; width: 100% !important; min-width: 0; }
body.dio-site .dio-content-shell table.dio-data-table { min-width: 36rem !important; }
body.dio-site .dio-content-shell table.dio-detail-table { table-layout: fixed; }
body.dio-site .dio-content-shell table.dio-detail-table :is(td,th) { white-space: normal !important; overflow-wrap: anywhere !important; }
.dio-table-scroll:focus-visible { outline-offset: -3px; }
.dio-empty-state { padding: 1rem; color: var(--dio-muted); }
/* Photo albums use normal pages, with full photographs and shared typography. */
.dio-gallery-intro { max-width: 48rem; margin-bottom: 1.75rem; color: var(--dio-muted); }
.dio-album-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.dio-album-card {
    display: flex; flex-direction: column; overflow: hidden; min-width: 0;
    border: 1px solid var(--dio-border); border-radius: var(--dio-radius);
    color: var(--dio-ink); background: white; text-decoration: none;
}
.dio-album-card:hover { color: var(--dio-maroon); border-color: var(--dio-maroon); box-shadow: var(--dio-shadow); }
.dio-album-cover { aspect-ratio: 16 / 10; overflow: hidden; background: var(--dio-soft); }
body.dio-site .dio-album-cover img { display: block; width: 100%; height: 100%; object-fit: cover; }
.dio-album-card-body { display: flex; flex-direction: column; align-items: flex-start; flex: 1; gap: 1rem; padding: 1.25rem; }
.dio-album-card h3 { margin: 0; }
.dio-album-count { color: var(--dio-muted); font-size: var(--dio-text-base); }
.dio-album-action { display: inline-flex; align-items: center; gap: .75rem; min-height: 44px; margin-top: auto; color: var(--dio-maroon); font-weight: 600; }
.dio-album-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; margin-bottom: 1.5rem; }
.dio-album-toolbar .btn { display: inline-flex; align-items: center; gap: .75rem; white-space: normal; }
.dio-album-toolbar > span { color: var(--dio-muted); }
.dio-album-photos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.dio-album-photo { display: flex; flex-direction: column; min-width: 0; overflow: hidden; margin: 0; border: 1px solid var(--dio-border); border-radius: var(--dio-radius); background: var(--dio-soft); }
body.dio-site .dio-album-photo img { display: block; width: 100%; height: 260px; object-fit: contain; }
.dio-album-photo .dio-image-unavailable { min-height: 260px; }
.dio-album-photo figcaption { padding: .75rem 1rem; font-size: var(--dio-text-base); text-align: center; color: var(--dio-muted); background: white; }
.dio-album-more { margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid var(--dio-border); }
.dio-album-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 1.5rem; }
.dio-album-links a { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 44px; padding: .75rem 0; border-bottom: 1px solid var(--dio-border); color: var(--dio-maroon); text-decoration: none; }
.dio-album-links i { flex: 0 0 auto; }
@media (max-width: 991.98px) { .dio-album-grid, .dio-album-photos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575.98px) {
    .dio-album-grid, .dio-album-links, .dio-album-photos { grid-template-columns: minmax(0, 1fr); }
    .dio-album-grid { gap: 1.25rem; }
}
/* Slow zoom out on all photographic banners, restricted to desktop/laptop input. */
@keyframes dio-banner-zoom {
    from { transform: scale(1.1); }
    to { transform: scale(1); }
}
@media (min-width: 1024px) and (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
    :is(.banner-carousel,.carouselitems) .carousel-item { overflow: hidden; }
    :is(.banner-carousel,.carouselitems) .carousel-item:is(.active,.carousel-item-next,.carousel-item-prev) > img,
    .dio-alt-hero > img {
        transform-origin: center;
        animation: dio-banner-zoom 8s linear both;
        will-change: transform;
    }
    .dio-alt-hero > img { animation-duration: 16s; }
}
.dio-image-unavailable {
    display: grid; place-items: center; min-height: 3rem; padding: 1rem;
    background: var(--dio-soft); color: var(--dio-muted); font-size: var(--dio-text-sm);
}
a[data-unavailable] { cursor: default; }
a[data-unavailable]::after { content: ' — ' attr(data-unavailable); font-size: var(--dio-text-sm); }
.birthday-initials {
    display: inline-grid; place-items: center; width: 5rem; height: 5rem;
    border-radius: 50%; background: var(--dio-soft); color: var(--dio-maroon); flex-shrink: 0;
    font-size: var(--dio-h3); font-weight: 600;
}
/* Dropdowns share the existing navigation markup and brand colors. */
.contact-details a { color: white; text-decoration: none; }
.dio-nav-dropdown { position: relative; }
.dio-nav-toggle { cursor: pointer; }
.dio-dropdown-menu {
    display: none; position: absolute; inset-block-start: 100%; inset-inline-start: 0;
    min-width: 235px; max-width: min(320px, calc(100vw - 2rem)); padding: .5rem;
    background: white; border-top: 3px solid var(--dio-primary); box-shadow: var(--dio-shadow); z-index: 1000;
}
.dio-nav-dropdown.is-open > .dio-dropdown-menu { display: block; }
.dio-nav-dropdown:last-child .dio-dropdown-menu { inset-inline-start: auto; inset-inline-end: 0; }
body.dio-site .dio-dropdown-menu a {
    display: block; padding: .65rem .75rem; color: var(--dio-ink); text-decoration: none;
    font-size: var(--dio-text-base); white-space: normal; min-height: 44px;
}
.dio-dropdown-menu a:is(:hover,:focus) { color: var(--dio-maroon); background: var(--dio-soft); }
.dio-nav-toggle i, .dio-mobile-toggle i { font-size: .7rem; transition: transform .2s; }
[aria-expanded="true"] > i { transform: rotate(180deg); }
#mobileMenu { width: min(400px, 100%); }
#mobileMenu .mobile-menu > a, #mobileMenu .dio-mobile-submenu a {
    display: block; padding: .75rem .25rem; color: var(--dio-ink); text-decoration: none;
    font-size: var(--dio-text-base); min-height: 44px; border-bottom: 1px solid #eee;
}
#mobileMenu .dio-mobile-toggle { font: inherit; background: transparent; border: 0; border-radius: 0; box-shadow: none; }
#mobileMenu .dio-mobile-submenu { display: none; padding-inline-start: 1rem; }
#mobileMenu .dio-mobile-submenu.is-open { display: block; }
/* Keep content usable if the optional animation CDN is unavailable. */
html:not(.dio-motion) [data-aos] { opacity: 1 !important; transform: none !important; }
body.dio-site .modal { z-index: 1055 !important; }
body.dio-site .modal-backdrop { z-index: 1050 !important; }
body.dio-site .modal-dialog { max-width: min(1140px, calc(100% - 1rem)); }
body.dio-site .modal-content { max-height: calc(100dvh - 2rem); overflow-y: auto; }
body.dio-site .modal-header { flex-shrink: 0; }
body.dio-site .modal-body { min-height: 0; }
body.dio-site #videoModal .modal-dialog {
    position: relative !important; inset: auto !important; width: auto !important;
    max-width: min(800px, calc(100% - 1rem)) !important; margin: .5rem auto !important;
    min-height: calc(100% - 1rem) !important;
}
@media (max-width: 1199.98px) {
    .dio-desktop-menu { display: none !important; }
    .menu-button { display: block !important; }
}
@media (min-width: 1200px) { .menu-button { display: none !important; } }
@media (max-width: 767.98px) {
    .top-header { display: none; }
    body.dio-site .banner-carousel .carousel-item > img {
        height: clamp(260px, 75vw, 340px);
        object-fit: cover;
        object-position: center;
    }
    body.dio-site .banner-carousel :is(.carousel-control-prev,.carousel-control-next) {
        display: none;
    }
    body.dio-site .banner-carousel .carousel-indicators { margin-bottom: 16px; }
    body.dio-site .banner-carousel .carousel-indicators button {
        filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .75));
    }
    body.dio-site .dio-content-shell .table-responsive { min-width: 0; }
    body.dio-site .dio-content-shell .accordion-body { padding: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto !important; }
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
    [data-aos] { opacity: 1 !important; transform: none !important; }
}
