.notice-board-shell {
    display: grid;
    gap: var(--settings-layout-gap);
    position: relative;
    min-height: 0;
    --notice-board-tile-width-small: clamp(168px, 24vw, 232px);
    --notice-board-tile-width-medium: clamp(232px, 34vw, 360px);
    --notice-board-tile-width-large: clamp(320px, 46vw, 520px);
    --notice-board-tile-width: var(--notice-board-tile-width-small);
    --nb-grid-gap: clamp(12px, 1.4vw, 18px);
    --nb-grid-columns: 16;
    --notice-board-poster-radius: 18px;
}

.notice-board-shell .notice-board-calendar-hero {
    padding-top: 18px;
    padding-bottom: 18px;
    overflow: visible;
}

.notice-board-shell .planner-hero-minimal {
    display: grid;
    grid-template-columns: minmax(310px, 400px) minmax(0, 1fr);
    align-items: start;
    gap: 16px 16px;
    width: 100%;
    min-width: 0;
}

.notice-board-shell .planner-hero-minimal-summary {
    min-width: 0;
    display: grid;
    align-content: center;
    align-self: center;
    gap: 8px;
    max-width: 28rem;
    overflow: visible;
}

.notice-board-shell .planner-hero-minimal-actions {
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: flex-end;
    gap: 8px 10px;
    width: 100%;
}

.notice-board-shell .planner-hero-minimal-page-title,
.notice-board-shell .planner-hero-minimal-title {
    margin: 0;
    max-width: none;
    font-family: 'Newsreader', serif;
    font-size: clamp(2rem, 1.25vw + 1.5rem, 2.9rem);
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 0.92;
    white-space: nowrap;
}

.notice-board-shell .planner-hero-minimal-dayline {
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35em 0.55em;
    max-width: none;
}

.notice-board-shell .planner-hero-minimal-dayline .planner-hero-minimal-day {
    font-family: 'Newsreader', serif;
    font-size: clamp(1rem, 0.42vw + 0.92rem, 1.22rem);
    font-weight: 600;
    line-height: 1.06;
    color: #2f2924;
    white-space: nowrap;
}

.notice-board-shell .planner-hero-minimal-day-sep {
    color: #9c948c;
    font-weight: 600;
}

.notice-board-shell .planner-hero-minimal-date {
    margin: 0;
    max-width: none;
    font-size: clamp(1rem, 0.42vw + 0.92rem, 1.22rem);
    line-height: 1.06;
    color: #5c534c;
    white-space: nowrap;
}

.notice-board-shell .planner-hero-minimal-kin {
    white-space: nowrap;
    flex: 0 0 auto;
}

.notice-board-shell .planner-hero-minimal-chip {
    flex: 0 1 auto;
    max-width: 100%;
}

.notice-board-shell .planner-hero-minimal-cycle-chip {
    min-width: min(280px, 100%);
}

.notice-board-shell .planner-hero-minimal-cycle-badge {
    background: rgba(231, 228, 222, 0.98);
    border-color: rgba(190, 184, 174, 0.95);
    color: #5f5a52;
}

@media (min-width: 1220px) {
    .notice-board-shell .planner-hero-minimal-actions {
        display: grid;
        grid-template-columns: repeat(3, max-content);
        justify-content: end;
        align-content: start;
        gap: 10px 12px;
    }
}

@media (max-width: 1320px) {
    .notice-board-shell .planner-hero-minimal {
        grid-template-columns: 1fr;
        gap: 14px;
    }

    .notice-board-shell .planner-hero-minimal-summary {
        max-width: none;
        align-self: start;
    }

    .notice-board-shell .planner-hero-minimal-actions {
        display: flex;
        flex-wrap: wrap;
        justify-content: flex-start;
        gap: 10px 12px;
    }
}

@media (max-width: 819px) {
    .notice-board-shell .planner-hero-minimal {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .notice-board-shell .planner-hero-minimal-summary {
        width: 100%;
        justify-items: center;
        align-self: start;
        text-align: center;
        padding: 8px 58px 0;
    }

    .notice-board-shell .planner-hero-minimal-actions {
        justify-content: flex-start;
    }

    .notice-board-shell .planner-hero-minimal-cycle-chip {
        min-width: min(240px, 100%);
    }

    .notice-board-shell .planner-hero-minimal-page-title,
    .notice-board-shell .planner-hero-minimal-title {
        font-size: 1.58rem;
        white-space: normal;
        text-wrap: balance;
        text-align: center;
    }

    .notice-board-shell .planner-hero-minimal-dayline {
        justify-content: center;
        text-align: center;
    }

    .notice-board-shell .planner-hero-minimal-dayline .planner-hero-minimal-day,
    .notice-board-shell .planner-hero-minimal-date {
        font-size: 1.02rem;
        white-space: normal;
        text-wrap: balance;
        text-align: center;
    }
}

.notice-board-poster-strip,
.notice-board-wall:not(.notice-board-widgets-wall) {
    display: flex;
    flex-flow: row wrap;
    justify-content: flex-start;
    align-content: flex-start;
    align-items: flex-start;
    gap: clamp(12px, 1.4vw, 18px);
}

.notice-board-tile-poster {
    flex: 0 0 auto;
    display: block;
    width: var(--notice-board-tile-width);
    max-width: var(--notice-board-tile-width);
    min-height: 0 !important;
    padding: 0;
    border: 0;
    border-radius: var(--notice-board-poster-radius);
    box-shadow: 0 24px 44px rgba(70, 56, 42, 0.08);
    color: #fff;
    text-decoration: none;
    cursor: pointer;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.notice-board-tile-poster:hover,
.notice-board-tile-poster:focus-visible {
    transform: translateY(-2px);
    box-shadow: 0 28px 52px rgba(47, 41, 36, 0.14);
}

.notice-board-tile-poster[data-card-size="small"],
.notice-board-tile-poster[data-card-size="cover"],
.notice-board-tile-poster[data-card-size="1x1"] {
    --notice-board-tile-width: var(--notice-board-tile-width-small);
    --notice-board-poster-radius: 18px;
}

.notice-board-tile-poster[data-card-size="medium"],
.notice-board-tile-poster[data-card-size="strip"],
.notice-board-tile-poster[data-card-size="2x1"],
.notice-board-tile-poster[data-card-size="1x2"] {
    --notice-board-tile-width: var(--notice-board-tile-width-medium);
    --notice-board-poster-radius: 20px;
}

.notice-board-tile-poster[data-card-size="large"],
.notice-board-tile-poster[data-card-size="panel"],
.notice-board-tile-poster[data-card-size="1x1_large"],
.notice-board-tile-poster[data-card-size="2x1_large"],
.notice-board-tile-poster[data-card-size="1x2_large"] {
    --notice-board-tile-width: var(--notice-board-tile-width-large);
    --notice-board-poster-radius: 24px;
}

.notice-board-poster-frame {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: var(--t28-card-aspect-ratio, 16 / 9);
    overflow: hidden;
    border-radius: inherit;
    background: #111;
    /* size so cqw/cqh resolve against this tile for synced fluid type + safe zones */
    container-type: size;
    container-name: poster-tile;
    --notice-board-poster-text-shadow:
        0 1px 2px rgba(0, 0, 0, 0.95),
        0 2px 10px rgba(0, 0, 0, 0.8),
        0 6px 28px rgba(0, 0, 0, 0.55);
    /*
     * One tile type default — change these to restyle every presentation card.
     * Title size is the former --poster-heading-large so titles dominate.
     * Footer is a fixed rem so Event/Journey strips cannot shrink vs YouTube.
     */
    --t28-tile-title-font: "Newsreader", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
    --t28-tile-title-size: clamp(1.15rem, 7.2cqw, 1.85rem);
    --t28-tile-title-lower-size: clamp(0.85rem, 5.2cqw, 1.35rem);
    --t28-tile-title-weight: 500;
    --t28-tile-title-tracking: -0.015em;
    --t28-tile-title-leading: 1.04;
    --t28-tile-title-inset-y: clamp(14px, 5.5cqw, 36px);
    --t28-tile-title-inset-x: clamp(16px, 6cqw, 40px);
    --t28-tile-footer-size: 0.72rem;
    --poster-heading: var(--t28-tile-title-size);
    --poster-heading-large: var(--t28-tile-title-size);
    --poster-meta: clamp(0.65rem, min(7.2cqw, 5.85cqh), 1.48rem);
    --poster-body: clamp(0.65rem, min(5.85cqw, 5cqh), 1.04rem);
    --poster-nudge: clamp(0.65rem, min(5.85cqw, 6.3cqh), 1.04rem);
    --poster-pill: clamp(0.61rem, min(5.6cqw, 4.5cqh), 1rem);
    --poster-upsell-title: clamp(0.7rem, min(6.3cqw, 5cqh), 0.95rem);
    --poster-upsell-pitch: clamp(0.61rem, min(5.4cqw, 4cqh), 0.81rem);
    --poster-upsell-price: clamp(0.65rem, min(5.85cqw, 4.5cqh), 0.85rem);
    --poster-attr-safe: clamp(32px, min(14cqw, 12cqh), 48px);
    --poster-pad-x: var(--t28-tile-title-inset-x);
    --poster-pad-y: var(--t28-tile-title-inset-y);
}

.notice-board-tile-poster[data-card-size="large"] .notice-board-poster-frame,
.notice-board-tile-poster[data-card-size="panel"] .notice-board-poster-frame,
.notice-board-tile-poster[data-card-size="1x1_large"] .notice-board-poster-frame,
.notice-board-tile-poster[data-card-size="2x1_large"] .notice-board-poster-frame,
.notice-board-tile-poster[data-card-size="1x2_large"] .notice-board-poster-frame,
.library-next-step-tile[data-card-size="large"] .notice-board-poster-frame,
.library-next-step-tile[data-card-size="panel"] .notice-board-poster-frame,
.library-next-step-tile[data-card-size="1x1_large"] .notice-board-poster-frame,
.library-next-step-tile[data-card-size="2x1_large"] .notice-board-poster-frame,
.library-next-step-tile[data-card-size="1x2_large"] .notice-board-poster-frame {
    --poster-heading: var(--poster-heading-large);
}

.notice-board-poster-frame::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    border-radius: inherit;
    pointer-events: none;
    box-shadow:
        inset 0 0 0 5px rgba(0, 0, 0, 0.24),
        inset 0 0 100px rgba(0, 0, 0, 0.16);
}

.notice-board-poster-frame::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    border-radius: inherit;
    pointer-events: none;
    background:
        linear-gradient(145deg, rgba(8, 6, 5, 0.58) 0%, rgba(8, 6, 5, 0.12) 38%, transparent 58%),
        linear-gradient(325deg, rgba(8, 6, 5, 0.52) 0%, rgba(8, 6, 5, 0.1) 34%, transparent 54%),
        linear-gradient(180deg, rgba(8, 6, 5, 0.14) 0%, transparent 36%, transparent 62%, rgba(8, 6, 5, 0.22) 100%);
}

.notice-board-tile-poster .notice-board-tile-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.notice-board-wall {
    width: 100%;
}

.notice-board-tile-fallback {
    --notice-board-tile-width: var(--notice-board-tile-width-small);

    position: relative;
    display: block;
    overflow: hidden;
    flex: 0 0 auto;
    width: var(--notice-board-tile-width);
    aspect-ratio: var(--t28-card-aspect-ratio, 16 / 9);
    min-height: 0;
    border: 1px solid rgba(82, 70, 58, 0.12);
    border-radius: 18px;
    container-type: inline-size;
    container-name: notice-board-tile;
    background:
        radial-gradient(circle at top right, rgba(218, 206, 187, 0.2), transparent 42%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(247, 242, 235, 0.94));
    color: #2f2924;
    text-decoration: none;
    cursor: pointer;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.notice-board-tile-fallback:hover,
.notice-board-tile-fallback:focus-visible {
    transform: translateY(-2px);
    border-color: rgba(82, 70, 58, 0.22);
    box-shadow: 0 16px 36px rgba(47, 41, 36, 0.12);
}

.notice-board-tile-fallback[data-card-size="medium"],
.notice-board-tile-fallback[data-card-size="strip"],
.notice-board-tile-fallback[data-card-size="2x1"],
.notice-board-tile-fallback[data-card-size="1x2"] {
    --notice-board-tile-width: var(--notice-board-tile-width-medium);
    border-radius: 20px;
}

.notice-board-tile-fallback[data-card-size="large"],
.notice-board-tile-fallback[data-card-size="panel"],
.notice-board-tile-fallback[data-card-size="1x1_large"],
.notice-board-tile-fallback[data-card-size="2x1_large"],
.notice-board-tile-fallback[data-card-size="1x2_large"] {
    --notice-board-tile-width: var(--notice-board-tile-width-large);
    border-radius: 24px;
}

.notice-board-tile-media {
    position: absolute;
    inset: 0;
    overflow: hidden;
    border-radius: inherit;
}

.notice-board-tile-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: inherit;
}

