:root{--ivory:#fffdf3;--ivory-muted:#fffdf3c2;--display-serif:"Bodoni 72", "Bodoni MT", Didot, "Times New Roman", serif;--reveal-ease:cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:#0a1011}body{color:var(--ivory);font-family:var(--display-serif);text-rendering:geometricprecision;-webkit-font-smoothing:antialiased;background:#0a1011;margin:0}button,a{color:inherit;font:inherit}a{text-underline-offset:.2em}.portrait-page{min-height:100vh;overflow:hidden}.photo-canvas{aspect-ratio:3/4;isolation:isolate;background:#172228;width:100%;min-height:100svh;position:relative;overflow:hidden}.photo-canvas:after{z-index:0;pointer-events:none;content:"";background:linear-gradient(#0000,#19181514 38%,#19181552 100%);height:22%;position:absolute;bottom:0;left:0;right:0}.yosemite-photo{z-index:-3;object-fit:fill;filter:brightness(.72)saturate(.87)contrast(1.04);width:100%;height:100%;display:block;position:absolute;inset:0}.exposure-filter{z-index:-2;pointer-events:none;background:linear-gradient(#04090c1f 0%,#04090c0f 42%,#03080a33 100%),#050b0d1a;position:absolute;inset:0}.intro,.education{color:var(--ivory);text-shadow:0 2px 24px #00000047;margin:0;font-weight:400;position:absolute}.intro{z-index:1;letter-spacing:-.045em;flex-direction:column;gap:.6em;max-width:72%;font-size:clamp(2.35rem,5vw,6rem);line-height:.93;display:flex;top:4.8%;left:7%}.intro-line{display:block}.intro-greeting{font-size:.5em}.intro-name{white-space:nowrap;letter-spacing:-.055em;margin-top:0;font-size:1.518em}.education{z-index:1;letter-spacing:.01em;width:auto;font-size:clamp(1rem,2.4vw,2.8rem);line-height:1.08;top:15.6%;left:7%}.education-line{white-space:nowrap;margin:0}.rock-links{z-index:2;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(.45rem,1.4vw,1.5rem);width:80%;display:grid;position:absolute;top:28.5%;left:10%}.rock-link{cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);letter-spacing:.055em;text-align:center;min-height:clamp(2.35rem,4.6vw,5rem);transition:border-color .32s ease, background-color .32s ease, transform .32s var(--reveal-ease);background:#0d13143d;border:1px solid #fffdf3b3;border-radius:0;outline:0;place-items:center;padding:.65em .9em;font-size:clamp(.66rem,1.35vw,1.5rem);line-height:1.15;text-decoration:none;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #00000014,0 8px 32px #0000001f}.rock-link:before{content:"";transition:transform .38s var(--reveal-ease);background:#fffdf3ed;position:absolute;inset:0;transform:translateY(102%)}.rock-link span{z-index:1;transition:color .26s;position:relative}.rock-link:hover,.rock-link:focus-visible{border-color:var(--ivory);transform:translateY(-3px)}.rock-link:hover:before,.rock-link:focus-visible:before{transform:translateY(0)}.rock-link:hover span,.rock-link:focus-visible span{color:#172023}.rock-link:focus-visible{outline:2px solid var(--ivory);outline-offset:4px}.about-panel{z-index:2;width:30%;max-width:30rem;color:var(--ivory);text-shadow:0 2px 18px #00000094;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#11141238;border:1px solid #fffdf37a;padding:clamp(1rem,1.8vw,1.9rem);scroll-margin-top:4rem;position:absolute;top:64%;left:10%;transform:translateY(-50%);box-shadow:0 18px 55px #19140e21}.about-title{letter-spacing:.025em;margin:0 0 .7em;font-size:clamp(1.1rem,2.05vw,2.45rem);font-weight:400;line-height:1}.about-copy{letter-spacing:.002em;font-size:clamp(.82rem,1.42vw,1.68rem);line-height:1.34}.about-copy p{margin:0 0 .85em}.about-contact{letter-spacing:.035em;flex-wrap:wrap;gap:.45em 1em;padding-top:.15em;font-size:.76em;display:flex}.about-contact a{text-decoration-color:#fffdf37a;transition:text-decoration-color .22s}.about-contact a:hover,.about-contact a:focus-visible{-webkit-text-decoration-color:var(--ivory);text-decoration-color:var(--ivory)}.projects-surface{--seam-blend:clamp(10rem, 20vw, 22rem);z-index:1;width:100%;min-height:100svh;margin-top:calc(-1 * var(--seam-blend));isolation:isolate;background:0 0;scroll-margin-top:0;position:relative;overflow:hidden}.rock-field{z-index:-4;filter:brightness(.58)saturate(.78)contrast(1.06);-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend));-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend));mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend));background:linear-gradient(#080c0c33,#070a0a80),url(/rock-extension.png) bottom/cover no-repeat;position:absolute;inset:0;transform:scale(1.02)}.rock-extension{z-index:-3;object-fit:fill;filter:brightness(.6)saturate(.82)contrast(1.05);width:100%;height:auto;-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend), #000 calc(100% - var(--seam-blend)), transparent 100%);-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend), #000 calc(100% - var(--seam-blend)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend), #000 calc(100% - var(--seam-blend)), transparent 100%);display:block;position:absolute;top:0;left:0}.extension-filter{z-index:-2;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend));-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend));mask-image:linear-gradient(to bottom, transparent 0, #000 var(--seam-blend));background:radial-gradient(circle at 72% 38%,#0000 0 18%,#05090933 70%),linear-gradient(#04090c38 0%,#04090c24 15%,#03080a5c 100%),#050b0d29;position:absolute;inset:0}.projects-content{width:min(84%,74rem);padding:calc(var(--seam-blend) + clamp(5rem, 7vw, 7rem)) 0 clamp(4rem, 8vw, 8rem);margin:0 auto;position:relative}.projects-header{border-bottom:1px solid #fffdf375;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:clamp(3rem,6vw,6rem);padding-bottom:clamp(1rem,1.7vw,1.7rem);display:flex}.section-kicker{color:var(--ivory-muted);letter-spacing:.18em;text-transform:uppercase;order:2;margin:0 0 .2em;font-size:clamp(.66rem,.9vw,.9rem);line-height:1}.projects-title{color:var(--ivory);letter-spacing:-.055em;text-shadow:0 2px 24px #00000040;margin:0;font-size:clamp(1.6rem,4vw,4.5rem);font-weight:400;line-height:.92}.project-list{gap:clamp(4.5rem,8vw,8rem);display:grid}.project-feature{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);align-items:center;gap:clamp(2.25rem,5vw,5.5rem);display:grid}.project-feature--reverse{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)}.project-feature--reverse .project-media{order:2}.project-media{background:#13171647;border:1px solid #fffdf380;height:clamp(20rem,31vw,29rem);position:relative;overflow:hidden;box-shadow:0 20px 60px #14110d33}.project-media>img{object-fit:cover;width:100%;height:100%;display:block}.project-media--cooling img{object-fit:contain;object-position:center}.project-media--cooling{aspect-ratio:3/4;height:auto}.project-gallery{background:#fffdf375;gap:1px;display:grid}.project-gallery--launcher{aspect-ratio:2.04;grid-template-columns:.367fr .633fr;height:auto}.project-gallery--launcher .launcher-photo,.project-gallery--launcher .launcher-drawing{object-fit:contain;background:#f4f2ec}.project-gallery--elevator{grid-template-rows:63% 37%;grid-template-columns:repeat(2,minmax(0,1fr))}.project-gallery--elevator img{object-fit:cover}.project-gallery--elevator .elevator-cad{object-fit:cover;object-position:center 55%;grid-column:1/-1}.project-copy{text-shadow:0 2px 18px #12100d47;border-top:1px solid #fffdf380;padding-top:clamp(1rem,1.7vw,1.6rem)}.project-index{color:var(--ivory-muted);letter-spacing:.15em;text-transform:uppercase;margin:0 0 1.25em;font-size:clamp(.62rem,.78vw,.8rem);line-height:1}.project-copy h3{letter-spacing:-.038em;margin:0;font-size:clamp(1.65rem,3.1vw,3.5rem);font-weight:400;line-height:.98}.project-stat{color:var(--ivory-muted);letter-spacing:.075em;text-transform:uppercase;margin:1.15em 0 1.35em;font-size:clamp(.72rem,.96vw,1rem)}.project-copy>p:not(.project-index):not(.project-stat){margin:0 0 1em;font-size:clamp(.88rem,1.13vw,1.12rem);line-height:1.52}.computational-section{border-top:1px solid #fffdf380;padding-top:clamp(2rem,4vw,4rem)}.computational-heading{margin-bottom:clamp(1.5rem,2.5vw,2.5rem)}.computational-heading .project-index{margin:0}.computational-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2vw,2rem);display:grid}.computational-card{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#11141238;border:1px solid #fffdf37a;flex-direction:column;min-height:26rem;padding:clamp(1.4rem,2.4vw,2.6rem);display:flex;position:relative;box-shadow:0 18px 55px #19140e21}.computational-card h4{letter-spacing:-.03em;margin:0;font-size:clamp(1.35rem,2.25vw,2.5rem);font-weight:400;line-height:1}.card-subtitle{color:var(--ivory-muted);letter-spacing:.06em;margin:.75em 0 1.35em;font-size:clamp(.72rem,.92vw,.92rem)}.computational-card>p:not(.card-subtitle){margin:0;font-size:clamp(.86rem,1.04vw,1.02rem);line-height:1.52}.project-link{align-self:flex-start;margin-top:1.5em;font-size:clamp(.78rem,.95vw,.95rem);text-decoration-color:#fffdf37a}.project-link:hover,.project-link:focus-visible{-webkit-text-decoration-color:var(--ivory);text-decoration-color:var(--ivory)}.portfolio-footer{color:var(--ivory-muted);letter-spacing:.08em;border-top:1px solid #fffdf37a;justify-content:space-between;gap:2rem;margin-top:clamp(4.5rem,8vw,8rem);padding-top:1.3rem;font-size:clamp(.7rem,.9vw,.9rem);display:flex}.reveal{opacity:0;filter:blur(7px);transition:opacity 1s var(--reveal-ease) var(--reveal-delay,0s), filter 1.1s var(--reveal-ease) var(--reveal-delay,0s), transform 1.1s var(--reveal-ease) var(--reveal-delay,0s);will-change:opacity, filter, transform;transform:translateY(1.4rem)}.reveal.is-visible{opacity:1;filter:blur();transform:translateY(0)}@media (width<=700px){.photo-canvas{aspect-ratio:3/4;min-height:auto}.intro{font-size:clamp(1.72rem,7.8vw,2.7rem);top:3.8%;left:6%}.education{width:auto;font-size:clamp(.78rem,3.3vw,1rem);line-height:1.06;top:20%;left:6%}.rock-links{gap:.36rem;width:88%;top:28.5%;left:6%}.rock-link{letter-spacing:.025em;min-height:2.15rem;padding:.52em .35em;font-size:clamp(.55rem,2.45vw,.78rem)}.about-panel{width:39%;padding:.7rem;top:64%;left:7.25%}.about-title{margin-bottom:.55em;font-size:clamp(.8rem,3.65vw,1.1rem)}.about-copy{font-size:clamp(.54rem,2.52vw,.76rem);line-height:1.26}.about-copy p{margin-bottom:.72em}.about-contact{gap:.25em;font-size:.76em;display:grid}.projects-content{width:88%;padding-top:calc(var(--seam-blend) + 3rem)}.projects-header{align-items:flex-end;margin-bottom:3.25rem}.section-kicker{font-size:.52rem}.projects-title{font-size:clamp(1.125rem,5vw,2rem)}.project-list{gap:4.75rem}.project-feature,.project-feature--reverse{grid-template-columns:minmax(0,1fr);gap:1.5rem}.project-feature--reverse .project-media{order:0}.project-media{height:78vw;max-height:30rem}.project-media--cooling,.project-gallery--launcher{height:auto;max-height:none}.project-copy{padding-top:1.1rem}.project-copy h3{font-size:clamp(1.7rem,8.5vw,2.8rem)}.project-copy>p:not(.project-index):not(.project-stat){font-size:.9rem}.computational-grid{grid-template-columns:minmax(0,1fr)}.computational-heading{margin-bottom:1.5rem}.computational-card{min-height:23rem;padding:1.5rem}.computational-card>p:not(.card-subtitle){font-size:.88rem}.portfolio-footer{flex-direction:column;gap:.5rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.reveal.is-visible,.rock-link,.rock-link:before{opacity:1;filter:none;transition:none;transform:none}}
