:root,:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#141412;--paper-raised:#1d1d19;--paper-soft:#22221e;--ink:#f1ede4;--ink-secondary:#cbc4b7;--ink-muted:#938d82;--line:#f1ede42e;--line-strong:#f1ede45c;--accent:#f36b3d;--accent-cool:#9ab9ff;--hero-scrim:linear-gradient(90deg, #141412 0%, #141412f7 26%, #141412ba 48%, #1414120a 78%), linear-gradient(0deg, #141412 0%, transparent 18%, transparent 84%, #14141240 100%);--display:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;--body:Inter, "Segoe UI", sans-serif;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--content-width:1180px}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f1eee5;--paper-raised:#f8f6ef;--paper-soft:#e8e4d9;--ink:#20211f;--ink-secondary:#494942;--ink-muted:#77766e;--line:#20211f2b;--line-strong:#20211f59;--accent:#174dc5;--accent-cool:#d84d25;--hero-scrim:linear-gradient(90deg, #f1eee5 0%, #f1eee5fa 18%, #f1eee5c7 33%, #f1eee552 48%, #f1eee50a 62%, transparent 100%), linear-gradient(0deg, #f1eee5 0%, transparent 20%, transparent 84%, #f1eee52e 100%);--toolbox-surface:#e3e0ee;--toolbox-line:#4c457d33;--toolbox-orbit:#5658b8;--toolbox-glow:#665bb324}:root[data-theme=dark]{--toolbox-surface:#1d1a27;--toolbox-line:#cbb9ff2b;--toolbox-orbit:#b09af4;--toolbox-glow:#9e7ae424}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{color:var(--ink);background:var(--paper);font-family:var(--body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65;transition:color .22s,background-color .22s}::selection{color:var(--paper);background:var(--accent)}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.site-header{z-index:50;background:var(--paper);border-bottom:1px solid var(--line);height:76px;position:sticky;top:0}.site-header-inner{width:min(calc(100% - 64px), var(--content-width));justify-content:space-between;align-items:center;gap:24px;height:100%;margin:auto;display:flex}.wordmark{letter-spacing:-.04em;white-space:nowrap;align-items:center;gap:10px;font-size:1.05rem;font-weight:700;display:inline-flex}.wordmark-mark{border:1px solid var(--accent);width:34px;height:34px;color:var(--accent);font-family:var(--display);border-radius:50%;place-items:center;font-size:1.15rem;display:grid}.wordmark-accent{color:var(--accent)}.primary-nav{align-items:center;gap:clamp(18px,3vw,42px);display:flex}.primary-nav a,.site-footer a{color:var(--ink-secondary);font-size:.86rem;transition:color .16s}.primary-nav a:hover,.site-footer a:hover{color:var(--accent)}.primary-nav .nav-resume{border-left:1px solid var(--line);color:var(--ink);padding-left:24px}.nav-resume span{color:var(--accent)}.header-actions{align-items:center;gap:10px;display:flex}.theme-toggle,.menu-toggle{border:1px solid var(--line);min-height:38px;color:var(--ink-secondary);cursor:pointer;background:0 0;border-radius:99px;justify-content:center;align-items:center;gap:8px;padding:0 12px;display:inline-flex}.theme-toggle:hover,.menu-toggle:hover{border-color:var(--accent);color:var(--ink)}.theme-toggle>span:first-child{color:var(--accent);font-size:1.1rem}.theme-toggle-label{font-size:.78rem}.menu-toggle{min-width:40px;font-size:1.2rem;display:none}.hero-section{isolation:isolate;background:var(--paper);min-height:max(700px,100svh - 76px);position:relative;overflow:hidden}.hero-art{z-index:-1;position:absolute;inset:0 0 0 18%;overflow:hidden}.hero-art:after{content:"";background:var(--hero-scrim);position:absolute;inset:0}.hero-art-image{object-fit:cover;object-position:center 48%}:root[data-theme=light] .hero-art-image{filter:brightness(1.14)saturate(.82)}.hero-layout{width:min(calc(100% - 64px), var(--content-width));min-height:inherit;align-items:center;margin:auto;display:flex;position:relative}.hero-copy{width:min(610px,57%);padding:76px 0 150px;animation:.6s both arrive}.eyebrow{color:var(--accent);font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;margin:0 0 18px;font-size:.7rem;line-height:1.5}.hero-eyebrow{color:var(--ink-secondary);align-items:center;gap:12px;display:flex}.hero-eyebrow span{background:var(--accent);width:28px;height:1px}.hero-copy h1{font-family:var(--display);letter-spacing:-.075em;margin:0;font-size:clamp(5rem,9vw,8.5rem);font-weight:500;line-height:.79}.hero-copy h1 span{color:var(--accent)}.hero-role{font-family:var(--mono);letter-spacing:.05em;color:var(--ink-secondary);margin:28px 0 8px;font-size:clamp(.85rem,1.4vw,1.05rem)}.hero-intro{max-width:370px;color:var(--ink-secondary);margin:0;font-size:1rem}.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:26px;display:flex}.button-primary,.button-secondary{border:1px solid var(--accent);cursor:pointer;justify-content:center;align-items:center;gap:18px;min-height:46px;padding:0 19px;font-size:.82rem;font-weight:600;transition:background-color .16s,color .16s,transform .16s;display:inline-flex}.button-primary{color:var(--paper);background:var(--accent)}.button-primary:hover{color:var(--paper);background:var(--ink);border-color:var(--ink);transform:translateY(-2px)}.button-secondary{color:var(--ink);border-color:var(--line-strong);background:0 0}.button-secondary:hover{border-color:var(--accent);color:var(--accent)}.hero-socials{gap:22px;margin-top:30px;display:flex}.hero-socials a,.contact-socials a{color:var(--ink-muted);font-size:.78rem}.hero-socials a:hover,.contact-socials a:hover,.hero-socials span{color:var(--accent)}.chapter-list{border-top:1px solid var(--line-strong);grid-template-columns:repeat(4,1fr);width:min(680px,65%);display:grid;position:absolute;bottom:36px;left:0}.chapter-list a{color:var(--ink-muted);flex-direction:column;gap:3px;padding:11px 6px 0 0;font-size:.69rem;transition:color .16s;display:flex}.chapter-list a:hover{color:var(--accent)}.chapter-list a span{color:var(--accent);font-family:var(--mono);font-size:.65rem}.hero-bottomline{right:max(32px, calc((100vw - var(--content-width))/2));color:var(--ink-muted);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;gap:24px;font-size:.58rem;display:flex;position:absolute;bottom:36px}.story-section{border-top:1px solid var(--line);background:var(--paper);padding:132px 32px;position:relative}.section-shell{width:min(100%,1050px);margin:0 auto}.section-marker{top:136px;left:max(32px, calc((100vw - var(--content-width))/2));color:var(--ink-muted);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;flex-direction:column;gap:4px;font-size:.65rem;display:flex;position:absolute}.section-marker span:first-child{color:var(--accent)}.section-marker:after{content:"";background:var(--accent);width:24px;height:1px;margin-top:10px;display:block}.section-heading-row{justify-content:space-between;align-items:end;gap:48px;margin-bottom:46px;display:flex}.section-heading-row h2,.about-copy h2,.contact-copy h2{font-family:var(--display);letter-spacing:-.065em;margin:0;font-size:clamp(3rem,5.8vw,5.3rem);font-weight:500;line-height:.95}.section-heading-row h2 em,.about-copy h2 em,.contact-copy h2 em{color:var(--accent);font-weight:400}.section-intro{max-width:360px;color:var(--ink-muted);margin:0 0 4px;font-size:.93rem}.about-section{background:var(--paper-raised)}.about-layout{grid-template-columns:minmax(250px,.8fr) 1.1fr;align-items:center;gap:clamp(48px,8vw,115px);display:grid}.about-image-wrap{padding:0 24px 24px 0;position:relative}.about-image-wrap:after{content:"";z-index:0;border:1px solid var(--accent);position:absolute;inset:24px 0 0 24px}.about-image{z-index:1;aspect-ratio:4/5;object-fit:cover;filter:saturate(.78)brightness(.94);border:1px solid #ffffff24;width:100%;height:auto;transition:filter .22s,box-shadow .22s;position:relative;box-shadow:0 26px 64px #00000057,0 5px 20px #f36b3d14}:root[data-theme=light] .about-image{filter:saturate(.78)brightness(1.02);border-color:#20211f1a;box-shadow:0 24px 56px #2d2a202e,0 5px 18px #174dc514}.image-caption{z-index:2;color:var(--ink-muted);font-family:var(--mono);font-size:.64rem;position:absolute;bottom:2px;right:5px}.about-copy>p:not(.eyebrow){max-width:600px;color:var(--ink-secondary);font-size:.96rem}.about-copy h2{margin-bottom:22px}.about-copy .about-signoff{color:var(--ink)!important}.technology-list,.project-tags{flex-wrap:wrap;gap:8px 14px;margin:22px 0;display:flex}.technology-list span,.project-tags span{color:var(--ink-muted);font-family:var(--mono);font-size:.67rem}.technology-list span+span:before{content:"·";color:var(--accent);margin-right:14px}.text-link{color:var(--ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0;font-size:.8rem;display:inline-flex}.text-link span{color:var(--accent);transition:transform .16s}.text-link:hover{color:var(--accent)}.text-link:hover span{transform:translate(2px,-2px)}.projects-section{background:var(--paper)}.project-filters{flex-wrap:wrap;gap:8px;margin:-8px 0 34px;display:flex}.project-filters button{border:1px solid var(--line);color:var(--ink-muted);cursor:pointer;background:0 0;padding:7px 13px;font-size:.75rem}.project-filters button:hover,.project-filters button.is-selected{border-color:var(--accent);color:var(--accent)}.project-list{grid-template-columns:1fr 1fr;gap:50px 28px;display:grid}.project-item{min-width:0;transition:transform .22s}.project-item:hover{transform:translateY(-3px)}.project-item-featured{border-bottom:1px solid var(--line);grid-column:1/-1;grid-template-columns:1.15fr .85fr;align-items:center;gap:clamp(30px,6vw,80px);padding-bottom:28px;display:grid}.project-image-button{aspect-ratio:1.58;background:var(--paper-soft);cursor:pointer;border:0;width:100%;display:block;position:relative;overflow:hidden}.project-image-button img{object-fit:cover;transition:transform .4s}.project-image-button:hover img{transform:scale(1.025)}.project-image-index{color:#fff;font-family:var(--mono);text-shadow:0 1px 6px #000;font-size:.6rem;position:absolute;bottom:10px;right:12px}.project-copy{padding:18px 2px 0}.project-copy .eyebrow{margin-bottom:10px}.project-copy .eyebrow span{color:var(--ink-muted);padding:0 4px}.project-copy h3{font-family:var(--display);letter-spacing:-.045em;margin:0 0 9px;font-size:clamp(1.6rem,2.7vw,2.5rem);font-weight:500;line-height:1.05}.project-copy>p:not(.eyebrow){max-width:510px;color:var(--ink-secondary);margin:0;font-size:.86rem}.project-tags{gap:7px 12px;margin:14px 0}.project-actions{flex-wrap:wrap;gap:20px;display:flex}.project-item:not(.project-item-featured) .project-copy h3{font-size:1.65rem}.project-dialog-backdrop{z-index:100;background:#050505b8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.project-dialog{background:var(--paper-raised);width:min(100%,640px);color:var(--ink);border:1px solid var(--line-strong);padding:clamp(26px,5vw,54px);position:relative}.project-dialog h3{font-family:var(--display);margin:0 42px 18px 0;font-size:clamp(2rem,5vw,3rem);font-weight:500;line-height:1}.project-dialog>p:not(.eyebrow){color:var(--ink-secondary)}.project-dialog .button-primary{margin-top:8px}.dialog-close{border:1px solid var(--line);cursor:pointer;background:0 0;width:36px;height:36px;font-size:1.2rem;position:absolute;top:18px;right:18px}.skills-section{background:var(--paper-soft);overflow:hidden}.toolbox-console{border:1px solid var(--toolbox-line);color:var(--ink);background:radial-gradient(ellipse at 12% 5%, var(--toolbox-glow), transparent 34%), radial-gradient(ellipse at 92% 90%, var(--toolbox-glow), transparent 30%), var(--toolbox-surface);border-radius:8px;padding:clamp(20px,4vw,38px);position:relative;overflow:hidden;box-shadow:0 24px 70px #0f0c1d17}.toolbox-console:before,.toolbox-console:after{content:"";background:var(--toolbox-orbit);width:4px;height:4px;box-shadow:0 0 12px 3px var(--toolbox-glow);opacity:.72;pointer-events:none;border-radius:50%;position:absolute}.toolbox-console:before{top:20%;left:4%}.toolbox-console:after{bottom:17%;right:5%}.toolbox-console-top{z-index:1;border-bottom:1px solid var(--toolbox-line);align-items:center;gap:10px;padding-bottom:18px;display:flex;position:relative}.console-light{background:#86c89a;border-radius:50%;width:7px;height:7px;box-shadow:0 0 10px #86c89a8c}.console-label,.console-status{color:var(--ink-muted);font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;font-size:.62rem}.console-status{letter-spacing:.03em;text-transform:none;align-items:center;gap:8px;margin-left:auto;display:inline-flex}.console-status>span{background:var(--accent);border-radius:50%;width:5px;height:5px}.toolbox-filters{z-index:1;flex-wrap:wrap;gap:8px;padding:22px 0 26px;display:flex;position:relative}.toolbox-filters button{min-height:34px;color:var(--ink-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:99px;padding:0 12px;font-size:.72rem;transition:color .18s,border-color .18s,background-color .18s,transform .18s}.toolbox-filters button:hover{color:var(--ink);border-color:var(--toolbox-line);transform:translateY(-1px)}.toolbox-filters button.is-selected{border-color:var(--toolbox-line);color:var(--ink);background:color-mix(in srgb, var(--toolbox-orbit) 12%, transparent)}.tech-grid{z-index:1;grid-template-columns:repeat(5,minmax(0,1fr));gap:22px 16px;display:grid;position:relative}.tech-card{text-align:center;border-radius:8px;flex-direction:column;align-items:center;min-width:0;padding:8px 5px 10px;transition:transform .22s,background-color .22s;display:flex}.tech-card:hover{background:color-mix(in srgb, var(--toolbox-orbit) 7%, transparent);transform:translateY(-5px)}.tech-orb{aspect-ratio:1;border:1px solid var(--toolbox-line);width:clamp(62px,7vw,78px);color:var(--toolbox-orbit);background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--toolbox-orbit) 22%, var(--toolbox-surface)), var(--toolbox-surface) 72%);box-shadow:inset 0 0 0 5px color-mix(in srgb, var(--toolbox-orbit) 4%, transparent), 0 6px 20px #00000014;border-radius:50%;place-items:center;margin-bottom:10px;transition:border-color .22s,box-shadow .22s,transform .22s,color .22s;display:grid}.tech-logo{object-fit:contain;width:38px;height:38px;transition:transform .22s;display:block}.tech-logo.is-monochrome{filter:brightness(0)invert()}:root[data-theme=light] .tech-logo.is-monochrome{filter:brightness(0)}.tech-card:hover .tech-orb{box-shadow:inset 0 0 0 5px color-mix(in srgb, currentColor 7%, transparent), 0 0 24px var(--toolbox-glow);border-color:currentColor;transform:scale(1.07)}.tech-name{color:var(--ink);font-size:.79rem;font-weight:600}.tech-note{color:var(--ink-muted);margin-top:3px;font-size:.66rem;line-height:1.4}.toolbox-footnote{color:var(--ink-muted);align-items:baseline;gap:12px;margin:22px 0 0;font-size:.79rem;display:flex}.toolbox-footnote span{color:var(--accent);font-family:var(--mono);letter-spacing:.12em;white-space:nowrap;font-size:.6rem}.contact-section{background:var(--paper-raised)}.contact-layout{grid-template-columns:.9fr 1.1fr;align-items:start;gap:clamp(50px,8vw,120px);display:grid}.contact-copy h2{margin-bottom:20px}.contact-copy .section-intro{max-width:400px}.contact-email{border-bottom:1px solid var(--accent);color:var(--ink);gap:8px;margin:24px 0 10px;padding-bottom:6px;font-size:clamp(.86rem,1.5vw,1rem);display:inline-flex}.contact-email span{color:var(--accent)}.contact-location{color:var(--ink-muted);font-size:.77rem}.contact-socials{gap:22px;margin-top:24px;display:flex}.contact-form{flex-direction:column;gap:18px;display:flex}.contact-form label{color:var(--ink-muted);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;flex-direction:column;gap:7px;font-size:.65rem;display:flex}.form-pair{grid-template-columns:1fr 1fr;gap:16px;display:grid}.contact-form input,.contact-form textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:var(--paper);font-family:var(--body);letter-spacing:normal;text-transform:none;resize:vertical;border-radius:0;outline:none;padding:12px 13px;font-size:.9rem}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent)}.contact-form .button-primary{align-self:flex-start}.form-message{color:var(--accent);margin:0;font-size:.8rem}.site-footer{border-top:1px solid var(--line);background:var(--paper);padding:34px 32px}.footer-inner{width:min(100%, var(--content-width));grid-template-columns:auto 1fr auto auto;align-items:center;gap:28px;margin:auto;display:grid}.footer-inner>p{color:var(--ink-muted);margin:0;font-size:.78rem}.footer-inner nav{gap:18px;display:flex}.footer-inner nav a{font-size:.72rem}.footer-inner nav span,.footer-copyright{color:var(--ink-muted);font-family:var(--mono);font-size:.61rem}@media (prefers-reduced-motion:no-preference){html.motion-ready [data-reveal]{opacity:0;transition:opacity .62s cubic-bezier(.2,.7,.2,1),transform .62s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0s);transform:translateY(18px)}html.motion-ready [data-reveal].is-in-view{opacity:1;transform:translate(0,0)}html.motion-ready .hero-copy[data-reveal]{animation:none}}@keyframes arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (max-width:900px){.section-marker{left:22px}.story-section{padding-left:80px}.about-layout{grid-template-columns:minmax(200px,.75fr) 1.25fr;gap:42px}.section-heading-row{flex-direction:column;align-items:start;gap:16px}.footer-inner{grid-template-columns:auto 1fr}.footer-inner nav{justify-self:end}}@media (max-width:700px){.site-header{height:66px}.site-header-inner{width:calc(100% - 36px)}.menu-toggle{display:inline-flex}.primary-nav{border-bottom:1px solid var(--line);background:var(--paper);flex-direction:column;align-items:stretch;gap:0;padding:8px 22px 18px;display:none;position:absolute;top:65px;left:0;right:0}.primary-nav.is-open{display:flex}.primary-nav a{border-bottom:1px solid var(--line);padding:12px 0}.primary-nav .nav-resume{border-left:0;padding-left:0}.hero-section{min-height:max(850px,100svh - 66px)}.hero-layout{align-items:flex-start;width:calc(100% - 40px)}.hero-art{height:51%;inset:auto 0 0}.hero-art:after{background:linear-gradient(180deg, var(--paper) 0%, color-mix(in srgb, var(--paper) 60%, transparent) 28%, transparent 72%, var(--paper) 100%)}.hero-art-image{object-position:60% center}.hero-copy{width:100%;padding:88px 0 260px}.hero-copy h1{font-size:clamp(4.5rem,19vw,7rem)}.hero-role{margin-top:23px}.hero-intro{max-width:310px;font-size:.91rem}.hero-bottomline{display:none}.chapter-list{grid-template-columns:1fr 1fr;gap:8px 18px;width:100%;bottom:18px;left:0}.chapter-list a{padding-top:7px;font-size:.63rem}.story-section{padding:90px 20px 90px 54px}.section-marker{writing-mode:vertical-rl;font-size:.55rem;top:94px;left:12px}.section-marker:after{width:1px;height:25px;margin:8px auto 0}.section-heading-row h2,.about-copy h2,.contact-copy h2{font-size:clamp(2.7rem,12vw,4rem)}.about-layout,.contact-layout{grid-template-columns:1fr;gap:38px}.about-image-wrap{width:min(78%,340px)}.about-copy>p:not(.eyebrow){font-size:.9rem}.section-intro{font-size:.87rem}.project-list{grid-template-columns:1fr;gap:36px}.project-item-featured{grid-column:auto;grid-template-columns:1fr;gap:4px}.project-item-featured .project-copy h3{font-size:1.8rem}.toolbox-console{padding:18px 13px}.toolbox-console-top{gap:8px}.console-label,.console-status{font-size:.53rem}.toolbox-filters{gap:4px;padding:17px 0 20px}.toolbox-filters button{min-height:32px;padding:0 9px;font-size:.65rem}.tech-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 6px}.tech-card{padding-inline:2px}.tech-orb{width:60px}.tech-name{font-size:.72rem}.tech-note{font-size:.59rem}.toolbox-footnote{align-items:flex-start;font-size:.72rem}.form-pair{grid-template-columns:1fr}.site-footer{padding:28px 20px}.footer-inner{grid-template-columns:1fr 1fr;gap:18px 12px}.footer-inner>p{display:none}.footer-inner nav{flex-wrap:wrap;justify-content:end;justify-self:end;gap:8px 14px}.footer-inner nav a{font-size:.67rem}.footer-copyright{grid-column:1/-1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