.notice-board-tile-scrim {
    position: absolute;
    inset: auto 0 0;
    display: grid;
    gap: clamp(4px, 2cqw, 8px);
    padding: clamp(8px, 4.5cqw, 16px);
    background: linear-gradient(180deg, rgba(20, 16, 12, 0), rgba(20, 16, 12, 0.78));
    color: #fff;
}

.notice-board-tile-body {
    display: grid;
    gap: clamp(4px, 2cqw, 8px);
    height: 100%;
    padding: clamp(8px, 4.5cqw, 16px);
}

.notice-board-tile-type {
    color: #6f645c;
    font-size: clamp(0.58rem, 4.2cqw, 0.72rem);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.notice-board-tile-title {
    margin: 0;
    font-size: clamp(0.72rem, 5.8cqw, 0.92rem);
    line-height: 1.25;
}

.notice-board-tile-fallback[data-card-size="medium"] .notice-board-tile-title {
    font-size: clamp(0.82rem, 5.4cqw, 1.02rem);
}

.notice-board-tile-fallback[data-card-size="large"] .notice-board-tile-title {
    font-size: clamp(0.92rem, 4.8cqw, 1.18rem);
}

.notice-board-tile-meta {
    color: #5f564f;
    font-size: clamp(0.66rem, 4.8cqw, 0.8rem);
    line-height: 1.45;
}

.notice-board-tile-excerpt {
    margin: 0;
    color: #554d47;
    font-size: clamp(0.8rem, 5.6cqw, 0.98rem);
    line-height: 1.5;
}

.notice-board-tile-fallback[data-card-size="medium"] .notice-board-tile-excerpt {
    font-size: clamp(0.86rem, 5.2cqw, 1.05rem);
}

.notice-board-tile-fallback[data-card-size="large"] .notice-board-tile-excerpt {
    font-size: clamp(0.94rem, 4.8cqw, 1.12rem);
}

.notice-board-pill {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: clamp(20px, 8cqw, 28px);
    padding: 0 clamp(6px, 3cqw, 10px);
    border-radius: 999px;
    background: rgba(88, 75, 63, 0.08);
    color: #564c44;
    font-size: clamp(0.58rem, 4.2cqw, 0.72rem);
    letter-spacing: 0.04em;
}

.notice-board-tile-scrim .notice-board-pill {
    background: rgba(255, 255, 255, 0.16);
    color: #fff;
}

.notice-board-pill.is-owned {
    background: rgba(115, 149, 117, 0.16);
    color: #3f6244;
}

.library-bonus-corner-ribbon {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 4;
    width: 5.5rem;
    height: 5.5rem;
    overflow: hidden;
    pointer-events: none;
}

.library-bonus-corner-ribbon > span {
    position: absolute;
    top: 0.85rem;
    left: -1.35rem;
    width: 7.5rem;
    padding: 0.28rem 0;
    background: #5c4a36;
    color: #f7f1e8;
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-align: center;
    text-transform: uppercase;
    transform: rotate(-45deg);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
}

.notice-board-timed-discount-ribbon {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 5;
    width: 5.5rem;
    height: 5.5rem;
    overflow: hidden;
    pointer-events: none;
}

.notice-board-timed-discount-ribbon > span {
    position: absolute;
    top: 0.85rem;
    left: -1.35rem;
    width: 7.5rem;
    padding: 0.28rem 0;
    background: #f5c518;
    color: #111;
    font-size: 0.62rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-align: center;
    text-transform: uppercase;
    transform: rotate(-45deg);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.22);
}

.notice-board-poster-frame {
    position: relative;
}

.notice-board-pill.is-discover {
    background: rgba(202, 161, 88, 0.18);
    color: #6d5121;
}

.notice-board-tile-scrim .notice-board-pill.is-owned,
.notice-board-tile-scrim .notice-board-pill.is-discover {
    background: rgba(255, 255, 255, 0.18);
    color: #fff;
}

.notice-board-poster-overlay {
    position: absolute;
    inset: 0;
    z-index: 3;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: clamp(8px, 2.5cqw, 16px);
    padding: var(--poster-pad-y) var(--poster-pad-x);
    /* Keep overlay content above the attribution strip */
    padding-bottom: max(var(--poster-pad-y), var(--poster-attr-safe));
    pointer-events: none;
    color: #fff;
    box-sizing: border-box;
}

/* Membership-style media chrome: centered play, title in the upper band. */
.notice-board-poster-overlay:has(.notice-board-poster-overlay-play),
.notice-board-poster-overlay.is-timed-discount-offer {
    display: block;
    padding: 0;
    gap: 0;
}

.notice-board-poster-overlay-bottom {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: clamp(8px, 3cqw, 14px);
    width: 100%;
    min-width: 0;
}

.notice-board-poster-overlay:has(.notice-board-poster-overlay-play) .notice-board-poster-overlay-bottom,
.notice-board-poster-overlay.is-timed-discount-offer .notice-board-poster-overlay-bottom {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 4;
    padding: 0 var(--poster-pad-x) max(var(--poster-pad-y), var(--poster-attr-safe));
    box-sizing: border-box;
}

.notice-board-poster-overlay-heading {
    flex: 0 1 auto;
    width: 100%;
    max-width: 100%;
    font-family: var(--t28-tile-title-font);
    font-size: var(--t28-tile-title-size, var(--poster-heading));
    font-weight: var(--t28-tile-title-weight, 500);
    line-height: var(--t28-tile-title-leading, 1.04);
    letter-spacing: var(--t28-tile-title-tracking, -0.015em);
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-poster-overlay:has(.notice-board-poster-overlay-play) .notice-board-poster-overlay-heading,
.notice-board-poster-overlay.is-timed-discount-offer .notice-board-poster-overlay-heading {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: calc(50% - 26px);
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    margin: 0;
    padding: var(--t28-tile-title-inset-y, var(--poster-pad-y)) var(--t28-tile-title-inset-x, var(--poster-pad-x)) 0;
    text-align: center;
    max-width: none;
    min-width: 0;
}

.notice-board-poster-overlay-heading-lower,
.notice-board-video-widget-title-lower {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: calc(50% - 26px);
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    margin: 0;
    padding: 0 var(--t28-tile-title-inset-x, var(--poster-pad-x)) max(var(--t28-tile-title-inset-y, var(--poster-pad-y)), var(--poster-attr-safe, 0px));
    color: #fff;
    font-family: var(--t28-tile-title-font);
    font-size: var(--t28-tile-title-lower-size, clamp(0.85rem, 5.2cqw, 1.35rem));
    font-weight: var(--t28-tile-title-weight, 500);
    line-height: var(--t28-tile-title-leading, 1.04);
    letter-spacing: var(--t28-tile-title-tracking, -0.015em);
    text-align: center;
    text-shadow: var(--notice-board-poster-text-shadow);
    max-width: none;
    min-width: 0;
    z-index: 3;
    pointer-events: none;
}

/* Timed offer / play layouts: lower line sits in the band above the attribution strip. */
.notice-board-poster-overlay:has(.notice-board-poster-overlay-play) .notice-board-poster-overlay-heading-lower {
    align-items: center;
    padding-top: 0.35rem;
}

/* Timed offer: center lower message in the gap between pills and attribution strip. */
.notice-board-poster-overlay.is-timed-discount-offer .notice-board-poster-overlay-heading-lower {
    top: calc(50% + 1.35rem);
    bottom: calc(max(var(--t28-tile-title-inset-y, var(--poster-pad-y)), var(--poster-attr-safe, 48px)) + 0.35rem);
    height: auto;
    transform: none;
    align-items: center;
    padding-top: 0;
    padding-bottom: 0;
}

.notice-board-poster-overlay-heading::after {
    content: "";
    display: block;
    width: clamp(36px, 11vw, 72px);
    width: clamp(36px, 11cqw, 72px);
    height: 1px;
    margin-top: clamp(8px, 2.2vw, 14px);
    margin-top: clamp(8px, 2.2cqw, 14px);
    background: linear-gradient(90deg, rgba(212, 184, 132, 0.92), rgba(212, 184, 132, 0.12));
}

/* Background image only: title sits on the art with white type and a dark edge. */
.notice-board-poster-overlay.is-title-on-image .notice-board-poster-overlay-heading,
.notice-board-poster-overlay.is-title-on-image .notice-board-poster-overlay-heading-lower,
.notice-board-video-widget-preview-placeholder.is-title-on-image .notice-board-video-widget-title,
.notice-board-video-widget-preview-placeholder.is-title-on-image .notice-board-video-widget-title-lower {
    color: #fff;
    -webkit-text-stroke: 1px rgba(0, 0, 0, 0.92);
    paint-order: stroke fill;
    text-shadow:
        0 0 2px rgba(0, 0, 0, 0.98),
        0 0 8px rgba(0, 0, 0, 0.85),
        1px 0 0 rgba(0, 0, 0, 0.95),
        -1px 0 0 rgba(0, 0, 0, 0.95),
        0 1px 0 rgba(0, 0, 0, 0.95),
        0 -1px 0 rgba(0, 0, 0, 0.95);
}

.notice-board-poster-overlay.is-title-on-image .notice-board-poster-overlay-heading::after,
.notice-board-video-widget-preview-placeholder.is-title-on-image .notice-board-video-widget-title::after {
    display: none;
}

/* Social preview / share image: show the artwork clean — no title or footer copy on top. */
.notice-board-poster-overlay.is-image-only .notice-board-poster-overlay-heading,
.notice-board-poster-overlay.is-image-only .notice-board-poster-overlay-heading-lower,
.notice-board-poster-overlay.is-image-only .notice-board-poster-overlay-play,
.notice-board-poster-overlay.is-image-only .notice-board-poster-overlay-bottom,
.notice-board-poster-overlay.is-image-only .notice-board-form-shell-body,
.notice-board-poster-overlay.is-image-only .notice-board-form-shell-footer,
.notice-board-poster-overlay.is-image-only .notice-board-blog-widget-excerpt,
.notice-board-poster-overlay.is-image-only .notice-board-blog-widget-list,
.notice-board-poster-overlay.is-image-only .public-grid-active-journey-excerpt,
.notice-board-poster-overlay.is-image-only .public-grid-active-journey-day,
.notice-board-video-widget-preview-placeholder.is-image-only .notice-board-video-widget-title,
.notice-board-video-widget-preview-placeholder.is-image-only .notice-board-video-widget-title-lower,
.notice-board-video-widget-preview-placeholder.is-image-only .notice-board-video-widget-play-icon {
    display: none !important;
}

.notice-board-poster-overlay.is-event-centered-schedule.is-image-only .notice-board-poster-overlay-schedule.is-centered {
    display: grid;
}

.notice-board-poster-overlay.is-image-only .notice-board-poster-overlay-kind-pill {
    display: none !important;
}

.notice-board-poster-overlay:has(.notice-board-poster-overlay-play) .notice-board-poster-overlay-heading::after,
.notice-board-poster-overlay.is-timed-discount-offer .notice-board-poster-overlay-heading::after {
    display: none;
}

.notice-board-poster-overlay-play {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    color: rgba(255, 255, 255, 0.96);
    background: rgba(255, 255, 255, 0.18);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22);
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.notice-board-poster-overlay-play svg {
    display: block;
    width: 28px;
    height: 28px;
}

.notice-board-poster-overlay-play.is-journey svg {
    width: 26px;
    height: 26px;
    fill: none;
    stroke: currentColor;
}

.notice-board-poster-overlay-play.is-journey-hybrid,
.notice-board-video-widget-play-icon.is-journey-hybrid {
    position: relative;
    background:
        radial-gradient(circle at 30% 28%, rgba(255, 255, 255, 0.42), transparent 48%),
        rgba(255, 255, 255, 0.2);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.35),
        0 0 0 1px rgba(255, 255, 255, 0.18),
        0 8px 18px rgba(0, 0, 0, 0.28);
}

.notice-board-poster-overlay-play.is-journey-hybrid .notice-board-poster-overlay-play-triangle,
.notice-board-video-widget-play-icon.is-journey-hybrid .notice-board-poster-overlay-play-triangle {
    width: 28px;
    height: 28px;
    fill: currentColor;
    opacity: 0.92;
}

.notice-board-poster-overlay-play.is-journey-hybrid .notice-board-poster-overlay-play-feather,
.notice-board-video-widget-play-icon.is-journey-hybrid .notice-board-poster-overlay-play-feather {
    position: absolute;
    width: 14px;
    height: 14px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.2;
    filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.55));
    transform: translate(1px, 0);
}

