.public-hero {
    min-height: 70vh;
    display: flex;
    align-items: center;
    background: linear-gradient(135deg, #f8f9fa, #e9ecef);
}

.public-placeholder-card {
    height: 100%;
}

.public-gallery-hero,
.public-gallery-detail-header {
    background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
    border-bottom: 1px solid rgba(0, 0, 0, .06);
}

.public-gallery-card {
    border: 1px solid rgba(0, 0, 0, .08);
    border-radius: 1rem;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.public-gallery-card:hover,
.public-gallery-card:focus {
    transform: translateY(-2px);
    box-shadow: 0 .75rem 1.75rem rgba(0, 0, 0, .08);
    border-color: rgba(0, 0, 0, .14);
}

.public-gallery-card-image {
    aspect-ratio: 4 / 3;
    overflow: hidden;
}

.public-gallery-card-image img,
.public-gallery-cover img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.public-gallery-placeholder,
.public-gallery-cover-placeholder {
    min-height: 220px;
}

.public-empty-state-icon {
    width: 4rem;
    height: 4rem;
    font-size: 1.6rem;
}

.public-photo-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .75rem;
}

.public-photo-card {
    margin: 0;
}

.public-photo-link {
    display: block;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    border-radius: .85rem;
    background: #f8f9fa;
    border: 1px solid rgba(0, 0, 0, .06);
}

.public-photo-link img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .18s ease, opacity .18s ease;
}

.public-photo-link:hover img,
.public-photo-link:focus img {
    transform: scale(1.03);
}

.public-photo-placeholder {
    min-height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #6c757d;
    font-size: 2rem;
}

.public-photo-card figcaption {
    margin-top: .45rem;
    color: #6c757d;
    font-size: .875rem;
}

@media (min-width: 576px) {
    .public-photo-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .public-photo-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 1rem;
    }
}

@media (min-width: 1200px) {
    .public-photo-grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

.public-gallery-summary .badge {
    font-weight: 500;
}

.public-gallery-card-meta {
    line-height: 1.4;
}

.public-gallery-cover {
    aspect-ratio: 4 / 3;
}

.public-gallery-cover-placeholder {
    height: 100%;
}

.public-photo-card {
    position: relative;
}

.public-photo-card a:focus-visible,
.public-gallery-card:focus-visible {
    outline: .2rem solid rgba(13, 110, 253, .25);
    outline-offset: .2rem;
}

@media (max-width: 575.98px) {
    .public-gallery-hero,
    .public-gallery-detail-header {
        text-align: left;
    }

    .public-photo-grid {
        gap: .5rem;
    }

    .public-photo-link {
        border-radius: .65rem;
    }
}


.public-slideshow {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background: #111;
    color: #fff;
}

.public-slideshow-topbar,
.public-slideshow-captionbar {
    position: relative;
    z-index: 3;
    background: rgba(0, 0, 0, .72);
    backdrop-filter: blur(.5rem);
}

.public-slideshow-topbar {
    padding: .85rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, .12);
}

.public-slideshow-captionbar {
    padding: 1rem 0 1.15rem;
    border-top: 1px solid rgba(255, 255, 255, .12);
}

.public-slideshow-breadcrumb .breadcrumb-item,
.public-slideshow-breadcrumb .breadcrumb-item.active,
.public-slideshow-breadcrumb .breadcrumb-item + .breadcrumb-item::before {
    color: rgba(255, 255, 255, .58);
}

.public-slideshow-breadcrumb a {
    color: rgba(255, 255, 255, .82);
    text-decoration: none;
}

.public-slideshow-breadcrumb a:hover,
.public-slideshow-breadcrumb a:focus {
    color: #fff;
    text-decoration: underline;
}

.public-slideshow-stage {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem 3.75rem;
}

.public-slideshow-image-wrap {
    width: 100%;
    height: 100%;
    min-height: 55vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.public-slideshow-image {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: calc(100vh - 13.5rem);
    object-fit: contain;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, .35);
}

.public-slideshow-placeholder {
    width: 100%;
    min-height: 55vh;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 1rem;
    background: rgba(255, 255, 255, .06);
}

.public-slideshow-arrow {
    position: absolute;
    top: 50%;
    z-index: 2;
    transform: translateY(-50%);
    width: 3rem;
    height: 3rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    color: #fff;
    background: rgba(0, 0, 0, .46);
    border: 1px solid rgba(255, 255, 255, .16);
    text-decoration: none;
    transition: background .18s ease, transform .18s ease, opacity .18s ease;
}

.public-slideshow-arrow:hover,
.public-slideshow-arrow:focus {
    color: #fff;
    background: rgba(0, 0, 0, .72);
    transform: translateY(-50%) scale(1.04);
}

.public-slideshow-arrow-prev {
    left: 1rem;
}

.public-slideshow-arrow-next {
    right: 1rem;
}

.public-slideshow-arrow.is-disabled {
    opacity: .22;
    pointer-events: none;
}

.public-slideshow-caption {
    max-width: 58rem;
}

.public-slideshow-help {
    line-height: 1.35;
}

@media (max-width: 767.98px) {
    .public-slideshow-topbar {
        padding: .75rem 0;
    }

    .public-slideshow-breadcrumb {
        width: 100%;
        overflow-x: auto;
        white-space: nowrap;
    }

    .public-slideshow-back {
        width: 100%;
    }

    .public-slideshow-stage {
        padding: .75rem 0;
    }

    .public-slideshow-image-wrap {
        min-height: 48vh;
    }

    .public-slideshow-image {
        max-height: 62vh;
        width: 100%;
    }

    .public-slideshow-arrow {
        top: auto;
        bottom: 1rem;
        transform: none;
        width: 2.75rem;
        height: 2.75rem;
    }

    .public-slideshow-arrow:hover,
    .public-slideshow-arrow:focus {
        transform: scale(1.04);
    }

    .public-slideshow-arrow-prev {
        left: 1rem;
    }

    .public-slideshow-arrow-next {
        right: 1rem;
    }

    .public-slideshow-captionbar {
        padding-bottom: 1.25rem;
    }

    .public-slideshow-meta .btn {
        flex: 1 1 auto;
    }
}

/* Fase 5.3D — afinações finais do frontend público */
.public-summary-card {
    min-height: 100%;
}

.public-breadcrumb-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.public-breadcrumb-wrap .breadcrumb {
    flex-wrap: nowrap;
    min-width: max-content;
}

.public-back-link {
    max-width: 100%;
}

.public-gallery-card .card-title,
.public-gallery-card .card-text,
.public-photo-card figcaption {
    overflow-wrap: anywhere;
}

.public-photo-link {
    position: relative;
}

.public-photo-open-indicator {
    position: absolute;
    right: .5rem;
    bottom: .5rem;
    width: 2rem;
    height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    color: #fff;
    background: rgba(0, 0, 0, .56);
    opacity: 0;
    transform: translateY(.25rem);
    transition: opacity .18s ease, transform .18s ease, background .18s ease;
}

.public-photo-link:hover .public-photo-open-indicator,
.public-photo-link:focus .public-photo-open-indicator,
.public-photo-link:focus-visible .public-photo-open-indicator {
    opacity: 1;
    transform: translateY(0);
}

.public-photo-link:focus-visible {
    outline: .2rem solid rgba(13, 110, 253, .25);
    outline-offset: .2rem;
}

.public-empty-state {
    max-width: 58rem;
    margin-right: auto;
    margin-left: auto;
}

.public-slideshow {
    min-height: 100svh;
}

.public-slideshow-stage {
    touch-action: pan-y;
}

.public-slideshow-image {
    user-select: none;
    -webkit-user-drag: none;
}

@media (hover: none) {
    .public-photo-open-indicator {
        opacity: 1;
        transform: none;
    }
}

@media (max-width: 767.98px) {
    .public-gallery-hero,
    .public-gallery-detail-header {
        padding-top: 2rem !important;
        padding-bottom: 2rem !important;
    }

    .public-summary-card {
        padding: 1rem !important;
    }

    .public-gallery-grid {
        --bs-gutter-y: 1rem;
    }

    .public-gallery-card-image {
        aspect-ratio: 16 / 10;
    }

    .public-gallery-cover {
        aspect-ratio: 16 / 10;
    }

    .public-photo-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .public-photo-card figcaption {
        font-size: .8rem;
    }

    .public-slideshow-topbar .container-fluid,
    .public-slideshow-captionbar .container-fluid {
        padding-right: 1rem !important;
        padding-left: 1rem !important;
    }

    .public-slideshow-captionbar {
        padding-bottom: calc(1.25rem + env(safe-area-inset-bottom));
    }
}

@media (max-width: 420px) {
    .public-photo-grid {
        gap: .4rem;
    }

    .public-photo-link {
        border-radius: .55rem;
    }

    .public-photo-open-indicator {
        right: .35rem;
        bottom: .35rem;
        width: 1.75rem;
        height: 1.75rem;
        font-size: .85rem;
    }

    .public-slideshow-meta .btn {
        width: 100%;
    }
}

/* Fase 5.4A - seleção pública de fotos */
.public-photo-card-footer {
    padding: .65rem .7rem .75rem;
    background: #fff;
}

.public-photo-card-footer figcaption {
    margin-bottom: .55rem;
    font-size: .875rem;
    color: #6c757d;
    line-height: 1.3;
}

.public-selection-add-form {
    margin: 0;
}

.public-selection-list,
.public-order-form-card {
    overflow: hidden;
}

.public-selection-thumb {
    width: 86px;
    height: 86px;
    border-radius: .75rem;
    overflow: hidden;
    background: #f1f3f5;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #adb5bd;
    text-decoration: none;
}

.public-selection-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.public-selection-item .min-width-0 {
    min-width: 0;
}

@media (max-width: 575.98px) {
    .public-selection-thumb {
        width: 72px;
        height: 72px;
    }

    .public-photo-card-footer {
        padding: .6rem;
    }
}

/* Patch 5.4A.1 - transição visual de swipe no slideshow público */
.public-slideshow-image-wrap {
    transform: translateX(var(--public-slideshow-swipe-x, 0));
    opacity: var(--public-slideshow-swipe-opacity, 1);
    transition: transform .18s ease, opacity .18s ease;
    will-change: transform, opacity;
}

.public-slideshow.is-swiping .public-slideshow-image-wrap {
    transition: none;
}

.public-slideshow.is-transitioning .public-slideshow-image-wrap {
    pointer-events: none;
}

.public-slideshow.is-leaving-next .public-slideshow-image-wrap {
    transform: translateX(-7rem);
    opacity: 0;
}

.public-slideshow.is-leaving-prev .public-slideshow-image-wrap {
    transform: translateX(7rem);
    opacity: 0;
}

.public-slideshow.is-transitioning .public-slideshow-arrow,
.public-slideshow.is-transitioning .public-slideshow-meta .btn {
    pointer-events: none;
    opacity: .65;
}

@media (prefers-reduced-motion: reduce) {
    .public-slideshow-image-wrap {
        transition: none;
    }

    .public-slideshow.is-leaving-next .public-slideshow-image-wrap,
    .public-slideshow.is-leaving-prev .public-slideshow-image-wrap {
        transform: none;
        opacity: 1;
    }
}

/* Fase 5.4C - seleção AJAX e área pública de pedidos */
.public-photo-card {
    position: relative;
}

