:root{--cream:#f3eee3;--cream-2:#ece5d6;--ink:#111;--orange:#d9541e;--orange-deep:#b8450f;--muted:#1111119e;--line:#11111124;--line-soft:#11111114;--serif:"Fraunces", "Iowan Old Style", Georgia, serif;--sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"JetBrains Mono", "SF Mono", ui-monospace, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;scroll-padding-top:96px}body{background:var(--cream);color:var(--ink);font-family:var(--sans);margin:0;font-size:17px;line-height:1.65}::selection{background:var(--orange);color:var(--cream)}img{max-width:100%;display:block}a{color:inherit}:focus-visible{outline:2px solid var(--orange);outline-offset:3px}.wrap{width:100%;max-width:1160px;margin:0 auto;padding:0 32px}.mono{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;font-weight:400}.link-inline{color:var(--ink);border-bottom:1px solid var(--orange);padding-bottom:2px;text-decoration:none;transition:color .2s}.link-inline:hover{color:var(--orange)}.btn{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--ink);cursor:pointer;color:var(--ink);background:0 0;align-items:center;gap:.6em;padding:.95em 1.5em;font-size:.72rem;text-decoration:none;transition:transform .2s,background .2s,color .2s,border-color .2s;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--orange);border-color:var(--orange);color:#fff}.btn-primary:hover{background:var(--orange-deep);border-color:var(--orange-deep)}.btn-ghost:hover{background:var(--ink);color:var(--cream)}.btn-sm{padding:.7em 1.1em}.nav{z-index:50;background:var(--cream);background:color-mix(in srgb, var(--cream) 82%, transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;gap:24px;min-height:74px;display:flex}.brand{font-family:var(--serif);letter-spacing:-.015em;font-size:1.3rem;font-weight:600;text-decoration:none}.brand-dot{color:var(--orange)}.nav-links{align-items:center;gap:28px;display:flex}.nav-links .nav-text{color:var(--muted);text-decoration:none;transition:color .2s}.nav-links .nav-text:hover{color:var(--ink)}.nav-toggle{border:1px solid var(--line);cursor:pointer;width:44px;height:44px;color:var(--ink);background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:0;display:none}.nav-toggle span{background:currentColor;width:17px;height:1.5px;transition:transform .2s;display:block}.nav.is-open .nav-toggle span:first-child{transform:translateY(3.25px)rotate(45deg)}.nav.is-open .nav-toggle span:last-child{transform:translateY(-3.25px)rotate(-45deg)}.hero{padding:92px 32px 76px}.hero-grid{grid-template-columns:1.35fr .65fr;align-items:center;gap:64px;display:grid}.status{color:var(--muted);align-items:center;gap:.7em;margin:0;display:inline-flex}.dot{background:var(--orange);border-radius:50%;width:8px;height:8px;animation:2.4s infinite pulse;box-shadow:0 0 #d9541e80}@keyframes pulse{0%{box-shadow:0 0 #d9541e73}70%{box-shadow:0 0 0 9px #d9541e00}to{box-shadow:0 0 #d9541e00}}h1{font-family:var(--serif);letter-spacing:-.025em;margin:.45em 0 .4em;font-size:clamp(2.8rem,6vw,5.1rem);font-weight:500;line-height:1.03}h1 em{color:var(--orange);font-style:italic}.lede{max-width:46ch;color:var(--muted);margin:0;font-size:1.05rem}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:34px;display:flex}.stats{border-top:1px solid var(--line);flex-wrap:wrap;gap:40px;margin:46px 0 0;padding-top:26px;display:flex}.stats dt{color:var(--muted);margin-bottom:4px}.stats dd{font-family:var(--serif);margin:0;font-size:1.15rem;font-weight:500}.portrait{isolation:isolate;position:relative}.portrait:after{content:"";border:1px solid var(--orange);z-index:-1;position:absolute;inset:-14px -14px 14px 14px}.frame{border:1px solid var(--line);background:var(--cream-2);margin:0;position:relative;overflow:hidden}.frame-tall{aspect-ratio:4/5}.frame-wide{aspect-ratio:16/9}.frame img{z-index:2;object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.ph-label{text-align:center;font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);background-image:repeating-linear-gradient(45deg, transparent 0 11px, var(--line-soft) 11px 12px);justify-content:center;align-items:center;padding:20px;font-size:.68rem;display:flex;position:absolute;inset:0}.strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0}.strip-list{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:14px 24px;display:flex}.strip-list span{align-items:center;gap:.6em;display:inline-flex}.strip-list span:not(:last-child):after{content:"/";color:var(--orange);margin-left:.6em}.section{padding:100px 32px}.sec-head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:52px;display:flex}.sec-label{color:var(--orange);margin:0 0 12px}.sec-title{font-family:var(--serif);letter-spacing:-.02em;margin:0;font-size:clamp(2rem,4vw,3rem);font-weight:500;line-height:1.02}.work-grid{grid-template-columns:repeat(2,1fr);gap:30px;display:grid}.project{border:1px solid var(--line);background:color-mix(in srgb, var(--cream) 55%, #fff);flex-direction:column;transition:transform .3s,border-color .3s,box-shadow .3s;display:flex}.project:hover{border-color:var(--ink);box-shadow:7px 7px 0 var(--orange);transform:translateY(-5px)}.project .frame{border:0;border-bottom:1px solid var(--line)}.project-body{flex-direction:column;flex:1;gap:10px;padding:22px;display:flex}.project-num{color:var(--orange);margin:0}.project h3{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:1.35rem;font-weight:500;line-height:1.15}.project p{color:var(--muted);margin:0;font-size:.95rem}.tags{flex-wrap:wrap;gap:7px;margin:6px 0 0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--line);color:var(--muted);background:var(--cream);padding:4px 8px;font-size:.62rem}.project-link{color:var(--ink);align-self:flex-start;margin-top:auto;padding-top:10px;text-decoration:none;transition:color .2s,letter-spacing .2s}.project-link:hover{color:var(--orange)}.about-grid{grid-template-columns:.8fr 1.2fr;align-items:start;gap:64px;display:grid}.about-grid>div:last-child>p{color:var(--muted);max-width:58ch}.about-title{margin:14px 0 26px;font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.08}.skill-groups{grid-template-columns:1fr 1fr;gap:40px;margin-top:40px;display:grid}.skill-group h3{color:var(--orange);margin:0 0 10px}.skill-group ul{margin:0;padding:0;list-style:none}.skill-group li{border-top:1px solid var(--line);padding:9px 0;font-size:.95rem}.skill-group li:last-child{border-bottom:1px solid var(--line)}.contact{background:var(--ink);color:var(--cream);padding:104px 0}.contact-grid{grid-template-columns:1.1fr .9fr;align-items:start;gap:72px;display:grid}.contact .sec-label{color:#e8824f}.contact-title{font-family:var(--serif);letter-spacing:-.02em;margin:12px 0 22px;font-size:clamp(2.2rem,4.6vw,3.6rem);font-weight:500;line-height:1.02}.contact-title em{color:var(--orange);font-style:italic}.contact-lede{color:#f3eee3ad;max-width:46ch;margin:0 0 40px}.field{margin-bottom:26px;display:block}.field>.mono{color:#f3eee38c;margin-bottom:6px;display:block}.field input,.field textarea{width:100%;color:var(--cream);font-family:var(--sans);resize:vertical;background:0 0;border:0;border-bottom:1px solid #f3eee340;padding:10px 0;font-size:1rem;transition:border-color .2s}.field input::placeholder,.field textarea::placeholder{color:#f3eee34d}.field input:focus,.field textarea:focus{border-color:var(--orange);outline:none}.contact-form .btn-primary{margin-top:8px}.contact-aside{border-top:1px solid #f3eee329;flex-direction:column;padding-top:8px;display:flex}.aside-label{color:#f3eee38c;margin:16px 0 8px}.aside-link{border-bottom:1px solid #f3eee329;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;font-size:1.05rem;text-decoration:none;transition:color .2s,padding .2s;display:flex}.aside-link span{color:var(--orange)}.aside-link:hover{color:var(--orange);padding-left:6px}.footer{border-top:1px solid var(--line);padding:28px 0}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.footer .mono{color:var(--muted);margin:0}.footer .badge{border:1px solid var(--line);padding:5px 10px;font-size:.62rem}.footer .link-inline{color:var(--muted)}.reveal{animation:.75s cubic-bezier(.2,.7,.2,1) both rise}.hero-copy.reveal{animation-delay:50ms}.portrait.reveal{animation-delay:.15s}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@media (width<=900px){.hero-grid,.about-grid,.contact-grid,.work-grid{grid-template-columns:1fr}.hero-grid{gap:44px}.portrait{max-width:420px}.section{padding:72px 32px}.contact{padding:76px 0}.about-grid{gap:40px}.about-grid>div:first-child{max-width:420px}}@media (width>=700px) and (width<=900px){.work-grid{grid-template-columns:repeat(2,1fr);gap:24px}.project-body{padding:20px}.project h3{font-size:1.25rem}}@media (width<=620px){body{font-size:16px}.wrap{padding:0 20px}.hero{padding:56px 20px 52px}.section{padding:56px 20px}.sec-head{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:34px}.skill-groups{grid-template-columns:1fr 1fr;gap:24px 18px}.skill-group li{font-size:.9rem}.stats{gap:26px}.strip-list{justify-content:flex-start}.work-grid{gap:22px}.project .frame-wide{aspect-ratio:16/8}.project-body{gap:9px;padding:18px}.project h3{font-size:1.22rem}.project p{font-size:.9rem}}@media (width<=820px){.nav-toggle{display:inline-flex}.nav-links{background:var(--cream);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0;padding:6px 20px 22px;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 20px 34px #1111111a}.nav.is-open .nav-links{display:flex}.nav-links .nav-text{border-bottom:1px solid var(--line);color:var(--ink);padding:15px 0}.nav-links .btn{justify-content:center;margin-top:18px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.write-list{border-top:1px solid var(--line)}.write-item{border-bottom:1px solid var(--line);color:var(--ink);grid-template-columns:110px 1fr auto;align-items:baseline;gap:24px;padding:22px 0;text-decoration:none;transition:color .2s,padding-left .2s;display:grid}.write-item:hover{color:var(--orange);padding-left:8px}.write-date{color:var(--muted)}.write-item h3{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:1.35rem;font-weight:500;line-height:1.2}.write-arrow{color:var(--orange)}.page-head{padding:84px 32px 44px}.page-head h1{margin:10px 0 16px;font-size:clamp(2.6rem,5vw,4rem)}.page-lede{color:var(--muted);max-width:52ch;margin:0}.featured{border:1px solid var(--line);color:var(--ink);background:color-mix(in srgb, var(--cream) 55%, #fff);flex-direction:column;gap:16px;margin-bottom:34px;padding:40px;text-decoration:none;transition:transform .3s,border-color .3s,box-shadow .3s;display:flex}.featured:hover{border-color:var(--ink);box-shadow:8px 8px 0 var(--orange);transform:translateY(-5px)}.featured h2{font-family:var(--serif);letter-spacing:-.015em;margin:0;font-size:clamp(1.8rem,3.4vw,2.6rem);font-weight:500;line-height:1.08}.featured p{color:var(--muted);max-width:62ch;margin:0}.post-meta{color:var(--muted);flex-wrap:wrap;gap:10px 20px;display:flex}.post-meta span{align-items:center;gap:.6em;display:inline-flex}.post-meta span:not(:last-child):after{content:"·";color:var(--orange);margin-left:.6em}.post-grid{grid-template-columns:repeat(2,1fr);gap:30px;display:grid}.post-card{border:1px solid var(--line);color:var(--ink);background:color-mix(in srgb, var(--cream) 55%, #fff);flex-direction:column;gap:12px;padding:30px;text-decoration:none;transition:transform .3s,border-color .3s,box-shadow .3s;display:flex}.post-card:hover{border-color:var(--ink);box-shadow:6px 6px 0 var(--orange);transform:translateY(-5px)}.post-card h3{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:1.4rem;font-weight:500;line-height:1.18}.post-card p{color:var(--muted);margin:0;font-size:.95rem}.post-card .post-meta{margin-top:auto;padding-top:10px}.article{max-width:760px;margin:0 auto;padding:84px 32px 110px}.article-head{text-align:center;margin-bottom:56px}.article-head h1{margin:16px 0 22px;font-size:clamp(2.2rem,4.6vw,3.4rem);line-height:1.06}.article-head .post-meta{justify-content:center}.article-head .sec-label{margin-bottom:4px}.prose{color:#111111d1;font-size:1.08rem;line-height:1.8}.prose p{margin:0 0 1.4em}.prose h2{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);margin:1.8em 0 .6em;font-size:1.8rem;font-weight:500;line-height:1.15}.prose h3{font-family:var(--serif);color:var(--ink);margin:1.6em 0 .5em;font-size:1.35rem;font-weight:500}.prose a{color:var(--orange);text-underline-offset:3px;text-decoration:underline}.prose ul,.prose ol{margin:0 0 1.4em;padding-left:1.2em}.prose li{margin-bottom:.4em}.prose blockquote{border-left:2px solid var(--orange);color:var(--muted);font-family:var(--serif);margin:1.8em 0;padding:4px 0 4px 24px;font-size:1.25rem;font-style:italic}.prose code{font-family:var(--mono);background:var(--cream-2);border:1px solid var(--line);padding:2px 6px;font-size:.85em}.prose pre{background:var(--ink);color:var(--cream);border-left:3px solid var(--orange);margin:0 0 1.6em;padding:22px;overflow-x:auto}.prose pre code{color:inherit;background:0 0;border:0;padding:0;font-size:.85rem;line-height:1.6}.prose hr{border:0;border-top:1px solid var(--line);margin:2.4em 0}.prose img{border:1px solid var(--line);margin:1.6em 0}.back-link{margin-top:10px;display:inline-block}@media (width<=900px){.post-grid{grid-template-columns:1fr}.featured{padding:30px}}@media (width<=620px){.page-head{padding:56px 20px 32px}.article{padding:56px 20px 80px}.featured,.post-card{padding:22px}.write-item{grid-template-columns:1fr auto;gap:8px}.write-item h3{grid-area:2/1/auto/-1;font-size:1.2rem}}.exp-list{border-top:1px solid var(--line)}.exp-item{border-bottom:1px solid var(--line);grid-template-columns:220px minmax(0,1fr);gap:40px;padding:34px 0;display:grid}.exp-meta{flex-direction:column;gap:6px;display:flex}.exp-date{color:var(--orange)}.exp-company{font-family:var(--serif);letter-spacing:-.01em;font-size:1.15rem;font-weight:500}.exp-loc{color:var(--muted)}.exp-body h3{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 14px;font-size:1.45rem;font-weight:500;line-height:1.15}.exp-points{margin:0 0 18px;padding:0;list-style:none}.exp-points li{color:var(--muted);margin-bottom:10px;padding-left:20px;font-size:.95rem;line-height:1.6;position:relative}.exp-points li:before{content:"";background:var(--orange);width:6px;height:6px;position:absolute;top:.62em;left:0}.exp-body .tags{margin-top:0}@media (width<=900px){.exp-item{grid-template-columns:1fr;gap:12px}.exp-meta{flex-flow:wrap;align-items:baseline;gap:8px 16px}}@media (width<=620px){.exp-body h3{font-size:1.25rem}}
