/* Electric blue / ink. Sharp typography, solid surfaces, offset shadows. */
:root{--blue:#00fff2;--text-accent:#e4ecf2;--text-secondary:#b5c3cd;--panel:#bad3e2;--ink:#080b0e;--paper:#fff;--muted:#263f49;--line:#080b0e;--max:1240px;font-family:"Avenir Next","Segoe UI",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--ink);background:var(--blue);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;font-size:1rem;line-height:1.7}a{color:inherit;text-decoration:none}button{font:inherit}a,button,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid currentColor;outline-offset:6px}::selection{color:var(--text-accent);background:var(--ink)}.wrap{width:min(var(--max),calc(100% - 88px));margin-inline:auto}.skip{position:absolute;left:16px;top:-120px;z-index:30;color:var(--text-accent);background:var(--ink);padding:14px 22px}.skip:focus{top:16px}
/* Navigation is a single black rail, rather than a translucent floating window. */
.site-header{position:sticky;top:16px;z-index:10;display:flex;align-items:center;gap:38px;margin-top:20px;padding:19px 25px;background:var(--ink);color:var(--text-accent);box-shadow:7px 7px 0 #080b0e35;transition:box-shadow .3s,transform .3s}.site-header.is-scrolled{box-shadow:7px 7px 0 #080b0e80}.brand{font-size:2.3rem;line-height:1;font-weight:800;letter-spacing:-.09em}.brand-dot{color:var(--blue)}.main-nav{display:flex;gap:30px;margin-left:auto;font-size:.875rem;font-weight:600}.main-nav a{position:relative;padding:7px 0}.main-nav a::after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:#c4d4df;transform:scaleX(0);transform-origin:left;transition:transform .25s}.main-nav a:hover::after,.main-nav a[aria-current]::after{transform:scaleX(1)}.header-end{display:flex;align-items:center;gap:24px}.language{display:flex;gap:12px;font-size:.8125rem;font-weight:700}.language a{padding:5px 0;opacity:.7}.language a[aria-current]{opacity:1;border-bottom:2px solid currentColor}.small-button{border:1px solid #9ab2c3;padding:7px 16px;font-size:.875rem;font-weight:650;transition:background .2s,color .2s}.small-button:hover{background:var(--text-accent);color:var(--ink)}
/* The hero uses oversized lettering and an angled black typographic block. */
.hero{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:48px;padding-top:100px;position:relative}.eyebrow{margin:0 0 22px;text-transform:uppercase;font-size:.75rem;font-weight:750;letter-spacing:.13em;line-height:1.6}.hero .eyebrow{display:inline-block;border-bottom:2px solid var(--ink);padding-bottom:9px;margin-bottom:30px}.hero h1{font-size:clamp(3rem,6.8vw,6rem);font-weight:800;line-height:.99;letter-spacing:-.065em;margin:0}.hero h1 em{font-style:normal;text-decoration:underline;text-decoration-thickness:.045em;text-underline-offset:.12em}.hero-intro{max-width:540px;margin:34px 0 30px;font-size:1.125rem;line-height:1.8}.actions{display:flex;flex-wrap:wrap;gap:16px}.button{display:inline-flex;justify-content:center;align-items:center;min-height:52px;padding:14px 23px;border:2px solid var(--ink);border-radius:0;font-size:.875rem;font-weight:750;cursor:pointer;box-shadow:4px 4px 0 var(--ink);transition:transform .2s,box-shadow .2s,background .2s,color .2s;text-align:center}.primary{background:var(--ink);color:var(--text-accent);box-shadow:4px 4px 0 #080b0e45}.secondary{background:var(--panel);color:var(--ink)}.button:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}.primary:hover{box-shadow:6px 6px 0 #080b0e65}.button:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}.hero-aside{background:var(--ink);color:var(--text-accent);padding:32px 30px;align-self:center;margin:18px 12px 0;transform:rotate(-4deg);box-shadow:13px 13px 0 #080b0e30;transition:transform .4s,box-shadow .4s;border:2px solid var(--ink);position:relative}.hero-aside:hover{transform:rotate(-1deg);box-shadow:18px 18px 0 #080b0e30}.aside-label{display:block;border-bottom:1px solid #61ddff60;padding-bottom:22px;font-size:.6875rem;font-weight:650;letter-spacing:.11em}.focus-row{display:flex;align-items:baseline;gap:16px;padding:24px 0;border-bottom:1px solid #61ddff60}.focus-row span{font-size:.75rem;font-weight:700}.focus-row strong{font-size:clamp(1.35rem,2.4vw,2rem);font-weight:650;letter-spacing:-.05em;line-height:1.2}.hero-aside p{font-size:.8125rem;margin:23px 0 0;letter-spacing:.025em}.hero-bottom{grid-column:1/-1;display:flex;justify-content:space-between;gap:24px;margin-top:48px;border-top:2px solid var(--ink);padding:20px 0;font-size:.6875rem;font-weight:750;letter-spacing:.17em}
.section{padding-block:100px}h2{margin:0 0 25px;font-size:clamp(2.4rem,4.1vw,3.7rem);line-height:1.08;letter-spacing:-.055em;font-weight:750}.section-heading{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:0 85px;align-items:end;margin-bottom:48px}.section-heading>.eyebrow{grid-column:1/-1}.section-heading h2{margin:0}.section-heading>p:last-child{margin:0;max-width:430px;justify-self:end;font-size:1rem;line-height:1.85}
/* Full-width project rows: large index, project story, and a separate link rail. */
.project-grid{display:flex;flex-direction:column;gap:0}.project-card{display:grid;grid-template-columns:85px minmax(0,1fr) minmax(200px,280px);gap:35px;padding:42px 0;border-top:2px solid var(--ink);transition:opacity .7s,transform .7s;position:relative}.project-card:last-child{border-bottom:2px solid var(--ink)}.card-top{display:flex;flex-direction:column;gap:20px;align-items:flex-start;justify-content:space-between;padding-bottom:4px}.project-number{font-size:3.6rem;font-weight:800;line-height:1;letter-spacing:-.08em}.status{font-size:.6875rem;font-weight:650;line-height:1.4;text-transform:uppercase;letter-spacing:.04em}.project-role{margin:0 0 10px;text-transform:uppercase;font-size:.6875rem;font-weight:750;letter-spacing:.1em}.project-card h3{margin:0 0 8px;font-size:clamp(2rem,3.3vw,3rem);font-weight:750;letter-spacing:-.06em;line-height:1.08;transition:transform .3s}.project-card:hover h3{transform:translateX(6px)}.project-subtitle{font-size:.9375rem;font-weight:650;margin:0}.project-description{font-size:1rem;margin:22px 0;line-height:1.8;max-width:590px}.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:22px 0 0}.tags li{border:1px solid currentColor;font-size:.75rem;font-weight:650;padding:4px 9px}.card-bottom{align-self:end;padding-bottom:4px}.text-link{display:inline-block;font-size:.875rem;font-weight:750;text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.text-link:hover{text-decoration-thickness:2px}.domain{display:block;font-size:.75rem;font-weight:500;margin-top:9px;overflow-wrap:anywhere}.muted{font-size:.875rem}.card-bottom details{border-top:1px solid currentColor;margin-top:25px;padding-top:12px}summary{font-size:.875rem;font-weight:650;cursor:pointer;padding:7px 0}details p{font-size:.875rem;line-height:1.8;margin-bottom:0}.project-card.featured{color:var(--text-accent);background:var(--ink);padding:40px 32px;border:0;box-shadow:10px 10px 0 #080b0e35;margin:0 10px 45px 0;grid-template-columns:85px minmax(0,1fr) minmax(180px,250px)}.featured h3{font-size:clamp(2.8rem,4.5vw,4rem)}.featured .project-number{font-size:4.4rem}.featured .tags li{border-color:#61ddff75}.featured .card-bottom details{border-color:#61ddff75}.featured .project-role{color:var(--text-secondary)}
/* Dark skills band: a continuous table, rather than separate rounded panels. */
.skills-section{background:var(--ink);color:var(--text-accent);padding-block:95px}.skills-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid #607484;border-bottom:1px solid #607484}.skill-group{padding:32px 25px 35px 0;transition:opacity .7s,transform .7s}.skill-group+.skill-group{border-left:1px solid #61ddff60;padding-left:25px}.skill-group .project-number{font-size:.8125rem;letter-spacing:.02em}.skill-group h3{font-size:1.4rem;font-weight:650;letter-spacing:-.035em;margin:30px 0 18px}.skill-group .tags{margin-top:0}.skill-group .tags li{font-size:.75rem;border-color:#61ddff60}.skill-group p{font-size:.875rem;line-height:1.85;margin:22px 0 0;color:var(--text-secondary)}
.about-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:100px}.about-intro{position:sticky;top:145px;align-self:start}.about-intro>p:not(.eyebrow){font-size:1.0625rem;line-height:1.85;margin-bottom:28px}.about-block{border-top:2px solid var(--ink);padding-top:23px;margin-bottom:36px}.about-block h3{font-size:1.3rem;line-height:1.35;margin:0 0 20px;font-weight:750;letter-spacing:-.025em}.about-block h4{font-size:1rem;margin:22px 0 10px;font-weight:750}.about-block p:not(.eyebrow){margin:10px 0 18px}.language-list{margin:0}.language-list>div{display:flex;justify-content:space-between;gap:18px;border-bottom:1px solid #080b0e45;padding:11px 0;font-size:.875rem}.language-list dt{font-weight:700}.language-list dd{margin:0;text-align:right}.contact-section{background:var(--ink);color:var(--text-accent);padding:90px 0}.contact-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:85px;align-items:end}.contact-grid h2{font-size:clamp(2.8rem,5.2vw,4.8rem);margin:0}.contact-grid>div>p:not(.eyebrow){line-height:1.85;margin:0 0 25px}.contact-grid .primary{color:var(--ink);background:var(--text-accent);border-color:var(--text-accent);box-shadow:5px 5px 0 #61ddff45}.contact-grid .primary:hover{box-shadow:7px 7px 0 #61ddff65}.contact-address{font-size:.75rem;letter-spacing:.04em;margin-top:18px!important}.site-footer{display:flex;justify-content:space-between;gap:25px;padding-block:28px;font-size:.75rem;font-weight:650}.site-footer a{font-size:.875rem;text-decoration:underline;text-underline-offset:4px}
/* CV keeps a readable white document surface and independent print typography. */
.cv-toolbar{display:flex;align-items:center;justify-content:space-between;padding-block:24px}.print-hint{font-size:.8125rem;margin-block:0 25px}.cv-sheet{max-width:1000px;margin:0 auto 60px;padding:60px;background:#fff;color:#17212b;box-shadow:10px 10px 0 var(--ink);border:2px solid var(--ink)}.cv-heading{border-bottom:2px solid #17212b;padding-bottom:24px;margin-bottom:32px}.cv-heading h1{font-size:2.8rem;letter-spacing:-.045em;line-height:1.1;margin:0 0 12px}.cv-role{font-size:1.125rem;margin:0 0 16px}.cv-contact{display:flex;gap:25px;flex-wrap:wrap;font-size:.875rem}.cv-sheet .eyebrow{color:#17212b}.cv-sheet a{color:#284765;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.cv-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:44px}.cv-sheet h2{font-size:1.05rem;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid #ccd3db;padding-bottom:8px;margin:0 0 18px}.cv-sheet section{margin-bottom:28px}.cv-sheet h3{font-size:1rem;margin:0 0 6px;line-height:1.4}.cv-sheet h4{font-size:.875rem;margin:18px 0 6px}.cv-sheet p{font-size:.875rem;margin:0 0 10px;line-height:1.6}.cv-project{margin-bottom:23px}.cv-project h3 span{font-size:.6875rem;font-weight:400;color:#58636e;margin-left:10px;display:inline-block}.cv-project-role{color:#58636e;font-size:.75rem!important}.cv-tech{font-size:.75rem!important;color:#4b5866}.cv-project a,.cv-education a{font-size:.75rem}.cv-sidebar{border-left:1px solid #ccd3db;padding-left:26px}.cv-sidebar h3{margin-top:18px}.cv-sidebar .cv-note{font-size:.75rem;color:#58636e}.cv-sidebar .language-list>div{display:block;border-color:#e3e6eb;font-size:.8125rem}.cv-sidebar .language-list dd{text-align:left;color:#58636e;font-size:.75rem}.cv-sidebar .language-list dt{font-weight:650}
/* Motion uses transforms and opacity; it never gates content without JS. */
.section-heading,.about-intro,.about-block,.contact-grid>div{transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1)}.reveal-pending{opacity:0;transform:translateY(24px)}
@keyframes enter-up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes enter-slab{from{opacity:0;transform:translateY(30px) rotate(0)}to{opacity:1;transform:translateY(0) rotate(-4deg)}}
@media(prefers-reduced-motion:no-preference){.hero-copy>.eyebrow{animation:enter-up .6s both}.hero h1{animation:enter-up .8s .08s both}.hero-intro{animation:enter-up .8s .16s both}.hero .actions{animation:enter-up .8s .24s both}.hero-aside{animation:enter-slab .9s .15s backwards}.hero-bottom{animation:enter-up .8s .3s both}}
@media(max-width:1050px){.wrap{width:calc(100% - 52px)}.site-header{gap:25px}.main-nav{gap:20px}.header-end{gap:18px}.hero{gap:30px;padding-top:80px}.hero-aside{padding:25px 22px}.hero h1{font-size:clamp(3.1rem,6.4vw,5rem)}.focus-row{gap:12px}.project-card{grid-template-columns:60px minmax(0,1fr) minmax(160px,220px);gap:25px}.project-card.featured{grid-template-columns:60px minmax(0,1fr) minmax(160px,200px);padding:30px 25px;gap:25px}.project-number{font-size:3rem}.featured .project-number{font-size:3.4rem}.section-heading{column-gap:45px}.about-grid,.contact-grid{gap:55px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-group:nth-child(3){border-left:0;padding-left:0;border-top:1px solid #61ddff60}.skill-group:nth-child(4){border-top:1px solid #61ddff60}.cv-sheet{margin-inline:25px;padding:40px}}
@media(max-width:720px){.wrap{width:calc(100% - 36px)}html{scroll-padding-top:155px}.site-header{flex-wrap:wrap;gap:16px;top:8px;margin-top:10px;padding:16px 18px;box-shadow:5px 5px 0 #080b0e35}.main-nav{order:3;width:100%;margin:0;justify-content:space-between;gap:12px}.header-end{margin-left:auto}.brand{font-size:2rem}.hero{grid-template-columns:1fr;padding-top:60px;gap:40px}.hero h1{font-size:clamp(3.15rem,10.1vw,4.8rem)}.hero-intro{font-size:1rem;margin-top:30px}.hero-aside{margin:12px 14px 0;max-width:500px;width:calc(100% - 28px);padding:30px;transform:rotate(-3deg)}.focus-row strong{font-size:1.75rem}.focus-row{padding:19px 0}.hero-bottom{flex-wrap:wrap;gap:12px;margin-top:28px;font-size:.625rem;letter-spacing:.12em}.section{padding-block:70px}.section-heading{display:block;margin-bottom:35px}.section-heading h2{margin-bottom:22px}.section-heading>p:last-child{max-width:none}.project-card,.project-card.featured{grid-template-columns:45px minmax(0,1fr);gap:20px;padding:32px 0}.project-card.featured{padding:28px 22px;margin-right:8px;box-shadow:8px 8px 0 #080b0e35}.card-top{justify-content:flex-start;gap:15px}.card-top .status{font-size:.625rem;writing-mode:vertical-rl;letter-spacing:.05em;margin-top:6px}.project-number,.featured .project-number{font-size:2.7rem}.project-card h3{font-size:2.2rem}.featured h3{font-size:2.65rem}.card-bottom{grid-column:2}.project-description{margin-top:20px;font-size:.9375rem}.skills-grid{column-gap:0}.skill-group{padding-right:20px}.skill-group+.skill-group{padding-left:20px}.skill-group:nth-child(3){padding-left:0}.skill-group h3{font-size:1.25rem}.about-grid,.contact-grid{grid-template-columns:1fr;gap:35px}.about-intro{position:static}.contact-section{padding:65px 0}.contact-grid h2{font-size:clamp(2.8rem,9vw,4rem)}.site-footer{flex-wrap:wrap;gap:15px}.site-footer span:nth-child(2){order:3;width:100%}.cv-toolbar{flex-wrap:wrap;gap:18px}.cv-toolbar .header-end{margin-left:0}.cv-sheet{margin-inline:12px;padding:28px 23px;box-shadow:5px 5px 0 var(--ink)}.cv-layout{grid-template-columns:1fr;gap:0}.cv-sidebar{padding:0;border:0}.cv-sidebar .language-list>div{display:flex}.cv-sidebar .language-list dd{text-align:right}.cv-heading h1{font-size:2.2rem}.cv-contact{gap:10px 22px}}
@media(max-width:390px){.main-nav{font-size:.8125rem}.site-header{padding-inline:13px}.header-end{gap:15px}.small-button{padding:6px 12px}.hero h1{font-size:3.1rem}.hero .eyebrow{font-size:.6875rem;letter-spacing:.08em}.actions .button{width:100%}.hero-aside{padding:24px}.focus-row strong{font-size:1.5rem}.project-card.featured{padding:25px 18px;gap:16px}.project-card h3{font-size:2rem}.featured h3{font-size:2.4rem}.skills-grid{grid-template-columns:1fr}.skill-group+.skill-group{border-left:0;padding-left:0;border-top:1px solid #61ddff60}.language-list>div{display:block}.language-list dd{text-align:left}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal-pending{opacity:1;transform:none}.hero-aside,.hero-aside:hover{transform:none}}
@page{size:A4;margin:14mm 13mm}
@media print{:root{background:#fff;color:#17212b}html,body{background:#fff;color:#17212b;font-size:10pt}.cv-toolbar,.print-hint,.skip{display:none!important}.reveal-pending{opacity:1!important;transform:none!important}.cv-sheet{width:auto;max-width:none;padding:0;margin:0;border:0;box-shadow:none}.cv-heading{margin-bottom:7mm;padding-bottom:5mm;break-after:avoid}.cv-heading h1{font-size:27pt}.cv-heading .eyebrow{font-size:8pt;margin-bottom:3mm}.cv-role{font-size:11pt}.cv-contact{font-size:9pt}.cv-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:8mm}.cv-sidebar{border-left:1px solid #ccd3db;padding-left:5mm}.cv-sheet h2{font-size:10pt;margin-bottom:3mm;padding-bottom:2mm;break-after:avoid}.cv-sheet h3{font-size:9.5pt;break-after:avoid}.cv-sheet h4{font-size:9pt;break-after:avoid}.cv-sheet p{font-size:9pt;line-height:1.45;margin-bottom:2mm}.cv-sheet section{margin-bottom:5mm}.cv-project{margin-bottom:4mm;break-inside:avoid}.cv-project-role,.cv-tech,.cv-project a,.cv-education a,.cv-sidebar .cv-note{font-size:8pt!important}.cv-project h3 span{font-size:7.5pt}.cv-sheet a{color:#17212b;text-decoration:none}.cv-sidebar .language-list>div{display:block;break-inside:avoid}.cv-sidebar .language-list dd{text-align:left;font-size:8pt}.cv-sidebar .language-list dt{font-size:9pt}.cv-sidebar section{break-inside:avoid}.portfolio .site-header,.portfolio .hero-aside,.portfolio .hero-bottom,.portfolio .actions,.portfolio .site-footer{display:none}.portfolio .hero,.portfolio .section,.portfolio .contact-section{display:block;padding:6mm 0;background:#fff;color:#17212b}.portfolio .wrap{width:100%}.portfolio h1{font-size:24pt}.portfolio h2{font-size:18pt}.portfolio .section-heading{display:block}.portfolio .project-card{background:#fff;color:#17212b;box-shadow:none;transform:none;margin:0;padding:5mm 0;break-inside:avoid}.portfolio .button,.portfolio details{display:none}.portfolio .about-intro{position:static}.portfolio .card-top .status{writing-mode:horizontal-tb}.portfolio .skill-group p,.portfolio .featured .project-role{color:#17212b}}

/* Quiet interface surfaces, with stable contrast over the moving blue field. */
.portfolio .hero h1{font-weight:750;line-height:1.07;letter-spacing:-.055em}
.portfolio h2{font-weight:700;line-height:1.13;letter-spacing:-.045em}
.portfolio .hero-intro,.portfolio .section-heading>p:last-child,.portfolio .about-intro>p:not(.eyebrow){font-weight:500;line-height:1.85;color:#101d29}
.site-header{background:#0b1219;box-shadow:5px 5px 0 #0005,0 16px 32px #0002}
.site-header.is-scrolled{box-shadow:5px 5px 0 #0007,0 16px 32px #0003}
.hero-aside{background:#0d1821;border-color:#263744;box-shadow:9px 9px 0 #0005,0 20px 45px #0002;border-radius:4px}
.hero-aside:hover{box-shadow:12px 12px 0 #0005,0 20px 45px #0002}
.aside-label,.focus-row{border-color:#607484}.aside-label,.hero-aside p{color:var(--text-secondary)}
.button{border-width:1px;border-radius:4px;font-weight:650;min-height:52px;box-shadow:3px 3px 0 #0006}
.primary{background:#0d1821;color:var(--text-accent);border-color:#283b49;box-shadow:3px 3px 0 #0006}
.secondary{background:var(--panel);color:#101d29;border-color:#1a3142;box-shadow:3px 3px 0 #0005}
.button:hover,.primary:hover{box-shadow:5px 5px 0 #0007}
.contact-grid .primary{background:#d2e0e9;color:#101d29;border-color:#d2e0e9;box-shadow:3px 3px 0 #597485}
.contact-grid .primary:hover{box-shadow:5px 5px 0 #597485}
.project-grid{background:#bad3e2f5;border:1px solid #132432;box-shadow:8px 8px 0 #0004;padding-inline:32px}
.project-card{border-color:#718c9f;color:#101d29;gap:32px}
.project-card.featured{margin:0 -32px;padding:40px 32px;box-shadow:none;background:#0d1821;color:var(--text-accent);border:0}
.project-card:last-child{border-bottom:0}
.project-card h3{font-weight:700;letter-spacing:-.04em;line-height:1.15}
.project-role,.status{font-size:.75rem;letter-spacing:.05em}.status{font-weight:600}
.project-description{font-weight:450;line-height:1.85}
.project-card .tags li{border-color:#7692a5;background:#ffffff12;border-radius:3px;font-size:.8125rem;font-weight:550}
.featured .tags li{border-color:#5b7385;background:#ffffff05}
.featured .project-description,.featured .project-role,.featured .status,.featured .domain,.featured details p{color:var(--text-secondary)}
.featured .card-bottom details{border-color:#5b7385}
.card-bottom summary{font-weight:600}.card-bottom details{border-color:#7692a5}
.skills-section,.contact-section{background:#0d1821;color:var(--text-accent)}
.skill-group+.skill-group,.skill-group .tags li{border-color:#526b7d}
.skill-group .tags li{font-weight:550}.skill-group p{color:var(--text-secondary);font-size:.9375rem}
.contact-grid>div>p:not(.eyebrow){color:var(--text-secondary)}
.about-details{background:#bad3e2f5;border:1px solid #132432;padding:30px 32px 0;box-shadow:8px 8px 0 #0004;color:#101d29}
.about-block{border-color:#718c9f}.about-block:first-child{border-top:0;padding-top:0}.about-block h3{font-weight:700}.about-block h4{font-weight:650}.language-list>div{border-color:#7692a5}
.site-footer{font-weight:600}.small-button{border-radius:3px}
@media(max-width:720px){.project-grid{padding-inline:22px}.project-card.featured{margin:0 -22px;padding:28px 22px;gap:20px}.project-card{gap:20px}.about-details{padding:26px 24px 0}.card-top .status{font-size:.6875rem}.hero-aside{border-radius:3px}}
@media(max-width:390px){.project-grid{padding-inline:16px}.project-card.featured{margin-inline:-16px;padding:25px 16px;gap:16px}.project-card{gap:16px}.about-details{padding-inline:20px}}
@media print{.project-grid,.about-details{background:#fff;color:#17212b;border:0;box-shadow:none;padding:0}.project-card.featured{margin:0;padding:5mm 0;background:#fff;color:#17212b}.featured .project-description,.featured .project-role,.featured .status,.featured .domain,.featured details p{color:#17212b}}

/* Explicit backdrop layers: above the body paint, beneath all content. */
.portfolio{position:relative;isolation:isolate;background:var(--blue)}
.portfolio>main,.portfolio>.site-footer{position:relative;z-index:1}
.background-field{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:#0088f5}
.background-mesh{position:absolute;inset:-40vmax;background:
 radial-gradient(ellipse 24% 30% at 38% 35%,#00fff2 0%,#00fff2c0 32%,#00fff200 76%),
 radial-gradient(ellipse 26% 28% at 64% 59%,#00e7f3 0%,#00d8f6b0 34%,#00d8f600 76%),
 radial-gradient(ellipse 24% 23% at 40% 66%,#0088f5 0%,#0088f5aa 38%,#0088f500 80%),
 radial-gradient(ellipse 23% 25% at 65% 32%,#00b9ff 0%,#00b9ff99 36%,#00b9ff00 78%),#0088f5;
 transform-origin:center;animation:blue-mesh-flow 60s linear infinite;transform:rotate(0deg);will-change:transform}
.background-grain{position:absolute;inset:0;background-image:url("grain.png");background-size:256px 256px;background-repeat:repeat;opacity:.7}
@keyframes blue-mesh-flow{0%{transform:rotate(0deg) scale(1)}25%{transform:rotate(90deg) scale(1.035)}50%{transform:rotate(180deg) scale(1.015)}75%{transform:rotate(270deg) scale(1.04)}100%{transform:rotate(360deg) scale(1)}}
@media(prefers-reduced-motion:reduce){.background-mesh{animation:none;transform:rotate(20deg);will-change:auto}}
@media print{.portfolio{background:#fff}.background-field{display:none}.portfolio>main,.portfolio>.site-footer{z-index:auto}}

.motion-toggle{background:#0d1821;color:#e4ecf2;border:1px solid #526b7d;border-radius:3px;padding:9px 13px;font:inherit;font-size:.75rem;letter-spacing:0;text-transform:none;cursor:pointer;margin-left:auto}
.motion-toggle:hover{background:#213241}.motion-toggle[aria-pressed="true"]{background:#bad3e2;color:#101d29}
.background-paused .background-mesh{animation-play-state:paused}
.direct-contact{display:flex;align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:20px}.email-address{font-size:1rem;overflow-wrap:anywhere;text-decoration:underline;text-underline-offset:4px}.site-footer{flex-wrap:wrap}
.info-page{background:#bad3e2;color:#101d29}.legal-sheet{max-width:900px;padding:45px 0 80px}.legal-sheet h1{font-size:clamp(2rem,5vw,3.4rem);line-height:1.15;letter-spacing:-.04em;margin:0 0 45px}.legal-sheet h2{font-size:1.4rem;line-height:1.35;margin:35px 0 12px}.legal-sheet p{font-size:1rem;line-height:1.85}.legal-sheet a:not(.button){text-decoration:underline;text-underline-offset:4px}.legal-contact{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.legal-date{font-size:.8125rem!important;margin-top:45px}.info-page .cv-toolbar{color:#101d29}
@media(max-width:720px){.motion-toggle{margin-left:0}.hero-bottom{align-items:center}.legal-sheet{padding-top:30px}}
@media print{.motion-toggle{display:none}.legal-sheet{padding:0}.info-page .cv-toolbar{display:none}}
[hidden]{display:none!important}.consent-banner{position:fixed;inset:auto 0 0;z-index:50;color:#e4ecf2;background:#0d1821;border-top:1px solid #607484;box-shadow:0 -10px 40px #0004;padding:22px 0}.consent-inner{display:grid;grid-template-columns:1fr auto;gap:30px;align-items:center}.consent-banner h2{font-size:1.125rem;letter-spacing:0;line-height:1.4;margin:0 0 8px}.consent-banner p{font-size:.875rem;line-height:1.7;margin:0;max-width:720px;color:#b5c3cd}.consent-banner a{text-decoration:underline;text-underline-offset:3px}.consent-actions{display:flex;gap:14px;flex-wrap:wrap}.consent-actions .button{background:#bad3e2;color:#101d29;border-color:#7692a5;min-height:46px}.consent-settings{font:inherit;color:inherit;background:transparent;border:0;text-decoration:underline;text-underline-offset:4px;cursor:pointer;padding:0}.privacy-footer{display:flex;gap:25px;justify-content:space-between;padding-block:24px;font-size:.8125rem}
@media(max-width:900px){.consent-inner{grid-template-columns:1fr;gap:18px}.consent-actions .button{flex:1}.consent-banner{max-height:80dvh;overflow-y:auto}}
@media print{.consent-banner,.consent-settings,.privacy-footer{display:none!important}}

/* Shared component vocabulary: matte ink, slate panels and restrained shadows. */
:root{--surface-ink:#0d1821;--surface-slate:#bad3e2;--surface-line:#718c9f;--ui-radius:4px;--ui-shadow:5px 5px 0 #0004}
.site-header{background:var(--surface-ink);border:1px solid #263744;border-radius:var(--ui-radius);box-shadow:var(--ui-shadow)}
.site-header.is-scrolled{box-shadow:5px 5px 0 #0006}
.project-grid,.about-details{border-radius:var(--ui-radius);box-shadow:var(--ui-shadow)}
.project-card.featured{border-radius:3px 3px 0 0}
.hero-aside{border-radius:var(--ui-radius);box-shadow:8px 8px 0 #0004}
.hero-aside:hover{box-shadow:10px 10px 0 #0005}
.button,.small-button,.motion-toggle{border-radius:var(--ui-radius)}
.language{gap:5px}.language a{display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:34px;padding:4px 7px;border:1px solid transparent;border-radius:3px;opacity:1}
.language a[aria-current]{border-color:currentColor;background:#ffffff08}
/* One compact closing panel, aligned with the project's content grid. */
.site-footer{display:block;position:relative;background:transparent;color:#101d29;border:0;padding:44px 0;font-size:.875rem;font-weight:450}
.footer-frame{background:#bad3e2f5;border:1px solid #132432;border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);padding:0 30px}
.footer-main{display:flex;justify-content:space-between;align-items:center;gap:32px;padding:30px 0}
.footer-identity{display:flex;align-items:center;gap:19px;min-width:0}
.site-footer .brand{display:inline-flex;align-items:center;justify-content:center;flex:0 0 62px;width:62px;height:62px;background:var(--surface-ink);color:#e4ecf2;border-radius:3px;font-size:2.35rem;line-height:1;text-decoration:none;padding-right:4px}
.footer-name{font-size:1rem;font-weight:650;letter-spacing:-.015em;margin:0 0 4px}.footer-description{font-size:.875rem;line-height:1.65;color:#354e60;margin:0;max-width:330px}
.footer-contact{display:grid;grid-template-columns:1fr auto;gap:5px 22px;align-items:baseline;justify-items:start;flex-shrink:0}
.footer-contact .footer-label{grid-column:1/-1;margin:0}.footer-label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.09em;font-weight:700;color:#354e60;margin:0}
.site-footer a{font-size:.875rem;line-height:1.65;text-decoration:none}.site-footer a:hover,.site-footer button:hover{text-decoration:underline;text-underline-offset:4px}.site-footer .brand:hover{text-decoration:none}
.footer-email{font-weight:650;overflow-wrap:anywhere}
.footer-navigation-row{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:15px 0;border-top:1px solid var(--surface-line)}
.footer-navigation{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.footer-navigation .footer-label{margin-right:8px}.footer-navigation>a{display:inline-flex;align-items:center;min-height:36px}
.footer-language{display:flex;gap:3px;border:1px solid #7692a5;border-radius:var(--ui-radius);padding:3px;flex-shrink:0}
.footer-language a{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:4px 11px;font-size:.8125rem;color:#263f51;border-radius:2px}
.footer-language a[aria-current]{color:#e4ecf2;background:var(--surface-ink);text-decoration:none}
.footer-bottom{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:17px 0;border-top:1px solid var(--surface-line)}
.footer-bottom small{font-size:.75rem;color:#354e60}.footer-legal{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.footer-legal a,.footer-legal button{font-size:.75rem;color:#354e60}
.footer-legal .consent-settings{text-decoration:none}.site-footer a:focus-visible,.site-footer button:focus-visible{outline:2px solid #101d29;outline-offset:4px}.site-footer .brand:focus-visible{outline-offset:5px}
@media(max-width:1000px){.footer-main{align-items:flex-start}.footer-contact{grid-template-columns:1fr;gap:5px}.footer-contact .footer-label{grid-column:auto}.footer-navigation{gap:18px}.footer-navigation .footer-label{margin-right:0}}
@media(max-width:720px){.site-footer{display:block;padding:28px 0}.footer-frame{padding:0 22px}.footer-main{flex-direction:column;gap:24px;padding:25px 0}.footer-contact{grid-template-columns:1fr auto;gap:5px 22px}.footer-contact .footer-label{grid-column:1/-1}.footer-identity{gap:16px}.site-footer .brand{flex-basis:54px;width:54px;height:54px;font-size:2rem}.footer-navigation-row{flex-direction:column;align-items:flex-start;gap:14px;padding:16px 0}.footer-navigation{gap:10px 20px}.footer-navigation .footer-label{flex-basis:100%}.footer-bottom{align-items:flex-start;flex-direction:column;gap:10px;padding:17px 0}.footer-legal{gap:10px 18px}.footer-description{font-size:.8125rem}.site-footer .footer-name{font-size:1rem}}
@media(max-width:390px){.footer-frame{padding-inline:17px}.footer-contact{grid-template-columns:1fr}.footer-contact .footer-label{grid-column:auto}.footer-identity{gap:12px}.footer-legal{flex-direction:column;align-items:flex-start}}
@media print{.site-footer{display:none!important}.project-grid,.about-details,.hero-aside{box-shadow:none}}

/* Skills and contact share the contained editorial panels used by projects. */
.skills-section,.contact-section{background:transparent;color:#101d29}
.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));background:#bad3e2f5;border:1px solid #132432;border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);overflow:hidden}
.skills-grid .skill-group{display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:auto auto 1fr;gap:18px 18px;padding:32px;border:0;margin:0;align-content:start}
.skills-grid .skill-group:nth-child(even){border-left:1px solid var(--surface-line)}
.skills-grid .skill-group:nth-child(n+3){border-top:1px solid var(--surface-line)}
.skill-group .project-number{grid-column:1;grid-row:1;font-size:.8125rem;font-weight:650;letter-spacing:.04em;padding-top:7px;color:#435e71}
.skills-grid .skill-group h3{grid-column:2;margin:0;font-size:1.4rem;line-height:1.35;font-weight:700;letter-spacing:-.035em}
.skills-grid .skill-group .tags{grid-column:2;margin:0;align-content:start;gap:7px}
.skills-grid .skill-group .tags li{border:1px solid #7692a5;border-radius:3px;background:#ffffff12;font-size:.8125rem;font-weight:550}
.skills-grid .skill-group p{grid-column:2;margin:0;color:#30495b;font-size:.9375rem;line-height:1.8;max-width:44ch}
.contact-section{padding:30px 0 0}
.contact-grid{background:var(--surface-ink);border:1px solid #263744;border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);color:var(--text-accent);gap:0;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:stretch}
.contact-grid>div{padding:40px 32px;min-width:0}
.contact-grid>div+div{border-left:1px solid #526b7d;display:flex;flex-direction:column;justify-content:center}
.contact-grid h2{font-size:clamp(2.3rem,4vw,3.7rem);line-height:1.13;margin:0;max-width:13ch}
.contact-grid>div>p:not(.eyebrow){font-size:1rem;line-height:1.85;margin:0 0 28px}
.contact-actions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:16px 18px;border-top:1px solid #526b7d;padding-top:24px}
.contact-actions .direct-contact{display:contents}
.contact-actions .button{margin:0;min-height:52px;white-space:normal;text-align:center}
.contact-actions .primary{order:0}
.contact-actions .secondary{order:1;background:transparent;color:var(--text-accent);border-color:#829bad;box-shadow:3px 3px 0 #0006}
.contact-actions .secondary:hover{background:#ffffff0a;box-shadow:5px 5px 0 #0007}
.contact-actions .email-address{order:2;flex-basis:100%;font-size:.9375rem;color:var(--text-secondary);text-underline-offset:5px}
@media(max-width:1050px){.skills-grid .skill-group{padding:28px 24px;gap:16px 12px;grid-template-columns:28px minmax(0,1fr)}.contact-grid>div{padding:32px 26px}}
@media(max-width:720px){.skills-grid{grid-template-columns:1fr}.skills-grid .skill-group{padding:26px 22px;grid-template-columns:28px minmax(0,1fr)}.skills-grid .skill-group:nth-child(even){border-left:0}.skills-grid .skill-group+.skill-group{border-top:1px solid var(--surface-line)}.contact-section{padding-top:0}.contact-grid{grid-template-columns:1fr;gap:0}.contact-grid>div{padding:28px 22px}.contact-grid>div+div{border-left:0;border-top:1px solid #526b7d}.contact-grid h2{max-width:none;font-size:clamp(2.2rem,8vw,3.4rem)}.contact-actions{gap:16px 12px}}
@media(max-width:390px){.skills-grid .skill-group{padding-inline:16px;gap:14px 10px;grid-template-columns:24px minmax(0,1fr)}.skills-grid .skill-group h3{font-size:1.25rem}.contact-grid>div{padding-inline:20px}.contact-actions .button{width:100%}}
@media print{.skills-grid,.contact-grid{background:#fff;color:#17212b;box-shadow:none;border:0}.skills-grid .skill-group{break-inside:avoid}.skills-grid .skill-group p,.skill-group .project-number,.contact-grid>div>p:not(.eyebrow),.contact-actions .email-address{color:#17212b}.contact-grid>div{padding:5mm 0}.contact-grid>div+div{border:0}.contact-actions{padding:0;border:0}}

/* A shared title treatment for each portfolio chapter. */
.portfolio .section-kicker{display:flex;align-items:center;gap:14px;margin:0 0 26px;font-size:.75rem;line-height:1.4;letter-spacing:.1em;font-weight:700;min-width:0}
.section-kicker .section-index{display:inline-flex;align-items:center;justify-content:center;flex:0 0 38px;height:38px;background:var(--surface-ink);color:var(--text-accent);border:1px solid #263744;border-radius:var(--ui-radius);font-size:.8125rem;letter-spacing:.02em;font-variant-numeric:tabular-nums;box-shadow:3px 3px 0 #0003}
.section-slash{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.section-label{flex-shrink:0}
.section-kicker::after{content:"";flex:1;min-width:20px;height:1px;background:currentColor;opacity:.35;transform-origin:left;transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.reveal-pending .section-kicker::after{transform:scaleX(.2)}
.portfolio .section-title{font-size:clamp(2.4rem,4.3vw,3.9rem);font-weight:750;line-height:1.08;letter-spacing:-.05em;text-wrap:balance;max-width:19ch;margin:0}
.section-heading{column-gap:64px;row-gap:0;align-items:end}
.section-heading>p:last-child{padding-bottom:3px}
.about-intro .section-title{margin-bottom:28px}
.contact-grid .section-index{background:#c6dae7;color:#101d29;border-color:#c6dae7;box-shadow:3px 3px 0 #0006}
.contact-grid .section-title{font-size:clamp(2.3rem,4vw,3.7rem);max-width:15ch}
@media(max-width:1050px){.section-heading{column-gap:40px}}
@media(max-width:720px){.portfolio .section-kicker{margin-bottom:22px;gap:12px}.section-kicker .section-index{flex-basis:34px;height:34px}.portfolio .section-title{font-size:clamp(2.2rem,7.6vw,3.4rem);max-width:21ch}.section-heading .section-title{margin-bottom:22px}.section-heading>p:last-child{padding-bottom:0}}
@media(prefers-reduced-motion:reduce){.section-kicker::after{transition:none;transform:none}}
@media print{.portfolio .section-kicker{margin-bottom:3mm}.section-kicker .section-index,.contact-grid .section-index{background:transparent;color:#17212b;box-shadow:none;border-color:#ccd3db;flex-basis:8mm;height:8mm}.portfolio .section-title{font-size:18pt;max-width:none}.section-kicker::after{transform:none;transition:none}}

/* CV: a continuous reading order on screen, paper and text extraction. */
.cv-page{background:#d8e4eb;color:#17212b}
.cv-page .cv-toolbar{gap:20px;align-items:center}
.cv-toolbar .header-end{flex-wrap:wrap;justify-content:flex-end;gap:12px}
.cv-page .cv-sheet{max-width:940px;padding:52px 62px;background:#fff;border:1px solid #b4c5d1;border-top:5px solid #17212b;border-radius:4px;box-shadow:var(--ui-shadow)}
.cv-sheet .cv-heading{border-bottom:1px solid #899ba8;padding-bottom:23px;margin-bottom:25px}
.cv-heading .eyebrow{font-size:.6875rem;color:#516474;letter-spacing:.1em;margin:0 0 12px}
.cv-sheet .cv-heading h1{font-size:2.75rem;font-weight:750;line-height:1.1;letter-spacing:-.035em;margin-bottom:10px}
.cv-sheet .cv-role{font-size:1.125rem;line-height:1.5;color:#30495b;margin-bottom:14px}
.cv-sheet .cv-contact{display:block;font-size:.8125rem;line-height:1.8;margin:0;overflow-wrap:anywhere}
.cv-sheet .cv-contact span{margin:0 8px;color:#667b8b}
.cv-sheet .cv-layout{display:block}
.cv-sheet section{margin-bottom:25px}
.cv-sheet section:last-child{margin-bottom:0}
.cv-sheet h2{font-size:.875rem;line-height:1.4;letter-spacing:.045em;font-weight:750;text-transform:uppercase;border-bottom:1px solid #c4d1da;padding-bottom:7px;margin:0 0 12px}
.cv-sheet h3{font-size:1rem;font-weight:700;line-height:1.5;margin:0 0 2px}
.cv-sheet p,.cv-sheet li{font-size:.9375rem;line-height:1.65}
.cv-sheet p{margin:0 0 9px}
.cv-sheet .cv-project{margin:0 0 17px}
.cv-sheet .cv-project:last-child{margin-bottom:0}
.cv-sheet .cv-project-role{font-size:.8125rem!important;line-height:1.55;color:#445d70;margin:0 0 6px}
.cv-sheet .cv-project-role a,.cv-sheet .cv-education a{font-size:inherit}
.cv-sheet ul{padding-left:19px;margin:0}
.cv-sheet li{padding-left:3px;margin:0 0 4px}
.cv-sheet .cv-skills{list-style:none;padding:0}
.cv-sheet .cv-skills li{padding:0;margin-bottom:5px}
.cv-sheet strong{font-weight:650}
.cv-sheet a{color:#253c4e;text-decoration-thickness:1px;text-underline-offset:3px}
@media(max-width:720px){.cv-page .cv-sheet{padding:30px 24px;margin-inline:12px}.cv-toolbar .header-end{justify-content:flex-start}.cv-page .cv-toolbar{align-items:flex-start}.cv-heading .cv-contact span{margin:0 3px}.cv-sheet .cv-heading h1{font-size:2.35rem}}
@media print{@page{size:A4;margin:12mm 14mm}.cv-page{background:#fff}.cv-page .cv-sheet{width:auto;max-width:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;font-family:Arial,Helvetica,sans-serif}.cv-sheet .cv-heading{margin-bottom:4mm;padding-bottom:3mm}.cv-heading .eyebrow{display:none}.cv-sheet .cv-heading h1{font-size:24pt;margin:0 0 2mm;letter-spacing:0}.cv-sheet .cv-role{font-size:10.5pt;margin:0 0 2mm;color:#17212b}.cv-sheet .cv-contact{font-size:9pt;line-height:1.5}.cv-sheet .cv-layout{display:block}.cv-sheet section{margin-bottom:3.5mm}.cv-sheet h2{font-size:10pt;letter-spacing:0;margin:0 0 2mm;padding-bottom:1.3mm;break-after:avoid}.cv-sheet h3{font-size:10pt;margin-bottom:.5mm;break-after:avoid}.cv-sheet p,.cv-sheet li{font-size:9.5pt;line-height:1.32}.cv-sheet p{margin:0 0 1.5mm}.cv-sheet .cv-project{margin-bottom:2.5mm;break-inside:avoid}.cv-sheet .cv-project-role{font-size:9pt!important;line-height:1.3;margin-bottom:1mm;color:#17212b}.cv-sheet .cv-skills li,.cv-sheet li{margin:0 0 .6mm}.cv-sheet a{color:#17212b;text-decoration:none}.cv-sheet section:last-child{margin-bottom:0}.cv-sheet .cv-education a{font-size:inherit}.cv-sheet ul{padding-left:4mm}.cv-sheet .cv-skills{padding:0}}

/* Separate destinations for a project with two public websites. */
.project-extra-link{display:block;margin-top:18px;padding-top:16px;border-top:1px solid #7692a5}.work-philosophy h3{max-width:28ch}.work-philosophy p{line-height:1.85}

/* The collaboration offer follows the contact panel's existing dividers. */
.collaboration-offer{margin:0 0 24px}.contact-label{margin:0 0 12px;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--text-secondary)}
.collaboration-offer ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;list-style:none;padding:0;margin:0 0 16px}.collaboration-offer li{font-size:.9375rem;line-height:1.5;padding-left:13px;border-left:2px solid #829bad}
.collaboration-terms{font-size:.8125rem;line-height:1.7;color:var(--text-secondary);margin:0}
@media(max-width:390px){.collaboration-offer ul{grid-template-columns:1fr}}

/* Screenshot viewer shares the portfolio's ink/slate component palette. */
.polareg-gallery{border:0!important;padding:0!important;margin-top:22px!important}.gallery-trigger{width:100%;background:#c6dae7;color:#101d29;border-color:#829bad;list-style:none}.gallery-trigger::-webkit-details-marker{display:none}
.gallery-thumbnails{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.gallery-thumbnails a{display:block;border:2px solid #526b7d;border-radius:4px;overflow:hidden}.gallery-thumbnails img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}.gallery-thumbnails a[aria-current]{border-color:#e4ecf2}
.gallery-dialog{width:min(1080px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:24px;background:#0d1821;color:#e4ecf2;border:1px solid #607484;border-radius:4px;box-shadow:8px 8px 0 #0006;overflow:auto}.gallery-dialog::backdrop{background:#050b13dd;backdrop-filter:blur(8px)}
.gallery-dialog-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.gallery-dialog-header h2{font-size:1.6rem;margin:0;letter-spacing:-.03em}.gallery-full-image{display:block;width:100%;height:min(55dvh,620px);object-fit:contain;background:#080f16;border-radius:3px}.gallery-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:18px}.gallery-controls span{white-space:nowrap;font-size:.875rem}.gallery-dialog .gallery-thumbnails{grid-template-columns:repeat(6,minmax(0,1fr))}.gallery-dialog .button{min-height:42px;padding:10px 15px}
@media(max-width:720px){.gallery-dialog{padding:18px}.gallery-dialog-header{align-items:flex-start}.gallery-dialog-header h2{font-size:1.3rem}.gallery-dialog .gallery-thumbnails{grid-template-columns:repeat(3,minmax(0,1fr))}.gallery-controls{gap:10px}.gallery-controls .button{font-size:.75rem;padding:8px 10px}}
@media print{.polareg-gallery,.gallery-dialog{display:none!important}}

/* The gallery entry is a project link; its viewer uses the shared panel palette. */
.polareg-gallery .gallery-trigger{display:inline-block;width:auto;min-height:0;padding:7px 0;background:transparent;color:inherit;border:0;border-radius:0;box-shadow:none;font-size:.875rem;font-weight:750;text-align:left;text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px;cursor:pointer;transform:none}
.polareg-gallery .gallery-trigger:hover{background:transparent;box-shadow:none;transform:none;text-decoration-thickness:2px}
.gallery-dialog{padding:24px;background:#bad3e2f5;color:#101d29;border:1px solid #132432;border-radius:var(--ui-radius);box-shadow:var(--ui-shadow)}
.gallery-dialog-header{margin:-24px -24px 24px;padding:24px;background:var(--surface-ink);color:var(--text-accent);border-bottom:1px solid #526b7d}
.gallery-full-image{border:1px solid #718c9f;border-radius:var(--ui-radius);background:var(--surface-ink)}
.gallery-controls{padding-top:20px;border-top:1px solid #718c9f}.gallery-controls .button{border-color:#1a3142;background:var(--surface-slate);color:#101d29;box-shadow:3px 3px 0 #0005}
.gallery-controls .button:hover{box-shadow:5px 5px 0 #0007}
.gallery-thumbnails a{border:1px solid #718c9f;border-radius:var(--ui-radius)}
.gallery-dialog .gallery-thumbnails a[aria-current]{border:2px solid #132432;box-shadow:3px 3px 0 #0004}
/* CV is another page in the portfolio, with a paper-only print treatment. */
.cv-page{position:relative;isolation:isolate;background:var(--blue);color:#101d29}
.cv-page>main,.cv-page>.site-footer,.cv-actions,.cv-page>.print-hint{position:relative;z-index:1}
.cv-actions{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:36px;margin-bottom:18px}
.cv-action-buttons{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:14px}.cv-action-buttons .motion-toggle{margin:0}
.cv-page>.print-hint{font-size:.8125rem;color:#101d29;margin-bottom:28px}
.cv-page .cv-sheet{background:#bad3e2f5;border:1px solid #132432;border-top:5px solid var(--surface-ink);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow)}
.cv-sheet .cv-heading{border-color:#718c9f}.cv-sheet h2{border-color:#718c9f}.cv-sheet .cv-role,.cv-sheet .cv-project-role,.cv-sheet .cv-heading .eyebrow{color:#30495b}
@media(max-width:720px){.gallery-dialog{padding:18px}.gallery-dialog-header{margin:-18px -18px 18px;padding:18px}.cv-actions{flex-direction:column;align-items:flex-start;margin-top:28px;gap:18px}.cv-action-buttons{justify-content:flex-start;gap:12px}.cv-actions .button{padding:12px 16px}.cv-page .cv-sheet{margin-inline:18px}.cv-page>.print-hint{line-height:1.7}}
@media print{.cv-page{background:#fff;color:#17212b}.cv-page>.site-header,.cv-actions,.cv-page>.print-hint{display:none!important}.cv-page .cv-sheet{background:#fff;border:0;box-shadow:none;margin:0;padding:0;max-width:none}.cv-sheet .cv-role,.cv-sheet .cv-project-role{color:#17212b}.cv-sheet h2,.cv-sheet .cv-heading{border-color:#ccd3db}}