.public-photo-card.is-selected {
    outline: 2px solid rgba(13, 110, 253, .75);
    outline-offset: 3px;
}

.public-photo-selected-badge {
    position: absolute;
    top: .75rem;
    left: .75rem;
    display: none;
    align-items: center;
    gap: .35rem;
    padding: .35rem .55rem;
    border-radius: 999px;
    background: rgba(13, 110, 253, .94);
    color: #fff;
    font-size: .78rem;
    font-weight: 600;
    box-shadow: 0 .5rem 1.2rem rgba(0, 0, 0, .2);
}

.public-photo-card.is-selected .public-photo-selected-badge {
    display: inline-flex;
}

.public-selection-toggle-form button[disabled] {
    opacity: .72;
}

.public-customer-order-card {
    transition: transform .16s ease, box-shadow .16s ease;
}

.public-customer-order-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 .75rem 1.75rem rgba(15, 23, 42, .08) !important;
}

/* Fase 5.6A - home pública do workspace com placeholders */
.public-workspace-hero {
    background: linear-gradient(135deg, #f8f9fa 0%, #eef2f7 48%, #ffffff 100%);
    border-bottom: 1px solid rgba(0, 0, 0, .06);
}

.public-workspace-hero-card {
    background: #fff;
    border: 1px solid rgba(15, 23, 42, .08);
}

.public-workspace-hero-content {
    min-height: 34rem;
}

.public-workspace-logo-placeholder {
    width: 4.75rem;
    height: 4.75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    border-radius: 1.35rem;
    color: #fff;
    background: linear-gradient(135deg, #1d3557 0%, #457b9d 100%);
    font-size: 1.35rem;
    font-weight: 700;
    letter-spacing: .05em;
    box-shadow: 0 .75rem 1.5rem rgba(29, 53, 87, .22);
}

.public-workspace-hero-placeholder {
    min-height: 34rem;
    color: #fff;
    background:
        radial-gradient(circle at 20% 20%, rgba(255, 255, 255, .22), transparent 28%),
        radial-gradient(circle at 80% 35%, rgba(255, 255, 255, .16), transparent 30%),
        linear-gradient(135deg, #111827 0%, #1f2937 48%, #334155 100%);
}

.public-workspace-hero-icon {
    width: 5rem;
    height: 5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .18);
    font-size: 2rem;
}

.public-workspace-quick-stats .h3,
.public-workspace-quick-stats .h6 {
    line-height: 1.2;
}

.public-workspace-intro-card,
.public-workspace-order-help {
    min-height: 100%;
}

.public-workspace-steps li + li {
    margin-top: .55rem;
}

@media (max-width: 991.98px) {
    .public-workspace-hero-content,
    .public-workspace-hero-placeholder {
        min-height: auto;
    }

    .public-workspace-hero-placeholder {
        min-height: 16rem;
    }
}

@media (max-width: 575.98px) {
    .public-workspace-logo-placeholder {
        width: 4rem;
        height: 4rem;
        border-radius: 1rem;
        font-size: 1.1rem;
    }

    .public-workspace-hero-card {
        border-radius: 1.5rem !important;
    }
}


/* Fase 5.6B - home pública da galeria com placeholders */
.public-gallery-hero {
    background: linear-gradient(135deg, #ffffff 0%, #f3f6fb 52%, #eef2f7 100%);
    border-bottom: 1px solid rgba(0, 0, 0, .06);
}

.public-gallery-hero-card {
    background: #fff;
    border: 1px solid rgba(15, 23, 42, .08);
}

.public-gallery-hero-content {
    min-height: 31rem;
}

.public-gallery-logo-placeholder {
    width: 4.25rem;
    height: 4.25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    border-radius: 1.2rem;
    color: #fff;
    background: linear-gradient(135deg, #0f766e 0%, #14b8a6 100%);
    font-size: 1.2rem;
    font-weight: 700;
    letter-spacing: .05em;
    box-shadow: 0 .75rem 1.5rem rgba(15, 118, 110, .2);
}

.public-gallery-hero-cover {
    min-height: 31rem;
    background: #111827;
}

.public-gallery-hero-cover img {
    display: block;
    object-fit: cover;
}

.public-gallery-hero-placeholder {
    min-height: 31rem;
    color: #fff;
    background:
        radial-gradient(circle at 25% 25%, rgba(255, 255, 255, .22), transparent 30%),
        radial-gradient(circle at 75% 40%, rgba(255, 255, 255, .14), transparent 30%),
        linear-gradient(135deg, #0f172a 0%, #334155 55%, #475569 100%);
}

.public-gallery-hero-icon {
    width: 4.5rem;
    height: 4.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .18);
    font-size: 1.85rem;
}

.public-gallery-intro-card,
.public-gallery-order-help {
    min-height: 100%;
}

.public-gallery-steps li + li {
    margin-top: .55rem;
}

@media (max-width: 991.98px) {
    .public-gallery-hero-content,
    .public-gallery-hero-cover,
    .public-gallery-hero-placeholder {
        min-height: auto;
    }

    .public-gallery-hero-placeholder,
    .public-gallery-hero-cover {
        min-height: 16rem;
    }
}

@media (max-width: 575.98px) {
    .public-gallery-logo-placeholder {
        width: 3.75rem;
        height: 3.75rem;
        border-radius: 1rem;
        font-size: 1.05rem;
    }

    .public-gallery-hero-card {
        border-radius: 1.5rem !important;
    }
}

/* Fase 5.6D - tipos e templates iniciais de galeria */
.public-gallery-hero.gallery-template-wedding-elegant {
    background: linear-gradient(135deg, #fff7ed 0%, #fff1f2 48%, #fdf2f8 100%);
}

.gallery-template-wedding-elegant .public-gallery-hero-card {
    border-color: rgba(190, 24, 93, .14);
}

.gallery-template-wedding-elegant .public-gallery-logo-placeholder {
    background: linear-gradient(135deg, #be185d 0%, #f472b6 100%);
    box-shadow: 0 .75rem 1.5rem rgba(190, 24, 93, .2);
}

.gallery-template-wedding-elegant .public-gallery-hero-content h1 {
    letter-spacing: .01em;
}

.public-gallery-hero.gallery-template-event-simple {
    background: linear-gradient(135deg, #eff6ff 0%, #f8fafc 56%, #e0f2fe 100%);
}

.gallery-template-event-simple .public-gallery-logo-placeholder {
    background: linear-gradient(135deg, #1d4ed8 0%, #38bdf8 100%);
    box-shadow: 0 .75rem 1.5rem rgba(29, 78, 216, .18);
}

.public-gallery-hero.gallery-template-festival-poster {
    background: linear-gradient(135deg, #111827 0%, #312e81 48%, #7c2d12 100%);
    color: #fff;
}

.gallery-template-festival-poster .public-gallery-hero-card {
    background: rgba(255, 255, 255, .96);
}

.gallery-template-festival-poster .public-gallery-logo-placeholder {
    background: linear-gradient(135deg, #f97316 0%, #facc15 100%);
    color: #111827;
    box-shadow: 0 .75rem 1.5rem rgba(249, 115, 22, .25);
}

.public-gallery-hero.gallery-template-compact-child .public-gallery-hero-content {
    min-height: 22rem;
}

.public-gallery-hero.gallery-template-compact-child .public-gallery-hero-cover,
.public-gallery-hero.gallery-template-compact-child .public-gallery-hero-placeholder {
    min-height: 22rem;
}

.public-gallery-type-badge {
    background: rgba(255, 255, 255, .82) !important;
}

.public-gallery-parent-link .btn {
    border-radius: 999px;
}

/* Fase 5.6E - blocos modulares de templates públicos de galeria */
.public-gallery-hero-variant-image-left .public-gallery-hero-cover img,
.public-gallery-hero-variant-image-right .public-gallery-hero-cover img,
.public-gallery-hero-variant-wedding-elegant .public-gallery-hero-cover img,
.public-gallery-hero-variant-compact .public-gallery-hero-cover img {
    object-position: center;
}

.public-gallery-hero-variant-image-full .public-gallery-hero-card,
.public-gallery-hero-variant-festival-poster .public-gallery-hero-card {
    position: relative;
}

.public-gallery-hero-variant-image-full .public-gallery-hero-cover,
.public-gallery-hero-variant-festival-poster .public-gallery-hero-cover {
    min-height: 18rem;
}

.public-gallery-hero-variant-image-full .public-gallery-hero-content,
.public-gallery-hero-variant-festival-poster .public-gallery-hero-content {
    min-height: 22rem;
}

.public-gallery-hero-variant-wedding-elegant.title-font-serif .public-gallery-hero-content h1 {
    font-family: Georgia, 'Times New Roman', serif;
    font-weight: 500;
}

.public-gallery-hero-variant-festival-poster .public-gallery-hero-content h1 {
    text-transform: uppercase;
    letter-spacing: .04em;
}

.public-gallery-block-intro-centered .public-gallery-intro-card {
    max-width: 56rem;
}

.public-gallery-block-intro-centered .public-gallery-intro-text {
    max-width: 42rem;
}

.public-gallery-block-order-cta .rounded-4 {
    box-shadow: 0 .75rem 2rem rgba(15, 23, 42, .06);
}

/* Fase 5.6E.1 — breadcrumb corrigido e hero full overlay */
.public-breadcrumb-wrap {
    overflow-x: auto;
    overflow-y: hidden;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 1rem;
    background: rgba(255, 255, 255, .92);
    box-shadow: 0 .35rem 1rem rgba(15, 23, 42, .04);
    -webkit-overflow-scrolling: touch;
}

.public-breadcrumb-wrap .public-breadcrumb {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0;
    min-width: max-content;
    padding: .75rem 1rem;
    margin: 0;
    background: transparent;
}

.public-breadcrumb-wrap .breadcrumb-item {
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    color: #64748b;
}

.public-breadcrumb-wrap .breadcrumb-item + .breadcrumb-item::before {
    float: none;
    padding: 0 .7rem;
    color: #94a3b8;
}

.public-breadcrumb-wrap .breadcrumb-item a {
    color: #475569;
    text-decoration: none;
}

.public-breadcrumb-wrap .breadcrumb-item a:hover,
.public-breadcrumb-wrap .breadcrumb-item a:focus {
    color: #0d6efd;
    text-decoration: underline;
}

.public-breadcrumb-wrap .breadcrumb-item.active {
    color: #0f172a;
    font-weight: 600;
}

.public-gallery-hero-overlay {
    background: linear-gradient(135deg, #f8fafc 0%, #eef2f7 100%);
    border-bottom: 1px solid rgba(15, 23, 42, .06);
}

.public-gallery-overlay-card {
    position: relative;
    min-height: clamp(24rem, 52vw, 36rem);
    isolation: isolate;
    background: #111827;
    color: #fff;
}

.public-gallery-overlay-image,
.public-gallery-overlay-placeholder,
.public-gallery-overlay-shade {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.public-gallery-overlay-image {
    z-index: -3;
    object-fit: cover;
    transform: scale(1.035);
}

.public-gallery-overlay-placeholder {
    z-index: -3;
    background:
        radial-gradient(circle at 20% 20%, rgba(255,255,255,.17), transparent 28%),
        linear-gradient(135deg, #334155 0%, #0f172a 100%);
}

.public-gallery-overlay-shade {
    z-index: -1;
    background: linear-gradient(90deg, rgba(2, 6, 23, .84) 0%, rgba(2, 6, 23, .58) 48%, rgba(2, 6, 23, .24) 100%);
}

.public-gallery-overlay-card.overlay-soft .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(15, 23, 42, .66), rgba(15, 23, 42, .22));
}

.public-gallery-overlay-card.overlay-warm .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(76, 29, 10, .76), rgba(120, 53, 15, .3));
}

.public-gallery-overlay-card.effect-soft-blur .public-gallery-overlay-image {
    filter: blur(2px) saturate(.9);
}

.public-gallery-overlay-card.effect-grayscale .public-gallery-overlay-image {
    filter: grayscale(1) contrast(.95);
}

.public-gallery-overlay-card.effect-sepia .public-gallery-overlay-image {
    filter: sepia(.5) saturate(.85);
}

.public-gallery-overlay-content {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: inherit;
}

.public-gallery-overlay-brand {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.public-gallery-overlay-copy {
    max-width: 46rem;
}

.public-gallery-overlay-card.align-center .public-gallery-overlay-copy {
    margin-inline: auto;
    text-align: center;
}

.public-gallery-overlay-card.align-center .public-gallery-overlay-summary,
.public-gallery-overlay-card.align-center .public-gallery-overlay-actions {
    justify-content: center;
}

.public-gallery-overlay-card.align-right .public-gallery-overlay-copy {
    margin-left: auto;
    text-align: right;
}

.public-gallery-overlay-card.align-right .public-gallery-overlay-summary,
.public-gallery-overlay-card.align-right .public-gallery-overlay-actions {
    justify-content: flex-end;
}

.public-gallery-overlay-summary .badge {
    color: #fff;
    background: rgba(255, 255, 255, .14);
    border: 1px solid rgba(255, 255, 255, .2);
    backdrop-filter: blur(6px);
}

@media (max-width: 767.98px) {
    .public-gallery-overlay-card {
        min-height: 28rem;
    }

    .public-gallery-overlay-content {
        padding: 1.5rem !important;
    }

    .public-gallery-overlay-shade,
    .public-gallery-overlay-card.overlay-soft .public-gallery-overlay-shade,
    .public-gallery-overlay-card.overlay-warm .public-gallery-overlay-shade {
        background: linear-gradient(180deg, rgba(2, 6, 23, .48) 0%, rgba(2, 6, 23, .86) 82%);
    }

    .public-gallery-overlay-copy {
        max-width: 100%;
    }
}


/* Fase 5.6F.1 — opções visuais do template builder */
.public-gallery-template-title {
    transition: color .2s ease, font-family .2s ease, letter-spacing .2s ease;
}

.title-font-sans .public-gallery-template-title {
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
}

.title-font-serif .public-gallery-template-title {
    font-family: Georgia, "Times New Roman", Times, serif;
}

.title-font-display .public-gallery-template-title {
    font-family: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif;
    letter-spacing: .035em;
    text-transform: uppercase;
}

.title-font-handwritten .public-gallery-template-title {
    font-family: "Segoe Print", "Bradley Hand", "Brush Script MT", "Lucida Handwriting", cursive;
    font-weight: 400 !important;
    letter-spacing: .01em;
}

.title-color-light .public-gallery-template-title {
    color: #fff;
}

.title-color-dark .public-gallery-template-title {
    color: #172033;
}

.title-color-gold .public-gallery-template-title {
    color: #d8b45a;
}

.title-color-accent .public-gallery-template-title {
    color: var(--bs-primary);
}

.public-gallery-hero.align-center .public-gallery-hero-content {
    text-align: center;
    align-items: center;
}

.public-gallery-hero.align-center .public-gallery-summary,
.public-gallery-hero.align-center .public-gallery-hero-content > .d-flex {
    justify-content: center;
}

.public-gallery-hero.align-right .public-gallery-hero-content {
    text-align: right;
    align-items: flex-end;
}

.public-gallery-hero.align-right .public-gallery-summary,
.public-gallery-hero.align-right .public-gallery-hero-content > .d-flex {
    justify-content: flex-end;
}

.public-gallery-hero.effect-soft-blur .public-gallery-hero-cover img {
    filter: blur(2px) saturate(.9);
    transform: scale(1.025);
}

.public-gallery-hero.effect-grayscale .public-gallery-hero-cover img {
    filter: grayscale(1) contrast(.95);
}

.public-gallery-hero.effect-sepia .public-gallery-hero-cover img {
    filter: sepia(.55) saturate(.85);
}

.public-gallery-hero.effect-saturate .public-gallery-hero-cover img,
.public-gallery-overlay-card.effect-saturate .public-gallery-overlay-image {
    filter: saturate(1.35) contrast(1.04);
}

.public-gallery-overlay-card.overlay-none .public-gallery-overlay-shade {
    background: transparent;
}

.public-gallery-overlay-card.overlay-strong .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(2, 6, 23, .92) 0%, rgba(2, 6, 23, .72) 52%, rgba(2, 6, 23, .46) 100%);
}

@media (max-width: 767.98px) {
    .title-font-handwritten .public-gallery-template-title {
        line-height: 1.15;
    }
}

/* Fase 5.6G — metadados públicos das galerias */
.public-gallery-featured-text {
    max-width: 54rem;
    font-size: 1.05rem;
    font-weight: 500;
}

.public-gallery-metadata-item {
    display: inline-flex;
    flex-direction: column;
    gap: .1rem;
    min-width: 8rem;
    padding: .55rem .75rem;
    border: 1px solid rgba(148, 163, 184, .35);
    border-radius: .75rem;
    background: rgba(255, 255, 255, .55);
    backdrop-filter: blur(4px);
}

.public-gallery-metadata-item small {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    opacity: .72;
}

.public-gallery-overlay-card .public-gallery-metadata-item {
    border-color: rgba(255, 255, 255, .22);
    background: rgba(15, 23, 42, .34);
    color: inherit;
}

@media (max-width: 575.98px) {
    .public-gallery-metadata-item {
        min-width: calc(50% - .5rem);
        flex: 1 1 calc(50% - .5rem);
    }
}


/* Fase 5.6J — consolidação visual, mobile e acessibilidade */
html {
    scroll-behavior: smooth;
    scroll-padding-top: 1rem;
}

body.public-site {
    overflow-x: hidden;
}

.public-skip-link {
    position: fixed;
    top: .75rem;
    left: .75rem;
    z-index: 2000;
    padding: .65rem 1rem;
    border-radius: .5rem;
    background: #111827;
    color: #fff;
    text-decoration: none;
    transform: translateY(-160%);
    transition: transform .18s ease;
}

.public-skip-link:focus {
    transform: translateY(0);
    color: #fff;
}

.public-alerts-container {
    padding-top: 1rem;
}

.public-alerts-container:empty {
    display: none;
}

.public-navbar {
    position: relative;
    z-index: 1030;
}

.public-navbar .navbar-brand {
    max-width: min(65vw, 28rem);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.public-gallery-card,
.public-photo-card,
.public-workspace-intro-card,
.public-workspace-order-help,
.public-order-form-card {
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.public-gallery-card:hover,
.public-gallery-card:focus-visible {
    transform: translateY(-3px);
    box-shadow: 0 1rem 2rem rgba(15, 23, 42, .10);
}

.public-gallery-card:focus-visible,
.public-photo-link:focus-visible,
.public-slideshow-arrow:focus-visible,
.public-selection-toggle-form button:focus-visible,
.public-navbar a:focus-visible,
.public-gallery-hero a:focus-visible {
    outline: 3px solid rgba(var(--bs-primary-rgb), .35);
    outline-offset: 3px;
}

.public-gallery-card-image img,
.public-photo-link img,
.public-gallery-hero-cover img,
.public-gallery-overlay-image {
    display: block;
}

.public-gallery-card-image img,
.public-photo-link img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.public-gallery-hero-cover,
.public-gallery-hero-placeholder {
    min-height: 22rem;
}

.public-gallery-hero-content,
.public-gallery-overlay-copy {
    min-width: 0;
}

.public-gallery-template-title,
.public-gallery-featured-text,
.public-gallery-overlay-copy p {
    overflow-wrap: anywhere;
}

.public-gallery-metadata {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem;
}

.public-gallery-metadata-item {
    max-width: 100%;
}

.public-gallery-metadata-item strong {
    overflow-wrap: anywhere;
}

.public-breadcrumb-wrap {
    overflow-x: auto;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
}

.public-breadcrumb {
    flex-wrap: nowrap;
    width: max-content;
    min-width: 100%;
    padding-bottom: .2rem;
}

.public-breadcrumb .breadcrumb-item {
    white-space: nowrap;
}

.public-order-form-card {
    position: sticky;
    top: 1rem;
}

#public-workspace-galleries,
#public-gallery-photos,
#public-gallery-subgalleries {
    scroll-margin-top: 1rem;
}

@media (max-width: 991.98px) {
    .public-order-form-card {
        position: static;
    }

    .public-gallery-hero-cover,
    .public-gallery-hero-placeholder {
        min-height: 18rem;
    }

    .public-workspace-hero-content .btn,
    .public-gallery-hero-content .btn,
    .public-gallery-overlay-actions .btn {
        flex: 1 1 auto;
    }
}

@media (max-width: 767.98px) {
    .public-workspace-hero,
    .public-gallery-hero {
        padding-top: 1rem !important;
        padding-bottom: 1rem !important;
    }

    .public-workspace-hero-card,
    .public-gallery-hero-card,
    .public-gallery-overlay-card {
        border-radius: 1.25rem !important;
    }

    .public-workspace-hero-content,
    .public-gallery-hero-content {
        padding: 1.35rem !important;
    }

    .public-gallery-overlay-card {
        min-height: clamp(25rem, 115vw, 34rem);
    }

    .public-gallery-overlay-content {
        justify-content: flex-end;
        gap: 1.5rem;
    }

    .public-gallery-overlay-brand {
        align-items: flex-start;
    }

    .public-gallery-overlay-actions,
    .public-gallery-hero-content > .d-flex,
    .public-workspace-hero-content > .d-flex {
        width: 100%;
    }

    .public-gallery-overlay-actions .btn,
    .public-gallery-hero-content > .d-flex .btn,
    .public-workspace-hero-content > .d-flex .btn {
        flex: 1 1 100%;
        width: 100%;
    }

    .public-gallery-metadata-item {
        flex: 1 1 100%;
        min-width: 0;
    }

    .public-gallery-card .card-body,
    .public-photo-card-footer {
        padding: 1rem;
    }

    .public-order-form-card {
        padding: 1.1rem !important;
    }

    .public-selection-toggle-form .btn {
        min-height: 2.75rem;
    }
}

@media (max-width: 575.98px) {
    .public-navbar .container {
        gap: .75rem;
    }

    .public-navbar .navbar-brand {
        max-width: 58vw;
        font-size: 1rem;
    }

    .public-workspace-logo-placeholder,
    .public-gallery-logo-placeholder,
    .public-gallery-overlay-logo {
        flex: 0 0 auto;
    }

    .public-workspace-quick-stats > [class*="col-"] {
        width: 100%;
    }

    .public-gallery-grid > [class*="col-"] {
        width: 100%;
    }

    .public-gallery-overlay-copy .display-5,
    .public-gallery-template-title {
        font-size: clamp(2rem, 11vw, 3rem);
    }

    .public-slideshow-toolbar {
        gap: .5rem;
    }

    .public-slideshow-toolbar .btn {
        flex: 1 1 auto;
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .public-gallery-card,
    .public-photo-card,
    .public-workspace-intro-card,
    .public-workspace-order-help,
    .public-order-form-card,
    .public-skip-link {
        transition: none;
    }

    .public-gallery-card:hover {
        transform: none;
    }
}

/* Hero full overlay — largura, posição, overlay e botões configuráveis */
.public-gallery-overlay-card {
    min-height: 0;
}

.public-gallery-overlay-media {
    position: relative;
    min-height: clamp(24rem, 52vw, 36rem);
    isolation: isolate;
    overflow: hidden;
    background: #111827;
}

.public-gallery-overlay-media .public-gallery-overlay-image,
.public-gallery-overlay-media .public-gallery-overlay-placeholder,
.public-gallery-overlay-media .public-gallery-overlay-shade {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.public-gallery-overlay-media .public-gallery-overlay-image,
.public-gallery-overlay-media .public-gallery-overlay-placeholder {
    z-index: -3;
}

.public-gallery-overlay-media .public-gallery-overlay-shade {
    z-index: -1;
}

.public-gallery-overlay-media > .public-gallery-overlay-content {
    position: relative;
    z-index: 1;
    min-height: clamp(24rem, 52vw, 36rem);
}

.public-gallery-overlay-content-outside {
    background: #fff;
}

.public-gallery-overlay-content-outside .public-gallery-overlay-content {
    min-height: auto;
}

.public-gallery-overlay-content-outside .public-gallery-overlay-copy {
    max-width: 58rem;
}

.public-gallery-overlay-summary.is-outside .badge {
    color: #334155;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    backdrop-filter: none;
}

.public-gallery-overlay-card.overlay-none .public-gallery-overlay-shade {
    background: transparent;
}

.public-gallery-overlay-card.overlay-dark.overlay-intensity-soft .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(2, 6, 23, .52), rgba(2, 6, 23, .16));
}

.public-gallery-overlay-card.overlay-dark.overlay-intensity-medium .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(2, 6, 23, .78), rgba(2, 6, 23, .28));
}

.public-gallery-overlay-card.overlay-dark.overlay-intensity-strong .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(2, 6, 23, .94), rgba(2, 6, 23, .52));
}

.public-gallery-overlay-card.overlay-light.overlay-intensity-soft .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(255, 255, 255, .42), rgba(255, 255, 255, .12));
}

.public-gallery-overlay-card.overlay-light.overlay-intensity-medium .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(255, 255, 255, .68), rgba(255, 255, 255, .25));
}

.public-gallery-overlay-card.overlay-light.overlay-intensity-strong .public-gallery-overlay-shade {
    background: linear-gradient(90deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .48));
}

