:root{--ink:#101b35;--ink2:#182a4a;--paper:#f3f7fc;--white:#fff;--muted:#5e718d;--line:#dce5f0;--blue:#4d91ef;--cyan:#42c9df;--blue-pale:#e8f1ff;--sans:'DM Sans',sans-serif;--display:Manrope,sans-serif;--mono:'DM Mono',monospace;--serif:Georgia,'Times New Roman',serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:92px}body{margin:0;padding-bottom:78px;background:var(--paper);color:var(--ink);font:16px/1.72 var(--sans)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}.wrap{width:min(1160px,calc(100% - 64px));margin:auto}.topbar{position:sticky;top:0;z-index:20;height:78px;padding:0 max(32px,calc((100vw - 1160px)/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dce4ef;background:#f8faffed;backdrop-filter:blur(14px)}.wordmark{font:800 22px var(--display);letter-spacing:-1.5px}.wordmark span{color:#4388eb}.topbar nav{display:flex;gap:29px;color:#516783;font-size:15px}.topbar nav a:hover,.footer a:hover{color:#2877df}.lang-switch{display:flex;gap:7px;align-items:center;color:#91a0b5;font:500 14px var(--mono)}.lang-switch button{border:0;padding:7px 3px;background:none;color:#71839c;font:500 14px var(--mono);cursor:pointer}.lang-switch button.active{color:#1c65c2;font-weight:700}.hero{min-height:690px;position:relative;display:grid;grid-template-columns:1.04fr .96fr;align-items:center;padding:60px 0 126px}.hero-copy{z-index:1;padding:12px 0 28px}.eyebrow{font:500 13px/1.5 var(--mono);letter-spacing:1px;color:#73839a;margin:0 0 21px}.hero .eyebrow{color:#526b8b}.hero .eyebrow i,.in-progress i{display:inline-block;width:8px;height:8px;background:#4d90f0;border-radius:50%;margin:0 10px 1px 0;box-shadow:0 0 0 4px #dceaff}h1,h2{font-family:var(--display);letter-spacing:-2.2px;line-height:1.08}h1{font-size:clamp(48px,4.8vw,64px);margin:0 0 27px;font-weight:700}h1 em,h2 em{font-family:var(--serif);font-weight:400;color:#357ad4}.intro{font-size:18px;color:#566780;max-width:550px;line-height:1.8;margin:0 0 29px}.hero-actions{display:flex;gap:13px;flex-wrap:wrap}.button{min-height:51px;padding:0 21px;display:inline-flex;align-items:center;gap:22px;font-size:15px;font-weight:700;transition:transform .2s,background .2s;border:0;cursor:pointer}.button:hover{transform:translateY(-2px)}.primary{background:#172748;color:white}.primary:hover{background:#234477}.secondary{border:1px solid #c8d4e5}.hero-meta{display:flex;gap:26px;margin-top:38px;color:#6d7d94;font:13px var(--mono)}.hero-meta span+span:before{content:'·';margin-right:25px;color:#9aabc1}.hero-art{height:420px;position:relative;display:grid;place-items:center}.orbit{position:absolute;border:1px solid #cbd9ec;border-radius:50%}.o1{width:340px;height:340px}.o2{width:245px;height:245px;border-style:dashed}.orbit-core{width:146px;height:146px;border-radius:50%;background:#172748;color:white;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 22px 46px #152c4e25;z-index:2}.orbit-core b{font:800 34px var(--display);letter-spacing:-2px}.orbit-core small{font:13px/1.6 var(--mono);text-align:center;letter-spacing:1px;color:#bcd4ff}.orbit-tag{position:absolute;background:white;padding:10px 14px;box-shadow:0 8px 24px #172c4e12;font:13px var(--mono);letter-spacing:.4px;z-index:3}.orbit-tag b{color:#347ddd;margin-left:8px;font-weight:500}.t1{top:49px;left:calc(50% - 27px)}.t2{right:3px;top:184px}.t3{bottom:48px;left:calc(50% - 30px)}.t4{left:0;top:185px}.orbit-caption{position:absolute;right:-4px;bottom:5px;font:13px var(--mono);letter-spacing:.8px;color:#7386a2}.hero-stats{position:absolute;bottom:0;left:0;right:0;min-height:91px;border-top:1px solid var(--line);display:flex;align-items:center;gap:60px}.hero-stats>div{display:flex;align-items:center;gap:14px}.hero-stats b{font:700 32px var(--display);letter-spacing:-1px}.hero-stats b span{color:#3781e2}.hero-stats small{max-width:110px;font:13px/1.5 var(--mono);letter-spacing:.2px;color:#6f8098}.scroll-hint{margin-left:auto;color:#71829a;font:13px var(--mono);letter-spacing:.5px}.section{padding:108px 0;scroll-margin-top:78px}.profile,.education{background:#fff}.two-col{display:grid;grid-template-columns:.8fr 1.2fr;gap:100px}.section h2{font-size:clamp(40px,4.6vw,57px);margin:0;font-weight:650}.profile-text{padding-top:32px;max-width:680px}.profile-text>p{color:#5f7087}.profile-text .lead{font:21px/1.6 var(--display);color:#263b59;letter-spacing:-.3px}.chips{display:flex;gap:9px;flex-wrap:wrap;margin-top:23px}.chips span{border:1px solid #d8e3f1;border-radius:30px;padding:7px 14px;color:#526782;font-size:14px}.ai-note{margin-top:29px;padding:22px 22px 21px 59px;background:#f1f6ff;border:1px solid #dce8f9;position:relative}.ai-spark{position:absolute;left:21px;top:21px;color:#4388e8;font-size:23px}.ai-note .eyebrow{margin:0 0 8px;color:#5276a4;font-size:13px}.ai-note h3{font:650 18px var(--display);margin:0 0 7px}.ai-note div>p:last-child{font-size:15px;line-height:1.75;color:#5b6d85;margin:0}.in-progress{display:block;margin-top:15px;color:#2871ce;font:13px var(--mono);letter-spacing:.5px}.in-progress i{width:7px;height:7px;margin-right:7px;box-shadow:0 0 0 3px #dceaff}.profile-skills{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:23px 0 0;font-size:13px}.profile-skills>span{font:13px var(--mono);color:#6c7f99;margin-right:4px}.profile-skills b{border:1px solid #d8e3f1;border-radius:22px;padding:5px 12px;color:#385b89;font-weight:600}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:47px}.section-heading .eyebrow{margin-bottom:17px}.section-note{font:13px/1.7 var(--mono);letter-spacing:.5px;color:#72839a;text-align:right}.skills{background:#111e3a;color:#f6f8fc}.skills .eyebrow{color:#b7c8e0}.skills h2 em{color:#8ebcff}.skills .section-note{color:#adbed6}.skill-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.skill-card{min-height:328px;text-align:center;padding:26px 21px 23px;background:#172747;border:1px solid #ffffff1f;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.dial{width:166px;height:166px;position:relative;margin-bottom:14px}.dial svg{width:100%;height:100%;overflow:visible}.dial-track,.dial-arc{fill:none;stroke-width:8;transform:rotate(135deg);transform-origin:74px 74px}.dial-track{stroke:#ffffff20;stroke-dasharray:75% 25%}.dial-arc{stroke-linecap:round;transition:stroke-dashoffset .6s}.dial-needle{stroke:#dcecff;stroke-width:2.5;stroke-linecap:round}.dial-hub{fill:#dcecff}.dial-value{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.dial-value b{font:700 34px var(--display);letter-spacing:-1px}.dial-value b small{font-size:15px;color:#a9bfdf;letter-spacing:0}.dial-value span{font-size:14px;color:#a9bfdf}.skill-card h3{font:650 18px var(--display);margin:3px 0 6px}.skill-card>p{font-size:14px;line-height:1.6;color:#bccbe0;margin:0}.legend{display:flex;gap:20px;flex-wrap:wrap;margin-top:27px;color:#c2cee0;font:13px var(--mono)}.skill-footnote{font-size:14px;color:#b2bfd1;margin:14px 0 0}.experience{background:#eff4fb}.timeline{border-top:1px solid #d5dfec}.job{border-bottom:1px solid #d5dfec;background:transparent;scroll-margin-top:90px}.job[open]{background:#f7faff}.job summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:205px 1fr 215px 26px;gap:20px;align-items:center;padding:24px 17px;min-height:102px}.job summary::-webkit-details-marker{display:none}.job summary:hover{background:#f7faff}.job-period{font:13px var(--mono);color:#657892;letter-spacing:.1px}.job-head{display:flex;flex-direction:column;gap:3px}.job-title{font:650 18px/1.4 var(--display);letter-spacing:-.2px}.job-company{font-size:15px;color:#47678f}.job-company i{font-style:normal;color:#74859b}.job-sector{justify-self:end;border:1px solid #d2deed;border-radius:20px;padding:6px 11px;font:13px var(--mono);letter-spacing:.1px;color:#5d7392;text-align:center}.expand{width:24px;height:24px;border:1px solid #bfd0e4;border-radius:50%;position:relative;flex:none}.expand:before,.expand:after{content:'';position:absolute;background:#357bd4;left:6px;right:6px;top:11px;height:2px}.expand:after{transform:rotate(90deg);transition:transform .2s}.job[open] .expand:after,.project-card[open] .expand:after{transform:rotate(0)}.job-details{padding:0 72px 29px 242px;color:#536a88;font-size:16px}.job-summary{color:#344d6e;font-size:17px;margin:0 0 9px}.job-details ul{padding-left:21px;margin:0 0 18px}.job-details li{padding:3px 0}.stack-label{font:13px var(--mono);letter-spacing:.6px;color:#314e75;margin:19px 0 10px}.tech-tags{display:flex;gap:8px;flex-wrap:wrap}.tech-tags span{border:1px solid #d1deed;background:#fff;color:#486382;padding:5px 11px;border-radius:20px;font-size:14px}.stack-note{margin:20px 0 0;color:#718198;font-size:14px;line-height:1.7}.education{background:#fff}.education .section-heading{margin-bottom:36px}.education-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.education-card,.project-card{border:1px solid #dce4ef;background:#f8faff;padding:24px 25px}.education-card{min-height:170px}.card-index{display:block;font:13px var(--mono);letter-spacing:.5px;color:#55739b;margin-bottom:17px}.education-card h3,.project-card h3{font:650 19px/1.45 var(--display);margin:0 0 8px}.education-card p,.project-sub{font-size:15px;color:#6b7d94;margin:0}.project-card{grid-column:span 1;padding:0}.project-card summary{list-style:none;cursor:pointer;position:relative;padding:23px 58px 23px 25px}.project-card summary::-webkit-details-marker{display:none}.project-card summary .card-index{margin-bottom:12px}.project-card summary .expand{position:absolute;right:22px;top:calc(50% - 12px)}.project-details{padding:0 25px 25px;color:#586e89;font-size:15px}.project-details p{margin:0 0 13px}.project-details ul{padding-left:21px;margin:0 0 16px}.project-details li{padding:4px 0}.paper-link{display:inline-block;margin-top:18px;color:#286fc7;font-weight:700;text-decoration:underline;text-underline-offset:4px}.homelab-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.homelab-grid>div{padding:13px;background:#fff;border:1px solid #dce4ef;display:flex;flex-direction:column;gap:2px}.homelab-grid b{color:#294a77;font-size:15px}.homelab-grid span{font-size:14px;color:#72839a}.contact{background:#bcd4ff;padding:82px 0}.contact-layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:70px;align-items:start}.contact .eyebrow{color:#375782}.contact h2{font-size:clamp(39px,4.4vw,55px);margin:0}.contact h2 em{color:#285da4}.contact-copy>p:last-child{font-size:16px;color:#415c81;margin-top:23px}.contact-form{padding:25px;background:#fafdff;border:1px solid #ffffffa8;display:grid;gap:15px}.contact-form label{display:grid;gap:6px;color:#405a7c;font-size:14px;font-weight:600}.contact-form input,.contact-form textarea{width:100%;border:1px solid #cbd9ec;background:#fff;padding:11px 12px;color:#172748;border-radius:0;outline:none;font-size:16px}.contact-form input:focus,.contact-form textarea:focus{border-color:#4c8fe9;box-shadow:0 0 0 3px #4c8fe925}.contact-form textarea{resize:vertical;min-height:115px}.contact-form .button{justify-self:start}.form-note{font-size:14px;color:#647995;margin:0}.bottom-bar{position:fixed;z-index:30;bottom:0;left:0;right:0;min-height:66px;padding:8px max(28px,calc((100vw - 1160px)/2));display:flex;align-items:center;gap:27px;background:#f8faffed;border-top:1px solid #d7e1ee;backdrop-filter:blur(14px);box-shadow:0 -8px 25px #1a34500b}.bottom-bar a{display:flex;align-items:center;gap:9px;color:#3d5f89;font-size:14px;font-weight:600}.bottom-bar a:hover{color:#1f70d2}.bottom-bar svg{width:21px;height:21px;fill:currentColor}.bottom-bar .back-top{margin-left:auto;color:#526986}.footer{display:none}
@media(max-width:900px){.wrap{width:min(100% - 44px,700px)}.topbar{padding:0 22px}.topbar nav{gap:17px}.hero{grid-template-columns:1fr;padding-top:73px;padding-bottom:120px}.hero-art{position:absolute;right:-115px;top:90px;transform:scale(.72);transform-origin:top right;opacity:.26;pointer-events:none}.hero-copy{max-width:590px}.hero-stats{gap:22px}.hero-stats>div{gap:8px}.hero-stats b{font-size:27px}.hero-stats small{font-size:13px;max-width:90px}.scroll-hint{display:none}.two-col{grid-template-columns:1fr;gap:28px}.profile-text{padding-top:0}.section{padding:84px 0}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.job summary{grid-template-columns:170px 1fr 26px;gap:15px}.job-sector{grid-column:2;justify-self:start;grid-row:2}.job summary>.expand{grid-column:3;grid-row:1}.job-details{padding:0 45px 25px 200px}.education-grid{gap:12px}.contact-layout{gap:32px}}
@media(max-width:600px){body{font-size:16px;padding-bottom:74px}.wrap{width:calc(100% - 36px)}.topbar{height:68px;padding:0 17px}.topbar nav{gap:13px;font-size:14px}.topbar nav a:last-child{display:none}.lang-switch{gap:5px}.lang-switch button{font-size:14px}.hero{min-height:690px;padding-top:63px}.hero-art{right:-155px;top:47px;transform:scale(.58);opacity:.17}.hero h1{font-size:clamp(32px,10vw,50px)}.intro{font-size:17px}.hero-meta{font-size:13px;gap:10px;flex-wrap:wrap}.hero-meta span+span:before{margin-right:10px}.hero-stats{min-height:83px;gap:12px}.hero-stats>div{display:block}.hero-stats b{display:block;font-size:24px;line-height:1.1}.hero-stats small{display:block;font-size:13px;line-height:1.3;max-width:80px;margin-top:5px}.section{padding:72px 0}.section-heading{display:block;margin-bottom:32px}.section-heading .section-note{display:block;text-align:left;padding-top:14px}.section h2{font-size:41px}.profile-text .lead{font-size:19px}.ai-note{padding:21px 16px 19px 48px}.ai-spark{left:15px;top:18px}.in-progress{margin-top:12px}.profile-skills{gap:7px}.profile-skills>span{width:100%}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.skill-card{min-height:280px;padding:18px 11px}.dial{width:143px;height:143px}.skill-card h3{font-size:16px}.skill-card>p{font-size:14px}.legend{gap:10px;font-size:13px}.skill-footnote{font-size:14px}.job summary{grid-template-columns:1fr 27px;gap:6px 10px;padding:17px 10px;min-height:auto}.job-period{grid-column:1/-1;font-size:13px}.job-head{grid-column:1;grid-row:2}.job-title{font-size:17px}.job-company{font-size:15px}.job-sector{grid-column:1;grid-row:3;font-size:13px;justify-self:start;margin-top:4px}.job summary>.expand{grid-column:2;grid-row:2}.job-details{padding:0 13px 22px;font-size:16px}.job-summary{font-size:16px}.tech-tags span{font-size:14px}.stack-note{font-size:14px}.education-grid{grid-template-columns:1fr}.education-card,.project-card{grid-column:1}.education-card{min-height:0}.education-card h3,.project-card h3{font-size:18px}.homelab-grid{grid-template-columns:repeat(2,1fr)}.project-details{font-size:15px;padding-left:18px;padding-right:18px}.project-card summary{padding-left:18px}.project-card summary .expand{right:16px}.contact{padding:65px 0}.contact-layout{grid-template-columns:1fr;gap:25px}.contact h2{font-size:38px}.contact-form{padding:19px}.bottom-bar{min-height:64px;padding:8px 16px;gap:20px}.bottom-bar a{font-size:14px}.bottom-bar svg{width:21px;height:21px}.bottom-bar .back-top{margin-left:auto}}
@media(max-width:380px){.topbar nav{gap:9px;font-size:13px}.topbar nav a:nth-child(2){display:none}.hero h1{font-size:clamp(32px,10vw,50px)}.hero-stats{gap:8px}.hero-stats small{font-size:12px}.skill-card{padding:15px 7px}.dial{width:130px;height:130px}.skill-card h3{font-size:15px}.bottom-bar{gap:13px;padding:8px 11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}
.paper-links{display:flex;gap:12px 24px;flex-wrap:wrap;margin-top:15px}.paper-links .paper-link{margin-top:0}
.paper-authors{display:block;margin:-2px 0 8px;color:#566f91;font-size:14px;line-height:1.55}
/* Expertise returns to the compact four-step skill bars. */
.skills .skill-list{display:flex;flex-direction:column;max-width:940px;border-top:1px solid #ffffff27}
.skills .skill-row{display:grid;grid-template-columns:minmax(0,1fr) 128px 120px;gap:24px;align-items:center;padding:18px 0;border-bottom:1px solid #ffffff27}
.skills .skill-info h3{font:650 17px/1.4 var(--display);margin:0 0 3px;color:#f5f8ff}
.skills .skill-info p{font-size:15px;line-height:1.55;color:#bac9df;margin:0}
.skills .meter{display:flex;gap:6px}
.skills .meter i{height:7px;flex:1;background:#ffffff2e;border-radius:5px}
.skills .meter[data-level="1"] i:nth-child(-n+1),.skills .meter[data-level="2"] i:nth-child(-n+2),.skills .meter[data-level="3"] i:nth-child(-n+3),.skills .meter[data-level="4"] i:nth-child(-n+4){background:#78adff}
.skills .skill-level{font:13px var(--mono);letter-spacing:.4px;color:#c8d9f1;text-align:right}
.skills .legend{max-width:940px;margin-top:25px}
.skills .legend>span{display:flex;align-items:center;gap:5px}
.content-group{margin-top:35px}
.group-title{font:650 22px var(--display);letter-spacing:-.4px;margin:0 0 15px;color:#1d3558}
.education-grid{margin-bottom:0}
.project-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.project-list .project-card{grid-column:auto}
@media(max-width:900px){.skills .skill-list{max-width:none}.skills .skill-row{grid-template-columns:minmax(0,1fr) 110px 105px;gap:16px}}
@media(max-width:600px){.skills .skill-row{grid-template-columns:minmax(0,1fr) 92px;gap:8px 13px;padding:17px 0}.skills .skill-info{grid-row:1/3}.skills .skill-info h3{font-size:16px}.skills .skill-info p{font-size:14px}.skills .meter{grid-column:2;grid-row:1}.skills .skill-level{grid-column:2;grid-row:2;font-size:13px}.skills .legend{gap:9px 14px}.group-title{font-size:21px}.project-list{grid-template-columns:1fr}}
@media(max-width:380px){.skills .skill-row{grid-template-columns:minmax(0,1fr) 80px}.skills .skill-info h3{font-size:15px}.skills .skill-info p{font-size:13px}}

/* Backend system illustration */
.hero-art{height:440px;display:flex;align-items:center;justify-content:center;overflow:visible}
.system-diagram{width:100%;max-width:580px;height:auto;overflow:visible}
.diagram-node rect{fill:url(#node);stroke:#d8e6f7;stroke-width:1.2}
.diagram-node text{font:700 10px var(--mono);fill:#24456f;letter-spacing:.3px}
.diagram-node text.sub{font:500 9px var(--mono);fill:#7488a3}
.diagram-node text.tiny{font:500 7px var(--mono);fill:#a9c8f2;letter-spacing:.5px}
.diagram-node text.light{fill:#fff;font:700 11px var(--mono);letter-spacing:.4px}
.diagram-node text.light-sub{fill:#c8dcf8;font:500 10px var(--mono)}
.diagram-node .white-icon{fill:none;stroke:#a9c8f2;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.diagram-node .brain{fill:none;stroke:#3783df;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.flow-line{fill:none;stroke:#5b9cf1;stroke-width:2;stroke-dasharray:5 5;marker-end:url(#arrow);animation:flow 1.8s linear infinite}
.diagram-label{font:500 10px var(--mono);fill:#788ca7;letter-spacing:1.2px;text-anchor:middle}
@keyframes flow{to{stroke-dashoffset:-20}}
.form-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important}
.contact-form button:disabled{opacity:.65;cursor:wait}
@media(max-width:900px){.hero-art{position:relative;right:auto;top:auto;transform:none;transform-origin:center;opacity:1;pointer-events:none;height:auto;min-height:0;margin:2px 0 16px}.system-diagram{width:100%;max-width:580px}}
@media(max-width:600px){.hero-art{right:auto;top:auto;transform:none;opacity:1;margin:0 0 14px}.system-diagram{width:100%;max-width:none}.diagram-node text{font-size:12px}.diagram-node text.sub{font-size:10px}.diagram-node text.tiny{font-size:8px}}

/* Clear system boundary and consistent line iconography for the architecture map. */
.hero-art{height:440px;display:flex;align-items:center;justify-content:center;overflow:visible}
.system-diagram{width:100%;max-width:650px;height:auto;overflow:visible}
.platform-boundary{fill:url(#platform);stroke:#bdd3ef;stroke-width:1.5;stroke-dasharray:5 6}
.boundary-label{font:600 10px var(--mono);fill:#6b85a7;letter-spacing:1.5px}
.sys-node rect,.client-node rect{fill:#fff;stroke:#d7e4f3;stroke-width:1.2}
.sys-node text,.client-node text{font:700 10px var(--mono);fill:#24456f;letter-spacing:.3px}
.sys-node text.sub,.client-node text.sub{font:500 9px var(--mono);fill:#788da8}
.sys-node text.light{fill:#fff}.sys-node text.light-sub{fill:#c8dcf8;font:500 9px var(--mono)}
.glyph{fill:none;stroke:#4489dc;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.light-glyph{stroke:#bad6fb}
.flow-line{fill:none;stroke:#5595e8;stroke-width:1.8;stroke-dasharray:5 5;marker-end:url(#arrow);animation:flow 1.8s linear infinite}
.secondary-flow{opacity:.62;stroke-width:1.4;stroke-dasharray:3 5}
.diagram-caption{font:500 9px var(--mono);fill:#7b8fa9;letter-spacing:1.3px;text-anchor:middle}
.hero-stats{gap:70px}.hero-stats>div{min-width:165px}
@media(max-width:900px){.hero-art{position:relative;right:auto;top:auto;transform:none;opacity:1;height:auto;min-height:0;margin:2px 0 16px}.system-diagram{width:100%;max-width:650px}}
@media(max-width:600px){.hero-art{right:auto;top:auto;transform:none;opacity:1;margin:0 0 12px}.system-diagram{width:100%;max-width:none}.sys-node text,.client-node text{font-size:12px}.sys-node text.sub,.client-node text.sub{font-size:10px}}

/* Portfolio hero architecture: cloud boundary, fine line icons and quiet flow packets. */
.hero-art{height:440px;display:flex;align-items:center;justify-content:center;overflow:visible}
.system-diagram{display:block;width:100%;max-width:650px;height:auto;overflow:visible}
.cloud-boundary{fill:url(#cloudFill);stroke:#9dc4fb;stroke-width:1.6;}
.diagram-icon{fill:none;stroke:#1552a5;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.diagram-icon .icon-fill{fill:#cfe5ff;stroke:none}
.flow-line{fill:none;stroke:#397fd0;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.flow-packets circle{filter:drop-shadow(0 0 2px #fff);}
@media(max-width:900px){.hero-art{position:relative;right:auto;top:auto;transform:none;transform-origin:center;opacity:1;pointer-events:none;height:auto;min-height:0;margin:2px 0 16px}.system-diagram{width:100%;max-width:650px}}
@media(max-width:600px){.hero-art{right:auto;top:auto;transform:none;opacity:1;margin:0 0 12px}.system-diagram{width:100%;max-width:none}}
@media(prefers-reduced-motion:reduce){.flow-packets{display:none}}

/* Native hero diagram palette and line-art styling. */
.cloud-shape{fill:url(#cloudTint);opacity:.82}
.system-icon{fill:none;stroke:#174fae;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}
.system-icon .icon-fill{fill:#b9d9ff;stroke:none}
.flow-lines use{fill:none;stroke:#347bd1;stroke-width:5.5;stroke-dasharray:7 9;stroke-linecap:round;stroke-linejoin:round}
.flow-packets circle{fill:#347bd1;filter:drop-shadow(0 0 3px #f3f7fc)}

/* Expertise cards: a clear 3 by 3 grid on desktop, stacked responsively. */
.skills .skill-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:none;border:0}
.skills .skill-row{display:flex;min-width:0;min-height:196px;flex-direction:column;justify-content:space-between;gap:22px;padding:20px;background:#172747;border:1px solid #ffffff24;border-radius:10px;transition:transform .18s ease,border-color .18s ease,background .18s ease}
.skills .skill-row:hover{transform:translateY(-2px);background:#1a2d50;border-color:#ffffff45}
.skills .skill-info{min-width:0}
.skills .skill-info h3{margin:0 0 12px;color:#f5f8ff;font:650 18px/1.35 var(--display);letter-spacing:-.2px}
.skills .skill-techs{display:flex;flex-wrap:wrap;gap:6px}
.skills .skill-techs span{max-width:100%;padding:4px 8px;border:1px solid #ffffff19;border-radius:15px;background:#ffffff0b;color:#c5d4e9;font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.skills .skill-meter-row{display:flex;align-items:center;gap:12px}
.skills .meter{display:flex;flex:1;gap:5px}
.skills .meter i{height:6px;flex:1;background:#ffffff25;border-radius:6px}
.skills .meter[data-level="1"] i:nth-child(-n+1),.skills .meter[data-level="2"] i:nth-child(-n+2),.skills .meter[data-level="3"] i:nth-child(-n+3),.skills .meter[data-level="4"] i:nth-child(-n+4){background:#78adff}
.skills .skill-level{min-width:82px;color:#c8d9f1;font:12px var(--mono);text-align:right}
@media(max-width:900px){.skills .skill-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.skills .skill-list{grid-template-columns:1fr;gap:11px}.skills .skill-row{min-height:0;padding:17px}.skills .skill-info h3{font-size:17px}.skills .skill-techs span{font-size:13px}}

.skills .skill-score{min-width:28px;color:#dce9fb;font:12px var(--mono);text-align:center}

.profile-focus{display:flex;justify-content:center;margin-top:0}
.profile-focus .ai-note{width:min(100%,820px);margin:42px auto 0}

/* Four-part proficiency bars: active segments map directly to each level. */
.skills .skill-meter-row{width:100%;margin-top:auto}
.skills .meter{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;width:100%;height:9px}
.skills .meter i{display:block;height:9px;min-width:0;background:#ffffff2b;border-radius:8px}
.skills .meter[data-level="1"] i:nth-child(-n+1),.skills .meter[data-level="2"] i:nth-child(-n+2),.skills .meter[data-level="3"] i:nth-child(-n+3),.skills .meter[data-level="4"] i:nth-child(-n+4){background:linear-gradient(90deg,#72a8ff,#53c6e2)}

/* Keep card contents aligned consistently across each expertise row. */
.skills .skill-row{align-items:stretch;text-align:left}
.skills .skill-info{width:100%;text-align:left}
.skills .skill-info h3{min-height:1.35em}
.skills .skill-techs{min-height:62px;align-content:flex-start;align-items:flex-start}
@media(max-width:600px){.skills .skill-techs{min-height:0}}

/* Blend the original static diagram's white canvas into the page background. */
.hero-art{isolation:isolate}
.hero-art .system-diagram{mix-blend-mode:normal}


/* System-aware theme switch */
.header-controls{display:flex;align-items:center;gap:13px}
.theme-toggle{width:38px;height:38px;display:grid;place-items:center;padding:0;border:1px solid #d7e1ee;border-radius:50%;background:#fff;color:#41658e;cursor:pointer;transition:background .2s,border-color .2s,color .2s,transform .2s}
.theme-toggle:hover{transform:translateY(-1px);background:#eaf2ff;border-color:#a9c8f2}
.theme-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.theme-icon.icon-sun{display:none}
html[data-theme="dark"]{color-scheme:dark;--ink:#e8f0fc;--ink2:#cfdef3;--paper:#0c1424;--white:#142138;--muted:#a9bad2;--line:#2a3b56;--blue:#75aaff;--cyan:#5ccfe0;--blue-pale:#162945}
html[data-theme="dark"] body{background:var(--paper);color:var(--ink)}
html[data-theme="dark"] .topbar,html[data-theme="dark"] .bottom-bar{background:rgba(13,23,40,.92);border-color:#263953}
html[data-theme="dark"] .topbar nav,html[data-theme="dark"] .bottom-bar a,html[data-theme="dark"] .bottom-bar .back-top{color:#a9bad2}
html[data-theme="dark"] .lang-switch button{color:#a9bad2}
html[data-theme="dark"] .lang-switch button.active{color:#8db9ff}
html[data-theme="dark"] .theme-toggle{background:#172943;border-color:#365170;color:#ffd778}
html[data-theme="dark"] .theme-toggle:hover{background:#203a5c;border-color:#5a7ca7}
html[data-theme="dark"] .theme-icon.icon-moon{display:none}
html[data-theme="dark"] .theme-icon.icon-sun{display:block}
html[data-theme="dark"] .eyebrow,html[data-theme="dark"] .hero .eyebrow,html[data-theme="dark"] .section-note,html[data-theme="dark"] .hero-meta,html[data-theme="dark"] .hero-stats small{color:#9aacc5}
html[data-theme="dark"] .intro,html[data-theme="dark"] .profile-text,html[data-theme="dark"] .profile-text .lead{color:#c0cde0}
html[data-theme="dark"] h1 em,html[data-theme="dark"] h2 em{color:#86b5ff}
html[data-theme="dark"] .hero-stats,html[data-theme="dark"] .timeline,html[data-theme="dark"] .job{border-color:#2a3b56}
html[data-theme="dark"] .chips span,html[data-theme="dark"] .job-sector{color:#b7c8df;border-color:#354b69}
html[data-theme="dark"] .ai-note{background:#14243c;border-color:#2b4568}
html[data-theme="dark"] .ai-note .eyebrow{color:#93b9eb}
html[data-theme="dark"] .ai-note div>p:last-child{color:#b7c8df}
html[data-theme="dark"] .job[open],html[data-theme="dark"] .job summary:hover{background:#111f35}
html[data-theme="dark"] .job-period,html[data-theme="dark"] .job-company i,html[data-theme="dark"] .job-sector{color:#a9bad2}
html[data-theme="dark"] .job-company,html[data-theme="dark"] .job-details{color:#b8c9df}
html[data-theme="dark"] .job-summary{color:#dbe7f6}
html[data-theme="dark"] .education-card,html[data-theme="dark"] .project-card{background:#111f35;border-color:#2b3e5a}
html[data-theme="dark"] .education-card p,html[data-theme="dark"] .project-sub,html[data-theme="dark"] .paper-authors{color:#a9bad2}
html[data-theme="dark"] .project-details{color:#c1cfe1}
html[data-theme="dark"] .tech-tags span{background:#192b45;color:#c8d8ed;border-color:#344b6a}
html[data-theme="dark"] .skills .skill-row{background:#14243c;border-color:#2a3f5d}
html[data-theme="dark"] .skills .skill-row:hover{background:#192d4a;border-color:#42648b}
html[data-theme="dark"] .skills .skill-techs span{background:#ffffff08;border-color:#ffffff20;color:#c8d8ed}
html[data-theme="dark"] .contact{background:#122642}
html[data-theme="dark"] .contact .eyebrow,html[data-theme="dark"] .contact h2 em{color:#a9caff}
html[data-theme="dark"] .contact-copy>p:last-child{color:#b7c8df}
html[data-theme="dark"] .contact-form{background:#182a43;border-color:#314968}
html[data-theme="dark"] .contact-form label{color:#c5d4e8}
html[data-theme="dark"] .contact-form input,html[data-theme="dark"] .contact-form textarea{background:#0f1c30;border-color:#354c6a;color:#e8f0fc}
html[data-theme="dark"] .secondary{border-color:#405878;color:#d9e7f8}
html[data-theme="dark"] .system-diagram defs linearGradient#cloudTint stop{stop-color:#142b49}
html[data-theme="dark"] .system-diagram .system-icon{stroke:#78aaff}
html[data-theme="dark"] .system-diagram .system-icon .icon-fill{fill:#23466f}
html[data-theme="dark"] .system-diagram .flow-lines use{stroke:#72a8ff}
html[data-theme="dark"] .system-diagram .flow-packets circle{fill:#72a8ff;filter:drop-shadow(0 0 3px #0c1424)}
@media(max-width:600px){.header-controls{gap:8px}.theme-toggle{width:35px;height:35px}.lang-switch{gap:5px}}

html[data-theme="dark"] .group-title{color:#dbe7f6}
html[data-theme="dark"] .paper-link{color:#8db9ff}
html[data-theme="dark"] .paper-link:hover{color:#c4dcff}
html[data-theme="dark"] .form-note{color:#a9bad2}
html[data-theme="dark"] .card-index,html[data-theme="dark"] .stack-label{color:#a9caff}
html[data-theme="dark"] .expand{border-color:#496383}
html[data-theme="dark"] .expand:before,html[data-theme="dark"] .expand:after{background:#8db9ff}

/* Dark surfaces and readable foregrounds across alternating sections. */
html[data-theme="dark"] .profile,html[data-theme="dark"] .education{background:#0f1929}
html[data-theme="dark"] .experience{background:#111e31}
html[data-theme="dark"] .skills{background:#0b1627}
html[data-theme="dark"] .section-heading h2{color:#edf4ff}
html[data-theme="dark"] .experience .section-heading h2 em{color:#9bc4ff}
html[data-theme="dark"] .profile .section-heading h2 em,html[data-theme="dark"] .education .section-heading h2 em{color:#9bc4ff}
html[data-theme="dark"] .job-title{color:#edf4ff}
html[data-theme="dark"] .job-company{color:#a9caff}
html[data-theme="dark"] .skills{--meter-track:#3a4f6e;--meter-divider:#0b1627}
html:not([data-theme="dark"]){--meter-track:#354a69;--meter-divider:#172747}
.skills .meter{position:relative;display:block;flex:1;width:100%;height:14px;overflow:hidden;border-radius:999px;background:var(--meter-track,#354a69);box-shadow:inset 0 1px 2px #07132666}
.skills .meter-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#80afff,#63d1df);transition:width .3s ease}
.skills .meter:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 24.25%,var(--meter-divider,#172747) 24.25% 25.75%,transparent 25.75% 49.25%,var(--meter-divider,#172747) 49.25% 50.75%,transparent 50.75% 74.25%,var(--meter-divider,#172747) 74.25% 75.75%,transparent 75.75%)}
/* Keyboard users get a visible focus ring and a direct path to the main content. */
.skip-link{position:fixed;z-index:100;top:10px;left:10px;transform:translateY(-160%);padding:10px 14px;background:#fff;color:#10213c;border:2px solid #226bd1;border-radius:6px;font-weight:700}
.skip-link:focus{transform:translateY(0)}
:where(a,button,summary,input,textarea):focus-visible{outline:3px solid #1878e8;outline-offset:3px}
html[data-theme="dark"] .skip-link{background:#15243c;color:#f1f6ff;border-color:#90bcff}
html[data-theme="dark"] :where(a,button,summary,input,textarea):focus-visible{outline-color:#9bc4ff}
.job-title{margin:0}

/* WCAG AA contrast tuning for smaller labels in the light palette. */
:root{--quiet-text:#4f617a;--link-blue:#175ba8}
.lang-switch button{color:#50647e}
.lang-switch button.active{color:#175ba8}
.hero-meta,.hero-stats small{color:#4f617a}
.eyebrow{color:#526985}
.ai-spark{color:#245fae}
.ai-note .eyebrow{color:#405f86}
.in-progress{color:#1b5ca8}
.job-period{color:#4f617a}
.job-company i{color:#52647b}
.job-sector{color:#4f6682}
.education-card p,.project-sub{color:#52647b}
.homelab-grid span{color:#52647b}
.form-note{color:#52647b}
.paper-authors{color:#4f6682}
/* The same secondary copy stays legible on dark section backgrounds. */
html[data-theme="dark"] .profile-text>p{color:#c0cde0}
html[data-theme="dark"] .ai-spark{color:#9bc4ff}
html[data-theme="dark"] .in-progress{color:#a9caff}
html[data-theme="dark"] .homelab-grid>div{background:#192b45;border-color:#354b69}
html[data-theme="dark"] .homelab-grid b{color:#dbe7f6}
html[data-theme="dark"] .homelab-grid span{color:#b7c8df}


/* Stable hero alignment across English and Spanish. */
.hero{align-items:start}
.hero-copy{align-self:start}
.hero h1{height:2.16em}
.hero-art{align-self:start;margin-top:32px}
@media(max-width:900px){
 .hero .intro{min-height:9em}
 .hero-art{margin-top:24px}
}
@media(max-width:600px){
 .hero .intro{min-height:14.4em}
}

/* More breathing room for the navigation and theme controls. */
.topbar>nav:not(.lang-switch){gap:38px}
.topbar .lang-switch{gap:1px}
.topbar .lang-switch button{padding-left:1px;padding-right:1px}
.header-controls{gap:23px}
@media(max-width:900px){.topbar>nav:not(.lang-switch){gap:24px}}
@media(max-width:600px){
 .topbar>nav:not(.lang-switch){gap:14px}
 .header-controls{gap:16px}
}

/* Each expertise level has a distinct shade and a thicker progress track. */
.skills .meter{height:18px}
.skills .meter-fill{height:100%;background:linear-gradient(90deg,#255fae 0 25%,#3d80cf 25% 50%,#70a7e8 50% 75%,#acd0fa 75% 100%)}
html:not([data-theme="dark"]) .skills .meter-fill{background:linear-gradient(90deg,#acd0fa 0 25%,#70a7e8 25% 50%,#3d80cf 50% 75%,#255fae 75% 100%)}


/* Expertise: four independent level segments, with a fixed light-to-dark scale. */
.skills .meter{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;width:100%;height:18px;overflow:visible;border-radius:0;background:transparent;box-shadow:none}
.skills .meter:after{display:none}
.skills .meter-segment{display:block;height:18px;min-width:0;border-radius:999px;background:#354a69;transition:background .2s ease}
.skills .meter-segment.is-filled:nth-child(1){background:#acd0fa}
.skills .meter-segment.is-filled:nth-child(2){background:#70a7e8}
.skills .meter-segment.is-filled:nth-child(3){background:#3d80cf}
.skills .meter-segment.is-filled:nth-child(4){background:#255fae}


/* Vertical proficiency bars with a two-thirds text area and room for three chip lines. */
.skills .skill-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:none;border:0}
.skills .skill-row{display:grid;grid-template-columns:2fr 1fr;align-items:start;gap:12px;min-width:0;min-height:170px;padding:14px;background:#172747;border:1px solid #ffffff24;border-radius:10px}
.skills .skill-info{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:11px}
.skills .skill-info h3{min-height:0;margin:0;color:#f5f8ff;font:650 17px/1.32 var(--display);letter-spacing:-.2px}
.skills .skill-techs{display:flex;min-height:94px;flex-wrap:wrap;align-content:flex-start;align-items:flex-start;gap:6px}
.skills .skill-techs span{padding:4px 8px;border:1px solid #ffffff28;border-radius:15px;background:#ffffff0b;color:#d4e3f7;font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.skills .skill-meter-row{display:grid;min-height:140px;place-items:start center;margin:0;padding-left:10px;border-left:1px solid #ffffff20}
.skills .meter{display:flex;flex-direction:column-reverse;gap:4px;width:38px;height:126px;flex:none;padding:4px;overflow:hidden;border:0;border-radius:9px;background:#536a8c;box-shadow:none}
.skills .meter:after{display:none}
.skills .meter-segment{display:block;flex:1 1 0;width:100%;height:auto;min-height:0;border-radius:4px;background:#172747;transition:background .2s ease}
.skills .meter-segment.is-filled.level-1{background:#b8dcff}
.skills .meter-segment.is-filled.level-2{background:#83bdf4}
.skills .meter-segment.is-filled.level-3{background:#5195dc}
.skills .meter-segment.is-filled.level-4{background:#286cba}
html[data-theme="dark"] .skills .meter-segment{background:#14243c}
@media(max-width:900px){.skills .skill-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.skills .skill-list{grid-template-columns:1fr}.skills .skill-row{min-height:170px;padding:14px}.skills .skill-techs{min-height:94px}.skills .skill-meter-row{min-height:140px}.skills .meter{height:126px}}


/* Make expertise technology labels clearly visible while retaining three-line space. */
.skills .skill-techs{min-height:102px;gap:6px}
.skills .skill-techs span{padding:5px 8px;border-color:#476487;background:#263e60;color:#eff6ff;font-size:14px;font-weight:550;line-height:1.35}
html[data-theme="dark"] .skills .skill-techs span{border-color:#476487;background:#263e60;color:#eff6ff}
@media(max-width:600px){.skills .skill-techs{min-height:102px}.skills .skill-techs span{font-size:14px}}

.cookie-policy{border-top:1px solid var(--line);background:var(--paper);scroll-margin-top:78px}.cookie-copy{max-width:900px}.cookie-policy h2{margin:0 0 25px}.cookie-policy p{max-width:820px;color:var(--muted);font-size:16px}.cookie-external{display:inline-block;margin-top:8px;color:#357ad4;font-weight:650}.bottom-bar .social-cv{margin-right:-8px}.bottom-bar .social-cv svg{fill:currentColor}.bottom-bar .cookie-link{font-size:13px;color:#526986}
@media(max-width:600px){body{padding-bottom:100px}.bottom-bar{min-height:88px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 8px;padding:7px 12px}.bottom-bar a{justify-content:center;gap:5px;font-size:12px}.bottom-bar .social-cv{margin:0}.bottom-bar .cookie-link{grid-column:1/3;grid-row:2;justify-content:flex-start;padding-left:8px}.bottom-bar .back-top{grid-column:3;grid-row:2;justify-content:flex-end;margin:0;padding-right:8px}}

/* Expertise cards: keep an identical footprint while the grid changes columns. */
.skills .skill-list{grid-template-columns:repeat(3,340px);justify-content:center;gap:16px}
.skills .skill-row{width:340px;height:170px;min-height:170px;max-height:170px;overflow:hidden;padding:12px;align-items:start}
.skills .skill-info{min-height:0;height:100%;gap:8px;overflow:hidden}
.skills .skill-info h3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.28;max-height:2.56em;font-size:16px}
.skills .skill-techs{min-height:0;max-height:104px;overflow:hidden;gap:5px;align-content:flex-start}
.skills .skill-techs span{padding:4px 7px;font-size:13px;line-height:1.3}
.skills .skill-meter-row{min-height:0;height:100%;align-content:start;padding-left:8px}
@media(max-width:900px){.skills .skill-list{grid-template-columns:repeat(2,340px)}}
@media(max-width:743px){.skills .skill-list{grid-template-columns:min(340px,100%)}}
@media(max-width:600px){.skills .skill-list{grid-template-columns:min(340px,100%)}.skills .skill-row{width:100%;height:170px;min-height:170px;max-height:170px;padding:12px}.skills .skill-techs{min-height:0;max-height:104px}.skills .skill-meter-row{min-height:0;height:100%}}

/* Experience rows: company mark, date, role, separate sector labels and disclosure. */
.job summary{grid-template-columns:62px 160px minmax(210px,1fr) minmax(180px,.82fr) 26px;gap:16px;padding:20px 17px;min-height:104px}
.job-logo{width:56px;height:50px;display:grid;place-items:center;overflow:hidden;border:1px solid #dce5ef;border-radius:9px;background:#fff}
.job-logo img{display:block;width:100%;height:100%;padding:4px;object-fit:contain}
.job-logo:empty{border-color:transparent;background:transparent}
.job-sectors{display:flex;flex-wrap:wrap;align-items:center;justify-self:start;gap:5px 12px;min-width:0}
.job-sectors span{position:relative;display:inline-flex;align-items:center;white-space:nowrap;color:#4f6682;font:12px/1.5 var(--mono);letter-spacing:.05px}
.job-sectors span:before{content:"";width:5px;height:5px;flex:none;margin-right:6px;border-radius:50%;background:#4387d8}
.job[open] .job-sectors span{color:#4f6682}
.job-details{padding:17px 17px 29px;color:#536a88}
.job-details ul{margin-bottom:18px}
html[data-theme="dark"] .job-logo{border-color:#354b69;background:#fff}
html[data-theme="dark"] .job-sectors span{color:#c1d1e7}
html[data-theme="dark"] .job[open] .job-sectors span{color:#c1d1e7}
.project-title-with-logo{display:flex;align-items:center;gap:11px}
.project-title-with-logo img{flex:none;object-fit:contain;border-radius:7px}
@media(max-width:900px){
 .job summary{grid-template-columns:56px 155px minmax(0,1fr) 26px;gap:12px;padding:18px 15px}
 .job-logo{grid-column:1;grid-row:1/3;width:50px;height:46px}
 .job-period{grid-column:2;grid-row:1}
 .job-head{grid-column:3;grid-row:1}
 .job-sectors{grid-column:3;grid-row:2}
 .job summary>.expand{grid-column:4;grid-row:1}
 .job-details{padding:15px}
}
@media(max-width:600px){
 .job summary{grid-template-columns:48px minmax(0,1fr) 26px;gap:8px 12px;padding:16px 11px;min-height:0}
 .job-logo{grid-column:1;grid-row:1/4;width:44px;height:44px}
 .job-period{grid-column:2;grid-row:1;font-size:11px}
 .job-head{grid-column:2;grid-row:2}
 .job-title{font-size:16px}
 .job-company{font-size:14px}
 .job-sectors{grid-column:2;grid-row:3;gap:3px 9px}
 .job-sectors span{font-size:11px}
 .job summary>.expand{grid-column:3;grid-row:1}
 .job-details{padding:14px 12px 24px;font-size:15px}
 .project-title-with-logo img{width:34px;height:34px}
}

/* Prominent, floating company logos and a quieter date line. */
.job summary{grid-template-columns:190px minmax(280px,1fr) minmax(230px,.7fr) 26px;gap:20px}
.job-logo{width:180px;height:90px;border:0;border-radius:0;background:transparent}
.job-logo img{width:100%;height:100%;padding:0;object-fit:contain}
.job-head{gap:4px}
.job-title{font-size:21px;line-height:1.3}
.job-company{font-size:16px}
.job-period{order:3;margin-top:5px;color:#8795a8;font-size:12px;letter-spacing:.2px}
.job-sectors{gap:7px}
.job-sectors span{white-space:nowrap;border:1px solid #d2e0f0;border-radius:16px;background:#eaf2fc;color:#355478;padding:5px 10px;font:600 13px/1.3 var(--display);letter-spacing:0}
.job-sectors span:before{display:none}
html[data-theme="dark"] .job-logo{border:0;background:transparent}
html[data-theme="dark"] .job-period{color:#a3b4cb}
html[data-theme="dark"] .job-sectors span,html[data-theme="dark"] .job[open] .job-sectors span{border-color:#476487;background:#263e60;color:#eff6ff}
@media(max-width:900px){
 .job summary{grid-template-columns:140px minmax(0,1fr) 26px;gap:14px}
 .job-logo{grid-column:1;grid-row:1/3;width:130px;height:76px}
 .job-head{grid-column:2;grid-row:1}
 .job-sectors{grid-column:2;grid-row:2}
 .job summary>.expand{grid-column:3;grid-row:1}
}
@media(max-width:600px){
 .job summary{grid-template-columns:84px minmax(0,1fr) 26px;gap:8px 12px}
 .job-logo{grid-column:1;grid-row:1/3;width:80px;height:56px}
 .job-head{grid-column:2;grid-row:1}
 .job-title{font-size:16px}
 .job-company{font-size:14px}
 .job-period{margin-top:3px;font-size:10px}
 .job-sectors{grid-column:2;grid-row:2;gap:4px}
 .job-sectors span{font-size:11px;padding:4px 8px}
 .job summary>.expand{grid-column:3;grid-row:1}
}

/* Fine tune individual transparent company marks from the supplied originals. */
.job summary{grid-template-columns:190px minmax(250px,1fr) minmax(240px,.7fr) 26px;gap:18px}
.job-logo{width:190px;height:96px;overflow:visible;border:0;border-radius:0;background:transparent}
.job-logo img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;padding:0;object-fit:contain;object-position:center}
.job-logo-kado img{transform:scale(.88)}
.job-logo-idoven img{transform:scale(.94)}
.job-logo-savana img{transform:scale(1.04)}
.job-logo-xfera img{object-position:center;transform:none}
.job-logo-inta img,.job-logo-asgere-icon img{width:96px;height:96px;max-width:96px;max-height:96px;margin:auto}
.job-sectors{justify-self:end;justify-content:flex-end;max-width:100%;gap:7px}
.job-sectors span{white-space:nowrap}
@media(max-width:900px){
 .job summary{grid-template-columns:140px minmax(0,1fr) 26px;gap:14px}
 .job-logo{grid-column:1;grid-row:1/3;width:134px;height:78px}
 .job-head{grid-column:2;grid-row:1}
 .job-sectors{grid-column:2;grid-row:2;justify-self:end}
 .job summary>.expand{grid-column:3;grid-row:1}
}
@media(max-width:600px){
 .job summary{grid-template-columns:86px minmax(0,1fr) 26px;gap:8px 10px}
 .job-logo{grid-column:1;grid-row:1/3;width:82px;height:58px}
 .job-logo-inta img,.job-logo-asgere-icon img{width:58px;height:58px;max-width:58px;max-height:58px}
 .job-head{grid-column:2;grid-row:1}
 .job-title{font-size:16px}
 .job-company{font-size:14px}
 .job-period{font-size:10px}
 .job-sectors{grid-column:2;grid-row:2;justify-self:end;gap:4px}
 .job-sectors span{font-size:11px;padding:4px 8px}
 .job summary>.expand{grid-column:3;grid-row:1}
}

/* Final logo fit and direct company links. */
.job-logo-link{display:grid;text-decoration:none;cursor:pointer}
.job-logo-link:hover img{transform:scale(1.04)}
.job-logo-kado img{transform:none}
.job-logo-kado.job-logo-link:hover img{transform:scale(1.03)}
.job-logo-savana img{transform:none}
.job-logo-savana.job-logo-link:hover img{transform:scale(1.04)}
.job-logo-inta img,.job-logo-asgere-icon img{width:96px;height:96px;max-width:96px;max-height:96px;object-fit:contain;object-position:center}
@media(max-width:600px){
 .job-logo-inta img,.job-logo-asgere-icon img{width:58px;height:58px;max-width:58px;max-height:58px}
}

/* Personal projects in one independent vertical flow. */
.project-list-single-column{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.project-list-single-column>.project-card{grid-column:1}
.education-link{color:inherit;text-decoration:underline;text-decoration-color:#8baed8;text-underline-offset:4px}
.education-link:hover{color:#175ba8;text-decoration-color:currentColor}
.education-grade{margin-top:9px!important;font-weight:700;color:#294a77!important}
.cookie-policy-list{padding-left:24px;color:var(--muted)}
.cookie-policy-list>li{padding:0 0 15px 8px}
.cookie-policy-list>li::marker{color:#357ad4;font-weight:700}
.cookie-policy-list h3{margin:0 0 6px;color:var(--ink2);font:650 18px/1.45 var(--display)}
.cookie-policy-list p{margin:0 0 9px}
.cookie-contact{margin:8px 0 0;padding-left:22px}
.cookie-contact li{padding:3px 0}
.cookie-contact a{color:var(--link-blue);text-decoration:underline;text-underline-offset:3px}
.email-image-link{display:inline-flex;align-items:center;min-height:34px}
.email-image-link img{display:block;width:226px;height:30px;max-width:100%;object-fit:contain;object-position:left center}
html[data-theme="dark"] .cookie-policy-list h3{color:#e7effc}
html[data-theme="dark"] .cookie-contact a{color:#a9caff}
.consent-launcher{position:fixed;z-index:35;right:18px;bottom:80px;padding:12px 18px;border:0;border-radius:13px 13px 0 0;background:#fff;color:#232323;box-shadow:0 4px 22px #10213c2b;font:500 14px/1.3 var(--sans);cursor:pointer}
.consent-launcher:hover{background:#f3f6fb}
.consent-dialog{width:min(570px,calc(100% - 28px));max-width:none;max-height:calc(100dvh - 40px);padding:0;overflow:auto;border:0;border-radius:14px;background:#fff;color:#252525;box-shadow:0 16px 48px #0004}
.consent-dialog::backdrop{background:#101820bd;backdrop-filter:blur(2px)}
.consent-panel{position:relative;padding:26px 28px 22px}
.consent-panel h2{margin:0 32px 18px;text-align:center;color:#242424;font:500 20px/1.35 var(--sans);letter-spacing:0}
.consent-panel>p{margin:0 0 22px;color:#353535;font-size:14px;line-height:1.65}
.consent-close{position:absolute;top:14px;right:16px;width:34px;height:34px;border:0;background:transparent;color:#252525;font-size:28px;line-height:1;cursor:pointer}
.consent-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.consent-actions button,.consent-save{min-height:46px;padding:8px 10px;border:1px solid #e5e5e5;border-radius:7px;background:#f8f8f8;color:#272727;font:650 14px/1.25 var(--sans);cursor:pointer}
.consent-actions .consent-accept{border-color:#392bff;background:#392bff;color:#fff}
.consent-actions .consent-reject{background:#f6f6f6}
.consent-actions button:hover,.consent-save:hover{filter:brightness(.96)}
.consent-policy-link{display:block;width:max-content;margin:16px auto 0;color:#392bff;font-size:13px;text-decoration:underline;text-underline-offset:3px}
.consent-preferences{margin-top:20px;padding-top:17px;border-top:1px solid #e5e5e5}
.consent-preferences[hidden]{display:none}
.consent-preferences h3{margin:0 0 12px;font:650 16px var(--display)}
.consent-choice{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid #ededed}
.consent-choice span,.consent-choice label{display:grid;gap:3px;cursor:pointer}
.consent-choice b{font-size:14px}
.consent-choice small{max-width:410px;color:#5f6570;font-size:12px;line-height:1.45}
.consent-choice input{width:19px;height:19px;flex:none;accent-color:#392bff}
.consent-choice input:disabled{opacity:.72}
.consent-save{width:100%;margin-top:12px;background:#f4f4f4}
html[data-theme="dark"] .consent-launcher{background:#eaf1fb;color:#172748}
html[data-theme="dark"] .consent-launcher:hover{background:#d8e5f5}
@media(max-width:600px){
 .consent-launcher{right:10px;bottom:100px;padding:11px 14px;font-size:13px}
 .consent-panel{padding:24px 17px 20px}
 .consent-panel h2{font-size:18px}
 .consent-actions{grid-template-columns:1fr}
 .consent-actions button{min-height:43px}
 .cookie-policy-list{padding-left:21px}
}

.consent-launcher[hidden]{display:none}
.consent-manage-inline{margin-top:15px;padding:11px 17px;border:1px solid #cad7e8;border-radius:7px;background:#fff;color:#234d7f;font-weight:650;cursor:pointer}
.consent-manage-inline:hover{background:#f2f6fc}
html[data-theme="dark"] .consent-manage-inline{border-color:#3b5271;background:#182a43;color:#c5d9f4}
html[data-theme="dark"] .consent-manage-inline:hover{background:#203752}


/* Keep all text in expanded experience details in the same typeface. */
.job-details,
.job-details p,
.job-details ul,
.job-details li,
.job-details .stack-label,
.job-details .tech-tags{font-family:var(--sans)}

.job-details a{color:var(--link-blue);text-decoration:underline;text-decoration-color:#8baed8;text-underline-offset:3px}
html[data-theme="dark"] .job-details a{color:#a9caff;text-decoration-color:#7097ca}
