/* Specialised layouts inherit the original site's typography and light palette. */
body.public-site #page-content .community-page {
    color: var(--public-text);
    overflow-wrap: anywhere;
}

body.public-site #page-content .community-page a:not(.btn):not(.readmore) {
    color: var(--public-accent);
    text-decoration: underline;
    text-underline-offset: .22em;
    text-decoration-thickness: 1px;
}
body.public-site #page-content .community-page a:hover {
    text-decoration-thickness: 2px;
}
body.public-site #page-content .community-page :is(a, button):focus-visible {
    outline: 3px solid var(--public-accent);
    outline-offset: 5px;
}
body.public-site #page-content .community-page .btn {
    border-radius: 100px;
    padding: 6px 22px;
}
body.public-site #page-content .community-page .btn-primary {
    background: var(--blue);
    border-color: var(--blue);
    color: #fff;
}
body.public-site #page-content .community-page .btn-outline-primary {
    border-color: var(--public-accent);
    color: var(--public-accent);
    background: var(--public-panel);
}
body.public-site #page-content .community-page .btn-outline-primary:hover {
    background: var(--blue);
    color: #fff;
}
body.public-site #page-content .community-prose :is(img, iframe, video) {
    max-width: 100%;
}
body.public-site #page-content .community-prose img {
    height: auto;
}
body.public-site #page-content .community-prose :is(h2, h3) {
    margin-top: 2rem;
}
body.public-site #page-content .community-prose > :first-child {
    margin-top: 0;
}
body.public-site #page-content .community-rail {
    min-width: 0;
    align-self: start;
    padding: 1.5rem;
    background: var(--public-soft);
    border-radius: 15px;
}
body.public-site #page-content .community-rail > :last-child {
    margin-bottom: 0;
}
body.public-site #page-content .community-back {
    margin: 3rem 0 0;
    padding-top: 1.25rem;
    border-top: 1px solid var(--public-line);
}
body.public-site #page-content .community-page .public-empty {
    padding: 1.75rem;
    margin: 0 0 1.5rem;
    border: 1px solid var(--public-line);
    border-radius: 14px;
    background: var(--public-soft);
    color: var(--public-muted);
}

/* Service: readable prose and a separate, scannable attendance rail. */
body.public-site #page-content .service-layout,
body.public-site #page-content .toponimia-detail {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(16rem, 20rem);
    gap: 3rem;
    align-items: start;
}
body.public-site #page-content :is(.service-description, .toponimia-main):only-child {
    grid-column: 1 / -1;
}
body.public-site #page-content .service-contacts dt {
    color: var(--public-muted);
    font-weight: 400;
    margin-bottom: .15rem;
}
body.public-site #page-content .service-contacts dd {
    margin: 0 0 1.25rem;
}
body.public-site #page-content .service-contacts :is(dl, dd:last-child) {
    margin-bottom: 0;
}
body.public-site #page-content .service-resources {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 2rem;
    margin-top: 2rem;
}
body.public-site #page-content .service-resources > p {
    margin: 0;
}
body.public-site #page-content .service-document {
    display: inline-flex;
    align-items: center;
    gap: .75rem;
    padding: .85rem 1rem;
    border: 1px solid var(--public-line);
    border-radius: 14px;
    background: var(--public-panel);
}
body.public-site #page-content .service-document img {
    width: 24px;
    height: 30px;
    flex-shrink: 0;
}

/* Places: images stay attached to their descriptions, not ornamental tiles. */
body.public-site #page-content .toponimia-introduction {
    margin-bottom: 1.25rem;
}
body.public-site #page-content .toponimia-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2.5rem 2rem;
}
body.public-site #page-content .toponimia-place {
    min-width: 0;
    border-bottom: 1px solid var(--public-line);
    padding-bottom: 1.5rem;
}
body.public-site #page-content .toponimia-place-image {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    border-radius: 14px;
    margin-bottom: 1.25rem;
}
body.public-site #page-content .toponimia-place h3 {
    margin-bottom: .6rem;
}
body.public-site #page-content .toponimia-place .toponimia-excerpt {
    margin: 0;
    color: var(--public-muted);
}
body.public-site #page-content .toponimia-description {
    margin-bottom: 2.5rem;
}
body.public-site #page-content .toponimia-gallery-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
body.public-site #page-content .toponimia-gallery-item:only-child {
    grid-column: 1 / -1;
}
body.public-site #page-content .toponimia-gallery-item a {
    display: block;
}
body.public-site #page-content .toponimia-gallery-item img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 14px;
}
body.public-site #page-content .toponimia-coordinates {
    font-variant-numeric: tabular-nums;
}
body.public-site #page-content .toponimia-rail section + section {
    border-top: 1px solid var(--public-line);
    padding-top: 1.5rem;
}
body.public-site #page-content .toponimia-qr-image {
    display: block;
    width: 100%;
    max-width: 220px;
    height: auto;
    margin-bottom: 1rem;
    padding: .75rem;
    /* Preserve the QR code's white quiet zone. */
    background: #fff;
    border-radius: 14px;
}

