/* BISAE Public Home Design Engine v1 */
.bisae-ai-home-page {
    --bisae-ai-bg: #f8fafc;
    --bisae-ai-surface: #fff;
    --bisae-ai-surface-alt: #f1f5f9;
    --bisae-ai-text: #0f172a;
    --bisae-ai-muted: #475569;
    --bisae-ai-accent: #0f172a;
    --bisae-ai-accent-text: #fff;
    --bisae-ai-border: #dbe3ec;
    --bisae-ai-gap: 1rem;
    --bisae-ai-radius: 1rem;
    --bisae-ai-shadow: 0 12px 34px rgba(15, 23, 42, .08);
    position: relative;
    min-height: 100vh;
    isolation: isolate;
    overflow: hidden;
    color: var(--bisae-ai-text);
    background: var(--bisae-ai-bg);
    font-family: var(--bisae-ai-body-font, system-ui, sans-serif);
}

.bisae-ai-home-backdrop {
    position: fixed;
    inset: 0;
    z-index: -2;
    background-image: var(--bisae-ai-background-image, none);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.bisae-ai-home-backdrop::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--bisae-ai-bg);
    opacity: var(--bisae-ai-overlay, 0);
}

.bisae-ai-home-main {
    display: grid;
    gap: calc(var(--bisae-ai-gap) * 1.5);
    padding: clamp(1rem, 3vw, 2.75rem) 1rem 2rem;
}

.bisae-ai-block {
    width: min(100%, var(--bisae-ai-canvas-max, 1180px));
    margin-inline: auto;
}

.bisae-ai-block-inner {
    display: grid;
    gap: calc(var(--bisae-ai-gap) * 1.15);
}

.bisae-ai-width-narrow { max-width: 760px; }
.bisae-ai-width-standard { max-width: 980px; }
.bisae-ai-width-wide { max-width: 1280px; }
.bisae-ai-width-full { width: 100%; max-width: none; }

.bisae-ai-block.is-surface > .bisae-ai-block-inner {
    padding: clamp(1.15rem, 3vw, 2.5rem);
    border: 1px solid var(--bisae-ai-border);
    border-radius: var(--bisae-ai-radius);
    background: color-mix(in srgb, var(--bisae-ai-surface) 94%, transparent);
    box-shadow: var(--bisae-ai-shadow);
    backdrop-filter: blur(12px);
}

.bisae-ai-align-center .bisae-ai-block-inner,
.bisae-ai-align-center .bisae-ai-hero-copy { text-align: center; justify-items: center; }
.bisae-ai-align-right .bisae-ai-block-inner,
.bisae-ai-align-right .bisae-ai-hero-copy { text-align: right; justify-items: end; }

.bisae-ai-section-title,
.bisae-ai-hero-title,
.bisae-ai-section-card h3,
.bisae-ai-gallery-caption h3,
.bisae-ai-notice-card h3 {
    margin: 0;
    font-family: var(--bisae-ai-heading-font, Georgia, serif);
    font-weight: var(--bisae-ai-heading-weight, 700);
    text-transform: var(--bisae-ai-heading-transform, none);
    color: var(--bisae-ai-text);
}

.bisae-ai-section-title { font-size: clamp(1.55rem, 3vw, 2.45rem); }
.bisae-ai-section-lead,
.bisae-ai-rich-text,
.bisae-ai-rich-text p { color: var(--bisae-ai-muted); }
.bisae-ai-rich-text > :last-child { margin-bottom: 0; }

.bisae-ai-type-hero > .bisae-ai-block-inner {
    min-height: clamp(430px, 64vh, 680px);
    align-items: center;
}

/* Un hero sin recurso visual no reserva una columna fantasma. */
.bisae-ai-type-hero.no-media > .bisae-ai-block-inner {
    min-height: clamp(360px, 50vh, 540px);
}

.bisae-ai-type-hero.no-media.is-sparse > .bisae-ai-block-inner {
    min-height: auto;
}

.bisae-ai-type-hero.no-media.is-sparse.is-surface > .bisae-ai-block-inner {
    padding-block: clamp(2rem, 5vw, 4.25rem);
}

.bisae-ai-hero-copy {
    display: grid;
    gap: .85rem;
    align-content: center;
}

