:root{--bg:#0c0d0e;--panel:#131517;--text:#edece7;--muted:#a8aaa9;--line:#333638;--accent:#d8b992;color-scheme:dark;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button{font:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}p{color:var(--muted);line-height:1.7}img{display:block;max-width:100%;height:auto}h1,h2,h3,p,figure{margin-top:0}h1,h2{font-weight:400;letter-spacing:-.055em;line-height:1.04}h1{font-size:clamp(48px,6.9vw,110px)}h2{font-size:clamp(36px,4.2vw,65px)}h3{font-weight:400;letter-spacing:-.03em;font-size:28px}em{font-family:Georgia,'Times New Roman',serif;font-weight:400;color:var(--accent)}.skip{position:fixed;top:-90px;left:20px;background:var(--text);color:var(--bg);padding:16px;z-index:99}.skip:focus{top:10px}.header{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:94px;padding:20px 4.5%;border-bottom:1px solid var(--line);background:var(--bg)}.brand{display:flex;align-items:center;gap:18px;font:32px Georgia,serif}.brand span{font:12px/1.6 Arial,sans-serif;letter-spacing:.12em}.brand small{font-size:9px;color:var(--muted);letter-spacing:.07em}nav{display:flex;gap:30px;font-size:13px}nav a{padding:10px 0}.eyebrow,.edition,.index,.hero-bottom,.source,footer{font:10px/1.6 'Courier New',monospace;letter-spacing:.12em}.accent{color:var(--accent)}.hero{position:relative;isolation:isolate;min-height:720px;height:calc(100svh - 94px);max-height:1000px;padding:36px 6% 30px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.hero-background{position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,#0c0d0e 0%,rgba(12,13,14,.88) 32%,rgba(12,13,14,.13) 74%),linear-gradient(0deg,#0c0d0e,transparent 25%,transparent 80%,rgba(12,13,14,.3)),url('assets/mh-02.webp') 80% center/cover no-repeat;opacity:.9}.hero-top{display:flex;justify-content:space-between;color:var(--muted)}.hero-copy{max-width:880px;padding:64px 0 40px}.hero-copy h1{margin:24px 0 28px}.intro{max-width:430px;font-size:15px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:42px;background:var(--text);color:#111;padding:17px 23px;font-size:13px;margin-top:18px;border:1px solid var(--text);transition:background .2s,color .2s}.button:hover{background:var(--accent);color:#111;border-color:var(--accent)}.hero-bottom{display:flex;align-items:end;gap:40px;border-top:1px solid #5558;padding-top:24px}.hero-bottom p{margin:0;color:var(--text)}.hero-bottom p span{color:var(--muted);letter-spacing:0}.hero-bottom a{margin-bottom:3px}.vertical-note{margin-left:auto;color:var(--muted)}.section{padding:110px 6%;border-top:1px solid var(--line)}.section-title{display:flex;justify-content:space-between;align-items:end;gap:50px;margin-bottom:48px}.section-title h2{margin-bottom:0}.section-title>p{font-size:13px;max-width:320px;margin-bottom:4px}.project-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:68px 36px}.project-card:first-child{grid-column:1/-1}.image-link{display:block;position:relative;overflow:hidden;background:#17191b}.image-link img{width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .65s ease,filter .65s ease}.project-card:first-child .image-link img{aspect-ratio:2.25;object-position:50% 45%}.image-link:hover img{transform:scale(1.025);filter:brightness(1.12)}.image-action{position:absolute;bottom:22px;right:22px;padding:12px 16px;background:#0c0d0ee8;font-size:12px;border:1px solid #6b6b6b}.card-heading{display:flex;gap:22px;margin-top:22px}.index{color:var(--accent);border-top:1px solid var(--accent);padding-top:5px}.card-heading .eyebrow{color:var(--muted);margin-bottom:5px}.card-heading h3{margin-bottom:8px}.card-heading p:last-child{font-size:13px;margin:0}.pending{margin-top:65px;padding-top:28px;border-top:1px solid var(--line)}.pending>a{display:flex;justify-content:space-between;padding:22px 0;border-bottom:1px solid var(--line);font-family:Georgia,serif;font-size:25px}.pending small{font:11px Arial,sans-serif;color:var(--muted);align-self:center}.process{background:#101214}.stage-buttons{display:flex;border-bottom:1px solid var(--line)}.stage-buttons button{flex:1;text-align:left;padding:22px;background:transparent;color:var(--muted);border:0;border-top:1px solid var(--line);font-size:15px;min-height:65px}.stage-buttons button span{font:11px 'Courier New';margin-right:25px}.stage-buttons button[aria-pressed=true]{color:var(--text);border-top-color:var(--accent);background:#1b1e20}.stage-body{display:grid;grid-template-columns:1.25fr 1fr;gap:45px;padding-top:32px;align-items:center}.stage-body figure{margin:0}.stage-body img{width:100%;height:410px;object-fit:contain;background:#090a0b}.stage-body figcaption,.gallery figcaption{font-size:10px;color:var(--muted);padding-top:12px;line-height:1.5}.stage-copy h3{font:32px/1.2 Georgia,serif;letter-spacing:-.02em}.stage-copy dt{font-size:11px;color:var(--accent);margin-top:20px}.stage-copy dd{margin:7px 0 0;color:var(--muted);font-size:14px;line-height:1.6}.note{font-size:12px;border-left:1px solid var(--line);padding-left:14px;line-height:1.6;margin-top:22px}.text-link{display:inline-block;border-bottom:1px solid var(--line);padding:10px 0;font-size:13px}.about{display:grid;grid-template-columns:1fr 1fr;gap:80px}.about-copy>img{width:110px;height:140px;object-fit:cover;float:right;margin:0 0 24px 28px;filter:grayscale(1)}.about-copy{font-size:15px}.tag-row{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px;clear:both}.tag-row li{font-size:10px;padding:8px 12px;border:1px solid var(--line);color:var(--muted)}.contact{background:radial-gradient(ellipse at 90% 100%,#29241e,transparent 60%)}.contact h2{font-size:clamp(52px,7vw,100px);margin-bottom:24px}.contact>p:not(.eyebrow){font-size:13px}footer{display:flex;justify-content:space-between;gap:25px;padding:30px 6%;border-top:1px solid var(--line);color:var(--muted);font-size:9px}.case{padding:45px 6% 90px;max-width:1600px;margin:auto}.case>.eyebrow{margin-top:70px}.case h1{max-width:1100px;margin-bottom:30px}.case-intro{font:24px/1.5 Georgia,serif;max-width:700px}.case-cover{width:100%;max-height:650px;object-fit:contain;background:#08090a;margin-top:50px}.case-summary{display:grid;grid-template-columns:1fr 1.6fr;gap:60px;border-top:1px solid var(--line)}.case section{padding-top:65px;margin-top:65px}.case-summary h2,.case section>h2{font-size:40px}.case-summary p{max-width:750px;font-size:16px}.case .source{margin:65px 0 20px;color:var(--muted);letter-spacing:0}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.gallery-grid figure{margin:0}.gallery-grid img{width:100%;height:250px;object-fit:contain;background:#08090a}.pipeline ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.pipeline li{padding:25px;border:1px solid var(--line)}.pipeline li span{font:11px 'Courier New';color:var(--accent)}.pipeline li h3{margin-top:25px}.case video{display:block;width:100%;max-height:720px;background:black}.stage-copy.changing{animation:enter .35s ease-out}@keyframes enter{from{opacity:.35;transform:translateY(8px)}to{opacity:1;transform:none}}@media(min-width:901px){.hero-copy{animation:enter .8s ease-out}}@media(max-width:900px){.header{padding:20px 6%;flex-wrap:wrap}.brand small{font-size:8px}nav{gap:24px}.hero{min-height:660px;height:auto}.hero-copy{padding:80px 0}.hero-background{background-position:65% center}.edition{display:none}.section{padding:75px 6%}.stage-body{gap:25px;grid-template-columns:1fr}.stage-body img{height:360px}.about{gap:35px}.hero-bottom{gap:20px}.vertical-note{display:none}.gallery-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.header{gap:16px}.brand{font-size:28px}.header nav{width:100%;justify-content:space-between;font-size:12px;gap:10px}.hero{min-height:650px;padding-top:24px}.hero-copy{padding:60px 0 70px}.hero h1{font-size:clamp(44px,10.8vw,64px)}.hero-background{background-image:linear-gradient(90deg,#0c0d0ee8,#0c0d0e77),linear-gradient(0deg,#0c0d0e,transparent),url('assets/mh-02.webp')}.hero-bottom{align-items:start;flex-direction:column}.section-title{display:block}.section-title>p{margin-top:25px}.project-grid{display:block}.project-card{margin-bottom:44px}.project-card:first-child .image-link img{aspect-ratio:1.3}.image-link img{aspect-ratio:1.3}.card-heading h3{font-size:25px}.pending>a{font-size:20px;gap:20px}.pending small{max-width:90px;line-height:1.5}.stage-buttons button{padding:15px 8px;font-size:12px}.stage-buttons button span{display:block;margin-bottom:8px}.stage-body img{height:280px}.about{display:block}.about-copy{margin-top:35px}footer{flex-direction:column;gap:16px}.case-summary{display:block}.case h1{font-size:48px;overflow-wrap:anywhere}.case .stage-copy h3{font-size:28px}.gallery-grid{grid-template-columns:1fr}.pipeline ol{grid-template-columns:1fr}.case section{margin-top:40px;padding-top:40px}.case-intro{font-size:21px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
/* Review 1: derive the interface from Jason's cold, repeated architectural framework. */
:root{--bg:#090b0c;--panel:#111518;--text:#e5e9e8;--muted:#a5afb2;--line:#303a3e;--accent:#becdd2}
em{color:#c1ced3}
.hero{background:#090b0c}
.hero-background{background-image:linear-gradient(90deg,#090b0c 0%,rgba(9,11,12,.92) 27%,rgba(9,11,12,.15) 77%),linear-gradient(0deg,#090b0c,transparent 25%,transparent 80%,rgba(9,11,12,.3)),url('assets/mh-02.webp')}
.hero-copy>.eyebrow{letter-spacing:.22em}
.hero-copy{border-left:1px solid #a4bbc133;padding-left:26px}
.hero-copy h1{letter-spacing:-.06em}
.contact{background:linear-gradient(120deg,#090b0c,#151d20)}
/* Review 2: readable metadata and practical touch targets. */
.eyebrow,.edition,.index{font-size:11px}
nav a{min-height:44px;display:inline-flex;align-items:center}
.pending>a,.text-link{min-height:44px}
.stage-buttons button{min-height:72px}
.stage-buttons button[aria-pressed=true]{box-shadow:inset 0 -2px #becdd2}
.image-action{background:#090b0cf2}
@media(max-width:600px){.hero-copy{padding-left:16px}.hero h1{font-size:clamp(40px,10.4vw,62px)}.hero-background{background-image:linear-gradient(90deg,#090b0cee,#090b0c66),linear-gradient(0deg,#090b0c,transparent),url('assets/mh-02.webp')}.stage-buttons button{font-size:13px}}
/* Public project pages share the quiet, spacious opening typography. */
body.portfolio-detail{font-family:'Courier New',monospace;letter-spacing:.045em;background:#080b0d;color:#f3f1eb;scrollbar-width:none}
html:has(body.portfolio-detail){scrollbar-width:none}
body.portfolio-detail::-webkit-scrollbar,html:has(body.portfolio-detail)::-webkit-scrollbar{display:none}
.portfolio-detail .case{width:min(1120px,88%);margin:0 auto;padding:70px 0 90px}
.portfolio-detail .case h1,.portfolio-detail .case h2,.portfolio-detail .case h3{font-family:inherit;font-weight:400;letter-spacing:.045em;line-height:1.35}
.portfolio-detail .case h1{font-size:clamp(30px,4.3vw,64px);text-align:center;margin:36px 0 24px;overflow-wrap:normal}
.portfolio-detail .case h2{font-size:clamp(23px,3vw,38px)}
.portfolio-detail .case em{font-family:inherit;font-style:normal;letter-spacing:inherit}
.portfolio-detail .case-intro{text-align:center;font-size:clamp(15px,1.6vw,20px);line-height:1.9;max-width:800px;margin:0 auto 56px}
.portfolio-detail p,.portfolio-detail figcaption{line-height:1.9;letter-spacing:.04em}
.portfolio-detail .eyebrow{text-align:center;font-family:inherit;letter-spacing:.15em;margin-top:36px}
.portfolio-detail .case section{margin-top:64px;padding-top:40px}
.portfolio-detail .gallery-grid{gap:36px}
.portfolio-detail .text-link,.portfolio-detail .button{font-family:inherit;font-size:12px;letter-spacing:.1em;background:transparent;color:#d0d8db;border:0;padding:12px 0}
.portfolio-detail .guest-chat{margin-left:auto;margin-right:auto}
.portfolio-detail .guest-chat textarea,.portfolio-detail .guest-chat button,.portfolio-detail .cathy-presence button{font-family:inherit;letter-spacing:.04em}
@media(max-width:600px){.portfolio-detail .case{padding-top:32px}.portfolio-detail .case-summary{display:block}.portfolio-detail .gallery-grid{gap:28px}.portfolio-detail .case section{margin-top:40px;padding-top:28px}}
/* Strong text contrast and readable captions across all four projects. */
body.portfolio-detail{--muted:#d4dde0;--text:#f4f6f7}
.portfolio-detail p,.portfolio-detail figcaption,.portfolio-detail .note,.portfolio-detail .guest-status{color:#dce5e8}
.portfolio-detail .case h1,.portfolio-detail .case h2,.portfolio-detail .case h3{color:#fff}
.portfolio-detail .case-summary p{font-size:clamp(16px,1.6vw,19px);line-height:1.9}
.portfolio-detail figcaption{font-size:14px;margin-top:14px}
.portfolio-detail .eyebrow,.portfolio-detail .text-link,.portfolio-detail .button{color:#dae5e9;font-size:13px}
.portfolio-detail .guest-chat{background:#101b21;border-color:#647982}
.portfolio-detail .guest-message{color:#f2f6f7;background:#1b2a32;font-size:16px;line-height:1.85}
.portfolio-detail .guest-message[data-role=user]{background:#29434c}
.portfolio-detail .guest-chat textarea{color:#fff;background:#080f13;font-size:16px}
.portfolio-detail .guest-chat textarea::placeholder{color:#bac8ce;opacity:1}
.portfolio-detail .guest-actions button{background:#dce8ec;color:#10191e;border:1px solid #dce8ec;border-radius:8px;font-size:14px}
.portfolio-detail .guest-actions button:disabled{opacity:.6;cursor:wait}
