:root{--bg: #fbf7f5;--bg-raised: #ffffff;--bg-sunken: #f3ebe9;--text: #1f1a1b;--text-muted: #645356;--text-faint: #7d686c;--border: #e7dcd9;--border-strong: #d3c3c0;--accent: #9c2a3d;--accent-soft: #f7e8ea;--accent-text: #8c2437;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--measure: 66ch;--radius: 10px;--radius-sm: 6px;--shadow-sm: 0 1px 2px rgb(60 20 30 / 7%);--shadow-md: 0 4px 16px -6px rgb(60 20 30 / 16%);--step: clamp(1rem, .6rem + 1.4vw, 1.5rem);--gap-section: clamp(3rem, 6vw, 5.5rem)}:root[data-theme=dark]{--bg: #1a0e12;--bg-raised: #241419;--bg-sunken: #2b181e;--text: #f2e9e9;--text-muted: #c4aeb2;--text-faint: #9b8085;--border: #3a2229;--border-strong: #4e2f38;--accent: #d4707e;--accent-soft: #3a1c24;--accent-text: #e8a0a8;--shadow-sm: 0 1px 2px rgb(0 0 0 / 45%);--shadow-md: 0 6px 22px -8px rgb(0 0 0 / 65%)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:1rem;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;line-height:1.2;text-wrap:balance}p{margin:0;text-wrap:pretty}ul{margin:0;padding:0;list-style:none}a{color:var(--accent-text);text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent);text-underline-offset:.2em}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:absolute;left:1rem;top:-4rem;z-index:100;padding:.6rem 1rem;background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius-sm);transition:top .15s ease}.skip-link:focus{top:1rem}.nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem var(--step);background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.nav__links{display:flex;gap:.25rem}.nav__burger{display:none;width:2.4rem;height:2.2rem;padding:0;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}.nav__burger-box,.nav__burger-box:before,.nav__burger-box:after{display:block;width:1.05rem;height:2px;border-radius:2px;background:var(--text-muted);transition:transform .2s ease,opacity .15s ease}.nav__burger-box{position:relative;margin:0 auto}.nav__burger-box:before,.nav__burger-box:after{content:"";position:absolute;left:0}.nav__burger-box:before{top:-6px}.nav__burger-box:after{top:6px}.nav.is-open .nav__burger-box{background:transparent}.nav.is-open .nav__burger-box:before{transform:translateY(6px) rotate(45deg)}.nav.is-open .nav__burger-box:after{transform:translateY(-6px) rotate(-45deg)}.nav__link{padding:.4rem .7rem;border-radius:var(--radius-sm);color:var(--text-muted);font-size:.875rem;font-weight:500;text-decoration:none;white-space:nowrap;transition:color .15s ease,background .15s ease}.nav__link:hover{color:var(--text);background:var(--bg-sunken)}.nav__link.is-active{color:var(--accent-text);background:var(--accent-soft)}.nav__actions{display:flex;gap:.4rem;flex-shrink:0}.nav__button{min-width:2.4rem;height:2.2rem;padding:0 .6rem;background:var(--bg-raised);color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;transition:color .15s ease,border-color .15s ease}.nav__button:hover{color:var(--text);border-color:var(--border-strong)}.nav__button--theme{font-size:1rem}.hero{padding:clamp(3rem,9vw,6rem) var(--step) clamp(2rem,5vw,3.5rem);border-bottom:1px solid var(--border);background:radial-gradient(ellipse 70% 100% at 15% 0%,color-mix(in srgb,var(--accent) 9%,transparent),transparent 70%),var(--bg)}.hero__inner{max-width:72rem;margin:0 auto}.hero__eyebrow{color:var(--accent-text);font-size:.8rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.hero__name{margin-top:.6rem;font-family:var(--font-display);font-size:clamp(2.5rem,7vw,4.5rem);font-weight:700;letter-spacing:-.02em}.hero__title{margin-top:.35rem;color:var(--text-muted);font-size:clamp(1.05rem,2vw,1.3rem);font-weight:500}.hero__contacts{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.75rem;color:var(--text-muted);font-size:.925rem}.hero__contacts a{color:inherit;text-decoration:none;border-bottom:1px solid var(--border-strong);padding-bottom:1px}.hero__contacts a:hover{color:var(--accent-text);border-color:currentColor}.content{max-width:72rem;margin:0 auto;padding:0 var(--step)}.section{padding-block:var(--gap-section);border-bottom:1px solid var(--border)}.section:last-child{border-bottom:none}.section__title{margin-bottom:2.5rem;font-family:var(--font-display);font-size:clamp(1.5rem,3vw,2rem);font-weight:500;letter-spacing:-.015em}.section--about{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:clamp(2rem,5vw,4rem);align-items:start}.about__prose{display:grid;gap:1rem;max-width:var(--measure);font-size:clamp(1rem,1.4vw,1.125rem);color:var(--text-muted)}.about__aside{padding:1.5rem;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.about__aside-title{color:var(--accent-text);font-size:.75rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.about__aside-body{margin-top:.75rem;font-size:.925rem;color:var(--text-muted)}.about__misc{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border);font-size:.85rem;color:var(--text-faint)}.timeline{display:grid;gap:3rem}.job{display:grid;grid-template-columns:9.5rem minmax(0,1fr);gap:2rem;position:relative}.job:before{content:"";position:absolute;left:8.5rem;top:.55rem;bottom:-3rem;width:1px;background:var(--border)}.job:last-child:before{bottom:0}.job__period{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;position:relative;padding-top:.15rem;align-self:start;color:var(--text-faint);font-size:.825rem;font-variant-numeric:tabular-nums}.job__period:after{content:"";position:absolute;right:-1.3rem;top:.5rem;width:.55rem;height:.55rem;border-radius:50%;background:var(--bg);border:2px solid var(--border-strong)}.job:first-child .job__period:after{background:var(--accent);border-color:var(--accent)}.job__period-start{color:var(--text-muted);font-weight:600}.job__role-title{font-size:1.2rem;font-weight:600;letter-spacing:-.01em}.job__company{margin-top:.2rem;color:var(--text-muted);font-size:.95rem;font-weight:500}.job__place{color:var(--text-faint);font-weight:400}.job__block{margin-top:1.5rem;max-width:var(--measure)}.job__block-heading{font-size:.95rem;font-weight:600}.job__role{color:var(--text-faint);font-size:.85rem}.job__body{margin-top:.6rem;color:var(--text-muted);font-size:.95rem}.job__bullets{display:grid;gap:.5rem;margin-top:.85rem;color:var(--text-muted);font-size:.925rem}.job__bullets li{padding-left:1.1rem;position:relative}.job__bullets li:before{content:"";position:absolute;left:.15rem;top:.7em;width:.3rem;height:.3rem;border-radius:50%;background:var(--border-strong)}.job__bullets strong{color:var(--text);font-weight:600}.job__tech{margin-top:.85rem;color:var(--text-faint);font-size:.85rem}.job__tech-label{font-weight:600}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1.25rem}.tag{padding:.2rem .6rem;background:var(--bg-sunken);border:1px solid var(--border);border-radius:100px;color:var(--text-muted);font-size:.775rem;font-weight:500;white-space:nowrap}.tags--skills .tag{padding:.3rem .75rem;font-size:.85rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:1rem}.card{padding:1.35rem;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.card__period{color:var(--accent-text);font-size:.775rem;font-weight:600;letter-spacing:.05em;font-variant-numeric:tabular-nums}.card__title{margin-top:.5rem;font-size:1rem;font-weight:600}.card__meta{margin-top:.3rem;color:var(--text-muted);font-size:.875rem}.card__place{color:var(--text-faint)}.card__note{margin-top:.7rem;color:var(--text-faint);font-size:.85rem}.cert-list{display:grid;border-top:1px solid var(--border)}.cert{display:grid;grid-template-columns:4rem minmax(0,1fr) auto;gap:1rem;align-items:baseline;padding:.9rem .5rem;border-bottom:1px solid var(--border);transition:background .12s ease}.cert:hover{background:var(--bg-sunken)}.cert__year{color:var(--text-faint);font-size:.85rem;font-weight:600;font-variant-numeric:tabular-nums}.cert__body{display:grid;gap:.15rem}.cert__name{font-size:.925rem;font-weight:500}.cert__issuer{color:var(--text-faint);font-size:.8rem}.cert__kind{padding:.15rem .55rem;border-radius:100px;font-size:.7rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}.cert__kind--certification{background:var(--accent-soft);color:var(--accent-text)}.cert__kind--course{background:var(--bg-sunken);color:var(--text-faint);border:1px solid var(--border)}.skills{display:grid;gap:2rem}.skill-group__head{display:flex;align-items:center;gap:1rem;margin-bottom:.85rem}.skill-group__title{flex-shrink:0;min-width:8rem;font-size:.8rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}.skill-group__meter{flex:1;height:3px;background:var(--bg-sunken);border-radius:100px;overflow:hidden}.skill-group__meter-fill{display:block;width:var(--fill);height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 55%,transparent),var(--accent))}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;max-width:72rem;margin:0 auto;padding:2.5rem var(--step) 3.5rem;color:var(--text-faint);font-size:.85rem}@media(max-width:900px){.section--about{grid-template-columns:1fr}}@media(max-width:680px){.nav{flex-wrap:wrap;padding-inline:.75rem}.nav__burger{display:block;order:-1}.nav__links{order:3;flex-basis:100%;flex-direction:column;gap:.1rem;display:none;padding:.4rem 0 .6rem;border-top:1px solid var(--border);margin-top:.6rem}.nav.is-open .nav__links{display:flex}.nav__link{padding:.6rem .7rem;font-size:.95rem}.job{grid-template-columns:1fr;gap:.75rem}.job:before,.job__period:after{display:none}.job__period{display:flex;gap:.35rem}.job__period-start:after{content:" —"}.cert{grid-template-columns:3.5rem minmax(0,1fr);row-gap:.4rem}.cert__kind{grid-column:2;justify-self:start}.skill-group__head{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media print{:root{--bg: #fff;--bg-raised: #fff;--bg-sunken: #f4f4f4;--text: #000;--text-muted: #333;--text-faint: #555;--border: #ddd}.nav,.nav__burger,.skip-link,.footer{display:none}body{font-size:10.5pt}.hero{padding:0 0 1.5rem;background:none}.content{padding:0}.section{padding-block:1.5rem;break-inside:avoid}.job,.card,.cert{break-inside:avoid}.card:hover{transform:none;box-shadow:none}a{color:inherit;text-decoration:none}}