.bisae-ai-org-logo {
    width: auto;
    height: auto;
    max-width: min(280px, 72vw);
    max-height: 140px;
    object-fit: contain;
    border-radius: calc(var(--bisae-ai-radius) * .8);
    background: color-mix(in srgb, var(--bisae-ai-surface) 92%, transparent);
    padding: .65rem .85rem;
    border: 1px solid var(--bisae-ai-border);
}

.bisae-ai-hero-title {
    max-width: 18ch;
    font-size: clamp(2.4rem, 6vw, 5.9rem);
    line-height: .98;
    letter-spacing: -.045em;
}

.bisae-ai-hero-subtitle,
.bisae-ai-hero-motto,
.bisae-ai-hero-description { margin: 0; max-width: 66ch; }
.bisae-ai-hero-subtitle { font-size: clamp(1.05rem, 2vw, 1.4rem); color: var(--bisae-ai-text); }
.bisae-ai-hero-motto { font-family: var(--bisae-ai-heading-font); font-size: 1.1rem; color: var(--bisae-ai-accent); }
.bisae-ai-hero-description { color: var(--bisae-ai-muted); line-height: 1.75; }

.bisae-ai-hero-media {
    min-height: 320px;
    overflow: hidden;
    border-radius: var(--bisae-ai-radius);
    box-shadow: var(--bisae-ai-shadow);
}

.bisae-ai-hero-image { width: 100%; height: 100%; min-height: 320px; object-fit: cover; display: block; }

.bisae-ai-variant-split > .bisae-ai-block-inner,
.bisae-ai-variant-editorial > .bisae-ai-block-inner {
    grid-template-columns: minmax(0, 1fr) minmax(280px, .9fr);
}

.bisae-ai-type-hero.no-media.bisae-ai-variant-split > .bisae-ai-block-inner,
.bisae-ai-type-hero.no-media.bisae-ai-variant-editorial > .bisae-ai-block-inner {
    grid-template-columns: minmax(0, 1fr);
}

.bisae-ai-type-hero.no-media.bisae-ai-variant-split .bisae-ai-hero-copy,
.bisae-ai-type-hero.no-media.bisae-ai-variant-editorial .bisae-ai-hero-copy {
    width: min(100%, 860px);
}
.bisae-ai-variant-editorial .bisae-ai-hero-copy { padding-block: clamp(1rem, 4vw, 4rem); }
.bisae-ai-type-hero.no-media.bisae-ai-variant-editorial .bisae-ai-hero-copy { padding-block: clamp(.5rem, 2vw, 1.5rem); }
.bisae-ai-variant-centered > .bisae-ai-block-inner { max-width: 900px; margin-inline: auto; text-align: center; justify-items: center; }
.bisae-ai-variant-centered .bisae-ai-hero-title { max-width: 16ch; }

.bisae-ai-type-hero.is-sparse .bisae-ai-hero-title {
    font-size: clamp(2.5rem, 5vw, 5rem);
}