.public-gallery-hero-overlay.hero-width-full-bleed .public-gallery-overlay-card,
.public-gallery-hero-overlay.hero-width-full-bleed .public-gallery-overlay-media {
    border-radius: 0 !important;
}

.public-gallery-hero-overlay.hero-width-full-bleed .public-gallery-overlay-content {
    padding-right: max(1.5rem, calc((100vw - 1320px) / 2 + 1.5rem)) !important;
    padding-left: max(1.5rem, calc((100vw - 1320px) / 2 + 1.5rem)) !important;
}

.public-gallery-hero-overlay.content-position-above .public-gallery-overlay-media,
.public-gallery-hero-overlay.content-position-below .public-gallery-overlay-media {
    min-height: clamp(18rem, 42vw, 32rem);
}

@media (max-width: 767.98px) {
    .public-gallery-overlay-media,
    .public-gallery-overlay-media > .public-gallery-overlay-content {
        min-height: 28rem;
    }

    .public-gallery-hero-overlay.content-position-above .public-gallery-overlay-media,
    .public-gallery-hero-overlay.content-position-below .public-gallery-overlay-media {
        min-height: 18rem;
    }

    .public-gallery-overlay-card.overlay-dark .public-gallery-overlay-shade {
        background: linear-gradient(180deg, rgba(2, 6, 23, .32) 0%, rgba(2, 6, 23, .88) 88%);
    }

    .public-gallery-overlay-card.overlay-light .public-gallery-overlay-shade {
        background: linear-gradient(180deg, rgba(255, 255, 255, .22) 0%, rgba(255, 255, 255, .82) 88%);
    }
}

