/* CV timeline — designed to follow the existing portfolio, without external libraries */
.cv-page .cv-end em{font-family:var(--sans);font-style:normal}
.cv-page .journey-section{max-width:1120px;padding-top:74px}
.cv-page .journey-head{align-items:center}
.cv-page .journey-head .eyebrow{font-size:11px}
.cv-page .cv-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:30px}
.cv-page .cv-filters button{border:1px solid #c2d3b538;background:#cbd9bd08;color:#d8e2cf;border-radius:100px;padding:11px 18px;font-size:12px;transition:background .2s,color .2s}
.cv-page .cv-filters button[aria-pressed=true]{background:#dce8cf;color:#243025;border-color:#dce8cf}
.cv-page .journey-layout{display:block;position:relative}
.cv-page .journey-timeline{position:relative;padding:14px 0 45px}
.cv-page .thread-list{list-style:none;margin:0;padding:0;position:relative;display:flex;flex-direction:column;gap:24px}
.cv-page .thread-stop{width:50%;padding:8px 66px 8px 0;align-self:flex-start;position:relative;z-index:2}
.cv-page .thread-stop:nth-child(even){align-self:flex-end;padding:8px 0 8px 66px}
.cv-page .thread-stop:before{display:none}
.cv-page .journey-node{display:block;min-height:0;background:transparent;border:0;border-radius:17px;padding:22px 24px;text-align:left;color:#eff3e9;position:relative}
.cv-page .node-orbit{position:absolute;top:50%;left:calc(100% + 55px);transform:translate(-50%,-50%);width:22px;height:22px;margin:0;background:#2a352b;border:2px solid #a0b591;box-shadow:0 0 0 9px #252824;z-index:4}
.cv-page .thread-stop:nth-child(even) .node-orbit{left:-55px}
.cv-page .node-orbit i{width:7px;height:7px}
.cv-page .journey-node[aria-expanded=true] .node-orbit{background:#e2edcf;box-shadow:0 0 0 9px #252824,0 0 0 11px #bed1a5,0 0 24px #c4dfa450}
.cv-page .node-date{justify-content:flex-start;gap:10px;font-size:11px;color:#c3d0b3}
.cv-page .node-date small{font-size:9px}
.cv-page .node-text>strong{font-size:19px;line-height:1.28;margin:10px 0 5px;letter-spacing:-.3px}
.cv-page .node-org{font-size:12px;color:#becab5}
.cv-page .node-plus{position:absolute;right:19px;bottom:16px;font-size:17px}
.cv-thread-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:1}
.cv-thread-base{fill:none;stroke:#829672;stroke-width:2.5;opacity:.6}
.cv-thread-progress{fill:none;stroke:#d1e4b5;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 5px #c7dfa850)}
.cv-page .journey-tools{margin-top:12px}
.cv-timeline-tip{font-size:12px;color:#becab3;margin:0 0 24px;text-align:center}
.cv-timeline-empty{font-size:14px;text-align:center;color:#c8d2bf}
@media(max-width:760px){
.cv-page .journey-section{padding-top:46px}
.cv-page .thread-list{gap:14px}
.cv-page .thread-stop,.cv-page .thread-stop:nth-child(even){width:100%;padding:0 0 0 46px;align-self:stretch}
.cv-page .journey-node{padding:18px 20px}
.cv-page .node-orbit,.cv-page .thread-stop:nth-child(even) .node-orbit{left:-34px}
.cv-page .node-text>strong{font-size:17px}
.cv-page .cv-filters button{padding:9px 13px}
}
@media(prefers-reduced-motion:reduce){.cv-page .journey-node{transition:none}.cv-page .journey-node:hover{transform:none}}
@media print{.cv-thread-svg,.cv-timeline-tip{display:none!important}}
/* Each timeline stop expands into its own card. */
.cv-page .journey-card{position:relative;isolation:isolate;min-width:0;border:1px solid #d5e1c42b;border-radius:18px;background:linear-gradient(145deg,#f2f8e814 0%,#d9e7cb05 44%,#07100626 100%),#2b352ce6;box-shadow:0 12px 36px #0b130a30,inset 0 1px 0 #ffffff21,inset 0 -1px 0 #00000024;backdrop-filter:blur(18px) saturate(.8);-webkit-backdrop-filter:blur(18px) saturate(.8);transition:border-color .24s,box-shadow .24s}
.cv-page .journey-card:hover{border-color:#cfdfbb44}
.cv-page .journey-card:has(.journey-node[aria-expanded="true"]){background:linear-gradient(145deg,#eef8dc1c 0%,#d6e6bf08 48%,#0710061a 100%),#334035e8;border-color:#c4d7ae80;box-shadow:0 16px 45px #0b130a40,inset 0 1px 0 #ffffff2b}
.cv-page .journey-card .journey-node{border:0;background:transparent;box-shadow:none;transform:none;border-radius:17px}
.cv-page .journey-node:focus-visible{outline:2px solid #dce8cf;outline-offset:4px}
.cv-page .journey-node[aria-expanded="true"] .node-text>strong{color:#f2f6e9}
.cv-page .journey-node[aria-expanded="true"] .node-orbit i{background:#465d38}
.cv-page .node-plus{font-size:21px;transition:transform .2s}
.cv-page .journey-node[aria-expanded="true"] .node-plus{transform:rotate(45deg)}
.cv-page .journey-inline-detail{overflow:hidden}
.cv-page .journey-inline-detail[hidden]{display:none}
.cv-page .journey-detail-inner{padding:0 24px 24px;overflow-wrap:anywhere}
.cv-page .journey-inline-detail .detail-body{border-top:1px solid #c3d2b02e;padding-top:18px}
.cv-page .journey-inline-detail .detail-body p{font-size:13px;line-height:1.75;color:#dbe3d0;margin:0 0 14px}
.cv-page .journey-inline-detail .detail-tags{display:flex;flex-wrap:wrap;gap:7px;margin:18px 0 0}
.cv-page .journey-inline-detail .detail-tags span{border:1px solid #c9d7b638;border-radius:40px;padding:6px 10px;color:#dce6cf;font-size:10px;line-height:1.4}
.cv-page .journey-inline-detail .journey-detail-footer{flex-wrap:wrap;gap:10px;margin-top:20px;padding-top:16px}
.cv-page .journey-collapse{background:transparent;color:#d2dfbf;padding:10px 0;font-size:11px;text-decoration:underline;text-underline-offset:4px}
.cv-page .journey-inline-detail .journey-next{font-size:11px}
.cv-page .journey-inline-detail button:focus-visible{outline:2px solid #dce8cf;outline-offset:4px}
@media(max-width:760px){
 .cv-page .journey-detail-inner{padding:0 20px 20px}
 .cv-page .node-date{flex-wrap:wrap;gap:6px 10px}
 .cv-page .node-text{padding-right:14px}
}
@media(prefers-reduced-motion:reduce){.cv-page .journey-card,.cv-page .node-plus{transition:none}}

/* Place the roles in the former introduction-card position. */
.cv-page .cv-cover{display:flex;flex-direction:column;align-items:flex-start}
.cv-page .cv-cover-role{position:relative;top:auto;right:auto;margin-top:42px;max-width:430px;gap:10px;font-size:clamp(14px,1.5vw,20px);font-weight:500;line-height:1.4;letter-spacing:.055em;color:#d6e3cc}
.cv-page .cv-cover-bottom{width:100%;margin-top:auto;padding-top:42px}
@media(max-width:700px){
 .cv-page .cv-cover-role{margin-top:clamp(140px,40vw,210px);max-width:100%;gap:8px;font-size:clamp(12px,3.4vw,16px);letter-spacing:.045em}
 .cv-page .cv-cover-bottom{padding-top:32px}
}

/* A slightly larger portrait, offset toward the right edge. */
.cv-page .cv-cover-photo{transform:translateX(clamp(12px,3vw,42px)) scale(1.08);transform-origin:center center}

/* Reflective surfaces and pointer lighting for every timeline card. */
.cv-page .journey-card::before,.cv-page .journey-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1}
.cv-page .journey-card::before{background:linear-gradient(125deg,transparent 5%,#ffffff0b 28%,#ffffff02 47%,transparent 63%);box-shadow:inset 1px 0 0 #ffffff08}
.cv-page .journey-card::after{background:radial-gradient(ellipse at var(--shine-x,35%) var(--shine-y,0%),#f1ffdc26,transparent 62%);opacity:0;transition:opacity .25s}
.cv-page .journey-card:focus-within{border-color:#d3e7bb88;box-shadow:0 16px 44px #0b130a44,inset 0 1px 0 #ffffff30}
.cv-page .journey-card:focus-within::after{opacity:.65}
.cv-page .node-orbit i{background:#c6d6ac}
.cv-page .node-date small{border-color:#b9c8a34a}
.cv-page .node-text>strong{transition:color .2s}
.cv-page .node-plus{display:grid;place-items:center;width:28px;height:28px;right:14px;bottom:11px;color:#bdcea5;border:1px solid #daebbe22;border-radius:50%;background:#e1efc708;font-size:20px;transition:transform .2s,color .2s,background .2s}
.cv-page .journey-node[aria-expanded="true"] .node-plus{background:#e0efc61a;color:#f5faed}
.cv-page .journey-inline-detail .detail-tags span{background:#e6f1cf06}
.cv-page .journey-inline-detail .journey-detail-footer{border-color:#c3d2b02e}
.cv-page .journey-inline-detail .journey-next{border-color:#cdddaf55;color:#e6efd7;background:#dfedbd09;transition:background .2s,border-color .2s}
.cv-page .journey-inline-detail .journey-next:is(:hover,:focus-visible){background:#dfedbd1c;border-color:#dcebc099}
.cv-page .journey-collapse:hover{color:#fff}
.cv-page .journey-head,.cv-page .journey-tools{border-color:#becda730}
.cv-page .journey-head .eyebrow,.cv-page .journey-tools .eyebrow{color:#e0e9d2}
.cv-page .journey-head>span:last-child,.cv-page .journey-tools p{color:#c1ceb0}
.cv-page .cv-filters button:is(:hover,:focus-visible){border-color:#cdddaf80;background:#e2efc518}
.cv-page .cv-filters button[aria-pressed="true"]{background:linear-gradient(135deg,#f0f6e7,#cadbb6);color:#293525;border-color:#dce8cf;box-shadow:inset 0 1px 0 #ffffff70,0 4px 15px #09151c1a}
@media(min-width:801px) and (hover:hover) and (pointer:fine){
 .cv-page .journey-card:hover{border-color:#ddedbd77;box-shadow:0 18px 50px #0b130a55,inset 0 1px 0 #ffffff38,inset 0 -1px 0 #f0f8de0a}
 .cv-page .journey-card:hover::after{opacity:1}
 .cv-page .journey-card:hover .node-text>strong{color:#fff}
 .cv-page .journey-card:hover .node-plus{color:#f7ffeb;background:#e6f1c91a}
}
@media(prefers-reduced-motion:reduce){
 .cv-page .journey-card,.cv-page .journey-card::after,.cv-page .node-text>strong,.cv-page .node-plus,.cv-page .journey-next{transition:none}
}

/* The card breathes with light; the orbit remains fixed on the thread. */
.cv-thread-hover{fill:none;stroke:#e0f0c3;stroke-width:3.5;stroke-linecap:round;opacity:0;filter:drop-shadow(0 0 7px #c7e5a5aa);transition:opacity .2s}
.cv-page .journey-timeline.is-point-active .cv-thread-hover{opacity:1}
.cv-page .journey-card:focus-within .node-orbit{background:#e2edcf;border-color:#e3f1ce;box-shadow:0 0 0 9px #252824,0 0 0 11px #bed1a5,0 0 28px #c4dfa499}
.cv-page .journey-card:focus-within .node-orbit i{background:#465d38}
@media(min-width:801px) and (hover:hover) and (pointer:fine){
 .cv-page .journey-card:hover{animation:cv-card-breathe 2.4s ease-in-out infinite}
 .cv-page .journey-card:hover::before{animation:cv-glass-breathe 2.4s ease-in-out infinite}
 .cv-page .journey-card:hover .node-orbit{background:#e2edcf;border-color:#e3f1ce;box-shadow:0 0 0 9px #252824,0 0 0 11px #bed1a5,0 0 28px #c4dfa499}
 .cv-page .journey-card:hover .node-orbit i{background:#465d38}
}
@keyframes cv-card-breathe{
 0%,100%{border-color:#bdcfa27a;box-shadow:0 12px 36px #0b130a55,0 0 12px #c9e0ad12,inset 0 1px 0 #ffffff2e}
 50%{border-color:#e2efc7c2;box-shadow:0 18px 46px #0b130a66,0 0 30px 4px #c9e0ad38,inset 0 1px 0 #f6ffe966}
}
@keyframes cv-glass-breathe{0%,100%{opacity:.4}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){
 .cv-page .journey-card,.cv-page .journey-card::before{animation:none!important}
 .cv-thread-hover{transition:none}
}
/* A compact tools list on screen; full personal details stay in print. */
.cv-page .cv-software{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid #becda730;padding-top:25px;margin-top:20px}
.cv-page .cv-software h2{font:400 18px/1.4 var(--sans);letter-spacing:normal;word-spacing:normal;color:#e0e9d2}
.cv-page .cv-profile-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.cv-page .cv-profile-chips li{font-size:12px;line-height:1.5;background:#e6f1cf06;border:1px solid #c9d7b638;border-radius:30px;padding:8px 13px;color:#dbe3d0}
@media(max-width:700px){.cv-page .cv-software{flex-direction:column;align-items:flex-start;gap:15px}}
@media print{
 .print-resume .print-contact{margin-bottom:18px}
 .print-resume .print-contact a{color:inherit;text-decoration:none;overflow-wrap:anywhere}
 .print-resume h2,.print-resume h3{break-after:avoid-page}
 .print-resume .print-additional{break-inside:avoid}
}

/* Touch feedback follows the expanded state, never a sticky hover. */
@media(max-width:800px), (pointer:coarse){
 .cv-page .journey-card{backdrop-filter:none;-webkit-backdrop-filter:none}
 .cv-page .journey-node,.cv-page .journey-collapse,.cv-page .journey-next,.cv-page .cv-filters button{min-height:44px;touch-action:manipulation}
 .cv-page .journey-node{width:100%}
 .cv-page .journey-card::after{display:none}
}

/* Leave breathing room above the selected experience after navigation. */
.cv-page .journey-card { scroll-margin-top: 24px; }
