/* Project gallery / Edition 03. Full-frame photographs in a precise editorial archive. */
.gallery-heading{position:relative;isolation:isolate;overflow:hidden;padding:33px 0 56px;background:radial-gradient(ellipse at 8% 0,#fffefa 0,transparent 60%),linear-gradient(120deg,#eee6db,#f7f4ef 72%);border-bottom:1px solid #cfc3b1;box-shadow:inset 0 -5px 0 #fffdf84d}
.gallery-heading::before{content:'';position:absolute;inset:0;z-index:-1;background:repeating-linear-gradient(90deg,transparent 0 95px,#9e8d7421 95px 96px);mask-image:linear-gradient(90deg,transparent 35%,#000);pointer-events:none}
.gallery-heading .breadcrumb{display:flex;gap:12px;margin-bottom:42px;font-size:14px}
.gallery-heading-row{display:flex;align-items:center;justify-content:space-between;gap:48px}
.gallery-heading-row>div:first-child{min-width:0}
.gallery-heading h1{font-size:clamp(51px,6.5vw,92px);line-height:1.04;margin-bottom:23px;letter-spacing:-.02em}
.gallery-heading .eyebrow{font-size:12px;letter-spacing:.1em;margin-bottom:22px}
.gallery-intro{max-width:700px;font-size:20px;line-height:1.65;margin:0;color:#56615a}
.gallery-tally{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:17px;flex-shrink:0;min-width:208px;padding:25px 30px 28px;border:1px solid #657770;background:radial-gradient(ellipse at 100% 0,#56837b66,transparent 70%),#1b3434;box-shadow:5px 5px 0 #faf6ed,6px 6px 0 #bdaa8e;color:#f7f4ef}
.gallery-tally::before{content:'';position:absolute;inset:8px;border:1px solid #c0ae914d;pointer-events:none}
.gallery-tally strong{display:block;font:400 89px/.95 var(--font-display);color:#d8b899;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.gallery-tally span{font-size:15px;line-height:1.45;color:#dde6da;max-width:160px}
.gallery-section{position:relative;padding:35px 0 86px;background:linear-gradient(180deg,#f8f5f0,#f4f0e9 55%,#f8f5f0)}
.gallery-toolbar{padding-bottom:25px;margin-bottom:39px;border-bottom:1px solid #bfae94;position:relative}
.gallery-toolbar::after{content:'';position:absolute;left:0;bottom:-1px;width:56px;height:2px;background:#177986}
.gallery-filters{display:flex;flex-wrap:wrap;gap:10px}
.gallery-filters button{display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:49px;padding:10px 16px;font-size:15px;font-weight:600;line-height:1.35;border:1px solid #c4b79f;background:#fffdf84d;color:#3c4d45;box-shadow:inset 0 1px #fff;transition:background .2s,color .2s,border-color .2s,box-shadow .2s}
.gallery-filters button span{display:grid;place-items:center;min-width:25px;min-height:23px;padding:2px 5px;border-left:1px solid #b3a88f63;font-size:12px;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;color:#737763;opacity:1}
.gallery-filters button:hover{background:#ece3d5;border-color:#b79b78;color:#153e3d}
.gallery-filters button[aria-pressed=true]{background:linear-gradient(125deg,#1b7780,#105f68);color:#fff;border-color:#407c7c;box-shadow:inset 0 1px #ffffff1a,0 3px 0 #c3936b,0 5px 10px #283b2f10}
.gallery-filters button[aria-pressed=true] span{color:#e5ece1;border-left-color:#b3d5c678}
.gallery-status{font-size:14px;line-height:1.6;color:#63705f;margin:21px 0 0}
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px 25px;align-items:stretch}
.gallery-card{display:flex;flex-direction:column;min-width:0;margin:0;position:relative;padding:9px 9px 0;background:linear-gradient(145deg,#fffdf9,#f2ece3);border:1px solid #d0c3b2;box-shadow:0 9px 23px #4b39270a,inset 0 1px #fff;transition:border-color .22s,box-shadow .22s}
.gallery-card:has(.gallery-photo:hover),.gallery-card:has(.gallery-photo:focus-visible){border-color:#829b8d;box-shadow:0 14px 30px #243d3215,inset 0 1px #fff}
.gallery-photo{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#ece9e1,#d6d4cb);border:1px solid #d0c7b9;box-shadow:inset 0 0 22px #36312710;isolation:isolate}
.gallery-photo::after{content:'';position:absolute;inset:0;border:1px solid #fffffc24;box-shadow:inset 0 1px 3px #17261b18;pointer-events:none;z-index:1}
.gallery-photo img{display:block;width:100%;height:100%;object-fit:contain;transition:filter .25s}
.gallery-photo:hover img{filter:brightness(1.035)}
.gallery-photo:focus-visible{outline:3px solid #177986;outline-offset:5px;z-index:2}
.gallery-stage{position:absolute;left:11px;top:11px;z-index:2;display:flex;align-items:center;gap:7px;background:#faf7f0f5;padding:6px 10px;font-size:12px;font-weight:700;letter-spacing:.025em;line-height:1.3;color:#2a4239;border:1px solid #ffffff60;box-shadow:0 3px 8px #102c231a}
.gallery-stage::before{content:'';width:4px;height:4px;background:#a99071;flex-shrink:0}
.gallery-stage--after{background:#135e67f7;color:#fff;border-color:#7ba49e69}
.gallery-stage--after::before{background:#d6c8a9}
.gallery-enlarge{position:absolute;right:10px;bottom:10px;z-index:2;display:grid;place-items:center;width:41px;height:41px;background:#fdfaf3f2;color:#205351;font-size:26px;line-height:1;border:1px solid #fcfaf0c2;box-shadow:0 4px 13px #19372e26;transition:background .2s,color .2s,transform .2s}
.gallery-photo:hover .gallery-enlarge,.gallery-photo:focus-visible .gallery-enlarge{background:#105e69;color:#fff;transform:translateY(-2px)}
.gallery-card figcaption{padding:20px 13px 23px;flex:1}
.gallery-photo-meta{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;font-size:12px;line-height:1.5;letter-spacing:.045em;text-transform:uppercase;color:#105e69;margin-bottom:13px;font-weight:700}
.gallery-photo-meta span:last-child{flex-shrink:0;min-width:25px;text-align:right;color:#8a7159;font-weight:600;font-variant-numeric:tabular-nums;border-bottom:1px solid #c6b49b;padding-bottom:4px}
.gallery-card h2{font-size:27px;line-height:1.17;letter-spacing:-.012em;margin-bottom:12px;color:#243e37}
.gallery-card figcaption>p{font-size:16px;line-height:1.6;color:#62695e;margin:0}
.gallery-owner-note{position:relative;display:grid;grid-template-columns:1fr 1.5fr;gap:40px;margin-top:68px;padding:37px 40px;border:1px solid #c7b59c;background:radial-gradient(ellipse at 100% 0,#fff9ecb3,transparent 65%),linear-gradient(115deg,#e6dac7,#f3eae0);box-shadow:5px 5px 0 #c8ad8814}
.gallery-owner-note::before{content:'';position:absolute;top:0;left:0;width:65px;height:3px;background:#177986}
.gallery-owner-note h2{font-size:36px;line-height:1.12;margin:0;color:#213d36}
.gallery-owner-note .eyebrow{font-size:12px;letter-spacing:.08em;margin-bottom:18px}
.gallery-owner-note>p{font-size:18px;line-height:1.7;align-self:center;margin:0;color:#505d53}
.gallery-owner-note a{display:flex;width:fit-content;margin-top:15px;font-size:16px}

/* Native lightbox: generous photograph, steady controls, no cropped evidence. */
html.gallery-is-open{overflow:hidden}
.gallery-viewer{width:min(1180px,calc(100vw - 40px));max-width:none;max-height:calc(100dvh - 40px);padding:0;border:1px solid #6e8277;color:#f7f4ef;background:linear-gradient(135deg,#203c39,#142827);box-shadow:0 30px 100px #0009,0 0 0 5px #ffffff04;overflow:auto}
.gallery-viewer::backdrop{background:#0c1b1af2;backdrop-filter:blur(7px)}
.gallery-viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.gallery-viewer-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 22px;border-bottom:1px solid #b3c3b52e;background:linear-gradient(90deg,#ffffff05,transparent)}
.gallery-viewer-bar p{margin:0;font-size:14px;font-variant-numeric:tabular-nums;letter-spacing:.025em;color:#d4dfd1}
.gallery-close{display:flex;align-items:center;gap:15px;min-height:44px;padding:6px 12px;border:1px solid #96b09d80;color:#f7f4ef;background:#ffffff03;font-size:15px;line-height:1.3;transition:background .2s,border-color .2s}
.gallery-close span{font-size:26px;font-weight:300;line-height:1}
.gallery-viewer-image{display:grid;place-items:center;min-height:180px;background:#0d1b1a;box-shadow:inset 0 0 50px #0003}
.gallery-viewer-image img{display:block;width:100%;height:min(60dvh,720px);object-fit:contain}
.gallery-viewer-bottom{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:24px 27px 26px;border-top:1px solid #a9bda428}
.gallery-viewer-bottom>div:first-child{min-width:0}
.gallery-viewer-project{font-size:12px;line-height:1.5;color:#d3bd9b;letter-spacing:.07em;text-transform:uppercase;margin:0 0 10px}
.gallery-viewer-bottom h2{font-size:30px;line-height:1.13;margin:0 0 10px;letter-spacing:0}
#gallery-viewer-caption{font-size:17px;line-height:1.55;color:#ccd9cb;max-width:830px;margin:0}
.gallery-viewer-navigation{display:flex;gap:9px;flex-shrink:0}
.gallery-viewer-navigation button{width:49px;height:49px;border:1px solid #8aab96;background:#ffffff03;color:#f7f4ef;font-size:25px;box-shadow:inset 0 1px #ffffff10;transition:background .2s,border-color .2s}
.gallery-viewer button:hover{background:#34615a;border-color:#b1cbb7}
.gallery-viewer button:focus-visible{outline:3px solid #fff;outline-offset:4px}
@media(max-width:999px){
 .gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 23px}.gallery-heading-row{gap:32px}.gallery-tally{padding:24px;min-width:185px}.gallery-tally strong{font-size:75px}.gallery-intro{font-size:19px}.gallery-owner-note{grid-template-columns:1fr;gap:23px}.gallery-viewer-bottom{gap:20px}
}
@media(max-width:599px){
 .gallery-heading{padding:25px 0 34px}.gallery-heading .breadcrumb{margin-bottom:27px}.gallery-heading-row{display:block}.gallery-heading h1{font-size:clamp(46px,12.4vw,68px);margin-bottom:21px}.gallery-heading .eyebrow{letter-spacing:.065em;font-size:12px;gap:10px}.gallery-intro{font-size:18px;line-height:1.65}.gallery-tally{flex-direction:row;align-items:center;justify-content:flex-start;gap:21px;min-width:0;padding:20px 23px;margin-top:27px;box-shadow:3px 3px 0 #faf6ed,4px 4px 0 #bdaa8e}.gallery-tally strong{font-size:56px}.gallery-tally span{max-width:none;font-size:15px}.gallery-tally br{display:initial}.gallery-section{padding:27px 0 64px}.gallery-toolbar{padding-bottom:23px;margin-bottom:29px}.gallery-grid{grid-template-columns:1fr;gap:27px}.gallery-filters{gap:9px}.gallery-filters button{padding:10px 12px;font-size:14px;gap:9px;min-height:47px}.gallery-filters button span{min-width:21px;padding-inline:4px}.gallery-status{font-size:14px;margin-top:19px}.gallery-card{padding:8px 8px 0}.gallery-card figcaption{padding:19px 12px 23px}.gallery-card h2{font-size:29px}.gallery-card figcaption>p{font-size:17px}.gallery-photo-meta{font-size:12px;letter-spacing:.035em}.gallery-owner-note{margin-top:47px;padding:29px 26px;gap:21px}.gallery-owner-note h2{font-size:34px}.gallery-owner-note .eyebrow{letter-spacing:.05em;gap:9px}.gallery-owner-note>p{font-size:17px}.gallery-viewer{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.gallery-viewer-bar{padding:8px 12px}.gallery-viewer-image img{height:46dvh}.gallery-viewer-image{min-height:120px}.gallery-viewer-bottom{align-items:flex-start;padding:19px 16px;gap:19px;flex-wrap:wrap}.gallery-viewer-bottom h2{font-size:27px}#gallery-viewer-caption{font-size:16px}.gallery-viewer-navigation{margin-left:auto}.gallery-viewer-navigation button{width:48px;height:48px}.gallery-viewer-project{font-size:12px;letter-spacing:.04em}.gallery-viewer-bar p{font-size:14px}
}
@media(max-width:380px){.gallery-heading h1{font-size:44px}.gallery-heading .eyebrow{letter-spacing:.035em}.gallery-filters button{font-size:14px;padding-inline:10px;gap:6px}.gallery-owner-note{padding:27px 23px}.gallery-owner-note .eyebrow{letter-spacing:.025em}}
@media(prefers-reduced-motion:reduce){.gallery-photo img,.gallery-enlarge,.gallery-filters button,.gallery-card,.gallery-close,.gallery-viewer-navigation button{transition:none}.gallery-photo:hover .gallery-enlarge,.gallery-photo:focus-visible .gallery-enlarge{transform:none}}
@media print{.gallery-filters,.gallery-viewer,.gallery-enlarge{display:none!important}.gallery-card{break-inside:avoid;box-shadow:none;background:white}.gallery-card[hidden]{display:flex!important}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-heading,.gallery-section{background:white}.gallery-heading::before{display:none}.gallery-tally{background:white;color:black;box-shadow:none}.gallery-tally strong,.gallery-tally span{color:black}.gallery-stage{position:static}}
