.home{display:grid;gap:1.25rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.4rem 1.5rem}.hero{display:grid;grid-template-columns:220px 1fr;grid-template-areas:"photo copy" "contact contact";gap:1.5rem 1.5rem;align-items:start}.portrait{grid-area:photo;width:220px;height:268px;object-fit:cover;object-position:center 12%;border-radius:22px;border:4px solid var(--blue-soft)}.hero-copy{grid-area:copy}.hero-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem 1.25rem;align-items:start}.hero-downloads{display:flex;flex-direction:column;align-items:stretch;gap:.4rem;min-width:11.5rem}.hero-downloads .pdf-button{text-align:center;font-size:.82rem;line-height:1.25;padding:.45rem .75rem;white-space:normal}.eyebrow,.job-meta,.role-dates,.place-meta,.section-intro,.planned{color:var(--muted)}.headline{font-size:1.2rem;color:var(--blue-deep);margin:.2rem 0 .8rem}.hero h1{font-size:clamp(2rem,4vw,3rem);line-height:1.05}.summary,.availability,.education p,.role p{margin-top:.7rem}.role-summary{white-space:pre-line}.contact-row{grid-area:contact;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:.75rem;row-gap:.5rem;margin-top:0}.contact-label{font-weight:600}.tag-row,.project-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.contact-chip-wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem;min-width:0}.contact-value.contact-phone{overflow:visible;text-overflow:clip;font-variant-numeric:tabular-nums}.contact-chip,.tag{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line);border-radius:999px;background:var(--blue-soft);text-decoration:none;color:var(--ink);font-size:.92rem}.contact-chip{min-width:0;max-width:100%;justify-self:stretch}.contact-media{display:inline-flex;align-items:center;justify-content:center;width:1.15em;flex:0 0 1.15em;line-height:1}.contact-envelope{display:block;color:var(--ink)}.contact-github{display:inline-flex;align-items:center;justify-content:center;background:#fff;border-radius:3px;padding:1px;line-height:0}.contact-value{-webkit-user-select:all;user-select:all;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy-btn{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;padding:.25rem .55rem;font-size:.75rem;cursor:pointer;min-width:4.4rem}.tag.active{background:var(--blue-solid);color:var(--on-blue);border-color:var(--blue-solid)}.tag.inert{cursor:default}.split{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.citizenship{font-size:1.2rem;font-family:Fraunces,Georgia,serif;color:var(--blue-deep);margin:.4rem 0 .7rem}.plain-list{margin:0;padding-left:1.1rem}.location-path{list-style:none;display:flex;flex-wrap:wrap;align-items:stretch;gap:.4rem .2rem;padding:0;margin:.8rem 0 0}.location-path li{display:flex;align-items:center;gap:.35rem}.path-arrow{color:var(--blue);font-weight:700;margin:0 .25rem}.place{display:flex;flex-direction:column;justify-content:center;min-width:8.5rem;padding:.45rem .7rem;border-radius:12px;background:var(--blue-soft)}.place-meta{font-size:.82rem;line-height:1.35}.filter-bar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin:.8rem 0}.filter-bar button{background:var(--blue-soft);border-radius:999px}.skill-list{list-style:none;padding:0;margin:.5rem 0 0;display:grid;gap:.45rem}.skill-row{width:100%;display:grid;grid-template-columns:20px minmax(8rem,13rem) 7rem 1fr;gap:.7rem;align-items:center;text-align:left;background:transparent;border:0;color:inherit;cursor:pointer;padding:.35rem .2rem;border-radius:10px}.skill-row.active,.skill-row:hover{background:var(--blue-soft)}.skill-name{font-weight:500}.skill-years{color:var(--muted);font-size:.9rem}.tech-group{margin-top:.85rem}.tech-group .subhead{margin-bottom:.45rem}.skill-bar{display:block;height:10px;background:color-mix(in srgb,var(--line) 70%,transparent);border-radius:999px;overflow:hidden}.skill-bar-fill{display:block;height:100%;border-radius:inherit}.skill-icon,.skill-fallback{width:16px;height:16px;flex:none}.skill-icon-plate{display:inline-flex;align-items:center;justify-content:center;background:#fff;border-radius:4px;flex:none;line-height:0}.skill-list-wrap{position:relative}.skill-list-wrap:not(.open):after{content:"";position:absolute;inset:auto 0 0;height:3.4rem;pointer-events:none;background:linear-gradient(to bottom,transparent,var(--surface));backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 55%);mask-image:linear-gradient(to bottom,transparent,#000 55%)}.skill-more{position:relative;z-index:1;display:block;width:100%;margin:-.35rem 0 0;padding:.55rem 0 .15rem;border:0;background:transparent;color:var(--blue);font-size:.88rem;font-weight:500;cursor:pointer}.skill-list-wrap:not(.open) .skill-more{position:absolute;bottom:.15rem;margin:0;padding:.2rem 0}.skill-fallback,.logo-fallback{display:grid;place-items:center;background:var(--blue-solid);color:var(--on-blue);border-radius:6px;font-size:.7rem;font-weight:700}.logo-fallback,.company-logo,.career-break-mark{width:72px;height:40px;border-radius:10px;object-fit:contain;background:#fff;border:1px solid var(--line)}.career-break-mark{display:block;overflow:hidden;background:#f4efe4}.career-break-mark svg{display:block}.experience-list,.job,.role{display:grid;gap:1rem}.job{padding-top:1rem;border-top:1px solid var(--line)}.job:first-child{border-top:0;padding-top:0}.job-header{display:flex;gap:.8rem;align-items:center}.job h3 a,.project-card h3 a,.project-card h4{color:inherit;text-decoration:none}.job h3 a:hover,.project-card a:hover{color:var(--blue)}.role ul{margin:.5rem 0 0;padding-left:1.1rem}.subhead{margin:1.3rem 0 .7rem}.project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8rem}.project-card{display:grid;gap:.5rem;padding:1rem;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:inherit;background:var(--blue-soft)}.project-card.static{background:transparent}@media (max-width: 800px){.hero,.split,.skill-row,.contact-row{grid-template-columns:1fr}.hero{grid-template-areas:"photo" "copy" "contact"}.hero-heading{grid-template-columns:1fr}.hero-downloads{min-width:0}.portrait{width:160px;height:195px}}.app{min-height:100vh}.skip-link{position:absolute;left:-999px;top:0;background:var(--blue-solid);color:var(--on-blue);padding:.5rem 1rem}.skip-link:focus{left:1rem;top:1rem;z-index:20}.site-header{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.header-inner,.main{width:min(1080px,calc(100% - 2rem));margin:0 auto}.header-inner{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 0}.wordmark{font-size:1.15rem;font-weight:650;color:var(--blue-deep)}.header-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.segmented{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--surface)}.segmented button,.pdf-button,.filter-bar button,.tag,.contact-chip{border:0;background:transparent;color:var(--ink);cursor:pointer;padding:.4rem .8rem}.segmented button.active{background:var(--blue-solid);color:var(--on-blue)}.pdf-button{background:var(--blue-solid);color:var(--on-blue);border-radius:999px;text-decoration:none;display:inline-block}.extras-toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--muted);cursor:pointer}.extras-toggle input{accent-color:var(--blue-solid)}.translation-banner{width:min(1080px,calc(100% - 2rem));margin:1rem auto 0;padding:.75rem 1rem;background:#fff4d6;color:#5c4813;border-radius:12px}:root[data-theme=dark] .translation-banner{background:#3d3214;color:#f8e7b0}.main{padding:1.5rem 0 4rem}@media (max-width: 720px){.header-inner{flex-direction:column;align-items:flex-start}}:root{color-scheme:light;--bg: #f3f5f7;--bg-accent: #dde5eb;--surface: #ffffff;--ink: #1c252d;--muted: #5b6b78;--line: #d5dde3;--blue: #4a7391;--blue-deep: #355a73;--blue-soft: #e8eef2;--blue-solid: #4a7391;--on-blue: #f7fafc;--shadow: 0 16px 40px rgba(53, 90, 115, .08);--radius: 18px}:root[data-theme=dark]{color-scheme:dark;--bg: #12171c;--bg-accent: #1a232b;--surface: #1b232b;--ink: #e6ecf0;--muted: #9aabba;--line: #2c3843;--blue: #8aa9bd;--blue-deep: #c5d5e0;--blue-soft: #24303a;--blue-solid: #4a7391;--on-blue: #f7fafc;--shadow: 0 16px 40px rgba(0, 0, 0, .28)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:IBM Plex Sans,Segoe UI,sans-serif;background:radial-gradient(1200px 500px at 10% -10%,var(--bg-accent),transparent 55%),var(--bg);color:var(--ink);line-height:1.55}h1,h2,h3,h4,.wordmark{font-family:Fraunces,Georgia,serif;letter-spacing:-.02em}h1,h2,h3,h4,p{margin:0}a{color:var(--blue)}img{max-width:100%;display:block}button{font:inherit}#root{min-height:100vh}.boot-message{min-height:100vh;display:grid;place-items:center;color:var(--muted)}
