.umb-block-grid__layout-container {
    position: relative;
    display: grid;
    grid-template-columns: repeat(var(--umb-block-grid--grid-columns, 1), minmax(0, 1fr));
    grid-auto-flow: row;
    grid-auto-rows: minmax(50px, min-content);
    column-gap: var(--umb-block-grid--column-gap, 0);
    row-gap: var(--umb-block-grid--row-gap, 0);
}
.umb-block-grid__layout-item {
    position: relative;
    grid-column-end: span min(calc(var(--umb-block-grid--item-column-span, 1) * 3), var(--umb-block-grid--grid-columns));
    grid-row: span var(--umb-block-grid--item-row-span, 1);
}
.umb-block-grid__layout-item[data-force-left] {
    grid-column-start: 1;
}
.umb-block-grid__layout-item[data-force-right] {
    grid-column-start: calc(1 + var(--umb-block-grid--grid-columns) - var(--umb-block-grid--item-column-span));
}

.umb-block-grid__area {
    grid-column: span var(--umb-block-grid--area-column-span, 1);
}

/* Default gap ระหว่าง area ในแถวเดียวกัน - data type ยังไม่ได้ตั้งค่าไว้ (ค่า var เป็น 0)
   ตั้งที่นี่ทีเดียวแทนการไล่ตั้งทีละ block ใน backoffice */
.umb-block-grid__area-container,
.umb-block-grid__block--view::part(area-container) {
    column-gap: 24px !important;
    row-gap: 24px !important;
}

/* จอเล็ก: บังคับทุก area stack เต็มความกว้างเสมอ ไม่สนใจ span ที่ตั้งไว้ */
/* @media (max-width: 767px) {
    .umb-block-grid__area {
        grid-column: 1 / -1;
    }
} */
@media (max-width: 1023px) {
    .umb-block-grid__area-container,
    .umb-block-grid__block--view::part(area-container) {
        display: block;
    }

    .umb-block-grid__area {
        width: 100%;
    }

    /* grid gap ใช้ไม่ได้เมื่อพ่อไม่ใช่ grid แล้ว - ใช้ margin แทน */
    .umb-block-grid__area + .umb-block-grid__area {
        margin-top: 24px;
    }
}

/* Block Grid - Component Width */
.component-width--center {
    max-width: 768px;
    margin-left: auto;
    margin-right: auto;
}

.component-width--wide {
    max-width: 1280px;
    margin-left: auto;
    margin-right: auto;
}

/* Full-bleed: หลุดออกจาก .container เต็มความกว้างจอจริง */
.component-width--full {
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
}

/* Vertical Position ควบคุมตำแหน่งของแต่ละ Area เทียบกับ Area อื่นในแถวเดียวกัน */
@media (min-width: 1024px) {
    .umb-block-grid__area-container {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start; /* ค่า default: ชิดบน */
    }

    .vertical-position--top .umb-block-grid__area-container {
        align-items: flex-start;
    }

    .vertical-position--center .umb-block-grid__area-container {
        align-items: center;
    }

    .vertical-position--bottom .umb-block-grid__area-container {
        align-items: flex-end;
    }
}

.vertical-position--top .umb-block-grid__area-container {
    align-items: flex-start;
}

.vertical-position--center .umb-block-grid__area-container {
    align-items: center;
}

.vertical-position--bottom .umb-block-grid__area-container {
    align-items: flex-end;
}

.text-align--left {
    text-align: left;
}
.text-align--center {
    text-align: center;
}
.text-align--right {
    text-align: right;
}

.social-links {
    display: flex;
    gap: 16px;
    align-items: center;
    padding: 10px;
}

.social-links__item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 25px;
    text-decoration: none;
    transition: opacity 0.2s, transform 0.2s;
}

.social-links__item svg {
    width: 20px;
    height: 20px;
    color: #fff;
}

.social-links__item:hover {
    opacity: 0.85;
    transform: translateY(-2px);
}

.social-links--align-left {
    justify-content: flex-start;
}
.social-links--align-center {
    justify-content: center;
}
.social-links--align-right {
    justify-content: flex-end;
}

