@layer properties;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.static{position:static}.contents{display:contents}.hidden{display:none}.inline{display:inline}.resize{resize:both}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root{--bg: #F2F5F9;--surface: #FFFFFF;--ink: #0D1726;--muted: #55627A;--line: #D9E1EC;--accent: #1373D6;--accent-ink: #FFFFFF;--accent-soft: #E2EEFB;--signal: #B9690F;--console: #0D1726;--console-ink: #D3E0F1;--console-dim: #7F92AE;--console-ok: #6FD3A0;--glass: rgba(242, 245, 249, .84);--net: 19, 115, 214;--f-display: "Schibsted Grotesk", "Helvetica Neue", Arial, sans-serif;--f-body: "IBM Plex Sans", "Segoe UI", Roboto, Arial, sans-serif;--f-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--step--1: .8125rem;--step-0: 1rem;--step-1: 1.1875rem;--step-2: 1.5rem;--step-3: clamp(1.75rem, 3.2vw, 2.375rem);--step-4: clamp(2.375rem, 5.4vw, 4rem);--radius: 14px;--max: 1120px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #08101B;--surface: #0F1928;--ink: #E5ECF5;--muted: #93A1B7;--line: #1E2C42;--accent: #4CA3FF;--accent-ink: #03101F;--accent-soft: #11243B;--signal: #F0AE57;--console: #050A12;--console-ink: #CCD9EB;--console-dim: #6E809B;--console-ok: #6FD3A0;--glass: rgba(8, 16, 27, .82);--net: 76, 163, 255;color-scheme:dark}}:root[data-theme=dark]{--bg: #08101B;--surface: #0F1928;--ink: #E5ECF5;--muted: #93A1B7;--line: #1E2C42;--accent: #4CA3FF;--accent-ink: #03101F;--accent-soft: #11243B;--signal: #F0AE57;--console: #050A12;--console-ink: #CCD9EB;--console-dim: #6E809B;--console-ok: #6FD3A0;--glass: rgba(8, 16, 27, .82);--net: 76, 163, 255;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}img{max-width:100%}html{scroll-behavior:smooth;scroll-padding-top:84px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:var(--step-0);line-height:1.6;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:60;background:var(--glass)}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}h1,h2,h3{font-family:var(--f-display);line-height:1.12;text-wrap:balance;margin:0;letter-spacing:-.01em}p{margin:0}ul{margin:0;padding:0;list-style:none}.wrap{max-width:calc(var(--max) + 64px);margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}@media(min-width:700px){.wrap{padding-left:max(32px,env(safe-area-inset-left,0px));padding-right:max(32px,env(safe-area-inset-right,0px))}}.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:var(--glass);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line)}.nav{display:flex;align-items:center;gap:20px;padding-block:12px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-family:var(--f-display);font-weight:700}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--accent);color:var(--accent-ink);font-size:.95rem;letter-spacing:.02em}.brand-name{white-space:nowrap}.nav-links{display:flex;gap:4px;margin-left:auto}.nav-links a{color:var(--muted);text-decoration:none;font-size:.9375rem;font-weight:500;padding:6px 10px;border-radius:8px;transition:color .2s,background .2s}.nav-links a:hover{color:var(--ink);background:var(--accent-soft)}.nav-links a.active{color:var(--accent)}.nav-tools{display:flex;align-items:center;gap:8px}.lang-switch{display:flex;border:1px solid var(--line);border-radius:999px;padding:3px;background:var(--surface)}.lang-switch button{border:0;background:transparent;color:var(--muted);font:600 .8125rem/1 var(--f-mono);padding:7px 10px;border-radius:999px;cursor:pointer;letter-spacing:.04em}.lang-switch button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.icon-btn{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}.icon-btn svg{width:18px;height:18px}.menu-btn{display:none}@media(max-width:900px){.menu-btn{display:grid}.nav-tools{margin-left:auto}.nav-links{position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;margin:0;background:var(--surface);border-bottom:1px solid var(--line);padding:8px max(16px,env(safe-area-inset-right,0px)) 16px max(16px,env(safe-area-inset-left,0px))}.nav-links[data-open=false]{display:none}.nav-links a{padding:12px 8px;font-size:1rem}}@media(max-width:420px){.brand-name{display:none}}.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.hero canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 45%,#000 100%);mask-image:linear-gradient(90deg,transparent 0%,#000 45%,#000 100%)}.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:56px;align-items:center;padding-block:72px 80px}.eyebrow{display:inline-flex;align-items:center;gap:8px;font:500 var(--step--1)/1.3 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--console-ok);box-shadow:0 0 0 4px var(--console-ok);animation:pulse 2.4s ease-in-out infinite}@supports (color: color-mix(in lab,red,red)){.status-dot{box-shadow:0 0 0 4px color-mix(in srgb,var(--console-ok) 25%,transparent)}}@keyframes pulse{50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--console-ok) 0%,transparent)}}.hero h1{font-size:var(--step-4);font-weight:800;margin-top:18px;letter-spacing:-.025em}.hero h1 .role{display:block;color:var(--accent);font-size:.5em;font-weight:700;margin-top:10px;letter-spacing:-.01em}.typed-line{margin-top:22px;font-family:var(--f-mono);font-size:clamp(.95rem,1.6vw,1.125rem);color:var(--ink);min-height:3.2em}.typed-line .prompt{color:var(--signal);margin-right:6px}.typed{color:var(--ink)}.caret{display:inline-block;width:.55em;height:1.1em;background:var(--accent);vertical-align:-.18em;margin-left:2px;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.hero .lead{margin-top:18px;max-width:58ch;color:var(--muted);font-size:var(--step-1);line-height:1.55}.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.btn{display:inline-flex;align-items:center;gap:8px;text-decoration:none;cursor:pointer;font:600 .9875rem/1 var(--f-body);padding:14px 20px;border-radius:10px;border:1px solid transparent;transition:transform .2s ease,background .2s,border-color .2s,color .2s}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.btn svg{width:16px;height:16px}.facts{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:32px;color:var(--muted);font-size:.9375rem}.facts li{display:flex;align-items:center;gap:8px}.facts li:before{content:"";width:6px;height:6px;border-radius:2px;background:var(--accent)}.hero-visual{position:relative;display:grid;gap:40px}.portrait{position:relative;width:min(100%,360px);margin-left:auto;aspect-ratio:455 / 549;max-width:100%}.portrait:before{content:"";position:absolute;inset:18px -18px -18px 18px;border-radius:22px;border:1.5px dashed var(--accent)}@supports (color: color-mix(in lab,red,red)){.portrait:before{border:1.5px dashed color-mix(in srgb,var(--accent) 60%,transparent)}}.portrait img{position:relative;display:block;width:100%;height:100%;object-fit:cover;border-radius:22px;box-shadow:0 30px 60px -30px #0a1e3c73}.console{position:relative;width:min(100%,360px);margin-left:auto;background:var(--console);color:var(--console-ink);border-radius:12px;font:400 .78rem/1.65 var(--f-mono);box-shadow:0 24px 50px -20px #000a1e8c;border:1px solid rgba(255,255,255,.06);overflow:hidden}.console-bar{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.07);color:var(--console-dim)}.console-bar i{width:9px;height:9px;border-radius:50%;background:#3a475c}.console-bar span{margin-left:8px}.console-body{padding:10px 14px 12px}.console-line{display:grid;grid-template-columns:1.1em 6.2em 1fr;gap:6px;padding:1px 6px;margin-inline:-6px;border-radius:5px;transition:background .35s}.console-line .tick{color:var(--console-ok)}.console-line .step{color:#8cc4ff}.console-line.active{background:#4ca3ff24}.console-line.active .tick{color:#ffd08a}.console-cmd{color:var(--console-dim);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.console-cmd b{color:#ffd08a;font-weight:500}.console-foot{margin-top:6px;color:var(--console-ok)}@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:40px;padding-block:48px 56px}.hero-visual{gap:36px;justify-items:center}.portrait{margin:0 auto;width:min(78%,320px)}.console{width:100%;max-width:420px;margin:0 auto}}.section{padding-block:88px}.section+.section{border-top:1px solid var(--line)}.section-head{display:grid;gap:12px;margin-bottom:44px;max-width:70ch}.section-head h2{font-size:var(--step-3);font-weight:750}.section-head p{color:var(--muted);font-size:var(--step-1)}@media(max-width:700px){.section{padding-block:64px}}.about-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:56px}.about-copy{display:grid;gap:18px;font-size:1.0625rem;max-width:64ch}.stats{display:flex;flex-wrap:wrap;gap:36px;margin-top:18px;padding-top:24px;border-top:1px solid var(--line)}.stat b{display:block;font:800 2.25rem/1 var(--f-display);color:var(--ink);font-variant-numeric:tabular-nums}.stat span{color:var(--muted);font-size:.9rem}.glance{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;align-self:start}.glance h3{font-size:var(--step-1);margin-bottom:16px}.glance li{display:grid;grid-template-columns:22px 1fr;gap:8px;padding-block:11px;border-top:1px solid var(--line);font-size:.975rem}.glance li:first-child{border-top:0;padding-top:0}.glance li svg{width:18px;height:18px;color:var(--accent);margin-top:3px}@media(max-width:900px){.about-grid{grid-template-columns:1fr;gap:36px}}.services{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.service{display:flex;flex-direction:column;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;transition:border-color .25s,transform .25s}.service:hover{border-color:var(--accent);transform:translateY(-4px)}.service-icon{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.service-icon svg{width:24px;height:24px}.service h3{font-size:var(--step-1)}.service p{color:var(--muted)}.service ul{display:grid;gap:8px;margin-top:4px}.service li{display:grid;grid-template-columns:14px 1fr;gap:10px;font-size:.95rem}.service li:before{content:"";width:8px;height:8px;margin-top:8px;border:2px solid var(--accent);border-radius:2px}.service .btn{margin-top:auto;align-self:flex-start}.service-for{font:500 .75rem/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--signal)}@media(max-width:960px){.services{grid-template-columns:1fr}}.process{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;counter-reset:step;position:relative}.process li{position:relative;padding:0 22px 0 0}.process .num{display:flex;align-items:center;gap:12px;font:600 .8125rem/1 var(--f-mono);color:var(--accent);margin-bottom:18px}.process .num:before{content:"";width:14px;height:14px;border-radius:50%;border:3px solid var(--accent);background:var(--bg);flex:none;position:relative;z-index:1}.process .num:after{content:"";flex:1;height:2px;background:linear-gradient(90deg,var(--accent),var(--line))}.process li:last-child .num:after{background:transparent}.process h3{font-size:var(--step-1);margin-bottom:8px}.process p{color:var(--muted);font-size:.975rem}@media(max-width:860px){.process{grid-template-columns:1fr;gap:28px}.process li{padding:0 0 0 30px}.process .num{position:absolute;left:0;top:4px;margin:0}.process .num span{display:none}.process .num:after{display:none}.process li:not(:last-child):before{content:"";position:absolute;left:6px;top:22px;bottom:-32px;width:2px;background:var(--line)}}.timeline{display:grid;gap:0}.job{display:grid;grid-template-columns:190px minmax(0,1fr);gap:32px;padding-block:30px;border-top:1px solid var(--line)}.job:first-child{border-top:0;padding-top:0}.job-period{font:500 .875rem/1.4 var(--f-mono);color:var(--muted);font-variant-numeric:tabular-nums}.job-period .now{display:inline-block;margin-top:8px;padding:3px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.75rem}.job h3{font-size:var(--step-2)}.job-org{color:var(--accent);font-weight:600;margin-top:4px}.job ul{display:grid;gap:8px;margin-top:16px;max-width:72ch}.job li{position:relative;padding-left:18px}.job li:before{content:"\203a";position:absolute;left:0;color:var(--accent);font-weight:700}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}.tag{font:500 .75rem/1 var(--f-mono);padding:6px 9px;border-radius:6px;border:1px solid var(--line);color:var(--muted);background:var(--surface)}@media(max-width:760px){.job{grid-template-columns:1fr;gap:10px}}.skills-legend{display:flex;flex-wrap:wrap;gap:6px 18px;font:500 .8125rem/1.4 var(--f-mono);color:var(--muted);margin-top:4px}.skill-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:20px}.skill-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px}.skill-group h3{font:600 var(--step--1)/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}.skill{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding-block:9px;border-top:1px solid var(--line)}.skill:first-of-type{border-top:0}.skill-name{font-weight:500;font-size:.95rem;min-width:0}.skill-years{font:500 .75rem/1 var(--f-mono);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.meter{display:grid;grid-template-columns:repeat(4,14px);gap:3px}.meter i{height:8px;border-radius:2px;background:var(--line);transition:background .4s}.meter i.on{background:var(--accent)}.cred-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px}.cred-col{display:grid;gap:24px;align-content:start}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px}.card h3{font-size:var(--step-1);margin-bottom:14px}.cert{display:grid;grid-template-columns:30px 1fr;gap:10px;padding-block:10px;border-top:1px solid var(--line)}.cert:first-of-type{border-top:0;padding-top:0}.cert svg{width:22px;height:22px;color:var(--accent)}.cert.featured b{color:var(--accent)}.edu{padding-block:10px;border-top:1px solid var(--line)}.edu:first-of-type{border-top:0;padding-top:0}.edu b{display:block}.edu span{color:var(--muted);font-size:.925rem}.langs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.lang b{display:block;font:800 1.5rem/1 var(--f-display);color:var(--accent)}.lang span{color:var(--muted);font-size:.9rem}@media(max-width:860px){.cred-grid{grid-template-columns:1fr}}.contact-grid{display:block}.contact-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px;align-content:start}.contact-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.contact-row .label{font:500 .75rem/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);width:100%}.contact-row .value{font-weight:600;-webkit-user-select:all;user-select:all;overflow-wrap:anywhere;min-width:0}.contact-row a.value{-webkit-user-select:auto;user-select:auto;text-decoration:none}.copy-btn{margin-left:auto;font:600 .8125rem/1 var(--f-body);padding:8px 12px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer}.copy-btn:hover{border-color:var(--accent);color:var(--accent)}@media(max-width:860px){.contact-grid{grid-template-columns:1fr;gap:32px}}.site-footer{border-top:1px solid var(--line);padding-block:28px;color:var(--muted);font-size:.875rem}.site-footer .wrap{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between}body.editing [data-edit]{outline:1.5px dashed var(--signal);outline-offset:4px;border-radius:4px;cursor:text}body.editing [data-edit]:focus{outline-style:solid;background:var(--signal)}@supports (color: color-mix(in lab,red,red)){body.editing [data-edit]:focus{background:color-mix(in srgb,var(--signal) 10%,transparent)}}.edit-bar{position:fixed;z-index:70;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom,0px));width:min(calc(100% - 32px),720px);display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;background:var(--console);color:var(--console-ink);border-radius:14px;padding:14px 16px;box-shadow:0 20px 50px -15px #000a1e99;font-size:.9rem}.edit-bar p{flex:1 1 260px;min-width:0}.edit-bar p b{color:#ffd08a}.edit-bar .btn{padding:10px 14px;font-size:.875rem}.edit-bar .btn-ghost{background:transparent;color:var(--console-ink);border-color:#fff3}.reveal.in{animation:rise .7s cubic-bezier(.2,.7,.2,1) both}@keyframes rise{0%{transform:translateY(18px);opacity:.4}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}app-icon{display:contents}.load-error{padding-block:88px;color:var(--muted)}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial}}}
