.project-hero {
    border-radius: 1.5rem;
    overflow: hidden;
    position: relative;
    min-height: 360px;
    background: linear-gradient(135deg, rgba(0,0,0,.9), rgba(0,0,0,.35));
}
.project-hero picture { display: block; background: #111; }
.project-hero img {
    width: 100%;
    height: clamp(320px, 56vw, 620px);
    object-fit: cover;
    object-position: center center;
    display: block;
    background: #111;
}
.project-hero-overlay { position: absolute; inset: 0; display: flex; align-items: end; padding: clamp(1.5rem, 5vw, 4rem); background: linear-gradient(to top, rgba(0,0,0,.82), rgba(0,0,0,.10) 58%, rgba(0,0,0,.02)); color: white; pointer-events: none; }
.project-kicker { letter-spacing: .14em; text-transform: uppercase; font-size: .78rem; font-weight: 700; opacity: .78; }
.project-title { font-size: clamp(2.25rem, 6vw, 5rem); line-height: .95; font-weight: 800; margin: .35rem 0; }
.project-subtitle { max-width: 850px; font-size: clamp(1rem, 2vw, 1.35rem); opacity: .9; }
.project-section { padding: clamp(2rem, 5vw, 4rem) 0; border-bottom: 1px solid var(--bs-border-color); }
.project-section h2 { font-weight: 800; letter-spacing: -.03em; margin-bottom: 1rem; }
.project-section-body { font-size: 1.06rem; line-height: 1.8; }
.project-section-body p:last-child { margin-bottom: 0; }
.project-image-card { border-radius: 1.25rem; overflow: hidden; background: var(--bs-tertiary-bg); box-shadow: 0 .75rem 2rem rgba(0,0,0,.16); }
.project-image-card img { width: 100%; max-height: 620px; object-fit: contain; display: block; background: #111; }
.project-caption { font-size: .875rem; color: var(--bs-secondary-color); padding: .75rem 1rem; }
.project-stat-card { border: 1px solid var(--bs-border-color); border-radius: 1rem; padding: 1rem; background: var(--bs-tertiary-bg); height: 100%; }
.project-stat-label { color: var(--bs-secondary-color); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.project-stat-value { font-weight: 700; font-size: 1.05rem; }
.project-callout { border-left: .35rem solid var(--bs-warning); background: var(--bs-tertiary-bg); border-radius: 1rem; padding: 1.5rem; }
.project-gallery-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
.project-gallery-grid img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 1rem; }
.project-card-cover-picture,
.project-card-cover {
    display: block;
    width: 100%;
}
.project-card-cover {
    height: 260px;
    aspect-ratio: 30 / 13;
    object-fit: cover;
    object-position: center center;
    background: #111;
    border-radius: 1rem 1rem 0 0;
}
@media (max-width: 575.98px) {
    .project-hero { border-radius: 1rem; min-height: 280px; }
    .project-hero img { height: 340px; }
    .project-card-cover { height: 220px; }
}

/* Project layout sections */
.project-showcase-page .project-section {
    scroll-margin-top: 5rem;
}
.project-layout-image_left .project-image-card img,
.project-layout-image_right .project-image-card img {
    width: 100%;
    height: clamp(300px, 42vw, 560px);
    object-fit: cover;
    object-position: center center;
}
.project-wide-image img {
    width: 100%;
    height: clamp(320px, 48vw, 680px);
    object-fit: cover;
    object-position: center center;
}
.project-callout-image {
    border-radius: .9rem;
    overflow: hidden;
}
.project-callout-image img {
    width: 100%;
    max-height: 420px;
    object-fit: cover;
    display: block;
}
.project-spec-table {
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem;
    overflow: hidden;
    background: var(--bs-body-bg);
}
.project-spec-table table {
    margin-bottom: 0;
}
.project-timeline {
    position: relative;
    padding-left: 1.5rem;
}
.project-timeline::before {
    content: '';
    position: absolute;
    top: .35rem;
    bottom: .35rem;
    left: .35rem;
    width: 2px;
    background: var(--bs-border-color);
}
.project-timeline-item {
    position: relative;
    display: grid;
    grid-template-columns: minmax(90px, 150px) 1fr;
    gap: 1rem;
    padding: 0 0 1.5rem 1rem;
}
.project-timeline-item::before {
    content: '';
    position: absolute;
    left: -.24rem;
    top: .38rem;
    width: .75rem;
    height: .75rem;
    border-radius: 50%;
    background: var(--bs-primary);
    box-shadow: 0 0 0 .25rem var(--bs-body-bg);
}
.project-timeline-date {
    font-weight: 700;
    color: var(--bs-secondary-color);
}
.project-timeline-content p {
    margin: .35rem 0 0;
    color: var(--bs-secondary-color);
}
@media (max-width: 575.98px) {
    .project-timeline-item {
        grid-template-columns: 1fr;
        gap: .25rem;
    }
}

/* Project 50/50 row sections and admin sorting */
.project-layout-split_50 .project-split-50-row {
    align-items: stretch;
}
.project-layout-split_50 .project-split-50-col > .row,
.project-layout-split_50 .project-split-50-col > .row > [class*="col-"] {
    width: 100%;
}
.project-layout-split_50 .project-split-50-col .project-image-card img {
    width: 100%;
    height: clamp(260px, 34vw, 480px);
    object-fit: cover;
    object-position: center center;
}
.project-layout-split_50 .project-split-50-col .project-section-body {
    font-size: 1rem;
}
.project-drag-handle {
    cursor: grab;
    user-select: none;
}
.project-section-editor[draggable="true"] {
    cursor: grab;
}
.project-section-editor:active,
.project-drag-handle:active {
    cursor: grabbing;
}

/* Tighter specs/table layout */
.project-spec-table {
    overflow-x: auto;
}
.project-spec-table table {
    width: auto;
    min-width: 100%;
    table-layout: auto;
    font-size: .875rem;
}
.project-spec-table th,
.project-spec-table td {
    white-space: nowrap;
    padding: .5rem .75rem;
    vertical-align: middle;
}
.project-spec-table th {
    width: 1% !important;
    min-width: max-content;
    font-weight: 700;
}
.project-spec-table td {
    width: auto;
}
@media (max-width: 575.98px) {
    .project-spec-table table {
        font-size: .8125rem;
    }
    .project-spec-table th,
    .project-spec-table td {
        padding: .45rem .6rem;
    }
}


/* Project divider section */
.project-clean-divider {
    width: min(900px, 100%);
    height: 1px;
    margin: .75rem auto;
    background: linear-gradient(90deg, transparent, rgba(0,0,0,.18), transparent);
}
.project-layout-divider {
    padding-top: 1.25rem !important;
    padding-bottom: 1.25rem !important;
}

/* Remove automatic section divider lines; use Divider sections when wanted */
.project-section {
    border-bottom: 0;
}

/* Tighter project page flow */
.project-showcase-page .project-hero {
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem) !important;
}
.project-stats-row {
    margin-bottom: clamp(1.25rem, 3vw, 2.25rem) !important;
}
.project-section {
    padding: clamp(1.35rem, 3vw, 2.5rem) 0;
}
.project-section h2 {
    margin-bottom: .65rem;
}
.project-section-body {
    line-height: 1.65;
}
.project-section-body.mb-4 {
    margin-bottom: 1rem !important;
}
.project-gallery-grid {
    gap: .65rem;
}
.project-gallery-grid a {
    display: block;
    cursor: zoom-in;
}
.project-gallery-grid img {
    transition: transform .15s ease, filter .15s ease;
}
.project-gallery-grid a:hover img {
    transform: scale(1.015);
    filter: brightness(.92);
}

/* Public project gallery lightbox */
.project-lightbox {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: none;
    align-items: center;
    justify-content: center;
    padding: clamp(1rem, 4vw, 3rem);
    background: rgba(0,0,0,.92);
}
.project-lightbox.is-open {
    display: flex;
}
.project-lightbox-open {
    overflow: hidden;
}
.project-lightbox img {
    max-width: min(1200px, 92vw);
    max-height: 86vh;
    object-fit: contain;
    border-radius: .75rem;
    box-shadow: 0 1rem 3rem rgba(0,0,0,.45);
}
.project-lightbox-close,
.project-lightbox-prev,
.project-lightbox-next {
    position: absolute;
    border: 0;
    background: rgba(255,255,255,.12);
    color: #fff;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 999px;
    font-size: 2rem;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}
.project-lightbox-close { top: 1rem; right: 1rem; }
.project-lightbox-prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.project-lightbox-next { right: 1rem; top: 50%; transform: translateY(-50%); }
.project-lightbox-close:hover,
.project-lightbox-prev:hover,
.project-lightbox-next:hover {
    background: rgba(255,255,255,.24);
}
.project-lightbox-caption {
    position: absolute;
    left: 50%;
    bottom: 1rem;
    transform: translateX(-50%);
    max-width: min(900px, 90vw);
    color: rgba(255,255,255,.85);
    font-size: .95rem;
    text-align: center;
}
@media (max-width: 575.98px) {
    .project-lightbox-prev,
    .project-lightbox-next {
        width: 2.4rem;
        height: 2.4rem;
        font-size: 1.75rem;
    }
    .project-lightbox-prev { left: .5rem; }
    .project-lightbox-next { right: .5rem; }
}
.project-lightbox-counter {
    position: absolute;
    top: 1.25rem;
    left: 50%;
    transform: translateX(-50%);
    color: rgba(255,255,255,.78);
    font-size: .9rem;
    letter-spacing: .04em;
    background: rgba(255,255,255,.12);
    border-radius: 999px;
    padding: .35rem .75rem;
}

/* Extra-tight public project flow after live editor updates */
.project-showcase-page .project-section {
    padding-top: clamp(.55rem, 1.2vw, 1rem) !important;
    padding-bottom: clamp(.55rem, 1.2vw, 1rem) !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
.project-showcase-page .project-section + .project-section {
    margin-top: 0 !important;
}
.project-showcase-page .project-section h2 {
    margin-bottom: .45rem !important;
}
.project-showcase-page .project-section-body {
    line-height: 1.6;
}
.project-showcase-page .project-section-body.mb-4 {
    margin-bottom: .45rem !important;
}
.project-showcase-page .project-split-50-row {
    --bs-gutter-y: 1rem;
}
.project-showcase-page .project-layout-split_50 .project-section-body {
    margin-bottom: .45rem !important;
}
.project-showcase-page .project-layout-split_50 .project-gallery-grid,
.project-showcase-page .project-gallery-grid {
    gap: .55rem;
}
.project-showcase-page .project-clean-divider {
    margin: .35rem auto;
}
.project-showcase-page .project-layout-divider {
    padding-top: .45rem !important;
    padding-bottom: .45rem !important;
}
@media (max-width: 991.98px) {
    .project-showcase-page .project-section {
        padding-top: .8rem !important;
        padding-bottom: .8rem !important;
    }
}


/* Ultra-tight hidden-header flow: no extra header wrapper, less section-to-section air */
.project-showcase-page .project-section.project-section-no-heading {
    padding-top: .25rem !important;
    padding-bottom: .25rem !important;
}
.project-showcase-page .project-section.project-section-no-heading + .project-section.project-section-no-heading {
    padding-top: .1rem !important;
}
.project-showcase-page .project-layout-split_50.project-section-no-heading {
    padding-top: .3rem !important;
    padding-bottom: .3rem !important;
}
.project-showcase-page .project-layout-split_50 .project-split-50-row {
    --bs-gutter-y: .65rem;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
.project-showcase-page .project-split-50-col > *:first-child,
.project-showcase-page .project-split-50-col .project-section-body:first-child,
.project-showcase-page .project-split-50-col .project-gallery-grid:first-child,
.project-showcase-page .project-split-50-col .project-image-card:first-child {
    margin-top: 0 !important;
}
.project-showcase-page .project-section-body p {
    margin-bottom: .55rem;
}
.project-showcase-page .project-section-body p:last-child {
    margin-bottom: 0 !important;
}
.project-showcase-page .project-layout-split_50 .project-section-body {
    line-height: 1.55;
}


/* Project public layout consistency audit/fix
   Keep existing section padding/full-width media behavior; only normalize content inside sections. */
.project-showcase-page .project-content-wide {
    width: 100%;
    max-width: none;
}
.project-showcase-page .project-content-text,
.project-showcase-page .project-section-body,
.project-showcase-page .project-layout-split_50 .project-section-body,
.project-showcase-page .project-timeline-content p {
    font-size: 1.1rem;
    line-height: 1.8;
    margin-top: 0;
}
.project-showcase-page .project-content-text p,
.project-showcase-page .project-section-body p {
    margin-top: 0;
    margin-bottom: .55rem;
}
.project-showcase-page .project-content-text p:last-child,
.project-showcase-page .project-section-body p:last-child {
    margin-bottom: 0 !important;
}
.project-showcase-page .project-section-body.mb-4,
.project-showcase-page .project-content-text.mb-4 {
    margin-bottom: .45rem !important;
}
.project-showcase-page .project-gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px !important;
    margin: 0;
}
.project-showcase-page .project-gallery-grid a {
    display: block;
}
.project-showcase-page .project-gallery-grid img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 1rem;
    display: block;
}
.project-showcase-page .project-split-50-row {
    --bs-gutter-x: 24px;
    --bs-gutter-y: 12px;
    align-items: stretch;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
.project-showcase-page .project-split-50-col {
    display: flex;
    flex-direction: column;
}
.project-showcase-page .project-split-50-col > * {
    width: 100%;
}
.project-showcase-page .project-split-50-col .project-section-body,
.project-showcase-page .project-split-50-col .project-content-text {
    font-size: 1.1rem;
    line-height: 1.8;
}
.project-showcase-page .project-split-50-col .project-gallery-grid {
    gap: 12px !important;
}
.project-showcase-page .project-wide-image,
.project-showcase-page .project-wide-image picture,
.project-showcase-page .project-wide-image img {
    width: 100%;
    max-width: none;
}
.project-showcase-page .project-wide-image img {
    height: clamp(320px, 48vw, 680px);
    object-fit: cover;
    object-position: center center;
    display: block;
}

/* Mobile-friendly public project galleries
   Desktop/tablet keep the full grid. Phones show a compact 2x1 preview row, while the lightbox still includes every image in that section. */
.project-showcase-page .project-gallery-grid .project-lightbox-link {
    position: relative;
    overflow: hidden;
    border-radius: 1rem;
}
.project-gallery-more-badge {
    display: none;
}
@media (max-width: 575.98px) {
    .project-showcase-page .project-gallery-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 8px !important;
    }
    .project-showcase-page .project-gallery-grid img {
        border-radius: .8rem;
        aspect-ratio: 1 / 1;
    }
    .project-showcase-page .project-gallery-mobile-collapsed .project-lightbox-link:nth-child(n+3) {
        display: none;
    }
    .project-showcase-page .project-gallery-mobile-collapsed .project-lightbox-link:nth-child(2) img {
        filter: brightness(.58);
    }
    .project-showcase-page .project-gallery-mobile-collapsed .project-lightbox-link:nth-child(2) .project-gallery-more-badge {
        display: flex;
        position: absolute;
        inset: 0;
        align-items: center;
        justify-content: center;
        padding: .75rem;
        color: #fff;
        background: rgba(0,0,0,.18);
        font-weight: 800;
        font-size: 1rem;
        text-align: center;
        text-shadow: 0 1px 2px rgba(0,0,0,.6);
    }
}
