/** DMCWRT Meeting Manager - front-end presentation */

.dmcwrt-mm-next-meeting,
.dmcwrt-mm-future-meetings,
.dmcwrt-mm-past-meetings {
    --dmcwrt-mm-accent: var(--ast-global-color-0, #2f4f6f);
    --dmcwrt-mm-text: var(--ast-global-color-2, #222222);
    --dmcwrt-mm-border: #aeb8c5;
    --dmcwrt-mm-soft-bg: #f6f7f8;
    --dmcwrt-mm-card-bg: #ffffff;

    box-sizing: border-box;
}

.dmcwrt-mm-next-meeting *,
.dmcwrt-mm-future-meetings *,
.dmcwrt-mm-past-meetings * {
    box-sizing: border-box;
}


/* ==================================================
   Featured Next Meeting
   ================================================== */

.dmcwrt-mm-next-meeting {
    margin: 1.5rem 0;
    padding: clamp(1.1rem, 2vw, 1.8rem);

    border: 1px solid var(--dmcwrt-mm-border);
    border-radius: 12px;

    background: var(--dmcwrt-mm-card-bg);
    color: var(--dmcwrt-mm-text);

    box-shadow:
        0 3px 14px
        rgba(0, 0, 0, 0.06);
}


.dmcwrt-mm-heading-block {
    margin-bottom: 1.2rem;
}


.dmcwrt-mm-label {
    margin: 0 0 0.35rem;

    color: var(--dmcwrt-mm-accent);

    font-size: 0.85rem;
    font-weight: 700;

    letter-spacing: 0.08em;
    text-transform: uppercase;
}


/*
 * Slightly smaller than the original
 * Phase 10 Program Title.
 */

.dmcwrt-mm-next-meeting .dmcwrt-mm-program-title {
    margin: 0 0 0.45rem;

    font-size: 1.45rem !important;

    line-height: 1.2;
}


.dmcwrt-mm-meeting-date,
.dmcwrt-mm-speaker {
    margin: 0.45rem 0;
}


.dmcwrt-mm-home-body {
    display: grid;

    grid-template-columns:
        minmax(150px, 220px)
        minmax(0, 1fr);

    gap: 1.5rem;

    align-items: start;
}


.dmcwrt-mm-home-copy:only-child,
.dmcwrt-mm-speaker-bio:only-child {
    grid-column: 1 / -1;
}


.dmcwrt-mm-speaker-image,
.dmcwrt-mm-program-image {
    display: block;

    max-width: 100%;
    height: auto;

    border-radius: 8px;
}


.dmcwrt-mm-home-image
.dmcwrt-mm-speaker-image {
    width: 100%;
}


.dmcwrt-mm-summary p,
.dmcwrt-mm-program-description p,
.dmcwrt-mm-speaker-bio p,
.dmcwrt-mm-dinner-menu p {
    margin-top: 0;
    margin-bottom: 0.85rem;
}


.dmcwrt-mm-location,
.dmcwrt-mm-times {
    margin: 0.55rem 0;
}


.dmcwrt-mm-special-notice {
    margin: 1rem 0;

    padding: 0.85rem 1rem;

    border-left:
        4px solid
        var(--dmcwrt-mm-accent);

    background:
        var(--dmcwrt-mm-soft-bg);
}


.dmcwrt-mm-reservation-action,
.dmcwrt-mm-reservation-status {
    margin: 1rem 0 0;
}


.dmcwrt-mm-reservation-button {
    display: inline-block;

    padding: 0.72rem 1.15rem;

    border-radius: 6px;

    background:
        var(--dmcwrt-mm-accent);

    color: #ffffff !important;

    font-weight: 700;
    line-height: 1.2;

    text-decoration: none !important;
}


.dmcwrt-mm-reservation-button:hover,
.dmcwrt-mm-reservation-button:focus {
    opacity: 0.9;

    color: #ffffff !important;

    text-decoration: none !important;
}


.dmcwrt-mm-program-image-wrap {
    margin: 1.2rem 0 1.5rem;
}


.dmcwrt-mm-program-image {
    width: 100%;
    max-height: 460px;

    object-fit: contain;
}


.dmcwrt-mm-section {
    margin-top: 1.5rem;
}


.dmcwrt-mm-section h3,
.dmcwrt-mm-info-card h3 {
    margin-top: 0;
    margin-bottom: 0.75rem;
}


.dmcwrt-mm-info-grid {
    display: grid;

    grid-template-columns:
        repeat(
            2,
            minmax(0, 1fr)
        );

    gap: 1rem;

    margin-top: 1.5rem;
}


.dmcwrt-mm-info-card {
    padding: 1rem;

    border:
        1px solid
        var(--dmcwrt-mm-border);

    border-radius: 8px;

    background:
        var(--dmcwrt-mm-soft-bg);
}


.dmcwrt-mm-info-card p:last-child {
    margin-bottom: 0;
}


.dmcwrt-mm-speaker-layout {
    display: grid;

    grid-template-columns:
        minmax(150px, 210px)
        minmax(0, 1fr);

    gap: 1.4rem;

    align-items: start;
}


.dmcwrt-mm-newsletter-link {
    margin-top: 1.5rem;

    font-weight: 700;
}


/* ==================================================
   Future Campaign Tables
   ================================================== */

.dmcwrt-mm-future-meetings,
.dmcwrt-mm-past-meetings {
    margin: 1.5rem 0;
}


.dmcwrt-mm-campaign {
    margin:
        2.25rem
        0
        2.75rem;
}


.dmcwrt-mm-campaign:first-child {
    margin-top: 1rem;
}


/*
 * Styled to resemble the traditional
 * DMCWRT Spring/Fall Campaign headings.
 */
.dmcwrt-mm-campaign-title {
    margin:
        0
        0
        1rem;

    color:
        var(--dmcwrt-mm-text);

    font-size:
        clamp(
            1.4rem,
            2.2vw,
            1.75rem
        );

    font-style: italic;
    font-weight: 700;

    line-height: 1.2;
}


/*
 * On narrow screens the table remains
 * a real table and may scroll horizontally.
 * This preserves the one-row-per-meeting
 * layout rather than shrinking the text.
 */
.dmcwrt-mm-campaign-table-wrap {
    width: 100%;

    overflow-x: auto;

    -webkit-overflow-scrolling: touch;
}


.dmcwrt-mm-campaign-table {
    width: 100%;
    min-width: 720px;

    margin: 0;

    border-collapse: collapse;

    background: #ffffff;

    font-size: 0.98rem;
}


.dmcwrt-mm-campaign-table th,
.dmcwrt-mm-campaign-table td {
    padding:
        0.75rem
        0.8rem;

    border:
        1px solid
        var(--dmcwrt-mm-border);

    vertical-align: top;

    text-align: left;
}


.dmcwrt-mm-campaign-table th {
    color:
        var(--dmcwrt-mm-text);

    font-weight: 700;

    border-bottom:
        2px solid
        var(--dmcwrt-mm-accent);
}


/*
 * Column proportions patterned after
 * the traditional DMCWRT table.
 */
.dmcwrt-mm-campaign-table th:nth-child(1),
.dmcwrt-mm-campaign-table td:nth-child(1) {
    width: 16%;
}


.dmcwrt-mm-campaign-table th:nth-child(2),
.dmcwrt-mm-campaign-table td:nth-child(2) {
    width: 28%;
}


.dmcwrt-mm-campaign-table th:nth-child(3),
.dmcwrt-mm-campaign-table td:nth-child(3) {
    width: 56%;
}


.dmcwrt-mm-table-date {
    white-space: nowrap;
}


.dmcwrt-mm-table-speaker-name {
    display: block;
}


.dmcwrt-mm-table-affiliation {
    display: block;

    margin-top: 0.2rem;

    font-size: 0.92em;
}


/* ==================================================
   Empty-state messages
   ================================================== */

.dmcwrt-mm-no-meeting,
.dmcwrt-mm-no-future-meetings,
.dmcwrt-mm-no-past-meetings {
    padding: 1rem;

    border:
        1px solid
        var(--dmcwrt-mm-border);

    border-radius: 8px;

    background:
        var(--dmcwrt-mm-soft-bg);
}


.dmcwrt-mm-no-meeting p,
.dmcwrt-mm-no-future-meetings p,
.dmcwrt-mm-no-past-meetings p {
    margin: 0;
}


/* ==================================================
   Responsive behavior
   ================================================== */

@media (max-width: 700px) {

    .dmcwrt-mm-home-body,
    .dmcwrt-mm-info-grid,
    .dmcwrt-mm-speaker-layout {
        grid-template-columns: 1fr;
    }


    .dmcwrt-mm-home-image,
    .dmcwrt-mm-speaker-photo-wrap {
        max-width: 240px;
    }


    .dmcwrt-mm-campaign-title {
        font-size: 1.4rem;
    }


    .dmcwrt-mm-campaign-table {
        font-size: 0.95rem;
    }
}