/* Gallery only: the approved Horatio/Riso design, no shared overrides. */
.page-gallery { --gallery-max:108rem; --gallery-gutter:clamp(1rem,3.5vw,3rem); background:var(--paper-bg) !important; }
.page-gallery .gallery-wrap { width:min(var(--gallery-max),calc(100% - var(--gallery-gutter)*2)); margin-inline:auto; }
.page-gallery main { overflow-wrap:break-word; }
.page-gallery main :where(h2,h3) { max-width:none; margin:0 0 1rem; }
.page-gallery main h2 { font-size:clamp(2rem,3.2vw,3.4rem); line-height:1.12; }
.page-gallery main p { max-width:68ch; }
.page-gallery :where(a,button):focus-visible { outline:3px solid var(--rich-black); outline-offset:4px; box-shadow:0 0 0 6px var(--riso-yellow) !important; }
.page-gallery [hidden] { display:none !important; }
.page-gallery .gallery-hero { background:var(--paper-bg) !important; padding:clamp(3rem,5vw,5rem) 0 clamp(2.5rem,4vw,4rem) !important; border:0 !important; isolation:isolate; }
/* Small CSS dots have no raster download or white image rectangle. */
.page-gallery .gallery-hero::before { content:""; position:absolute; inset:-2rem -3rem -2rem 40%; width:auto !important; aspect-ratio:auto; transform:none; opacity:.16; pointer-events:none; z-index:-1; background:radial-gradient(circle at 20px 20px,var(--riso-yellow) 0 7px,transparent 8px),radial-gradient(circle at 65px 52px,var(--riso-pink) 0 9px,transparent 10px),radial-gradient(circle at 105px 18px,var(--riso-blue) 0 6px,transparent 7px),radial-gradient(circle at 35px 99px,var(--community-green) 0 8px,transparent 9px),radial-gradient(circle at 116px 109px,var(--riso-orange) 0 7px,transparent 8px); background-size:145px 145px; mask-image:linear-gradient(90deg,transparent,#000); }
.page-gallery .gallery-hero::after { content:none; }
.page-gallery .gallery-hero > .gallery-wrap { width:min(var(--gallery-max),calc(100% - var(--gallery-gutter)*2)); }
.page-gallery .gallery-hero h1 { max-width:20ch; width:auto; font-size:clamp(2.6rem,4.7vw,5rem); line-height:1.06; margin:1rem 0 1.5rem !important; }
.page-gallery .gallery-hero p { max-width:58ch; font-size:clamp(1.15rem,1.5vw,1.45rem); margin:0 0 1rem !important; }
.page-gallery .gallery-hero .kicker { font-size:.85rem; letter-spacing:.07em; }
.page-gallery .gallery-rainbow { height:6px; background:linear-gradient(90deg,var(--riso-yellow),var(--riso-orange),var(--riso-pink),var(--riso-blue),var(--community-green)); }
.page-gallery .gallery-section { padding-block:clamp(2.75rem,5vw,5rem); }
.page-gallery .gallery-intro { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(2rem,5vw,5rem); align-items:start; margin-bottom:2rem; }
.page-gallery .gallery-intro > * { min-width:0; }
.page-gallery .gallery-eyebrow { display:block; font-size:.9rem; letter-spacing:.075em; text-transform:uppercase; font-weight:700; margin-bottom:.85rem; }
.page-gallery .gallery-text-link { display:inline-block; padding-block:.65rem; font-weight:700; }
.page-gallery .gallery-controls { display:flex; flex-wrap:wrap; gap:.75rem; margin-block:1.5rem; }
.page-gallery .gallery-controls button { font:inherit; border:2px solid var(--rich-black); border-radius:999px; min-height:44px; padding:.6rem 1.1rem; background:var(--paper); color:var(--rich-black); cursor:pointer; }
.page-gallery .gallery-controls button[aria-pressed="true"] { background:var(--riso-yellow); text-decoration:underline; text-underline-offset:.2em; }
.page-gallery .gallery-status { min-height:1.75em; margin:1rem 0; }
.page-gallery .gallery-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:clamp(1rem,1.6vw,1.75rem); align-items:start; }
/* Keep document/focus order left-to-right, unlike CSS columns or dense packing.
   Photos keep their own ratios: no square crops, measurement loop or masonry JS. */
.page-gallery .gallery-tile { margin:0; min-width:0; }
.page-gallery .gallery-tile > a { display:block; border:2px solid var(--rich-black); border-radius:18px; background:#e7e7e3; overflow:hidden; }
.page-gallery .gallery-tile > a:hover { box-shadow:5px 5px 0 var(--riso-yellow); }
.page-gallery .gallery-tile:nth-child(3n+2) > a:hover { box-shadow:5px 5px 0 var(--riso-pink); }
.page-gallery .gallery-tile:nth-child(3n) > a:hover { box-shadow:5px 5px 0 var(--community-green); }
.page-gallery .gallery-tile picture { display:block; }
.page-gallery .gallery-tile img { display:block; width:100%; height:auto; object-fit:contain; }
.page-gallery .gallery-tile figcaption { padding:.75rem .15rem 1.25rem; line-height:1.5; font-size:1rem; }
.page-gallery .gallery-tile .gallery-image-error { display:block; padding:1rem; color:var(--rich-black); background:#fbf8d9; }
.page-gallery .gallery-paging { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; margin-top:2rem; }
.page-gallery .gallery-paging .btn { font:inherit; }
.page-gallery .gallery-paging .btn:disabled { cursor:default; opacity:.6; transform:none !important; }
.page-gallery .gallery-context { background:var(--paper); border-block:1px solid var(--line); }
.page-gallery .gallery-context .gallery-intro { margin-bottom:0; }
.page-gallery .gallery-notice { padding:1.25rem; border-left:5px solid var(--riso-yellow); background:var(--paper); border-radius:0 16px 16px 0; }
.page-gallery .brand-sparks { display:none; }
.page-gallery > footer { margin-top:0 !important; }
.page-gallery .footer-container > * { min-width:0; overflow-wrap:anywhere; }
/* Native dialog goes into the top layer, above the unchanged sticky header. */
.page-gallery .gallery-viewer { width:min(94vw,100rem); max-width:none; max-height:94dvh; padding:clamp(.75rem,2vw,1.5rem); border:2px solid var(--rich-black); border-radius:20px; background:var(--paper-bg); color:var(--rich-black); overflow:auto; }
.page-gallery .gallery-viewer::backdrop { background:rgba(0,0,0,.86); }
.page-gallery .viewer-toolbar { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:.75rem; }
.page-gallery .viewer-toolbar p { margin:0; font-size:1rem; }
.page-gallery .viewer-toolbar .btn { width:auto; font:inherit; min-width:5rem; }
.page-gallery .viewer-stage { display:flex; justify-content:center; align-items:center; height:min(68dvh,64rem); background:#e7e7e3; border-radius:12px; overflow:hidden; touch-action:pan-y pinch-zoom; }
.page-gallery .viewer-stage picture { display:contents; }
.page-gallery .viewer-stage img { display:block; width:auto; height:auto; max-width:100%; max-height:100%; object-fit:contain; }
.page-gallery .viewer-caption { margin:1rem 0 .35rem; font-size:1.1rem; line-height:1.5; }
.page-gallery .viewer-details { margin:.35rem 0; font-size:.95rem; }
.page-gallery .viewer-actions { display:flex; flex-wrap:wrap; gap:.75rem; justify-content:space-between; align-items:center; margin-top:1rem; }
.page-gallery .viewer-actions .btn { width:auto; font:inherit; min-width:6rem; }
.page-gallery .viewer-error { padding:1rem; }
.page-gallery.gallery-modal-open { overflow:hidden; }
@media (max-width:1799px) { .page-gallery .gallery-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media (max-width:1399px) { .page-gallery .gallery-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:959px) { .page-gallery .gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .page-gallery .gallery-intro { gap:2rem; } }
@media (max-width:599px) {
  .page-gallery .gallery-grid,.page-gallery .gallery-intro { grid-template-columns:1fr; }
  .page-gallery .gallery-hero::before { inset-inline-start:20%; opacity:.1; }
  .page-gallery .gallery-hero h1 { font-size:clamp(2.3rem,9.5vw,3.8rem); }
  .page-gallery .gallery-hero .kicker::before { width:1.5rem !important; flex-shrink:0; }
  .page-gallery .gallery-paging .btn { width:auto; }
  .page-gallery .gallery-viewer { width:calc(100% - 1rem); padding:.75rem; }
  .page-gallery .viewer-stage { height:55dvh; }
  .page-gallery .viewer-actions { gap:.75rem; }
}
@media (prefers-reduced-motion:reduce) {
  .page-gallery *, .page-gallery *::before, .page-gallery *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
  .page-gallery .btn:hover { transform:none !important; }
}
