body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}code{font-family:JetBrains Mono,source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--font-display:"Playfair Display",Georgia,serif;--font-reading:"Source Serif 4","Iowan Old Style",Georgia,serif;--bg-primary:#0d1918;--bg-secondary:#132321;--bg-tertiary:#1a2d2a;--text-primary:#f0f1f5;--text-secondary:#afb2bd;--text-muted:#747986;--accent:#70aaa2;--accent-hover:#91c1ba;--accent-secondary:#9bbeb8;--success:#83b9b1;--accent-muted:#70aaa21f;--border-color:#292d37;--border-hover:#484e5d;--card-bg:#101217;--surface-subtle:hsla(0,0%,100%,.035);--shadow:0 4px 6px -1px #0000004d;--shadow-elevated:0 18px 48px -24px #000000bf;--surface-highlight:hsla(0,0%,100%,.035)}.light-theme{--bg-primary:#e7ede9;--bg-secondary:#edf2ef;--bg-tertiary:#dce6e0;--text-primary:#17231e;--text-secondary:#4b5d55;--text-muted:#718078;--accent:#245f58;--accent-hover:#184a44;--accent-secondary:#3d716b;--success:#2f7169;--accent-muted:#245f5817;--border-color:#c8d5ce;--border-hover:#aebfb6;--card-bg:#f1f5f2;--surface-subtle:#245f580a;--shadow:0 4px 6px -1px #0000001a;--shadow-elevated:0 18px 48px -24px #0c261b33;--surface-highlight:rgba(36,95,88,.035)}*{box-sizing:border-box;margin:0;padding:0}html{position:relative;scroll-behavior:smooth;scroll-padding-top:80px}body,html{background-color:#0d1918;background-color:var(--bg-primary)}body{color:#f0f1f5;color:var(--text-primary);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:18px;font-weight:400;letter-spacing:0;line-height:1.6;min-height:100vh;transition:background-color .35s ease,color .35s ease}.App{background:#0d1918;isolation:isolate}.scroll-story{background:#0000}.footer,.story-panel{background:#07080ae6!important;box-shadow:none;min-height:100vh;position:relative;z-index:1}.story-panel{overflow:visible}section{overflow:hidden}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}h1,h2,h3,h4,h5,h6{font-family:Playfair Display,Georgia,serif;font-family:var(--font-display);font-weight:600;letter-spacing:-.035em;line-height:1.3}a{color:inherit;text-decoration:none;transition:color .2s ease}a:focus-visible,button:focus-visible{outline:2px solid #70aaa2;outline:2px solid var(--accent);outline-offset:4px}img{height:auto;max-width:100%}::selection{background-color:#70aaa2;background-color:var(--accent);color:#0d1918;color:var(--bg-primary)}.container{margin:0 auto;max-width:1200px;padding:0 24px}@media (max-width:768px){.container{padding:0 16px}}nav.navbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background-color:initial;border-bottom:1px solid #0000;left:0;padding:0;position:fixed;right:0;top:0;transition:background-color .3s ease,border-color .3s ease;z-index:1000}nav.navbar.scrolled{background-color:#0a0f0dc7;border-bottom-color:#ffffff0f;box-shadow:0 10px 30px -24px #000000e6}.light-theme nav.navbar.scrolled{background-color:#e7ede9d1;border-bottom-color:#17231e1a}nav.navbar .container{align-items:center;display:flex;height:72px;justify-content:space-between}nav.navbar .navbar-brand{color:#f0f1f5;color:var(--text-primary);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:20px;font-weight:700}nav.navbar .navbar-nav{align-items:center;display:flex;gap:8px;list-style:none;margin:0;padding:0}nav.navbar .nav-link{border-radius:6px;color:#afb2bd;color:var(--text-secondary);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s ease}nav.navbar .nav-link.active,nav.navbar .nav-link:hover{background-color:#70aaa21f;background-color:var(--accent-muted);color:#70aaa2;color:var(--accent)}nav.navbar .navbar-text{align-items:center;display:flex;gap:16px}.social-icon{gap:8px}.social-icon,.social-icon a{align-items:center;display:flex}.social-icon a{background-color:#1a2d2a;background-color:var(--bg-tertiary);border:1px solid #292d37;border:1px solid var(--border-color);border-radius:8px;height:36px;justify-content:center;transition:all .2s ease;width:36px}.social-icon a:hover{background-color:#70aaa21f;background-color:var(--accent-muted);border-color:#70aaa2;border-color:var(--accent)}.social-icon a img{height:18px;opacity:.7;transition:opacity .2s ease;width:18px}.social-icon a:hover img{opacity:1}.theme-toggle-switch{align-items:center;background-color:#1a2d2a;background-color:var(--bg-tertiary);border:1px solid #292d37;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;display:flex;height:44px;justify-content:center;transition:all .2s ease;width:44px}.theme-toggle-switch:hover{background-color:#70aaa21f;background-color:var(--accent-muted);border-color:#70aaa2;border-color:var(--accent)}.mobile-nav{display:none!important}.mobile-menu-toggle{display:none}@media (max-width:768px){nav.navbar .container{height:64px}.desktop-nav{display:none!important}.mobile-menu-toggle{background:#0000;border:none;cursor:pointer;display:flex;flex-direction:column;gap:5px;padding:8px}.mobile-menu-toggle span{background-color:#f0f1f5;background-color:var(--text-primary);height:2px;transition:all .3s ease;width:24px}.navbar-collapse{background-color:#132321;background-color:var(--bg-secondary);border-bottom:1px solid #292d37;border-bottom:1px solid var(--border-color);left:0;padding:16px;position:absolute;right:0;top:100%}.mobile-nav{display:flex!important;flex-direction:column;gap:4px}.mobile-nav .nav-link{border-radius:8px;padding:12px 16px}nav.navbar .navbar-text{border-top:1px solid #292d37;border-top:1px solid var(--border-color);flex-direction:row;justify-content:center;margin-top:16px;padding-top:16px}}.banner{align-items:center;background-color:#050605;display:flex;min-height:100vh;overflow:hidden;padding:120px 0 80px;position:relative;position:sticky;top:0;z-index:0}.banner:before{display:none}.banner .hero-content{position:relative;z-index:1}.banner .greeting{align-items:center;color:#70aaa2;color:var(--accent);display:flex;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:16px;gap:8px;margin-bottom:16px}.banner .greeting:before{content:">";opacity:.5}.banner h1{color:#f0f1f5;color:var(--text-primary);font-size:clamp(40px,8vw,72px);font-weight:700;line-height:1.1;margin-bottom:16px}.banner h1 .name{display:block}.banner h1 .role{color:#70aaa2;color:var(--accent);position:relative}.banner h1 .role:after{animation:blink 1s step-end infinite;color:#70aaa2;color:var(--accent);content:"|";margin-left:4px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.banner .description{color:#afb2bd;color:var(--text-secondary);font-size:18px;line-height:1.7;margin-bottom:40px;max-width:540px}.banner .cta-buttons{display:flex;flex-wrap:wrap;gap:16px}.banner .btn-primary{align-items:center;background-color:#70aaa2;background-color:var(--accent);border:none;border-radius:8px;color:#0d1918;color:var(--bg-primary);cursor:pointer;display:inline-flex;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:14px;font-weight:500;gap:8px;padding:14px 28px;transition:all .2s ease}.banner .btn-primary:hover{background-color:#91c1ba;background-color:var(--accent-hover);transform:translateY(-2px)}.banner .btn-secondary{align-items:center;background-color:initial;border:1px solid #292d37;border:1px solid var(--border-color);border-radius:8px;color:#f0f1f5;color:var(--text-primary);cursor:pointer;display:inline-flex;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:14px;font-weight:500;gap:8px;padding:14px 28px;transition:all .2s ease}.banner .btn-secondary:hover{border-color:#70aaa2;border-color:var(--accent);color:#70aaa2;color:var(--accent)}.section{padding:100px 0}.section,.section-alt{background-color:initial}.section-header{margin-bottom:60px}.section-label{align-items:center;color:#70aaa2;color:var(--accent);display:flex;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:14px;gap:8px;margin-bottom:12px}.section-label:before{content:"#"}.section-title{color:#f0f1f5;color:var(--text-primary);font-size:clamp(32px,5vw,48px);font-weight:700;margin-bottom:16px}.section-description{color:#afb2bd;color:var(--text-secondary);font-size:18px;line-height:1.7;max-width:600px}.about{background-color:initial;padding:100px 0}.about-content{grid-gap:40px;display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:800px}.about-text p{color:#afb2bd;color:var(--text-secondary);font-size:17px;line-height:1.8;margin-bottom:24px}.about-text p:last-child{margin-bottom:0}.about-highlight{color:#f0f1f5;color:var(--text-primary);font-weight:500}.about-cta{margin-top:32px}.skill{background-color:initial;padding:100px 0}.skills-container{grid-gap:24px;align-items:stretch;display:grid;gap:24px;grid-template-columns:repeat(3,1fr);margin-top:48px}@media (max-width:992px){.skills-container{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.skills-container{grid-template-columns:1fr}}.skill-category{background-color:#101217;background-color:var(--card-bg);border:1px solid #292d37;border:1px solid var(--border-color);border-radius:12px;padding:28px;transition:all .3s ease}.skill-category:hover{border-color:#70aaa2;border-color:var(--accent);box-shadow:0 4px 6px -1px #0000004d;box-shadow:var(--shadow);transform:translateY(-4px)}.portfolio-surface{background-image:linear-gradient(135deg,hsla(0,0%,100%,.035),#0000 46%);background-image:linear-gradient(135deg,var(--surface-highlight),#0000 46%);box-shadow:0 18px 48px -24px #000000bf;box-shadow:var(--shadow-elevated)}.skill-category-title{align-items:center;color:#70aaa2;color:var(--accent);display:flex;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:13px;font-weight:600;gap:8px;letter-spacing:.1em;margin-bottom:20px;text-transform:uppercase}.skill-category-title:before{content:"//";opacity:.5}.skill-list{display:flex;flex-wrap:wrap;gap:10px}.skill-item{background-color:#1a2d2a;background-color:var(--bg-tertiary);border:1px solid #292d37;border:1px solid var(--border-color);border-radius:6px;color:#afb2bd;color:var(--text-secondary);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:13px;padding:8px 14px;transition:all .2s ease}.skill-item:hover{background-color:#70aaa21f;background-color:var(--accent-muted);border-color:#70aaa2;border-color:var(--accent);color:#70aaa2;color:var(--accent)}.experience{background-color:#132321;background-color:var(--bg-secondary);padding:100px 0}.timeline{margin:0 auto;max-width:800px;position:relative}.timeline:before{background:linear-gradient(180deg,#70aaa2,#292d37);background:linear-gradient(to bottom,var(--accent),var(--border-color));bottom:0;content:"";left:0;position:absolute;top:0;width:2px}.timeline-item{padding-bottom:48px;padding-left:40px;position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-dot{background-color:#70aaa2;background-color:var(--accent);border:3px solid #132321;border:3px solid var(--bg-secondary);border-radius:50%;height:12px;left:-5px;position:absolute;top:0;width:12px}.timeline-content{background-color:#101217;background-color:var(--card-bg);border:1px solid #292d37;border:1px solid var(--border-color);border-radius:12px;padding:28px;transition:all .3s ease}.timeline-content:hover{border-color:#70aaa2;border-color:var(--accent);transform:translateX(8px)}.timeline-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:16px}.timeline-title{color:#f0f1f5;color:var(--text-primary);font-size:18px;font-weight:600}.timeline-company{color:#70aaa2;color:var(--accent);font-size:15px;margin-top:4px}.timeline-date{background-color:#1a2d2a;background-color:var(--bg-tertiary);border-radius:4px;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:12px;padding:6px 12px}.timeline-date,.timeline-location{color:#747986;color:var(--text-muted)}.timeline-location{font-size:14px;margin-bottom:16px}.timeline-description{list-style:none;margin:0 0 20px;padding:0}.timeline-description li{color:#afb2bd;color:var(--text-secondary);font-size:14px;line-height:1.6;margin-bottom:8px;padding-left:20px;position:relative}.timeline-description li:before{color:#70aaa2;color:var(--accent);content:"→";left:0;position:absolute}.timeline-tech{display:flex;flex-wrap:wrap;gap:8px}.timeline-tech-tag{background-color:#70aaa21f;background-color:var(--accent-muted);border-radius:4px;color:#70aaa2;color:var(--accent);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:11px;padding:4px 10px}.timeline-item.education .timeline-dot{background-color:#747986;background-color:var(--text-muted)}.timeline-item.education .timeline-content:hover{border-color:#afb2bd;border-color:var(--text-secondary)}@media (max-width:768px){.timeline:before{left:0}.timeline-item{padding-left:32px}.timeline-dot{left:-5px}.timeline-header{flex-direction:column}}.project{background-color:initial;padding:100px 0}.projects-showcase{gap:28px!important;grid-template-columns:1fr!important}.editorial-header{margin-bottom:clamp(48px,8vw,96px);max-width:850px}.editorial-header .eyebrow,.eyebrow{color:#9bbeb8;color:var(--accent-secondary);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:12px;letter-spacing:.12em;margin-bottom:12px;text-transform:lowercase}.editorial-header h2{color:#f0f1f5;color:var(--text-primary);font-family:Playfair Display,Georgia,serif!important;font-family:var(--font-display)!important;font-size:clamp(42px,6vw,76px)!important;font-weight:500!important;letter-spacing:-.02em!important;line-height:1.12;margin:0 0 28px}.editorial-header h2 span{color:#70aaa2;color:var(--accent);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:.18em;letter-spacing:0}.editorial-header>p:last-child{color:#afb2bd;color:var(--text-secondary);font-size:18px;line-height:1.7;max-width:620px}.hero-title{font-size:clamp(48px,7vw,92px)!important;font-weight:500!important;letter-spacing:-.045em!important;line-height:1.14!important;margin-bottom:22px!important}.hero-role{font-family:"Source Serif 4",Iowan Old Style,Georgia,serif!important;font-family:var(--font-reading)!important;font-size:clamp(22px,2.5vw,32px)!important;font-style:italic;letter-spacing:-.02em}.hero-ctas{display:none!important}#about h1,#about h2{font-family:Playfair Display,Georgia,serif!important;font-family:var(--font-display)!important;font-weight:400!important;letter-spacing:-.035em!important}#about h1{font-size:clamp(42px,6vw,76px)!important;line-height:1.12!important}.floating-dock{--dock-edge-gap:24px;align-items:stretch;bottom:22px;display:flex;filter:drop-shadow(0 14px 30px rgba(0,0,0,.42));left:50%;margin-inline:0;max-width:calc(100vw - 20px);position:fixed;right:auto;transform:translateX(-50%);transition:left .62s cubic-bezier(.22,1,.36,1),bottom .62s cubic-bezier(.22,1,.36,1),transform .62s cubic-bezier(.22,1,.36,1),opacity .24s ease;width:max-content;will-change:transform,width,bottom;z-index:100}.floating-dock.at-page-end{bottom:72px;left:calc(100% - var(--dock-edge-gap));transform:translateX(-100%)}.dock-links a,.dock-links button,.dock-toggle{background:#090a0b;border:1px solid #44484a;color:#f5f6f4;cursor:pointer;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:12px;height:50px}.dock-toggle{border-radius:50%;font-size:26px;margin-right:4px;width:50px}.dock-toggle span{display:block}.dock-links{border-radius:2px;display:flex;overflow:hidden;white-space:nowrap}.dock-expander{flex:0 0 auto;height:50px;overflow:hidden;position:relative;transition:width .62s cubic-bezier(.22,1,.36,1);width:92px;will-change:width}.dock-expander.open{width:min(336px,calc(100vw - 170px))}.dock-menu{inset:0;position:absolute;transition:opacity .18s ease,transform .28s cubic-bezier(.22,1,.36,1);width:92px}.dock-expander.open .dock-menu{opacity:0;pointer-events:none;transform:translateX(-12px)}.dock-submenu{border-left:1px solid #292d37;border-left:1px solid var(--border-color);border-right:1px solid #292d37;border-right:1px solid var(--border-color);display:flex;inset:0;min-width:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;transform:translateX(12px);transition:opacity .2s ease,transform .36s cubic-bezier(.22,1,.36,1);width:100%}.dock-expander.open .dock-submenu{opacity:1;pointer-events:auto;transform:translateX(0);transition-delay:.08s}.dock-submenu button{background:#111315;border-left:0;border-right-color:#292d37;border-right-color:var(--border-color);flex:1 1 112px;min-width:112px}.dock-links a,.dock-links button{display:grid;min-width:92px;padding:0 18px;place-items:center;text-decoration:none}.dock-links a:hover,.dock-links button:hover,.dock-toggle:hover{background:#1b1e20;border-color:#7a8082;color:#fff}.projects-stack{--project-sticky-top:24px;--project-stack-tail:50vh;display:block;margin:0 auto;max-width:980px;min-width:0;padding-bottom:0;position:relative}.project-stack-end{height:var(--project-stack-tail);pointer-events:none}.project-stack-item{margin-bottom:clamp(64px,16vh,160px);min-width:0;position:sticky;scroll-margin-top:24px;top:var(--project-sticky-top)}.scroll-indicator{display:none!important}.project-panel{background:#0f1115!important;border:1px solid #245f584d!important;border-radius:28px 7px 28px 7px!important;box-shadow:0 12px 28px -20px #0006;height:auto;min-height:0;min-width:0;overflow:hidden!important;position:relative;transform:translateZ(0) scale(1);transform:translate3d(0,var(--stack-y,0),0) scale(var(--stack-scale,1));transform-origin:center top;transition:border-color .25s ease;width:100%}.project-panel:after{background:#0d1918;border-radius:inherit;content:"";inset:0;opacity:0;opacity:var(--stack-shade,0);pointer-events:none;position:absolute}.project-panel:before{background:#245f58;border-radius:0 0 999px 999px;content:"";height:5px;left:clamp(28px,4vw,52px);position:absolute;top:0;width:clamp(72px,9vw,124px);z-index:2}.project-panel-content{min-width:0;padding:clamp(24px,3vw,40px)!important}.project-panel-title{font-family:Playfair Display,Georgia,serif!important;font-family:var(--font-display)!important;font-size:clamp(28px,3.3vw,44px)!important;font-weight:400!important;letter-spacing:-.035em!important;line-height:1.15!important;margin-bottom:clamp(26px,4vh,42px)!important;padding-bottom:22px!important}.project-narrative{grid-gap:clamp(24px,4vw,54px);align-content:start;display:grid;gap:clamp(24px,4vw,54px);grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:24px}.project-detail-block{border-top:1px solid #292d37;border-top:1px solid var(--border-color);padding-top:14px}.project-detail-label{color:#9bbeb8;color:var(--accent-secondary);display:block;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:12px;letter-spacing:.12em;margin-bottom:12px;text-transform:uppercase}.project-detail-block p{color:#afb2bd!important;color:var(--text-secondary)!important;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif!important;font-family:var(--font-reading)!important;font-size:18px!important;line-height:1.65!important;margin:0!important}.project-outcome{grid-column:1/-1}.project-outcome p{color:#f0f1f5!important;color:var(--text-primary)!important;font-size:clamp(17px,1.7vw,22px)!important}.project-outcome p>span{color:#83b9b1;color:var(--success);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);margin-right:10px}.project-action{border:1px solid #45464c!important;border-radius:4px!important;font-family:"Source Serif 4",Iowan Old Style,Georgia,serif!important;font-family:var(--font-reading)!important;font-size:14px!important;font-weight:600!important;min-height:44px;padding:10px 16px!important;text-decoration:none!important}.project-action-code{background:#0d1918!important;color:#f0f2ef!important}.project-action-live{background:#70aaa2!important;background:var(--accent)!important;border-color:#70aaa2!important;border-color:var(--accent)!important;color:#fff!important}#home{--accent:#91c1ba;--accent-hover:#b5d7d2;--accent-muted:#91c1ba1f;background:#0d1918!important}#about,#projects{--text-primary:#f1f4f2;--text-secondary:#b8c7c4;--text-muted:#7e9692;--accent:#91c1ba;--accent-hover:#b5d7d2;--accent-secondary:#b4d1cc;--accent-muted:#91c1ba1f;--border-color:#29413f;--border-hover:#42615e;--card-bg:#f0f2ef;--surface-subtle:hsla(0,0%,100%,.045);background:#0d1918!important}#experience{--accent:#91c1ba;--accent-secondary:#b4d1cc;--border-color:#29413f;--border-hover:#42615e;--card-bg:#101b1a}#about,#experience{background:#0d1918!important}#about{--bg-primary:#0d1918}.project-panel{--text-primary:#10201e;--text-secondary:#465b57;--text-muted:#71807d;--accent:#245f58;--accent-hover:#184a44;--accent-secondary:#3d716b;--accent-muted:#245f5817;--border-color:#c6cfcc;--border-hover:#9eafab;--surface-subtle:rgba(13,25,24,.045);--shadow-elevated:10px 10px 0 rgba(240,242,239,.055),0 24px 54px -34px #000000b8;background:#f0f2ef!important}.footer{--accent:#91c1ba;--accent-secondary:#b4d1cc;background:#0d1918!important}.about-heading,.about-skills h2,.about-skills h3,.editorial-header h2,.experience-name,.footer h2,.hero-title,.project-panel-title{font-family:Playfair Display,Georgia,serif!important;font-family:var(--font-display)!important;font-weight:400!important}.experience-location,.experience-role,.story-panel li,.story-panel p{font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading)}.about-skills{border-top:1px solid #292d37;border-top:1px solid var(--border-color);padding-top:72px!important}.about-skills .editorial-header{margin-bottom:36px}.about-skills .editorial-header h2{font-size:clamp(36px,4.5vw,56px)!important}.about-skills .skills-container{gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.about-skills .portfolio-surface{--text-primary:#f1f4f2;--text-secondary:#b8c7c4;--text-muted:#809792;--accent:#91c1ba;--border-color:#29413f;--surface-subtle:#ffffff0d;background:#132321!important;border-radius:9px!important;box-shadow:none;min-height:0!important;padding:18px!important}.about-skills .portfolio-surface h3{font-size:20px!important;margin-bottom:12px!important}.about-skills .portfolio-surface span{font-size:14px!important;padding:5px 9px!important}@media (max-width:980px) and (min-width:769px){.about-skills .skills-container{grid-template-columns:repeat(2,minmax(0,1fr))}}.footer{min-height:0!important;padding:44px 0 28px!important}.footer .footer-content{gap:16px!important}.footer .footer-content h2{font-family:Playfair Display,Georgia,serif!important;font-family:var(--font-display)!important;font-size:clamp(28px,3.5vw,42px)!important;font-weight:400!important}.footer .footer-copyright{margin-top:10px!important;text-align:center;width:100%}.experience-accordion{border-top:1px solid #292d37;border-top:1px solid var(--border-color)}.experience-row{border-bottom:1px solid #292d37;border-bottom:1px solid var(--border-color)}.experience-trigger{grid-gap:24px;align-items:center;background:#0000;border:0;color:#f0f1f5;color:var(--text-primary);cursor:pointer;display:grid;gap:24px;grid-template-columns:54px minmax(180px,1.2fr) minmax(180px,1fr) minmax(150px,auto) 32px;padding:30px 0;text-align:left;width:100%}.experience-row.open .experience-name,.experience-trigger:hover .experience-name{color:#70aaa2;color:var(--accent)}.experience-date,.experience-number{color:#747986;color:var(--text-muted);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:12px}.experience-name{font-family:Playfair Display,Georgia,serif;font-family:var(--font-display);font-size:clamp(24px,2.3vw,32px);line-height:1.2;transition:color .2s ease}.experience-role{color:#afb2bd;color:var(--text-secondary);font-size:17px}.experience-plus{color:#70aaa2;color:var(--accent);font-size:24px;text-align:right}.experience-details{overflow:hidden}.experience-details-inner{max-width:820px;padding:0 0 34px 78px}.experience-location{color:#747986;color:var(--text-muted);font-size:15px;margin-bottom:18px}.experience-details li{color:#afb2bd;color:var(--text-secondary);font-size:17px;line-height:1.7;margin-bottom:10px}.experience-tech{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.experience-tech span{border:1px solid #292d37;border:1px solid var(--border-color);color:#747986;color:var(--text-muted);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:13px;padding:5px 10px}@media (max-width:768px){#root,.App,body,html{max-width:100%;overflow-x:clip}.floating-dock{--dock-edge-gap:8px;bottom:12px;max-width:calc(100vw - 16px)}.floating-dock.at-page-end{bottom:62px}.dock-links a,.dock-links button,.dock-toggle{height:42px}.dock-toggle{flex:0 0 42px;font-size:21px;margin-right:3px;width:42px}.dock-links{max-width:calc(100vw - 61px);opacity:1;transition:max-width .34s cubic-bezier(.22,1,.36,1),opacity .18s ease}.dock-links a,.dock-links button{font-size:12px;min-width:auto;padding:0 10px}.dock-expander{height:42px;width:68px}.dock-expander.open{width:min(228px,calc(100vw - 126px))}.dock-menu{width:68px}.dock-submenu button{flex:1 1;min-width:0}.floating-dock.project-actions-visible:not(.dock-open) .dock-links{max-width:0;opacity:0;pointer-events:none}.experience-trigger{gap:8px 12px;grid-template-columns:32px minmax(0,1fr) 28px}.experience-number{grid-column:1;grid-row:1}.experience-name{grid-column:2;grid-row:1}.experience-role{grid-column:2;grid-row:2}.experience-date{grid-column:2;grid-row:3}.experience-plus{align-self:center;grid-column:3;grid-row:1/4}.experience-details-inner{padding-left:48px}.experience-name{font-size:25px}.experience-date,.experience-details li,.experience-role{font-size:15px}.project-stack-item{margin-bottom:64px}.project-panel{border-radius:20px 5px 20px 5px!important;height:auto;min-height:0;min-width:0;width:100%}.project-panel-content{flex-shrink:0;padding:20px 18px!important}.project-panel-title{font-size:28px!important;margin-bottom:16px!important;padding-bottom:14px!important}.project-narrative{gap:16px;grid-template-columns:1fr;margin-bottom:20px}.project-detail-block{padding-top:10px}.project-detail-label{font-size:10px;letter-spacing:.1em;margin-bottom:8px}.project-detail-block p{font-size:16px!important;line-height:1.55!important}.project-outcome p{font-size:18px!important}.project-links-row{align-items:stretch!important;flex-wrap:wrap;gap:10px}.project-links-row>div{flex:1 1 auto}.project-links-row .project-action{font-size:12px!important;min-height:40px;padding:8px 11px!important}.project-outcome{grid-column:auto}.about-skills .skills-container{grid-template-columns:1fr}.editorial-header{margin-bottom:48px}#about h1,.editorial-header h2{font-size:clamp(36px,10vw,46px)!important;line-height:1.12!important}.hero-title{font-size:clamp(40px,11vw,52px)!important}.hero-role{font-size:clamp(20px,5.5vw,26px)!important}#about p:not(.eyebrow),.editorial-header>p:last-child,.hero-description{font-size:17px!important;line-height:1.7!important}}.projects-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));margin-top:48px}.project-card{background-color:#101217;background-color:var(--card-bg);border:1px solid #292d37;border:1px solid var(--border-color);border-radius:12px;display:flex;flex-direction:column;height:100%;padding:28px;transition:all .3s ease}.project-card:hover{border-color:#70aaa2;border-color:var(--accent);box-shadow:0 4px 6px -1px #0000004d;box-shadow:var(--shadow);transform:translateY(-4px)}.project-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:16px}.project-icon{font-size:24px}.project-links{display:flex;gap:12px}.project-link{color:#747986;color:var(--text-muted);transition:color .2s ease}.project-link:hover{color:#70aaa2;color:var(--accent)}.project-title{color:#f0f1f5;color:var(--text-primary);font-size:20px;font-weight:600;margin-bottom:12px;transition:color .2s ease}.project-card:hover .project-title{color:#70aaa2;color:var(--accent)}.project-description{color:#afb2bd;color:var(--text-secondary);flex-grow:1;font-size:14px;line-height:1.6;margin-bottom:20px}.project-tech{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}.project-tech-tag{color:#747986;color:var(--text-muted);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:12px}.project-tech-tag:before{color:#70aaa2;color:var(--accent);content:"#";margin-right:2px}@media (max-width:768px){.projects-grid{grid-template-columns:1fr}}.back-to-top{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#050605e0;border:1px solid #484e5d;border:1px solid var(--border-hover);border-radius:50%;bottom:24px;color:#f0f1f5;color:var(--text-primary);cursor:pointer;display:grid;height:46px;left:24px;place-items:center;position:fixed;transition:bottom .45s cubic-bezier(.22,1,.36,1),color .2s ease,border-color .2s ease,background-color .2s ease;width:46px;z-index:20}.back-to-top:hover{background:#1a2d2a;background:var(--bg-tertiary);border-color:#70aaa2;border-color:var(--accent);color:#70aaa2;color:var(--accent)}@media (max-width:768px){.back-to-top{bottom:16px;left:16px}.App:has(>.floating-dock.at-page-end) .back-to-top{bottom:116px}.App:has(>.floating-dock.project-actions-visible) .back-to-top{bottom:84px}}.footer{background-color:#132321;background-color:var(--bg-secondary);border-top:1px solid #292d37;border-top:1px solid var(--border-color);padding:60px 0}.footer-content{align-items:center;display:flex;flex-direction:column;gap:24px;text-align:center}.footer-links{display:flex;flex-wrap:wrap;gap:24px;justify-content:center}.footer-link{color:#afb2bd;color:var(--text-secondary);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:14px;transition:color .2s ease}.footer-link:hover{color:#70aaa2;color:var(--accent)}.footer-social{display:flex;gap:16px}.footer-social a{align-items:center;background-color:#1a2d2a;background-color:var(--bg-tertiary);border:1px solid #292d37;border:1px solid var(--border-color);border-radius:8px;color:#afb2bd;color:var(--text-secondary);display:flex;height:40px;justify-content:center;transition:all .2s ease;width:40px}.footer-social a:hover{background-color:#70aaa21f;background-color:var(--accent-muted);border-color:#70aaa2;border-color:var(--accent);color:#70aaa2;color:var(--accent)}.footer-copyright{color:#747986;color:var(--text-muted);font-size:14px}.footer-copyright span{color:#70aaa2;color:var(--accent)}.quote-block{background-color:#1a2d2a;background-color:var(--bg-tertiary);border-left:3px solid #70aaa2;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;margin:40px 0;padding:32px;position:relative}.quote-text{color:#afb2bd;color:var(--text-secondary);font-size:16px;font-style:italic;line-height:1.7}.quote-author{color:#747986;color:var(--text-muted);font-family:"Source Serif 4",Iowan Old Style,Georgia,serif;font-family:var(--font-reading);font-size:13px;margin-top:16px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-fadeInUp{animation:fadeInUp .6s ease-out forwards}.animate-delay-1{animation-delay:.1s}.animate-delay-2{animation-delay:.2s}.animate-delay-3{animation-delay:.3s}.animate-delay-4{animation-delay:.4s}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#0d1918;background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:#292d37;background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#747986;background:var(--text-muted)}.row{--bs-gutter-x:24px}.container,.container-fluid{padding-left:24px;padding-right:24px}@media (max-width:768px){.container,.container-fluid{padding-left:16px;padding-right:16px}}span strong{color:#70aaa2;color:var(--accent);font-weight:700}.flip-card:hover{filter:drop-shadow(0 0 18px rgba(16,185,129,.18))}@keyframes skillShimmer{0%{background-position:-200%}to{background-position:200%}}.project-detail-block,.project-panel-title{min-width:0;overflow-wrap:anywhere}.project-links-row{flex-wrap:wrap;gap:12px}.project-links-row>div{flex-wrap:wrap;min-width:0}@media (max-width:980px) and (min-width:769px){.project-panel-title{font-size:36px!important}}.about-skills .portfolio-surface h3,.experience-name{font-family:"Source Serif 4",Iowan Old Style,Georgia,serif!important;font-family:var(--font-reading)!important;font-weight:600!important;letter-spacing:0}.eyebrow,.project-detail-label{font-weight:600;letter-spacing:.08em}.dock-links a,.dock-links button,.project-action{font-weight:600;letter-spacing:.015em}.hero-description{font-size:18px!important;line-height:1.7!important}@media (max-width:768px){.hero-description{font-size:17px!important}}@media (prefers-reduced-motion:reduce){.project-panel{transform:none}.project-panel:after{opacity:0}}.project-copy-mobile{display:none}@media (max-width:768px){.project-panel{min-height:min(680px,72svh)}.project-panel-content{padding:clamp(18px,3svh,28px) 16px!important}.project-panel-title{border-bottom:1px solid #292d37!important;border-bottom:1px solid var(--border-color)!important;font-size:26px!important;letter-spacing:-.02em!important;margin-bottom:16px!important;padding-bottom:12px!important}.project-detail-block{border-top:0;padding-top:0}.project-detail-label{line-height:1.3;margin-bottom:4px}.project-narrative{align-content:space-between;gap:12px;margin-bottom:20px}.project-detail-block p{font-size:15px!important;line-height:1.45!important}.project-outcome p{font-size:16px!important}.project-copy-desktop{display:none}.project-copy-mobile{display:inline}.project-tech-chips{gap:5px!important;margin-bottom:12px!important}.project-tech-chips>span{font-size:12px!important;padding:2px 7px!important}.project-links-row{grid-gap:6px;display:grid!important;gap:6px;grid-template-columns:minmax(0,1fr) auto}.project-links-row>div{flex-wrap:nowrap;gap:6px!important}.project-links-row .project-action{gap:6px!important;padding:8px 7px!important;white-space:nowrap}.project-links-row>div>a:not(.project-action){font-size:11px!important;white-space:nowrap}.project-links-row svg{flex-shrink:0;height:16px;width:16px}.banner{min-height:100svh!important;opacity:1!important;transform:none!important}}@media (min-width:360px) and (max-width:768px) and (min-height:760px){.project-copy-desktop{display:inline}.project-copy-mobile{display:none}.project-detail-block p{font-size:17px!important;line-height:1.55!important}.project-outcome p{font-size:19px!important}.project-detail-label{font-size:11px;margin-bottom:6px}.project-narrative{gap:20px}}
/*# sourceMappingURL=main.b8cb0015.css.map*/