/* Bloco Subgalerias — variantes e opções visuais */
.public-subgallery-variant .public-subgallery-card,
.public-subgallery-variant .public-subgallery-horizontal-card,
.public-subgallery-variant .public-subgallery-compact-card,
.public-subgallery-variant .public-subgallery-overlay-card,
.public-subgallery-variant .public-subgallery-featured-main,
.public-subgallery-variant .public-subgallery-editorial-row {
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}

.public-subgallery-variant .public-subgallery-media {
    position: relative;
    overflow: hidden;
}

.public-gallery-card-image {
    position: relative;
}

.public-subgallery-protected-badge {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    max-width: calc(100% - 1.5rem);
    padding: .35rem .55rem;
    border-radius: 999px;
    color: #fff;
    background: rgba(15, 23, 42, .78);
    border: 1px solid rgba(255, 255, 255, .24);
    box-shadow: 0 .5rem 1.2rem rgba(15, 23, 42, .16);
    backdrop-filter: blur(7px);
    font-size: .73rem;
    font-weight: 650;
    line-height: 1;
    letter-spacing: .01em;
    z-index: 3;
}

.public-subgallery-protected-badge.is-absolute {
    position: absolute;
    top: .75rem;
    left: .75rem;
}

.public-subgallery-protected-badge.is-inline {
    position: static;
    flex: 0 0 auto;
    color: #475569;
    background: #f8fafc;
    border-color: rgba(148, 163, 184, .45);
    box-shadow: none;
    backdrop-filter: none;
}

.public-subgallery-protected-badge.is-compact {
    gap: .25rem;
    padding: .22rem .4rem;
    font-size: .68rem;
}

.public-subgallery-protected-badge i {
    font-size: .78rem;
    line-height: 1;
}

.public-subgallery-variant .public-subgallery-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .35s ease;
}

.public-subgallery-ratio-landscape .public-subgallery-card .public-subgallery-media,
.public-subgallery-ratio-landscape .public-subgallery-overlay-card .public-subgallery-media {
    aspect-ratio: 16 / 10;
}

.public-subgallery-ratio-square .public-subgallery-card .public-subgallery-media,
.public-subgallery-ratio-square .public-subgallery-overlay-card .public-subgallery-media {
    aspect-ratio: 1;
}

.public-subgallery-ratio-portrait .public-subgallery-card .public-subgallery-media,
.public-subgallery-ratio-portrait .public-subgallery-overlay-card .public-subgallery-media {
    aspect-ratio: 4 / 5;
}

.public-subgallery-ratio-original .public-subgallery-card .public-subgallery-media img,
.public-subgallery-ratio-original .public-subgallery-overlay-card .public-subgallery-media img {
    height: auto;
    object-fit: contain;
}

.public-subgallery-rounded .public-subgallery-card,
.public-subgallery-rounded .public-subgallery-horizontal-card,
.public-subgallery-rounded .public-subgallery-compact-card,
.public-subgallery-rounded .public-subgallery-overlay-card,
.public-subgallery-rounded .public-subgallery-featured-main,
.public-subgallery-rounded .public-subgallery-editorial-row {
    border-radius: 1rem;
}

.public-subgallery-square-corners .public-subgallery-card,
.public-subgallery-square-corners .public-subgallery-horizontal-card,
.public-subgallery-square-corners .public-subgallery-compact-card,
.public-subgallery-square-corners .public-subgallery-overlay-card,
.public-subgallery-square-corners .public-subgallery-featured-main,
.public-subgallery-square-corners .public-subgallery-editorial-row {
    border-radius: 0;
}

.public-subgallery-hover-lift .public-subgallery-card:hover,
.public-subgallery-hover-lift .public-subgallery-horizontal-card:hover,
.public-subgallery-hover-lift .public-subgallery-compact-card:hover,
.public-subgallery-hover-lift .public-subgallery-overlay-card:hover,
.public-subgallery-hover-lift .public-subgallery-featured-main:hover,
.public-subgallery-hover-lift .public-subgallery-editorial-row:hover {
    transform: translateY(-4px);
    box-shadow: 0 1rem 2.5rem rgba(15, 23, 42, .12);
}

.public-subgallery-hover-zoom a:hover .public-subgallery-media img {
    transform: scale(1.045);
}

.public-subgallery-overlay-card {
    min-height: 18rem;
    background: #111827;
}

.public-subgallery-overlay-card .public-subgallery-media {
    min-height: 18rem;
}

.public-subgallery-overlay-shade {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(15, 23, 42, .04) 25%, rgba(15, 23, 42, .9) 100%);
}

.public-subgallery-overlay-content {
    z-index: 2;
}

.public-subgallery-horizontal-card .public-subgallery-media {
    min-height: 13rem;
}

.public-subgallery-compact-card {
    min-height: 5.5rem;
}

.public-subgallery-compact-thumb {
    width: 4.25rem;
    height: 4.25rem;
    border-radius: .75rem;
}

.public-subgallery-compact-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.public-subgallery-featured-main {
    min-height: clamp(22rem, 45vw, 34rem);
    background: #111827;
}

.public-subgallery-featured-main .public-subgallery-media {
    position: absolute;
    inset: 0;
}

.public-subgallery-editorial-row {
    min-height: 23rem;
    background: #fff;
}

.public-subgallery-editorial-row .public-subgallery-media {
    min-height: 23rem;
}

.min-w-0 {
    min-width: 0;
}