.notice-board-tile-poster:hover .notice-board-poster-overlay-play,
.notice-board-tile-poster:focus-visible .notice-board-poster-overlay-play {
    background: rgba(255, 255, 255, 0.32);
    transform: translate(-50%, -50%) scale(1.06);
}

.notice-board-poster-overlay-schedule {
    display: grid;
    gap: clamp(4px, 1.2cqw, 8px);
    flex: 0 1 auto;
    min-width: 0;
    margin-left: auto;
    justify-items: end;
    text-align: right;
}

/* Event tiles: one registration frame (when + countdown), lifted above attribution. */
.notice-board-poster-overlay.is-event-centered-schedule {
    display: block;
    padding: 0;
    gap: 0;
}

.notice-board-poster-overlay.is-event-centered-schedule .notice-board-poster-overlay-heading {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    z-index: 3;
    box-sizing: border-box;
    margin: 0;
    padding: var(--t28-tile-title-inset-y) var(--t28-tile-title-inset-x) 0;
    max-width: none;
}

.notice-board-poster-overlay.is-event-centered-schedule .notice-board-poster-overlay-schedule.is-centered {
    position: absolute;
    left: 50%;
    /* Slightly below true center so titles clear the shade. */
    top: 56%;
    z-index: 4;
    transform: translate(-50%, -50%);
    margin: 0;
    gap: 0;
    justify-items: center;
    text-align: center;
    width: max-content;
    max-width: calc(100% - 28px);
    pointer-events: none;
}

.notice-board-poster-overlay.is-event-centered-schedule .notice-board-poster-overlay-bottom {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 4;
    padding: 0 var(--t28-tile-title-inset-x) var(--t28-tile-title-inset-y);
    box-sizing: border-box;
}

.notice-board-poster-overlay-registration-frame {
    display: grid;
    gap: 3px;
    justify-items: center;
    min-width: min(92%, 360px);
    padding: 9px 20px 10px;
    border-radius: 14px;
    background: rgba(8, 6, 5, 0.58);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
    color: #fff;
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-poster-overlay-when {
    display: block;
    font-family: "Source Sans 3", "Helvetica Neue", Arial, sans-serif;
    font-size: clamp(1.18rem, 4.4cqw, 1.55rem);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1.2;
    white-space: nowrap;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
}

.notice-board-poster-overlay-registration {
    display: grid;
    gap: 1px;
    justify-items: center;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    font-family: "Source Sans 3", "Helvetica Neue", Arial, sans-serif;
    text-transform: uppercase;
    color: inherit;
    text-shadow: inherit;
    white-space: nowrap;
}

.notice-board-poster-overlay-registration-label {
    font-size: clamp(0.98rem, 3.4cqw, 1.22rem);
    font-weight: 600;
    letter-spacing: 0.08em;
    opacity: 0.88;
    line-height: 1.15;
}

.notice-board-poster-overlay-registration-frame [data-nb-event-start-primary],
.notice-board-poster-overlay-registration-frame [data-nb-event-start-secondary] {
    text-transform: none;
    letter-spacing: 0.03em;
}

.notice-board-poster-overlay-registration-frame [data-nb-event-start-secondary] {
    display: block;
    white-space: nowrap;
}

.notice-board-poster-overlay-registration-time {
    font-size: clamp(1.05rem, 3.4cqw, 1.35rem);
    font-weight: 700;
    letter-spacing: 0.06em;
    line-height: 1.15;
}

.notice-board-poster-overlay-registration-frame.is-closed {
    color: rgba(255, 214, 180, 0.96);
}

.notice-board-poster-overlay-registration-frame.is-closed .notice-board-poster-overlay-registration-label {
    font-size: clamp(0.9rem, 2.7cqw, 1.12rem);
    opacity: 1;
}

.notice-board-poster-overlay-date-stack {
    display: grid;
    gap: clamp(2px, 0.8cqw, 4px);
    justify-items: end;
    text-align: right;
}

.notice-board-poster-overlay-date-line {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35em;
    justify-content: flex-end;
}

.notice-board-poster-overlay-day {
    font-family: "Newsreader", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
    font-size: clamp(1.1rem, 4.8cqw, 2.4rem);
    font-weight: 500;
    line-height: 1;
    letter-spacing: -0.02em;
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-poster-overlay-date-meta {
    display: grid;
    gap: 2px;
    padding-bottom: clamp(3px, 0.8vw, 5px);
    padding-bottom: clamp(3px, 0.8cqw, 5px);
    text-align: left;
}

.notice-board-poster-overlay-weekday {
    font-family: "Source Sans 3", "Helvetica Neue", Arial, sans-serif;
    font-size: clamp(0.62rem, 1.8vw, 0.78rem);
    font-size: clamp(0.62rem, 2.2cqw, 0.78rem);
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.86);
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-poster-overlay-month {
    font-family: "Newsreader", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
    font-size: clamp(0.85rem, 1.6vw, 1.2rem);
    font-size: clamp(0.85rem, 3.2cqw, 1.2rem);
    font-style: italic;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.92);
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-poster-overlay-date {
    font-family: "Source Sans 3", "Helvetica Neue", Arial, sans-serif;
    font-size: var(--poster-meta);
    font-weight: 500;
    letter-spacing: 0.03em;
    white-space: nowrap;
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-poster-overlay-time {
    font-family: "Source Sans 3", "Helvetica Neue", Arial, sans-serif;
    font-size: clamp(0.95rem, 2.1vw, 1.55rem);
    font-size: clamp(0.95rem, 4cqw, 1.55rem);
    font-weight: 600;
    letter-spacing: 0.04em;
    white-space: nowrap;
    padding-top: clamp(5px, 1.2vw, 8px);
    padding-top: clamp(5px, 1.2cqw, 8px);
    border-top: 1px solid rgba(212, 184, 132, 0.38);
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-kind-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: fit-content;
    min-height: 40px;
    padding: 0 18px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.82);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.34);
    color: #fff;
    font-family: "Source Sans 3", "Helvetica Neue", Arial, sans-serif;
    font-size: clamp(0.84rem, 1.35vw, 1rem);
    font-weight: 700;
    letter-spacing: 0.18em;
    line-height: 1;
    text-transform: uppercase;
    white-space: nowrap;
}

.notice-board-poster-overlay-kind-pill {
    flex: 0 0 auto;
    z-index: 4;
    min-height: clamp(28px, 7cqw, 46px);
    padding: 0 clamp(12px, 3.2cqw, 22px);
    font-size: var(--poster-pill);
    letter-spacing: 0.2em;
}

/* Form product shell — membership-style dark product chrome (plain frame default). */
.notice-board-tile.is-notice-board-form-shell {
    display: block;
    text-decoration: none;
    color: inherit;
    container-type: size;
    container-name: notice-board-form-shell;
}

.notice-board-tile.is-notice-board-form-shell .notice-board-poster-frame {
    container-type: size;
    container-name: poster-tile notice-board-form-shell;
    overflow: hidden;
    min-width: 0;
}

.notice-board-tile.is-notice-board-form-shell .notice-board-form-shell-overlay {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    gap: 6px;
    pointer-events: none;
    overflow: hidden;
    min-width: 0;
    width: 100%;
    max-width: 100%;
    height: 100%;
    box-sizing: border-box;
    padding: var(--t28-tile-title-inset-y, var(--poster-pad-y)) var(--t28-tile-title-inset-x, var(--poster-pad-x));
    padding-bottom: max(var(--t28-tile-title-inset-y, var(--poster-pad-y)), var(--poster-attr-safe));
}

.notice-board-tile.is-notice-board-form-shell .notice-board-poster-frame.is-plain-frame {
    background:
        radial-gradient(circle at 18% 12%, rgba(180, 150, 110, 0.22), transparent 44%),
        radial-gradient(circle at 88% 78%, rgba(70, 52, 38, 0.28), transparent 50%),
        linear-gradient(165deg, #5c4a3c 0%, #46372d 48%, #3a2e26 100%);
}

.notice-board-tile.is-notice-board-form-shell .notice-board-poster-frame.is-plain-frame::before {
    background:
        linear-gradient(145deg, rgba(8, 6, 5, 0.18) 0%, rgba(8, 6, 5, 0.04) 38%, transparent 58%),
        linear-gradient(325deg, rgba(8, 6, 5, 0.16) 0%, rgba(8, 6, 5, 0.04) 34%, transparent 54%),
        linear-gradient(180deg, rgba(8, 6, 5, 0.06) 0%, transparent 40%, transparent 70%, rgba(8, 6, 5, 0.12) 100%);
}

.notice-board-tile.is-notice-board-form-shell .notice-board-poster-frame.is-plain-frame::after {
    box-shadow:
        inset 0 0 0 4px rgba(0, 0, 0, 0.12),
        inset 0 0 60px rgba(0, 0, 0, 0.08);
}

.notice-board-form-shell-overlay.is-plain {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: var(--t28-tile-title-inset-y, var(--poster-pad-y, 14px)) var(--t28-tile-title-inset-x, var(--poster-pad-x, 16px));
    padding-bottom: var(--t28-tile-title-inset-y, var(--poster-pad-y, 14px));
    min-height: 100%;
    height: 100%;
    box-sizing: border-box;
    color: #fff8eb;
}

.notice-board-form-shell-overlay.is-plain .notice-board-poster-overlay-heading {
    color: #fff8eb;
    text-shadow: var(--notice-board-poster-text-shadow);
}

.notice-board-form-shell-overlay .notice-board-poster-overlay-heading::after {
    margin-top: 6px;
}

.notice-board-form-shell-body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    pointer-events: none;
}

.notice-board-form-shell-excerpt {
    margin: 0;
    max-width: 100%;
    color: rgba(255, 248, 235, 0.88);
    font-size: clamp(0.94rem, 2.9cqw, 1.08rem);
    line-height: 1.38;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    overflow: hidden;
}

.notice-board-form-shell-price {
    margin: 0 0 4px;
    max-width: 100%;
    color: #fff8eb;
    font-size: clamp(1.05rem, 3.2cqw, 1.28rem);
    font-weight: 700;
    letter-spacing: 0.01em;
    text-shadow: var(--notice-board-poster-text-shadow, 0 1px 2px rgba(0, 0, 0, 0.35));
}

.notice-board-form-shell-overlay.is-plain .notice-board-form-shell-price {
    color: #fff8eb;
}

.notice-board-form-shell-overlay.is-plain .notice-board-form-shell-excerpt {
    color: rgba(255, 248, 235, 0.9);
    display: block;
    -webkit-line-clamp: unset;
    overflow: auto;
    flex: 1 1 auto;
    min-height: 0;
}

.notice-board-form-shell-footer {
    display: grid;
    gap: 10px;
    margin-top: auto;
    margin-bottom: var(--poster-attr-safe, 42px);
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    pointer-events: none;
    flex: 0 0 auto;
}

.notice-board-form-shell-footer .notice-board-poster-overlay-bottom {
    position: static;
    padding: 0;
    margin-top: 0;
}

.notice-board-form-shell-footer .notice-board-poster-overlay-date {
    text-align: right;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: var(--poster-pill, clamp(0.62rem, 2.2cqw, 0.74rem));
    color: rgba(255, 248, 235, 0.92);
}

.notice-board-tile.is-notice-board-form-shell[data-card-size="1x1"] .notice-board-form-shell-excerpt,
.notice-board-tile.is-notice-board-form-shell[data-card-size="small"] .notice-board-form-shell-excerpt,
.notice-board-tile.is-notice-board-form-shell[data-card-size="cover"] .notice-board-form-shell-excerpt {
    -webkit-line-clamp: 2;
    font-size: clamp(0.84rem, 3.3cqw, 0.98rem);
}

.notice-board-tile.is-notice-board-form-shell[data-card-size="1x1"] .notice-board-form-shell-overlay.is-plain .notice-board-form-shell-excerpt,
.notice-board-tile.is-notice-board-form-shell[data-card-size="small"] .notice-board-form-shell-overlay.is-plain .notice-board-form-shell-excerpt,
.notice-board-tile.is-notice-board-form-shell[data-card-size="cover"] .notice-board-form-shell-overlay.is-plain .notice-board-form-shell-excerpt {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

.notice-board-tile-poster[data-card-size="small"] .notice-board-poster-overlay:not(.notice-board-form-shell-overlay):not(.library-membership-overlay),
.notice-board-tile-poster[data-card-size="cover"] .notice-board-poster-overlay:not(.notice-board-form-shell-overlay):not(.library-membership-overlay),
.notice-board-tile-poster[data-card-size="1x1"] .notice-board-poster-overlay:not(.notice-board-form-shell-overlay):not(.library-membership-overlay) {
    padding-bottom: var(--poster-attr-safe);
}

.notice-board-tile-poster[data-card-size="small"] .notice-board-poster-overlay-bottom,
.notice-board-tile-poster[data-card-size="cover"] .notice-board-poster-overlay-bottom,
.notice-board-tile-poster[data-card-size="1x1"] .notice-board-poster-overlay-bottom {
    margin-bottom: clamp(6px, 2.8cqw, 12px);
    transform: translateY(clamp(-8px, -3.2cqw, -16px));
}

.notice-board-tile-poster[data-card-size="small"] .notice-board-poster-overlay-kind-pill,
.notice-board-tile-poster[data-card-size="cover"] .notice-board-poster-overlay-kind-pill,
.notice-board-tile-poster[data-card-size="1x1"] .notice-board-poster-overlay-kind-pill {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.28);
}

.notice-board-tile-poster[data-card-size="small"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="medium"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="cover"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="strip"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="1x1"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="2x1"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="1x2"] .notice-board-poster-overlay-heading {
    font-size: var(--poster-heading);
}

.notice-board-tile-poster[data-card-size="small"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="medium"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="cover"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="strip"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="1x1"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="2x1"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="1x2"] .notice-board-poster-overlay-day {
    font-size: clamp(1.15rem, 5.8cqw, 2.1rem);
}

.notice-board-tile-poster[data-card-size="large"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="panel"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="1x1_large"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="2x1_large"] .notice-board-poster-overlay-heading,
.notice-board-tile-poster[data-card-size="1x2_large"] .notice-board-poster-overlay-heading {
    font-size: var(--poster-heading);
}

.notice-board-tile-poster[data-card-size="large"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="panel"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="1x1_large"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="2x1_large"] .notice-board-poster-overlay-day,
.notice-board-tile-poster[data-card-size="1x2_large"] .notice-board-poster-overlay-day {
    font-size: clamp(1.5rem, 7cqw, 3rem);
}

.notice-board-tile-kind-pill {
    position: absolute;
    left: clamp(8px, 4.5cqw, 16px);
    bottom: clamp(8px, 4.5cqw, 16px);
    z-index: 3;
}

.notice-board-tile-kind-pill.is-inline {
    position: static;
    margin-bottom: 4px;
}

.notice-board-empty-card {
    background:
        radial-gradient(circle at top right, rgba(216, 197, 163, 0.18), transparent 44%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(247, 242, 235, 0.94));
}

.notice-board-empty-card .settings-card-copy {
    margin: 0;
    color: #554d47;
    line-height: 1.6;
}

@media (max-width: 720px) {
    .notice-board-tile-fallback[data-card-size="large"],
    .notice-board-tile-poster[data-card-size="large"] {
        --notice-board-tile-width: min(100%, 480px);
    }
}

/* ─── Video Widget Tile ──────────────────────────────────────────────── */

.notice-board-tile-video-widget {
    flex: 0 0 auto;
    width: var(--notice-board-tile-width);
    max-width: var(--notice-board-tile-width);
    padding: 0;
    border: 0;
    border-radius: var(--notice-board-poster-radius, 20px);
    box-shadow: 0 24px 44px rgba(70, 56, 42, 0.08);
    overflow: hidden;
    background: #111;
    cursor: pointer;
    transition: box-shadow 0.18s ease, transform 0.18s ease;
}

.notice-board-tile-video-widget:hover,
.notice-board-tile-video-widget:focus-within {
    box-shadow: 0 28px 52px rgba(47, 41, 36, 0.14);
    transform: translateY(-2px);
}

.notice-board-tile-video-widget[data-card-size="small"],
.notice-board-tile-video-widget[data-card-size="cover"],
.notice-board-tile-video-widget[data-card-size="1x1"] {
    --notice-board-tile-width: var(--notice-board-tile-width-small);
    --notice-board-poster-radius: 18px;
}

.notice-board-tile-video-widget[data-card-size="medium"],
.notice-board-tile-video-widget[data-card-size="strip"],
.notice-board-tile-video-widget[data-card-size="2x1"],
.notice-board-tile-video-widget[data-card-size="1x2"] {
    --notice-board-tile-width: var(--notice-board-tile-width-medium);
    --notice-board-poster-radius: 20px;
}

.notice-board-tile-video-widget[data-card-size="large"],
.notice-board-tile-video-widget[data-card-size="panel"],
.notice-board-tile-video-widget[data-card-size="1x1_large"],
.notice-board-tile-video-widget[data-card-size="2x1_large"],
.notice-board-tile-video-widget[data-card-size="1x2_large"] {
    --notice-board-tile-width: var(--notice-board-tile-width-large);
    --notice-board-poster-radius: 24px;
}

/* Preview area (video frame) */

.notice-board-video-widget-shell {
    position: relative;
    width: 100%;
    border-radius: inherit;
}

.notice-board-video-widget-preview {
    display: block;
    position: relative;
    width: 100%;
    aspect-ratio: var(--t28-card-aspect-ratio, 16 / 9);
    background: #111;
    overflow: hidden;
    text-decoration: none;
    flex-shrink: 0;
    border: 0;
    padding: 0;
    cursor: pointer;
    color: inherit;
    border-radius: inherit;
    container-type: size;
    container-name: poster-tile;
    --notice-board-poster-text-shadow:
        0 1px 2px rgba(0, 0, 0, 0.95),
        0 2px 10px rgba(0, 0, 0, 0.8),
        0 6px 28px rgba(0, 0, 0, 0.55);
    --t28-tile-title-font: "Newsreader", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
    --t28-tile-title-size: clamp(1.15rem, 7.2cqw, 1.85rem);
    --t28-tile-title-lower-size: clamp(0.85rem, 5.2cqw, 1.35rem);
    --t28-tile-title-weight: 500;
    --t28-tile-title-tracking: -0.015em;
    --t28-tile-title-leading: 1.04;
    --t28-tile-title-inset-y: clamp(14px, 5.5cqw, 36px);
    --t28-tile-title-inset-x: clamp(16px, 6cqw, 40px);
    --t28-tile-footer-size: 0.72rem;
    --poster-heading: var(--t28-tile-title-size);
    --poster-heading-large: var(--t28-tile-title-size);
    --poster-attr-safe: clamp(32px, min(14cqw, 12cqh), 48px);
}

.notice-board-tile-video-widget[data-card-size="large"] .notice-board-video-widget-preview,
.notice-board-tile-video-widget[data-card-size="panel"] .notice-board-video-widget-preview,
.notice-board-tile-video-widget[data-card-size="1x1_large"] .notice-board-video-widget-preview,
.notice-board-tile-video-widget[data-card-size="2x1_large"] .notice-board-video-widget-preview,
.notice-board-tile-video-widget[data-card-size="1x2_large"] .notice-board-video-widget-preview {
    --poster-heading: var(--poster-heading-large);
}

/* Match poster tile inset frame ring (4A). */
.notice-board-video-widget-preview::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 4;
    border-radius: inherit;
    pointer-events: none;
    box-shadow:
        inset 0 0 0 5px rgba(0, 0, 0, 0.24),
        inset 0 0 100px rgba(0, 0, 0, 0.16);
}

