:root{
  --paper:#FBFAF9;
  --ink:#181A1F;
  --muted:#555B64;
  --accent:#8A2032;--accent-soft:#D9818D;
  --line:#E5E2DC;
  --wash:#F2F0EB;
  --display:'Space Grotesk','Avenir Next','Segoe UI',system-ui,sans-serif;
  --body:'Public Sans',-apple-system,'Segoe UI',Roboto,sans-serif;
  --measure:65ch;
  --viewer-bg:#101114;--viewer-surface:#16181D;--viewer-border:#2A2D34;
  --viewer-text:#F5F4F1;--viewer-text-muted:#C9C7C2;
  --viewer-btn:#23262D;--viewer-btn-border:#34383F;--viewer-btn-hover:#2C3038;
  --viewer-backdrop:rgba(10,10,12,.65);--viewer-hint-bg:rgba(22,24,29,.85);
  --fs-xs:0.8rem;--fs-sm:0.875rem;--fs-secondary:0.95rem;
  --fs-body:1.125rem;--fs-md:1.25rem;--fs-brand:1.2rem;
  --sp-1:0.5rem;--sp-2:1rem;--sp-3:1.5rem;--sp-4:2rem;--sp-5:2.5rem;
  --sp-6:3rem;--sp-7:3.5rem;--sp-8:4rem;--sp-9:4.5rem;--sp-10:5rem;--sp-11:5.5rem;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:var(--fs-body);line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
/* ---------- accessibility primitives ---------- */
.skip-link{
  position:absolute;left:1rem;top:-4rem;z-index:50;
  background:var(--ink);color:var(--paper);padding:.6rem 1rem;
  border-radius:2px;font-weight:600;text-decoration:none;
  transition:top .15s ease;
}
.skip-link:focus{top:1rem}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:1px}
.visually-hidden{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
/* ---------- analogue texture ---------- */
body::before{
  content:"";position:fixed;inset:0;z-index:2000;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.45' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0.9 0.9 0.9 0 -0.88'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity:.055;
}
/* ---------- layout ---------- */
.wrap{max-width:1120px;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,2.5rem)}
header.site{
  border-bottom:1px solid var(--line);
  position:sticky;top:0;background:color-mix(in srgb,var(--paper) 92%,transparent);
  backdrop-filter:blur(8px);z-index:40;
}
.site-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:1rem}
.brand{
  font-family:var(--display);font-weight:700;font-size:var(--fs-brand);
  letter-spacing:-0.01em;color:var(--ink);text-decoration:none;
}
.brand .dot{color:var(--accent)}
.brand-sub{
  font-family:var(--body);font-weight:500;font-size:var(--fs-sm);letter-spacing:.02em;
  color:var(--muted);margin-left:.75rem;padding-left:.75rem;border-left:1px solid var(--line);
}
nav.primary ul{display:flex;gap:clamp(.9rem,2.5vw,1.8rem);list-style:none;margin:0;padding:0}
nav.primary a{
  color:var(--ink);text-decoration:none;font-weight:500;font-size:var(--fs-secondary);
  padding-block:.35rem;border-bottom:2px solid transparent;
}
nav.primary a:hover{border-bottom-color:var(--muted)}
nav.primary a[aria-current="page"]{border-bottom-color:var(--accent)}
@media (max-width:699px){
  .brand-sub{display:none}
  .site-bar{flex-wrap:wrap;row-gap:.4rem}
  header.site nav.primary{width:100%}
  header.site nav.primary ul{gap:1.05rem}
}
.view{display:none}
.view.active{display:block;animation:viewIn .15s ease}
@keyframes viewIn{from{opacity:0}to{opacity:1}}
/* ---------- type scale ---------- */
h1,h2,h3,h4{font-family:var(--display);line-height:1.08;letter-spacing:-0.02em;margin:0}
h1{font-weight:700;font-size:clamp(2.4rem,6.5vw,4.6rem)}
h2{font-weight:700;font-size:clamp(1.55rem,3.2vw,2.2rem);line-height:1.15;margin-top:3.2rem;margin-bottom:.9rem}
h3{font-weight:500;font-size:clamp(1.15rem,2vw,1.35rem);line-height:1.25;margin-top:2.2rem;margin-bottom:.5rem}
h4{font-weight:600;font-size:var(--fs-body);line-height:1.3;margin-top:var(--sp-3);margin-bottom:.3rem}
h1:focus,h2:focus{outline:none}
p{margin:0 0 1.1rem;max-width:var(--measure)}
ul,ol{max-width:var(--measure);padding-left:1.2rem;margin:0 0 1.2rem}
li{margin-bottom:.4rem}
li::marker{color:var(--accent)}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
.eyebrow{
  display:inline-flex;align-items:center;gap:.55rem;
  font-size:var(--fs-xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);margin-bottom:1.1rem;
}
.eyebrow::before{
  content:"";width:.55rem;height:.55rem;border-radius:50%;
  background:var(--accent);flex:none;
}
.lede{font-size:clamp(1.15rem,2vw,1.3rem);line-height:1.55;color:var(--ink);max-width:48rem}
.meta{color:var(--muted);font-size:var(--fs-secondary)}
/* ---------- hero ---------- */
.hero{padding-block:clamp(3.5rem,9vw,7rem) clamp(2.5rem,6vw,4rem)}
.hero .role{
  font-family:var(--display);font-weight:500;
  font-size:clamp(1.15rem,2.4vw,1.6rem);color:var(--muted);
  margin-top:.9rem;letter-spacing:-0.01em;
}
/* ---------- hero grid + portrait ---------- */
.hero-grid{display:grid;gap:var(--sp-5);align-items:center}
@media (min-width:880px){
  .hero-grid{grid-template-columns:minmax(0,1fr) minmax(240px,310px);gap:clamp(2.5rem,6vw,5rem)}
  .hero-portrait{justify-self:end}
}
.hero-portrait{position:relative;margin:0;max-width:300px}
.hero-portrait img{
  display:block;width:100%;height:auto;
  border:1px solid var(--line);border-radius:2px;background:var(--paper);
}
.hero-portrait::before{
  content:"";position:absolute;inset:0;z-index:-1;border-radius:2px;
  background:var(--wash);transform:translate(14px,14px) rotate(-1.1deg);
}
.hero-portrait::after{
  content:"";position:absolute;top:-7px;left:-7px;width:.9rem;height:.9rem;
  border-radius:50%;background:var(--paper);border:2px solid var(--accent);
}
/* ---------- wash band ---------- */
.band{
  margin:var(--sp-9) calc(50% - 50vw) 0;
  padding:var(--sp-6) calc(50vw - 50%) var(--sp-7);
  background:var(--wash);
}
#view-about .band{margin-top:var(--sp-4)}
/* ---------- featured quote + selected work ---------- */
.feature-quote{margin:.6rem 0 0;max-width:44rem;position:relative;padding-left:3rem;border-left:0}
#view-home h2{margin-top:var(--sp-10);margin-bottom:.4rem}
#view-home .cs-index{margin-top:var(--sp-3)}
@media (min-width:760px){.feature-quote{margin-left:clamp(2rem,10vw,9rem)}}
.feature-quote::before{
  content:"\201C";position:absolute;left:0;top:-.12em;line-height:1;
  font-family:var(--display);font-weight:700;font-size:3.1rem;color:var(--accent);
}
.feature-quote p{
  font-family:var(--display);font-weight:500;margin:0;
  font-size:clamp(1.15rem,2.2vw,1.45rem);letter-spacing:-0.01em;line-height:1.45;
}
.feature-quote footer{margin-top:.9rem;color:var(--muted);font-size:var(--fs-secondary)}
.feature-quote footer strong{color:var(--ink);font-weight:600}
.cs-row .s{
  display:block;margin-top:.45rem;max-width:36rem;
  font-family:var(--body);font-weight:400;
  font-size:var(--fs-secondary);line-height:1.55;color:var(--muted);letter-spacing:0;
}
.all-link{margin-top:var(--sp-4);font-family:var(--display);font-weight:500;font-size:var(--fs-md)}
.all-link a{text-underline-offset:4px}
/* ---------- journey-line case study index ---------- */
.cs-index{list-style:none;margin:var(--sp-4) 0 0;padding:0;position:relative}
.cs-index::before{
  content:"";position:absolute;left:.32rem;top:1.4rem;bottom:1.4rem;width:5px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='140' viewBox='0 0 5 140'%3E%3Cpath d='M2.5 0 C3.4 18 1.6 32 2.3 52 C3.1 72 1.7 88 2.6 108 C3.2 122 2 132 2.5 140' fill='none' stroke='%23C6C0B4' stroke-width='1.7' stroke-linecap='round'/%3E%3C/svg%3E") repeat-y left top;
}
.cs-index li{position:relative;margin:0}
.cs-row{
  display:grid;grid-template-columns:2rem 1fr minmax(180px,260px);
  gap:2.5rem;align-items:center;
  padding-block:1.6rem;border-bottom:1px solid var(--line);
  text-decoration:none;color:var(--ink);
}
.cs-row::before{
  content:"";width:.9rem;height:.9rem;border-radius:50%;
  background:var(--paper);border:2px solid var(--muted);
  justify-self:start;transition:border-color .15s ease,background .15s ease;
}
.cs-row:hover::before,.cs-row:focus-visible::before{border-color:var(--accent);background:var(--accent)}
.cs-row .t{
  font-family:var(--display);font-weight:500;
  font-size:clamp(1.25rem,2.6vw,1.7rem);line-height:1.35;letter-spacing:-0.01em;
}
.cs-row:hover .t{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.cs-row .c{display:block;margin-top:.5rem;color:var(--muted);font-family:var(--body);font-weight:400;font-size:var(--fs-secondary)}
.cs-thumb{
  display:block;width:100%;aspect-ratio:16/10;overflow:hidden;
  border-radius:3px;border:1px solid var(--line);
}
.cs-row img{
  width:100%;height:100%;object-fit:cover;background:var(--wash);
  display:block;transition:transform .35s ease-out;
}
@media (prefers-reduced-motion:no-preference){
  .cs-row:hover .cs-thumb img,
  .cs-row:focus-visible .cs-thumb img{transform:scale(1.04)}
}
@media (max-width:680px){
  .cs-row{grid-template-columns:2rem 1fr}
  .cs-thumb{display:none}
}
/* ---------- case study article ---------- */
article.case{padding-block:clamp(2.5rem,6vw,4.5rem)}
article.case header.case-head{margin-bottom:2.5rem;max-width:56rem}
article.case .client{margin-top:1rem}
figure{margin:2.2rem 0;max-width:56rem}
figure img{width:100%;height:auto;border-radius:3px;border:1px solid var(--line);background:var(--wash)}
figcaption{font-size:var(--fs-sm);color:var(--muted);margin-top:.45rem}
/* ---------- image presentation ---------- */
.img-wrap{position:relative}
/* Moderately tall images (e.g. mobile screens): natural proportions, centred, full height visible */
figure.tall img{
  display:block;width:auto;max-width:100%;height:auto;
  max-height:min(36rem,85vh);margin-inline:auto;
}
figure.tall figcaption{text-align:center}
/* Very tall captures (full page screenshots, vertical maps): cropped with fade */
figure.tall-crop img{display:block;max-height:30rem;width:100%;object-fit:cover;object-position:top center}
figure.tall-crop .img-wrap::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:4.5rem;
  background:linear-gradient(to bottom,transparent,var(--paper));
  pointer-events:none;
}
.img-action{
  display:inline;margin:0;padding:0;background:none;border:none;border-radius:0;
  color:var(--accent);font:inherit;font-size:inherit;font-weight:600;
  cursor:pointer;text-decoration:underline;text-underline-offset:3px;white-space:nowrap;
}
.img-action:hover{text-decoration-thickness:2px}
.img-action:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
/* ---------- full screen image viewer ---------- */
dialog.viewer{
  border:none;padding:0;width:100vw;height:100vh;max-width:100vw;max-height:100vh;
  background:var(--viewer-bg);color:var(--viewer-text);
}
dialog.viewer::backdrop{background:var(--viewer-backdrop)}
@media (prefers-reduced-motion:no-preference){
  dialog.viewer[open]{animation:viewerIn .15s ease}
}
@keyframes viewerIn{from{opacity:0}to{opacity:1}}
.viewer-bar{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  height:3.8rem;padding:0 1rem;background:var(--viewer-surface);border-bottom:1px solid var(--viewer-border);
}
.viewer-caption{margin:0;font-size:var(--fs-sm);color:var(--viewer-text-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:none}
.viewer-controls{display:flex;align-items:center;gap:.4rem;flex:none}
.viewer-controls button{
  background:var(--viewer-btn);color:var(--viewer-text);border:1px solid var(--viewer-btn-border);border-radius:3px;
  min-width:2.5rem;height:2.5rem;padding:0 .7rem;font:inherit;font-weight:600;cursor:pointer;
}
.viewer-controls button:hover{background:var(--viewer-btn-hover);color:var(--viewer-text)}
.viewer-controls button:focus-visible{outline:2px solid var(--viewer-text);outline-offset:2px}
.viewer-zoom{min-width:3.6rem;text-align:center;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;color:var(--viewer-text-muted)}
.viewer-stage{
  position:absolute;top:3.8rem;left:0;right:0;bottom:0;
  overflow:hidden;cursor:grab;touch-action:none;
}
.viewer-stage.dragging{cursor:grabbing}
.viewer-stage img{
  position:absolute;left:0;top:0;max-width:none;
  user-select:none;-webkit-user-drag:none;transform-origin:0 0;will-change:transform;
}
.viewer-hint{
  position:absolute;left:50%;bottom:1rem;transform:translateX(-50%);
  margin:0;font-size:var(--fs-sm);color:var(--viewer-text-muted);background:var(--viewer-hint-bg);
  padding:.4rem .9rem;border-radius:3px;pointer-events:none;
}
blockquote{
  margin:2.4rem 0;padding-left:1.4rem;border-left:3px solid var(--accent);
  max-width:var(--measure);
}
blockquote p{font-family:var(--display);font-weight:500;font-size:var(--fs-md);line-height:1.45;letter-spacing:-0.005em}
blockquote footer{color:var(--muted);font-size:var(--fs-secondary)}
.stats{
  display:flex;flex-wrap:wrap;gap:clamp(1.5rem,4vw,3rem);
  margin:var(--sp-5) 0;padding:var(--sp-4) 0;border-block:1px solid var(--line);
}
.stat .n{
  font-family:var(--display);font-weight:700;letter-spacing:-0.02em;
  font-size:clamp(2rem,4.5vw,3rem);line-height:1;color:var(--accent);
}
.stat .l{display:block;margin-top:.45rem;color:var(--muted);font-size:var(--fs-sm);max-width:11rem}
.readmore{margin-top:var(--sp-8);padding-top:var(--sp-4);border-top:1px solid var(--line)}
.readmore h2{margin-top:0}
.readmore ul{list-style:none;padding:0;max-width:none}
.readmore a{font-family:var(--display);font-weight:500;font-size:var(--fs-md);color:var(--ink);text-decoration:none}
.readmore a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.readmore .c{color:var(--muted);font-size:var(--fs-sm);margin-top:.15rem;margin-bottom:1rem}
/* ---------- contents navigation ---------- */
.case-body{min-width:0}
.case-body h2[id],.case-body h3[id]{scroll-margin-top:var(--sp-11)}
.toc{margin:0 0 var(--sp-6)}
.toc-label{
  font-size:var(--fs-xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);margin:0 0 .7rem;
}
.toc ul{
  list-style:none;margin:0;padding:0;max-width:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='140' viewBox='0 0 5 140'%3E%3Cpath d='M2.5 0 C3.4 18 1.6 32 2.3 52 C3.1 72 1.7 88 2.6 108 C3.2 122 2 132 2.5 140' fill='none' stroke='%23C6C0B4' stroke-width='1.7' stroke-linecap='round'/%3E%3C/svg%3E") repeat-y left top;
}
.toc li{margin:0}
.toc a{
  position:relative;display:block;padding:.42rem 0 .42rem 1.15rem;
  color:var(--muted);text-decoration:none;font-size:var(--fs-sm);line-height:1.4;
}
.toc a::before{
  content:"";position:absolute;left:-5px;top:50%;transform:translateY(-50%);
  width:8px;height:8px;border-radius:50%;
  background:var(--paper);border:2px solid var(--line);
  transition:border-color .15s ease,background .15s ease;
}
.toc a:hover{color:var(--ink)}
.toc a:hover::before{border-color:var(--muted)}
.toc a[aria-current]{color:var(--accent);font-weight:600}
.toc a[aria-current]::before{border-color:var(--accent);background:var(--accent)}
@media (min-width:1100px){
  article.case{display:grid;grid-template-columns:230px minmax(0,1fr);column-gap:var(--sp-4)}
  article.case header.case-head{grid-column:1/-1}
  article.case:not(:has(.toc)) .case-body{grid-column:1/-1}
  .toc{
    position:sticky;top:var(--sp-11);align-self:start;
    max-height:calc(100vh - 7rem);overflow-y:auto;
  }
}
/* ---------- about / resume / connect ---------- */
.page{padding-block:clamp(2.5rem,6vw,4.5rem)}
.about-intro{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5);align-items:start;margin-top:1.6rem;max-width:72rem}
@media (min-width:820px){.about-intro{grid-template-columns:minmax(0,1fr) minmax(260px,330px);gap:var(--sp-7)}}
.portrait{margin:0}
.portrait img{display:block;width:100%;height:auto;border-radius:3px;border:1px solid var(--line)}
.testimonials{margin-top:0;max-width:56rem}
.testimonials blockquote{
  position:relative;margin:0;padding:1.8rem 0 1.8rem 3rem;max-width:none;
  border-left:none;border-bottom:1px solid var(--line);
}
.testimonials blockquote:last-of-type{border-bottom:none}
.testimonials blockquote:first-child{padding-top:.8rem}
.testimonials blockquote:first-child::before{top:.3rem}
.testimonials blockquote::before{
  content:"\201C";font-family:var(--display);font-weight:700;
  font-size:4.2rem;line-height:.9;color:var(--accent);
  position:absolute;left:0;top:1.2rem;
}
.testimonials blockquote p{
  font-family:var(--display);font-weight:500;font-size:var(--fs-md);line-height:1.5;
  letter-spacing:-0.005em;max-width:42rem;margin-bottom:.95rem;
}
.testimonials blockquote p:last-of-type{margin-bottom:0}
.testimonials blockquote footer{
  display:flex;align-items:baseline;gap:.6rem;margin-top:1.2rem;font-size:var(--fs-secondary);
}
.testimonials blockquote footer::before{
  content:"";width:.38rem;height:.38rem;border-radius:50%;
  background:var(--accent);flex:none;align-self:center;
}
.testimonials blockquote footer strong{color:var(--ink)}
.testimonials blockquote footer span{color:var(--muted)}
@media (min-width:820px){
  .testimonials blockquote{padding:2.6rem 0 2.6rem 5.4rem}
  .testimonials blockquote::before{top:2.5rem}
  .testimonials blockquote:first-child{padding-top:1.2rem}
  .testimonials blockquote:first-child::before{top:.5rem}
}
@media (max-width:699px){
  .testimonials blockquote footer{display:block;position:relative;padding-left:1.45rem}
  .testimonials blockquote footer::before{content:"";position:absolute;left:0;top:.42em;width:.38rem;height:.38rem;border-radius:50%;background:var(--accent)}
  .testimonials blockquote footer strong{display:block}
  .testimonials blockquote footer span{display:block;margin-top:.15rem}
}
.cv-role{padding-top:.5rem;padding-bottom:1.8rem;border-bottom:1px solid var(--line);max-width:56rem}
.cv-role h3{margin-top:0}
.cv-role .where{color:var(--ink);font-weight:500}
.cv-role .when{color:var(--muted);font-size:var(--fs-sm);margin-bottom:.8rem}
.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:0 var(--sp-6);max-width:56rem}
.skills{max-width:64rem;grid-template-columns:1fr;gap:.6rem 4rem}
@media (min-width:700px){.skills{grid-template-columns:1fr}}
.skills h3{margin-top:.55rem}
.two-col ul{max-width:none}
ul.bring{list-style:none;margin:1.4rem 0 0;padding:0;max-width:56rem}
ul.bring li{position:relative;padding-left:1.45rem;margin-bottom:.85rem;line-height:1.55}
ul.bring li::before{content:"";position:absolute;left:0;top:.52em;width:.5rem;height:.5rem;border-radius:50%;background:var(--accent)}
/* ---------- form ---------- */
form{max-width:34rem;margin-top:2rem}
.field{margin-bottom:1.3rem}
label{display:block;font-weight:600;margin-bottom:.4rem}
input,textarea{
  width:100%;padding:.7rem .8rem;font:inherit;color:var(--ink);
  background:#fff;border:1.5px solid var(--muted);border-radius:3px;
}
input:focus-visible,textarea:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-color:var(--ink)}
form button{
  font:inherit;font-weight:600;color:var(--paper);background:var(--ink);
  border:none;border-radius:3px;padding:.8rem 1.6rem;cursor:pointer;
}
form button:hover{background:var(--accent)}
.home-cta{
  margin:var(--sp-6) 0 var(--sp-2);font-family:var(--display);font-weight:500;
  font-size:clamp(1.15rem,2vw,1.3rem);letter-spacing:-0.01em;max-width:46rem;
}
.home-cta a{text-underline-offset:4px}
/* ---------- connect ---------- */
.availability{
  margin-top:var(--sp-4);padding:1.1rem 1.3rem;background:var(--wash);
  border-left:3px solid var(--accent);max-width:46rem;
}
.contact-block{margin-top:var(--sp-5)}
.contact-line{
  display:flex;align-items:center;gap:.65rem;
  font-family:var(--display);font-weight:500;font-size:clamp(1.15rem,2.2vw,1.45rem);
  letter-spacing:-0.01em;margin-bottom:.9rem;
}
.contact-line a{text-underline-offset:4px}
/* ---------- footer ---------- */
footer.site{margin-top:var(--sp-10);background:var(--ink);color:#A9ADB5}
.foot{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-6);align-items:center;justify-content:space-between;padding-block:var(--sp-4)}
footer.site nav ul{display:flex;flex-wrap:wrap;gap:1.4rem;list-style:none;margin:0;padding:0}
footer.site a{color:#E9E7E2;text-decoration:none;font-weight:500;font-size:var(--fs-secondary)}
footer.site a:hover{text-decoration:underline;text-underline-offset:3px}
footer.site a:focus-visible{outline:2px solid #E9E7E2;outline-offset:3px}
/* ---------- print ---------- */
.print-only{display:none}
@media print{
  @page{margin:1.6cm}
  body{background:#fff;color:#000;font-size:8.5pt;line-height:1.5}
  p{margin-top:.2rem;margin-bottom:.2rem}
  ul,ol{margin-top:.2rem;margin-bottom:.2rem}
  body::before{display:none}
  header.site,footer.site,.skip-link,.toc,.img-action,form,dialog.viewer{display:none!important}
  .print-only{display:block;color:#444;font-size:8pt;margin:.3rem 0 1.2rem}
  .print-name{font-size:17pt;font-weight:700;color:#000;margin:0 0 .1rem}
  .print-contact{margin:.2rem 0 .5rem;font-size:7pt;overflow-wrap:break-word}
  .print-contact p{margin:.05rem 0;font-size:8pt;color:#444}
  h1{font-size:11pt;font-weight:500;color:#666;margin-top:0;margin-bottom:.15rem}
  h2{font-size:13pt;margin-top:1.1rem;margin-bottom:.15rem}
  h3{font-size:9.5pt;margin-top:.35rem;margin-bottom:.1rem}
  .skills h3{margin-top:.05rem;margin-bottom:.05rem}
  .skills ul{margin-bottom:.05rem}
  .cv-role .when{font-size:8pt;color:#555;margin-top:.15rem;margin-bottom:.25rem}
  .cv-role{padding-top:.7rem;padding-bottom:.45rem}
  .skills{grid-template-columns:1fr}
  .cv-role{border-bottom:0.4px solid #e0e0e0}
  .new-page{break-before:page}
  a{color:#000;text-decoration:none}
  #view-resume a[href^="http"]::after{content:" (" attr(href) ")";font-size:9pt;color:#555}
  #view-resume p:has(> a[href^="#/"]){display:none}
  #view-resume p:has(> a[href^="/work/"]){display:none}
  #view-resume figure{display:none}
  .wrap{padding-inline:0;max-width:100%}
  .page{padding-block:0}
  .hero{padding-block:1rem}
  .cs-thumb{display:none}
  .cs-index::before{display:none}
}


