/* Accessible project viewer; scoped to the Projects page modal only. */
.projects-page .project-modal { position:fixed; inset:0; z-index:1000; display:none; align-items:center; justify-content:center; padding:clamp(12px,2.5vw,32px); }
.projects-page .project-modal.open { display:flex; }
.projects-page .project-modal-backdrop { position:absolute; inset:0; background:rgba(14,15,13,.76); backdrop-filter:blur(3px); }
.projects-page .project-modal-panel { position:relative; z-index:1; display:flex; flex-direction:column; width:min(1120px,100%); max-height:min(90vh,900px); overflow:hidden; padding:0; border:1px solid #e7e7e2; border-radius:14px; background:#fff; color:#171815; box-shadow:0 28px 90px rgba(0,0,0,.24); outline:none; }
.projects-page .project-modal-close { position:absolute; z-index:3; top:15px; right:16px; display:grid; place-items:center; width:42px; height:42px; border:1px solid #e7e7e2; border-radius:50%; background:#fff; color:#171815; font:400 28px/1 Inter,Arial,sans-serif; cursor:pointer; }
.projects-page .project-modal-close:hover { background:#f4f4ef; }
.projects-page .project-modal-close:focus-visible,.projects-page .project-viewer-contact:focus-visible,.projects-page .project-viewer-thumb:focus-visible { outline:2px solid #171815; outline-offset:3px; }
.projects-page #project-modal-content { min-height:0; display:flex; flex-direction:column; overflow:auto; overscroll-behavior:contain; }
.projects-page .project-viewer-header { position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; align-items:center; gap:60px; padding:25px 78px 22px 30px; border-bottom:1px solid #e7e7e2; background:#fff; }
.projects-page .project-viewer-header-copy { min-width:0; }
.projects-page .project-viewer-kicker { margin:0 0 6px; color:#65675f; font:600 11px/1.4 Inter,Arial,sans-serif; }
.projects-page .project-viewer-title { margin:0; color:#171815; font:750 clamp(24px,3vw,36px)/1.12 Manrope,Inter,Arial,sans-serif; letter-spacing:-.045em; }
.projects-page .project-viewer-counter { flex:0 0 auto; color:#65675f; font:500 12px/1.4 Inter,Arial,sans-serif; font-variant-numeric:tabular-nums; }
.projects-page .project-viewer-body { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(250px,.75fr); gap:0; min-height:0; }
.projects-page .project-viewer-main { min-width:0; padding:26px 30px 30px; }
.projects-page .project-viewer-gallery { min-width:0; }
.projects-page .project-viewer-main-image,.projects-page .project-viewer-fallback { display:grid; width:100%; height:clamp(240px,39vh,430px); object-fit:contain; border:1px solid #ededeb; border-radius:9px; background:#f5f6f7; }
.projects-page .project-viewer-fallback { place-items:center; color:#171815; font:800 54px/1 Manrope,Inter,sans-serif; letter-spacing:-.08em; }
.projects-page .project-viewer-thumbnails { display:flex; gap:9px; margin-top:10px; flex-wrap:wrap; }
.projects-page .project-viewer-thumb { width:72px; height:58px; padding:4px; border:1px solid #e7e7e2; border-radius:6px; background:#fff; cursor:pointer; }
.projects-page .project-viewer-thumb.is-active { border-color:#171815; box-shadow:inset 0 0 0 1px #171815; }
.projects-page .project-viewer-thumb img { display:block; width:100%; height:100%; object-fit:contain; }
.projects-page .project-viewer-description { margin:22px 0 0; color:#555650; font:400 15px/1.75 Inter,Arial,sans-serif; }
.projects-page .project-viewer-services { display:flex; flex-wrap:wrap; gap:8px; padding:0; margin:20px 0 0; list-style:none; }
.projects-page .project-viewer-services li { padding:8px 10px; border:1px solid #e7e7e2; border-radius:5px; color:#34352f; font:500 12px/1.25 Inter,Arial,sans-serif; }
.projects-page .project-viewer-details { padding:30px 26px; border-left:1px solid #e7e7e2; background:#fcfcfa; }
.projects-page .project-viewer-details h3 { margin:0 0 20px; color:#171815; font:700 19px/1.25 Manrope,Inter,sans-serif; letter-spacing:-.025em; }
.projects-page .project-viewer-detail-row { display:grid; grid-template-columns:minmax(72px,.75fr) minmax(0,1.25fr); gap:12px; padding:14px 0; border-top:1px solid #e7e7e2; font:400 12px/1.5 Inter,Arial,sans-serif; }
.projects-page .project-viewer-detail-row span { color:#65675f; }
.projects-page .project-viewer-detail-row strong { color:#171815; font-weight:600; overflow-wrap:anywhere; }
.projects-page .project-viewer-note { margin:18px 0 0; color:#65675f; font:400 12px/1.65 Inter,Arial,sans-serif; }
.projects-page .project-viewer-contact { display:flex; justify-content:center; align-items:center; min-height:46px; margin-top:26px; padding:12px 15px; border:1px solid #171815; border-radius:5px; background:#171815; color:#fff; text-align:center; text-decoration:none; font:600 12px/1.3 Inter,Arial,sans-serif; }
.projects-page .project-viewer-contact:hover { background:#30312b; }
@media(max-width:700px) {
 .projects-page .project-modal { padding:0; align-items:stretch; }
 .projects-page .project-modal-panel { width:100%; max-height:100dvh; height:100dvh; border:0; border-radius:0; }
 .projects-page .project-modal-close { position:fixed; top:10px; right:10px; width:40px; height:40px; }
 .projects-page .project-viewer-header { gap:16px; padding:20px 62px 18px 18px; }
 .projects-page .project-viewer-title { font-size:25px; }
 .projects-page .project-viewer-counter { font-size:11px; }
 .projects-page .project-viewer-body { grid-template-columns:minmax(0,1fr); }
 .projects-page .project-viewer-main { padding:18px; }
 .projects-page .project-viewer-main-image,.projects-page .project-viewer-fallback { height:clamp(210px,35vh,340px); }
 .projects-page .project-viewer-description { margin-top:18px; font-size:14px; }
 .projects-page .project-viewer-details { padding:22px 18px 30px; border-top:1px solid #e7e7e2; border-left:0; }
 .projects-page .project-viewer-details h3 { margin-bottom:10px; }
}
@media(prefers-reduced-motion:reduce) { .projects-page .project-modal-backdrop { backdrop-filter:none; } }
.projects-page .project-viewer-controls { display:flex; align-items:center; gap:9px; flex:0 0 auto; }
.projects-page .project-viewer-nav { padding:7px 9px; border:1px solid #e7e7e2; border-radius:5px; background:#fff; color:#171815; font:600 11px/1.2 Inter,Arial,sans-serif; cursor:pointer; }
.projects-page .project-viewer-nav:hover { border-color:#bfc0b6; background:#f7f7f3; }
.projects-page .project-viewer-nav:focus-visible { outline:2px solid #171815; outline-offset:2px; }
@media(max-width:700px) { .projects-page .project-viewer-controls { gap:5px; } .projects-page .project-viewer-nav { padding:7px; } .projects-page .project-viewer-counter { min-width:34px; text-align:center; } }
/* Respect the native hidden state even when gallery elements have display rules. */
.projects-page .project-viewer-fallback[hidden],
.projects-page .project-viewer-main-image[hidden],
.projects-page .project-viewer-thumb[hidden] { display: none !important; }

/* Reference layout for the U.S.-based repeat research project only. */
.projects-page .project-viewer-reference-layout { display:block; }
.projects-page .project-viewer-reference-layout .project-viewer-main { padding:24px 30px 34px; }
.projects-page .project-viewer-reference-layout .project-viewer-body-title { margin:0 0 20px; font-size:clamp(27px,3vw,36px); }
.projects-page .project-viewer-reference-layout .project-viewer-description { margin:0; font-size:15px; line-height:1.72; }
.projects-page .project-viewer-reference-layout .project-viewer-services { margin-top:20px; }
.projects-page .project-viewer-reference-details { margin-top:28px; padding:18px 0 20px; border-top:1px solid #e7e7e2; border-bottom:1px solid #e7e7e2; background:#fff; }
.projects-page .project-viewer-reference-details h3 { margin:0 0 12px; }
.projects-page .project-viewer-reference-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
.projects-page .project-viewer-reference-details .project-viewer-detail-row { display:flex; flex-direction:column; gap:4px; padding:0; border:0; font-size:14px; }
.projects-page .project-viewer-gallery-heading { margin:18px 0 14px; color:#171815; font:700 20px/1.3 Manrope,Inter,Arial,sans-serif; letter-spacing:-.025em; }
.projects-page .project-viewer-stacked-gallery { display:flex; flex-direction:column; gap:18px; width:100%; }
.projects-page .project-viewer-screenshot { width:100%; margin:0; overflow:hidden; border:1px solid #e7e7e2; border-radius:9px; background:#fff; }
.projects-page .project-viewer-screenshot .project-viewer-main-image { display:block; width:100%; height:auto; max-height:none; object-fit:contain; border:0; border-radius:0; background:#fff; }
.projects-page .project-viewer-image-error { width:100%; min-height:180px; height:auto; border:0; border-radius:0; }
@media(max-width:700px) {
 .projects-page .project-viewer-reference-layout .project-viewer-main { padding:20px 16px 28px; }
 .projects-page .project-viewer-reference-layout .project-viewer-body-title { padding-right:0; font-size:25px; line-height:1.15; }
 .projects-page .project-viewer-reference-layout .project-viewer-description { font-size:14px; line-height:1.7; }
 .projects-page .project-viewer-reference-detail-grid { grid-template-columns:minmax(0,1fr); gap:14px; }
 .projects-page .project-viewer-reference-details { margin-top:22px; padding:16px 0; }
 .projects-page .project-viewer-gallery-heading { font-size:18px; }
 .projects-page .project-viewer-stacked-gallery { gap:14px; }
}