.notice-board-video-widget-preview-frame {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: inherit;
    overflow: hidden;
}

.notice-board-video-widget-poster {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    transform: scale(1.08);
    transform-origin: center center;
}

.notice-board-video-widget-poster-fallback {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.16), transparent 45%),
        linear-gradient(145deg, #1d2430 0%, #0f1218 55%, #2a1d18 100%);
}

.notice-board-tile-video-widget.has-poster-preview .notice-board-video-widget-preview-placeholder {
    opacity: 1;
    pointer-events: none;
}

.notice-board-video-widget-preview-placeholder {
    position: absolute;
    inset: 0;
    display: block;
    color: rgba(255, 255, 255, 0.92);
    text-align: center;
    width: 100%;
    height: 100%;
    transition: opacity 0.2s ease;
    z-index: 2;
    pointer-events: none;
    background: linear-gradient(
        180deg,
        rgba(8, 8, 10, 0.18) 0%,
        rgba(8, 8, 10, 0.28) 45%,
        rgba(8, 8, 10, 0.45) 100%
    );
}

.notice-board-video-widget-title {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: calc(50% - 26px);
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    max-width: none;
    margin: 0;
    padding: var(--t28-tile-title-inset-y) var(--t28-tile-title-inset-x) 0;
    color: #fff;
    font-family: var(--t28-tile-title-font);
    font-weight: var(--t28-tile-title-weight, 500);
    letter-spacing: var(--t28-tile-title-tracking, -0.015em);
    line-height: var(--t28-tile-title-leading, 1.04);
    font-size: var(--t28-tile-title-size, var(--poster-heading));
    text-shadow: var(--notice-board-poster-text-shadow);
}

/* Board tiles are buttons for modal open — reset native button chrome. */
button.notice-board-tile,
a.notice-board-tile {
    appearance: none;
    -webkit-appearance: none;
    border: 0;
    margin: 0;
    font: inherit;
    color: inherit;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
}

.notice-board-video-widget-preview-frame.is-playing .notice-board-video-widget-preview-placeholder {
    opacity: 0;
}

.notice-board-tile-video-widget.has-poster-preview .notice-board-video-widget-preview-frame.is-playing .notice-board-video-widget-preview-placeholder {
    opacity: 1;
}

.notice-board-video-widget-play-icon {
    position: absolute;
    left: 50%;
    top: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    color: rgba(255, 255, 255, 0.96);
    background: rgba(255, 255, 255, 0.18);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22);
    transform: translate(-50%, -50%);
    transition: background 0.18s ease, transform 0.18s ease;
}

.notice-board-video-widget-play-icon svg {
    display: block;
    width: 28px;
    height: 28px;
}

.notice-board-video-widget-play-icon.is-journey svg {
    width: 26px;
    height: 26px;
    fill: none;
    stroke: currentColor;
}

.notice-board-video-widget-play-icon.is-journey-hybrid {
    display: flex;
    align-items: center;
    justify-content: center;
}

.notice-board-video-widget-preview:hover .notice-board-video-widget-play-icon,
.notice-board-video-widget-preview:focus-visible .notice-board-video-widget-play-icon {
    background: rgba(255, 255, 255, 0.32);
    transform: translate(-50%, -50%) scale(1.06);
}

.notice-board-widget-card-blog {
    background: transparent;
    box-shadow: none;
}

.notice-board-widget-card-blog .notice-board-widget-face-front {
    padding: 0;
    overflow: hidden;
    background: transparent;
}

.notice-board-widget-card-blog .notice-board-tile-blog-latest {
    display: block;
    width: 100%;
    height: 100%;
    text-decoration: none;
    color: inherit;
}

.notice-board-tile-blog-latest .notice-board-video-widget-preview,
.notice-board-tile-blog-latest a.notice-board-blog-latest-open {
    cursor: pointer;
    border: 0;
    background: transparent;
    padding: 0;
    width: 100%;
    height: 100%;
    display: block;
    text-decoration: none;
    color: inherit;
}

.notice-board-tile-blog-latest .notice-board-video-widget-play-icon {
    display: none !important;
}

.notice-board-tile-blog-latest.is-empty .notice-board-video-widget-preview {
    cursor: default;
    pointer-events: none;
}

.notice-board-widget-card-invitation {
    background: transparent;
    box-shadow: none;
}

.notice-board-widget-card-invitation .notice-board-widget-face-front {
    padding: 0;
    overflow: hidden;
}