.bisae-ai-type-hero.no-media.bisae-ai-variant-centered .bisae-ai-hero-copy {
    width: min(100%, 860px);
}
.bisae-ai-variant-cover > .bisae-ai-block-inner { position: relative; min-height: min(82vh, 780px); overflow: hidden; border-radius: var(--bisae-ai-radius); }
.bisae-ai-variant-cover .bisae-ai-hero-media { position: absolute; inset: 0; z-index: -1; border-radius: inherit; }
.bisae-ai-variant-cover .bisae-ai-hero-image { min-height: 100%; filter: brightness(.48); }
.bisae-ai-variant-cover .bisae-ai-hero-copy { padding: clamp(1.5rem, 6vw, 5.5rem); color: #fff; }
.bisae-ai-variant-cover .bisae-ai-hero-title,
.bisae-ai-variant-cover .bisae-ai-hero-subtitle,
.bisae-ai-variant-cover .bisae-ai-hero-description,
.bisae-ai-variant-cover .bisae-ai-hero-motto { color: #fff; }

.bisae-ai-hero-actions,
.bisae-ai-actions,
.bisae-ai-section-shortcuts {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem;
    align-items: center;
}

.bisae-ai-action,
.bisae-ai-shortcut,
.bisae-ai-text-link {
    text-decoration: none;
    transition: transform .16s ease, opacity .16s ease, box-shadow .16s ease;
}
.bisae-ai-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: .72rem 1rem;
    border-radius: min(var(--bisae-ai-radius), 999px);
    border: 1px solid var(--bisae-ai-border);
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}
.bisae-ai-action:hover,
.bisae-ai-shortcut:hover,
.bisae-ai-text-link:hover { transform: translateY(-1px); }
.bisae-ai-action.is-primary { background: var(--bisae-ai-accent); border-color: var(--bisae-ai-accent); color: var(--bisae-ai-accent-text); }
.bisae-ai-action.is-secondary { background: var(--bisae-ai-surface); color: var(--bisae-ai-text); }
.bisae-ai-shortcut { padding: .55rem .8rem; border: 1px solid var(--bisae-ai-border); border-radius: 999px; color: var(--bisae-ai-text); background: var(--bisae-ai-surface); }
.bisae-ai-text-link { color: var(--bisae-ai-accent); font-weight: 700; }

.bisae-ai-variant-pills .bisae-ai-action { border-radius: 999px; }
.bisae-ai-variant-stack .bisae-ai-actions,
.bisae-ai-variant-stack .bisae-ai-hero-actions { flex-direction: column; align-items: stretch; }
.bisae-ai-variant-cards .bisae-ai-actions .bisae-ai-action { min-height: 84px; flex: 1 1 180px; box-shadow: var(--bisae-ai-shadow); }

.bisae-ai-section-grid,
.bisae-ai-notice-grid,
.bisae-ai-contact-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr));
    gap: var(--bisae-ai-gap);
}

.bisae-ai-section-card,
.bisae-ai-notice-card,
.bisae-ai-contact-card {
    display: grid;
    gap: .65rem;
    padding: 1rem;
    border: 1px solid var(--bisae-ai-border);
    border-radius: var(--bisae-ai-radius);
    background: var(--bisae-ai-surface);
}

.bisae-ai-section-marker,
.bisae-ai-contact-icon {
    display: inline-grid;
    place-items: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 999px;
    background: var(--bisae-ai-surface-alt);
    color: var(--bisae-ai-accent);
    font-weight: 800;
}

.bisae-ai-variant-list .bisae-ai-section-grid,
.bisae-ai-variant-editorial .bisae-ai-section-grid { grid-template-columns: 1fr; }
.bisae-ai-variant-list .bisae-ai-section-card { grid-template-columns: auto 1fr auto; align-items: center; }
.bisae-ai-variant-tiles .bisae-ai-section-card { min-height: 190px; align-content: end; background: var(--bisae-ai-surface-alt); }

.bisae-ai-gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
    gap: var(--bisae-ai-gap);
}
.bisae-ai-gallery-card { overflow: hidden; border-radius: var(--bisae-ai-radius); border: 1px solid var(--bisae-ai-border); background: var(--bisae-ai-surface); }
.bisae-ai-gallery-trigger { width: 100%; min-height: 230px; padding: 0; border: 0; background: var(--bisae-ai-surface-alt); cursor: pointer; overflow: hidden; }
.bisae-ai-gallery-trigger img { width: 100%; height: 260px; object-fit: cover; display: block; transition: transform .25s ease; }
.bisae-ai-gallery-trigger:hover img { transform: scale(1.025); }
.bisae-ai-gallery-caption { padding: .85rem 1rem 1rem; }
.bisae-ai-gallery-caption h3 { font-size: 1rem; }
.bisae-ai-gallery-caption p { margin: .35rem 0 0; color: var(--bisae-ai-muted); font-size: .92rem; }
.bisae-ai-file-badge { display: grid; place-items: center; min-height: 230px; color: var(--bisae-ai-muted); font-weight: 800; letter-spacing: .08em; }
.bisae-ai-variant-strip .bisae-ai-gallery-grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: .4rem; }
.bisae-ai-variant-strip .bisae-ai-gallery-card { flex: 0 0 min(78vw, 360px); scroll-snap-align: start; }
.bisae-ai-variant-featured .bisae-ai-gallery-card:first-child { grid-column: span 2; grid-row: span 2; }
.bisae-ai-variant-featured .bisae-ai-gallery-card:first-child .bisae-ai-gallery-trigger img { height: 100%; min-height: 520px; }
.bisae-ai-variant-mosaic .bisae-ai-gallery-card:nth-child(3n + 1) { grid-row: span 2; }
.bisae-ai-variant-mosaic .bisae-ai-gallery-card:nth-child(3n + 1) .bisae-ai-gallery-trigger img { min-height: 360px; }

