.ic-memory-timeline {
    --ic-memory-line: #b4b9c2;
    --ic-memory-accent: currentColor;
    --ic-memory-gap: 2.25rem;
    container-type: inline-size;
    container-name: ic-memory-timeline;
    margin-block: 1.5rem 2.5rem;
    overflow-wrap: anywhere;
}
.ic-memory-timeline .ic-memory-timeline-year-title {
    text-align: center; font-size: 1.75rem; font-weight: 700;
    margin: 0; padding-block: 1rem;
}
/* One shared line per year. Year headings make deliberate breaks, not cards. */
.ic-memory-timeline .ic-memory-timeline-year-body { position: relative; }
.ic-memory-timeline .ic-memory-timeline-year-body::before {
    content: ''; position: absolute; inset-block: 0; left: 50%;
    width: 2px; transform: translateX(-50%); background: var(--ic-memory-line);
}
.ic-memory-timeline .ic-memory-timeline-month { position: relative; padding-bottom: .5rem; }
.ic-memory-timeline .ic-memory-timeline-month-title {
    position: relative; margin: 0 0 0 50%; padding: 1rem 0 1.5rem var(--ic-memory-gap);
    font-size: 1.1rem; font-weight: 600;
}
.ic-memory-timeline .ic-memory-timeline-items { list-style: none; padding: 0; margin: 0; }
.ic-memory-timeline .ic-memory-timeline-item {
    position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 0; padding: 0 0 2rem; margin: 0;
    scroll-margin-top: var(--ic-memory-scroll-offset, 7rem);
}
.ic-memory-timeline .ic-memory-timeline-item::before {
    content: ''; position: absolute; left: 50%; top: .5rem; transform: translateX(-50%);
    width: .7rem; height: .7rem; border-radius: 50%; background: var(--ic-memory-accent);
}
.ic-memory-timeline .ic-memory-timeline-card { position: relative; min-width: 0; border: 0; }
.ic-memory-timeline .ic-memory-timeline-item-left .ic-memory-timeline-card { grid-column: 1; margin-right: var(--ic-memory-gap); }
.ic-memory-timeline .ic-memory-timeline-item-right .ic-memory-timeline-card { grid-column: 2; margin-left: var(--ic-memory-gap); }
.ic-memory-timeline .ic-memory-timeline-date { font-size: .9em; font-weight: 600; margin: 0 0 .6rem; }
.ic-memory-timeline .ic-memory-timeline-card .ic-memory-timeline-title { font-size: 1.25rem; line-height: 1.35; }
.ic-memory-timeline .ic-memory-timeline-incomplete-date { font-weight: normal; }
.ic-memory-timeline .ic-memory-timeline-title { margin-top: 0; margin-bottom: .5rem; }
.ic-memory-timeline .ic-memory-timeline-author { font-size: .9em; margin-bottom: 1rem; }
.ic-memory-timeline .ic-memory-timeline-summary { margin-bottom: 1rem; }
.ic-memory-timeline .ic-memory-timeline-badge { display: inline-block; font-size: .75rem; border: 1px solid currentColor; border-radius: 3px; padding: .1rem .5rem; margin-bottom: .75rem; }
.ic-memory-timeline .ic-memory-timeline-notice { border: 1px dashed currentColor; padding: 1rem; margin-bottom: 2rem; font-size: .9em; }
.ic-memory-timeline .ic-memory-timeline-body { max-width: none; }
.ic-memory-timeline .ic-memory-timeline-body p { white-space: pre-line; }
.ic-memory-timeline .ic-memory-timeline-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem; margin-top: 1rem; }
.ic-memory-timeline a:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
.ic-memory-timeline .ic-memory-timeline-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

.ic-memory-timeline .ic-memory-timeline-author { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .65rem; margin-block: .75rem; }
.ic-memory-timeline .ic-memory-timeline-author-identity { display: inline-flex; align-items: center; gap: .65rem; min-width: 0; }
.ic-memory-timeline .ic-memory-timeline-avatar { display: inline-flex; flex: 0 0 48px; width: 48px; height: 48px; overflow: hidden; border-radius: 50%; }
.ic-memory-timeline .ic-memory-timeline-avatar picture { display: block; width: 100%; height: 100%; }
.ic-memory-timeline .ic-memory-timeline-avatar img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; border-radius: 50%; }

.ic-memory-timeline [data-ic-memory-return][hidden] { display: none !important; }