.notice-board-widget-card-invitation .notice-board-tile-invitation {
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    color: var(--text, #2f2924);
    background: transparent;
    box-shadow: none;
    cursor: pointer;
}

.notice-board-invitation-shell {
    position: relative;
    display: flex;
    width: 100%;
    height: 100%;
    min-height: 0;
}

.notice-board-invitation-shell > .nb-attribution-strip {
    position: absolute;
    top: auto;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 8;
}

.notice-board-invitation-overlay {
    justify-content: center;
    align-items: center;
    gap: clamp(10px, 2.4cqw, 16px);
    color: inherit;
    text-align: center;
    padding-top: clamp(18px, 6cqw, 36px);
    padding-bottom: max(var(--poster-pad-y, 16px), calc(var(--poster-attr-safe, 48px) + 8px));
}

.notice-board-invitation-overlay .notice-board-poster-overlay-heading {
    position: static;
    height: auto;
    margin: 0;
    padding: 0;
    text-align: center;
    text-shadow: none;
    color: inherit;
}

.notice-board-invitation-overlay .notice-board-poster-overlay-heading::after {
    margin-left: auto;
    margin-right: auto;
}

.notice-board-invitation-subtitle {
    margin: 0;
    max-width: 22em;
    color: var(--muted, #5f564f);
    font-family: var(--t28-ui-font, inherit);
    font-size: clamp(0.78rem, 3.6cqw, 0.98rem);
    font-weight: 500;
    line-height: 1.35;
    letter-spacing: 0.01em;
    text-shadow: none;
}

.notice-board-video-widget-iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    pointer-events: none;
}

.notice-board-video-widget-badge {
    position: absolute;
    left: 0;
    bottom: 0;
    z-index: 6;
    min-height: 24px;
    padding: 0 8px;
    border-radius: 0 8px 0 0;
    font-size: 0.52rem;
    letter-spacing: 0.12em;
    box-shadow: none;
}

/* ─── Attribution strip (logo + type + avatars) ──────────────────────── */

.nb-attribution-strip {
    position: absolute;
    top: auto;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 8;
    display: inline-flex;
    align-items: center;
    min-width: 0;
    max-width: calc(100% - 24px);
    pointer-events: none;
    --t28-tile-footer-size: 0.72rem;
}

.nb-attribution-strip.is-modal {
    position: relative;
    top: auto;
    bottom: auto;
    left: auto;
    transform: none;
    z-index: 1;
    display: inline-flex;
    justify-content: flex-start;
    width: auto;
    max-width: 100%;
    margin: 0 0 14px;
    pointer-events: auto;
}

.notice-board-tile-fallback > .nb-attribution-strip,
.notice-board-tile-poster > .nb-attribution-strip,
.notice-board-video-widget-shell > .nb-attribution-strip {
    position: absolute;
    top: auto;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
}

.nb-attribution-logo {
    position: relative;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 27px;
    height: 27px;
    flex: 0 0 auto;
    border-radius: 999px;
    overflow: hidden;
    background: #111;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12);
}

.nb-attribution-strip.is-modal .nb-attribution-logo {
    width: 36px;
    height: 36px;
}

.nb-attribution-logo img {
    display: block;
    width: 23px;
    height: 23px;
    object-fit: contain;
    object-position: center;
}

.nb-attribution-strip.is-modal .nb-attribution-logo img {
    width: 32px;
    height: 32px;
}

.nb-attribution-pill {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    min-height: 27px;
    height: 27px;
    margin-left: -11px;
    padding: 0 12px 0 14px;
    border-radius: 0 999px 999px 0;
    background: #111;
    color: #fff;
    font-size: var(--t28-tile-footer-size, 0.72rem);
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    line-height: 1;
    flex: 1 1 auto;
    max-width: 100%;
    overflow: hidden;
}

.nb-attribution-strip.is-modal .nb-attribution-pill {
    min-height: 36px;
    height: 36px;
    margin-left: -14px;
    padding: 0 16px 0 18px;
    gap: 9px;
    font-size: 0.82rem;
    letter-spacing: 0.09em;
}

.nb-attribution-verb {
    flex: 0 0 auto;
    white-space: nowrap;
    opacity: 0.92;
}

.nb-attribution-avatars {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    pointer-events: auto;
}

.nb-attribution-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    margin-left: -4px;
    border-radius: 50%;
    overflow: hidden;
    background: #3a342e;
    color: #f4efe8;
    font-size: 0.45rem;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
    text-decoration: none;
    box-shadow: 0 0 0 1.5px #fff;
    pointer-events: auto;
}

.nb-attribution-strip.is-modal .nb-attribution-avatar {
    width: 22px;
    height: 22px;
    margin-left: -6px;
    font-size: 0.58rem;
}

.nb-attribution-avatars .nb-attribution-avatar:first-child {
    margin-left: 0;
}

.nb-attribution-avatar img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nb-attribution-name {
    display: inline-block;
    min-width: 0;
    flex: 1 1 auto;
    max-width: 14rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #fff;
    text-decoration: none;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-size: inherit;
    pointer-events: auto;
}

.nb-attribution-strip.is-modal .nb-attribution-name {
    max-width: min(18rem, 42vw);
    font-size: 0.82rem;
}

.nb-attribution-name:hover,
.nb-attribution-avatar:hover {
    opacity: 0.88;
}

.notice-board-tile-fallback > .nb-attribution-strip,
.notice-board-tile-poster > .nb-attribution-strip {
    position: absolute;
    top: auto;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
}

.notice-board-tile-fallback,
.notice-board-tile-poster {
    position: relative;
}

.content-detail-attribution {
    display: flex;
    justify-content: flex-start;
    width: 100%;
    margin: 0 0 10px;
}

/* Decorative bottom-left kind pills replaced by attribution strip (1A). */
.notice-board-poster-overlay-kind-pill,
.notice-board-video-widget-badge,
.notice-board-tile-kind-pill,
.notice-board-form-shell-footer .notice-board-poster-overlay-kind-pill {
    display: none !important;
}

.library-membership-footer .notice-board-poster-overlay-bottom {
    display: none !important;
}

/* Mute button overlay — shared between notice board and course player */

.courses-global-mute-btn,
.notice-board-video-widget-mute-btn {
    position: absolute;
    bottom: 8px;
    right: 8px;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: 50%;
    background: rgba(20, 16, 12, 0.68);
    color: #fff;
    cursor: pointer;
    padding: 0;
    line-height: 1;
    backdrop-filter: blur(6px);
    transition: background 0.15s ease, transform 0.15s ease;
    pointer-events: auto;
}

.courses-global-mute-btn:hover,
.notice-board-video-widget-mute-btn:hover {
    background: rgba(20, 16, 12, 0.88);
    transform: scale(1.08);
}

.courses-global-mute-btn.is-muted,
.notice-board-video-widget-mute-btn.is-muted {
    background: rgba(180, 40, 40, 0.8);
}

.courses-global-mute-btn.is-muted:hover,
.notice-board-video-widget-mute-btn.is-muted:hover {
    background: rgba(200, 50, 50, 0.92);
}

.notice-board-video-widget-mute-wrap {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

/* Course player media frame — position relative for the mute btn */

.courses-player-media {
    position: relative;
}

@media (max-width: 720px) {
    .notice-board-tile-video-widget[data-card-size="large"] {
        --notice-board-tile-width: min(100%, 480px);
    }
}

/* ─── Notice Board contact sheet (compact fine grid) ─ */
/* Grid spans per size: see app/card_sizes.php (grid_col_span / grid_row_span) */

.notice-board-widgets-wall {
    container-type: inline-size;
    /* Match shell gap between calendar/yellow chip and first card (~18px). */
    --nb-grid-gap: clamp(12px, 1.4vw, 18px);
    --nb-grid-columns: 16;
    /* Keep a px floor so first paint never collapses into thin pills when cqi is 0. */
    --nb-fine-col: max(14px, calc((100cqi - (var(--nb-grid-columns) - 1) * var(--nb-grid-gap)) / var(--nb-grid-columns)));
    --nb-unit-cols: 2;
    --nb-unit: calc(var(--nb-unit-cols) * var(--nb-fine-col) + (var(--nb-unit-cols) - 1) * var(--nb-grid-gap));
    --nb-row-sm: var(--nb-unit);
    display: grid;
    grid-template-columns: repeat(var(--nb-grid-columns), minmax(0, 1fr));
    grid-auto-rows: var(--nb-row-sm);
    grid-auto-flow: dense;
    align-items: stretch;
    align-content: start;
    gap: var(--nb-grid-gap);
    width: 100%;
    min-height: 0;
    padding-bottom: 0;
}

@supports not (width: 1cqi) {
    .notice-board-widgets-wall {
        --nb-row-sm: clamp(48px, 7.5vw, 104px);
    }
}

.notice-board-widgets-wall[data-nb-empty='true'],
.notice-board-widgets-wall:not(:has(.notice-board-wall-item)) {
    display: none !important;
}

.notice-board-wall-item {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    width: 100%;
    height: 100%;
    align-self: stretch;
    overflow: hidden;
    cursor: pointer;
}

.notice-board-wall-item[data-nb-item-type='widget'] {
    display: flex;
    flex-direction: column;
}

/* Grid spans: generated from app/card_sizes.php (#t28-card-sizes-styles) */
/* Packed coordinates: data-nb-packed + --nb-pack-* (placement only) */

.notice-board-wall-item-controls {
    position: absolute;
    top: 6px;
    right: 6px;
    z-index: 6;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.notice-board-wall-drag-handle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #52463a;
    opacity: 0.14;
    cursor: grab;
    touch-action: none;
    transition: opacity 0.15s ease, background 0.15s ease, transform 0.15s ease;
}

.notice-board-wall-drag-handle svg {
    width: 16px;
    height: 16px;
}

.notice-board-wall-item:hover .notice-board-wall-drag-handle,
.notice-board-wall-item:focus-within .notice-board-wall-drag-handle,
.notice-board-wall-item:hover .notice-board-widget-gear,
.notice-board-wall-item:focus-within .notice-board-widget-gear {
    opacity: 0.5;
}

/* Website widget: light move/settings icons over a dark header; dark again on settings. */
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header):not(.is-library-settings-open) .notice-board-wall-drag-handle,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header):not(.is-library-settings-open) .notice-board-widget-gear {
    color: #f4f1ea;
    opacity: 0.82;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5));
}

.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header):not(.is-library-settings-open):hover .notice-board-wall-drag-handle,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header):not(.is-library-settings-open):focus-within .notice-board-wall-drag-handle,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header):not(.is-library-settings-open):hover .notice-board-widget-gear,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header):not(.is-library-settings-open):focus-within .notice-board-widget-gear {
    opacity: 0.98;
}

.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header).is-library-settings-open .notice-board-wall-drag-handle,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header).is-library-settings-open .notice-board-widget-gear {
    color: #52463a;
    filter: none;
    opacity: 0.5;
}

.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header).is-library-settings-open:hover .notice-board-wall-drag-handle,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header).is-library-settings-open:focus-within .notice-board-wall-drag-handle,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header).is-library-settings-open:hover .notice-board-widget-gear,
.notice-board-wall-item:has(.notice-board-widget-head-website.is-dark-header).is-library-settings-open:focus-within .notice-board-widget-gear {
    opacity: 0.72;
}

.notice-board-wall-drag-handle:hover,
.notice-board-wall-drag-handle:focus-visible {
    opacity: 0.5;
}

.notice-board-wall-drag-handle:active,
.notice-board-wall-item.is-nb-dragging .notice-board-wall-drag-handle {
    cursor: grabbing;
    opacity: 0.85;
    background: rgba(82, 70, 58, 0.1);
    transform: scale(0.94);
}

/* Drag-and-drop: reorder-only. The dragged tile follows the pointer via a
   transform while everything else stays put; on drop it is spliced into the
   DOM at the indicated position and the dense-pack engine snaps every tile
   (including the dropped one) back onto the grid with its normal size. */
.notice-board-wall-item.is-nb-dragging {
    z-index: 20;
    cursor: grabbing;
    pointer-events: none;
    transition: none;
    box-shadow: 0 22px 44px rgba(24, 20, 16, 0.28);
}

.notice-board-wall-item.is-nb-dragging .notice-board-wall-drag-handle {
    opacity: 0.85;
}

.notice-board-wall-item.is-nb-drop-settled {
    animation: nbDropSettle 0.22s ease;
}

@keyframes nbDropSettle {
    0% {
        transform: scale(0.96);
    }
    100% {
        transform: scale(1);
    }
}

.notice-board-wall-item.is-nb-drop-before,
.notice-board-wall-item.is-nb-drop-after {
    position: relative;
}

.notice-board-wall-item.is-nb-drop-before::before,
.notice-board-wall-item.is-nb-drop-after::before {
    content: '';
    position: absolute;
    z-index: 15;
    background: #2f2924;
    border-radius: 999px;
    pointer-events: none;
}

.notice-board-wall-item.is-nb-drop-before.is-nb-drop-vertical::before,
.notice-board-wall-item.is-nb-drop-after.is-nb-drop-vertical::before {
    top: -6px;
    bottom: -6px;
    width: 4px;
}

.notice-board-wall-item.is-nb-drop-before.is-nb-drop-vertical::before {
    left: -6px;
}

.notice-board-wall-item.is-nb-drop-after.is-nb-drop-vertical::before {
    right: -6px;
}

.notice-board-wall-item.is-nb-drop-before.is-nb-drop-horizontal::before,
.notice-board-wall-item.is-nb-drop-after.is-nb-drop-horizontal::before {
    left: -6px;
    right: -6px;
    height: 4px;
}

.notice-board-wall-item.is-nb-drop-before.is-nb-drop-horizontal::before {
    top: -6px;
}

.notice-board-wall-item.is-nb-drop-after.is-nb-drop-horizontal::before {
    bottom: -6px;
}

body.is-nb-dragging-active {
    cursor: grabbing;
}

