:root{--color-bg:#eef0ef;--color-bg-elevated:#f7f8f7;--color-ink:#141816;--color-ink-soft:#3a423e;--color-muted:#6a736e;--color-line:#1418161f;--color-accent:#0d5c63;--color-accent-soft:#d5e6e7;--color-placeholder:#c5ccc8;--color-placeholder-deep:#9aa39e;--font-display:"Fraunces", "Times New Roman", serif;--font-sans:"Outfit", "Segoe UI", sans-serif;--space-xs:.5rem;--space-sm:.75rem;--space-md:1.25rem;--space-lg:2rem;--space-xl:3.5rem;--space-2xl:6rem;--space-3xl:9rem;--text-xs:clamp(.75rem, .7rem + .2vw, .8125rem);--text-sm:clamp(.875rem, .82rem + .25vw, .9375rem);--text-base:clamp(1rem, .95rem + .3vw, 1.125rem);--text-lg:clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--text-xl:clamp(1.75rem, 1.3rem + 1.5vw, 2.75rem);--text-hero:clamp(3rem, 1.5rem + 6vw, 7.5rem);--nav-h:4.5rem;--ease-out:cubic-bezier(.22, 1, .36, 1);--duration:.7s;--max-w:72rem;--radius:.25rem}*,:before,:after{box-sizing:border-box}html{background:var(--color-bg);color:var(--color-ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:1.5}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{background:var(--color-bg);min-height:100vh;margin:0;overflow-x:hidden}img,svg,video{max-width:100%;display:block}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit;color:inherit}::selection{background:var(--color-accent);color:var(--color-bg-elevated)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-transition-overlay{z-index:200;pointer-events:none;background:var(--color-ink);transform-origin:bottom;will-change:transform;position:fixed;inset:0;transform:scaleY(0)}#main{min-height:100vh}.section{width:min(100% - 2.5rem, var(--max-w));margin-inline:auto}.section--flush{width:100%;max-width:none;margin:0}.eyebrow{font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);margin:0 0 var(--space-md);font-weight:500}.display{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-weight:500;line-height:.95}.lede{font-size:var(--text-lg);color:var(--color-ink-soft);max-width:36rem;margin:0;font-weight:350;line-height:1.45}.btn-row{margin-top:var(--space-lg);flex-wrap:wrap;gap:.75rem;display:flex}.btn{border:1px solid var(--color-ink);background:var(--color-ink);color:var(--color-bg-elevated);font-size:var(--text-sm);letter-spacing:.02em;cursor:pointer;transition:background .25s var(--ease-out), color .25s var(--ease-out), border-color .25s var(--ease-out);align-items:center;gap:.5rem;padding:.85rem 1.35rem;font-weight:500;display:inline-flex}.btn:hover{background:var(--color-accent);border-color:var(--color-accent)}.btn--ghost{color:var(--color-ink);background:0 0}.btn--ghost:hover{background:var(--color-ink);color:var(--color-bg-elevated)}.page-pad{padding-top:calc(var(--nav-h) + var(--space-xl));padding-bottom:var(--space-3xl)}.atmosphere{pointer-events:none;background:radial-gradient(ellipse 80% 60% at 70% 20%, #0d5c631f, transparent 55%), radial-gradient(ellipse 50% 40% at 15% 80%, #1418160f, transparent 50%), linear-gradient(165deg, #e8ebe9 0%, var(--color-bg) 45%, #e4e8e6 100%);position:absolute;inset:0}.atmosphere:after{content:"";opacity:.35;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");position:absolute;inset:0}.site-header{z-index:100;height:var(--nav-h);pointer-events:none;align-items:center;padding:0 clamp(1.25rem,4vw,3rem);display:flex;position:fixed;inset:0 0 auto}.site-header__inner{width:100%;max-width:var(--max-w);pointer-events:auto;justify-content:space-between;align-items:center;margin:0 auto;display:flex}.site-header__brand{font-family:var(--font-display);font-size:var(--text-base);letter-spacing:-.02em;font-weight:500}.site-header__brand span{color:var(--color-muted);font-family:var(--font-sans);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;margin-left:.5rem;font-weight:400}.site-nav{align-items:center;gap:clamp(1rem,2.5vw,2rem);display:flex}.site-nav a{font-size:var(--text-sm);letter-spacing:.02em;opacity:.72;transition:opacity .25s var(--ease-out);font-weight:450;position:relative}.site-nav a:hover,.site-nav a[aria-current=page]{opacity:1}.site-nav a[aria-current=page]:after{content:"";background:var(--color-accent);height:1px;position:absolute;bottom:-.35rem;left:0;right:0}@media (width<=640px){.site-header__brand span{display:none}.site-nav{gap:.85rem}}.placeholder-media{width:100%;aspect-ratio:var(--aspect,16 / 10);margin:0;overflow:hidden}.placeholder-media__surface{width:100%;height:100%;min-height:inherit;background:linear-gradient(145deg, #fff3, transparent 40%), linear-gradient(25deg, var(--tone-a), var(--tone-b));border-radius:var(--radius);place-items:center;display:grid;position:relative}.placeholder-media--light{--tone-a:#d9dfdc;--tone-b:#b7c2bd}.placeholder-media--mid{--tone-a:#9eaea8;--tone-b:#6f817a}.placeholder-media--deep{--tone-a:#3d5658;--tone-b:#0d5c63}.placeholder-media__grain{opacity:.28;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.placeholder-media__label{z-index:1;font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:#f7f8f7e0;font-weight:500;position:relative}.placeholder-media--light .placeholder-media__label{color:#1418168c}.parallax-band{margin:var(--space-2xl) 0;position:relative;overflow:hidden}.parallax-band__inner{will-change:transform;transform:translate(0,0)}.parallax-band .placeholder-media{aspect-ratio:auto;min-height:clamp(14rem,32vw,22rem)}.parallax-band .placeholder-media__surface{border-radius:0;min-height:clamp(14rem,32vw,22rem)}.stub-section{margin:var(--space-2xl) 0;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start;gap:clamp(1.5rem,4vw,3.5rem);display:grid}.stub-section__title{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.03em;margin:0 0 var(--space-sm);font-weight:500;line-height:1.05}.stub-section__caption{margin:0 0 var(--space-md);color:var(--color-muted);font-size:var(--text-sm)}.stub-section__lines{gap:.55rem;display:grid}.stub-section__lines span{background:var(--color-line);border-radius:999px;height:.55rem;display:block}.stub-section__lines span:first-child{width:92%}.stub-section__lines span:nth-child(2){width:78%}.stub-section__lines span:nth-child(3){width:64%}.stub-section__media{top:calc(var(--nav-h) + 1.5rem);position:sticky}@media (width<=800px){.stub-section{grid-template-columns:1fr}.stub-section__media{position:static}}.experience-list{gap:var(--space-2xl);display:grid}.experience-list__item{border-top:1px solid var(--color-line);padding-top:var(--space-lg)}.experience-list__header{gap:var(--space-lg);margin-bottom:var(--space-lg);grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);display:grid}.experience-list__meta{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);margin:0 0 .4rem}.experience-list__title{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.03em;margin:0;font-weight:500;line-height:1.05}.experience-list__title a:hover{color:var(--color-accent)}.experience-list__role{color:var(--color-ink-soft);font-size:var(--text-sm);margin:.4rem 0 0}.experience-list__summary{color:var(--color-muted);font-size:var(--text-base);align-self:end;margin:0;line-height:1.5}.experience-list__works{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.work-thumb{gap:.65rem;display:grid}.work-thumb__media{aspect-ratio:4/3;border-radius:var(--radius);background:linear-gradient(145deg,#ffffff2e,#0000 45%),linear-gradient(30deg,#6f817a,#0d5c63);place-items:center;display:grid;overflow:hidden}.work-thumb__code{font-size:var(--text-xs);letter-spacing:.18em;text-transform:uppercase;color:#f7f8f7e6;font-weight:500}.work-thumb__copy{font-size:var(--text-sm);justify-content:space-between;gap:.75rem;display:flex}.work-thumb__title{font-weight:500}.work-thumb__year{color:var(--color-muted);white-space:nowrap}.work-thumb:hover .work-thumb__title{color:var(--color-accent)}@media (width<=800px){.experience-list__header{grid-template-columns:1fr}}.flip-clone{color:#f7f8f7;letter-spacing:.16em;text-transform:uppercase;background:linear-gradient(30deg,#6f817a,#0d5c63);border-radius:.25rem;place-items:center;font-size:.75rem;font-weight:500;display:grid;overflow:hidden}.home-hero{min-height:100vh;padding:calc(var(--nav-h) + var(--space-lg)) 0 var(--space-2xl);align-items:center;display:grid;position:relative;overflow:hidden}.home-hero__grid{z-index:1;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:end;gap:clamp(2rem,5vw,4rem);display:grid;position:relative}.home-hero__name{font-size:var(--text-hero);margin-bottom:var(--space-md)}.home-hero__media{width:100%;max-width:28rem;margin-left:auto}@media (width<=900px){.home-hero__grid{grid-template-columns:1fr;align-items:start}.home-hero__media{max-width:22rem;margin-left:0}}.portfolio-intro__title{font-size:var(--text-xl);max-width:14ch;margin-bottom:var(--space-md)}.experience-hero__title{font-size:var(--text-xl);margin-bottom:.35rem}.experience-hero__role{margin:0 0 var(--space-md);color:var(--color-ink-soft)}.experience-blocks{margin-top:var(--space-2xl)}.experience-blocks__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;display:grid}.experience-block h2{font-size:var(--text-sm);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .75rem;font-weight:500}.experience-block__lines{gap:.45rem;margin-bottom:1rem;display:grid}.experience-block__lines span{background:var(--color-line);border-radius:999px;height:.45rem}.experience-block__lines span:first-child{width:90%}.experience-block__lines span:nth-child(2){width:75%}.experience-block__lines span:nth-child(3){width:82%}.experience-block__lines span:nth-child(4){width:55%}.experience-body{margin-top:var(--space-lg);color:var(--color-muted)}.experience-works{margin-top:var(--space-2xl)}.experience-works ul{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.experience-works a{border-top:1px solid var(--color-line);grid-template-columns:4.5rem 1fr;align-items:center;gap:1rem;padding:.75rem 0;display:grid}.experience-works a:last-child{border-bottom:1px solid var(--color-line)}.experience-works__thumb{aspect-ratio:1;color:var(--color-bg-elevated);font-size:var(--text-xs);letter-spacing:.12em;border-radius:var(--radius);background:linear-gradient(30deg,#6f817a,#0d5c63);place-items:center;display:grid}.experience-works span small{color:var(--color-muted);margin-top:.2rem;display:block}@media (width<=800px){.experience-blocks__grid{grid-template-columns:1fr}}.work-hero__media{width:100%}.work-hero__media .placeholder-media,.work-hero__media .placeholder-media__surface{border-radius:0}.work-hero__copy{padding:var(--space-xl) 0 var(--space-lg)}.work-hero__title{font-size:var(--text-xl);margin-bottom:var(--space-md)}.work-hero__tags{color:var(--color-muted);font-size:var(--text-sm);flex-wrap:wrap;gap:.5rem 1rem;margin:0;padding:0;list-style:none;display:flex}.work-triad{margin-bottom:var(--space-xl);grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.work-triad__item{margin:0}.work-triad__item figcaption{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);margin-top:.65rem}.work-footer{padding:var(--space-2xl) 0 var(--space-3xl);border-top:1px solid var(--color-line);flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}@media (width<=800px){.work-triad{grid-template-columns:1fr}}.map-page{padding-top:calc(var(--nav-h) + var(--space-lg));grid-template-rows:auto 1fr;min-height:100vh;display:grid}.map-page__title{font-size:var(--text-xl);margin-bottom:var(--space-md)}.map-toggles{margin:var(--space-lg) 0 var(--space-md);flex-wrap:wrap;gap:.5rem;display:flex}.map-toggle{appearance:none;border:1px solid var(--color-line);font-size:var(--text-sm);cursor:pointer;transition:background .2s var(--ease-out), color .2s var(--ease-out), border-color .2s var(--ease-out);background:0 0;padding:.7rem 1.1rem;font-weight:500}.map-toggle.is-active,.map-toggle:hover{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-bg-elevated)}.map-toggle.is-active{background:var(--color-accent);border-color:var(--color-accent)}.map-page__stage{min-height:min(70vh,52rem);margin:0 clamp(1.25rem, 4vw, 3rem) var(--space-xl);border:1px solid var(--color-line);background:#d7ddd9;position:relative;overflow:hidden}.map-page__canvas{position:absolute;inset:0}.map-page__canvas .maplibregl-ctrl-attrib{background:#f7f8f7cc;font-size:10px}.contact-grid{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:start;gap:clamp(2rem,5vw,4rem);display:grid}.contact-copy__title{font-size:var(--text-xl);margin-bottom:var(--space-md)}.contact-email{margin-top:var(--space-lg);font-size:var(--text-sm)}.contact-email a{color:var(--color-accent);border-bottom:1px solid #0000}.contact-email a:hover{border-bottom-color:var(--color-accent)}.contact-form{padding:var(--space-lg);background:var(--color-bg-elevated);border:1px solid var(--color-line);gap:1rem;display:grid}.field{gap:.4rem;display:grid}.field span{font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted)}.field input,.field textarea{border:1px solid var(--color-line);background:var(--color-bg);border-radius:var(--radius);width:100%;transition:border-color .2s var(--ease-out);outline:none;padding:.85rem 1rem}.field input:focus,.field textarea:focus{border-color:var(--color-accent)}.field textarea{resize:vertical;min-height:9rem}.hp{opacity:0;height:0;position:absolute;left:-9999px;overflow:hidden}.contact-status{min-height:1.25rem;font-size:var(--text-sm);color:var(--color-accent);margin:0}.contact-status.is-error{color:#8a2e2e}.contact-form.is-sending .btn{opacity:.65;pointer-events:none}@media (width<=800px){.contact-grid{grid-template-columns:1fr}}