.bisae-ai-contact-card small { color: var(--bisae-ai-muted); }
.bisae-ai-contact-card a,
.bisae-ai-contact-card span { color: var(--bisae-ai-text); font-weight: 650; text-decoration: none; }

.bisae-ai-map-frame {
    width: 100%;
    min-height: 420px;
    border: 0;
    border-radius: var(--bisae-ai-radius);
    box-shadow: var(--bisae-ai-shadow);
}
.bisae-ai-variant-compact .bisae-ai-map-frame { min-height: 280px; }
.bisae-ai-variant-card .bisae-ai-map-frame { min-height: 360px; }

.bisae-ai-system-alert {
    padding: 1rem;
    border: 1px solid #dc3545;
    border-radius: var(--bisae-ai-radius);
    background: color-mix(in srgb, #dc3545 9%, var(--bisae-ai-surface));
}

.bisae-ai-footer { padding: 1rem 1rem 2.2rem; color: var(--bisae-ai-muted); }
.bisae-ai-footer-inner { width: min(100%, 1180px); margin-inline: auto; display: flex; gap: .7rem; align-items: center; justify-content: center; font-size: .86rem; }
.bisae-ai-footer-logo { width: 30px; height: 30px; object-fit: contain; }

@media (max-width: 800px) {
    .bisae-ai-variant-split > .bisae-ai-block-inner,
    .bisae-ai-variant-editorial > .bisae-ai-block-inner { grid-template-columns: 1fr; }
    .bisae-ai-type-hero > .bisae-ai-block-inner { min-height: auto; }
    .bisae-ai-hero-title { font-size: clamp(2.25rem, 12vw, 4rem); }
    .bisae-ai-variant-cover > .bisae-ai-block-inner { min-height: 680px; }
    .bisae-ai-variant-featured .bisae-ai-gallery-card:first-child { grid-column: auto; grid-row: auto; }
    .bisae-ai-variant-list .bisae-ai-section-card { grid-template-columns: auto 1fr; }
}

/* Variaciones declarativas de bloques */
.bisae-ai-type-message.bisae-ai-variant-banner > .bisae-ai-block-inner {
    border-left: .4rem solid var(--bisae-ai-accent);
}
.bisae-ai-type-message.bisae-ai-variant-quote > .bisae-ai-block-inner {
    position: relative;
    padding-inline-start: clamp(1.25rem, 4vw, 3rem);
}
.bisae-ai-type-message.bisae-ai-variant-quote > .bisae-ai-block-inner::before {
    content: "“";
    position: absolute;
    inset-block-start: -.45rem;
    inset-inline-start: 0;
    font-family: var(--bisae-ai-heading-font);
    font-size: 4rem;
    line-height: 1;
    color: var(--bisae-ai-accent);
    opacity: .45;
}
.bisae-ai-type-message.bisae-ai-variant-minimal > .bisae-ai-block-inner {
    box-shadow: none;
    border-color: transparent;
    background: transparent;
}

.bisae-ai-type-contact.bisae-ai-variant-panel .bisae-ai-contact-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
}
.bisae-ai-type-contact.bisae-ai-variant-panel .bisae-ai-contact-card {
    min-height: 150px;
    align-content: center;
    background: var(--bisae-ai-surface-alt);
}
.bisae-ai-type-contact.bisae-ai-variant-minimal .bisae-ai-contact-card {
    padding-inline: 0;
    border-width: 0 0 1px;
    border-radius: 0;
    background: transparent;
}

.bisae-ai-type-map.bisae-ai-variant-wide.bisae-ai-width-full {
    padding-inline: 0;
}
.bisae-ai-type-map.bisae-ai-variant-wide.bisae-ai-width-full .bisae-ai-map-frame {
    border-radius: 0;
}
