.cv-viewer{
  position:fixed;inset:0;z-index:10002;
  display:grid;place-items:center;padding:clamp(12px,3vw,40px);
  padding-top:clamp(40px,5vw,56px);
  opacity:0;transition:opacity .3s ease;
  font-family:'Inter',Arial,sans-serif;
}
.cv-viewer[hidden]{display:none}
.cv-viewer.is-open{opacity:1}
.cv-viewer__backdrop{position:absolute;inset:0;background:rgba(7,17,31,.64);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}

.cv-viewer__folder{
  position:relative;display:flex;flex-direction:column;
  width:min(900px,100%);height:min(88vh,1120px);height:min(88dvh,1120px);
  padding:12px 14px 14px;border-radius:4px 12px 12px 12px;
  background:
    linear-gradient(rgba(174,184,196,.06) 1px,transparent 1px) 0 0/18px 18px,
    linear-gradient(90deg,rgba(174,184,196,.06) 1px,transparent 1px) 0 0/18px 18px,
    linear-gradient(160deg,#16335C,#102747 55%,#0B1D37);
  box-shadow:0 40px 90px -20px rgba(0,0,0,.75),inset 0 1px 0 rgba(255,255,255,.08);
  transform:translateY(26px) scale(.96);
  transition:transform .5s cubic-bezier(.2,.7,.2,1);
}
.cv-viewer.is-open .cv-viewer__folder{transform:none}
.cv-folder__tab{
  position:absolute;left:26px;top:-27px;height:28px;padding:0 1.1rem;
  display:flex;align-items:center;border-radius:8px 8px 0 0;
  background:linear-gradient(180deg,#1A3A66,#16335C);
  font:600 .56rem 'IBM Plex Mono',monospace;letter-spacing:.2em;text-transform:uppercase;color:#DDBF85;
  white-space:nowrap;
}

.cv-viewer__bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.15rem .3rem .7rem}
.cv-viewer__crumb{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .7rem;font:500 .58rem 'IBM Plex Mono',monospace;letter-spacing:.16em;text-transform:uppercase;color:#AEB8C4}
.cv-viewer__crumb strong{font-weight:600;color:#E8DFCF}
.cv-viewer__safe{display:inline-flex;align-items:center;gap:.38rem;color:#8BD8AA}
.cv-viewer__safe svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cv-viewer__close{
  flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;
  border:1px solid rgba(174,184,196,.35);background:rgba(7,17,31,.35);color:#E8DFCF;
  font-size:1.35rem;line-height:1;cursor:pointer;transition:border-color .2s,transform .2s,color .2s;
}
.cv-viewer__close:hover{border-color:#DDBF85;color:#DDBF85;transform:rotate(90deg)}
.cv-viewer__close:focus-visible,.cv-cover__skip:focus-visible,.cv-viewer__scroll:focus-visible{outline:2px solid #DDBF85;outline-offset:3px}

.cv-viewer__stage{position:relative;flex:1;min-height:0;border-radius:3px;background:#E6DCC6}
.cv-viewer__scroll{
  position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;
  padding:clamp(10px,2.4vw,28px);border-radius:3px;
  background:
    linear-gradient(90deg,rgba(80,60,20,.08),transparent 26px),
    #E6DCC6;
  scrollbar-width:thin;scrollbar-color:#1D4E89 transparent;
}

.cv-cover{
  position:absolute;inset:0;z-index:2;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;
  padding:2rem 1.25rem;border-radius:3px;cursor:pointer;text-align:center;
  color:#E8DFCF;
  background:
    radial-gradient(ellipse 70% 50% at 50% 30%,rgba(120,147,172,.22),transparent 70%),
    linear-gradient(rgba(174,184,196,.07) 1px,transparent 1px) 0 0/22px 22px,
    linear-gradient(90deg,rgba(174,184,196,.07) 1px,transparent 1px) 0 0/22px 22px,
    linear-gradient(150deg,#1D4E89,#143765 55%,#0F2A4E);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}
.cv-cover[hidden]{display:none}
.cv-cover::before{content:"";position:absolute;inset:14px;border:1px solid rgba(221,191,133,.5);pointer-events:none}
.cv-cover__stamp{
  position:absolute;top:2.1rem;right:2.1rem;padding:.35rem .7rem;
  border:2px solid rgba(221,191,133,.75);border-radius:3px;transform:rotate(-6deg);
  font:700 .6rem 'IBM Plex Mono',monospace;letter-spacing:.22em;text-transform:uppercase;color:#DDBF85;
}
.cv-cover__ref{position:absolute;left:2.1rem;bottom:2rem;font:500 .56rem 'IBM Plex Mono',monospace;letter-spacing:.2em;text-transform:uppercase;color:rgba(174,184,196,.7)}
.cv-cover__label{
  position:relative;width:min(460px,100%);padding:1.7rem 1.8rem 1.5rem;
  background:#F2EEE5;color:#252A31;border-top:6px solid #102747;border-radius:2px;
  box-shadow:0 18px 34px -14px rgba(0,0,0,.65);
}
.cv-cover__label::before,.cv-cover__label::after{
  content:"";position:absolute;top:-17px;width:12px;height:12px;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,#F4F6F8,#9AA6B3 60%,#5E6875);
  box-shadow:0 1px 2px rgba(0,0,0,.5);
}
.cv-cover__label::before{left:22%}
.cv-cover__label::after{right:22%}
.cv-cover__kicker{display:block;margin-bottom:.65rem;font:600 .58rem 'IBM Plex Mono',monospace;letter-spacing:.22em;text-transform:uppercase;color:#1D4E89}
.cv-cover__label h2{font:500 clamp(1.55rem,3.6vw,2.3rem)/1.1 'Newsreader',Georgia,serif;letter-spacing:-.015em;color:#102747}
.cv-cover__meta{display:block;margin-top:.8rem;padding-top:.75rem;border-top:1px dashed rgba(29,78,137,.4);font-size:.8rem;line-height:1.45;color:#4F5D6E}
.cv-cover__status{display:flex;flex-direction:column;align-items:center;gap:.55rem;font:500 .58rem 'IBM Plex Mono',monospace;letter-spacing:.18em;text-transform:uppercase;color:#C9D2DC}
.cv-cover__bar{display:block;width:190px;height:2px;background:rgba(174,184,196,.25);overflow:hidden}
.cv-cover__bar i{display:block;height:100%;width:0;background:#DDBF85}
.cv-cover.is-loading .cv-cover__bar i{animation:cv-load 2s linear forwards}
@keyframes cv-load{to{width:100%}}
.cv-cover__skip{
  padding:0 0 2px;border:0;border-bottom:1px solid rgba(221,191,133,.55);background:none;cursor:pointer;
  font:600 .58rem 'IBM Plex Mono',monospace;letter-spacing:.18em;text-transform:uppercase;color:#E8DFCF;
}
.cv-cover__skip:hover{color:#DDBF85}

.cv-sheet{
  max-width:820px;margin:0 auto;
  padding:clamp(22px,5vw,54px) clamp(18px,5.5vw,62px) clamp(22px,4vw,40px);
  background:#FFFEFB;color:#1E2329;
  box-shadow:0 1px 0 rgba(0,0,0,.05),0 22px 44px -24px rgba(40,30,10,.55);
  font:400 .84rem/1.5 'Inter',Arial,sans-serif;
}
.cv-viewer.is-revealed .cv-sheet{animation:cv-sheet-in .5s ease both}
@keyframes cv-sheet-in{from{opacity:.85}to{opacity:1}}
.cv-sheet__head{text-align:center}
.cv-sheet h1{font:800 clamp(1.45rem,3.6vw,2.05rem)/1.1 'Inter',Arial,sans-serif;letter-spacing:.01em;text-transform:uppercase;color:#1F3A63}
.cv-sheet__role{margin-top:.3rem;font-size:clamp(.88rem,1.6vw,1.02rem);color:#5C6672}
.cv-sheet__contact{display:flex;flex-wrap:wrap;justify-content:center;gap:.15rem .55rem;margin-top:.35rem;list-style:none;font-size:.8rem}
.cv-sheet__contact li + li::before{content:"|";margin-right:.55rem;color:#9AA3AE}
.cv-sheet section{margin-top:1.05rem}
.cv-sheet h2{margin-bottom:.45rem;padding-bottom:.2rem;border-bottom:2px solid #1F3A63;font:700 .98rem 'Inter',Arial,sans-serif;letter-spacing:.02em;text-transform:uppercase;color:#1F3A63}
.cv-sheet section > p{text-indent:2.2em}
.cv-skills{display:grid;grid-template-columns:max-content 1fr;gap:.12rem 1.3rem}
.cv-skills dt{font-weight:700}
.cv-role + .cv-role{margin-top:.6rem}
.cv-role__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 1rem}
.cv-role__head h3{font-size:.88rem;font-weight:700}
.cv-role__date,.cv-role__org{font-style:italic;color:#5C6672}
.cv-sheet ul.cv-list{list-style:disc;padding-left:1.15rem;margin-top:.1rem}
.cv-sheet ul.cv-list li::marker{color:#1F3A63}
.cv-sheet ul.cv-list li + li{margin-top:.08rem}
.cv-edu__detail{padding-left:2.2em}
.cv-certs{columns:2;column-gap:2rem}
.cv-certs li{break-inside:avoid}
.cv-sheet__foot{margin-top:1.3rem;padding-top:.8rem;border-top:2px solid #1E2329;text-align:center;font-size:.8rem}
.cv-sheet a{color:#1D4E89;text-decoration:underline;text-underline-offset:2px}
.cv-sheet a:focus-visible{outline:2px solid #1D4E89;outline-offset:2px}

@media (max-width:600px){
  .cv-viewer__folder{padding:10px}
  .cv-folder__tab{left:14px;font-size:.5rem}
  .cv-viewer__crumb .cv-viewer__hide-sm{display:none}
  .cv-cover__stamp{top:1.4rem;right:1.4rem;font-size:.5rem}
  .cv-cover__ref{display:none}
  .cv-cover__label{padding:1.4rem 1.2rem 1.2rem}
  .cv-skills{grid-template-columns:1fr;gap:0}
  .cv-skills dd{margin-bottom:.35rem}
  .cv-certs{columns:1}
  .cv-sheet section > p{text-indent:0}
  .cv-edu__detail{padding-left:0}
}

@media (prefers-reduced-motion:reduce){
  .cv-viewer,.cv-viewer__folder,.cv-viewer__close{transition:none}
  .cv-viewer__folder{transform:none}
  .cv-viewer.is-revealed .cv-sheet{animation:none}
}

.cv-sheet__contact + .cv-sheet__contact{margin-top:.1rem}
.cv-sub{margin-bottom:.2rem;font-weight:700;font-size:.8rem}
.cv-skillgroups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem 1.4rem}
.cv-skillgroups h3{margin-bottom:.1rem;font-size:.82rem;font-weight:700}
.cv-skillgroups .cv-list + h3{margin-top:.45rem}
.cv-skillgroups .cv-list{font-size:.8rem}
.cv-role__head h3 a{font-weight:600}
@media (max-width:600px){.cv-skillgroups{grid-template-columns:1fr 1fr}}
@media (max-width:380px){.cv-skillgroups{grid-template-columns:1fr}}
