@import url('https://fonts.googleapis.com/css2?family=PT+Mono&display=swap');
/* Keep the original visual language while giving the page a full-width frame. */
:root{--blue:#cfe2f3;--green:#d9ead3;--pink:#b66b88;--ink:#212622}*{box-sizing:border-box}body{margin:0;background:var(--blue);color:var(--ink);font:18px/1.6 'PT Mono',monospace}.site{max-width:1240px;margin:auto;min-height:100vh;background:#f4f5ee}a{color:#205c79;text-underline-offset:3px}button,input{font:inherit}button{cursor:pointer}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #679dbd;outline-offset:4px}header{height:64px;display:flex;align-items:center;padding:0 30px;gap:25px;background:#202220;color:#fff;position:sticky;top:0;z-index:20}header a{color:inherit;text-decoration:none}.brand{font-size:20px;white-space:nowrap}nav{margin-left:auto;display:flex;align-items:center;gap:28px;font-size:15px}nav>a,nav>.nav-group>a{padding:18px 0}nav a[aria-current]{font-weight:bold;color:var(--blue)}.nav-group{position:relative;display:flex;align-items:center;gap:5px}.nav-group>button{background:none;color:inherit;border:0;font-size:23px;padding:0 3px}.submenu{display:none;position:absolute;top:45px;right:0;min-width:240px;background:#262a26;box-shadow:0 8px 20px #0002;padding:8px}.submenu a{display:block;padding:10px 12px;font-size:14px}.submenu a:hover{background:#3b443b}.nav-group.open .submenu{display:block}.search-toggle,.menu-toggle{border:0;background:none;color:inherit;padding:5px;font-size:25px}.menu-toggle{display:none}.home-hero{background:linear-gradient(#19221d55,#000a),url('/assets/landscape.jpg') center/cover;color:white;padding:32px 40px 46px}.intro-grid{display:grid;grid-template-columns:250px 1fr;align-items:center;gap:38px;max-width:780px;margin:auto}.intro-grid>img{width:250px;height:220px;object-fit:cover}h1,h2,h3,p{margin-top:0}h1{font-size:46px;line-height:1.2;color:var(--blue);margin-bottom:28px}h2{font-size:26px;line-height:1.4;margin-bottom:25px}h3{font-size:21px;line-height:1.4;margin-bottom:24px}.intro-grid p{margin:0 0 14px;font-size:18px}.intro-grid p:last-child{margin:0}.photo-heading{text-align:center;padding:28px 35px;background-color:#323c36;color:white}.photo-heading h1,.photo-heading h2,.photo-heading h3{margin:0}.photo-heading p{margin:15px 0 0}.photo-heading a{color:var(--blue)}.shore{background:linear-gradient(#15231d85,#15231d85),url('/assets/shore.jpg') center 56%/cover}.mountains{background:linear-gradient(#14261a77,#14261a77),url('/assets/mountains.jpg') center/cover}.home-work{background:#545754;color:white;padding:30px 5% 38px}.tiles{display:grid;gap:28px}.three{grid-template-columns:repeat(3,1fr)}.two{grid-template-columns:repeat(2,1fr)}figure{margin:0}figure img{max-width:100%;display:block}.tiles img,.tiles iframe{width:100%;height:285px;object-fit:cover;display:block;border:0;background:#202220}.tiles figure>a{display:block;transition:opacity .15s}.tiles figure>a:hover{opacity:.9}figcaption{font-size:15px;line-height:1.5;text-align:center;margin-top:14px}.tiles figcaption a{color:inherit;text-decoration:none}.contact{text-align:center;font-size:24px;margin:45px 0 20px}.contact a{color:white}.social{display:flex;gap:25px;justify-content:center;font-size:15px}.social a{color:#e3e4e0}footer{padding:28px;text-align:center;font-size:12px;background:#202220;color:#d1d8ce}.narrow{max-width:680px;margin:auto;padding:40px 28px}.about-intro{padding-top:45px;padding-bottom:45px}.about-intro h2{color:var(--pink)}.map{width:100%;height:300px;border:0;display:block;margin-top:28px}.experience{background:var(--green)}.experience h3{margin:0 0 32px}details{margin-bottom:26px}summary{font-size:19px;font-weight:bold;color:var(--pink);position:relative;cursor:pointer;list-style:none;border-bottom:1px solid #aebfa6;padding:12px 32px 14px 0}summary::-webkit-details-marker{display:none}summary:after{content:'⌄';position:absolute;right:0;top:10px;font-size:22px;color:#526e4a}details[open] summary:after{content:'⌃'}details p{margin:20px 0;font-size:17px;line-height:1.7}details img{width:100%;margin:25px 0}.resume-prompt{margin:38px 0 0}.hobbies{background:#fffed1}.hobbies h3{color:var(--pink)}.carousel{margin-top:35px}.carousel>img{width:100%;height:450px;object-fit:cover}.carousel-controls{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px 0;font-size:12px}.carousel-controls button{border:0;background:transparent;font-size:26px;color:#526e4a;width:30px}.carousel-dots{display:flex;gap:10px;justify-content:center}.carousel-dots button{width:10px;height:10px;padding:0;border:0;border-radius:50%;background:#c6c9bc}.carousel-dots button[aria-pressed=true]{background:#245775}.big-heading{padding:80px 20px}.project-index{background:var(--green);padding:40px 6% 60px}.project-index h2{color:var(--pink);margin:0 0 30px}.project-index .tiles+h2{margin-top:55px}.project-index figcaption{font-size:24px;font-weight:bold;color:var(--ink)}.project-index .tiles img{height:330px}.project-hero{padding:50px 6%;background:var(--green)}.project-intro{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}.project-intro h1{color:#6b8297;font-size:40px}.project-intro p{line-height:1.8}.project-intro iframe{width:100%;height:360px;border:0;background:#252b26}.project-intro img{width:100%}.module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:35px;padding:40px 6%;background:#f5f6ee}.module-grid img{width:100%;height:330px;object-fit:contain;background:white}.resume{background:var(--green);padding:35px 6%}.resume iframe{width:100%;height:850px;border:0;background:white}.resume p{text-align:center;margin:20px 0 0;font-size:14px}.skip{position:fixed;left:10px;top:-100px;background:white;padding:10px;z-index:50}.skip:focus{top:10px}dialog{border:0;padding:30px;background:#f5f6ee;width:min(600px,90vw);color:var(--ink)}dialog::backdrop{background:#0009}dialog form{float:right}dialog form button{border:0;background:transparent}dialog label{display:block;margin-bottom:20px}dialog input{width:100%;padding:12px;border:1px solid #aebfa6;background:white}#search-results a{display:block;padding:12px 0;border-bottom:1px solid #d2dbcc;font-size:15px}#search-results p{font-size:14px;padding-top:15px}@media(max-width:760px){body{font-size:16px}.site{width:100%}header{padding:0 18px;gap:16px;height:58px}.brand{font-size:18px}.menu-toggle{display:block}.search-toggle{margin-left:auto}nav{display:none;position:absolute;top:58px;left:0;right:0;background:#202220;align-items:stretch;margin:0;padding:14px 22px;flex-direction:column;gap:0}header.menu-open nav{display:flex}.nav-group{flex-wrap:wrap}.nav-group>a{flex:1}.submenu{position:static;width:100%;box-shadow:none;margin-bottom:8px}.home-hero{padding:32px 24px 40px}.intro-grid{grid-template-columns:1fr;gap:28px;max-width:440px}.intro-grid>img{width:240px;height:210px;margin:auto}.intro-grid h1{font-size:36px;margin-bottom:24px}.intro-grid p{font-size:17px}h1{font-size:35px}.three,.two,.project-intro,.module-grid{grid-template-columns:1fr}.tiles{gap:32px}.home-work{padding:30px 24px}.tiles img,.tiles iframe{height:auto;aspect-ratio:1/1;object-fit:cover}.tiles iframe{aspect-ratio:16/9}.contact{font-size:18px;overflow-wrap:anywhere}.narrow{padding:32px 24px}.map{height:260px}summary{font-size:17px}.carousel>img{height:330px}.project-index{padding:32px 24px}.project-index .tiles img{height:auto;aspect-ratio:1.3}.project-intro{gap:28px}.project-intro h1{font-size:34px}.project-intro iframe{height:300px}.project-hero{padding:32px 24px}.module-grid{padding:32px 24px}.module-grid img{height:auto}.resume iframe{height:700px}.big-heading{padding:55px 20px}footer{font-size:11px}}

/* Layout polish */
body{background:#f4f5ee}.site{max-width:none;width:100%;margin:0}
.nav-group{gap:6px}.nav-group>button{display:inline-flex;align-items:center;justify-content:center;width:24px;height:28px;padding:0;font-size:0;line-height:1;flex-shrink:0}
.nav-group>button::before{content:'';width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.nav-group.open>button::before{transform:translateY(2px) rotate(225deg)}
.submenu{top:100%}
.home-hero{background-image:linear-gradient(90deg,rgba(12,22,18,.58),rgba(12,22,18,.78)),url('/assets/landscape.jpg');background-position:center 35%;background-repeat:no-repeat}
.shore{background-image:linear-gradient(rgba(20,32,26,.76),rgba(20,32,26,.76)),url('/assets/shore.jpg');background-position:center 60%;background-repeat:no-repeat}
.mountains{background-image:linear-gradient(rgba(20,32,26,.72),rgba(20,32,26,.72)),url('/assets/mountains.jpg');background-position:center 45%;background-repeat:no-repeat}
.module-grid{max-width:none}.module-grid+ .photo-heading,.project-hero+ .photo-heading{background-image:none;background-color:#34483a}
.project-intro{max-width:1120px;margin-inline:auto}.tiles{max-width:1120px;margin-inline:auto}
@media(min-width:1600px){header{padding-inline:max(30px,calc((100vw - 1480px)/2))}.module-grid{padding-inline:max(6%,calc((100vw - 1120px)/2))}}
@media(max-width:760px){.submenu{top:auto}.home-hero{background-position:40% center}.nav-group>button{width:32px;height:32px}}

/* Requested background and portrait refinements. */
.intro-grid>img{border-radius:16px}
.site:has(.home-hero){background-image:linear-gradient(90deg,rgba(12,22,18,.58),rgba(12,22,18,.78)),url('/assets/landscape.jpg');background-size:cover;background-position:center 35%;background-attachment:fixed;background-repeat:no-repeat;color:white}
.site:has(.home-hero) .home-hero,.site:has(.home-hero) .photo-heading,.site:has(.home-hero) .home-work,.site:has(.home-hero) footer{background:transparent}
.about-intro + .photo-heading{background-image:none;background-color:#c6ddea;color:var(--ink);text-align:left;padding:32px max(28px,calc((100% - 624px)/2))}
.about-intro + .photo-heading h3{color:#0b5394}
.about-intro + .photo-heading a{color:#205c79}
.big-heading{background-image:none;background-color:var(--green)}
.big-heading h1{color:#6b8297}
@media(max-width:760px){.site:has(.home-hero){background-attachment:scroll;background-position:40% top}.about-intro + .photo-heading{padding:32px 24px}}

/* Square geometry and muted, darker color bands. */
:root{--green:#bacbb3;--pink:#81465f;--ink:#202a23}
body,.site{background-color:#cbd0c5}
.intro-grid>img{border-radius:0}
.about-intro{background:#cbd0c5}
.about-intro + .photo-heading{background-color:#aec6d2}
.experience,.project-index,.project-hero,.resume,.big-heading{background-color:var(--green)}
.hobbies{background-color:#dddcb0}
.module-grid{background-color:#cbd0c5}
.project-intro h1,.big-heading h1{color:#435d6d}
.project-index{padding-block:40px 60px}
.project-index>h2,.project-index>.tiles{max-width:960px;margin-inline:auto}
.project-index>.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}
.project-index .tiles img{width:100%;height:auto;aspect-ratio:1;object-fit:cover}
.project-index figure{min-width:0}
.project-index figcaption{font-size:22px;line-height:1.4;margin-top:18px}
@media(max-width:760px){.project-index>.tiles{grid-template-columns:1fr;max-width:440px;gap:32px}.project-index>h2{max-width:440px}.project-index .tiles img{height:auto;aspect-ratio:1}}

/* One landscape across the portfolio, with translucent original color bands. */
:root{--green:#d9ead3;--pink:#f1bbd0;--ink:#f4f5ee}
body{background:#202b25;color:var(--ink)}
.site,.site:has(.home-hero){background-image:linear-gradient(90deg,rgba(12,22,18,.58),rgba(12,22,18,.78)),url('/assets/landscape.jpg');background-size:cover;background-position:center 35%;background-attachment:fixed;background-repeat:no-repeat;background-color:#202b25;color:var(--ink)}
main a{color:#cfe2f3}
.about-intro{background:transparent}
.about-intro + .photo-heading{background:rgba(198,221,234,.16);color:var(--ink)}
.about-intro + .photo-heading h3,.about-intro + .photo-heading a{color:#cfe2f3}
.experience,.project-index,.project-hero,.resume,.big-heading{background:rgba(217,234,211,.14)}
.hobbies{background:rgba(255,254,209,.16)}
.module-grid{background:rgba(207,226,243,.1)}
.module-grid + .photo-heading,.project-hero + .photo-heading{background:rgba(217,234,211,.2)}
.project-intro h1,.big-heading h1{color:#cfe2f3}
.project-index figcaption{color:var(--ink)}
.about-intro h2,summary,.hobbies h3,.project-index h2{color:var(--pink)}
summary{border-bottom-color:rgba(217,234,211,.4)}summary:after{color:#d9ead3}
.carousel-controls button{color:#d9ead3}
footer{background:rgba(12,22,18,.2);color:#e3e9de}
dialog{color:#212622}dialog a{color:#205c79}
@media(max-width:760px){.site,.site:has(.home-hero){background-attachment:scroll;background-position:40% top}}

/* Glass bands retain crisp square geometry and soften section seams. */
main>section{position:relative;border-top:1px solid rgba(255,255,255,.2);border-bottom:1px solid rgba(10,25,18,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),inset 0 18px 28px -24px rgba(255,255,255,.28),0 12px 24px -22px rgba(0,0,0,.5);background-clip:padding-box}
main>section:first-child{border-top:0}
main>section+section{margin-top:-1px}
.experience,.hobbies,.project-index,.project-hero,.resume,.big-heading,.module-grid,.about-intro + .photo-heading{backdrop-filter:blur(9px) saturate(125%);-webkit-backdrop-filter:blur(9px) saturate(125%);background-image:linear-gradient(135deg,rgba(255,255,255,.07),rgba(255,255,255,.015) 45%,rgba(15,30,22,.045));border-top-color:rgba(255,255,255,.25)}
.site:has(.home-hero) .photo-heading,.site:has(.home-hero) .home-work{backdrop-filter:blur(5px) saturate(115%);-webkit-backdrop-filter:blur(5px) saturate(115%);background:linear-gradient(135deg,rgba(255,255,255,.035),rgba(255,255,255,.008))}
header{background:rgba(22,29,24,.8);backdrop-filter:blur(15px) saturate(125%);-webkit-backdrop-filter:blur(15px) saturate(125%);border-bottom:1px solid rgba(255,255,255,.18)}
.submenu{background:rgba(28,39,31,.96);border:1px solid rgba(255,255,255,.2);box-shadow:0 12px 30px rgba(0,0,0,.25)}
@media(prefers-reduced-transparency:reduce){.experience,.hobbies,.project-index,.project-hero,.resume,.big-heading,.module-grid,.about-intro + .photo-heading{backdrop-filter:none;-webkit-backdrop-filter:none;background-color:rgba(38,53,43,.92)}header{background:#202220}}

/* Full-width introductory glass band; Home remains a continuous canvas. */
.about-intro{max-width:none;margin:0;padding:0;background-color:rgba(207,226,243,.12);background-image:linear-gradient(135deg,rgba(255,255,255,.07),rgba(255,255,255,.015) 45%,rgba(15,30,22,.045));backdrop-filter:blur(9px) saturate(125%);-webkit-backdrop-filter:blur(9px) saturate(125%)}
.about-intro>.narrow{padding-block:45px}
.map{height:auto;aspect-ratio:1;display:block}
.site:has(.home-hero) main>section{border:0;box-shadow:none;margin-top:0;backdrop-filter:none;-webkit-backdrop-filter:none;background:transparent}
@media(max-width:760px){.about-intro>.narrow{padding-block:32px}.map{height:auto;aspect-ratio:1}}
@media(prefers-reduced-transparency:reduce){.about-intro{backdrop-filter:none;-webkit-backdrop-filter:none;background-color:rgba(38,53,43,.92)}}

.site:has(.home-hero) main>section.home-work,.site:has(.home-hero) main>section.photo-heading{backdrop-filter:none;-webkit-backdrop-filter:none;background:transparent}

/* A single frost layer avoids adjacent blur surfaces repainting their seams. */
.site:not(:has(.home-hero)) main{backdrop-filter:blur(9px) saturate(125%);-webkit-backdrop-filter:blur(9px) saturate(125%)}
.site:not(:has(.home-hero)) main>section{border:0;box-shadow:none;margin-top:0;backdrop-filter:none;-webkit-backdrop-filter:none;background-image:none;background-clip:border-box}
.site:not(:has(.home-hero)) main>section+section{border-top:1px solid rgba(255,255,255,.18)}
@media(prefers-reduced-transparency:reduce){.site:not(:has(.home-hero)) main{backdrop-filter:none;-webkit-backdrop-filter:none}}
.project-index h2,.project-index figcaption,.project-index figcaption a{color:var(--blue)}
/* Navigation panes gently frost on hover and keyboard focus. */
header nav>a,header .nav-group,header .search-toggle,header .menu-toggle{transition:background-color .38s ease,box-shadow .38s ease;color:inherit;border-radius:0}
header nav>a{padding-inline:12px}header .nav-group{padding-inline:10px}header nav{gap:12px}
header nav>a:hover,header nav>a:focus-visible,header .nav-group:hover,header .nav-group:focus-within,header .search-toggle:hover,header .search-toggle:focus-visible,header .menu-toggle:hover,header .menu-toggle:focus-visible{background-color:rgba(220,237,231,.18);box-shadow:inset 0 0 0 1px rgba(235,249,244,.26),inset 0 10px 22px rgba(240,255,249,.08)}
header .nav-group>button{height:36px}
@media(max-width:760px){header nav{gap:4px}header nav>a{padding-inline:10px}}
@media(prefers-reduced-motion:reduce){header nav>a,header .nav-group,header .search-toggle,header .menu-toggle{transition:none}}
/* Frosted hover panes on linked project imagery. */
.tiles figure>a:has(>img){position:relative;isolation:isolate;opacity:1;transition:none}
.tiles figure>a:has(>img)::after{content:'';position:absolute;inset:0;pointer-events:none;background:rgba(220,237,231,0);backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);box-shadow:inset 0 0 0 1px rgba(235,249,244,0);transition:background-color .38s ease,backdrop-filter .38s ease,box-shadow .38s ease}
.tiles figure>a:has(>img):hover::after,.tiles figure>a:has(>img):focus-visible::after{background:rgba(220,237,231,.18);backdrop-filter:blur(3px) saturate(115%);-webkit-backdrop-filter:blur(3px) saturate(115%);box-shadow:inset 0 0 0 1px rgba(235,249,244,.4),inset 0 10px 22px rgba(240,255,249,.08)}
@media(prefers-reduced-motion:reduce){.tiles figure>a:has(>img)::after{transition:none}}
/* Compact, centered navigation panes. */
header nav>a,header .nav-group{height:38px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 12px}
header nav>.nav-group>a{display:flex;align-items:center;padding:0;line-height:1.2}
header .nav-group{gap:8px}header .nav-group>button{width:18px;height:24px;padding:0;display:flex;align-items:center;justify-content:center}
header .search-toggle,header .menu-toggle{width:38px;height:38px;display:flex;align-items:center;justify-content:center;padding:0}header .menu-toggle{display:none}
header .submenu{top:calc(100% + 8px)}
.map{max-width:460px;width:100%;height:auto;aspect-ratio:1;margin:28px auto 0;isolation:isolate}
/* Keep the interactive map outside any filtered ancestor. The same image is
   frosted on a fixed background layer instead of filtering live content. */
.site:not(:has(.home-hero)){position:relative;isolation:isolate;background-image:none}
.site:not(:has(.home-hero))::before{content:'';position:fixed;inset:-24px;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(12,22,18,.58),rgba(12,22,18,.78)),url('/assets/landscape.jpg') center 35%/cover no-repeat;filter:blur(9px) saturate(125%)}
.site:not(:has(.home-hero)) main{backdrop-filter:none;-webkit-backdrop-filter:none}
@media(max-width:760px){header .menu-toggle{display:flex}header nav>a,header .nav-group{justify-content:flex-start;height:auto;min-height:38px;padding:8px 10px}header .nav-group>a{flex:0 1 auto}header .submenu{top:auto}.map{max-width:340px}.site:not(:has(.home-hero))::before{background-position:40% top}}
