@import "https://fonts.googleapis.com/css?family=IBM+Plex+Mono|Maiden+Orange";body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif}html{height:100%!important}body{min-height:100%!important}div#root{height:100vh!important}.full-height{height:100%!important}a{text-decoration:none!important}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.has-bg-img-keyboard{background:url(/assets/keyboard-BkeM5IW1.jpg) 50%/cover}.has-bg-img-escalator{background:url(/assets/escalator-BZmcRKKr.jpg) 50%/cover}.has-bg-img-ocean{background:url(/assets/ocean-BUoJ9Zpl.jpg) 50%/cover}.has-bg-img-reach{background:url(/assets/reach-7ZyBaY-r.jpg) 50%/cover}.has-bg-img-bulb{background:url(/assets/bulb2-DZDNSc5p.jpg) 50%/cover}.notfound-container{margin-top:100px}.notfound-title{font-size:200px}.notfound-subtitle{font-size:50px}.notfound-content{font-size:25px}.jumbotron-full-page{flex-direction:column;min-height:100vh;margin:0 0 20px;padding:0 50px;display:flex;border-radius:0!important}.jumbotron-full-page div#scroll-arrow{flex-grow:1;align-items:end!important}.jumbotron-full-page span{color:#fff;cursor:pointer;text-decoration:none}.jumbotron-full-page .arrow{text-align:center;margin:8% 0;font-size:100px}.jumbotron-full-page .bounce{animation:2s infinite bounce}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}#jumbotron-title{font-size:62px;font-weight:bolder}#jumbotron-subtitle,.subtitle-style{font-family:Maiden Orange,cursive;font-size:23px;font-style:italic}.jumbotron-content{flex-direction:column;flex-grow:1;min-height:100%;padding-top:180px;padding-bottom:40px;display:flex}.big-icon{text-align:center;justify-content:center;align-items:center;margin:0 auto;font-size:100px;display:flex}.main-button{text-shadow:0 1px 4px #000000e6;letter-spacing:.05em;border-radius:0;width:300px;height:60px;padding-top:10px;font-size:20px;font-weight:700;display:block;box-shadow:0 4px 16px #00000080,inset 0 1px #ffffff26;color:#fff!important;background:#00000059!important;border:2px solid #ffffffe6!important}.main-button:hover{text-shadow:none;box-shadow:0 6px 24px #0009;color:#111!important;background:#fffffff2!important}.always-visible{display:block!important}.cv-swedish-btn-row,.cv-english-btn-row{margin:10px}.cv-english-btn-row div a#btn-resume-english{margin:0!important}#btn-resume-swedish,#btn-resume-english{width:320px}.wrapper-btn-github,.wrapper-btn-thesis,.wrapper-btn-linkedin{margin:0 0 10px!important}.caret{vertical-align:middle;border-top:4px dashed;border-top:4px solid \9 ;border-left:4px solid #0000;border-right:4px solid #0000;width:0;height:0;margin-left:2px;display:inline-block}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9 ;content:""}ul.is-unstyled{margin:0!important;padding:0!important;list-style:none!important}.outline{color:#fff;text-shadow:-1px -1px #000,1px -1px #000,-1px 1px #000,1px 1px #000!important}.sandbox{padding:5rem 0}label.radio{padding:5px!important}input.radio-value{margin-right:10px!important}div.radio-form{padding-bottom:10px}@media only screen and (width>=768px){#form-container{width:500px}}@media only screen and (device-width>=768px) and (device-width<=1024px){.jumbotron-content{padding-top:70px}}@media only screen and (width<=768px){.jumbotron-content{padding-top:70px}}@media only screen and (width<=480px){#jumbotron-title{font-size:52px!important}.jumbotron-content{padding-top:20px}}@media only screen and (width<=350px){#btn-github,#btn-resume-mobile-swedish,#btn-resume-mobile-english,#btn-linkedin,#btn-thesis{width:220px!important}#jumbotron-title{font-size:45px!important}}.navbar.transparent.navbar-inverse .navbar-inner{background:#0006!important}.navbar-nav a{color:#fff!important}button.navbar-toggler i{color:#fff!important;font-size:20px!important}div.navbar-nav{text-align:center!important}div.navbar-nav:hover>a{opacity:.5;transition:opacity .2s linear}div.navbar-nav:hover>a:hover{opacity:1;transition:opacity .1s}.navbar-toggler{border:none;background:0 0!important}.navbar-toggler:focus{outline:none;background:0 0!important}.navbar-toggler .icon-bar{background-color:#fff;border-radius:1px;width:22px;height:2px;transition:all .2s;display:block;transform:rotate(0)translate(0)}.navbar-toggler .icon-bar+.icon-bar{margin-top:4px}.icon-bar:nth-child(2),.navbar-toggler:hover>.icon-bar:nth-child(2),.navbar-toggler:active>.icon-bar:nth-child(2){width:22px;transition:all .2s}.navbar-toggler:not(.collapsed) .icon-bar:first-child{transition:all .2s;transform:rotate(45deg)translate(5px,4px)}.navbar-toggler:not(.collapsed) .icon-bar:nth-child(2){opacity:0;transition:all .2s}.navbar-toggler:not(.collapsed) .icon-bar:nth-child(3){transition:all .2s;transform:rotate(-45deg)translate(4px,-4px)}.sec-accent{background-color:#fafcf5}.blue{background-color:#99c}@media only screen and (width<=768px){.navbar-nav a{text-shadow:-1px -1px #000,1px -1px #000,-1px 1px #000,1px 1px #000!important}}nav.no-background{background-color:#000;margin-bottom:20px;padding:20px 50px}.portfolio-page{--portfolio-background:#0a0c0f;--portfolio-surface:#12161a;--portfolio-border:#e8efec24;--portfolio-text:#f2f5f1;--portfolio-muted:#9ca8a4;--portfolio-accent:#c7f36b;min-height:100vh;color:var(--portfolio-text);background:var(--portfolio-background);overflow:hidden}.portfolio-page .MuiAppBar-root{border-bottom:1px solid var(--portfolio-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0a0c0fdb!important}.portfolio-page .MuiToolbar-root{min-height:68px}.portfolio-page a:focus-visible{outline:2px solid var(--portfolio-accent);outline-offset:4px}.portfolio-hero{isolation:isolate;background:radial-gradient(circle at 83% 22%, #c7f36b1f, transparent 25rem), radial-gradient(circle at 7% 80%, #56b4ac17, transparent 28rem), var(--portfolio-background);padding:clamp(5rem,9vw,7rem) 0 clamp(5rem,8vw,6.5rem);position:relative}.portfolio-hero:before{z-index:-1;content:"";opacity:.5;background-image:linear-gradient(90deg,#f2f5f10f 1px,#0000 1px),linear-gradient(#f2f5f10f 1px,#0000 1px);background-size:82px 82px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 88%);mask-image:linear-gradient(#000,#0000 88%)}.portfolio-hero-grid{grid-template-columns:minmax(0,1.55fr) minmax(260px,.45fr);align-items:end;gap:clamp(3rem,8vw,9rem);display:grid}.portfolio-hero-copy{max-width:820px}.portfolio-eyebrow,.portfolio-kicker,.portfolio-index-label,.portfolio-index-caption,.portfolio-index-note,.project-card-kind,.project-card-index,.project-card-status{letter-spacing:.08em;text-transform:uppercase;font-family:IBM Plex Mono,monospace!important}.portfolio-eyebrow,.portfolio-kicker{color:var(--portfolio-accent);margin:0 0 1.5rem!important;font-size:.72rem!important;font-weight:700!important}.portfolio-hero-title{max-width:780px;color:var(--portfolio-text);letter-spacing:-.065em!important;margin:0!important;font-size:clamp(3.2rem,6vw,6.2rem)!important;font-weight:800!important;line-height:.92!important}.portfolio-hero-title em{color:var(--portfolio-accent);font-style:normal;display:block}.portfolio-hero-description{max-width:590px;color:var(--portfolio-muted);margin:2.5rem 0 0!important;font-size:clamp(1rem,1.5vw,1.2rem)!important;line-height:1.7!important}.portfolio-hero-links{margin-top:2.3rem}.portfolio-hero-link,.portfolio-footer-link{transition:color .18s;color:var(--portfolio-text)!important;font-size:.9rem!important;text-decoration:none!important}.portfolio-hero-link:hover,.portfolio-footer-link:hover{color:var(--portfolio-accent)!important}.portfolio-hero-link-muted{color:var(--portfolio-muted)!important}.portfolio-hero-index{border:1px solid var(--portfolio-border);background:#12161ab8;border-radius:22px;min-height:280px;padding:1.5rem;position:relative;overflow:hidden}.portfolio-hero-index-orbit{border:1px solid #c7f36b47;border-radius:50%;width:220px;height:220px;position:absolute;bottom:-70px;right:-50px}.portfolio-hero-index-orbit:after{background:var(--portfolio-accent);content:"";border-radius:50%;width:8px;height:8px;position:absolute;top:26px;left:30px;box-shadow:0 0 20px 5px #c7f36b6b}.portfolio-index-label,.portfolio-index-caption,.portfolio-index-note{z-index:1;position:relative;margin:0!important;font-size:.65rem!important}.portfolio-index-label,.portfolio-index-note{color:var(--portfolio-muted)}.portfolio-index-count{z-index:1;color:var(--portfolio-text);letter-spacing:-.1em;position:relative;margin:2.5rem 0 0!important;font-size:clamp(5rem,9vw,8rem)!important;font-weight:800!important;line-height:.8!important}.portfolio-index-caption{color:var(--portfolio-accent);margin-top:.8rem!important}.portfolio-index-rule{background:var(--portfolio-border);width:100%;height:1px;margin:2rem 0 1rem}.portfolio-showcase{border-top:1px solid var(--portfolio-border);padding:clamp(5rem,9vw,8rem) 0}.portfolio-section-heading{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:2.5rem;display:flex}.portfolio-section-heading h2{color:var(--portfolio-text);letter-spacing:-.07em;margin:0;font-size:clamp(2.3rem,4.5vw,4rem);line-height:.95}.portfolio-section-description{max-width:360px;color:var(--portfolio-muted);text-align:right;margin:0!important;font-size:.95rem!important;line-height:1.65!important}.portfolio-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1fr;gap:1rem;display:grid}.project-card-link{min-width:0;color:inherit;display:block;text-decoration:none!important}.project-card{isolation:isolate;border:1px solid var(--portfolio-border);background:var(--portfolio-surface);border-radius:20px;height:100%;min-height:360px;transition:border-color .22s,transform .22s,box-shadow .22s;display:flex;position:relative;overflow:hidden}.project-card:after{z-index:-1;background:var(--card-accent);content:"";filter:blur(48px);opacity:.15;border-radius:50%;width:220px;height:220px;position:absolute;top:-60px;right:-60px}.project-card-art,.project-card-wash{position:absolute;inset:0}.project-card-art{z-index:-3;background-image:var(--card-image);filter:saturate(.78);opacity:.57;background-position:50%;background-size:cover;transition:transform .5s cubic-bezier(.2,.75,.25,1),opacity .22s;transform:scale(1.01)}.project-card-wash{z-index:-2;background:linear-gradient(#080a0c26 0%,#080a0cc7 48%,#080a0c 100%)}.project-card-topline{justify-content:space-between;align-items:center;display:flex;position:absolute;top:1.25rem;left:1.25rem;right:1.25rem}.project-card-index,.project-card-status{color:#f2f5f1b8;font-size:.62rem!important}.project-card-status{background:#080a0c4d;border:1px solid #f2f5f133;border-radius:999px;padding:.35rem .55rem}.project-card-content{flex-direction:column;justify-content:flex-end;align-self:flex-end;width:100%;padding:1.35rem;display:flex}.project-card-kind{color:var(--card-accent);margin:0 0 .65rem!important;font-size:.65rem!important;font-weight:700!important}.project-card-title{color:var(--portfolio-text);letter-spacing:-.055em!important;margin:0!important;font-size:clamp(1.5rem,2.1vw,2rem)!important;font-weight:800!important;line-height:1!important}.project-card-description{color:#f2f5f1c7;max-width:360px;margin:.8rem 0 0!important;font-size:.9rem!important;line-height:1.55!important}.project-card-action{color:var(--portfolio-text);letter-spacing:.06em;text-transform:uppercase;border-top:1px solid #f2f5f133;justify-content:space-between;align-items:center;margin-top:1.4rem;padding-top:.9rem;font-family:IBM Plex Mono,monospace;font-size:.68rem;display:flex}.project-card-arrow{border:1px solid #f2f5f147;border-radius:50%;place-items:center;width:28px;height:28px;font-family:sans-serif;font-size:1rem;transition:background-color .18s,color .18s,transform .18s;display:grid}.project-card-link:hover .project-card,.project-card-link:focus-visible .project-card{border-color:var(--card-accent);transform:translateY(-5px);box-shadow:0 20px 48px #00000047}.project-card-link:hover .project-card-art,.project-card-link:focus-visible .project-card-art{opacity:.75;transform:scale(1.07)}.project-card-link:hover .project-card-arrow,.project-card-link:focus-visible .project-card-arrow{color:var(--portfolio-background);background:var(--card-accent);transform:rotate(8deg)}.portfolio-footer{border-top:1px solid var(--portfolio-border);padding:2rem 0}.portfolio-footer-copy{color:var(--portfolio-muted);margin:0!important;font-size:.82rem!important}@media (width<=1050px){.portfolio-hero-grid{grid-template-columns:minmax(0,1.25fr) minmax(220px,.75fr);gap:3rem}.portfolio-hero-title{font-size:clamp(3.2rem,6.5vw,5.5rem)!important}.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=700px){.portfolio-hero-grid{grid-template-columns:1fr;gap:3.5rem}.portfolio-hero-title{font-size:clamp(3.1rem,14vw,5rem)!important}.portfolio-hero-description{margin-top:2rem!important}.portfolio-hero-index{min-height:230px}.portfolio-index-count{font-size:6rem!important}.portfolio-section-heading{display:block}.portfolio-section-description{text-align:left;max-width:430px;margin-top:1.2rem!important}.portfolio-grid{grid-template-columns:1fr}.project-card{min-height:330px}}@media (prefers-reduced-motion:reduce){.portfolio-hero-link,.portfolio-footer-link,.project-card,.project-card-art,.project-card-arrow{transition:none}}.content .tag,.content .number{padding:inherit;font-size:inherit;line-height:inherit;text-align:inherit;vertical-align:inherit;border-radius:inherit;font-weight:inherit;white-space:inherit;background:inherit;margin:inherit;display:inline}nav.corona-tab{z-index:-1;margin-bottom:10px;padding-bottom:7px}.corona-tab a{padding:10px;color:#207fdf!important;padding-bottom:10px!important}.corona-tab a.active{background-color:#d7d7d7;border-top:1px solid #d7d7d7;border-left:1px solid #d7d7d7;border-right:1px solid #d7d7d7;border-top-left-radius:6px;border-top-right-radius:6px;color:#2b2929!important}.MuiTableContainer-root table{width:100%;display:table}@media only screen and (width<=768px){.MuiTableContainer-root{overflow-x:auto!important}.MuiTableContainer-root table th,.MuiTableContainer-root table td{min-width:170px}}.app-landing-page{--app-grid-line:color-mix(in srgb, var(--app-text) 9%, transparent);min-height:100vh;color:var(--app-text);background:var(--app-background);overflow:hidden}.app-landing-page .MuiAppBar-root{border-bottom:1px solid var(--app-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:color-mix(in srgb, var(--app-background) 94%, transparent)!important}.app-landing-page .MuiToolbar-root{min-height:68px}.app-landing-hero{isolation:isolate;background:radial-gradient(circle at 80% 20%, color-mix(in srgb, var(--app-accent) 21%, transparent), transparent 30rem), radial-gradient(circle at 14% 75%, color-mix(in srgb, var(--app-secondary-accent) 12%, transparent), transparent 28rem), var(--app-background);padding:clamp(5.5rem,11vw,9rem) 0 clamp(5rem,10vw,8rem);position:relative}.app-landing-hero:before{z-index:-1;background-image:linear-gradient(90deg, var(--app-grid-line) 1px, transparent 1px), linear-gradient(var(--app-grid-line) 1px, transparent 1px);content:"";opacity:.4;background-size:72px 72px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 85%);mask-image:linear-gradient(#000,#0000 85%)}.app-landing-eyebrow,.app-landing-kicker,.app-landing-availability,.app-landing-icon-caption,.app-landing-step-index{letter-spacing:.08em;text-transform:uppercase;font-family:IBM Plex Mono,monospace!important}.app-landing-eyebrow,.app-landing-kicker{color:var(--app-accent);align-items:center;gap:.7rem;margin:0;font-size:.74rem;font-weight:700;display:flex}.app-landing-eyebrow-mark{background:var(--app-accent);width:30px;height:1px}.app-landing-title{max-width:760px;color:var(--app-text);letter-spacing:-.065em!important;margin:0!important;font-size:clamp(3rem,7.5vw,7rem)!important;font-weight:800!important;line-height:.93!important}.app-landing-description{max-width:600px;color:var(--app-muted);margin:0!important;font-size:clamp(1.05rem,1.7vw,1.35rem)!important;line-height:1.65!important}.app-landing-primary-button{min-height:52px;box-shadow:0 12px 30px color-mix(in srgb, var(--app-accent) 22%, transparent);color:var(--app-background)!important;background:var(--app-accent)!important;text-transform:none!important;border-radius:999px!important;padding:.75rem 1.4rem!important;font-weight:800!important;transition:transform .18s,box-shadow .18s!important}.app-landing-primary-button:hover,.app-landing-primary-button:focus-visible{box-shadow:0 16px 36px color-mix(in srgb, var(--app-accent) 35%, transparent);transform:translateY(-2px)}.app-landing-primary-button:focus-visible,.app-landing-text-link:focus-visible,.app-landing-footer-link:focus-visible{outline:2px solid var(--app-secondary-accent);outline-offset:4px}.app-landing-text-link,.app-landing-footer-link{font-size:.92rem;transition:color .18s;color:var(--app-text)!important;text-decoration:none!important}.app-landing-text-link:hover,.app-landing-footer-link:hover{color:var(--app-accent)!important}.app-landing-availability{color:color-mix(in srgb, var(--app-muted) 74%, transparent);margin:0!important;font-size:.65rem!important}.app-landing-icon-stage{aspect-ratio:1;border:1px solid var(--app-border);background:color-mix(in srgb, var(--app-surface) 76%, transparent);width:min(100%,390px);box-shadow:0 30px 90px color-mix(in srgb, var(--app-accent) 15%, transparent);border-radius:32px;place-items:center;margin:0 auto;display:grid;position:relative;transform:rotate(2.5deg)}.app-landing-icon-stage:before,.app-landing-icon-stage:after{border:1px solid color-mix(in srgb, var(--app-accent) 38%, transparent);content:"";border-radius:50%;position:absolute}.app-landing-icon-stage:before{width:70%;height:70%}.app-landing-icon-stage:after{border-color:color-mix(in srgb, var(--app-secondary-accent) 22%, transparent);width:84%;height:84%}.app-landing-icon-orbit{background:var(--app-secondary-accent);width:8px;height:8px;box-shadow:0 0 26px 5px color-mix(in srgb, var(--app-secondary-accent) 55%, transparent);border-radius:50%;position:absolute;transform:translate(148px,-145px)}.app-landing-icon{z-index:1;border-radius:25%;width:min(52%,190px);position:relative;box-shadow:0 26px 50px #00000073}.app-landing-icon-caption{color:var(--app-muted);justify-content:space-between;font-size:.62rem;display:flex;position:absolute;bottom:1.25rem;left:1.5rem;right:1.5rem}.app-landing-icon-caption span:first-child{color:var(--app-accent)}.app-landing-section{border-top:1px solid var(--app-border);padding:clamp(5rem,10vw,8rem) 0}.app-landing-section-heading{gap:.75rem;margin-bottom:2.5rem;display:grid}.app-landing-section-heading h2{max-width:580px;color:var(--app-text);letter-spacing:-.05em;margin:0;font-size:clamp(2rem,4vw,3.5rem);line-height:1}.app-landing-feature-card{border:1px solid var(--app-border);background:var(--app-surface);border-radius:18px;height:100%;min-height:200px;padding:clamp(1.5rem,3vw,2.25rem);transition:border-color .18s,transform .18s;position:relative;overflow:hidden}.app-landing-feature-card:after{background:color-mix(in srgb, var(--app-accent) 12%, transparent);content:"";border-radius:50%;width:160px;height:160px;position:absolute;bottom:-70px;right:-50px}.app-landing-feature-card:hover{border-color:color-mix(in srgb, var(--app-accent) 65%, var(--app-border));transform:translateY(-3px)}.app-landing-feature-number{color:var(--app-accent);margin-bottom:3rem;font-family:IBM Plex Mono,monospace;font-size:.75rem}.app-landing-feature-card h3,.app-landing-step h3{z-index:1;color:var(--app-text);letter-spacing:-.02em;margin:0 0 .8rem;font-size:1.25rem;position:relative}.app-landing-feature-card p,.app-landing-step p{z-index:1;color:var(--app-muted);margin:0;font-size:.98rem;line-height:1.65;position:relative}.app-landing-steps-section{background:color-mix(in srgb, var(--app-surface) 38%, var(--app-background))}.app-landing-step{border-top:1px solid var(--app-border);min-height:210px;padding:1.5rem 0}.app-landing-step-index{color:var(--app-secondary-accent);font-size:.7rem;margin:0 0 2.5rem!important}.app-landing-footer{border-top:1px solid var(--app-border);padding:2rem 0}.app-landing-footer-copy{color:var(--app-muted);margin:0!important;font-size:.82rem!important}.app-landing-reveal{animation:.7s cubic-bezier(.2,.75,.25,1) both app-landing-rise}.app-landing-reveal-delay{animation-delay:.12s}@keyframes app-landing-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (width<=900px){.app-landing-icon-stage{width:min(100%,320px)}.app-landing-icon-orbit{transform:translate(120px,-118px)}}@media (width<=600px){.app-landing-hero{padding-top:4.5rem}.app-landing-title{font-size:clamp(3rem,15vw,5rem)!important}.app-landing-icon-stage{border-radius:24px;width:min(100%,300px)}.app-landing-icon-orbit{transform:translate(108px,-108px)}}@media (prefers-reduced-motion:reduce){.app-landing-reveal,.app-landing-reveal-delay{animation:none}.app-landing-primary-button,.app-landing-feature-card{transition:none}}
