/* Sandy Photography — WordPress integration styles (additions to the V10 split sheets).
   Scoped to plugin roots / photography surfaces. */

/* Gallery & viewer roots inside Elementor / canvas templates. */
.sandy-photo-root{position:relative}
.sandy-photo-gallery .infinite-home{height:calc(100dvh - var(--wp-admin--admin-bar--height,0px))}
.elementor-widget-shortcode:has(.sandy-photo-root),.e-con.sandy-photo-container{--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;--gap:0px;--row-gap:0px;--column-gap:0px}
/* Elementor editor preview: static, never captures the editor's own scrolling. */
.elementor-editor-active .sandy-photo-gallery .infinite-home{height:100vh}
.elementor-editor-active .sandy-photo-gallery .wall-scroll{overflow:hidden;pointer-events:none}
.elementor-editor-active .sandy-photo-viewer .viewer{height:100vh}

.sandy-photo-empty,.sandy-photo-notice{position:fixed;z-index:30;left:50%;transform:translateX(-50%);margin:0;font:400 11px/1.4 var(--sandy-body);letter-spacing:.09em;text-transform:uppercase;text-align:center;color:var(--sandy-black)}
.sandy-photo-empty{top:62%}
.sandy-photo-notice{top:68px;background:var(--sandy-paper);padding:6px 10px}
.sandy-photo-noscript{list-style:none;margin:0;padding:120px 4vw;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:4vw;position:relative;z-index:4}
.sandy-photo-noscript img{width:100%;height:auto}