/* History: original date precision and source qualifications stay visible. */
body.public-site #page-content .presidentes-introduction {
    margin-bottom: 2.5rem;
}
body.public-site #page-content .presidentes-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(16rem, 21rem);
    grid-template-areas: 'history source';
    gap: 3rem;
}
body.public-site #page-content .presidentes-source {
    grid-area: source;
}
body.public-site #page-content .presidentes-history {
    grid-area: history;
    min-width: 0;
}
body.public-site #page-content .presidentes-timeline {
    list-style: none;
    margin: 2rem 0 0;
    padding: 0;
}
body.public-site #page-content .presidentes-timeline > li {
    display: grid;
    grid-template-columns: minmax(8rem, 1fr) minmax(0, 2fr);
    gap: 1.5rem;
    padding: 0 0 2rem 1.5rem;
    border-left: 2px solid var(--public-line);
}
body.public-site #page-content .presidentes-timeline > li:last-child {
    padding-bottom: 0;
}
body.public-site #page-content .presidentes-timeline .presidentes-date {
    margin: 0;
    color: var(--public-accent);
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}
body.public-site #page-content .presidentes-person {
    min-width: 0;
}
body.public-site #page-content .presidentes-person.has-portrait {
    display: grid;
    grid-template-columns: 96px minmax(0, 1fr);
    align-items: start;
    gap: 1.25rem;
}
body.public-site #page-content .presidentes-portrait {
    display: block;
    width: 96px;
    height: 128px;
    object-fit: contain;
    border-radius: 14px;
    background: var(--public-panel);
}
body.public-site #page-content .presidentes-person-copy {
    min-width: 0;
}
body.public-site #page-content .presidentes-timeline h3 {
    margin: 0;
}
body.public-site #page-content .presidentes-timeline .presidentes-note {
    margin: .65rem 0 0;
    color: var(--public-muted);
}

/* Diary: one institutional author, a calm feed and explicit update controls. */
body.public-site #page-content .president-page {
    display: grid;
    grid-template-columns: minmax(15rem, 19rem) minmax(0, 1fr);
    gap: 3rem;
    align-items: start;
}
body.public-site #page-content .president-identity-logo {
    display: block;
    object-fit: contain;
    padding: .8rem;
    margin-bottom: 1.5rem;
    border-radius: 14px;
    background: #fff;
}
body.public-site #page-content .president-identity h2 {
    margin-bottom: .25rem;
}
body.public-site #page-content .president-identity .president-identity-place {
    color: var(--public-muted);
    margin-bottom: 1.5rem;
}
body.public-site #page-content .president-identity-context {
    padding-top: 1.25rem;
    border-top: 1px solid var(--public-line);
}
body.public-site #page-content .president-timeline {
    min-width: 0;
    max-width: 760px;
}
body.public-site #page-content .president-feed-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    padding-bottom: 1.5rem;
}
body.public-site #page-content #president-live-status {
    color: var(--public-muted);
    flex: 1 1 18rem;
}

body.public-site #page-content .president-post {
    padding: 1.75rem;
    margin-bottom: 1.25rem;
    border: 1px solid var(--public-line);
    border-radius: 14px;
    background: var(--public-panel);
}
body.public-site #page-content .president-post-header {
    display: flex;
    align-items: start;
    gap: .875rem;
    margin-bottom: 1.5rem;
}
body.public-site #page-content .president-post-avatar {
    flex-shrink: 0;
    padding: .3rem;
    object-fit: contain;
    border: 1px solid var(--public-line);
    border-radius: 14px;
    background: #fff;
}
body.public-site #page-content .president-post-header h2 {
    margin: 0 0 .2rem;
}
body.public-site #page-content .president-post-header :is(p, time, span) {
    color: var(--public-muted);
}
body.public-site #page-content .president-post-text {
    white-space: pre-wrap;
    margin-bottom: 1.25rem;
}
body.public-site #page-content .president-post-text:last-child {
    margin-bottom: 0;
}
body.public-site #page-content .president-post > a {
    display: block;
}
body.public-site #page-content .president-post > a img {
    display: block;
    max-height: 600px;
    width: auto;
    max-width: 100%;
    height: auto;
    border-radius: 14px;
}
body.public-site #page-content .president-pagination {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    margin-top: 1.5rem;
}
body.public-site #page-content .president-pagination a:not([hidden]) {
    display: inline-block;
    padding: .5rem 0;
}

@media (max-width: 1023.98px) {
    body.public-site #page-content .presidentes-layout {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas: 'source' 'history';
        gap: 2rem;
    }
    body.public-site #page-content :is(.service-layout, .toponimia-detail, .president-page) {
        gap: 2rem;
    }
}
@media (max-width: 767.98px) {
    body.public-site #page-content :is(.service-layout, .toponimia-detail, .toponimia-list, .toponimia-gallery-grid, .president-page) {
        grid-template-columns: minmax(0, 1fr);
        gap: 2rem;
    }
    body.public-site #page-content :is(.community-rail, .president-post) {
        padding: 1.25rem;
    }
    body.public-site #page-content .presidentes-timeline > li {
        grid-template-columns: minmax(0, 1fr);
        gap: .35rem;
        padding-left: 1rem;
    }
    body.public-site #page-content .presidentes-person.has-portrait {
        grid-template-columns: 72px minmax(0, 1fr);
        gap: 1rem;
        margin-top: .5rem;
    }
    body.public-site #page-content .presidentes-portrait {
        width: 72px;
        height: 96px;
    }
    body.public-site #page-content .president-identity-logo {
        width: 72px;
        height: 72px;
        margin-bottom: 1rem;
    }
}
@media print {
    body.public-site #page-content :is(.presidentes-layout, .president-page, .service-layout, .toponimia-detail) {
        display: block;
    }
    body.public-site #page-content :is(.presidentes-timeline > li, .president-post, .community-rail) {
        break-inside: avoid;
    }
    body.public-site #page-content .president-feed-controls {
        display: none;
    }
}
