.gallery-groups{list-style:none;margin:0 0 38px;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:960px}
.gallery-card{width:100%;aspect-ratio:1;display:flex;flex-direction:column;align-items:stretch;text-align:left;padding:20px;border:1px solid #d8c8b5;border-radius:3px;background:var(--white);color:var(--text-heading);font:inherit;cursor:pointer;transition:background .2s,border-color .2s,box-shadow .2s,transform .2s}
.gallery-card-top{display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--text-copy);font:400 12px/1.5 var(--sans)}
.gallery-card-top>span:first-child{font:italic 19px/1 var(--serif);color:var(--text-accent)}
.gallery-card-title{display:block;margin:auto 0;padding:18px 0;font:500 clamp(20px,2.25vw,28px)/1.14 var(--serif);letter-spacing:-.025em;overflow-wrap:anywhere}
.gallery-card-action{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:15px;font:600 12px/1.5 var(--sans)}
.gallery-card svg,.photo-dialog svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
@media(hover:hover){.gallery-card:hover{background:#f1ebe2;border-color:#ad8864;box-shadow:0 6px 20px #4a34230a;transform:translateY(-3px)}}
.gallery-card:active{background:#eee4d6}
.gallery-card{position:relative;isolation:isolate;overflow:hidden}
.gallery-card-cover{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;opacity:.38;filter:saturate(.7);pointer-events:none;transition:opacity .2s,transform .3s}
.gallery-card:has(.gallery-card-cover)::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#fffefa38,#fffefa66 55%,#fffefaaa);pointer-events:none}
.gallery-card:has(.gallery-card-cover) .gallery-card-action{border-color:#b7a28b80}
.portfolio .gallery-groups{margin-bottom:0}
/* Match the service columns on desktop while retaining the compact card height. */
@media(min-width:801px){.portfolio .gallery-groups{max-width:none;gap:16px}.portfolio .gallery-card{aspect-ratio:auto;height:min(calc((100vw - 80px)/3),calc(928px/3))}}
.portfolio-copy p{margin-bottom:0}
@media(hover:hover){.gallery-card:hover .gallery-card-cover{opacity:.46;transform:scale(1.025)}}
.gallery-card:focus-visible,.photo-dialog button:focus-visible,.photo-dialog a:focus-visible{outline:2px solid var(--text-heading);outline-offset:4px}
.photo-dialog{width:min(940px,calc(100% - 40px));max-width:none;max-height:calc(100dvh - 40px);padding:0;border:1px solid #d8c8b5;border-radius:5px;background:var(--white);color:var(--text-copy);overflow:auto;overscroll-behavior:contain;box-shadow:0 18px 90px #24190e45}
.photo-dialog::backdrop{background:#211a13a8;backdrop-filter:blur(3px)}
.gallery-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px}
.gallery-header .eyebrow{font-size:9px;letter-spacing:.15em;margin-bottom:7px}
.gallery-header h2{font:500 29px/1.15 var(--serif);letter-spacing:-.025em;color:var(--text-heading);margin:0}
.gallery-close,.gallery-previous,.gallery-next{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;padding:0;border:1px solid #d8c8b5;border-radius:3px;background:var(--white);color:var(--text-heading);cursor:pointer}
.gallery-close:hover,.gallery-previous:hover,.gallery-next:hover{background:#eee4d6;border-color:#ad8864}
.gallery-stage{position:relative;height:min(50dvh,480px);min-height:180px;background:#eee9e1;touch-action:pan-y;display:grid;place-items:center}
#gallery-photo{position:absolute;inset:0;pointer-events:none}
#gallery-photo img{width:100%;height:100%;object-fit:contain}
#gallery-loading,#gallery-error{padding:20px;text-align:center;font-size:14px;max-width:100%;margin:0}
#gallery-error p{margin:0 0 12px}
#gallery-error button,#gallery-error a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin:3px;padding:8px 12px;border:1px solid #bba48b;border-radius:3px;background:var(--white);color:var(--text-heading);font:600 12px/1.4 var(--sans);cursor:pointer}
.photo-dialog [hidden]{display:none}
.gallery-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 24px}
#gallery-count{font-size:13px;font-variant-numeric:tabular-nums;color:var(--text-copy)}
.gallery-thumbnails{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;padding:0 24px 18px}
.gallery-thumbnail{flex:0 0 64px;width:64px;height:52px;display:block;padding:3px;border:1px solid transparent;border-radius:2px;background:none;cursor:pointer;opacity:.65}
.gallery-thumbnail img{width:100%;height:100%;object-fit:cover;border-radius:1px}
.gallery-thumbnail[aria-current="true"]{border-color:var(--text-heading);opacity:1}
.gallery-thumbnail:hover{opacity:1}
body.gallery-open{overflow:hidden}
@media(max-width:850px){.gallery-groups{gap:12px}.gallery-card{padding:16px}.gallery-card-title{font-size:22px;padding:12px 0}.gallery-card-top{font-size:10px;gap:5px}.gallery-card-top>span:first-child{font-size:16px}.gallery-card-action{font-size:11px;padding-top:10px}}
@media(max-width:600px){.gallery-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:30px}.gallery-card{padding:14px;min-height:188px}.gallery-card-top{font-size:10px;gap:5px}.gallery-card-top>span:first-child{font-size:16px}.gallery-card-title{font-size:21px;padding:12px 0}.gallery-card-action{font-size:11px;padding-top:11px;gap:6px}.gallery-card-action svg{width:19px;height:19px}.photo-dialog{width:calc(100% - 20px);max-height:calc(100dvh - 20px)}.gallery-header{padding:16px;gap:12px}.gallery-header h2{font-size:24px}.gallery-header .eyebrow{font-size:8px}.gallery-stage{height:43dvh}.gallery-controls{padding:10px 16px}.gallery-thumbnails{padding:0 16px 14px}.gallery-thumbnail{flex-basis:58px;width:58px;height:48px}}
@media(max-width:420px){.gallery-card-title{font-size:19px}}
@media(max-width:360px){.gallery-card{padding:12px}.gallery-card-title{font-size:18px}.gallery-card-top{font-size:9px}}
@media(prefers-reduced-motion:reduce){.gallery-card,.gallery-card-cover{transition:none}}