body.is-nb-dragging-active .notice-board-wall-item:not(.is-nb-dragging) {
    transition: box-shadow 0.15s ease;
}

@media (max-width: 720px) {
    .notice-board-wall-item-controls {
        top: 4px;
        right: 4px;
        gap: 3px;
    }

    .notice-board-wall-drag-handle,
    .notice-board-widget-gear {
        width: 22px;
        height: 22px;
    }

    .notice-board-wall-drag-handle svg,
    .notice-board-widget-gear svg {
        width: 13px;
        height: 13px;
    }
}

.notice-board-wall-item-inner,
.notice-board-wall-item > .notice-board-tile-poster,
.notice-board-wall-item > .notice-board-tile-fallback,
.notice-board-wall-item > .notice-board-tile-video-widget,
.notice-board-wall-item > .notice-board-wall-item-inner {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    max-width: none;
    border-radius: var(--notice-board-poster-radius, 18px);
    overflow: hidden;
}

/* Events/products/bundles must fill the packed cell like widgets — not fixed px tile widths */
.notice-board-wall-item .notice-board-tile-poster,
.notice-board-wall-item .notice-board-tile-fallback,
.notice-board-wall-item .notice-board-tile-video-widget,
.notice-board-wall-item .notice-board-tile-invitation,
.notice-board-wall-item .notice-board-widget-card {
    flex: 1 1 auto;
    width: 100% !important;
    max-width: none !important;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.notice-board-wall-item .notice-board-poster-frame,
.notice-board-wall-item .notice-board-tile-fallback,
.notice-board-wall-item .notice-board-video-widget-shell,
.notice-board-wall-item .notice-board-video-widget-preview {
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-height: 0;
    aspect-ratio: auto;
}

.notice-board-wall-item[data-nb-item-type='widget'] .notice-board-wall-item-inner,
.notice-board-wall-item[data-nb-item-type='widget'] .notice-board-widget-card {
    width: 100%;
    height: 100%;
    min-height: 0;
}

/* Tablet portrait / mid widths: 8 fine columns → large cards (span 4) sit 2 across.
   Phone ≤720 keeps 4 columns; landscape/desktop keeps 16 (4 large across). */
@media (min-width: 721px) and (max-width: 980px) {
    .notice-board-widgets-wall {
        --nb-grid-columns: 8;
    }
}

@media (max-width: 720px) {
    .notice-board-widgets-wall {
        --nb-grid-columns: 4;
    }
}

/* ─── Widget Card + Flat Settings Swap ─────────────────────────────────
   Personal widgets use a flat front/back swap (not 3D rotate). Native
   <select> and other form controls break inside preserve-3d / rotateY flips.
   Membership/product Library cards keep their own 3D rules in library.css. */

.notice-board-widget-card {
    position: relative;
    width: 100%;
    height: 100%;
    perspective: none;
}

.notice-board-widget-flip {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 100%;
    transform: none;
    transform-style: flat;
    transition: none;
}

.notice-board-widget-flip.is-flipped {
    transform: none;
}

.notice-board-widget-face {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    transform: none;
    backface-visibility: visible;
    -webkit-backface-visibility: visible;
    border-radius: var(--notice-board-poster-radius, 18px);
    border: 1px solid rgba(82, 70, 58, 0.12);
    background:
        radial-gradient(circle at top right, rgba(218, 206, 187, 0.2), transparent 42%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.97), rgba(247, 242, 235, 0.95));
    box-shadow: 0 16px 36px rgba(47, 41, 36, 0.08);
    overflow: hidden;
    container-type: inline-size;
    container-name: notice-board-widget;
}

.notice-board-widget-face-front {
    z-index: 1;
}

.notice-board-widget-face-back {
    z-index: 2;
    display: none;
    transform: none;
}

.notice-board-widget-flip.is-flipped .notice-board-widget-face-front {
    display: none;
    pointer-events: none;
}

.notice-board-widget-flip.is-flipped .notice-board-widget-face-back {
    display: flex;
    pointer-events: auto;
}

.notice-board-widget-settings select,
.notice-board-widget-settings [data-nb-size-field],
.notice-board-widget-settings input,
.notice-board-widget-settings button {
    pointer-events: auto;
    position: relative;
    z-index: 3;
}

.notice-board-widget-head {
    padding: 10px 14px 0;
    color: #6f645c;
    font-size: 0.68rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.notice-board-widget-title {
    font-weight: 600;
}

.notice-board-widget-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding: 8px 14px 14px;
    color: #2f2924;
    overflow-y: auto;
}

.notice-board-widget-gear {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #52463a;
    opacity: 0.14;
    cursor: pointer;
    transition: opacity 0.15s ease, background 0.15s ease, transform 0.15s ease;
}

.notice-board-widget-gear svg {
    width: 16px;
    height: 16px;
}

.notice-board-widget-gear:hover,
.notice-board-widget-gear:focus-visible {
    opacity: 0.5;
}

.notice-board-widget-gear:active {
    opacity: 0.85;
    background: rgba(82, 70, 58, 0.1);
    transform: scale(0.94);
}

.notice-board-widget-settings {
    display: flex;
    flex-direction: column;
    gap: 8px;
    height: 100%;
    padding: 12px 14px 14px;
    overflow-y: auto;
}

.notice-board-widget-settings-head {
    font-family: "Newsreader", serif;
    font-size: 1rem;
    font-weight: 600;
    color: #2f2924;
}

.notice-board-widget-field {
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 0.74rem;
    color: #5f564f;
}

.notice-board-widget-field select,
.notice-board-widget-field input[type="number"],
.notice-board-widget-field input[type="text"],
.notice-board-widget-field input[type="url"] {
    padding: 6px 8px;
    border: 1px solid rgba(82, 70, 58, 0.22);
    border-radius: 8px;
    background: #fff;
    color: #2f2924;
    font-size: 0.82rem;
}

.notice-board-widget-field-inline {
    flex-direction: row;
    align-items: center;
    gap: 6px;
}

.notice-board-widget-settings-actions {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.notice-board-widget-delete {
    border: 0;
    background: transparent;
    color: #9a4a3f;
    font-size: 0.74rem;
    text-decoration: underline;
    cursor: pointer;
    padding: 4px 0;
}

.notice-board-widget-save {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 0;
    border-radius: 50%;
    background: #2f2924;
    color: #fff;
    cursor: pointer;
    transition: transform 0.15s ease, background 0.15s ease;
}

.notice-board-widget-save svg {
    width: 17px;
    height: 17px;
}

.notice-board-widget-save:hover {
    background: #4a4038;
    transform: scale(1.05);
}

/* ─── Widget content variants ────────────────────────────────────────── */

.notice-board-widget-notes-editor {
    flex: 1;
    min-height: 40px;
    outline: none;
    font-size: 0.86rem;
    line-height: 1.55;
    color: #3a332c;
    cursor: text;
}

.notice-board-widget-notes-editor:empty::before {
    content: attr(data-placeholder);
    color: #a89d8f;
}

.notice-board-widget-notes-editor p {
    margin: 0 0 0.6em;
}

.notice-board-widget-notes-editor ul,
.notice-board-widget-notes-editor ol {
    margin: 0 0 0.6em;
    padding-left: 1.2em;
}

.notice-board-selection-toolbar {
    position: fixed;
    z-index: 1200;
    display: flex;
    gap: 4px;
    align-items: center;
    padding: 6px 8px;
    border: 1px solid rgba(94, 78, 61, 0.16);
    border-radius: 14px;
    background: rgba(249, 245, 238, 0.98);
    box-shadow: 0 16px 30px rgba(70, 56, 42, 0.2);
    opacity: 0;
    pointer-events: none;
    transform: translateY(6px);
    transition: opacity 140ms ease, transform 140ms ease;
}

.notice-board-selection-toolbar.is-visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.notice-board-toolbar-button {
    min-width: 28px;
    min-height: 28px;
    padding: 0 8px;
    border: 1px solid rgba(94, 78, 61, 0.16);
    border-radius: 10px;
    background: transparent;
    color: #554d47;
    font-size: 0.8rem;
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease;
}

.notice-board-toolbar-button:hover {
    background: rgba(214, 175, 108, 0.12);
}

.notice-board-toolbar-button.is-active {
    border-color: rgba(173, 136, 77, 0.4);
    background: rgba(214, 175, 108, 0.18);
    color: #2f2924;
}

.notice-board-widget-eyebrow {
    color: #6f645c;
    font-size: 0.64rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 4px;
}

.notice-board-widget-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.notice-board-widget-list-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    font-size: 0.8rem;
}

.notice-board-widget-list-title {
    color: #2f2924;
}

.notice-board-widget-list-meta {
    flex: 0 0 auto;
    color: #8c8074;
    font-size: 0.7rem;
    white-space: nowrap;
}

.notice-board-widget-empty {
    color: #a89d8f;
    font-size: 0.78rem;
    font-style: italic;
}

.notice-board-widget-todo-check {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
}

.notice-board-widget-todo-row.is-completed .notice-board-widget-list-title {
    color: #a89d8f;
    text-decoration: line-through;
}

.notice-board-widget-clock,
.notice-board-widget-date,
.notice-board-widget-zodiac {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 6px;
}

.notice-board-widget-clock::before {
    content: '';
    width: 26px;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(82, 70, 58, 0.32), transparent);
    margin-bottom: 2px;
}

.notice-board-widget-clock-time {
    font-family: "Newsreader", serif;
    font-variant-numeric: tabular-nums;
    font-size: clamp(1.5rem, 9cqw, 2.5rem);
    font-weight: 500;
    letter-spacing: 0.01em;
    color: #2f2924;
    line-height: 1;
}

.notice-board-widget-clock-zone {
    font-size: 0.64rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #8c8074;
}

.notice-board-widget-date-weekday {
    font-size: 0.72rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: #a3865a;
    font-weight: 600;
}

.notice-board-widget-date-full {
    font-family: "Newsreader", serif;
    font-size: clamp(1.15rem, 6.5cqw, 1.7rem);
    font-weight: 500;
    color: #2f2924;
    line-height: 1.15;
}

.notice-board-widget-zodiac-symbol {
    font-size: clamp(1.8rem, 10cqw, 2.6rem);
    line-height: 1;
    color: #a3865a;
}

.notice-board-widget-zodiac-label {
    font-family: "Newsreader", serif;
    font-size: clamp(0.9rem, 5cqw, 1.15rem);
    font-weight: 500;
    color: #2f2924;
}

.notice-board-widget-body-website {
    padding: 0;
    overflow: hidden;
}

.notice-board-widget-body-website > .notice-board-widget-empty {
    padding: 12px 14px;
}