.social-links__item--facebook { background: #4267a8; }
.social-links__item--x-twitter { background: #000000; }
.social-links__item--instagram { background: #3f5c6c; }
.social-links__item--linkedin { background: #0084bf; }
.social-links__item--mastodon { background: #6364ff; }
.social-links__item--youtube { background: #e6301e; }
.social-links__item--github { background: #171515; }
.social-links__item--discord { background: #5865f2; }


/* ===== Flexible style ===== */
.image-card {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.image-card--position-above { flex-direction: column; }
.image-card--position-below { flex-direction: column-reverse; }
.image-card--position-left { flex-direction: row; }
.image-card--position-right { flex-direction: row-reverse; }
.image-card--position-overlay { position: relative; }
.image-card--position-overlay .image-card__body {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 20px;
    color: #fff;
    background: linear-gradient(rgba(0,0,0,0.1), rgba(0,0,0,0.55));
}

.image-card--align-left .image-card__body { text-align: left; align-items: flex-start; }
.image-card--align-center .image-card__body { text-align: center; align-items: center; }
.image-card--align-right .image-card__body { text-align: right; align-items: flex-end; }

.image-card__media {
    position: relative;
    overflow: hidden;
    opacity: var(--card-image-opacity, 1);
    max-width: var(--card-image-max-width, 100%);
    transition: opacity 0.2s;
}
.image-card__media:hover {
    opacity: var(--card-image-opacity-hover, 1);
}
.image-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ===== Profile style ===== */
.doctor-card {
    text-align: center;
    max-width: 320px;
    margin: 0 auto;
}
.doctor-image {
    position: relative;
    overflow: hidden;
    opacity: var(--card-image-opacity, 1);
    max-width: var(--card-image-max-width, 100%);
    margin: 0 auto;
    transition: opacity 0.2s;
}
.doctor-image:hover {
    opacity: var(--card-image-opacity-hover, 1);
}
.doctor-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.doctor-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 16px;
    background: linear-gradient(transparent 50%, rgba(0,0,0,0.6));
    opacity: 0;
    transition: opacity 0.2s;
}
.doctor-image:hover .doctor-overlay {
    opacity: 1;
}
.doctor-content { padding-top: 12px; }
.doctor-content .specialty {
    display: block;
    color: #777;
    font-size: 14px;
    margin-bottom: 8px;
}

/* ===== Image crop styles (ใช้ร่วมกันทั้ง profile/flexible) ===== */
.card-image--square img, .card-image--square .image-card__image { aspect-ratio: 1 / 1; }
.card-image--circle img, .card-image--circle .image-card__image { aspect-ratio: 1 / 1; border-radius: 50%; }
.card-image--landscape img, .card-image--landscape .image-card__image { aspect-ratio: 4 / 3; }
.card-image--portrait img, .card-image--portrait .image-card__image { aspect-ratio: 3 / 4; }
.card-image--wide img, .card-image--wide .image-card__image { aspect-ratio: 16 / 9; }
.card-image--tall img, .card-image--tall .image-card__image { aspect-ratio: 9 / 16; }
.card-image--16x9 img, .card-image--16x9 .image-card__image { aspect-ratio: 16 / 9; }
.card-image--4x3 img, .card-image--4x3 .image-card__image { aspect-ratio: 4 / 3; }
.card-image--3x4 img, .card-image--3x4 .image-card__image { aspect-ratio: 3 / 4; }
.card-image--original img, .card-image--original .image-card__image { aspect-ratio: auto; }

.card-image--pad {
    padding: 16px;
    background: #f4f4f0;
}

.image-card__text {
    font-family: var(--body-font) !important;
}

/* Override: Font Sarabun เฉพาะส่วน rich text */
.umb-block-grid__layout-item[data-content-element-type-alias="umbBlockGridDemoRichTextBlock"] p {
    font-family: var(--body-font) !important;
}

/* เฟกต์เลื่อนเข้า (Scroll Reveal) Block Grid ทุก Component */
.umb-block-grid__layout-item {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity .6s ease-out, transform .6s ease-out;
}

.umb-block-grid__layout-item.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Block Grid – Image block card (มุมมน + soft shadow) */
.block-grid-image {
    margin: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    border-radius: 16px;
    background: var(--surface-color, #fff);
    box-shadow: 0 8px 24px rgba(17, 24, 39, 0.06);
}

.block-grid-image__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/*--------------------------------------------------------------
# Research Detail block
--------------------------------------------------------------*/
.research-detail {
    display: grid;
    gap: 1.75rem;
    align-items: start;
    margin: 0 0 1.5rem;
}

.research-detail--with-cover {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.2fr);
}

.research-detail__aside {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    min-width: 0;
}

.research-detail__media {
    overflow: hidden;
    border-radius: 16px;
    background: color-mix(in srgb, var(--default-color, #3c4049), transparent 94%);
    box-shadow: 0 8px 24px rgba(17, 24, 39, 0.06);
}

.research-detail__image {
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain;
    object-position: center top;
    vertical-align: top;
}

.research-detail__content {
    display: flex;
    flex-direction: column;
    gap: 1.15rem;
    min-width: 0;
}

.research-detail__heading {
    margin: 0;
    font-size: clamp(1.35rem, 2.2vw, 1.75rem);
    font-weight: 700;
    line-height: 1.35;
    color: #111827;
}

.research-detail__section {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.research-detail__label {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: #111827;
}

.research-detail__keywords,
.research-detail__text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--default-color, #3c4049);
}

.research-detail__richtext {
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--default-color, #3c4049);
}

.research-detail__richtext :first-child {
    margin-top: 0;
}

.research-detail__richtext :last-child {
    margin-bottom: 0;
}

.research-detail__richtext ol,
.research-detail__richtext ul {
    margin: 0.35rem 0 0.75rem;
    padding-left: 1.25rem;
}

.research-detail__richtext li + li {
    margin-top: 0.35rem;
}

.research-detail__actions {
    margin: 0;
}

.research-detail__actions .button-link__anchor {
    width: auto;
    max-width: 100%;
    justify-content: center;
    padding: 0.4rem 1rem;
    font-size: 0.8125rem;
    gap: 0.35rem;
}

.research-detail__actions .button-link__anchor[href$=".pdf"]::before,
.research-detail__actions .button-link__anchor[href$=".doc"]::before,
.research-detail__actions .button-link__anchor[href$=".docx"]::before,
.research-detail__actions .button-link__anchor[href$=".xls"]::before,
.research-detail__actions .button-link__anchor[href$=".xlsx"]::before,
.research-detail__actions .button-link__anchor[href$=".zip"]::before {
    font-size: 0.85rem;
}

@media (max-width: 991px) {
    .research-detail--with-cover {
        grid-template-columns: 1fr;
    }

    .research-detail__image {
        max-height: 520px;
        width: 100%;
        object-fit: contain;
    }
}

/*--------------------------------------------------------------
# Course Detail block
--------------------------------------------------------------*/
.course-detail {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    margin: 0.35rem 0 1.5rem;
}

.course-detail__media {
    overflow: hidden;
    border-radius: 16px;
    background: color-mix(in srgb, var(--default-color, #3c4049), transparent 94%);
    box-shadow: 0 8px 24px rgba(17, 24, 39, 0.06);
}

.course-detail__image,
.course-detail__video {
    display: block;
    width: 100%;
    height: auto;
    max-height: 480px;
    object-fit: cover;
    object-position: center;
}

.course-detail__video {
    background: #111;
}

.course-detail__file {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    min-height: 180px;
    padding: 1.5rem;
    color: var(--accent-color-purple, #843895);
    font-weight: 600;
    text-decoration: none;
}

.course-detail__file i {
    font-size: 1.75rem;
}

.course-detail__file:hover {
    color: color-mix(in srgb, var(--accent-color-purple, #843895), black 15%);
}

.course-detail__tabs {
    position: sticky;
    top: var(--header-height, 80px);
    z-index: 5;
    margin: 0 -0.25rem;
    padding: 0.35rem 0 0;
    background: color-mix(in srgb, #fff 92%, transparent);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.course-detail__tabs-track {
    display: flex;
    gap: 0.15rem 1.35rem;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    padding: 0.15rem 0.25rem 0;
    border-bottom: 1px solid color-mix(in srgb, var(--default-color, #3c4049), transparent 88%);
    scrollbar-width: none;
}

.course-detail__tabs-track::-webkit-scrollbar {
    display: none;
}

.course-detail__tab {
    flex: 0 0 auto;
    scroll-snap-align: start;
    padding: 0.65rem 0.1rem 0.85rem;
    margin-bottom: -1px;
    border-bottom: 3px solid transparent;
    color: color-mix(in srgb, var(--default-color, #3c4049), transparent 30%);
    font-size: clamp(1rem, 1.6vw, 1.125rem);
    font-weight: 600;
    line-height: 1.3;
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.course-detail__tab:hover {
    color: #111827;
    text-decoration: none;
}

.course-detail__tab.is-active {
    color: #111827;
    border-bottom-color: #111827;
}

.course-detail__content {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    padding-top: 0.35rem;
}

.course-detail__section {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    scroll-margin-top: calc(var(--header-height, 80px) + 4.5rem);
}

.course-detail__label {
    margin: 0;
    font-size: clamp(1.35rem, 2.4vw, 1.75rem);
    font-weight: 700;
    line-height: 1.3;
    color: #111827;
    text-decoration: none;
}


.course-detail__heading {
    margin: 0;
    font-size: clamp(1.15rem, 2vw, 1.4rem);
    font-weight: 400;
    line-height: 1.4;
    color: #111827;
}

.course-detail__keywords,
.course-detail__text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--default-color, #3c4049);
    font-family: var(--body-font, "Sarabun", system-ui, sans-serif);
}

.course-detail__richtext {
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--default-color, #3c4049);
    font-family: var(--body-font, "Sarabun", system-ui, sans-serif);
}

.course-detail__richtext :first-child {
    margin-top: 0;
}

.course-detail__richtext :last-child {
    margin-bottom: 0;
}

.course-detail__richtext ol,
.course-detail__richtext ul {
    margin: 0.35rem 0 0.75rem;
    padding-left: 1.25rem;
}

.course-detail__richtext li + li {
    margin-top: 0.35rem;
}

.course-detail__actions {
    margin-top: 0.25rem;
}

.course-detail__actions .button-link__anchor {
    padding: 0.4rem 1rem;
    font-size: 0.8125rem;
}

/* @media (max-width: 767px) {
    .course-detail__image,
    .course-detail__video {
        max-height: 280px;
    }
} */

/* Block ที่ partial ไม่ render อะไรออกมา (เช่น Hide from website) — ไม่ให้กินพื้นที่แถว + row-gap */
.umb-block-grid__layout-item:not(:has(*)) {
    display: none;
}

/*--------------------------------------------------------------
# Instructional Detail block
--------------------------------------------------------------*/
.instructional-detail {
    display: grid;
    gap: 1.75rem;
    align-items: start;
    margin: 0.35rem 0 1.5rem;
}

.instructional-detail--with-cover {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.2fr);
}

.instructional-detail__aside {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    min-width: 0;
}

.instructional-detail__media {
    overflow: hidden;
    border-radius: 16px;
    background: color-mix(in srgb, var(--default-color, #3c4049), transparent 94%);
    box-shadow: 0 8px 24px rgba(17, 24, 39, 0.06);
}

.instructional-detail__image,
.instructional-detail__video {
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain;
    object-position: center top;
    vertical-align: top;
}

.instructional-detail__video {
    background: #111;
    max-height: 420px;
}

.instructional-detail__content {
    display: flex;
    flex-direction: column;
    gap: 1.15rem;
    min-width: 0;
}

.instructional-detail__heading {
    margin: 0;
    font-size: clamp(1.35rem, 2.2vw, 1.75rem);
    font-weight: 700;
    line-height: 1.35;
    color: #111827;
}

.instructional-detail__section {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.instructional-detail__label {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: #111827;
}

.instructional-detail__keywords,
.instructional-detail__text {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--default-color, #3c4049);
}

.instructional-detail__richtext {
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--default-color, #3c4049);
}

.instructional-detail__richtext :first-child {
    margin-top: 0;
}

.instructional-detail__richtext :last-child {
    margin-bottom: 0;
}

.instructional-detail__richtext ol,
.instructional-detail__richtext ul {
    margin: 0.35rem 0 0.75rem;
    padding-left: 1.25rem;
}

.instructional-detail__richtext li + li {
    margin-top: 0.35rem;
}

.instructional-detail__embed {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 14px;
    background: #111;
    box-shadow: 0 8px 24px rgba(17, 24, 39, 0.06);
}

.instructional-detail__embed iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.instructional-detail__files {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.instructional-detail__file {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.7rem 0.95rem;
    border-radius: 12px;
    background: color-mix(in srgb, var(--accent-color-purple, #843895), transparent 94%);
    color: color-mix(in srgb, var(--accent-color-purple, #843895), black 10%);
    font-size: 0.9375rem;
    font-weight: 600;
    text-decoration: none;
    transition: background-color 0.2s ease, color 0.2s ease;
}

.instructional-detail__file:hover {
    background: color-mix(in srgb, var(--accent-color-purple, #843895), transparent 88%);
    color: color-mix(in srgb, var(--accent-color-purple, #843895), black 20%);
    text-decoration: none;
}

.instructional-detail__file i {
    font-size: 1.1rem;
}

.instructional-detail__actions {
    margin: 0;
}

.instructional-detail__actions .button-link__anchor {
    width: auto;
    max-width: 100%;
    justify-content: center;
    padding: 0.4rem 1rem;
    font-size: 0.8125rem;
    gap: 0.35rem;
}
.button-file {
    margin: 1.5rem 0;
    padding-top: 1.25rem;
    border-top: 1px solid color-mix(in srgb, var(--accent-color-purple, #843895), transparent 85%);
}

.button-file__title {
    margin: 0 0 0.75rem;
    font-size: 1.125rem;
    font-weight: 700;
    color: #1d1b20;
}

.button-file__actions.research-post__downloads {
    margin-top: 0;
}


@media (max-width: 991px) {
    .instructional-detail--with-cover {
        grid-template-columns: 1fr;
    }

    .instructional-detail__image,
    .instructional-detail__video {
        max-height: 520px;
        width: 100%;
        object-fit: contain;
    }
}

/* Position content (only applies when Item text position = overlay):
   text panel sits beside the image instead of as a gradient over it. */
.spl--text-overlay.spl--content-left .blog-card,
.spl--text-overlay.spl--content-right .blog-card {
    min-height: 320px;
    justify-content: stretch;
}

.spl--text-overlay.spl--content-left .blog-card {
    flex-direction: row-reverse; /* text on the left, image on the right */
}

.spl--text-overlay.spl--content-right .blog-card {
    flex-direction: row; /* text on the right, image on the left */
}

.spl--text-overlay.spl--content-left .blog-card__media,
.spl--text-overlay.spl--content-right .blog-card__media {
    position: relative; /* no longer inset:0 - it only fills its own flex share */
    inset: auto;
    flex: 1 1 auto;
    min-height: 100%;
}

.spl--text-overlay.spl--content-left .blog-card__body,
.spl--text-overlay.spl--content-right .blog-card__body {
    position: relative;
    z-index: 3;
    flex: 0 0 32%;
    width: auto;
    margin-top: 0;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 12px;
    padding: 28px 24px;
    background: linear-gradient(180deg, rgba(20, 22, 30, .82) 0%, rgba(20, 22, 30, .6) 100%);
    color: #fff;
}

.spl--text-overlay.spl--content-left .blog-card__title a,
.spl--text-overlay.spl--content-right .blog-card__title a,
.spl--text-overlay.spl--content-left .blog-card__subheading,
.spl--text-overlay.spl--content-right .blog-card__subheading {
    color: #fff;
}

.spl--text-overlay.spl--content-left .blog-card__meta,
.spl--text-overlay.spl--content-right .blog-card__meta,
.spl--text-overlay.spl--content-left .blog-card__date,
.spl--text-overlay.spl--content-right .blog-card__date {
    color: rgba(255, 255, 255, .8);
}

.blog-card__readmore {
    position: relative;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    gap: 6px;
    font-size: 0.875rem;
    font-weight: 600;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
}

.spl--text-overlay.spl--content-left .blog-card__readmore:hover,
.spl--text-overlay.spl--content-right .blog-card__readmore:hover {
    text-decoration: underline;
}

@media (max-width: 575px) {
    .spl--text-overlay.spl--content-left .blog-card,
    .spl--text-overlay.spl--content-right .blog-card {
        flex-direction: column;
        min-height: 0;
    }

    .spl--text-overlay.spl--content-left .blog-card__body,
    .spl--text-overlay.spl--content-right .blog-card__body {
        flex: 0 0 auto;
        width: 100%;
    }

    .spl--text-overlay.spl--content-left .blog-card__media,
    .spl--text-overlay.spl--content-right .blog-card__media {
        min-height: 220px;
    }
}