@media (max-width: 767.98px) {
    .public-subgallery-horizontal-card .public-subgallery-media,
    .public-subgallery-editorial-row .public-subgallery-media {
        min-height: 15rem;
    }

    .public-subgallery-featured-main {
        min-height: 24rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .public-subgallery-variant .public-subgallery-card,
    .public-subgallery-variant .public-subgallery-horizontal-card,
    .public-subgallery-variant .public-subgallery-compact-card,
    .public-subgallery-variant .public-subgallery-overlay-card,
    .public-subgallery-variant .public-subgallery-featured-main,
    .public-subgallery-variant .public-subgallery-editorial-row,
    .public-subgallery-variant .public-subgallery-media img {
        transition: none;
    }
}


/* Fase 5.6F.4 — variantes de introdução, fotografias e CTA */
.intro-align-center{text-align:center}.intro-align-right{text-align:right}.intro-width-narrow{max-width:760px;margin-inline:auto}.intro-width-wide{max-width:1120px;margin-inline:auto}.intro-bg-soft .public-gallery-intro-editorial-inner{background:#f8f9fa}.intro-bg-accent .public-gallery-intro-editorial-inner{background:var(--bs-primary);color:#fff}.public-gallery-intro-editorial-inner{border-left:4px solid var(--bs-primary);padding:2rem}.public-gallery-intro-highlight{background:linear-gradient(135deg,rgba(var(--bs-primary-rgb),.12),rgba(var(--bs-primary-rgb),.03));border:1px solid rgba(var(--bs-primary-rgb),.18)}.public-gallery-intro-image{min-height:340px;background-size:cover;background-position:center}.public-gallery-intro-image-overlay{min-height:340px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(90deg,rgba(0,0,0,.72),rgba(0,0,0,.18))}.public-gallery-intro-quote{padding:2rem 1rem}.public-gallery-intro-steps{background:#f8f9fa;border:1px solid var(--bs-border-color)}
.public-photo-layout{display:grid}.photo-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.photo-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.photo-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.photo-gap-small{gap:.5rem}.photo-gap-medium{gap:1rem}.photo-gap-large{gap:1.75rem}.public-photo-layout-item{min-width:0}.public-photo-layout.is-rounded .public-photo-card,.public-photo-layout.is-rounded img{border-radius:1rem}.public-photo-layout.hover-lift .public-photo-layout-item{transition:transform .2s ease,box-shadow .2s ease}.public-photo-layout.hover-lift .public-photo-layout-item:hover{transform:translateY(-4px)}.public-photo-layout.hover-zoom img{transition:transform .25s ease}.public-photo-layout.hover-zoom .public-photo-layout-item:hover img{transform:scale(1.035)}.photo-ratio-landscape img{aspect-ratio:4/3;object-fit:cover}.photo-ratio-square img{aspect-ratio:1;object-fit:cover}.photo-ratio-portrait img{aspect-ratio:3/4;object-fit:cover}.public-photo-layout-masonry{display:block;column-count:3;column-gap:1rem}.public-photo-layout-masonry .public-photo-layout-item{break-inside:avoid;margin-bottom:1rem}.public-photo-layout-featured .is-featured{grid-column:span 2;grid-row:span 2}.public-photo-layout-compact{gap:.5rem}.public-photo-layout-editorial .public-photo-layout-item:nth-child(5n+1){grid-column:span 2}
.public-order-cta{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;border:1px solid var(--bs-border-color)}.public-order-cta-centered{flex-direction:column;text-align:center}.public-order-cta-compact{padding:1.25rem!important}.public-order-cta-split .public-order-cta-copy{max-width:60%}.public-order-cta-buttons_only{justify-content:center}.cta-align-center{text-align:center}.cta-align-right{text-align:right}.cta-bg-light{background:#fff}.cta-bg-soft{background:#f8f9fa}.cta-bg-dark{background:#212529;color:#fff}.cta-bg-dark .btn-outline-secondary{color:#fff;border-color:rgba(255,255,255,.55)}.cta-bg-accent{background:var(--bs-primary);color:#fff}.cta-bg-transparent{background:transparent}.cta-width-full_bleed .public-order-cta{border-radius:0!important}
@media(max-width:991.98px){.photo-cols-4,.photo-cols-5{grid-template-columns:repeat(3,minmax(0,1fr))}.public-photo-layout-masonry{column-count:2}.public-order-cta{align-items:flex-start;flex-direction:column}.public-order-cta-split .public-order-cta-copy{max-width:none}}
@media(max-width:575.98px){.photo-cols-2,.photo-cols-3,.photo-cols-4,.photo-cols-5{grid-template-columns:repeat(2,minmax(0,1fr))}.public-photo-layout-masonry{column-count:1}.public-photo-layout-featured .is-featured,.public-photo-layout-editorial .public-photo-layout-item:nth-child(5n+1){grid-column:span 2}.public-gallery-intro-editorial-inner{padding:1.5rem}}


/* SP.2B — homepage pública single photographer */
.sp-home-hero{background:linear-gradient(180deg,#fff 0,#f8f9fa 100%)}
.sp-home-hero-card{background:#fff;border:1px solid var(--bs-border-color)}
.sp-home-hero-visual{min-height:26rem;background:linear-gradient(145deg,#212529,#495057);color:#fff}
.sp-home-logo{display:block;max-width:11rem;max-height:5.5rem;width:auto;height:auto;object-fit:contain}
.sp-home-logo-fallback{width:4.5rem;height:4.5rem;border-radius:1.25rem;display:grid;place-items:center;background:var(--bs-primary);color:#fff;font-size:1.35rem;font-weight:700;flex:0 0 auto}
.sp-home-section-editorial .sp-editorial-feature{min-height:clamp(24rem,50vw,38rem);background:#212529}
.sp-editorial-feature>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.sp-editorial-feature-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.78))}
.sp-editorial-feature-content{z-index:2;max-width:52rem}
.sp-contact-card{display:flex;align-items:center;gap:.85rem;padding:1rem 1.1rem;border:1px solid var(--bs-border-color);border-radius:1rem;background:#fff;color:inherit;text-decoration:none;height:100%}
.sp-contact-card i{font-size:1.25rem;color:var(--bs-primary)}
.sp-contact-card:hover{border-color:var(--bs-primary);color:inherit}
@media(max-width:991.98px){.sp-home-hero-visual{min-height:18rem}.sp-home-logo{max-width:9rem;max-height:4.5rem}}

/* SP.2D — Hero configurável da homepage do workspace */
.workspace-home-hero{background:linear-gradient(180deg,#fff 0,#f8f9fa 100%)}
.workspace-home-hero-media{min-height:28rem;background-color:#212529;background-repeat:no-repeat;background-size:cover;background-position:center}
.workspace-home-hero-background-image_contained .workspace-home-hero-media{background-size:contain}
.workspace-home-hero-background-image_full_width .workspace-home-hero-media,.workspace-home-hero-background-solid .workspace-home-hero-media,.workspace-home-hero-background-gradient .workspace-home-hero-media,.workspace-home-hero-background-none .workspace-home-hero-media{border-radius:0}
.workspace-home-hero-background-none .workspace-home-hero-media{background-color:#212529}
.workspace-home-hero-height-compact .workspace-home-hero-media{min-height:20rem}
.workspace-home-hero-height-large .workspace-home-hero-media{min-height:38rem}
.workspace-home-hero-inner{position:absolute!important;inset:0;z-index:2;color:#fff;padding:2rem;min-height:100%}
.workspace-home-hero-content-wrapper{width:100%;max-width:58rem}
.workspace-home-hero-placement-top_left{align-items:flex-start;justify-content:flex-start}.workspace-home-hero-placement-top_center{align-items:flex-start;justify-content:center}.workspace-home-hero-placement-top_right{align-items:flex-start;justify-content:flex-end}
.workspace-home-hero-placement-middle_left{align-items:center;justify-content:flex-start}.workspace-home-hero-placement-middle_center{align-items:center;justify-content:center}.workspace-home-hero-placement-middle_right{align-items:center;justify-content:flex-end}
.workspace-home-hero-placement-bottom_left{align-items:flex-end;justify-content:flex-start}.workspace-home-hero-placement-bottom_center{align-items:flex-end;justify-content:center}.workspace-home-hero-placement-bottom_right{align-items:flex-end;justify-content:flex-end}
.workspace-home-hero-overlay{position:absolute;inset:0;z-index:1}
.workspace-home-hero-overlay.overlay-none{background:transparent}
.workspace-home-hero-overlay.overlay-dark.intensity-soft{background:rgba(0,0,0,.25)}
.workspace-home-hero-overlay.overlay-dark.intensity-medium{background:rgba(0,0,0,.5)}
.workspace-home-hero-overlay.overlay-dark.intensity-strong{background:rgba(0,0,0,.72)}
.workspace-home-hero-overlay.overlay-light.intensity-soft{background:rgba(255,255,255,.22)}
.workspace-home-hero-overlay.overlay-light.intensity-medium{background:rgba(255,255,255,.48)}
.workspace-home-hero-overlay.overlay-light.intensity-strong{background:rgba(255,255,255,.72)}
.workspace-home-hero-media:has(.overlay-light) .workspace-home-hero-inner{color:#212529}
.workspace-home-hero-copy{background:#fff;border:1px solid var(--bs-border-color);border-radius:1.5rem}
.workspace-home-hero-content{max-width:58rem}
.workspace-home-hero-align-center .workspace-home-hero-content{margin-inline:auto}
.workspace-home-hero-align-right .workspace-home-hero-content{margin-left:auto}

.workspace-home-hero-title-font-default{font-family:inherit}
.workspace-home-hero-title-font-sans{font-family:Arial,Helvetica,sans-serif}
.workspace-home-hero-title-font-serif{font-family:Georgia,'Times New Roman',serif}
.workspace-home-hero-title-font-display{font-family:Impact,'Arial Narrow',sans-serif;letter-spacing:.02em}
.workspace-home-hero-title-font-handwritten{font-family:'Segoe Print','Bradley Hand','Comic Sans MS',cursive;font-weight:600!important}
.workspace-home-hero-logo{display:block;max-width:11rem;max-height:5.5rem;width:auto;height:auto;object-fit:contain}
.workspace-home-hero-logo-fallback{width:4.5rem;height:4.5rem;border-radius:1.25rem;display:grid;place-items:center;background:var(--bs-primary);color:#fff;font-size:1.35rem;font-weight:700;flex:0 0 auto}
.workspace-home-hero-placeholder{color:#fff;min-height:inherit;display:grid;place-items:center}
@media(max-width:991.98px){.workspace-home-hero-media{min-height:22rem}.workspace-home-hero-height-large .workspace-home-hero-media{min-height:28rem}.workspace-home-hero-logo{max-width:9rem;max-height:4.5rem}.workspace-home-hero-inner{padding:1rem}.workspace-home-hero-content-wrapper{max-width:100%}}


/* Gallery access */
.public-gallery-access { position: relative; min-height: calc(100vh - 120px); background-position: center; background-size: cover; }
.public-gallery-access-overlay { position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0,0,0,.68), rgba(0,0,0,.35)); }
.public-gallery-access:not(.has-cover) { background: linear-gradient(135deg, var(--bs-dark), #495057); }
.public-gallery-access-card { background: rgba(255,255,255,.55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.public-gallery-access-title {
    font-family: var(--workspace-font-hero-title-family, Georgia, "Times New Roman", serif);
    font-weight: var(--workspace-font-hero-title-weight, 700);
    font-style: var(--workspace-font-hero-title-style, normal);
}
.min-vh-75 { min-height: 75vh; }
@media (max-width: 575.98px) { .public-gallery-access .container { padding-left: 1rem; padding-right: 1rem; } }

/* SP.6A.2B — aviso informativo de cookies necessários */
.public-cookie-notice{position:fixed;left:0;right:0;bottom:0;z-index:1080;padding:1rem 0;pointer-events:none}
.public-cookie-notice-inner{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding:1rem 1.25rem;border:1px solid rgba(0,0,0,.12);border-radius:1rem;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:auto}
.public-cookie-notice-copy{max-width:56rem;font-size:.925rem}
.public-cookie-notice-actions{display:flex;align-items:center;gap:.5rem;flex:0 0 auto}
@media(max-width:767.98px){.public-cookie-notice{padding:.75rem}.public-cookie-notice-inner{align-items:stretch;flex-direction:column}.public-cookie-notice-actions{justify-content:flex-end}}


/* SP7 — Nome público do fotógrafo/marca no Hero */
.workspace-home-hero-brand-name {
    font-size: .9rem;
    font-weight: 600;
    letter-spacing: .08em;
    line-height: 1.3;
    text-transform: uppercase;
    opacity: .92;
}


/* SP.7 — modal público de pré-visualização */
.public-photo-preview-modal-image {
    display: block;
    max-width: 100%;
    max-height: 78vh;
    width: auto;
    height: auto;
    margin: 0 auto;
    object-fit: contain;
}

/* P.2A.2 — conversa visual das mensagens na área do cliente */
.order-conversation {
    display: flex;
    flex-direction: column;
    gap: .8rem;
}
.order-message-row {
    display: flex;
    width: 100%;
}
.order-conversation-public .order-message-row.is-photographer { justify-content: flex-start; }
.order-conversation-public .order-message-row.is-customer { justify-content: flex-end; }
.order-conversation-public .order-message-row.is-system { justify-content: center; }
.order-message-bubble {
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem 1rem 1rem .3rem;
    box-shadow: 0 .18rem .5rem rgba(0, 0, 0, .08), 0 .04rem .12rem rgba(0, 0, 0, .04);
    max-width: min(72%, 48rem);
    padding: .8rem 1rem;
    word-break: break-word;
}
.order-conversation-public .is-photographer .order-message-bubble { background: var(--bs-tertiary-bg); }
.order-conversation-public .is-customer .order-message-bubble {
    background: rgba(var(--bs-primary-rgb), .12);
    border-color: rgba(var(--bs-primary-rgb), .22);
    border-radius: 1rem 1rem .3rem 1rem;
}
.order-conversation-public .is-system .order-message-bubble {
    background: var(--bs-secondary-bg);
    border-radius: .8rem;
    max-width: min(82%, 54rem);
    text-align: center;
}
.order-message-meta {
    align-items: baseline;
    display: flex;
    flex-wrap: wrap;
    gap: .4rem 1rem;
    justify-content: space-between;
    margin-bottom: .35rem;
}
.order-message-author { font-size: .875rem; font-weight: 600; }
.order-message-meta time { color: var(--bs-secondary-color); font-size: .75rem; }
.order-message-text { line-height: 1.5; }
@media (max-width: 767.98px) {
    .order-message-bubble { max-width: 92%; }
    .order-conversation-public .is-system .order-message-bubble { max-width: 96%; }
}


/* P.2B.1 — janela de conversa e pedidos com mensagens novas */
.order-chat-window {
    border-color: rgba(var(--bs-primary-rgb), .22) !important;
}
.order-chat-toolbar {
    background: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .08), var(--bs-body-bg));
}
.order-chat-app-icon {
    align-items: center;
    background: rgba(var(--bs-primary-rgb), .14);
    border-radius: .9rem;
    color: var(--bs-primary);
    display: inline-flex;
    flex: 0 0 auto;
    font-size: 1.2rem;
    height: 2.75rem;
    justify-content: center;
    width: 2.75rem;
}
.order-chat-body {
    background: var(--bs-tertiary-bg);
}
.order-conversation {
    margin-left: auto;
    margin-right: auto;
    max-width: 860px;
}
.order-message-bubble {
    max-width: 68%;
}
.public-customer-order-card.has-unread-messages {
    border-color: rgba(var(--bs-danger-rgb), .45) !important;
    box-shadow: 0 .5rem 1.25rem rgba(var(--bs-danger-rgb), .08) !important;
}
@media (max-width: 767.98px) {
    .order-chat-status { width: 100%; }
    .order-message-bubble { max-width: 92%; }
}


/* P.2B.1a — feedback e atualização AJAX do chat */
.order-chat-feedback {
    transition: opacity .2s ease;
}
.order-conversation {
    scroll-behavior: smooth;
}
[data-order-message-submit][aria-busy="true"] {
    cursor: wait;
    opacity: .75;
}


/* P.2B.1d — conversa atualizada automaticamente */
.order-conversation {
    max-height: min(60vh, 42rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-right: .25rem;
    padding-bottom: 1rem;
}

/* P.2C.1 — anexos nas mensagens */
.order-message-attachments { display: grid; gap: .5rem; margin-top: .75rem; }
.order-message-attachment { display: flex; align-items: center; gap: .55rem; padding: .55rem .7rem; border: 1px solid rgba(0,0,0,.1); border-radius: .65rem; background: rgba(255,255,255,.72); color: inherit; text-decoration: none; }
.order-message-attachment:hover { background: rgba(255,255,255,.95); }
.order-message-attachment-name { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.order-message-attachment small { color: var(--bs-secondary-color); white-space: nowrap; }
[data-order-message-form] .filepond--root { margin-bottom: .25rem; }

/* P.2C.1a — formulário de mensagens organizado em tabs */
.order-message-composer-tabs .nav-link {
    align-items: center;
    display: inline-flex;
}
.order-message-composer-content {
    min-height: 10.5rem;
}
[data-order-attachments-count] {
    min-width: 1.5rem;
}

/* P.2C.1b — pré-visualização dos anexos */
.order-message-attachment-preview {
    width: 3.25rem;
    height: 3.25rem;
    flex: 0 0 3.25rem;
    object-fit: cover;
    border-radius: .5rem;
    border: 1px solid rgba(0, 0, 0, .08);
    background: var(--bs-body-bg);
}
.order-message-attachment.is-image {
    align-items: center;
}
[data-order-message-form] .filepond--image-preview-wrapper {
    border-radius: .5rem;
}
[data-order-message-form] .filepond--item {
    width: calc(50% - .5rem);
}
@media (max-width: 575.98px) {
    [data-order-message-form] .filepond--item {
        width: 100%;
    }
}


/* Customer order structured actions */
.customer-order-actions-list { display: grid; gap: .75rem; }
.customer-order-action {
    display: flex;
    align-items: flex-start;
    gap: .9rem;
    padding: 1rem;
    border: 1px solid var(--bs-border-color);
    border-left: .3rem solid var(--bs-warning);
    border-radius: .85rem;
    background: var(--bs-body-bg);
    box-shadow: 0 .2rem .55rem rgba(33, 37, 41, .045);
}
.customer-order-action.is-resolved { border-left-color: var(--bs-success); opacity: .84; }
.customer-order-action.is-cancelled { border-left-color: var(--bs-secondary); opacity: .7; }
.customer-order-action-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.35rem;
    height: 2.35rem;
    flex: 0 0 2.35rem;
    border-radius: 50%;
    background: rgba(var(--bs-warning-rgb), .14);
    color: var(--bs-warning-text-emphasis);
}
.customer-order-action.is-resolved .customer-order-action-icon { background: rgba(var(--bs-success-rgb), .14); color: var(--bs-success); }
.customer-order-action.is-cancelled .customer-order-action-icon { background: var(--bs-secondary-bg); color: var(--bs-secondary-color); }
.customer-order-action-content { flex: 1 1 auto; min-width: 0; }
.customer-order-action-description { line-height: 1.5; }
.customer-order-action-controls { flex: 0 0 auto; }
@media (max-width: 575.98px) {
    .customer-order-action { flex-wrap: wrap; }
    .customer-order-action-controls { width: 100%; display: flex; justify-content: flex-end; }
}


/* P.2D.3a — ações estruturadas integradas no histórico do chat */
.order-message-row.is-action { justify-content: center; }
.order-message-row.is-action .order-message-bubble {
    width: min(100%, 760px);
    max-width: 96%;
    border-left: 4px solid var(--bs-warning);
    background: rgba(var(--bs-warning-rgb), .08);
}
.order-message-row.is-action .order-action-message.is-resolved {
    border-left-color: var(--bs-success);
    background: rgba(var(--bs-success-rgb), .07);
}
.order-message-row.is-action .order-action-message.is-cancelled {
    border-left-color: var(--bs-secondary);
    background: var(--bs-secondary-bg);
    opacity: .82;
}
.order-message-row.is-action.is-internal-action .order-message-bubble {
    border-color: rgba(var(--bs-warning-rgb), .55);
    background: rgba(var(--bs-warning-rgb), .13);
}
.order-action-message .order-message-author {
    align-items: center;
    display: inline-flex;
    flex-wrap: wrap;
    gap: .45rem;
}


/* P.2D.3c — navegação para mensagens não lidas */
.order-message-row.is-unread-message .order-message-bubble {
    box-shadow: 0 0 0 .15rem rgba(var(--bs-warning-rgb), .2), 0 .18rem .5rem rgba(0, 0, 0, .08);
}
.order-message-row.is-unread-message-focus .order-message-bubble {
    animation: order-unread-message-focus 2.4s ease;
}
@keyframes order-unread-message-focus {
    0%, 100% { box-shadow: 0 0 0 .15rem rgba(var(--bs-warning-rgb), .2), 0 .18rem .5rem rgba(0, 0, 0, .08); }
    35% { box-shadow: 0 0 0 .35rem rgba(var(--bs-warning-rgb), .38), 0 .35rem .9rem rgba(0, 0, 0, .12); }
}
#order-messages { scroll-margin-top: 1rem; }

/* P.2D.4f — resposta do cliente integrada no cartão da ação */
.customer-order-action-response { flex: 1 0 100%; margin-top: .75rem; padding-top: .75rem; border-top: 1px solid var(--bs-border-color); }
.customer-order-action-response textarea { resize: vertical; min-height: 5.5rem; }
@media (min-width: 768px) { .customer-order-action-response { margin-left: 3.5rem; } }

/* Hero builder partilhado — posicionamento do conteúdo */
.public-gallery-overlay-media > .public-gallery-overlay-content {
    display: flex;
    flex-direction: column;
}
.public-gallery-overlay-card.placement-top-left .public-gallery-overlay-content,
.public-gallery-overlay-card.placement-top-center .public-gallery-overlay-content,
.public-gallery-overlay-card.placement-top-right .public-gallery-overlay-content { justify-content: flex-start; }
.public-gallery-overlay-card.placement-middle-left .public-gallery-overlay-content,
.public-gallery-overlay-card.placement-middle-center .public-gallery-overlay-content,
.public-gallery-overlay-card.placement-middle-right .public-gallery-overlay-content { justify-content: center; }
.public-gallery-overlay-card.placement-bottom-left .public-gallery-overlay-content,
.public-gallery-overlay-card.placement-bottom-center .public-gallery-overlay-content,
.public-gallery-overlay-card.placement-bottom-right .public-gallery-overlay-content { justify-content: flex-end; }
.public-gallery-overlay-card.placement-top-center .public-gallery-overlay-copy,
.public-gallery-overlay-card.placement-middle-center .public-gallery-overlay-copy,
.public-gallery-overlay-card.placement-bottom-center .public-gallery-overlay-copy { margin-inline: auto; }
.public-gallery-overlay-card.placement-top-right .public-gallery-overlay-copy,
.public-gallery-overlay-card.placement-middle-right .public-gallery-overlay-copy,
.public-gallery-overlay-card.placement-bottom-right .public-gallery-overlay-copy { margin-left: auto; }


/* P.2G.1C.2 — opções de conteúdo dos cards da homepage */
.public-gallery-card-no-cover {
    min-height: 100%;
}

.public-gallery-card-details,
.sp-editorial-feature-details {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem .85rem;
}

.public-gallery-card-footer {
    display: flex;
    flex-direction: column;
}

.sp-editorial-feature > .public-subgallery-protected-badge.is-absolute {
    z-index: 3;
}

.sp-editorial-feature-no-cover {
    background: linear-gradient(135deg, #1f2937, #111827);
}

/* P.2G.1C.3 — refinamento visual das variantes de subgalerias */
.public-subgallery-section-inner{position:relative}.public-subgallery-variant .public-subgallery-card,.public-subgallery-variant .public-subgallery-horizontal-card,.public-subgallery-variant .public-subgallery-compact-card,.public-subgallery-variant .public-subgallery-overlay-card,.public-subgallery-variant .public-subgallery-featured-main,.public-subgallery-variant .public-subgallery-editorial-row{border-color:rgba(148,163,184,.28);box-shadow:0 .55rem 1.6rem rgba(15,23,42,.055)}.public-subgallery-variant .public-subgallery-card:hover,.public-subgallery-variant .public-subgallery-horizontal-card:hover,.public-subgallery-variant .public-subgallery-compact-card:hover,.public-subgallery-variant .public-subgallery-overlay-card:hover,.public-subgallery-variant .public-subgallery-featured-main:hover,.public-subgallery-variant .public-subgallery-editorial-row:hover,.public-subgallery-variant .public-subgallery-card:focus-visible,.public-subgallery-variant .public-subgallery-horizontal-card:focus-visible,.public-subgallery-variant .public-subgallery-compact-card:focus-visible,.public-subgallery-variant .public-subgallery-overlay-card:focus-visible,.public-subgallery-variant .public-subgallery-featured-main:focus-visible,.public-subgallery-variant .public-subgallery-editorial-row:focus-visible{border-color:rgba(var(--bs-primary-rgb),.24)}.public-subgallery-variant .public-subgallery-card-title{line-height:1.18}.public-subgallery-description{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3}.public-subgallery-cards .public-subgallery-description,.public-subgallery-horizontal .public-subgallery-description{min-height:3.6em}.public-subgallery-card-footer{display:flex;flex-direction:column}.public-subgallery-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .75rem}.public-subgallery-meta-item{display:inline-flex;align-items:center;min-width:0}.public-subgallery-overlay .public-subgallery-meta,.public-subgallery-featured .public-subgallery-meta{color:rgba(255,255,255,.82)}.public-subgallery-overlay-card,.public-subgallery-featured-main{isolation:isolate}.public-subgallery-overlay-card .public-subgallery-media,.public-subgallery-featured-main .public-subgallery-media{position:absolute;inset:0;z-index:0}.public-subgallery-overlay-shade{z-index:1;pointer-events:none}.public-subgallery-overlay-content,.public-subgallery-featured-content{z-index:2}.public-subgallery-overlay-card .public-subgallery-protected-badge,.public-subgallery-featured-main .public-subgallery-protected-badge{z-index:3}.public-subgallery-overlay-card .public-subgallery-description,.public-subgallery-featured-main .public-subgallery-description{-webkit-line-clamp:2}.public-subgallery-horizontal-card .card-body{min-height:13rem}.public-subgallery-compact-card{border-radius:.95rem;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease,background-color .2s ease}.public-subgallery-compact-card:hover,.public-subgallery-compact-card:focus-visible{background-color:#f8fafc!important}.public-subgallery-compact-thumb{position:relative;background:linear-gradient(135deg,#f8fafc,#e2e8f0)}.public-subgallery-compact-arrow{transition:transform .2s ease}.public-subgallery-compact-card:hover .public-subgallery-compact-arrow,.public-subgallery-compact-card:focus-visible .public-subgallery-compact-arrow{transform:translateX(.18rem)}.public-subgallery-editorial-row{border:1px solid rgba(148,163,184,.25)}.public-subgallery-editorial-copy{border-color:rgba(148,163,184,.25)!important}.public-subgallery-editorial .public-subgallery-description{-webkit-line-clamp:4}.public-subgallery-kicker{letter-spacing:.08em}.public-subgallery-variant .public-gallery-placeholder{min-height:inherit;background:linear-gradient(135deg,#f8fafc,#e2e8f0)}
@media (max-width:991.98px){.public-subgallery-editorial-copy{border-top:0!important}.public-subgallery-cards .public-subgallery-description,.public-subgallery-horizontal .public-subgallery-description{min-height:0}}
@media (max-width:575.98px){.public-subgallery-variant .public-subgallery-card,.public-subgallery-variant .public-subgallery-horizontal-card,.public-subgallery-variant .public-subgallery-compact-card,.public-subgallery-variant .public-subgallery-overlay-card,.public-subgallery-variant .public-subgallery-featured-main,.public-subgallery-variant .public-subgallery-editorial-row{border-radius:.85rem}.public-subgallery-overlay-content,.public-subgallery-featured-content{padding:1.35rem!important}.public-subgallery-featured-content .display-6{font-size:1.85rem}.public-subgallery-editorial-copy{padding:1.5rem!important}.public-subgallery-meta{gap:.35rem .6rem}}

/* P.2G.1D.1 — masonry real e colunas configuráveis nas fotografias */
.public-photo-layout-masonry {
    display: block;
}

.public-photo-layout-masonry.photo-cols-2 { column-count: 2; }
.public-photo-layout-masonry.photo-cols-3 { column-count: 3; }
.public-photo-layout-masonry.photo-cols-4 { column-count: 4; }
.public-photo-layout-masonry.photo-cols-5 { column-count: 5; }

.public-photo-layout-masonry.photo-gap-small { column-gap: .5rem; }
.public-photo-layout-masonry.photo-gap-medium { column-gap: 1rem; }
.public-photo-layout-masonry.photo-gap-large { column-gap: 1.75rem; }

.public-photo-layout-masonry.photo-gap-small .public-photo-layout-item { margin-bottom: .5rem; }
.public-photo-layout-masonry.photo-gap-medium .public-photo-layout-item { margin-bottom: 1rem; }
.public-photo-layout-masonry.photo-gap-large .public-photo-layout-item { margin-bottom: 1.75rem; }

.public-photo-layout-masonry .public-photo-layout-item {
    display: block;
    break-inside: avoid;
    page-break-inside: avoid;
}

.public-photo-layout-masonry .public-photo-link {
    aspect-ratio: auto;
    height: auto;
}

.public-photo-layout-masonry .public-photo-link img {
    width: 100%;
    height: auto;
    aspect-ratio: auto;
    object-fit: contain;
}

.public-photo-layout-masonry .public-photo-placeholder {
    min-height: 14rem;
}

@media (max-width: 1199.98px) {
    .public-photo-layout-masonry.photo-cols-5 { column-count: 4; }
}

@media (max-width: 991.98px) {
    .public-photo-layout-masonry.photo-cols-4,
    .public-photo-layout-masonry.photo-cols-5 { column-count: 3; }
}

@media (max-width: 767.98px) {
    .public-photo-layout-masonry.photo-cols-3,
    .public-photo-layout-masonry.photo-cols-4,
    .public-photo-layout-masonry.photo-cols-5 { column-count: 2; }
}

@media (max-width: 575.98px) {
    .public-photo-layout-masonry.photo-cols-2,
    .public-photo-layout-masonry.photo-cols-3,
    .public-photo-layout-masonry.photo-cols-4,
    .public-photo-layout-masonry.photo-cols-5 { column-count: 1; }
}

/* P.2G.1D.2 — proporções reais nas fotografias públicas */
.public-photo-layout.photo-ratio-original .public-photo-link {
    aspect-ratio: auto;
    height: auto;
}

.public-photo-layout.photo-ratio-original .public-photo-link img {
    width: 100%;
    height: auto;
    aspect-ratio: auto;
    object-fit: contain;
}

.public-photo-layout.photo-ratio-landscape .public-photo-link {
    aspect-ratio: 4 / 3;
}

.public-photo-layout.photo-ratio-square .public-photo-link {
    aspect-ratio: 1 / 1;
}

.public-photo-layout.photo-ratio-portrait .public-photo-link {
    aspect-ratio: 3 / 4;
}

.public-photo-layout.photo-ratio-landscape .public-photo-link img,
.public-photo-layout.photo-ratio-square .public-photo-link img,
.public-photo-layout.photo-ratio-portrait .public-photo-link img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.public-photo-layout-masonry .public-photo-link {
    aspect-ratio: auto !important;
    height: auto !important;
}

.public-photo-layout-masonry .public-photo-link img {
    width: 100%;
    height: auto !important;
    aspect-ratio: auto !important;
    object-fit: contain !important;
}

/* P.2G.1D.3 — variante compacta com proporção original real */
.public-photo-layout-compact.photo-ratio-original {
    align-items: start;
}

.public-photo-layout-compact.photo-ratio-original .public-photo-layout-item,
.public-photo-layout-compact.photo-ratio-original .public-photo-card {
    align-self: start;
    height: auto;
}

.public-photo-layout-compact.photo-ratio-original .public-photo-link {
    aspect-ratio: auto !important;
    height: auto !important;
    min-height: 0;
}

.public-photo-layout-compact.photo-ratio-original .public-photo-link img {
    display: block;
    width: 100%;
    height: auto !important;
    aspect-ratio: auto !important;
    object-fit: contain !important;
}

.public-photo-layout-compact.photo-ratio-original .public-photo-placeholder {
    min-height: 8rem;
}

/* P.2G.1D.4 — carregamento estável das fotografias públicas */
.public-photo-layout .public-photo-link {
    position: relative;
    aspect-ratio: var(--photo-aspect-ratio, 1 / 1);
    background: linear-gradient(135deg, #f8fafc, #e9ecef);
}

.public-photo-layout .public-photo-link::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: linear-gradient(110deg, rgba(255,255,255,0), rgba(255,255,255,.55), rgba(255,255,255,0));
    transform: translateX(-100%);
    animation: public-photo-loading-sheen 1.35s ease-in-out infinite;
}

.public-photo-layout .public-photo-link img,
.public-photo-layout .public-photo-placeholder,
.public-photo-layout .public-photo-open-indicator,
.public-photo-layout .public-photo-selected-badge {
    position: relative;
}

.public-photo-layout .public-photo-link img {
    z-index: 1;
    display: block;
}

.public-photo-layout .public-photo-placeholder {
    z-index: 1;
}

.public-photo-layout .public-photo-open-indicator,
.public-photo-layout .public-photo-selected-badge {
    z-index: 2;
}

.public-photo-layout .public-photo-link:has(img)::before {
    animation: none;
    opacity: 0;
}

.public-photo-layout.photo-ratio-original .public-photo-link,
.public-photo-layout-masonry .public-photo-link,
.public-photo-layout-compact.photo-ratio-original .public-photo-link {
    aspect-ratio: var(--photo-aspect-ratio, 1 / 1) !important;
    height: auto !important;
}

.public-photo-layout.photo-ratio-original .public-photo-link img,
.public-photo-layout-masonry .public-photo-link img,
.public-photo-layout-compact.photo-ratio-original .public-photo-link img {
    width: 100%;
    height: 100% !important;
    aspect-ratio: auto !important;
    object-fit: cover !important;
}

.public-photo-layout.photo-ratio-landscape .public-photo-link,
.public-photo-layout.photo-ratio-square .public-photo-link,
.public-photo-layout.photo-ratio-portrait .public-photo-link {
    height: auto;
}

.public-photo-layout.photo-ratio-landscape .public-photo-link img,
.public-photo-layout.photo-ratio-square .public-photo-link img,
.public-photo-layout.photo-ratio-portrait .public-photo-link img {
    width: 100%;
    height: 100% !important;
}

.public-photo-layout-masonry .public-photo-card {
    transform: translateZ(0);
}

@keyframes public-photo-loading-sheen {
    100% {
        transform: translateX(100%);
    }
}

@media (prefers-reduced-motion: reduce) {
    .public-photo-layout .public-photo-link::before {
        animation: none;
    }
}


/* P.2G.2A.2 — slideshow/lightbox público, zoom e ecrã inteiro */
body.is-public-lightbox-open {
    overflow: hidden;
}

.public-photo-open-indicator .bi-play-circle {
    transform: translateY(.02em);
}

.public-photo-viewer-tools {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.public-photo-viewer-tools .btn {
    min-width: 2.15rem;
}

.public-photo-viewer-tools .btn[disabled] {
    opacity: .45;
}

.public-slideshow-image-wrap,
.public-gallery-lightbox-image-wrap {
    overflow: hidden;
}

.public-slideshow-image,
.public-gallery-lightbox-image {
    --photo-viewer-scale: 1;
    --photo-viewer-x: 0px;
    --photo-viewer-y: 0px;
    --photo-viewer-origin-x: 50%;
    --photo-viewer-origin-y: 50%;
    transform: translate3d(var(--photo-viewer-x), var(--photo-viewer-y), 0) scale(var(--photo-viewer-scale));
    transform-origin: var(--photo-viewer-origin-x) var(--photo-viewer-origin-y);
    transition: transform .18s ease;
    touch-action: none;
}

.is-photo-viewer-zoomed .public-slideshow-image,
.is-photo-viewer-zoomed .public-gallery-lightbox-image {
    cursor: grab;
}

.public-gallery-lightbox {
    position: fixed;
    inset: 0;
    z-index: 1080;
    color: #fff;
    background: #111;
}

.public-gallery-lightbox[hidden] {
    display: none;
}

.public-gallery-lightbox-dialog {
    width: 100%;
    height: 100%;
    min-height: 100svh;
    display: flex;
    flex-direction: column;
    outline: 0;
    background: #111;
}

.public-gallery-lightbox-topbar,
.public-gallery-lightbox-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .85rem max(1rem, env(safe-area-inset-right)) .85rem max(1rem, env(safe-area-inset-left));
    background: rgba(0, 0, 0, .7);
}

.public-gallery-lightbox-heading {
    min-width: 0;
}

.public-gallery-lightbox-counter {
    color: rgba(255, 255, 255, .62);
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .045em;
}

.public-gallery-lightbox-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
    flex-wrap: wrap;
}

.public-gallery-lightbox-stage {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem 4.5rem;
    touch-action: pan-y;
}

.public-gallery-lightbox-image-wrap {
    width: 100%;
    height: 100%;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.public-gallery-lightbox-image {
    display: block;
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, .42);
}

.public-gallery-lightbox-placeholder {
    min-width: min(100%, 24rem);
    min-height: min(54vh, 24rem);
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    color: rgba(255, 255, 255, .7);
    border: 1px solid rgba(255, 255, 255, .15);
    border-radius: 1rem;
    background: rgba(255, 255, 255, .05);
}

.public-gallery-lightbox-placeholder .bi {
    font-size: 2rem;
}

.public-gallery-lightbox-arrow {
    position: absolute;
    top: 50%;
    z-index: 2;
    width: 3rem;
    height: 3rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #fff;
    background: rgba(0, 0, 0, .52);
    transform: translateY(-50%);
    transition: background .18s ease, transform .18s ease, opacity .18s ease;
}

.public-gallery-lightbox-arrow:hover,
.public-gallery-lightbox-arrow:focus-visible {
    background: rgba(0, 0, 0, .82);
    transform: translateY(-50%) scale(1.04);
}

.public-gallery-lightbox-arrow[disabled] {
    opacity: .22;
    pointer-events: none;
}

.public-gallery-lightbox-arrow-prev {
    left: 1rem;
}

.public-gallery-lightbox-arrow-next {
    right: 1rem;
}

.public-gallery-lightbox-footer {
    min-height: 3.8rem;
    padding-top: .75rem;
    padding-bottom: calc(.75rem + env(safe-area-inset-bottom));
    border-top: 1px solid rgba(255, 255, 255, .1);
}

.public-gallery-lightbox-footer [data-lightbox-caption] {
    max-width: 70ch;
}

.public-gallery-lightbox-help {
    color: rgba(255, 255, 255, .5);
    font-size: .8rem;
    text-align: right;
}

.public-slideshow:fullscreen,
.public-gallery-lightbox-dialog:fullscreen {
    width: 100%;
    height: 100%;
    min-height: 100svh;
    background: #111;
}

.public-slideshow:fullscreen .public-slideshow-image,
.public-gallery-lightbox-dialog:fullscreen .public-gallery-lightbox-image {
    max-height: calc(100vh - 9rem);
}

@media (max-width: 767.98px) {
    .public-photo-viewer-tools {
        gap: .25rem;
    }

    .public-photo-viewer-tools .btn {
        min-width: 2rem;
        padding-right: .42rem;
        padding-left: .42rem;
    }

    .public-gallery-lightbox-topbar {
        align-items: flex-start;
        flex-direction: column;
    }

    .public-gallery-lightbox-actions {
        width: 100%;
        justify-content: space-between;
    }

    .public-gallery-lightbox-stage {
        padding: .75rem .5rem 4.35rem;
    }

    .public-gallery-lightbox-arrow {
        top: auto;
        bottom: .85rem;
        transform: none;
        width: 2.75rem;
        height: 2.75rem;
    }

    .public-gallery-lightbox-arrow:hover,
    .public-gallery-lightbox-arrow:focus-visible {
        transform: scale(1.04);
    }

    .public-gallery-lightbox-arrow-prev {
        left: 1rem;
    }

    .public-gallery-lightbox-arrow-next {
        right: 1rem;
    }

    .public-gallery-lightbox-footer {
        align-items: flex-start;
        min-height: 0;
    }

    .public-gallery-lightbox-help {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .public-slideshow-image,
    .public-gallery-lightbox-image,
    .public-gallery-lightbox-arrow {
        transition: none;
    }
}


/* P.2G.2A.3 — fila de carregamento da grelha pública */
/* A imagem sem src fica fora do fluxo. Assim, sem JavaScript, o fallback
 * dentro de noscript continua a ocupar o cartão normalmente. */
.public-photo-link img[data-public-photo-lazy] {
    position: absolute !important;
    inset: 0;
    opacity: 0;
    transition: transform .18s ease, opacity .18s ease;
}

/* A grelha usa apenas o fundo normal do cartão até ao carregamento real;
 * não há spinner persistente quando uma imagem demora ou falha. */
.public-photo-link img[data-public-photo-lazy].is-loaded {
    opacity: 1;
}

/* Contactos públicos e rodapé social */
.public-footer-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem 1.5rem;
}

.public-footer-actions,
.public-footer-social {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .75rem;
    flex-wrap: wrap;
}

.public-footer-social {
    gap: .4rem;
}

.public-footer-social-link {
    width: 2rem;
    height: 2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(0, 0, 0, .12);
    border-radius: 999px;
    color: inherit;
    text-decoration: none;
    transition: border-color .18s ease, color .18s ease, transform .18s ease, background-color .18s ease;
}

.public-footer-social-link:hover,
.public-footer-social-link:focus-visible {
    color: var(--bs-primary);
    border-color: color-mix(in srgb, var(--bs-primary) 45%, transparent);
    background-color: color-mix(in srgb, var(--bs-primary) 8%, transparent);
    transform: translateY(-1px);
}

.public-footer-contact-link,
.public-footer-cookie-link {
    white-space: nowrap;
}

.public-contact-page-heading {
    max-width: 48rem;
}

.public-contact-card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.public-contact-card {
    min-width: 0;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: 1rem;
    background: var(--bs-body-bg);
}

.public-contact-card--email {
    grid-column: 1 / -1;
}

.public-contact-card-link {
    min-height: 100%;
    display: flex;
    align-items: center;
    gap: .85rem;
    padding: 1rem;
    color: inherit;
    text-decoration: none;
}

a.public-contact-card-link {
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease, background-color .18s ease;
    border-radius: inherit;
}

a.public-contact-card-link:hover,
a.public-contact-card-link:focus-visible {
    color: inherit;
    background-color: color-mix(in srgb, var(--bs-primary) 4%, transparent);
    box-shadow: 0 .55rem 1.4rem rgba(0, 0, 0, .08);
    transform: translateY(-2px);
}

.public-contact-card-icon {
    width: 2.5rem;
    height: 2.5rem;
    flex: 0 0 2.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: .8rem;
    color: var(--bs-primary);
    background: color-mix(in srgb, var(--bs-primary) 10%, transparent);
    font-size: 1.1rem;
}

.public-contact-card-body {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .1rem;
}

.public-contact-card-label {
    color: var(--bs-secondary-color);
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .03em;
    text-transform: uppercase;
}

.public-contact-card-value {
    overflow-wrap: anywhere;
    font-weight: 600;
}

.public-contact-card-external {
    margin-left: auto;
    color: var(--bs-secondary-color);
    font-size: .85rem;
}

.public-contact-social-panel {
    height: 100%;
    padding: 1.35rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: 1rem;
    background: color-mix(in srgb, var(--bs-primary) 4%, var(--bs-body-bg));
    background: linear-gradient(
        145deg,
        color-mix(in srgb, var(--bs-primary) 8%, var(--bs-body-bg)),
        color-mix(in srgb, var(--bs-primary) 2%, var(--bs-body-bg)) 62%,
        var(--bs-body-bg)
    );
}

.public-contact-social-link {
    display: flex;
    align-items: center;
    gap: .65rem;
    min-height: 2.75rem;
    text-align: left;
}

.public-contact-social-link-label {
    min-width: 0;
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

.public-contact-social-link-label small {
    max-width: 15rem;
    overflow: hidden;
    color: var(--bs-secondary-color);
    font-size: .75rem;
    font-weight: 400;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.public-contact-website-link--separated {
    margin-top: 1.35rem;
    padding-top: .35rem;
}

.public-contact-navigation {
    display: flex;
    align-items: center;
    gap: .75rem 1rem;
    flex-wrap: wrap;
}

.public-contact-navigation .btn {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
}

.public-contact-home-link {
    color: var(--bs-secondary-color);
}

.public-contact-home-link:hover,
.public-contact-home-link:focus-visible {
    color: var(--bs-primary);
}

@media (max-width: 767.98px) {
    .public-footer-content {
        align-items: flex-start;
        flex-direction: column;
    }

    .public-footer-actions {
        justify-content: flex-start;
    }

    .public-contact-card-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .public-contact-card--email {
        grid-column: auto;
    }

    .public-contact-navigation {
        align-items: stretch;
        flex-direction: column;
    }

    .public-contact-navigation .btn {
        justify-content: center;
    }
}

@media (prefers-reduced-motion: reduce) {
    .public-footer-social-link,
    a.public-contact-card-link {
        transition: none;
    }
}
