/* V15: natural-ratio gallery, close navigation, touch-friendly lightbox. */
.work-intro{padding:48px 0 24px}.work-intro h1{margin:16px 0 14px}.work-intro p{max-width:720px;font-size:17px;line-height:1.65}.gallery-switch{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.gallery-switch a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:9px 18px;border:1px solid var(--border);border-radius:6px;font-size:14px;font-weight:600;background:#fff}.gallery-switch a:hover{border-color:var(--gold);color:var(--gold-dark)}.gallery-switch a[aria-current=page]{background:var(--black);border-color:var(--black);color:#fff}.gallery-switch a:focus-visible,.work-photo a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.work-section{padding:12px 0 64px}.work-section .gallery-context{font-size:14px;color:#68685f;margin:0 0 20px}.finished-grid{display:block;columns:3;column-gap:18px}.finished-grid .work-photo{break-inside:avoid;display:inline-block;width:100%;margin:0 0 18px;vertical-align:top}.work-photo{border-radius:8px;border:1px solid var(--border);box-shadow:none}.work-photo a{display:block;overflow:hidden;cursor:zoom-in;background:transparent}.work-photo img{width:100%;height:auto;aspect-ratio:auto;object-fit:cover;transition:transform .25s ease}.work-photo a:hover img{transform:scale(1.025)}.work-photo figcaption{padding:14px 16px 16px}.photo-type{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-dark);margin-bottom:4px}.work-photo h3{font-size:15px;line-height:1.4;margin:0}.work-photo p{font-size:13px;margin-top:5px;line-height:1.5}.process-grid-gallery{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:start}.process-grid-gallery .work-photo img{aspect-ratio:3/4;object-fit:cover}.process-grid-gallery .work-photo h3{font-size:16px}
#photo-viewer{padding:0;border:0;border-radius:10px;background:#111;color:#fff;width:min(1120px,calc(100vw - 40px));max-width:1120px;max-height:calc(100dvh - 40px);margin:auto;overflow:hidden}#photo-viewer::backdrop{background:rgba(0,0,0,.86)}#photo-viewer[open]{display:flex;flex-direction:column}.photo-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;flex-shrink:0}.photo-toolbar span{font-size:13px;color:#bbb}.photo-toolbar button,.photo-bottom button{font:inherit;min-width:44px;min-height:44px;border:1px solid #555;border-radius:5px;color:#fff;background:#222;padding:8px 14px;cursor:pointer}.photo-toolbar button:hover,.photo-bottom button:hover{background:#444}.photo-toolbar button:focus-visible,.photo-bottom button:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.photo-stage{display:flex;align-items:center;justify-content:center;min-height:0;overflow:hidden;flex:1}#photo-full{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 190px);object-fit:contain}.photo-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 16px;flex-shrink:0}.photo-bottom p{text-align:center;font-size:14px;line-height:1.4;margin:0}.photo-bottom button{font-size:20px;flex-shrink:0}
@media(max-width:1000px){.finished-grid{columns:2}.process-grid-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.work-intro{padding:30px 0 18px}.work-intro h1{font-size:36px;line-height:1.12}.work-intro p{font-size:16px}.work-intro .wrap,.work-section .wrap{padding-left:20px;padding-right:20px}.gallery-switch{gap:8px;margin-top:16px}.gallery-switch a{font-size:13px;padding:9px 13px;flex:1}.finished-grid{columns:1}.work-section{padding-bottom:40px}.process-grid-gallery{grid-template-columns:1fr;gap:20px}.process-grid-gallery .work-photo img{aspect-ratio:auto}.work-photo figcaption{padding:14px 16px}.work-photo h3{font-size:17px}.photo-type{font-size:12px}#photo-viewer{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);border-radius:7px}.photo-toolbar,.photo-bottom{padding:8px 10px}.photo-bottom{gap:8px}.photo-bottom p{font-size:13px}#photo-full{max-height:calc(100dvh - 160px)}}
@media(prefers-reduced-motion:reduce){.work-photo img{transition:none}.work-photo a:hover img{transform:none}}
/* Explicit stage size prevents iOS Safari from collapsing an intrinsic image inside an auto-height flex dialog. */
#photo-viewer .photo-stage{flex:0 0 auto;width:100%;height:min(65vh,720px);height:min(65dvh,720px,calc(100dvh - 150px));min-height:120px}
#photo-viewer #photo-full{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}
