/* Photographic extension of the existing monochrome workshop. */
img[data-media-id]{object-position:var(--media-position,50% 50%)}
.hero .photographic-portrait{left:12%;bottom:22px;width:39%;height:81%;max-height:none;margin:0;background:#e9e8e4;overflow:hidden;filter:none;border:1px solid #ffffff20;animation:portraitEnter 850ms var(--ease) both;animation-delay:120ms}
.photographic-portrait .portrait-parallax{height:100%;width:100%;transform:translateY(var(--portrait-y,0px)) scale(1.04);transform-origin:center}
.photographic-portrait img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.035)}
.photographic-portrait figcaption{position:absolute;left:18px;bottom:16px;right:auto;max-width:calc(100% - 36px);background:#f3f0e9eb;color:#222;padding:7px 10px;font-size:11px;line-height:1.4;letter-spacing:.04em}
.photo-hero .hero-arm{right:1%;bottom:15px;width:42%}.photo-hero .hero-component.c-pi{left:-2%;top:44%;width:16%}.photo-hero .hero-component.c-camera{left:51%;top:16%}.photo-hero .hero-component.c-esp32{right:30%;top:0}
.photo-hero .hero-component.c-encoder{left:5%;bottom:0}.photo-hero .hero-component.c-gear{right:1%;bottom:18%}
.real-about .about-copy{order:-1}.real-about{grid-template-columns:1.1fr 1fr}.real-about .about-portrait{background:#ebeae6}
.about-portrait .photographic-portrait{position:relative;left:auto;bottom:auto;top:auto;height:100%;width:100%;max-height:none;margin:0;filter:none}
.about-portrait .photographic-portrait .portrait-parallax{transform:none}.about-portrait .photographic-portrait img{object-fit:contain}
.reading-interlude{display:grid;grid-template-columns:1fr 1.4fr;gap:80px;align-items:center;padding-top:30px;padding-bottom:90px}
.reading-interlude figure{margin:0;max-width:380px}.reading-interlude img{width:100%;height:480px;object-fit:contain;background:#ecebe7;filter:grayscale(1) contrast(1.03)}.reading-interlude figcaption{margin-top:15px;color:var(--muted)}.reading-interlude h2{font-size:clamp(38px,4.4vw,66px);margin-bottom:28px}.reading-interlude p{color:var(--muted);font-size:18px;max-width:530px}
.contact-details.with-portrait{display:grid;grid-template-columns:145px 1fr 1fr;gap:45px;align-items:center}.contact-portrait{margin:0}.contact-portrait img{width:145px;height:210px;object-fit:contain;background:#e9e8e5;filter:grayscale(1)}.contact-portrait figcaption{margin-top:10px;font-size:10px;line-height:1.4}
.project-media.has-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(1);transform:scale(1);transition:filter 340ms ease-out,transform 400ms var(--ease)}
.project-media.has-photo.kind-cad,.project-media.has-photo.kind-reference{background:#e8e8e4}.project-media.has-photo.kind-cad img,.project-media.has-photo.kind-reference img{object-fit:contain}
.project-media.has-photo.kind-simulation img{object-fit:contain;background:#080c11}.project-media.has-photo:hover img,.project-media.has-photo:focus-visible img{filter:grayscale(0);transform:scale(1.025)}
.project-media.has-photo .project-number,.project-media.has-photo .media-caption{color:#f3f0e9;background:#111d;padding:5px 8px;font-size:11px}.project-media.has-photo.kind-cad .project-number,.project-media.has-photo.kind-cad .media-caption,.project-media.has-photo.kind-reference .project-number,.project-media.has-photo.kind-reference .media-caption{color:#171717;background:#f3f0e9e0}
.project-description{font-size:15px;line-height:1.6;color:#b0b0b0;margin-top:18px;max-width:58ch}.project-subtitle+.project-description{margin-top:15px}.project-card.featured .project-description{font-size:16px}.index-view .project-description{font-size:14px;max-width:800px;margin-top:10px}
.case-hero.has-photo{aspect-ratio:1.85;background:#101010}.case-hero.has-photo>button{width:100%;height:100%;position:relative;overflow:hidden}.case-hero.has-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(.85);transition:filter 340ms ease-out}
.case-hero.has-photo:hover img,.case-hero.has-photo:focus-within img{filter:grayscale(0)}.case-hero.has-photo.kind-cad,.case-hero.has-photo.kind-reference{background:#e9e9e6}.case-hero.has-photo.kind-cad img,.case-hero.has-photo.kind-reference img,.case-hero.has-photo.kind-simulation img{object-fit:contain}
.case-open-label{position:absolute;right:20px;bottom:20px;background:#141414ed;padding:9px 13px;color:#f3f0e9;font-size:12px}.cover-caption{padding-top:14px;max-width:100%;font-size:12px}
.case-summary{display:grid;grid-template-columns:1.65fr 1fr;gap:90px;padding:85px 0}.case-summary .eyebrow{color:var(--muted);margin-bottom:24px}.case-summary h2{font-size:42px;margin-bottom:25px}.summary-lead{font-size:25px;line-height:1.55;letter-spacing:-.02em}.case-summary>div>p:last-child{margin-top:24px;color:var(--muted)}.case-summary aside{border-top:1px solid var(--line);padding-top:25px;font-size:16px;color:#bbb}.case-summary aside p+p{margin-top:0}.case-summary .text-link{margin-top:25px;color:var(--paper)}
.system-section{border-top:1px solid var(--line);padding-top:40px;padding-bottom:70px}.system-section>.eyebrow{color:var(--muted);margin-bottom:35px}.architecture-flow{list-style:none;padding:0;margin:0 0 65px;display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.architecture-flow li{padding:25px 22px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:22px;font-size:16px;line-height:1.5}.architecture-flow li:last-child{border-right:0}.architecture-flow .mono{color:#888}.system-section>h2{font-size:42px;margin-bottom:35px}.implementation-list{display:grid;grid-template-columns:1fr 1fr;gap:40px 65px}.implementation-list>section{display:grid;grid-template-columns:25px 1fr;gap:15px;border-top:1px solid var(--line);padding-top:24px}.implementation-list .mono{color:var(--muted)}.implementation-list h3{font-size:23px;margin-bottom:15px}.implementation-list p{font-size:16px;color:#b5b5b5;line-height:1.65}
.mechanism-section{padding-top:40px;padding-bottom:90px}.mechanism-heading{display:grid;grid-template-columns:1.5fr 1fr;gap:60px;align-items:end;margin-bottom:35px}.mechanism-heading .eyebrow{color:var(--muted);margin-bottom:20px}.mechanism-heading h2{font-size:clamp(36px,4.7vw,65px)}.mechanism-heading>p{max-width:380px;color:var(--muted);font-size:15px}.angle-stage{height:590px;position:relative;background:#eeeef0;overflow:hidden;touch-action:pan-y}.angle-open{position:absolute;inset:0;width:100%;height:100%;padding:0}.angle-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#eeeef0;filter:grayscale(.65)}.angle-open:hover .angle-layer,.angle-open:focus-visible .angle-layer{filter:grayscale(0)}.angle-number{position:absolute;left:22px;top:20px;pointer-events:none;color:#222;background:#f3f0e9e0;padding:6px 10px}.angle-caption{display:flex;gap:30px;margin:20px 0 25px;align-items:start;min-height:50px}.angle-caption strong{font-size:18px;font-weight:400;min-width:130px}.angle-caption>span{color:var(--muted);font-size:14px;max-width:700px}.angle-controls{display:flex;gap:20px;align-items:center}.angle-controls>button{width:48px;height:48px;border:1px solid #666;flex-shrink:0}.angle-controls>button:hover{background:#222}.angle-options{display:flex;gap:15px;flex:1}.angle-options button{border:1px solid var(--line);padding:10px;display:grid;grid-template-columns:68px 1fr;align-items:center;gap:12px;min-height:68px;text-align:left;flex:1;font-size:13px}.angle-options button[aria-pressed=true]{border-color:var(--paper)}.angle-options img{width:68px;height:52px;object-fit:contain;filter:grayscale(1);background:#ececee}.angle-options button[aria-pressed=true] img{filter:grayscale(0)}
.story-chapter{padding-top:50px;padding-bottom:50px;border-top:1px solid var(--line)}.story-chapter header{display:grid;grid-template-columns:1fr 1fr;gap:18px 60px;margin-bottom:38px}.story-chapter header>.eyebrow{grid-column:span 2;color:var(--muted);font-size:12px}.story-chapter h2{font-size:clamp(35px,4vw,58px);max-width:700px}.story-chapter header>p:last-child{align-self:end;color:var(--muted);font-size:16px;max-width:520px}.chapter-media{display:grid;gap:40px}.layout-pair .chapter-media{grid-template-columns:1fr 1fr}.layout-editorial .chapter-media{grid-template-columns:1.7fr 1fr;gap:35px;align-items:start}.layout-mixed .chapter-media{grid-template-columns:1.7fr 1fr;gap:40px}.layout-mixed .media-figure:last-child{grid-column:span 2}
.media-figure{margin:0;min-width:0}.gallery-image{display:block;width:100%;position:relative;padding:0;overflow:hidden;background:#161616;touch-action:pan-y}.gallery-image img{width:100%;height:auto;max-height:830px;object-fit:contain;transition:transform 400ms var(--ease)}.gallery-image:hover img{transform:scale(1.015)}.kind-gui .gallery-image{background:#0a0c11}.kind-cad .gallery-image{background:#e3e9ed}.kind-photo .gallery-image img{filter:saturate(.55);transition:filter 300ms,transform 400ms var(--ease)}.kind-photo .gallery-image:hover img,.kind-photo .gallery-image:focus-visible img{filter:saturate(1)}.image-open-label{position:absolute;bottom:14px;right:14px;padding:7px 10px;background:#101010eb;color:#f3f0e9;font-size:11px;opacity:0;transform:translateY(5px);transition:opacity 200ms,transform 200ms}.gallery-image:hover .image-open-label,.gallery-image:focus-visible .image-open-label{opacity:1;transform:translateY(0)}.media-figure figcaption{margin-top:16px;display:grid;grid-template-columns:auto 1fr;gap:18px;color:#aaa;font-size:13px;line-height:1.65}.media-kind{color:#777;font-size:11px;white-space:nowrap}.layout-editorial .media-figure:last-child{padding-top:40px}.layout-editorial .media-figure:last-child figcaption,.layout-mixed .media-figure:nth-child(2) figcaption{grid-template-columns:1fr;gap:8px}
.case-scope{display:grid;grid-template-columns:1.5fr 1fr;gap:80px;padding-top:70px;padding-bottom:80px;border-top:1px solid var(--line);margin-top:25px}.case-scope .eyebrow{color:var(--muted);margin-bottom:20px}.case-scope h2{font-size:40px;margin-bottom:24px}.case-scope p{color:#b5b5b5;font-size:16px}.validation-note{border-left:1px solid #777;padding-left:30px}.validation-note h3{font-size:24px;margin-bottom:20px}.documented-next{padding-bottom:90px}
.image-dialog[open]{width:min(1360px,96vw);height:92svh;padding:22px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:18px;overflow:hidden;max-height:calc(100svh - 24px);background:#101010;border:1px solid #555}.lightbox-top{display:flex;justify-content:space-between;gap:25px;align-items:center}.lightbox-top>div{display:flex;gap:25px;align-items:center}.lightbox-title{color:#bcbcbc}.lightbox-counter{color:var(--paper);min-width:50px}.lightbox-top>button{min-height:44px;min-width:70px;border-bottom:1px solid #777;font-size:14px}.lightbox-top>button>span{font-size:22px;margin-left:12px}.lightbox-stage{display:flex;align-items:center;justify-content:center;min-height:0;overflow:hidden;touch-action:pan-y;background:#080808}.image-dialog .lightbox-photo{width:100%;height:100%;max-height:none;object-fit:contain;filter:none;transition:filter 280ms}.image-dialog.is-monochrome .lightbox-photo{filter:grayscale(1)}.lightbox-bottom{display:grid;grid-template-columns:1.5fr 1fr;gap:35px;align-items:end}.lightbox-caption{font-size:14px;line-height:1.5}.lightbox-caption>span{font-size:11px;color:#888}.lightbox-caption p{margin-top:7px}.lightbox-controls{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.lightbox-controls button,.lightbox-controls a{min-height:44px;min-width:44px;border:1px solid #666;padding:8px 12px;font-size:12px;display:inline-flex;justify-content:center;align-items:center}.lightbox-controls button[aria-pressed=true]{border-color:var(--paper)}.lightbox-controls a{font-size:11px;border-color:#333}.lightbox-controls button:hover,.lightbox-controls a:hover{background:#252525}
@keyframes portraitEnter{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
@media(max-width:1100px){.hero .photographic-portrait{left:9%;width:41%;height:78%}.photo-hero .hero-arm{width:45%;right:-1%;bottom:0}.case-summary{gap:50px}.angle-options button{grid-template-columns:1fr;gap:5px;text-align:center}.angle-options img{margin:auto}.mechanism-heading{gap:35px}.reading-interlude{gap:45px}.case-scope{gap:50px}}
@media(max-width:860px){.hero .photographic-portrait{left:5%;width:46%;height:82%;bottom:20px}.photo-hero .hero-arm{width:49%;right:-2%}.photo-hero .hero-component.c-camera{left:52%;top:22%}.photo-hero .hero-component.c-pi{width:20%;left:-5%;top:48%}.real-about{gap:30px}.reading-interlude{gap:35px;grid-template-columns:1fr 1fr}.reading-interlude img{height:400px}.reading-interlude p{font-size:16px}.case-summary{gap:35px}.summary-lead{font-size:22px}.architecture-flow li{padding:20px 14px;font-size:14px}.implementation-list{gap:30px}.mechanism-heading{grid-template-columns:1fr}.mechanism-heading>p{max-width:600px}.angle-stage{height:500px}.angle-options{gap:8px}.angle-controls{gap:10px}.story-chapter header{gap:18px 30px}.layout-editorial .chapter-media,.layout-mixed .chapter-media{grid-template-columns:1fr 1fr;gap:25px}.media-figure figcaption{grid-template-columns:1fr;gap:7px}.case-scope{gap:35px}.lightbox-bottom{grid-template-columns:1fr;gap:15px}.lightbox-controls{justify-content:flex-start}.contact-details.with-portrait{gap:28px;grid-template-columns:125px 1fr 1fr}.contact-portrait img{width:125px;height:185px}}
@media(max-width:560px){
 .hero .photographic-portrait{left:0;top:15px;bottom:auto;width:66%;height:87%;max-height:none}.hero .photographic-portrait .portrait-parallax{transform:none}.photographic-portrait figcaption{left:10px;bottom:10px;max-width:calc(100% - 20px);font-size:9px;padding:5px 7px}.photo-hero .hero-arm{width:61%;right:-6%;bottom:-24px}.photo-hero .hero-component.c-pi{left:-5%;top:42%;width:24%}.photo-hero .hero-component.c-camera{left:61%;top:21%;width:18%}.photo-hero .hero-component.c-motor{right:-5%;top:0;width:27%}.photo-hero .hero-component.c-esp32{right:14%;top:-8%;width:21%}.hero .photographic-portrait img{object-position:var(--media-mobile-position)}
 .real-about{grid-template-columns:1fr;gap:35px}.real-about .about-copy{order:0}.real-about .about-portrait{height:530px;order:1}.about-portrait .photographic-portrait{height:100%;top:auto;width:100%}.about-portrait .photographic-portrait figcaption{font-size:11px}.about-portrait .photographic-portrait img{object-position:var(--media-mobile-position)}
 .reading-interlude{grid-template-columns:1fr;gap:32px;padding-bottom:65px}.reading-interlude figure{width:75%;max-width:310px}.reading-interlude img{height:370px}.reading-interlude h2{font-size:36px}.reading-interlude p{font-size:16px}.contact-details.with-portrait{grid-template-columns:125px 1fr;gap:22px}.contact-portrait{grid-row:span 2}.contact-portrait img{width:125px;height:190px}.contact-portrait figcaption{font-size:10px}.contact-details.with-portrait>div{min-width:0}.contact-details.with-portrait p{font-size:12px}
 .project-description,.project-card.featured .project-description{font-size:15px;margin-top:14px}.index-view .project-description{font-size:13px}.index-view .project-card{grid-template-columns:75px minmax(0,1fr)}.project-media.has-photo .project-number,.project-media.has-photo .media-caption{font-size:10px;max-width:calc(100% - 28px)}
 .case-hero.has-photo{aspect-ratio:1.2}.case-hero.has-photo.kind-cad,.case-hero.has-photo.kind-reference{aspect-ratio:1.15}.case-open-label{right:10px;bottom:10px;font-size:10px;padding:7px 9px}.cover-caption{font-size:12px;line-height:1.6}.case-summary{grid-template-columns:1fr;gap:35px;padding:45px 0}.case-summary h2{font-size:34px;margin-bottom:22px}.case-summary .eyebrow{margin-bottom:18px}.summary-lead{font-size:22px}.case-summary>div>p:last-child{font-size:16px}.case-summary aside{font-size:15px}.system-section{padding-top:30px;padding-bottom:35px}.system-section>.eyebrow{font-size:11px}.architecture-flow{grid-template-columns:1fr;margin-bottom:40px}.architecture-flow li{flex-direction:row;gap:25px;border-right:0;border-bottom:1px solid var(--line);padding:15px 0;font-size:15px}.architecture-flow li:last-child{border-bottom:0}.system-section>h2{font-size:34px}.implementation-list{grid-template-columns:1fr;gap:26px}.implementation-list h3{font-size:22px}.implementation-list p{font-size:15px}
 .mechanism-section{padding-top:25px;padding-bottom:45px}.mechanism-heading{gap:22px;margin-bottom:25px}.mechanism-heading h2{font-size:36px}.mechanism-heading .eyebrow{font-size:10px;margin-bottom:18px}.mechanism-heading>p{font-size:14px}.angle-stage{height:350px}.angle-number{top:12px;left:12px;font-size:10px}.angle-caption{flex-direction:column;gap:8px;min-height:115px;margin-top:18px}.angle-caption strong{font-size:20px}.angle-caption>span{font-size:14px}.angle-controls{display:grid;grid-template-columns:44px 1fr 44px;gap:10px}.angle-controls>button{width:44px;height:44px}.angle-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.angle-options button{font-size:12px;min-height:44px;padding:8px 4px;display:block}.angle-options img{display:none}
 .story-chapter{padding-top:35px;padding-bottom:35px}.story-chapter header{grid-template-columns:1fr;gap:20px;margin-bottom:26px}.story-chapter header>.eyebrow{grid-column:auto;font-size:11px}.story-chapter h2{font-size:34px}.story-chapter header>p:last-child{font-size:15px}.layout-pair .chapter-media,.layout-editorial .chapter-media,.layout-mixed .chapter-media{grid-template-columns:1fr;gap:28px}.layout-mixed .media-figure:last-child{grid-column:auto}.layout-editorial .media-figure:last-child{padding-top:0;max-width:100%}.media-figure figcaption{font-size:13px;gap:6px;margin-top:12px}.media-kind{font-size:11px}.image-open-label{opacity:1;transform:none;font-size:10px;right:8px;bottom:8px}.gallery-image img{max-height:none}.case-scope{grid-template-columns:1fr;gap:30px;padding:40px 0 50px}.case-scope h2{font-size:33px}.case-scope p{font-size:15px}.validation-note{padding-left:20px}.validation-note h3{font-size:22px}.documented-next{padding-bottom:65px}
 .image-dialog[open]{width:calc(100vw - 20px);height:calc(100svh - 24px);padding:14px;gap:12px}.lightbox-top{gap:10px}.lightbox-top>div{flex-direction:column;align-items:flex-start;gap:5px}.lightbox-title{font-size:11px}.lightbox-counter{font-size:11px}.lightbox-top>button{font-size:12px;min-width:62px}.lightbox-top>button>span{margin-left:5px}.lightbox-bottom{gap:12px}.lightbox-caption{font-size:13px;line-height:1.5}.lightbox-caption>span{font-size:10px}.lightbox-controls{gap:6px}.lightbox-controls button,.lightbox-controls a{font-size:11px;min-height:44px;padding:7px 10px}.lightbox-controls a{font-size:10px}.lightbox-stage{min-height:200px}
}
@media(max-width:560px){.hero .photographic-portrait{width:74%;height:auto;aspect-ratio:1024/956;top:30px}.hero .photographic-portrait img{object-fit:contain}.hero .photographic-portrait figcaption{font-size:10px}.photo-hero .hero-arm{right:-6%;bottom:-24px}}
@media(max-width:359px){.hero .photographic-portrait{width:75%;height:auto;aspect-ratio:1024/956}.photo-hero .hero-arm{width:63%;right:-9%}.photographic-portrait figcaption{font-size:9px}.angle-stage{height:310px}.angle-controls{gap:7px;grid-template-columns:44px minmax(0,1fr) 44px}.angle-options button{font-size:11px}.lightbox-controls button,.lightbox-controls a{padding:6px 8px}.real-about .about-portrait{height:470px}}
@media(prefers-reduced-motion:reduce){.photographic-portrait,.photographic-portrait .portrait-parallax{animation:none!important;translate:none!important;transform:none!important}.angle-layer,.lightbox-photo{animation:none!important;transition:none!important}.gallery-image img,.project-media.has-photo img{transition:none!important}}
