:root{
    --main-green: #318C57;
    --main-orange: #F7931E;
    --accent-dark: #c36b15;
    --main-brown: #7B2D2D;
    --main-bg: #f9f9f6;

    --anim-dur: 1.2s;
    --fade-dur: 1.1s;
    --ease: cubic-bezier(.22,.9,.31,1);
}

body {
    font-family: "Segoe UI", Roboto, Arial, sans-serif;
    color: var(--main-brown);
    background: var(--main-bg);
    min-height: (100 * var(--vh, 1vh));
}

.timeline-hero {
    margin-top: var(--header-height);
    height: calc((var(--vh, 1vh) * 100) - var(--header-height));
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 36px 20px;
    background: var(--main-bg);
}

.timeline-container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    position: relative;
}

.timeline {
    display: flex;
    gap: 20px;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    padding: 6px;
}

.year {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: opacity var(--fade-dur) ease, transform var(--fade-dur) ease;
}

.chevron {
    width: clamp(120px, 18vw, 220px);
    height: 110px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    z-index: 1;
    clip-path: polygon(0 0, 78% 0, 100% 50%, 78% 100%, 0 100%, 22% 50%);
    background: transparent;
    border: 3px solid var(--main-orange);
    transition: border-color .22s ease, transform .22s ease, box-shadow .22s ease;
    box-shadow: 0 2px 0 rgba(0,0,0,0.24);
    cursor: pointer;
}

.year-number {
    font-weight: 700;
    font-size: 28px;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
    color: var(--main-brown);
    z-index: 2;
    pointer-events: none;
}

.chevron::before {
    content: "";
    position: absolute;
    inset: 6px;
    clip-path: inherit;
    border: 2px solid var(--main-orange);
    background: rgba(249,249,246,0.92);
    pointer-events: none;
    transition: border-color .22s ease, background .22s ease;
    z-index: 0;
}

.chevron:hover, .chevron:focus {
    border-color: var(--accent-dark);
}
.chevron:hover::before, .chevron:focus::before {
    border-color: var(--accent-dark);
    background: linear-gradient(90deg, rgba(247,147,30,0.30), rgba(49,140,87,0.10));
}

.year-content {
    position: absolute;
    left: 50%;
    top: calc(100% + 10px);
    transform: translate(-50%, -10px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.32s ease, transform 0.32s ease;
    background: #fff;
    border: 2px solid var(--main-orange);
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
    width: clamp(140px, 20vw, 240px);
    box-shadow: 0 6px 18px rgba(0,0,0,0.12);
    z-index: 2;
    font-size: 14px;
    color: var(--main-brown);
    line-height: 1.35;
}

.year-content::before{
    content: "";
    position: absolute;
    top: -8px;
    left: 50%;
    transform: translate(-50%, -50%) rotate(45deg);
    width: 14px;
    height: 14px;
    background: #fff;
    border-left: 2px solid var(--main-orange);
    border-top: 2px solid var(--main-orange);
    z-index: 1;
}

.chevron:hover + .year-content,
.chevron:focus + .year-content {
    opacity: 1;
    pointer-events: auto;
    transform: translate(-50%, 0);
}

.year.faded {
    opacity: 0;
    pointer-events: none;
    transform: scale(.98);
    transition: opacity var(--fade-dur) ease, transform var(--fade-dur) ease;
}

.no-hover .chevron { pointer-events: none; }

.chevron-placeholder {
    display: block;
    box-sizing: border-box;
    background: transparent;
    margin: 0;
}

.chevron.fixed {
    position: fixed;
    z-index: 1200;
    transition:
      left var(--anim-dur) var(--ease),
      top var(--anim-dur) var(--ease),
      border-color .22s ease,
      transform .22s ease,
      box-shadow .22s ease;
    will-change: left, top;
}

.chevron.active {
    border-color: var(--accent-dark);
}
.chevron.active::before {
    border-color: var(--accent-dark);
    background: linear-gradient(90deg, rgba(247,147,30,0.30), rgba(49,140,87,0.10));
}

.year-content.fixed {
    position: fixed;
    z-index: 1190;
    transition:
        left var(--anim-dur) var(--ease),
        top var(--anim-dur) var(--ease),
        height var(--anim-dur) var(--ease),
        width var(--anim-dur) var(--ease),
        opacity .32s ease,
        transform .22s ease;
    will-change: left, top, height, width;
    pointer-events: none;
    overflow: hidden;
}

.year-content.no-arrow::before {
    opacity: 0;
    transform: translate(-50%, -40%) rotate(45deg) scale(.8);
    transition: opacity .22s ease, transform .22s ease;
    pointer-events: none;
}

.timeline-close {
    position: fixed;
    top: 12px;
    right: 12px;
    z-index: 1300;
    width: 40px;
    height: 40px;
    border-radius: 6px;
    border: 2px solid rgba(0,0,0,0.12);
    background: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(0,0,0,0.12);
    opacity: 0;
    transform: scale(.94);
    transition: opacity .25s ease, transform .25s ease;
    pointer-events: none;
}
.timeline-close.show {
    opacity: 1;
    transform: scale(1);
    pointer-events: auto;
}

.timeline-close:hover { transform: scale(1.03); }

.timeline-overlay {
    position: fixed;
    inset: 0;
    z-index: 1185;
    pointer-events: none;
}

.overlay-wrapper {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    box-sizing: border-box;
    padding: 40px 10%;
    height: calc(100 * var(--vh, 1vh));
    pointer-events: none;
}

.overlay-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    pointer-events: none;
}