.notice-board-widget-head.notice-board-widget-head-website {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    padding: 4px 34px 4px 10px;
    background-color: var(--nb-website-header-bg, #111111);
    color: var(--nb-website-header-ink, #f4f1ea);
    border-bottom: 1px solid rgba(127, 127, 127, 0.18);
}

.notice-board-widget-website-head-row {
    display: grid;
    grid-template-columns: minmax(18px, 1fr) auto minmax(18px, 1fr);
    align-items: center;
    gap: 8px;
    width: 100%;
    min-width: 0;
}

.notice-board-widget-head.notice-board-widget-head-website .notice-board-widget-title {
    grid-column: 2;
    justify-self: center;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--nb-website-header-ink, #f4f1ea);
    font-size: 0.62rem;
    letter-spacing: 0.08em;
    text-align: center;
}

.notice-board-widget-head.notice-board-widget-head-website .notice-board-widget-title.is-empty {
    visibility: hidden;
    width: 0;
    max-width: 0;
}

.notice-board-widget-website-actions {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
}

.notice-board-widget-website-actions-start {
    grid-column: 1;
    justify-self: end;
}

.notice-board-widget-website-actions-end {
    grid-column: 3;
    justify-self: start;
}

.notice-board-widget-website-open,
.notice-board-widget-website-refresh {
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--nb-website-header-ink, #f4f1ea);
    text-decoration: none;
    cursor: pointer;
    padding: 0;
    opacity: 0.92;
    line-height: 0;
}

.notice-board-widget-website-open svg,
.notice-board-widget-website-refresh svg {
    width: 13px;
    height: 13px;
    display: block;
    stroke: currentColor;
    color: inherit;
}

.notice-board-widget-head-website.is-dark-header .notice-board-widget-website-open,
.notice-board-widget-head-website.is-dark-header .notice-board-widget-website-refresh,
.notice-board-widget-head-website.is-dark-header .notice-board-widget-title {
    color: #f4f1ea;
}

.notice-board-widget-head-website.is-light-header .notice-board-widget-website-open,
.notice-board-widget-head-website.is-light-header .notice-board-widget-website-refresh,
.notice-board-widget-head-website.is-light-header .notice-board-widget-title {
    color: #2f2924;
}

.notice-board-widget-website-open:hover,
.notice-board-widget-website-refresh:hover,
.notice-board-widget-website-open:focus-visible,
.notice-board-widget-website-refresh:focus-visible {
    opacity: 1;
    background: rgba(127, 127, 127, 0.18);
}

.notice-board-widget-head-website.is-dark-header .notice-board-widget-website-open:hover,
.notice-board-widget-head-website.is-dark-header .notice-board-widget-website-refresh:hover,
.notice-board-widget-head-website.is-dark-header .notice-board-widget-website-open:focus-visible,
.notice-board-widget-head-website.is-dark-header .notice-board-widget-website-refresh:focus-visible {
    background: rgba(255, 255, 255, 0.14);
}

.notice-board-widget-website {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    height: 100%;
}

.notice-board-widget-website-frame {
    flex: 1;
    width: 100%;
    min-height: 0;
    border: 0;
    background: #111;
}

.notice-board-widget-field-color {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.notice-board-widget-field-color input[type="color"] {
    width: 42px;
    height: 28px;
    padding: 0;
    border: 1px solid rgba(82, 70, 58, 0.22);
    border-radius: 8px;
    background: #fff;
    cursor: pointer;
}

.notice-board-widget-field-hint {
    margin: -2px 0 0;
    font-size: 0.66rem;
    line-height: 1.35;
    color: #8a7f76;
}

.notice-board-save-toast {
    position: fixed;
    left: 50%;
    bottom: 28px;
    transform: translate(-50%, 12px);
    z-index: 500;
    padding: 8px 16px;
    border-radius: 999px;
    background: #2f2924;
    color: #f7f2eb;
    font-size: 0.76rem;
    letter-spacing: 0.02em;
    box-shadow: 0 12px 28px rgba(47, 41, 36, 0.22);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.notice-board-save-toast.is-visible {
    opacity: 1;
    transform: translate(-50%, 0);
}

.notice-board-save-toast.is-error {
    background: #7a3226;
}

.notice-board-save-toast.is-saved {
    background: #3c5a3f;
}

/* ─── Add Widget Dock ─────────────────────────────────────────────────── */

body[data-active-section='notice_board'] .app-content,
body[data-active-section='purchases'] .app-content {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: auto;
}

body[data-active-section='notice_board'][data-nav-mode='attached'] .app-content,
body[data-active-section='purchases'][data-nav-mode='attached'] .app-content {
    min-height: 0;
    max-height: 100%;
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
}

body[data-active-section='notice_board'] .app-content-body,
body[data-active-section='purchases'] .app-content-body {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
}

body[data-active-section='notice_board'] .app-content-body > main.notice-board-shell,
body[data-active-section='purchases'] .app-content-body > main.notice-board-shell,
body[data-active-section='profile'] .app-content-body > main.notice-board-shell {
    flex: 0 1 auto;
    min-height: 0;
}

body[data-active-section='notice_board'] .notice-board-shell,
body[data-active-section='purchases'] .notice-board-shell,
body[data-active-section='profile'] .notice-board-shell {
    min-height: 0;
}

body[data-active-section='notice_board'] .site-footer-public,
body[data-active-section='purchases'] .site-footer-public {
    display: none !important;
}

body:not([data-active-section='notice_board']):not([data-active-section='purchases']):not([data-active-section='profile']):not([data-active-section='company_overview']):not([data-active-section='company_public']) .notice-board-add-dock {
    display: none !important;
}

.notice-board-add-dock[hidden] {
    display: none !important;
}

.notice-board-add-dock {
    position: fixed;
    bottom: max(20px, env(safe-area-inset-bottom, 0px));
    left: 50%;
    z-index: 3800;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: fit-content;
    max-width: min(94vw, 920px);
    transform: translateX(-50%);
    pointer-events: auto;
}

.notice-board-add-dock-toggle {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border: 0;
    border-radius: 50%;
    background: #2f2924;
    color: #fff;
    box-shadow: 0 14px 32px rgba(47, 41, 36, 0.28);
    cursor: pointer;
    transition: transform 0.2s ease, background 0.2s ease;
}

.notice-board-add-dock-toggle svg {
    width: 22px;
    height: 22px;
    transition: transform 0.2s ease;
}

.notice-board-add-dock.is-open .notice-board-add-dock-toggle svg {
    transform: rotate(45deg);
}

.notice-board-add-dock-toggle:hover {
    background: #4a4038;
    transform: scale(1.05);
}

.notice-board-add-dock-row {
    display: none;
    align-items: stretch;
    gap: 10px;
    max-width: 100%;
    padding: 10px;
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.96);
    box-shadow: 0 14px 32px rgba(47, 41, 36, 0.18);
    overflow-x: auto;
    scrollbar-width: thin;
}

.notice-board-add-dock.is-open .notice-board-add-dock-row {
    display: flex;
}

.notice-board-add-dock-card {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    width: 84px;
    padding: 10px 8px;
    border: 1px solid rgba(82, 70, 58, 0.14);
    border-radius: 14px;
    background: #fff;
    color: #3a332c;
    font-size: 0.68rem;
    text-align: center;
    cursor: pointer;
    transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.notice-board-add-dock-card:hover {
    transform: translateY(-2px);
    border-color: rgba(82, 70, 58, 0.32);
    box-shadow: 0 10px 20px rgba(47, 41, 36, 0.12);
}

.notice-board-add-dock-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: rgba(88, 75, 63, 0.08);
    color: #52463a;
}

.notice-board-add-dock-icon svg {
    width: 17px;
    height: 17px;
}

.notice-board-add-dock-label {
    line-height: 1.2;
}

/* Planner Todo widget embed: full list UI, scroll inside the tile */
.notice-board-widget-body-todo,
.notice-board-widget-body[data-nb-widget-type="todo_list"] {
    padding: 0;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.notice-board-widget-todo-planner {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
}

.notice-board-widget-todo-planner > .planner-list-card {
    margin: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    background: transparent;
    min-height: 0;
}

.planner-shell--embed > .planner-reminder-dialog {
    position: fixed;
    inset: 0;
    z-index: 80;
}

@media (max-width: 720px) {
    .notice-board-add-dock-card {
        width: 72px;
    }
}


.notice-board-blog-widget-excerpt {
    margin: 0.35rem 0 0.55rem;
    font-size: 0.86rem;
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.9);
}

.notice-board-blog-widget-list {
    list-style: none;
    margin: 0 0 0.75rem;
    padding: 0;
    display: grid;
    gap: 0.28rem;
}

.notice-board-blog-widget-list li {
    font-size: 0.78rem;
    line-height: 1.3;
    opacity: 0.92;
}

.notice-board-blog-widget-list li.is-locked {
    opacity: 0.65;
}

.notice-board-widget-countdown {
    display: grid;
    gap: 0.45rem;
    align-content: start;
}

.notice-board-timed-discount {
    display: grid;
    gap: 0.2rem;
    justify-items: start;
    max-width: 100%;
}

.notice-board-timed-discount-stage {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    width: max-content;
    max-width: calc(100% - 1.5rem);
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.notice-board-timed-discount-stage .notice-board-timed-discount {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    max-width: 100%;
}

.notice-board-timed-discount-list,
.notice-board-timed-discount-offer {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.25;
    color: rgba(247, 241, 232, 0.92);
}

.notice-board-timed-discount-list {
    color: rgba(247, 241, 232, 0.62);
}

.notice-board-timed-discount-stage .notice-board-timed-discount-list {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    margin-top: 0;
    padding: 0.38rem 0.78rem;
    border-radius: 999px;
    font-size: 0.9rem;
    font-weight: 600;
    line-height: 1.1;
    color: rgba(247, 241, 232, 0.88);
    background: rgba(255, 255, 255, 0.22);
    border: 1px solid rgba(255, 255, 255, 0.3);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.28);
    white-space: nowrap;
}

.notice-board-timed-discount-stage .notice-board-timed-discount-offer {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    padding: 0.42rem 0.85rem;
    border-radius: 999px;
    background: #111;
    color: #f7f1e8;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: -0.01em;
    white-space: nowrap;
    box-shadow:
        0 1px 2px rgba(0, 0, 0, 0.28),
        inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.notice-board-timed-discount-timer {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin-top: 0.15rem;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.18);
    border: 1px solid rgba(255, 255, 255, 0.22);
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
    color: #f7f1e8;
}

.notice-board-timed-discount-stage .notice-board-timed-discount-timer {
    flex: 0 0 auto;
    margin-top: 0;
    padding: 0.38rem 0.78rem;
    font-size: 0.9rem;
    font-weight: 600;
    background: rgba(255, 255, 255, 0.22);
    border: 1px solid rgba(255, 255, 255, 0.3);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.28);
    white-space: nowrap;
}

.notice-board-tile-body .notice-board-timed-discount {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.35rem;
}

.notice-board-tile-body .notice-board-timed-discount-list,
.notice-board-tile-body .notice-board-timed-discount-offer {
    color: rgba(61, 48, 35, 0.88);
}

.notice-board-tile-body .notice-board-timed-discount-offer {
    display: inline-flex;
    align-items: center;
    padding: 0.32rem 0.7rem;
    border-radius: 999px;
    background: #1f1812;
    color: #f7f1e8;
    font-weight: 700;
}

.notice-board-tile-body .notice-board-timed-discount-list {
    color: rgba(61, 48, 35, 0.55);
}

.notice-board-tile-body .notice-board-timed-discount-timer {
    margin-top: 0;
    background: rgba(255, 255, 255, 0.55);
    border-color: rgba(120, 96, 75, 0.18);
    color: #3d3023;
}

.notice-board-widget-countdown-list {
    margin: 0;
    color: rgba(61, 48, 35, 0.55);
    font-size: 0.9rem;
}

.notice-board-widget-countdown-timer {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: 0.25rem 0.65rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.55);
    border: 1px solid rgba(120, 96, 75, 0.18);
    font-size: 0.85rem;
    font-variant-numeric: tabular-nums;
}

.notice-board-widget-countdown-cta {
    margin-top: 0.25rem;
    justify-self: start;
    border: 0;
    border-radius: 999px;
    background: #3d3023;
    color: #f7f1e8;
    padding: 0.55rem 0.95rem;
    font: inherit;
    cursor: pointer;
}

.notice-board-widget-countdown.is-expired .notice-board-widget-countdown-cta {
    opacity: 0.45;
    pointer-events: none;
}

/* Journey status widget */
.notice-board-widget-journey-status {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    height: 100%;
    min-height: 0;
    justify-content: center;
}

.notice-board-widget-journey-status-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    min-width: 0;
}

.notice-board-widget-journey-status-copy {
    min-width: 0;
    flex: 1;
}

.notice-board-widget-journey-status-title {
    display: block;
    font-family: "Newsreader", serif;
    font-size: clamp(0.95rem, 4.2cqw, 1.2rem);
    font-weight: 560;
    color: #2f2924;
    line-height: 1.2;
}

.notice-board-widget-journey-status-goal,
.notice-board-widget-journey-status-meta {
    margin: 0.2rem 0 0;
    font-size: 0.78rem;
    line-height: 1.3;
    color: rgba(47, 41, 36, 0.72);
}

.notice-board-widget-journey-status-meter {
    position: relative;
    width: 52px;
    height: 52px;
    flex: 0 0 auto;
}

.notice-board-widget-journey-status-meter-arc {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid rgba(82, 70, 58, 0.18);
    background:
        conic-gradient(from 210deg, rgba(180, 70, 50, 0.18) 0deg 120deg, transparent 120deg),
        radial-gradient(circle at 50% 50%, transparent 58%, rgba(82, 70, 58, 0.06) 59%);
}

.notice-board-widget-journey-status-meter-needle {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 2px;
    height: 18px;
    margin-left: -1px;
    margin-top: -18px;
    border-radius: 2px;
    background: #3d3023;
    transform-origin: 50% 100%;
    transform: rotate(var(--journey-meter-deg, 0deg));
}

.notice-board-widget-journey-status-meter-hub {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 7px;
    height: 7px;
    margin: -3.5px 0 0 -3.5px;
    border-radius: 50%;
    background: #3d3023;
}

.notice-board-widget-journey-status-badge-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.notice-board-widget-journey-status-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    border: 1px solid transparent;
}

.notice-board-widget-journey-status-badge.is-good {
    background: rgba(62, 122, 74, 0.14);
    color: #2f6b3a;
    border-color: rgba(62, 122, 74, 0.28);
}

.notice-board-widget-journey-status-badge.is-medium {
    background: rgba(176, 126, 42, 0.14);
    color: #8a5e12;
    border-color: rgba(176, 126, 42, 0.28);
}

