:root{color-scheme:dark;--bg:#080808;--fg:#f4f2ee;--muted:#999;--line:#ffffff24;--out:220ms;--in:260ms;font-family:'Courier New',monospace;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg)}a{color:inherit;text-decoration:none}button{color:inherit;background:none;border:0;font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:1px solid currentColor;outline-offset:6px}button:disabled{opacity:.3;cursor:default}button:hover,a:hover{opacity:.65}button,a{transition:opacity 180ms}::selection{background:#bbb;color:#080808}.header{position:fixed;top:0;left:0;width:100%;z-index:30;mix-blend-mode:difference;color:white}.desktop-nav{height:66px;max-width:850px;margin:auto;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;text-align:center;text-transform:uppercase;font-size:.875rem;letter-spacing:.06em}.desktop-nav a:nth-child(3){grid-column:4}.brand-mark{position:absolute;left:50%;top:12px;transform:translateX(-50%);width:44px;height:44px;display:grid;place-items:center;font-size:32px}.menu-toggle{display:none}.edge-mark{position:fixed;z-index:25;pointer-events:none;font-size:27px;color:white;mix-blend-mode:difference;line-height:1}.left{left:18px;top:50%}.right{right:18px;top:50%}.bottom{bottom:18px;left:50%;transform:translateX(-50%)}.footer{position:fixed;bottom:0;left:0;width:100%;display:flex;justify-content:space-between;padding:24px 30px;z-index:25;color:white;mix-blend-mode:difference;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase}.skip{position:fixed;top:12px;left:12px;transform:translateY(-200%);z-index:100;background:#000;padding:15px}.skip:focus{transform:none}main{min-height:100svh}.gallery{height:100dvh;display:flex;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain}.gallery::-webkit-scrollbar{display:none}.panel{position:relative;flex:0 0 82vw;height:100%;overflow:hidden;border-right:1px solid var(--line)}.panel:nth-child(2){flex-basis:65vw}.panel:nth-child(3){flex-basis:95vw}.panel:last-child{flex-basis:80vw}.panel-open{display:block;width:100%;height:100%;text-align:left;padding:0;opacity:1!important}.panel-copy{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:9vw;pointer-events:none}.eyebrow{text-transform:uppercase;font-size:.75rem;letter-spacing:.16em;line-height:1.7}.panel h1,.panel h2{font-family:Georgia,'Times New Roman',serif;font-weight:400;font-size:clamp(64px,9vw,160px);line-height:.93;letter-spacing:-.065em;margin:30px 0;max-width:8ch}.panel h1{font-style:italic}.panel-meta{position:absolute;bottom:90px;left:9vw;right:6vw;display:flex;justify-content:space-between;gap:24px;text-transform:uppercase;font-size:.75rem;letter-spacing:.12em}.panel-id{position:absolute;top:105px;left:9vw;font-size:.75rem}.ink{background:#111;color:#eee}.silver{background:#a9aaa6;color:#161616}.claret{background:#38131f;color:#f6ddd9}.paper{background:#e4e1d9;color:#222}.media{width:100%;height:100%;object-fit:cover;display:block}.has-media .panel-copy{color:white;text-shadow:0 2px 20px #0008}.has-media .panel-copy h1,.has-media .panel-copy h2{font-size:clamp(56px,7vw,110px)}.has-media .panel-meta,.has-media .panel-id{color:white;text-shadow:0 2px 10px #000}.video-toggle{position:absolute;bottom:130px;right:35px;background:#0009;padding:12px;font-size:.875rem}.page{padding:130px 8vw 120px;min-height:100svh}.page-heading{font:400 clamp(60px,8vw,120px)/1 Georgia,serif;letter-spacing:-.05em;margin:15px 0 60px}.work-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px 24px}.work-card{padding:0;text-align:left}.work-art{aspect-ratio:3/4;display:grid;place-items:center;font-size:70px;overflow:hidden}.work-card h2{font-size:.875rem;font-weight:normal;line-height:1.5;text-transform:uppercase;margin:18px 0 8px}.work-card p{font-size:.75rem;color:var(--muted);line-height:1.6}.prose{max-width:720px}.prose p{font-size:1.125rem;line-height:1.8}.contact-link{display:inline-block;font-size:clamp(18px,3vw,40px);border-bottom:1px solid currentColor;overflow-wrap:anywhere}.quiet{color:var(--muted)}.veil{position:fixed;inset:0;z-index:28;background:#080808;opacity:0;pointer-events:none;transition:opacity var(--in) ease-in-out}.veil.visible{opacity:1;transition-duration:var(--out)}dialog{color:var(--fg);background:#080808;border:0;max-width:none;max-height:none;padding:0}dialog::backdrop{background:#0007}#menu{position:fixed;inset:0 0 0 auto;width:min(92vw,520px);height:100dvh;margin:0;opacity:0;transform:translateX(100%);transition:transform 300ms ease,opacity 300ms}#menu.open{opacity:1;transform:translateX(0)}.menu-close,.detail-close{position:absolute;top:14px;right:18px;min-height:44px;text-transform:uppercase;font-size:.875rem;z-index:2}#menu nav{height:85%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:36px;text-transform:uppercase}#menu nav a{padding:10px}.menu-signature{position:absolute;bottom:45px;width:100%;text-align:center;text-transform:uppercase;font-size:.75rem}#detail{position:fixed;inset:0;width:100vw;height:100dvh;margin:0;opacity:0;transition:opacity 260ms}#detail.open{opacity:1}.detail-content{height:100%;display:grid;place-items:center}.detail-stage{width:100%;height:100%;position:relative;padding:100px 10vw;display:flex;flex-direction:column;justify-content:center}.detail-stage h2{font:400 clamp(50px,9vw,140px)/1 Georgia,serif;letter-spacing:-.05em;max-width:10ch;margin:25px 0}.detail-stage .media{position:absolute;inset:0;object-fit:contain}.detail-stage.has-media h2,.detail-stage.has-media p{position:relative;z-index:1;text-shadow:0 2px 15px #000}.detail-controls{position:absolute;bottom:22px;left:0;width:100%;display:flex;justify-content:center;align-items:center;gap:35px;font-size:.875rem}.detail-controls button{padding:12px;background:#080808b3}.detail-close{background:#080808b3;padding:10px}.noscript{padding:100px 30px}body.modal-open{overflow:hidden}
@media(max-width:767px){.desktop-nav{display:none}.menu-toggle{display:block;position:absolute;right:10px;top:10px;padding:14px;text-transform:uppercase;font-size:.875rem}.brand-mark{top:10px}.left{left:12px}.right{right:12px}.edge-mark{font-size:22px}.footer{font-size:.625rem;padding:20px 16px}.gallery{height:auto;display:block;overflow:visible}.panel,.panel:nth-child(n){height:90svh;width:100%;border-right:0;border-bottom:1px solid var(--line)}.panel-copy{padding:12vw}.panel h1,.panel h2{font-size:clamp(64px,18vw,110px)}.panel-meta{left:12vw;bottom:70px;right:12vw;font-size:.625rem}.panel-id{left:12vw;top:95px}.page{padding:110px 10vw 100px}.page-heading{margin-bottom:40px}.work-grid{grid-template-columns:repeat(2,1fr);gap:30px 16px}.work-art{font-size:50px}.work-card h2{font-size:.8rem}.detail-controls{gap:18px}.prose p{font-size:1rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
/* Research content imported from the original portfolio. */
.desktop-nav{max-width:1140px;grid-template-columns:repeat(7,1fr)}.desktop-nav a:nth-child(3){grid-column:3}.desktop-nav a:nth-child(4){grid-column:5}.reading{max-width:1300px;margin:auto}.reading .page-heading{font-size:clamp(56px,7vw,104px);max-width:14ch}.about-intro{max-width:800px}.reading p{font-size:1rem;line-height:1.8}.reading .lead{font-size:1.2rem;max-width:740px}.reading .eyebrow{font-size:.75rem}.section-label{font-size:.875rem;text-transform:uppercase;letter-spacing:.12em;font-weight:400;margin:72px 0 28px;padding-bottom:18px;border-bottom:1px solid var(--line)}.work-grid+.section-label{margin-top:80px}.work-art{position:relative}.project-number{position:absolute;bottom:18px;left:20px;font-size:.875rem}.work-card h3{font-size:.875rem;font-weight:400;line-height:1.5;text-transform:uppercase;margin:18px 0 8px}.work-card p{font-size:.875rem}.timeline article,.publication-list article{padding:28px 0;border-bottom:1px solid var(--line)}.timeline h3,.skill h3{font-size:1.15rem;font-weight:400;line-height:1.5;margin:14px 0 6px}.timeline p{max-width:830px;margin:8px 0}.publication-list h3{font:400 clamp(21px,2.1vw,30px)/1.35 Georgia,serif;max-width:950px;margin:16px 0}.publication-list p{font-size:.875rem}.skill{max-width:800px;margin:30px 0}.link-row{display:flex;flex-wrap:wrap;gap:20px 32px;margin:32px 0}.link-row a,.text-link{font-size:.875rem;border-bottom:1px solid currentColor;padding:8px 0}.detail-content{display:block;overflow-y:auto;overscroll-behavior:contain}.detail-stage{height:auto;min-height:100%;justify-content:flex-start;padding:100px 10vw 140px}.detail-stage h2{font-size:clamp(44px,6vw,88px);max-width:18ch;overflow-wrap:anywhere}.detail-text{position:relative;width:100%;max-width:1000px}.detail-body{max-width:780px;font-size:1rem;line-height:1.8}.detail-body .link-row{margin-bottom:0}.detail-controls{bottom:0;background:#080808;color:#f4f2ee;padding:10px 0}.project-status{border-top:1px solid currentColor;padding-top:22px;margin-top:28px}.detail-stage.has-media .detail-text{color:white;text-shadow:0 2px 15px #000}.contact-link{margin-top:25px}
@media(max-width:767px){#menu nav{gap:12px}.section-label{margin-top:48px}.detail-stage{padding:85px 9vw 120px}.detail-stage h2{font-size:44px}.reading .page-heading{font-size:clamp(52px,14vw,78px)}.work-card h3{font-size:.8rem}.work-card p{font-size:.8rem}.link-row{gap:18px}.desktop-nav{display:none}}
.detail-close{color:#f4f2ee}
/* Academic imagery and a distinct space for creative work. */
.has-media .panel-copy{justify-content:flex-end;padding-bottom:155px;background:linear-gradient(transparent 45%,#0009)}.has-media .panel-copy h1,.has-media .panel-copy h2{font-size:clamp(28px,3.2vw,48px);line-height:1.08;letter-spacing:-.035em;margin:14px 0;max-width:22ch}.has-media .panel-id{z-index:1}.work-grid{grid-template-columns:repeat(3,1fr)}.work-art{aspect-ratio:4/3;background:#151515}.work-art .media{object-fit:contain}.project-number{background:#080808cc;color:#fff;padding:6px 9px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 24px;margin:50px 0 80px}.photo-card{padding:0;text-align:left;align-self:start}.photo-card .media{height:auto;max-height:680px;object-fit:contain}.photo-card:first-child{grid-column:1/-1}.photo-card:first-child .media{max-height:none}.photo-caption{display:flex;flex-direction:column;gap:8px;margin-top:18px;font-size:.875rem;line-height:1.5}.photo-caption strong{font-weight:400;text-transform:uppercase}.photo-caption>span{color:#aaa}.academic-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 40px}.academic-projects button{text-align:left;padding:28px 0;border-bottom:1px solid var(--line)}.academic-projects h3{font:400 28px/1.2 Georgia,serif;margin:16px 0}.academic-projects p{font-size:.875rem}.creative-page{min-height:100svh;display:flex;flex-direction:column;justify-content:center}.creative-page .page-heading{font-style:italic;font-size:clamp(80px,14vw,180px);margin:30px 0}.creative-intro{max-width:600px}.creative-intro p{color:#aaa}.scholar-stats{display:flex;gap:60px;margin:45px 0 20px}.scholar-stats span{display:flex;flex-direction:column;gap:10px;font-size:.875rem}.scholar-stats strong{font:400 48px/1 Georgia,serif}.reading .stats-date{font-size:.75rem;color:#aaa}.detail-stage.has-media{background:#080808;color:#f4f2ee}.detail-stage.has-media .detail-text{color:inherit;text-shadow:none}.detail-stage.has-media h2,.detail-stage.has-media p{text-shadow:none}.detail-figure{margin:0 0 40px;width:100%;max-width:1100px}.detail-stage .detail-figure .media{position:static;width:100%;height:auto;max-height:70vh;object-fit:contain}.detail-figure figcaption{font-size:.75rem;line-height:1.6;color:#aaa;margin-top:15px}.detail-stage.has-media .detail-text{max-width:1000px}
@media(max-width:767px){.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-grid{grid-template-columns:1fr;gap:40px}.photo-card:first-child{grid-column:auto}.academic-projects{grid-template-columns:1fr}.has-media .panel-copy{padding-bottom:125px}.has-media .panel-copy h1,.has-media .panel-copy h2{font-size:clamp(28px,7vw,36px)}.scholar-stats{gap:35px}.scholar-stats strong{font-size:40px}.detail-stage .detail-figure .media{max-height:none}}
/* Keep the supplied metallic logo outside the navigation's difference blend. */
.brand-mark{position:fixed;z-index:31;top:6px;width:58px;height:58px;mix-blend-mode:normal}
.brand-mark img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 1px 3px #0008)}
@media(max-width:767px){.brand-mark{top:8px;width:50px;height:50px}}
/* A subtle veil lets homepage text lead; interaction reveals the photograph. */
.gallery .has-media .panel-open::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: #000;
  opacity: .22;
  pointer-events: none;
  transition: opacity 350ms ease;
}
.gallery .has-media .panel-copy,
.gallery .has-media .panel-id,
.gallery .has-media .panel-meta { z-index: 2; }
@media (hover: hover) and (pointer: fine) {
  .gallery .has-media .panel-open:hover::before { opacity: 0; }
}
.gallery .has-media .panel-open:focus-visible::before { opacity: 0; }
/* Preserve the full composition of portraits and portfolio spreads. */
.creative-page{display:block}
.creative-page .page-heading{font-size:clamp(70px,10vw,130px);margin:20px 0 24px}
.creative-page .photo-grid{gap:52px 28px;align-items:start}
.creative-page .photo-card:first-child{grid-column:auto}
.creative-page .photo-card .media{max-height:none;height:auto;object-fit:contain}
.creative-page .photo-wide{grid-column:1/-1}
@media(max-width:767px){.creative-page .photo-grid{gap:36px}.creative-page .photo-wide{grid-column:auto}}

/* Quiet captions keep the homepage photography in focus. */
.gallery .panel .panel-copy{inset:auto 0 68px;padding:0 5vw;justify-content:flex-end;background:none}
.gallery .panel .panel-copy h1,.gallery .panel .panel-copy h2{font-family:inherit;font-size:12px;font-weight:400;font-style:normal;line-height:1.5;letter-spacing:.1em;text-transform:uppercase;max-width:none;margin:0}
.gallery .panel-copy .eyebrow,.gallery .panel-meta{display:none}
@media(max-width:767px){.gallery .panel .panel-copy{bottom:64px;padding:0 8vw}.gallery .panel .panel-copy h1,.gallery .panel .panel-copy h2{font-size:11px}}

/* Botanical edge ornaments echo the rose above. */
.edge-mark{width:38px;height:52px}
.edge-mark svg{display:block;width:100%;height:100%;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.edge-mark .leaf-vein{stroke-width:.8;opacity:.75}
.edge-mark.left{left:14px;transform:translateY(-50%)}
.edge-mark.right{right:14px;transform:translateY(-50%) scaleX(-1)}
.edge-mark.bottom{width:27px;height:48px;bottom:9px}
@media(max-width:767px){.edge-mark{width:26px;height:38px}.edge-mark.left{left:8px}.edge-mark.right{right:8px}.edge-mark.bottom{width:22px;height:38px;bottom:10px}}

.edge-mark.bottom{width:80px;height:48px;bottom:7px}
.edge-mark.bottom img{display:block;width:100%;height:100%;object-fit:contain}
@media(max-width:767px){.edge-mark.bottom{width:64px;height:38px;bottom:9px}}

/* Four links on each side leave room for the central rose. */
.desktop-nav{max-width:1440px;padding:0 16px;grid-template-columns:repeat(4,minmax(0,1fr)) 64px repeat(4,minmax(0,1fr));font-size:clamp(9px,1.05vw,13px);letter-spacing:.04em}
.desktop-nav a:nth-child(4){grid-column:auto}
.desktop-nav a:nth-child(5){grid-column:6}
#menu nav{gap:10px}

/* The upper tip of the cross is the click point. */
@media (hover:hover) and (pointer:fine){
  a,button:not(:disabled),[role="button"]{cursor:url("assets/branding/gothic-cross-cursor-shadow.svg") 28 6,url("assets/branding/gothic-cross-cursor.png") 24 2,pointer}
}