/* Elastic fallbacks: a tile whose texture failed keeps its DOM image. */
.elastic-ready .wall-lane .wall-photo.no-texture img{opacity:1!important}
.wall-photo.is-broken{background:#e6e3de}
.sandy-sample-label{display:inline-block;margin-top:4px;letter-spacing:.06em;font-weight:600}

/* Shared menu: nested WordPress menu items, accessible and visually subordinate. */
.menu-main .menu-group{display:flex;flex-direction:column;align-items:flex-start;gap:.14em}
.menu-main .menu-sub{list-style:none;margin:0;padding:0 0 0 .08em;display:flex;flex-wrap:wrap;gap:.35em 1.1em;font-size:.24em;line-height:1.1;letter-spacing:-.01em;font-weight:900}
.menu-main .menu-sub .menu-sub{font-size:1em;padding-left:1em}
.menu-main .menu-sub a:hover{opacity:.72}
.menu-admin-notice{display:block;max-width:380px;font:400 13px/1.4 var(--sandy-body);letter-spacing:0;color:#cfcfcf}
.fullscreen-menu[inert]{pointer-events:none}

/* Essays list (real posts) — V10 essay-row + pagination/empty state. */
.sandy-essays-list .essay-copy strong{text-transform:uppercase}
.sandy-essays-list .essay-noimage{display:block;width:100%;aspect-ratio:3/2;background:#e4e1dc}
.sandy-essays-list .essay-row>img{height:auto}
.sandy-essays-empty{border-top:1px solid #242424;border-bottom:1px solid #242424;padding:7vh 0;margin:0;font:400 15px/1.5 var(--sandy-body)}
.sandy-essays-pagination{display:flex;justify-content:space-between;align-items:center;padding:6vh 0 0;font:900 18px var(--sandy-display);text-transform:uppercase}
.sandy-essays-pagination__count{font:400 11px var(--sandy-body);letter-spacing:.08em}
.sandy-essays-pagination a:hover{text-decoration:underline;text-underline-offset:5px}

/* Essay detail — Elementor Pro Single Post template (and plugin fallback). */
.e-con.article-layout{--display:block;--padding-top:6vh;--padding-right:max(6vw,20px);--padding-bottom:17vh;--padding-left:max(6vw,20px)}
.sandy-article>.elementor-widget,.sandy-article>.elementor-element{margin-block-end:0!important;width:100%}
.sandy-article .elementor-widget-container{margin:0;padding:0}
.sandy-article .sandy-article-title .elementor-heading-title,.sandy-article h1.elementor-heading-title{font:900 clamp(72px,11vw,220px)/.86 var(--sandy-display);letter-spacing:-.065em;max-width:1500px;margin:4vh 0 7vh;color:inherit;text-transform:none}
.sandy-article .sandy-article-hero img,.sandy-article img.article-hero{display:block;width:100%;max-width:none;height:min(66vh,800px);object-fit:cover;border-radius:0}
.sandy-article .article-body.elementor-widget{max-width:680px;margin-left:auto;margin-right:auto}
.article-body>*+*{margin-top:22px}
.article-body h2{font:900 clamp(32px,3.4vw,58px)/.95 var(--sandy-display);letter-spacing:-.045em;margin:8vh 0 3vh}
.article-body h3{font:900 clamp(24px,2.2vw,36px)/1 var(--sandy-display);letter-spacing:-.03em;margin:6vh 0 2vh}
.article-body a{border-bottom:1px solid currentColor}
.article-body a:hover{opacity:.7}
.article-body ul,.article-body ol{padding-left:1.2em}
.article-body li+li{margin-top:.45em}
.article-body blockquote{margin:7vh 0;padding:0 0 0 clamp(18px,4vw,60px);border-left:1px solid #111;font:400 clamp(20px,2vw,30px)/1.35 var(--sandy-body)}
.article-body blockquote cite{display:block;margin-top:14px;font:400 11px var(--sandy-body);letter-spacing:.08em;font-style:normal;text-transform:uppercase}
.article-body figure,.article-body .wp-block-image{margin:7vh 0}
.article-body img{display:block;max-width:100%;height:auto}
.article-body figcaption,.article-body .wp-element-caption,.article-body .wp-caption-text{text-align:right;font:400 10px var(--sandy-body);margin-top:10px}
.article-body .wp-block-gallery,.article-body .gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.article-body .wp-block-gallery figure,.article-body .gallery figure{margin:0}
.article-body .alignwide,.article-body .alignfull{width:min(88vw,1240px);max-width:none;margin-left:50%;transform:translateX(-50%)}
.article-body hr{border:0;border-top:1px solid #242424;margin:8vh 0}
@media(max-width:650px){
 .sandy-article .sandy-article-title .elementor-heading-title,.sandy-article h1.elementor-heading-title{font-size:19vw}
 .sandy-article .sandy-article-hero img,.sandy-article img.article-hero{height:48vh}
 .e-con.article-layout{--padding-top:8vh;--padding-right:18px;--padding-bottom:14vh;--padding-left:18px}
 .article-body .wp-block-gallery,.article-body .gallery{grid-template-columns:1fr}
 .sandy-essays-pagination{font-size:15px}
}

/* ===================== 1.1 — design tokens (defaults = V10; Settings → Design overrides) ===================== */
:root{--sandy-muted:#373737;--sandy-line:#242424;--sandy-accent:#b4b3b0;--sandy-menu-bg:#a9a9a9;--sandy-menu-shade:#090909;--sandy-menu-text:#ffffff;--sandy-menu-bio:#111111;
 --sandy-selection-bg:#111111;--sandy-selection-text:#ffffff;--sandy-thumb-outline:rgba(0,0,0,.28);--sandy-focus:#111111;
 --sandy-cookie-bg:rgba(226,226,226,.62);--sandy-cookie-text:#0a0a0a;--sandy-cookie-muted:#5f5f5f;--sandy-button-bg:#050505;--sandy-button-text:#ffffff;--sandy-link-hover:#0a0a0a;--sandy-island-bg:#020108;--sandy-like-idle:#c0c1c3;--sandy-like-active:#e2264d;--sandy-island-text:#ffffff;--sandy-image-stroke:rgba(10,10,10,.16);--sandy-img-radius:0px;--sandy-thumb-radius:0px;--sandy-img-stroke-w:0px;--sandy-menu-link-hover:#ffffff;--sandy-home-sound:#0a0a0a;
 --sandy-display-weight:900;--sandy-body-weight:400;--sandy-bar:var(--wp-admin--admin-bar--height,0px)}
body.sandy-photo-surface ::selection{background:var(--sandy-selection-bg);color:var(--sandy-selection-text)}
body.sandy-photo-surface .essay-row,body.sandy-photo-surface .essay-row:last-child,.sandy-essays-empty{border-color:var(--sandy-line)}
body.sandy-photo-surface .contact-strip{border-top-color:var(--sandy-black)}
body.sandy-photo-surface .heading-dot{color:var(--sandy-accent)}
body.sandy-photo-surface .home-hint{color:var(--sandy-muted)}
body.sandy-photo-surface .thumb[aria-current='true'] img{box-shadow:0 0 0 1px var(--sandy-thumb-outline)}
body.sandy-photo-surface .wall-photo:focus-visible,body.sandy-photo-surface .thumb:focus-visible{outline-color:var(--sandy-focus)}
body.sandy-photo-surface{color:var(--sandy-black);background:var(--sandy-paper)}

/* ===================== 1.1 — menu: plain links, no hover effects, theme colours never leak ===================== */
body .fullscreen-menu a,body .fullscreen-menu a:hover,body .fullscreen-menu a:focus,body .fullscreen-menu a:active,body .fullscreen-menu a:visited{color:var(--sandy-menu-text);text-decoration:none;background:none;box-shadow:none;transform:none;opacity:1;transition:none}
body .fullscreen-menu a:focus-visible{outline:2px solid currentColor;outline-offset:6px}
body .fullscreen-menu .menu-main a{font-family:var(--sandy-display);font-weight:var(--sandy-display-weight)}
.menu-main .menu-sub a:hover{opacity:1}
.menu-portrait{z-index:0}.menu-shade{z-index:0}

/* Mute switch (animated strokes) + triangular volume selector, white on the dark menu. */
.menu-audio{gap:clamp(18px,2.4vw,34px)}
.volume-icon{position:relative;display:inline-grid;place-items:center;width:44px;height:44px;cursor:pointer;-webkit-tap-highlight-color:transparent;color:var(--sandy-menu-text)}
.volume-icon__input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.volume-icon svg{display:block;width:34px;height:30px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:6px;pointer-events:none;--duration:.5s}
.volume-icon svg path{animation:var(--name) var(--duration) ease forwards}
.volume-icon svg path:nth-child(2),.volume-icon svg path:nth-child(3){stroke-dashoffset:1px}
.volume-icon__input:checked+svg path:nth-child(1){--name:sandy-vol-shape}
.volume-icon__input:checked+svg path:nth-child(2){--name:sandy-vol-small}
.volume-icon__input:checked+svg path:nth-child(3){--name:sandy-vol-large}
.volume-icon__input:not(:checked)+svg path:nth-child(1){--name:sandy-vol-shape-r}
.volume-icon__input:not(:checked)+svg path:nth-child(2){--name:sandy-vol-small-r}
.volume-icon__input:not(:checked)+svg path:nth-child(3){--name:sandy-vol-large-r}
.volume-icon:has(.volume-icon__input:focus-visible){outline:2px solid currentColor;outline-offset:2px}
@keyframes sandy-vol-small{0%,30%{stroke-dasharray:0 0 30px 64px}40%{stroke-dashoffset:16px}80%,100%{stroke-dashoffset:1px}70%{stroke-dasharray:0 43px 30px 64px}100%{stroke-dasharray:0 39px 30px 64px}}
@keyframes sandy-vol-small-r{0%{stroke-dasharray:0 39px 30px 64px}0%,40%{stroke-dashoffset:1px}70%{stroke-dashoffset:16px}70%,100%{stroke-dasharray:0 0 30px 64px}}
@keyframes sandy-vol-large{0%,30%{stroke-dasharray:0 0 50px 84px}40%{stroke-dashoffset:16px}80%,100%{stroke-dashoffset:1px}70%{stroke-dasharray:0 82px 32px 84px}100%{stroke-dasharray:0 78px 32px 84px}}
@keyframes sandy-vol-large-r{0%{stroke-dasharray:0 78px 32px 84px}0%,40%{stroke-dashoffset:1px}70%{stroke-dashoffset:16px}70%,100%{stroke-dasharray:0 0 50px 84px}}
@keyframes sandy-vol-shape{0%{stroke-dasharray:60px 0 184px;stroke-dashoffset:0}70%{stroke-dasharray:63px 51px 184px;stroke-dashoffset:21px}100%{stroke-dasharray:59px 47px 184px;stroke-dashoffset:17px}}
@keyframes sandy-vol-shape-r{0%{stroke-dasharray:59px 47px 184px;stroke-dashoffset:17px}100%{stroke-dasharray:60px 0 184px;stroke-dashoffset:0}}
.volume-tri{--v:.8;--tw:34px;--th:17px;position:relative;width:0;height:0;border-style:solid;border-width:var(--th) var(--tw);border-color:transparent color-mix(in srgb,var(--sandy-menu-text) 24%,transparent) color-mix(in srgb,var(--sandy-menu-text) 24%,transparent) transparent;cursor:pointer;touch-action:none;outline-offset:8px}
.volume-tri__fill{position:absolute;left:calc(var(--tw)*-1);bottom:calc(var(--th)*-1);width:0;height:0;border-style:solid;border-color:transparent var(--sandy-menu-text) var(--sandy-menu-text) transparent;border-width:calc(var(--th)*var(--v)) calc(var(--tw)*var(--v));pointer-events:none}
.volume-tri.is-muted{opacity:.38}
.volume-tri:focus-visible{outline:2px solid var(--sandy-menu-text)}
@media(max-width:650px){.volume-tri{--tw:28px;--th:14px}.volume-icon svg{width:28px;height:25px}}
@media(prefers-reduced-motion:reduce){.volume-icon svg{--duration:.01s}}

/* ===================== 1.1 — viewer: true vertical centring, WordPress admin bar ===================== */
.site-plus{top:calc(12px + var(--sandy-bar))}
.sandy-photo-viewer{--sandy-viewer-gap:clamp(51px,5.3vh,80px)}
.sandy-photo-viewer .viewer{height:calc(100dvh - var(--sandy-bar))}
.sandy-photo-viewer .thumb-rail{top:var(--sandy-bar)}
.sandy-photo-viewer .top-back{top:calc(19px + var(--sandy-bar))}
.sandy-photo-viewer .focus-info-toggle{top:calc(68px + var(--sandy-bar))}
@media(min-width:651px){.sandy-photo-viewer .focus-stage{top:var(--sandy-viewer-gap);bottom:var(--sandy-viewer-gap)}}
@media(max-width:650px){.site-plus{top:calc(6px + var(--sandy-bar))}.sandy-photo-viewer .top-back{top:calc(17px + var(--sandy-bar))}.sandy-photo-viewer .focus-info-toggle{top:calc(55px + var(--sandy-bar))}.sandy-photo-viewer .thumb-rail{top:auto}}
.photo-settings{letter-spacing:.02em}
.sandy-photo-gallery .infinite-home{height:calc(100dvh - var(--sandy-bar))}

/* ===================== 1.1 — cookie notice (glass) ===================== */
.sandy-cookie{position:fixed;z-index:95;left:clamp(12px,2.2vw,28px);bottom:clamp(12px,2.2vw,28px);width:min(520px,calc(100vw - 24px));padding:clamp(22px,2.4vw,34px) clamp(22px,2.6vw,38px) clamp(22px,2.4vw,30px);border-radius:clamp(26px,3vw,44px);
 background:var(--sandy-cookie-bg);-webkit-backdrop-filter:blur(26px) saturate(1.5);backdrop-filter:blur(26px) saturate(1.5);border:1px solid color-mix(in srgb,#fff 55%,transparent);box-shadow:0 18px 60px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.5);
 color:var(--sandy-cookie-text);font:var(--sandy-body-weight) 15px/1.45 var(--sandy-body);opacity:0;transform:translateY(12px);transition:opacity .35s ease,transform .45s cubic-bezier(.2,.8,.2,1)}
.sandy-cookie[hidden]{display:none}
.sandy-cookie.is-visible{opacity:1;transform:none}
.sandy-cookie h2{margin:0 52px 12px 0;font:500 clamp(24px,2.3vw,32px)/1.1 var(--sandy-body);letter-spacing:-.02em;color:inherit}
.sandy-cookie p{margin:0 0 22px;color:var(--sandy-cookie-muted);font-size:clamp(14px,1.1vw,17px)}
.sandy-cookie p a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.sandy-cookie__close{position:absolute;top:16px;right:16px;width:46px;height:46px;border-radius:50%;border:0;background:color-mix(in srgb,#fff 62%,transparent);display:grid;place-items:center;cursor:pointer;color:var(--sandy-cookie-muted)}
.sandy-cookie__close svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.6;fill:none}
.sandy-cookie__actions{display:flex;gap:10px;flex-wrap:wrap}
.sandy-cookie__btn{flex:1 1 160px;min-height:52px;border-radius:999px;font:500 clamp(15px,1.25vw,19px)/1 var(--sandy-body);cursor:pointer;padding:0 22px;border:1px solid color-mix(in srgb,var(--sandy-cookie-text) 30%,transparent);background:transparent;color:var(--sandy-cookie-text)}
.sandy-cookie__btn--primary{background:var(--sandy-button-bg);color:var(--sandy-button-text);border-color:var(--sandy-button-bg)}
.sandy-cookie__prefs{display:grid;gap:10px;margin:0 0 20px}
.sandy-cookie__prefs[hidden]{display:none}
.sandy-cookie__row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 0;border-top:1px solid color-mix(in srgb,var(--sandy-cookie-text) 14%,transparent);font-size:14px}
.sandy-cookie__row small{display:block;color:var(--sandy-cookie-muted);font-size:12px}
.sandy-cookie__row input{width:20px;height:20px;accent-color:var(--sandy-button-bg)}
.sandy-cookie :focus-visible{outline:2px solid var(--sandy-cookie-text);outline-offset:3px}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.sandy-cookie{background:color-mix(in srgb,var(--sandy-cookie-bg) 100%,#e2e2e2)}}
@media(prefers-reduced-motion:reduce){.sandy-cookie{transition:none}}
@media(max-width:650px){.menu-bio{bottom:calc(3.6% + 60px)}}

/* ===================== 1.2 — links: no underlines, "same word slides in" hover ===================== */
body.sandy-photo-surface .editorial-home,body.sandy-photo-surface .editorial-home:hover,body.sandy-photo-surface .editorial-home:focus,
body.sandy-photo-surface .text-link,body.sandy-photo-surface .text-link:hover,
body.sandy-photo-surface .contact-strip>a,body.sandy-photo-surface .contact-strip>a:hover,
body.sandy-photo-surface .page-footer a,body.sandy-photo-surface .page-footer a:hover,
body.sandy-photo-surface .top-back,body.sandy-photo-surface .top-back:hover,body.sandy-photo-surface .top-back:active,
body.sandy-photo-surface .sandy-essays-pagination a,body.sandy-photo-surface .sandy-essays-pagination a:hover,
body.sandy-photo-surface .menu-social a,body.sandy-photo-surface .menu-main a,body.sandy-photo-surface a.has-lfx,body.sandy-photo-surface a.has-lfx:hover,body.sandy-photo-surface a.has-lfx:active{text-decoration:none!important;border-bottom:0!important;box-shadow:none;opacity:1}
/* The clip window is the word itself (clip-path keeps the text baseline, unlike overflow:hidden). */
.sandy-lfx{display:inline-block;position:relative;vertical-align:baseline;clip-path:inset(0 -.35em 0 -.35em);white-space:nowrap}
.sandy-lfx__in{position:relative;display:inline-block;transition:transform .3s;will-change:transform}
.sandy-lfx__in::before{content:attr(data-hover);position:absolute;top:100%;left:0;width:100%;white-space:nowrap;font-weight:var(--sandy-lfx-weight,800);color:var(--sandy-link-hover);transform:translate3d(0,0,0)}
.fullscreen-menu .sandy-lfx__in::before{color:var(--sandy-menu-link-hover)}
.menu-main .sandy-lfx__in::before,.top-back .sandy-lfx__in::before,.editorial-home .sandy-lfx__in::before,.text-link .sandy-lfx__in::before,.contact-strip .sandy-lfx__in::before,.page-footer .sandy-lfx__in::before,.menu-social .sandy-lfx__in::before{font-weight:inherit}
a:hover .sandy-lfx__in,a:focus-visible .sandy-lfx__in{transform:translateY(-100%)}
@media (hover:none){a:hover .sandy-lfx__in{transform:none}}
@media (prefers-reduced-motion:reduce){.sandy-lfx__in{transition:none}}

/* ===================== 1.2 — menu sound controls: labelled, one shared centre line ===================== */
.menu-audio{align-items:center;gap:clamp(26px,3.2vw,52px)}
.menu-audio .menu-audio__item{display:inline-flex;align-items:center;gap:12px;height:44px;margin:0;font:700 11px/1 var(--sandy-body);letter-spacing:.09em;text-transform:uppercase;white-space:nowrap;color:var(--sandy-menu-text);cursor:pointer}
.menu-audio .menu-audio__volume{cursor:default;gap:14px}
.menu-audio__text{display:inline-block;min-width:8.5ch}
.menu-audio__volume .menu-audio__text{min-width:0}
.menu-audio__text b{font-weight:400;opacity:.7;margin-left:4px;font-variant-numeric:tabular-nums}
.menu-audio .volume-icon{width:40px;height:44px}
.menu-audio .volume-icon svg{width:30px;height:27px}
.menu-audio .volume-tri{--tw:30px;--th:13px;transform:translateY(-1px)}
.menu-audio input.volume-icon__input{width:100%;height:100%}
@media(max-width:650px){.menu-audio .menu-audio__item{font-size:10px;gap:8px}.menu-audio{gap:22px}.menu-audio .volume-tri{--tw:24px;--th:11px}.menu-audio__text b{display:none}}

/* ===================== 1.2 — homepage sound toggle (bottom right, small, dark) ===================== */
.home-sound{position:fixed;z-index:30;right:clamp(16px,2vw,28px);bottom:calc(clamp(12px,1.6vw,22px));display:inline-flex;align-items:center;gap:7px;padding:8px 2px;border:0;background:none;cursor:pointer;color:var(--sandy-home-sound);font:700 10px/1 var(--sandy-body);letter-spacing:.1em;text-transform:uppercase;-webkit-tap-highlight-color:transparent}
.home-sound__dot{width:6px;height:6px;border-radius:50%;background:currentColor;transition:transform .25s ease,opacity .25s ease}
.home-sound.is-muted .home-sound__dot{transform:scale(.5);opacity:.4}
.home-sound:focus-visible{outline:2px solid var(--sandy-focus);outline-offset:4px}
.elementor-editor-active .home-sound{position:absolute}

/* ===================== 1.2 — viewer: one right-hand column (BACK, info, next arrow, caption) ===================== */
.sandy-photo-viewer{--sandy-viewer-right:clamp(18px,2.3vw,54px)}
.sandy-photo-viewer .top-back{right:var(--sandy-viewer-right)}
.sandy-photo-viewer .focus-info-toggle{right:calc(var(--sandy-viewer-right) - 7.5px);top:calc(19px + var(--sandy-bar) + clamp(22px,2vw,35px) + 14px)}
.sandy-photo-viewer .focus-next{right:calc(var(--sandy-viewer-right) - 8.5px)}
.sandy-photo-viewer .photo-caption{right:var(--sandy-viewer-right)}
.photo-caption .photo-place{display:block;font-weight:600;margin-bottom:3px}
@media(max-width:650px){.sandy-photo-viewer{--sandy-viewer-right:17px}.sandy-photo-viewer .focus-info-toggle{top:calc(17px + var(--sandy-bar) + 23px + 10px)}}

/* ===================== 1.2 — contact popup (glass, same language as the cookie notice) ===================== */
.sandy-contact{position:fixed;inset:0;z-index:130;display:grid;place-items:center;padding:16px;opacity:0;transition:opacity .3s ease}
.sandy-contact[hidden]{display:none}
.sandy-contact.is-visible{opacity:1}
.sandy-contact__backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--sandy-paper) 28%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.sandy-contact__card{position:relative;width:min(540px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:clamp(24px,2.6vw,38px) clamp(22px,2.8vw,40px) clamp(22px,2.4vw,32px);border-radius:clamp(26px,3vw,44px);
 background:var(--sandy-cookie-bg);-webkit-backdrop-filter:blur(26px) saturate(1.5);backdrop-filter:blur(26px) saturate(1.5);border:1px solid color-mix(in srgb,#fff 55%,transparent);box-shadow:0 18px 60px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.5);
 color:var(--sandy-cookie-text);font:var(--sandy-body-weight,400) 15px/1.45 var(--sandy-body);transform:translateY(14px) scale(.985);transition:transform .45s cubic-bezier(.2,.8,.2,1);outline:0}
.sandy-contact.is-visible .sandy-contact__card{transform:none}
.sandy-contact h2{margin:0 52px 12px 0;font:500 clamp(24px,2.3vw,32px)/1.1 var(--sandy-body);letter-spacing:-.02em;color:inherit;text-transform:none}
.sandy-contact p{margin:0 0 20px;color:var(--sandy-cookie-muted);font-size:clamp(14px,1.1vw,17px)}
.sandy-contact__name{display:block;margin:0 0 6px;font-weight:600;font-size:15px}
.sandy-contact__rows{display:grid;margin:0 0 22px}
.sandy-contact__row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:11px 0;border-top:1px solid color-mix(in srgb,var(--sandy-cookie-text) 14%,transparent);font-size:14px}
.sandy-contact__row>span:first-child{color:var(--sandy-cookie-muted);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.sandy-contact__value{text-align:right;overflow-wrap:anywhere}
.sandy-contact__value a{color:inherit;text-decoration:none}
.sandy-contact__value a:hover{text-decoration:underline;text-underline-offset:3px}
.sandy-contact__btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none!important}
.sandy-contact__admin{font-size:13px!important;margin:0!important}
.sandy-contact :focus-visible{outline:2px solid var(--sandy-cookie-text);outline-offset:3px}
html.contact-open{overflow:hidden}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.sandy-contact__card{background:color-mix(in srgb,var(--sandy-cookie-bg) 100%,#e2e2e2)}}
@media(prefers-reduced-motion:reduce){.sandy-contact,.sandy-contact__card{transition:none}}
@media(max-width:650px){.sandy-contact{place-items:end center}.sandy-contact__row{flex-direction:column;gap:3px}.sandy-contact__value{text-align:left}}
@media(max-width:650px){.menu-social{bottom:calc(3.6% + 60px + 118px)}}
@media(max-width:650px) and (max-height:700px){.menu-main{top:14%;font-size:min(12vw,7.4vh);gap:min(19px,2.2vh)}}

/* ===================== 1.3 — header island (replaces the + button everywhere) ===================== */
.site-plus{display:none!important}
.sandy-island{position:fixed;z-index:120;top:calc(14px + var(--sandy-bar,0px));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:clamp(10px,1.3vw,22px);padding:6px;border-radius:999px;background:var(--sandy-island-bg);color:var(--sandy-island-text);font:400 clamp(15px,1.12vw,18px)/1 var(--sandy-body);letter-spacing:-.01em;box-shadow:0 10px 34px rgba(0,0,0,.14);-webkit-tap-highlight-color:transparent;transition:background-color .35s ease,color .35s ease;view-transition-name:sandy-island}
body .sandy-island button{appearance:none;-webkit-appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:inherit;font:inherit;letter-spacing:inherit;line-height:1;text-transform:none;text-decoration:none;min-height:0;min-width:0;cursor:pointer;transform:none}
body .sandy-island button:hover,body .sandy-island button:focus{background:none;color:inherit}
.sandy-island :focus-visible{outline:2px solid currentColor;outline-offset:3px}
body .sandy-island .sandy-island__menu{display:inline-flex;align-items:center;gap:12px;height:38px;padding:0 6px 0 12px;border-radius:999px}
.sandy-island__burger{position:relative;display:block;width:28px;height:9px}
.sandy-island__burger i{position:absolute;left:0;width:100%;height:1.5px;border-radius:2px;background:currentColor;transition:top .32s var(--sandy-ease),transform .32s var(--sandy-ease)}
.sandy-island__burger i:first-child{top:0}
.sandy-island__burger i:last-child{top:calc(100% - 1.5px)}
.menu-open .sandy-island__burger i{top:calc(50% - .75px)}
.menu-open .sandy-island__burger i:first-child{transform:rotate(45deg) scaleX(.78)}
.menu-open .sandy-island__burger i:last-child{transform:rotate(-45deg) scaleX(.78)}
.sandy-island__label{display:grid;clip-path:inset(0 -.3em);line-height:1.15}
.sandy-island__label>span{grid-area:1/1;transition:transform .32s var(--sandy-ease),opacity .32s ease}
.sandy-island__label [data-island-label="close"]{transform:translateY(100%);opacity:0}
.menu-open .sandy-island__label [data-island-label="open"]{transform:translateY(-100%);opacity:0}
.menu-open .sandy-island__label [data-island-label="close"]{transform:none;opacity:1}
body .sandy-island .sandy-island__theme{position:relative;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:1px solid color-mix(in srgb,currentColor 22%,transparent)}
.sandy-island__theme svg{grid-area:1/1;width:19px;height:19px;fill:currentColor;transition:transform .45s var(--sandy-ease),opacity .3s ease}
.sandy-island__moon{opacity:0;transform:rotate(-70deg) scale(.6)}
html[data-sandy-theme="dark"] .sandy-island__sun{opacity:0;transform:rotate(70deg) scale(.6)}
html[data-sandy-theme="dark"] .sandy-island__moon{opacity:1;transform:none}
.sandy-island__rays{transform-origin:12px 12px;transition:transform .6s var(--sandy-ease)}
.sandy-island__theme:hover .sandy-island__rays{transform:rotate(45deg)}
.sandy-island__progress{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:38px;padding:0 12px;border-radius:999px;background:color-mix(in srgb,currentColor 20%,transparent);font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:650px){.sandy-island{top:calc(10px + var(--sandy-bar,0px));gap:8px;padding:5px;font-size:15px}body .sandy-island .sandy-island__menu{height:34px;gap:9px;padding:0 4px 0 9px}.sandy-island__burger{width:22px;height:8px}body .sandy-island .sandy-island__theme{width:34px;height:34px}.sandy-island__theme svg{width:17px;height:17px}.sandy-island__progress{height:34px;min-width:54px;padding:0 9px}}
@media(prefers-reduced-motion:reduce){.sandy-island *{transition:none!important}}
.elementor-editor-active .sandy-island{position:absolute}
/* Theme swap: a short cross-fade of the whole page (View Transitions; instant elsewhere). */
.is-theme-swap::view-transition-old(root){animation:sandy-theme-out .32s ease both}
.is-theme-swap::view-transition-new(root){animation:sandy-theme-in .32s ease both}
@keyframes sandy-theme-out{to{opacity:0}}
@keyframes sandy-theme-in{from{opacity:0}}

/* ===================== 1.3 — image shape (Design → Images) ===================== */
body.sandy-photo-surface .wall-photo img,body.sandy-photo-surface .focus-figure img.focus-photo,body.sandy-photo-surface .sandy-photo-noscript img{border-radius:var(--sandy-img-radius);outline:var(--sandy-img-stroke-w) solid var(--sandy-image-stroke);outline-offset:calc(var(--sandy-img-stroke-w) * -1)}
body.sandy-photo-surface .thumb img{border-radius:var(--sandy-thumb-radius);outline:var(--sandy-img-stroke-w) solid var(--sandy-image-stroke);outline-offset:calc(var(--sandy-img-stroke-w) * -1)}
body.sandy-photo-surface .wall-photo{border-radius:var(--sandy-img-radius)}

/* ===================== 1.3 — dark mode fixes for colours V10 hard-coded ===================== */
body.sandy-photo-surface .contact-strip{border-top-color:var(--sandy-black)}
body.sandy-photo-surface .essay-row,body.sandy-photo-surface .essay-row:last-child{border-color:var(--sandy-line)}
body.sandy-photo-surface .bottom-mist::after{background:linear-gradient(to bottom,color-mix(in srgb,var(--sandy-paper) 0%,transparent),color-mix(in srgb,var(--sandy-paper) 12%,transparent) 23%,color-mix(in srgb,var(--sandy-paper) 60%,transparent) 70%,var(--sandy-paper) 100%)}
body.sandy-photo-surface .wall-photo.is-broken{background:color-mix(in srgb,var(--sandy-black) 8%,var(--sandy-paper))}
body.sandy-photo-surface .page-transition-overlay{background:var(--sandy-paper)}
html[data-sandy-theme="dark"] body.sandy-photo-surface :is(.nav-svg,.focus-info-toggle img,.inline-svg,.essay-arrow img,.editorial-home img,.text-link img,.page-footer img){filter:invert(1)}
html[data-sandy-theme="dark"] body.sandy-photo-surface{background:var(--sandy-paper);color:var(--sandy-black)}
html[data-sandy-theme="dark"] .sandy-cookie__close{background:color-mix(in srgb,#fff 14%,transparent)}
html[data-sandy-theme="dark"] .sandy-cookie,html[data-sandy-theme="dark"] .sandy-contact__card{border-color:color-mix(in srgb,#fff 14%,transparent);box-shadow:0 18px 60px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.08)}
html[data-sandy-theme="dark"] .sandy-island{box-shadow:0 10px 34px rgba(0,0,0,.5)}
html[data-sandy-theme="dark"] body.sandy-photo-surface .about-hero h1{mix-blend-mode:screen}

/* ===================== 1.4 — server-rendered photograph (SEO) ===================== */
.sandy-photo-viewer .focus-figure[style*="--sandy-ratio"]:not([style*="width"]){height:100%;aspect-ratio:var(--sandy-ratio)}
.sandy-photo-h1{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* ===================== 1.4 — heart reactions (viewer, bottom left above the camera details) ===================== */
.photo-left{position:fixed;z-index:19;left:clamp(15px,5.7vw,140px);bottom:21px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;max-width:35%;transition:opacity .22s ease}
.photo-left .photo-exif{position:static;max-width:none;left:auto;bottom:auto}
.sandy-surface-viewer.details-hidden .photo-left{opacity:0;pointer-events:none}
body .photo-like{position:relative;display:inline-flex;align-items:center;gap:7px;margin:0 0 0 -2px;padding:0;border:0;background:none;box-shadow:none;cursor:pointer;line-height:1;color:var(--sandy-like-idle);font:500 12px/1 var(--sandy-body);letter-spacing:.02em;overflow:visible;-webkit-tap-highlight-color:transparent;transition:color .2s}
body .photo-like:hover,body .photo-like:focus{background:none;color:color-mix(in srgb,var(--sandy-like-idle) 75%,var(--sandy-black))}
body .photo-like.is-liked,body .photo-like.is-liked:hover{color:var(--sandy-like-active)}
.photo-like svg{display:block;width:28px;height:28px;fill:currentColor;pointer-events:none;transform-origin:50% 50%}
.photo-like__count{color:var(--sandy-black);font-variant-numeric:tabular-nums;min-width:1ch}
.photo-like:focus-visible{outline:2px solid var(--sandy-focus);outline-offset:4px;border-radius:4px}
.photo-like__fx{position:absolute;left:14px;top:50%;pointer-events:none;will-change:transform,opacity}
.photo-like__fx.is-dot{width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:var(--sandy-like-active)}
.photo-like__fx.is-ring{box-sizing:content-box;border:7px solid var(--sandy-like-active);border-radius:50%;transform:translate(-50%,-50%);opacity:0}
@media (max-width:900px){.photo-left{left:80px;max-width:40%}}
@media (max-width:650px){.photo-left{left:14px;bottom:135px;max-width:46%;gap:8px}.photo-like svg{width:26px;height:26px}}
.photo-left{z-index:22}
/* 1.4 — phones: the description is shown (V10 hid it), up to 4 lines under the place name. */
@media (max-width:650px){body.sandy-photo-surface .photo-caption span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;overflow:hidden;font-size:10px;line-height:1.35;margin-top:2px}body.sandy-photo-surface .photo-caption{max-width:52%}}
@media (max-width:650px){.sandy-photo-viewer .focus-stage{bottom:max(20vh,252px)}}