.notice-board-widget-journey-status-badge.is-low {
    background: rgba(168, 68, 52, 0.14);
    color: #8f3a2c;
    border-color: rgba(168, 68, 52, 0.28);
}

.notice-board-widget-journey-status-pct {
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
    color: rgba(47, 41, 36, 0.7);
}

.notice-board-widget-journey-status-goals {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.28rem;
    min-height: 0;
    overflow: auto;
}

.notice-board-widget-journey-status-goal-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    font-size: 0.78rem;
    color: rgba(47, 41, 36, 0.82);
}

.notice-board-widget-journey-status-goal-row.is-met .notice-board-widget-journey-status-goal-count {
    color: #2f6b3a;
}

.notice-board-widget-journey-status-goal-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.notice-board-widget-journey-status-goal-count {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

/* Instagram strip widget + in-app modal viewer */
.notice-board-widget-body-instagram {
    padding: 0;
    overflow: hidden;
}

.notice-board-widget-instagram {
    height: 100%;
    min-height: 0;
    display: flex;
    align-items: stretch;
}

.notice-board-widget-instagram-strip {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.45rem;
    align-items: stretch;
    width: 100%;
    height: 100%;
    overflow: hidden;
    padding: 0.45rem;
    box-sizing: border-box;
}

.notice-board-widget-instagram-thumb {
    position: relative;
    flex: 0 0 auto;
    height: 100%;
    aspect-ratio: 1 / 1;
    border: 0;
    padding: 0;
    border-radius: 0.85rem;
    overflow: hidden;
    background: rgba(61, 48, 35, 0.08);
    cursor: pointer;
}

.notice-board-widget-instagram-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.notice-board-widget-instagram-play {
    position: absolute;
    inset: 0;
    margin: auto;
    width: 1.65rem;
    height: 1.65rem;
    border-radius: 999px;
    background: rgba(20, 16, 12, 0.55);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35);
}

.notice-board-widget-instagram-play::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 54%;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0.35rem 0 0.35rem 0.55rem;
    border-color: transparent transparent transparent #f7f1e8;
    transform: translate(-50%, -50%);
}

.notice-board-widget-instagram-connect {
    display: grid;
    place-content: center;
    gap: 0.55rem;
    width: 100%;
    padding: 1rem;
    text-align: center;
}

.notice-board-widget-instagram-connect-btn,
.notice-board-widget-instagram-disconnect-btn {
    border: 0;
    border-radius: 999px;
    background: #3d3023;
    color: #f7f1e8;
    padding: 0.6rem 1rem;
    font: inherit;
    cursor: pointer;
}

.notice-board-widget-instagram-disconnect-btn {
    background: transparent;
    color: #3d3023;
    border: 1px solid rgba(61, 48, 35, 0.28);
}

.notice-board-instagram-modal {
    position: fixed;
    inset: 0;
    z-index: 12000;
    display: grid;
    place-items: center;
    padding: 1.25rem;
}

.notice-board-instagram-modal[hidden] {
    display: none !important;
}

.notice-board-instagram-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(18, 14, 10, 0.72);
}

.notice-board-instagram-modal-dialog {
    position: relative;
    z-index: 1;
    width: min(920px, 100%);
    max-height: min(90vh, 920px);
    display: grid;
    grid-template-rows: 1fr auto;
    gap: 0.75rem;
    padding: 1rem;
    border-radius: 1.25rem;
    background: #17130f;
    color: #f7f1e8;
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
}

.notice-board-instagram-modal-stage {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 0;
    max-height: min(72vh, 720px);
    overflow: hidden;
    border-radius: 0.85rem;
    background: #0d0b09;
}

.notice-board-instagram-modal-media {
    display: block;
    max-width: 100%;
    max-height: min(72vh, 720px);
    width: auto;
    height: auto;
    object-fit: contain;
}

.notice-board-instagram-modal-close {
    position: absolute;
    top: 0.55rem;
    right: 0.7rem;
    z-index: 2;
    border: 0;
    background: transparent;
    color: #f7f1e8;
    font-size: 1.8rem;
    line-height: 1;
    cursor: pointer;
}

.notice-board-instagram-modal-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    width: 2.4rem;
    height: 2.4rem;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    color: #f7f1e8;
    font-size: 1.6rem;
    line-height: 1;
    cursor: pointer;
}

.notice-board-instagram-modal-nav.is-prev {
    left: 0.7rem;
}

.notice-board-instagram-modal-nav.is-next {
    right: 0.7rem;
}

.notice-board-instagram-modal-footer {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 0 0.25rem 0.15rem;
}

.notice-board-instagram-modal-caption {
    margin: 0;
    flex: 1;
    font-size: 0.92rem;
    line-height: 1.35;
    opacity: 0.9;
    max-height: 4.2em;
    overflow: hidden;
}

.notice-board-instagram-modal-external {
    flex: 0 0 auto;
    color: #f7f1e8;
    font-size: 0.85rem;
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

body.is-instagram-modal-open {
    overflow: hidden;
}

/* Latest mentions widget */
.notice-board-widget-body-mentions {
    display: grid;
    gap: 0.7rem;
    padding: 0.75rem;
    height: 100%;
    box-sizing: border-box;
}

.notice-board-widget-mentions-card {
    display: grid;
    grid-template-columns: 4.5rem 1fr;
    gap: 0.7rem;
    align-items: center;
    text-decoration: none;
    color: inherit;
    min-height: 4.5rem;
}

.notice-board-widget-mentions-thumb {
    width: 4.5rem;
    height: 4.5rem;
    border-radius: 0.85rem;
    background-size: cover;
    background-position: center;
    background-color: rgba(0, 0, 0, 0.08);
}

.notice-board-widget-mentions-thumb.is-empty {
    background: linear-gradient(145deg, rgba(0, 0, 0, 0.08), rgba(0, 0, 0, 0.16));
}

.notice-board-widget-mentions-copy {
    display: grid;
    gap: 0.15rem;
    min-width: 0;
}

.notice-board-widget-mentions-pill {
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 700;
    opacity: 0.7;
}

.notice-board-widget-mentions-when,
.notice-board-widget-mentions-stats,
.notice-board-widget-mentions-empty,
.notice-board-widget-mentions-ratings-label {
    font-size: 0.82rem;
    opacity: 0.78;
}

.notice-board-widget-mentions-ratings {
    display: grid;
    gap: 0.45rem;
    border-top: 1px solid rgba(0, 0, 0, 0.08);
    padding-top: 0.55rem;
}

.notice-board-widget-mentions-review {
    display: grid;
    gap: 0.1rem;
    font-size: 0.84rem;
}

.notice-board-widget-mentions-review p {
    margin: 0;
    opacity: 0.85;
}

.notice-board-widget-body-people {
    min-height: 0;
    height: 100%;
}

.notice-board-widget-people {
    display: flex;
    align-items: stretch;
    gap: 0.35rem;
    height: 100%;
    min-height: 0;
    padding: 0.4rem 0.5rem 0.55rem;
    box-sizing: border-box;
}

.notice-board-widget-people-viewport {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
}

.notice-board-widget-people[data-layout='arrows'] .notice-board-widget-people-viewport {
    overflow-x: auto;
    scrollbar-width: none;
}

.notice-board-widget-people[data-layout='arrows'] .notice-board-widget-people-viewport::-webkit-scrollbar {
    display: none;
}

.notice-board-widget-people-strip {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0.7rem;
    width: max-content;
    height: 100%;
    will-change: transform;
}

.notice-board-widget-people[data-layout='wrap'] .notice-board-widget-people-viewport {
    overflow: auto;
}

.notice-board-widget-people[data-layout='wrap'] .notice-board-widget-people-strip {
    flex-wrap: wrap;
    width: 100%;
    height: auto;
}

.notice-board-widget-people-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 0.35rem;
    flex: 0 0 auto;
    min-width: 4.4rem;
    max-width: 6.4rem;
    text-decoration: none;
    color: inherit;
}

.notice-board-widget-people[data-portrait='sm'] .notice-board-widget-people-card {
    min-width: 3.4rem;
    max-width: 4.6rem;
}

.notice-board-widget-people[data-portrait='lg'] .notice-board-widget-people-card {
    min-width: 5.6rem;
    max-width: 7.4rem;
}

.notice-board-widget-people-photo {
    display: block;
    width: 3.6rem;
    height: 3.6rem;
    border-radius: 0.95rem;
    overflow: hidden;
    background: rgba(61, 48, 35, 0.08);
    box-shadow: inset 0 0 0 1px rgba(47, 41, 36, 0.08);
}

.notice-board-widget-people[data-portrait='sm'] .notice-board-widget-people-photo {
    width: 2.7rem;
    height: 2.7rem;
    border-radius: 0.75rem;
}

.notice-board-widget-people[data-portrait='lg'] .notice-board-widget-people-photo {
    width: 4.6rem;
    height: 4.6rem;
    border-radius: 1.1rem;
}

.notice-board-widget-people-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.notice-board-widget-people-photo.is-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.92rem;
    font-weight: 650;
    letter-spacing: 0.04em;
    color: rgba(47, 41, 36, 0.72);
}

.notice-board-widget-people-copy {
    display: grid;
    gap: 0.08rem;
    text-align: center;
    min-width: 0;
    width: 100%;
}

.notice-board-widget-people-copy strong {
    font-size: 0.78rem;
    font-weight: 650;
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.notice-board-widget-people-copy span {
    font-size: 0.68rem;
    line-height: 1.2;
    opacity: 0.68;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.notice-board-widget-people-arrow {
    flex: 0 0 auto;
    align-self: center;
    width: 1.7rem;
    height: 1.7rem;
    border: 0;
    padding: 0;
    border-radius: 999px;
    background: rgba(61, 48, 35, 0.08);
    color: inherit;
    cursor: pointer;
}

.notice-board-widget-people-arrow svg {
    display: block;
    width: 1rem;
    height: 1rem;
    margin: 0 auto;
}

.notice-board-widget-people-card:hover .notice-board-widget-people-photo {
    box-shadow: inset 0 0 0 1px rgba(47, 41, 36, 0.16);
}

.notice-board-widget-body-donations {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.55rem;
    height: 100%;
    min-height: 0;
    padding: 0.15rem 0.1rem 0.35rem;
}

.notice-board-widget-donations {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    min-width: 0;
}

.notice-board-widget-donations-total {
    font-size: clamp(1.45rem, 2.4vw, 2rem);
    font-weight: 650;
    letter-spacing: -0.03em;
    line-height: 1.05;
    color: inherit;
}

.notice-board-widget-donations-range {
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.35;
    opacity: 0.72;
}

.notice-board-widget-donations-donors {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
    margin-top: 0.15rem;
}

.notice-board-widget-donations-donor {
    display: inline-flex;
    width: 1.55rem;
    height: 1.55rem;
    border-radius: 999px;
    overflow: hidden;
    align-items: center;
    justify-content: center;
    background: rgba(47, 41, 36, 0.08);
    color: inherit;
    text-decoration: none;
    flex: 0 0 auto;
    box-shadow: inset 0 0 0 1px rgba(47, 41, 36, 0.1);
    transition: transform 160ms ease, box-shadow 160ms ease;
}

.notice-board-widget-donations-donor:hover {
    transform: translateY(-1px);
    box-shadow: inset 0 0 0 1px rgba(47, 41, 36, 0.2);
}

.notice-board-widget-donations-donor img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.notice-board-widget-donations-donor span {
    font-size: 0.68rem;
    font-weight: 650;
    line-height: 1;
}

.notice-board-widget-donations-date-fields {
    display: grid;
    gap: 0.55rem;
}

.notice-board-widget-places-panel {
    display: grid;
    gap: 0.45rem;
}

.notice-board-widget-places-search {
    width: 100%;
}

.notice-board-widget-places-results {
    display: grid;
    gap: 0.25rem;
    max-height: 9rem;
    overflow: auto;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 8px;
    padding: 0.35rem;
    background: #fff;
}

.notice-board-widget-places-result {
    display: block;
    width: 100%;
    text-align: left;
    border: 0;
    border-radius: 6px;
    padding: 0.4rem 0.5rem;
    background: transparent;
    cursor: pointer;
    font: inherit;
    color: inherit;
}

.notice-board-widget-places-result:hover,
.notice-board-widget-places-result:focus-visible {
    background: rgba(0, 0, 0, 0.05);
}

.notice-board-widget-places-selected {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.35rem;
}

.notice-board-widget-places-selected-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.35rem 0.5rem;
    border-radius: 8px;
    background: rgba(0, 0, 0, 0.04);
}

.notice-board-widget-places-remove {
    border: 0;
    background: transparent;
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    padding: 0 0.2rem;
    color: #6f645c;
}