/* Responsive to module width, including narrow columns in any theme. */
@container ic-memory-timeline (max-width: 42rem) {
    .ic-memory-timeline .ic-memory-timeline-year-body::before,
    .ic-memory-timeline .ic-memory-timeline-item::before { left: .5rem; }
    .ic-memory-timeline .ic-memory-timeline-month-title { margin-left: .5rem; }
    .ic-memory-timeline .ic-memory-timeline-item { grid-template-columns: minmax(0, 1fr); }
    .ic-memory-timeline .ic-memory-timeline-item-left .ic-memory-timeline-card,
    .ic-memory-timeline .ic-memory-timeline-item-right .ic-memory-timeline-card { grid-column: 1; margin-left: calc(.5rem + var(--ic-memory-gap)); margin-right: 0; }
}

.ic-memory-timeline .ic-memory-timeline-card .ic-memory-timeline-title { margin-bottom: .15rem; }
.ic-memory-timeline .ic-memory-timeline-card .ic-memory-timeline-date {
    margin: 0 0 .9rem; font-size: .85em; font-weight: normal; font-style: italic;
}
.ic-memory-timeline .ic-memory-timeline-read-more {
    display: inline-flex; flex-wrap: wrap; align-items: center; gap: .4rem .65rem;
}
.ic-memory-timeline .ic-memory-timeline-read-more-identity {
    display: inline-flex; align-items: center; gap: .65rem; min-width: 0; max-width: 100%;
}
.ic-memory-timeline .ic-memory-timeline-introduction {
    max-width: none; font-style: italic; margin-block: 1rem 1.5rem;
}

.ic-memory-timeline .ic-memory-timeline-detail .ic-memory-timeline-title { margin-bottom: .15rem; }
.ic-memory-timeline .ic-memory-timeline-detail .ic-memory-timeline-date {
    margin: 0 0 1.25rem; font-size: .85em; font-weight: normal; font-style: italic;
}
.ic-memory-timeline .ic-memory-timeline-detail .ic-memory-timeline-introduction {
    border-inline-start: 3px solid var(--ic-memory-line);
    padding: .5rem 0 .5rem 1rem; margin-block: 1.25rem 1.5rem;
}
.ic-memory-timeline .ic-memory-timeline-detail .ic-memory-timeline-author { margin-block: 1.5rem 1rem; }

/* Polaroids use the opposite grid cell; explicit rows prevent auto-placement
   from moving a left-hand picture below a right-hand text card. */
.ic-memory-timeline .ic-memory-timeline-card { grid-row: 1; }
.ic-memory-timeline .ic-memory-timeline-polaroid {
    display: block; grid-row: 1; align-self: start; box-sizing: border-box;
    width: calc(100% - var(--ic-memory-gap)); max-width: 24rem;
    margin-block: .5rem 1.5rem; padding: .65rem .65rem 1.1rem;
    border: 1px solid #e1e1e1; background: #fff; color: #27303f;
    box-shadow: 0 .3rem 1rem rgb(0 0 0 / 16%); text-decoration: none;
    rotate: var(--ic-polaroid-angle, 2deg);
    animation: ic-memory-polaroid-float var(--ic-polaroid-duration, 4s) ease-in-out var(--ic-polaroid-delay, -2s) infinite alternate;
    transition: transform .2s ease, box-shadow .2s ease;
}
.ic-memory-timeline .ic-memory-timeline-item-left .ic-memory-timeline-polaroid { grid-column: 2; margin-left: var(--ic-memory-gap); justify-self: start; }
.ic-memory-timeline .ic-memory-timeline-item-right .ic-memory-timeline-polaroid { grid-column: 1; margin-right: var(--ic-memory-gap); justify-self: end; --ic-polaroid-angle: -2deg; }
.ic-memory-timeline .ic-memory-timeline-polaroid:is(:hover, :focus-visible) { transform: translateY(-.2rem); animation-play-state: paused; box-shadow: 0 .65rem 1.4rem rgb(0 0 0 / 20%); }
.ic-memory-timeline .ic-memory-timeline-polaroid picture,
.ic-memory-timeline .ic-memory-timeline-image-link picture { display: block; }
.ic-memory-timeline .ic-memory-timeline-polaroid img,
.ic-memory-timeline .ic-memory-timeline-image-link img { display: block; width: 100%; height: auto; }
.ic-memory-timeline .ic-memory-timeline-polaroid-caption { display: block; margin-top: .8rem; text-align: center; font-size: .9em; line-height: 1.4; }
.ic-memory-timeline .ic-memory-timeline-image-link { display: block; }
.ic-memory-timeline .ic-memory-timeline-gallery { max-width: none; margin-block: 1.5rem; }
.ic-memory-timeline .ic-memory-timeline-gallery-items { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 1.5rem; list-style: none; margin: 0; padding: .5rem; }
.ic-memory-timeline .ic-memory-timeline-gallery-items > li { margin: 0; padding: 0; }
@container ic-memory-timeline (max-width: 42rem) {
    .ic-memory-timeline .ic-memory-timeline-item-left .ic-memory-timeline-polaroid,
    .ic-memory-timeline .ic-memory-timeline-item-right .ic-memory-timeline-polaroid {
        grid-column: 1; grid-row: 2; justify-self: start;
        margin-left: calc(.5rem + var(--ic-memory-gap)); margin-right: 0;
        width: calc(100% - .5rem - var(--ic-memory-gap));
    }
}