.overlay-large {
    position: absolute;
    box-sizing: border-box;
    border: 4px dashed var(--main-orange);
    border-radius: 12px;
    background: transparent;
    pointer-events: none;
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 360ms ease, transform 360ms cubic-bezier(.22,.9,.31,1);
    z-index: 1186;
}

.overlay-large.show {
    opacity: 1;
    transform: translateY(0);
}

.chevron.fade-hover {
    transition: border-color var(--anim-dur) var(--ease),
                transform var(--anim-dur) var(--ease),
                box-shadow var(--anim-dur) var(--ease);
}
.chevron.fade-hover::before {
    transition: border-color var(--anim-dur) var(--ease),
                background var(--anim-dur) var(--ease);
}

.overlay-cell.img-bleed {
    padding: 0;
    overflow: hidden;
}

.overlay-cell.img-bleed img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: inherit;
}

.overlay-cell img {
    cursor: pointer;
    transition: transform 180ms ease, opacity 160ms ease;
}
.overlay-cell img:hover {
    transform: scale(1.02);
    opacity: 0.98;
}

.overlay-text {
    text-align: justify;
    text-align-last: left;
    hyphens: auto;
    word-break: break-word;
}

body.overlay-open .timeline,
body.overlay-open .timeline * ,
body.overlay-open .timeline-hero,
body.overlay-open .chevron,
body.overlay-open .year,
body.overlay-open .year-content,
body.overlay-open .timeline-close,
body.overlay-open .overlay-grid-container,
body.overlay-open .overlay-large {
    z-index: 0 !important;
    pointer-events: none !important;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

@media (max-width: 1000px) {
    .chevron {
        height: 92px;
    }
    .year-number {
        font-size: 22px;
    }
    .overlay-wrapper {
        padding-left: 12px !important;
        padding-right: 12px !important;
    }

    .overlay-grid-container {
        gap: 8px !important;
    }

    .overlay-cell {
        padding: 6px !important;
    }

    .overlay-cell.img-bleed {
        height: 100%;
        display: flex;
        flex-direction: column;
        padding: 0 !important;
        box-sizing: border-box;
    }
    .overlay-cell.img-bleed img {
        width: 100% !important;
        height: 100% !important;
        display: block !important;
        object-fit: cover !important;
        border-radius: inherit !important;
        margin: 0 !important;
        padding: 0 !important;
        box-sizing: border-box !important;
        border-radius: 6px;
    }
}

@media (max-width: 640px) {
    .timeline {
        flex-direction: column;
        gap: 8px;
        padding: 6px 6px;
        align-items: stretch;
    }
    .year {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 10px;
        padding: 6px 6px;
        box-sizing: border-box;
    }
    .chevron {
        width: clamp(100px, 28vw, 180px);
        height: 78px;
        flex: 0 0 auto;
        margin: 0;
    }
    .year-content {
        display: none !important;
    }

    .overlay-wrapper {
        padding: 20px 8px;
    }

    .overlay-grid-container {
        gap: 8px !important;
        padding: 8px !important;
        box-sizing: border-box;
    }

    .overlay-cell {
        padding: 8px !important;
        font-size: 14px !important;
        border-radius: 8px !important;
        box-sizing: border-box;
    }

    .overlay-cell.img-bleed {
        height: 100%;
        display: flex;
        flex-direction: column;
        padding: 0 !important;
        box-sizing: border-box;
    }
    .overlay-cell.img-bleed img {
        width: 100% !important;
        height: 100% !important;
        display: block !important;
        object-fit: cover !important;
        border-radius: inherit !important;
        margin: 0 !important;
        padding: 0 !important;
        box-sizing: border-box !important;
        border-radius: 6px;
    }

    .timeline-close {
        top: 8px;
        right: 8px;
        width: 36px;
        height: 36px;
        font-size: 16px;
    }
}