@charset "UTF-8";
:root { color-scheme:dark; --bg:#050a12; --text:#f4f6fa; --muted:#afbdce; --accent:#91d9ff; --line:#b9d6f329; --page-progress:0; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
* { box-sizing:border-box; }
[hidden] { display:none!important; }
html { scroll-behavior:smooth; scroll-padding-top:100px; scrollbar-gutter:stable; }
body { margin:0; background:var(--bg); color:var(--text); font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased; }
body.modal-open { overflow:hidden; }
::selection { color:#04111b; background:var(--accent); }
a { color:inherit; text-decoration:none; }
button { font:inherit; color:inherit; cursor:pointer; }
a,button { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
a:focus-visible,button:focus-visible,summary:focus-visible { outline:2px solid var(--accent); outline-offset:5px; }
.shell { width:min(1320px,calc(100% - 112px)); margin-inline:auto; }
.scene { position:fixed; inset:0; z-index:0; overflow:hidden; background:radial-gradient(ellipse at 70% 45%,#122437 0,#07101b 48%,#03070e 100%); pointer-events:none; }
main,.site-footer { position:relative; z-index:1; }
#electrical-scene { display:block; width:100%; height:100%; }
.scene-scrim { position:absolute; inset:0; background:linear-gradient(90deg,#030710c9 0,#03071090 31%,#03071021 69%,#03071008 100%),linear-gradient(0deg,#03071080,transparent 30%,#03071025 70%,#03071065); }
.reading-progress { position:fixed; top:0; left:0; width:100%; height:2px; background:var(--accent); transform:scaleX(var(--page-progress)); transform-origin:left; z-index:40; }
.skip-link { position:fixed; top:-100px; left:18px; z-index:50; background:#d5edff; color:#07101b; padding:12px 20px; border-radius:6px; }
.skip-link:focus { top:15px; }
.site-header { height:88px; padding-inline:56px; display:flex; align-items:center; justify-content:space-between; position:fixed; inset:0 0 auto; z-index:30; border-bottom:1px solid transparent; transition:background .25s,border-color .25s; }
.site-header.is-scrolled { background:#07101bdc; border-color:#bddcf51c; backdrop-filter:blur(20px); }
.wordmark { display:inline-flex; align-items:center; }
.mark { font-size:26px; letter-spacing:-.06em; font-weight:600; }
.mark span,.name-dot { color:var(--accent); }
.header-right { display:flex; align-items:center; gap:20px; }
.menu-toggle { display:flex; align-items:center; gap:14px; padding:10px 0; border:0; background:none; font-size:13px; min-height:44px; }
.menu-lines { width:21px; height:9px; border-block:1px solid #d7e9f7; }
.language-toggle { border:1px solid #c2deef3a; background:#0a142177; border-radius:30px; padding:9px 13px; min-height:42px; min-width:44px; font-size:12px; }
.menu-toggle:hover,.language-toggle:hover { color:var(--accent); }
.portrait { display:grid; place-items:center; width:42px; height:42px; flex:none; overflow:hidden; border-radius:50%; background:linear-gradient(140deg,#264860,#101f31); border:1px solid #9bd7fa55; color:#d0eaff; font-size:12px; letter-spacing:.025em; }
.portrait img { width:100%; height:100%; object-fit:cover; }
.hero { min-height:100svh; padding-block:130px 115px; display:flex; align-items:center; justify-content:center; position:relative; text-align:center; }
.hero-copy { width:100%; max-width:1180px; padding-block:15px; text-shadow:0 2px 24px #02060e; }
.eyebrow { display:flex; align-items:center; gap:14px; margin:0 0 24px; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:#b4cee0; }
.hero .eyebrow { justify-content:center; font-size:10px; letter-spacing:.19em; margin-bottom:27px; }
h1 { font-weight:500; font-size:clamp(50px,6.4vw,88px); line-height:1.08; letter-spacing:-.065em; margin:0 0 17px; }
.professional-title { font-size:clamp(17px,1.75vw,23px); font-weight:400; letter-spacing:-.015em; color:#c3daeb; margin:0; }
.hero-statement { font-size:clamp(28px,4vw,56px); line-height:1.16; letter-spacing:-.045em; font-weight:450; margin:45px auto 32px; max-width:970px; text-wrap:balance; }
.hero-statement strong { color:#9cddff; font-weight:650; }
.main-actions { display:flex; justify-content:center; gap:14px; text-shadow:none; }
.hero-action { display:flex; align-items:center; justify-content:center; gap:14px; min-height:58px; min-width:175px; padding:15px 24px; border:1px solid #99c6e657; border-radius:9px; background:#0d1c2ee8; font-size:14px; font-weight:500; box-shadow:0 8px 30px #0003; transition:transform .2s,background .2s,border-color .2s; }
.hero-action:hover { transform:translateY(-3px); background:#19374f; border-color:#a3dcffad; }
.hero-action svg { width:19px; height:19px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.hero-action>span:last-child { opacity:.7; font-size:16px; }
.hero-action-primary { color:#071522; background:#c8eaff; border-color:#c8eaff; }
.hero-action-primary:hover { background:#e5f5ff; border-color:#e5f5ff; }
.scroll-cue { position:absolute; left:50%; bottom:28px; transform:translateX(-50%); display:flex; flex-direction:column; gap:10px; align-items:center; width:max-content; max-width:100%; font-size:11px; color:#b6c5d1; letter-spacing:.015em; }
.scroll-cue:hover { color:white; }
.scroll-stem { color:#8fd7ff; font-size:20px; line-height:1; }
.five-section { min-height:88svh; display:flex; align-items:center; padding-block:130px; }
.five-copy { display:flex; align-items:center; gap:36px; max-width:690px; }
.five-number { font-size:clamp(100px,16vw,200px); line-height:1; font-weight:300; letter-spacing:-.09em; color:#dcefff; }
.five-number span { color:var(--accent); }
.five-copy h2 { margin-bottom:0; max-width:440px; }
#five-text { color:#b9cbdb; margin:24px 0 0; white-space:pre-line; max-width:480px; }
.chapter { min-height:112svh; display:flex; align-items:center; padding-block:140px; position:relative; }
.chapter-copy { width:min(600px,51%); min-width:0; }
.chapter-number { color:#77caff; font-variant-numeric:tabular-nums; letter-spacing:0; font-size:12px; }
h2 { white-space:pre-line; overflow-wrap:break-word; font-size:clamp(40px,4.4vw,66px); font-weight:450; line-height:1.06; letter-spacing:-.055em; margin:0 0 26px; }
.chapter-intro { font-size:16px; color:#b6c8da; line-height:1.8; margin:0 0 28px; max-width:460px; }
.chapter-panel { background:linear-gradient(140deg,#102031eb,#091321f0); border:1px solid #adceed28; border-radius:15px; padding:28px; backdrop-filter:blur(18px); box-shadow:0 25px 80px #0002; }
.entry-meta { font-size:10px!important; letter-spacing:.08em; color:#95c8e6!important; line-height:1.6!important; margin:0 0 10px!important; }
h3 { font-size:21px; font-weight:500; letter-spacing:-.025em; line-height:1.3; margin:0 0 12px; }
.chapter-panel p { color:#b0c1d2; font-size:15px; line-height:1.8; margin:0; }
.tag-row { display:flex; flex-wrap:wrap; gap:8px; margin-top:22px; }
.tag-row span { font-size:11px; color:#bdcddc; padding:4px 9px; border-radius:4px; background:#badbff0a; border:1px solid #badbff19; }
.experience-details { border-top:1px solid #badbff22; margin-top:26px; }
.experience-details summary { display:flex; align-items:center; justify-content:space-between; gap:10px; list-style:none; cursor:pointer; font-size:12px; color:#c3e7fc; padding-top:21px; min-height:48px; }
.experience-details summary::-webkit-details-marker { display:none; }
.experience-details summary>span:last-child { font-size:20px; font-weight:300; }
.experience-details[open] summary>span:last-child { transform:rotate(45deg); }
.details-content { padding-top:25px; }
.details-content h4 { font-size:17px; font-weight:500; margin:0 0 10px; }
.education-list article+article { border-top:1px solid #badbff22; margin-top:26px; padding-top:26px; }
.entry-organization { font-size:12px!important; color:#d0deec!important; margin:0 0 13px!important; }
.entry-list { padding:5px 28px; }
.list-entry { padding-block:22px; }
.list-entry+.list-entry { border-top:1px solid #badbff1e; }
.list-entry h3 { font-size:16px; line-height:1.45; letter-spacing:-.015em; margin:0 0 6px; }
.list-entry p { font-size:12px; line-height:1.65; }
.list-entry .entry-meta { font-size:10px!important; margin-bottom:7px!important; }
.list-entry a { color:#a8dfff; font-size:12px; display:inline-flex; margin-top:10px; }
.modal-dialog { color:var(--text); width:min(560px,calc(100% - 32px)); max-height:calc(100svh - 48px); padding:0; border:1px solid #a5d4f140; border-radius:18px; background:#0a1423; box-shadow:0 40px 140px #0009; overflow:auto; overscroll-behavior:contain; }
.modal-dialog::backdrop { background:#010610b8; backdrop-filter:blur(10px); }
.dialog-surface { padding:30px; }
.dialog-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:25px; }
.dialog-heading h2 { font-size:36px; margin:0; letter-spacing:-.045em; }
.close-dialog { flex:none; display:grid; place-items:center; width:44px; height:44px; font-size:27px; line-height:1; font-weight:300; background:#b8dbf70a; border:1px solid #badbff29; border-radius:50%; }
.close-dialog:hover { background:#b8dbf722; }
.menu-dialog { position:fixed; width:min(450px,calc(100% - 28px)); height:100dvh; max-height:100dvh; margin:0; inset:0 0 0 auto; border-radius:0; border-width:0 0 0 1px; transform:translateX(100%); transition:transform 300ms cubic-bezier(.22,.68,.2,1); }
.menu-dialog.is-visible { transform:translateX(0); }
.menu-dialog::backdrop { background:#01061000; backdrop-filter:blur(0); transition:background 300ms,backdrop-filter 300ms; }
.menu-dialog.is-visible::backdrop { background:#010610b8; backdrop-filter:blur(8px); }
.menu-dialog .dialog-surface { padding:36px 30px; }
.menu-dialog .dialog-heading { margin-bottom:36px; }
.menu-dialog .menu-link { padding-block:23px; }
.menu-dialog .dialog-heading h2 { font-size:28px; }
.menu-link { display:grid; grid-template-columns:22px 1fr 16px; align-items:center; gap:14px; border-top:1px solid var(--line); padding-block:18px; }
.menu-index { color:#82badc; font-size:10px; font-variant-numeric:tabular-nums; }
.menu-label { font-size:16px; line-height:1.4; }
.menu-arrow { color:#91d9ff; }
.menu-link:hover .menu-label,.menu-link[aria-current="location"] .menu-label { color:#91d9ff; }
.cv-option+.cv-option { border-top:1px solid var(--line); padding-top:24px; margin-top:24px; }
.cv-option-heading { display:flex; align-items:center; gap:13px; }
.cv-option-heading h3 { font-size:19px; margin:0; }
.language-chip { display:grid; place-items:center; width:35px; height:28px; border:1px solid #99c6e64d; border-radius:5px; font-size:10px; letter-spacing:.04em; color:#a9d9f4; }
.file-note,.chapter-panel .file-note { color:#9eb2c5; font-size:11px; line-height:1.6; margin:11px 0 0; }
.pdf-actions { display:flex; gap:10px; margin-top:19px; }
.pdf-action { flex:1; text-align:center; border:1px solid #99c6e657; border-radius:7px; padding:12px 10px; font-size:12px; background:#17354c; }
.pdf-action:hover { background:#224b67; }
.pdf-download { background:#c8eaff; color:#0a1d2c; border-color:#c8eaff; }
.pdf-download:hover { background:#e5f5ff; }
.contact-option { display:flex; align-items:center; justify-content:space-between; gap:16px; padding-block:20px; border-top:1px solid var(--line); }
.contact-option-text { min-width:0; }
.contact-option-label { display:block; color:#91b6d1; font-size:11px; margin-bottom:6px; }
.contact-value { font-size:15px; color:#d8ecfa; overflow-wrap:anywhere; }
.contact-value:hover { color:#91d9ff; text-decoration:underline; text-underline-offset:4px; }
.copy-button { flex:none; min-width:56px; min-height:42px; font-size:11px; padding:10px 12px; border:1px solid #99c6e650; border-radius:7px; background:#132a3c; }
.copy-button:hover { background:#20425b; }
.copy-status,.chapter-panel .copy-status { font-size:11px; color:#a9d9f4; min-height:18px; margin:8px 0 0; overflow-wrap:anywhere; }
.scene-caption { position:fixed; bottom:31px; right:44px; display:flex; align-items:center; gap:13px; pointer-events:none; z-index:1; color:#b5cee2; }
.scene-marker { width:6px; height:6px; border:1px solid #89d3ff; box-shadow:0 0 12px #69c7ff55; transform:rotate(45deg); }
.scene-caption div { display:grid; gap:5px; }
#scene-step { font-size:10px; letter-spacing:.16em; }
#scene-detail { font-size:11px; color:#98b1c7; }
.site-footer { display:flex; align-items:center; justify-content:space-between; gap:20px; padding-block:30px 70px; border-top:1px solid #b2d3ef22; font-size:11px; color:#9db1c4; }
.site-footer .wordmark { font-size:20px; color:#dce9f6; }
.site-footer a:last-child { display:flex; gap:14px; }
.noscript-message { position:relative; background:#0c1c2d; padding:24px; margin:0; color:#abc3d6; }
.noscript-message a { text-decoration:underline; }
@media (max-width:1100px) {
  .shell { width:calc(100% - 72px); }
  .site-header { padding-inline:36px; }
  .chapter-copy { width:58%; }
  .scene-caption { right:28px; }
  .hero .name-part { display:block; }
  h1 { font-size:clamp(56px,8.2vw,83px); }
}
@media (max-width:760px) {
  html { scroll-padding-top:88px; }
  .shell { width:calc(100% - 40px); }
  .site-header { height:72px; padding-inline:20px; }
  .mark { font-size:24px; }
  .header-right { gap:16px; }
  .menu-toggle { font-size:12px; gap:10px; }
  .menu-lines { width:18px; }
  .language-toggle { min-height:40px; padding:8px 11px; }
  .portrait { width:36px; height:36px; font-size:10px; }
  .hero { padding-block:108px 105px; }
  .hero-copy { max-width:580px; }
  .hero .eyebrow { font-size:9px; letter-spacing:.1em; line-height:1.6; margin:0 auto 24px; max-width:300px; }
  h1 { font-size:clamp(44px,10.5vw,72px); margin-bottom:18px; line-height:1.08; }
  .professional-title { font-size:16px; line-height:1.4; max-width:340px; margin-inline:auto; }
  .hero-statement { font-size:clamp(30px,7.4vw,47px); margin:32px auto 28px; max-width:460px; }
  .main-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; width:100%; max-width:450px; margin:auto; }
  .hero-action { min-width:0; min-height:55px; padding:12px 9px; gap:8px; font-size:12px; }
  .hero-action svg { width:16px; height:16px; flex:none; }
  .hero-action>span:last-child { display:none; }
  .scroll-cue { bottom:30px; font-size:10px; }
  .five-section { min-height:90svh; padding-block:130px; }
  .five-copy { gap:22px; }
  .five-number { font-size:100px; }
  .five-copy h2 { font-size:37px; }
  #five-text { font-size:14px; }
  .chapter { min-height:120svh; padding-block:120px; align-items:flex-start; }
  .chapter-copy { width:100%; max-width:540px; }
  .chapter .eyebrow { font-size:9px; letter-spacing:.1em; }
  h2 { font-size:clamp(38px,9vw,58px); max-width:480px; }
  .chapter-intro { font-size:15px; max-width:400px; }
  .chapter-panel { padding:24px; background:linear-gradient(145deg,#102133ed,#080f1af7); }
  .chapter-panel p { font-size:14px; }
  h3 { font-size:19px; }
  .entry-list { padding:3px 24px; }
  .list-entry h3 { font-size:15px; }
  .list-entry p { font-size:12px; }
  .scene-scrim { background:linear-gradient(90deg,#030710a0,#03071045),linear-gradient(0deg,#03071050,transparent 50%,#03071050); }
  .scene-caption { bottom:12px; right:20px; opacity:.7; }
  #scene-detail { display:none; }
  #scene-step { font-size:8px; letter-spacing:.12em; }
  .scene-marker { width:4px; height:4px; }
  .site-footer { flex-wrap:wrap; font-size:10px; padding-bottom:60px; }
  .site-footer .wordmark { display:none; }
  .dialog-surface { padding:24px; }
  .dialog-heading h2 { font-size:30px; }
  .menu-dialog .dialog-surface { padding:24px; }
  .menu-label { font-size:15px; }
  .contact-option { gap:12px; }
  .contact-value { font-size:13px; }
}
@media (max-width:370px) {
  .shell { width:calc(100% - 32px); }
  .site-header { padding-inline:16px; }
  .header-right { gap:12px; }
  .hero .eyebrow { font-size:8px; }
  h1 { font-size:41px; }
  .professional-title { font-size:14px; }
  .hero-statement { font-size:29px; }
  .hero-action { font-size:11px; gap:6px; padding-inline:6px; }
  .hero-action svg { width:14px; height:14px; }
  .chapter-panel,.dialog-surface { padding:20px; }
  .contact-option { align-items:flex-start; flex-direction:column; gap:10px; }
  .copy-button { min-height:40px; }
  .five-copy { gap:15px; }
  .five-copy h2 { font-size:32px; }
  .five-number { font-size:86px; }
}
@media (max-height:650px) and (min-width:761px) {
  .site-header { height:70px; }
  .hero { padding-block:90px 75px; }
  h1 { font-size:55px; }
  .hero .name-part { display:inline; }
  .hero .eyebrow { margin-bottom:15px; }
  .hero-statement { font-size:36px; margin:22px auto; }
  .scroll-cue { bottom:15px; }
}
@media (max-height:740px) and (max-width:760px) {
  .hero { padding-block:84px 70px; }
  .hero-copy { padding:0; }
  .hero .eyebrow { margin-bottom:14px; }
  h1 { font-size:clamp(38px,10vw,58px); line-height:1.04; margin-bottom:12px; }
  .professional-title { font-size:14px; }
  .hero-statement { font-size:27px; margin:20px auto; max-width:370px; }
  .hero-action { min-height:48px; }
  .scroll-cue { bottom:22px; gap:7px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition:none!important; animation:none!important; }
}
.header-left {
  display: flex;
  align-items: center;
  gap: 12px;
}

button.portrait {
  padding: 0;
  cursor: zoom-in;
}

button.portrait:disabled {
  cursor: default;
}

.portrait-dialog {
  inset: 0;
  width: 100%;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 64px 20px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  cursor: zoom-out;
}

.portrait-dialog[open] {
  display: flex;
  align-items: center;
  justify-content: center;
}

.portrait-dialog img {
  display: block;
  width: auto;
  height: auto;
  max-width: min(700px, 90vw);
  max-height: 80dvh;
  object-fit: contain;
  border-radius: 12px;
}

.portrait-dialog .close-dialog {
  position: absolute;
  top: 20px;
  right: 20px;
}
/* Detailed content retains the existing visual design. */
.profile-group { margin-bottom: 2rem; }
.list-entry ul { padding-left: 1.25rem; }
.list-entry li + li { margin-top: .6rem; }
.entry-photo { margin: 1.5rem 0; }
.entry-photo img { display: block; max-width: 100%; height: auto; border-radius: 12px; }
.entry-photo figcaption { margin-top: .5rem; font-size: .85rem; }
.entry-link { display: inline-block; margin: .5rem 1rem .5rem 0; }
.cv-extra { margin-top: 1.5rem; }
#five-text { white-space: pre-line; }

/* Align the job entries with the profile and skills text. */
.work-experience-list {
  padding: 0;
}

/* Reduce the gap after Technical & professional skills. */
.profile-overview .profile-group:last-child {
  margin-bottom: 0;
}

/* Heading between the skills and the job entries. */
.experience-list-title {
  margin: 20px 0 12px;
}

/* Remove the extra space before the first job. */
.work-experience-list > .list-entry:first-child {
  padding-top: 0;
}

/* Use a smaller gap around each job. */
.work-experience-list > .list-entry {
  padding-bottom: 16px;
}

.work-experience-list > .list-entry + .list-entry {
  padding-top: 16px;
}

/* Justify descriptive text throughout the website. */
.profile-group > p,
.list-entry > p:not(.entry-meta):not(.entry-organization),
.list-entry li,
.chapter-intro,
#five-text {
  text-align: justify;
  text-align-last: left;
  hyphens: auto;
  overflow-wrap: break-word;
}

/* Inline emphasis inside descriptions. */
.chapter-panel strong {
  font-weight: 700;
}

.text-gold {
  color: #ffd700;
}

.text-blue {
  color: #7dd3fc;
}

.five-number {
  color: #ffd700;
}


#five-text strong {
  color: #ffd700;
  font-weight: 700;
}