*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f7f1e5;--paper-deep:#efe7d8;--ink:#262019;--ink-soft:#4a4135;--muted:#6f6455;--rule:#e0d6c0;--accent:#b4461a;--accent-dark:#8f350f;--teal:#1d6a66;--error:#a62b1e;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-body:"IBM Plex Mono", "Courier New", monospace;--col:calc((100% - 172.8px) / 12);--gutter:86.4px}html{scroll-behavior:smooth;scroll-padding-top:88px}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:13px;line-height:1.7;overflow-x:hidden}::selection{background:var(--accent);color:var(--paper)}.skip-link{z-index:300;background:var(--ink);color:var(--paper);font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;padding:14px 24px;font-size:11px;text-decoration:none;position:fixed;top:0;left:0;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a,button{touch-action:manipulation;-webkit-tap-highlight-color:#b4461a26}button{font:inherit}h1,h2,h3,.section-head-title,.project-title,.big-label{text-wrap:balance}.outer{max-width:1440px;padding:0 var(--gutter);z-index:2;margin:0 auto;position:relative}section[id]{scroll-margin-top:88px}.section-head{border-bottom:1px solid var(--rule);align-items:center;gap:16px;margin-bottom:64px;padding-bottom:16px;display:flex}.section-head-no{font-family:var(--font-body);letter-spacing:.12em;color:var(--accent-dark);border:1px solid var(--rule);white-space:nowrap;border-radius:2px;padding:4px 8px;font-size:11px}.section-head-title{font-family:var(--font-display);color:var(--ink);font-size:clamp(30px,3.5vw,44px);font-weight:600;line-height:1}.section-head-line{background:var(--rule);flex:1;height:1px}.section-head-caption{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);white-space:nowrap;font-size:11px}.btn-primary{background:var(--ink);height:48px;color:var(--paper);font-family:var(--font-body);text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--ink);cursor:pointer;align-items:center;gap:8px;padding:0 28px;font-size:12px;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s,transform .1s;display:inline-flex}.btn-primary svg{width:12px;height:12px}.btn-primary:hover{background:var(--accent);border-color:var(--accent);transform:translateY(-1px)}.btn-ghost{height:48px;color:var(--ink);font-family:var(--font-body);text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--rule);cursor:pointer;background:0 0;align-items:center;gap:8px;padding:0 28px;font-size:12px;font-weight:500;text-decoration:none;transition:border-color .15s,color .15s;display:inline-flex}.btn-ghost:hover{border-color:var(--ink);color:var(--accent)}.hl{color:var(--accent-dark);font-style:italic;font-weight:500}.mono-caption{font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:11px}.tag{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;font-size:11px}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--rule);border:3px solid var(--paper);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}.nfp{justify-content:center;align-items:center;min-height:100vh;padding-top:64px;display:flex}.nfp-inner{text-align:center;padding:48px 0}.nfp-code{font-family:var(--font-display);color:var(--accent);font-size:clamp(96px,18vw,200px);font-weight:600;line-height:.9}.nfp-title{font-family:var(--font-display);color:var(--ink);margin:24px 0 8px;font-size:clamp(24px,3vw,36px);font-weight:600}.nfp-sub{font-family:var(--font-body);color:var(--muted);margin-bottom:32px;font-size:14px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.nav-bar{z-index:200;border-bottom:1px solid var(--rule);-webkit-backdrop-filter:blur(10px);background:#f7f1e5eb;align-items:center;height:64px;display:flex;position:fixed;top:0;left:0;right:0}.nav-brand{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);white-space:nowrap;align-items:baseline;gap:2px;padding:0 28px;font-size:24px;font-weight:600;text-decoration:none;display:flex}.nav-brand-dot{color:var(--accent)}.nav-brand:hover .nav-brand-dot{color:var(--accent-dark)}.nav-links{align-items:center;gap:2px;height:100%;margin-left:auto;padding:0 20px;list-style:none;display:flex}.nav-link-item{height:64px;line-height:64px;font-family:var(--font-body);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);padding:0 16px;font-size:12px;text-decoration:none;transition:color .15s;display:block;position:relative}.nav-link-item:hover{color:var(--ink)}.nav-link-item.active{color:var(--accent)}.nav-link-item.active:after{content:"";background:var(--accent);height:2px;position:absolute;bottom:18px;left:16px;right:16px}.nav-toggle{cursor:pointer;background:0 0;border:none;align-self:center;place-items:center;min-width:44px;min-height:44px;margin-left:auto;margin-right:24px;padding:8px;display:none}.nav-toggle-bar{background:var(--ink);border-radius:1px;width:20px;height:2px;margin:5px 0;display:block}.nav-mobile{background:var(--paper);border-bottom:1px solid var(--rule);flex-direction:column;gap:0;padding:8px 24px 16px;display:none;position:absolute;top:64px;left:0;right:0}.nav-mobile .nav-link-item{border-bottom:1px solid var(--rule);height:auto;padding:12px 4px;line-height:1.4}.nav-mobile .nav-link-item:last-child{border-bottom:none}.nav-mobile--open{overscroll-behavior:contain;display:flex}#hero{flex-direction:column;min-height:100vh;padding-top:64px;display:flex}.hero-outer{flex-direction:column;flex:1;display:flex}.hero-topline{border-bottom:1px solid var(--rule);font-family:var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);justify-content:space-between;gap:24px;padding:20px 0;font-size:11px;display:flex}.hero-topline-name{color:var(--ink-soft)}.hero-topline-meta{text-align:right}.hero-main{flex-direction:column;flex:1;justify-content:center;max-width:1040px;padding:72px 0 56px;display:flex}.hero-kicker{font-family:var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:28px;font-size:12px}.hero-kicker:before{content:"";background:var(--accent);vertical-align:middle;width:32px;height:1px;margin-right:12px;display:inline-block}.hero-title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:clamp(52px,8vw,118px);font-weight:600;line-height:.98}.hero-title em{color:var(--accent);font-style:italic;font-weight:500}.hero-deck{max-width:620px;font-family:var(--font-display);color:var(--ink-soft);margin-top:40px;font-size:clamp(18px,2vw,23px);font-weight:400;line-height:1.55}.hero-ctas{flex-wrap:wrap;gap:16px;margin-top:48px;display:flex}.hero-index{border-top:1px solid var(--rule);grid-template-columns:repeat(3,1fr);display:grid}.hero-index-item{border-right:1px solid var(--rule);font-family:var(--font-body);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);align-items:baseline;gap:12px;padding:22px 24px;font-size:12px;text-decoration:none;transition:background .2s,color .2s;display:flex}.hero-index-item:last-child{border-right:none}.hero-index-item:hover{background:var(--paper-deep);color:var(--accent)}.hero-index-no{color:var(--accent);font-size:11px}#about{border-top:1px solid var(--rule);padding:120px 0}.about-grid{grid-template-columns:320px 1fr;align-items:start;gap:80px;display:grid}.about-label-col{position:sticky;top:96px}.about-figure{margin:0}.about-figure img{aspect-ratio:3/4;object-fit:cover;filter:grayscale()contrast(1.05);width:100%;height:auto;transition:filter .4s cubic-bezier(.16,1,.3,1);display:block}.about-figure:hover img{filter:grayscale(0%)}.about-figure figcaption{font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:10px;font-size:11px}.about-meta{flex-direction:column;margin-top:32px;display:flex}.meta-row{border-top:1px solid var(--rule);grid-template-columns:130px 1fr;gap:16px;padding:12px 0;display:grid}.meta-row:last-child{border-bottom:1px solid var(--rule)}.meta-key{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);padding-top:3px;font-size:10px}.meta-vals{flex-direction:column;gap:2px;display:flex}.meta-val{color:var(--ink-soft);font-size:14px}.meta-val-sub{color:var(--muted);font-size:13px}.meta-val.status{color:var(--accent-dark);font-weight:500}.about-content{padding-top:8px}.about-lede{font-family:var(--font-display);color:var(--ink);max-width:34ch;margin-bottom:32px;font-size:clamp(24px,2.6vw,34px);font-weight:400;line-height:1.4}.about-content p{color:var(--ink-soft);max-width:76ch;margin-bottom:26px;font-size:18px;line-height:1.8}.about-content p:last-of-type{margin-bottom:0}.about-quote{border-top:1px solid var(--rule);font-family:var(--font-display);color:var(--accent-dark);margin-top:40px;padding:24px 0 0;font-size:clamp(24px,2.6vw,34px);font-style:italic;font-weight:400;line-height:1.35}.about-quote-src{font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:12px;font-size:11px;font-style:normal;display:block}#projects{border-top:1px solid var(--rule);background:var(--paper-deep);padding:120px 0}.projects-header{grid-template-columns:1fr minmax(300px,420px);align-items:end;gap:40px;margin-bottom:24px;display:grid}.projects-heading{font-family:var(--font-display);color:var(--ink);font-size:clamp(44px,5.5vw,76px);font-weight:600;line-height:1.02}.projects-heading em{color:var(--accent);font-style:italic;font-weight:500}.projects-subtext{font-family:var(--font-body);color:var(--muted);padding-bottom:6px;font-size:14px;line-height:1.8}.project-list{flex-direction:column;display:flex}.project-row{border-top:1px solid var(--rule);grid-template-columns:1fr auto;gap:32px;padding:40px 0;display:grid}.project-row:last-child{border-bottom:1px solid var(--rule)}.project-title-row{flex-wrap:wrap;align-items:baseline;gap:14px;display:flex}.project-index{font-family:var(--font-body);letter-spacing:.1em;color:var(--accent);font-size:12px}.project-title{font-family:var(--font-display);color:var(--ink);font-size:clamp(26px,3vw,38px);font-weight:600;line-height:1.05;transition:color .15s}.project-row:hover .project-title{color:var(--accent);font-style:italic}.project-date{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11px}.project-status{letter-spacing:.14em;text-transform:uppercase;color:var(--teal);border:1px solid #1d6a6659;border-radius:2px;padding:2px 8px;font-size:10px}.project-desc{font-family:var(--font-body);color:var(--ink-soft);max-width:64ch;margin-top:12px;font-size:15px;line-height:1.8}.project-tags{flex-wrap:wrap;gap:4px;margin-top:16px;display:flex}.project-tags .tag:not(:last-child):after{content:"·";color:var(--accent);margin-left:6px}.project-figure{max-width:560px;margin-top:28px;transition:transform .3s cubic-bezier(.16,1,.3,1)}.project-figure:hover{transform:translateY(-2px)}.project-figure:hover .project-carousel,.project-figure:hover img{border-color:var(--accent)}.project-figure a{display:block}.project-figure img{border:1px solid var(--rule);background:var(--paper);width:100%;height:auto;transition:border-color .15s;display:block}.project-placeholder{aspect-ratio:960/554;border:1px dashed var(--rule);background:var(--paper-deep);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.project-placeholder-title{font-family:var(--font-display);color:var(--muted);font-size:clamp(26px,3vw,38px);font-weight:600}.project-placeholder-note{font-family:var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:10px}.project-figure figcaption{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:8px;font-size:11px}.project-carousel{aspect-ratio:1919/994;border:1px solid var(--rule);background:var(--paper);transition:border-color .15s;position:relative;overflow:hidden}.project-carousel-link{height:100%;display:block}.project-carousel-track{will-change:transform;height:100%;transition:transform .5s cubic-bezier(.16,1,.3,1);display:flex}.project-carousel-slide{min-width:100%;height:100%}.project-carousel-slide img{object-fit:cover;background:var(--paper);border:none;width:100%;height:100%;display:block}.project-carousel-arrow{z-index:2;border:1px solid var(--rule);width:40px;height:40px;color:var(--ink);font-family:var(--font-body);cursor:pointer;background:#f7f1e5d9;place-items:center;font-size:16px;line-height:1;transition:color .15s,border-color .15s,background .15s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.project-carousel-arrow:hover{color:var(--accent);border-color:var(--accent);background:var(--paper)}.project-carousel-prev{left:12px}.project-carousel-next{right:12px}.project-carousel-dots{z-index:2;border:1px solid var(--rule);background:#f7f1e5d9;gap:8px;padding:6px 10px;display:flex;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.project-carousel-dot{border:1px solid var(--muted);cursor:pointer;background:0 0;border-radius:50%;width:8px;height:8px;padding:0;transition:background .15s,border-color .15s}.project-carousel-dot.is-active{background:var(--accent);border-color:var(--accent)}.project-actions{flex-direction:column;align-items:flex-end;gap:12px;padding-top:4px;display:flex}.project-link{font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);border-bottom:1px solid var(--rule);align-items:center;gap:8px;padding-bottom:2px;font-size:12px;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}.project-link:hover{color:var(--accent);border-color:var(--accent)}.project-link .arrow{color:var(--accent)}#skills{border-top:1px solid var(--rule);padding:120px 0}.skills-layout{grid-template-columns:300px 1fr;align-items:start;gap:80px;display:grid}.skills-sidebar{position:sticky;top:96px}.skills-note{font-family:var(--font-body);color:var(--muted);max-width:30ch;font-size:15px;line-height:1.8}.skills-grid{grid-template-columns:1fr 1fr;gap:2px 48px;display:grid}.skill-group{border-top:1px solid var(--rule);padding:24px 0}.skill-group-label{letter-spacing:.2em;text-transform:uppercase;color:var(--accent-dark);margin-bottom:20px;font-size:11px}.skill-list{flex-direction:column;gap:12px;list-style:none;display:flex}.skill-name{font-family:var(--font-display);color:var(--ink);font-size:20px;font-weight:400;transition:color .15s,transform .15s}.skill-name:hover{color:var(--accent);transform:translate(4px)}#experience{border-top:1px solid var(--rule);background:var(--paper-deep);padding:120px 0}.exp-layout{grid-template-columns:300px 1fr;align-items:start;gap:80px;display:grid}.exp-sidebar{position:sticky;top:96px}.exp-note{font-family:var(--font-body);color:var(--muted);max-width:30ch;font-size:15px;line-height:1.8}.exp-list{flex-direction:column;display:flex}.exp-item{border-bottom:1px solid var(--rule);grid-template-columns:160px 1fr;gap:40px;padding:40px 0;display:grid}.exp-item:first-child{border-top:1px solid var(--rule)}.exp-meta{flex-direction:column;gap:4px;display:flex}.exp-period{color:var(--accent-dark);letter-spacing:.08em;font-size:12px}.exp-type{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;font-size:11px}.exp-role{font-family:var(--font-display);color:var(--ink);margin-bottom:6px;font-size:clamp(24px,2.6vw,32px);font-weight:600;line-height:1.1;transition:color .15s}.exp-item:hover .exp-role{color:var(--accent)}.exp-company{color:var(--accent-dark);margin-bottom:16px;font-size:14px}.exp-desc{color:var(--ink-soft);max-width:64ch;margin-bottom:16px;font-size:15px;line-height:1.8}.exp-bullets{flex-direction:column;gap:10px;list-style:none;display:flex}.exp-bullets li{color:var(--ink-soft);max-width:64ch;padding-left:18px;font-size:15px;line-height:1.7;position:relative}.exp-bullets li:before{content:"—";color:var(--accent);position:absolute;left:0}.exp-tags{flex-wrap:wrap;gap:4px;margin-top:16px;display:flex}.exp-tags .tag:not(:last-child):after{content:"·";color:var(--accent);margin-left:6px}#contact{border-top:1px solid var(--rule);padding:120px 0 160px}.contact-layout{grid-template-columns:1fr 1fr;align-items:start;gap:80px;display:grid}.contact-left{padding-top:8px}.contact-heading{font-family:var(--font-display);color:var(--ink);margin-bottom:28px;font-size:clamp(44px,5vw,72px);font-weight:600;line-height:1.05}.contact-heading em{color:var(--accent);font-style:italic;font-weight:500}.contact-sub{font-family:var(--font-body);color:var(--ink-soft);max-width:40ch;margin-bottom:40px;font-size:15px;line-height:1.8}.contact-links{border-top:1px solid var(--rule);flex-direction:column;display:flex}.contact-link{border-bottom:1px solid var(--rule);color:var(--ink-soft);font-family:var(--font-body);justify-content:space-between;align-items:center;gap:16px;padding:16px 4px;font-size:15px;text-decoration:none;transition:color .15s,padding-left .15s;display:flex}.contact-link:hover{color:var(--accent);padding-left:8px}.contact-link-label{letter-spacing:.04em}.contact-link-arrow{color:var(--accent)}.contact-right{border:1px solid var(--rule);background:var(--paper);padding:40px}.contact-form-title{font-family:var(--font-display);color:var(--ink);margin-bottom:28px;font-size:24px;font-weight:600}.form-row{margin-bottom:20px}.form-label{letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:11px;display:block}.form-input,.form-textarea{border:none;border-bottom:1px solid var(--rule);width:100%;color:var(--ink);font-family:var(--font-body);resize:none;background:0 0;border-radius:0;padding:10px 2px;font-size:15px;transition:border-color .15s}.form-input::placeholder,.form-textarea::placeholder{color:var(--muted)}.form-input:focus,.form-textarea:focus{border-bottom-color:var(--accent)}.form-textarea{height:96px}.form-error{color:var(--error);margin-top:6px;font-size:11px;display:block}.form-submit{background:var(--ink);width:100%;height:48px;color:var(--paper);font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--ink);cursor:pointer;margin-top:8px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s}.form-submit:hover{background:var(--accent);border-color:var(--accent)}.form-submit:disabled{opacity:.5;cursor:not-allowed}footer{border-top:1px solid var(--rule);background:var(--paper-deep)}.footer-inner{max-width:1440px;padding:40px var(--gutter) 32px;margin:0 auto}.footer-row{justify-content:space-between;align-items:center;gap:24px;display:flex}.footer-sig{font-family:var(--font-display);color:var(--ink);font-size:20px;font-weight:600}.footer-links{flex-wrap:wrap;gap:20px;display:flex}.footer-links a{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-size:11px;text-decoration:none;transition:color .15s}.footer-links a:hover{color:var(--accent)}.footer-colophon{border-top:1px solid var(--rule);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:24px;padding-top:16px;font-size:10px}@media (width<=1023px){:root{--gutter:48px}.hero-topline-meta{display:none}.hero-index{grid-template-columns:1fr 1fr 1fr}.projects-header{grid-template-columns:1fr;gap:16px}.about-grid{grid-template-columns:1fr}.about-label-col{position:static}.skills-layout{grid-template-columns:1fr;gap:40px}.skills-sidebar{position:static}.exp-layout{grid-template-columns:1fr;gap:40px}.exp-sidebar{position:static}.exp-item{grid-template-columns:1fr;gap:8px}.contact-layout{grid-template-columns:1fr;gap:48px}}@media (width<=900px){.nav-links{display:none}.nav-toggle{display:grid}}@media (width<=767px){:root{--gutter:20px}.nav-brand{padding:0 20px;font-size:20px}.skills-grid,.hero-index{grid-template-columns:1fr}.hero-index-item{border-right:none;border-bottom:1px solid var(--rule)}.hero-index-item:last-child{border-bottom:none}.project-row{grid-template-columns:1fr}.project-actions{flex-direction:row;justify-content:flex-start;align-items:center;padding-top:0}.contact-right{padding:24px}.footer-row{flex-direction:column;align-items:flex-start;gap:8px}#about,#skills,#experience,#projects{padding:72px 0}#contact{padding:72px 0 96px}.about-figure{max-width:320px;margin:0 auto}.about-figure figcaption{text-align:center}.project-date{width:100%}.contact-link-label{overflow-wrap:anywhere}}@media (width<=480px){.hero-title{font-size:clamp(44px,11vw,56px)}.hero-deck{font-size:17px}.hero-index-item{padding:18px 16px}.hero-ctas .btn-primary,.hero-ctas .btn-ghost{justify-content:center;width:100%}.contact-right{padding:20px}.contact-heading{font-size:clamp(36px,9vw,44px)}.section-head{flex-wrap:wrap;row-gap:8px}.section-head-line{display:none}.section-head-caption{white-space:normal;overflow-wrap:anywhere;width:100%}.project-desc,.exp-desc,.exp-bullets li{font-size:14px}.form-input,.form-textarea{font-size:16px}}
