.v4-journey{padding:38px clamp(20px,4vw,58px) 48px;font-family:var(--v4-ui-font)}
.v4-journey-intro{display:flex;justify-content:space-between;align-items:center;gap:24px;padding-bottom:32px;margin-bottom:36px;border-bottom:1px solid #eee7ea}
.v4-journey-intro>div>span{font-size:11px;letter-spacing:2px;color:#ae7a85}
.v4-journey-intro h2{font-size:clamp(20px,2vw,28px);font-weight:600;margin-top:9px;color:#49353c}
.v4-journey-intro p{font-size:13px;color:#93848a}.v4-journey-intro strong{color:var(--red);font-size:34px;font-weight:600;margin-right:6px}.v4-journey-intro p>span{display:block;font-size:12px}
.v4-journey-layout{display:grid;grid-template-columns:130px minmax(0,1fr);gap:42px;align-items:start}
.v4-journey-index{position:sticky;top:calc(var(--v4-header-height,80px) + 24px)}
.v4-journey-index>p{font-size:12px;color:#93848a;margin-bottom:16px}.v4-journey-index nav{display:flex;flex-direction:column;gap:7px;max-height:60vh;overflow:auto}
.v4-journey-index a{display:block;padding:8px 14px;border-radius:7px;font-size:16px;color:#8f8187;border-left:2px solid transparent;transition:background .2s,color .2s}
.v4-journey-index a[aria-current]{color:var(--red);background:#fff0f3;border-left-color:var(--red)}
.v4-journey-track{position:relative;min-width:0;padding-left:30px;border-left:0}
.v4-journey-progress{position:absolute;left:-2px;top:0;bottom:0;width:2px;background:var(--red);transform:scaleY(0);transform-origin:top;pointer-events:none}
.v4-journey-year{position:relative;scroll-margin-top:calc(var(--v4-header-height,80px) + 32px);padding-bottom:28px}
.v4-journey-year>header{display:flex;align-items:baseline;gap:16px;margin-bottom:20px}.v4-journey-year>header h2{font-size:36px;font-weight:600;color:var(--red);letter-spacing:-1px}.v4-journey-year>header>span{font-size:12px;color:#aa939d}
.v4-journey-entry{position:relative;padding-bottom:24px}.v4-journey-entry>time{font-size:13px;color:#ad7c89;display:block;margin-bottom:10px}.v4-journey-dot{position:absolute;left:-37px;top:5px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid #e9c1cd;transition:background .3s,border-color .3s,box-shadow .3s}
.v4-journey-entry.is-visible .v4-journey-dot{background:var(--red);border-color:var(--red);box-shadow:0 0 0 5px #df00300b}
.v4-journey-card{padding:24px 26px;border:1px solid #eee5e9;border-radius:12px;background:linear-gradient(120deg,#fff9fa,#fff 65%);box-shadow:0 3px 14px #38252d06}
.v4-journey-card h3{font-size:var(--module-title-size,19px);font-weight:600;color:#50353f;line-height:1.7}.v4-journey-card .v4-prose{padding:12px 0 0;font-size:var(--module-body-size,15px);line-height:1.95;color:#827179;overflow-wrap:anywhere}.v4-journey-photo{width:100%;max-height:440px;object-fit:contain;margin-top:18px;border-radius:8px}
.v4-journey.motion-ready [data-journey-entry]{opacity:0;transform:translateY(22px);transition:opacity .55s ease,transform .55s ease}.v4-journey.motion-ready [data-journey-entry].is-visible{opacity:1;transform:none}
@media(max-width:760px){.v4-journey{padding:24px 18px}.v4-journey-intro{display:block;margin-bottom:22px;padding-bottom:20px}.v4-journey-intro p{margin-top:14px}.v4-journey-layout{display:block}.v4-journey-index{position:sticky;top:var(--v4-header-height,72px);z-index:2;background:#fffffff5;backdrop-filter:blur(8px);padding:8px 0;margin-bottom:24px}.v4-journey-index>p{display:none}.v4-journey-index nav{flex-direction:row;max-height:none;gap:5px}.v4-journey-index a{flex:none;font-size:14px;padding:8px 12px}.v4-journey-track{margin-left:8px;padding-left:22px}.v4-journey-dot{left:-29px}.v4-journey-year{scroll-margin-top:calc(var(--v4-header-height,72px) + 72px)}.v4-journey-year>header h2{font-size:30px}.v4-journey-card{padding:18px}.v4-journey-card h3{font-size:var(--module-title-size,17px)}}
@media(prefers-reduced-motion:no-preference){html:has([data-v4-journey]){scroll-behavior:smooth}}
@media(prefers-reduced-motion:reduce){.v4-journey.motion-ready [data-journey-entry]{opacity:1;transform:none;transition:none}.v4-journey *{transition:none!important}}
/* Let the year index stick to the viewport rather than a clipped panel. */
.v4-panel:has(>.v4-journey){overflow:visible}
.v4-panel:has(>.v4-journey)>.v4-section-title{border-radius:12px 12px 0 0}

.v4-journey-index a:hover:not([aria-current]){color:var(--red);background:#fff8fa}
.v4-journey-card>.v4-prose:first-child{padding-top:0}

/* A continuous rail joins the centres of the first and last milestones. */
.v4-journey-track:before,.v4-journey-progress { position:absolute; left:-1px; top:var(--journey-start,0px); bottom:auto; width:2px; height:var(--journey-length,100%); border-radius:2px; pointer-events:none; }
.v4-journey-track:before { content:""; background:#ebbac7; }
.v4-journey-progress { background:var(--red); }
.v4-journey-entry.is-current .v4-journey-dot { background:var(--red); border-color:var(--red); }
.v4-journey-dot:after { content:""; position:absolute; inset:-5px; border:1px solid #df003075; border-radius:50%; opacity:0; }
.v4-journey-entry.is-current .v4-journey-dot:after { animation:v4-journey-pulse 2.4s ease-out infinite; }
@keyframes v4-journey-pulse { 0% {transform:scale(.7);opacity:.7} 80%,100% {transform:scale(1.8);opacity:0} }
.v4-journey-index nav { position:relative; isolation:isolate; padding:3px; gap:9px; }
.v4-journey-index a { position:relative; z-index:1; display:flex; align-items:center; justify-content:center; min-height:44px; padding:9px 14px; border:1px solid #e6cbd3; border-radius:10px; background:transparent; color:#775962; font-weight:600; text-align:center; transition:background .28s,color .28s,border-color .28s,box-shadow .28s; }
.v4-journey-index a:hover:not([aria-current]) { background:#fff2f5; border-color:#dc92a5; color:var(--red); }
.v4-journey-index a[aria-current] { background:var(--red); border-color:var(--red); color:#fff; box-shadow:0 4px 12px #df003022; }
.v4-journey-year-marker { position:absolute; left:0; top:0; border-radius:10px; background:var(--red); pointer-events:none; opacity:0; transition:transform .32s cubic-bezier(.22,.7,.25,1),width .25s,height .25s; }
.v4-journey-index nav.is-ready .v4-journey-year-marker { opacity:1; }
.v4-journey-index nav.is-ready a[aria-current] { background:transparent; }
@media(max-width:760px) { .v4-journey-index nav { gap:8px; scrollbar-width:none; }.v4-journey-index nav::-webkit-scrollbar { display:none; }.v4-journey-index a { min-width:68px; } }
@media(prefers-reduced-motion:reduce) { .v4-journey-dot:after { animation:none!important; }html:has([data-v4-journey]) { scroll-behavior:auto; } }