.ic-memory-timeline .ic-memory-timeline-gallery .ic-memory-timeline-polaroid {
    width: 100%; max-width: none; margin: .3rem 0; padding-bottom: 1.6rem;
}
@keyframes ic-memory-polaroid-float {
    from { translate: 0 0; }
    to { translate: 0 calc(0px - var(--ic-polaroid-distance, 12px)); }
}
/* Only the decorative layer extends outside the selected content host. */
.ic-memory-background-host { isolation: isolate; }
.ic-memory-background-positioned { position: relative; }
.ic-memory-timeline-backdrop { display: none; }
.ic-memory-background-host > .ic-memory-timeline-backdrop {
    display: block; position: absolute; top: 0; bottom: 0;
    z-index: 0; overflow: hidden;
    opacity: var(--ic-memory-backdrop-opacity, .3);
    pointer-events: none; user-select: none;
}
.ic-memory-timeline-backdrop-row { position: relative; height: var(--ic-memory-row-height, 160px); overflow: hidden; }
.ic-memory-timeline-backdrop-row::before {
    content: ''; position: absolute; inset-block: 0; left: -240px; right: -240px;
    background-image: var(--ic-memory-photo); background-repeat: repeat-x;
    background-position: 0 center; background-size: 240px auto;
    animation: ic-memory-backdrop-slide var(--ic-memory-row-duration, 30s) linear infinite;
}
.ic-memory-timeline-backdrop-row:nth-child(even)::before { animation-direction: reverse; }
@keyframes ic-memory-backdrop-slide {
    from { transform: translateX(0); }
    to { transform: translateX(240px); }
}

/* Centre the two cells while retaining the alternating left/right placement. */
.ic-memory-timeline .ic-memory-timeline-item > .ic-memory-timeline-card,
.ic-memory-timeline .ic-memory-timeline-item > .ic-memory-timeline-polaroid {
    align-self: center;
}
.ic-memory-timeline .ic-memory-timeline-item > .ic-memory-timeline-polaroid {
    margin-block: .75rem;
}
.ic-memory-timeline .ic-memory-timeline-item-with-photo::before {
    top: calc(50% - 1rem); transform: translate(-50%, -50%);
}
.ic-memory-timeline .ic-memory-timeline-detail-header {
    display: flex; align-items: flex-start; justify-content: space-between;
    gap: 1rem 2rem;
}
.ic-memory-timeline .ic-memory-timeline-detail-heading {
    flex: 1 1 0; min-width: 0;
}
.ic-memory-timeline .ic-memory-timeline-detail-header > .ic-memory-timeline-author {
    flex: 0 1 auto; max-width: 50%; min-width: 0;
    justify-content: flex-end; margin: 0; text-align: right;
}
@container ic-memory-timeline (max-width: 42rem) {
    .ic-memory-timeline .ic-memory-timeline-detail-header {
        flex-direction: column; gap: .25rem;
    }
    .ic-memory-timeline .ic-memory-timeline-detail-header > .ic-memory-timeline-author {
        max-width: 100%; justify-content: flex-start; text-align: left;
        margin: 0 0 1rem;
    }
    .ic-memory-timeline .ic-memory-timeline-item-with-photo::before {
        top: .5rem; transform: translateX(-50%);
    }
}
