:root{color-scheme:dark;--bg:#101010;--fg:#f5f3ee;--muted:#989895;--line:#353535;--panel:#171717;--shadow:0 22px 48px #0007;--ease:cubic-bezier(.22,1,.36,1)}
:root[data-theme=light]{color-scheme:light;--bg:#f0eee7;--fg:#1c1c1a;--muted:#6d6d68;--line:#cecac0;--panel:#e6e3db;--shadow:0 22px 45px #29271e24}
*{box-sizing:border-box}html{background:var(--bg);color:var(--fg);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}body{margin:0;min-height:100svh;background:var(--bg);transition:background .45s,color .45s;overflow-x:hidden}body:has(dialog[open]){overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;min-height:44px}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--fg);outline-offset:5px}button[hidden]{display:none!important}svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.25}img{display:block;max-width:100%}h1,h2,p{margin:0}::selection{background:var(--fg);color:var(--bg)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-80px;left:20px;z-index:100;padding:15px;background:var(--fg);color:var(--bg)}.skip:focus{top:20px}
/* The intro runs in CSS so slow or unavailable JavaScript cannot leave a cover on the gallery. */
.page-intro{display:none;pointer-events:none}
.intro-playing .page-intro{position:fixed;inset:0;z-index:90;display:grid;place-content:center;justify-items:center;gap:25px;background:var(--bg);color:var(--fg);animation:intro-exit .75s var(--ease) 1.05s both}
.intro-mark{display:flex;gap:.16em;overflow:hidden;font-size:clamp(38px,8vw,76px);font-weight:800;line-height:1.18}
.intro-mark span{display:block;animation:intro-letter .7s var(--ease) .08s both}
.intro-mark span:nth-child(2){animation-delay:.14s}.intro-mark span:nth-child(3){animation-delay:.2s}.intro-mark span:nth-child(4){animation-delay:.26s}.intro-mark span:nth-child(5){animation-delay:.32s}
.intro-line{display:block;width:36px;height:1px;background:currentColor;animation:intro-line .8s var(--ease) .25s both}
.intro-playing .orbit{animation:intro-gallery .9s var(--ease) .85s both}
.intro-playing :is(.site-header,.collection-nav,.gallery-caption,.gallery-position,.gesture-hint,.thumbnails){animation:intro-detail .75s var(--ease) 1.05s both}
@keyframes intro-letter{from{opacity:0;transform:translateY(110%)}to{opacity:1;transform:translateY(0)}}
@keyframes intro-line{from{opacity:0;transform:scaleX(0)}to{opacity:.5;transform:scaleX(1)}}
@keyframes intro-exit{from{opacity:1;visibility:visible}to{opacity:0;visibility:hidden}}
@keyframes intro-gallery{from{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:none}}
@keyframes intro-detail{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.site-header{height:112px;padding:0 5%;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:36px;position:relative;z-index:5}.brand{font-size:30px;font-weight:800;letter-spacing:.19em;line-height:1;display:inline-block;width:max-content}.primary-nav{display:flex;align-items:center;gap:42px}.primary-nav button{font-size:13px;position:relative}.primary-nav button:after{content:'';position:absolute;left:0;right:0;bottom:5px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s}.primary-nav button:hover:after{transform:scaleX(1)}.header-tools{justify-self:end;display:flex;gap:25px;align-items:center}.theme-toggle{display:flex;align-items:center;gap:11px;font-size:11px}.theme-word{transition:opacity .3s}.light-word{opacity:.45}.dark-word{opacity:1}[data-theme=light] .light-word{opacity:1}[data-theme=light] .dark-word{opacity:.45}.theme-track{width:43px;height:24px;border:1px solid var(--muted);border-radius:20px;padding:3px;display:block}.theme-track span{display:block;height:16px;width:16px;border-radius:50%;background:var(--fg);transform:translateX(18px);transition:transform .4s var(--ease),background .4s}[data-theme=light] .theme-track span{transform:translateX(0)}.menu-toggle{width:30px;display:none;flex-direction:column;justify-content:center;gap:6px}.menu-toggle span{display:block;width:25px;height:1px;background:currentColor}
.exhibition{--card-height:clamp(300px,48svh,550px);--max-card-width:540px;min-height:calc(100svh - 112px);padding-bottom:35px;display:flex;flex-direction:column;align-items:center;overflow:hidden}.collection-nav{display:flex;justify-content:center;gap:38px;max-width:100%;margin:10px 0 14px;padding:0 20px;flex-shrink:0}.collection-nav button,.work-filters button{position:relative;color:var(--muted);font-size:12px;white-space:nowrap;transition:color .25s}.collection-nav button:after,.work-filters button:after{content:'';position:absolute;bottom:3px;left:0;right:0;height:1px;background:var(--fg);transform:scaleX(0);transition:transform .35s var(--ease)}.collection-nav button[aria-pressed=true],.work-filters button[aria-pressed=true]{color:var(--fg)}.collection-nav button[aria-pressed=true]:after,.work-filters button[aria-pressed=true]:after{transform:scaleX(1)}.collection-nav button:hover,.work-filters button:hover{color:var(--fg)}
.orbit{position:relative;isolation:isolate;perspective:1600px;width:100%;height:calc(var(--card-height) + 82px);flex-shrink:0;touch-action:pan-y;user-select:none;outline-offset:-6px!important;cursor:grab}.orbit.dragging{cursor:grabbing}.orbit-cards{position:absolute;inset:0;transform-style:preserve-3d}.orbit-floor{position:absolute;left:8%;right:8%;bottom:9px;height:72px;background:radial-gradient(ellipse,#ffffff07,transparent 65%);filter:blur(8px);pointer-events:none}[data-theme=light] .orbit-floor{background:radial-gradient(ellipse,#29271e0b,transparent 65%)}.orbit-card{position:absolute;left:50%;top:50%;width:calc(var(--card-height)*var(--ratio,.666667));max-width:var(--max-card-width);aspect-ratio:var(--ratio,.666667);min-height:0;padding:0;border-radius:9px;background:var(--panel);box-shadow:var(--shadow);transform:translate(-50%,-50%);transform-style:preserve-3d;backface-visibility:hidden;will-change:transform,opacity;cursor:inherit;overflow:hidden}.orbit-card:after{content:'';position:absolute;inset:0;border:1px solid #ffffff26;border-radius:inherit;pointer-events:none}[data-theme=light] .orbit-card:after{border-color:#ffffffa6}.orbit-card img{width:100%;height:100%;object-fit:contain;pointer-events:none}.orbit-card .view-label{position:absolute;bottom:16px;left:50%;transform:translate(-50%,8px);background:#101010b8;backdrop-filter:blur(8px);border:1px solid #ffffff33;color:#fff;border-radius:24px;font-size:10px;padding:12px 18px;white-space:nowrap;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none}.orbit-card[aria-current=true]:hover .view-label,.orbit-card[aria-current=true]:focus-visible .view-label{opacity:1;transform:translate(-50%,0)}.orbit-card:focus-visible{outline-offset:7px}.orbit.dragging .view-label{opacity:0!important}
.gallery-caption{display:flex;align-items:center;justify-content:center;gap:58px;margin-top:16px;position:relative;z-index:2}.caption-text{text-align:center;min-width:270px}.caption-text h1{font-weight:400;text-transform:uppercase;letter-spacing:.21em;font-size:clamp(23px,2.4vw,37px);line-height:1.25;padding-left:.21em}.caption-text p{font-size:10px;letter-spacing:.12em;color:var(--muted);margin-top:13px}.caption-text p span{margin-inline:6px}.arrow{width:44px;display:grid;place-items:center;color:var(--muted);transition:color .3s,transform .3s}.arrow:hover{color:var(--fg)}#previous:hover{transform:translateX(-4px)}#next:hover{transform:translateX(4px)}.arrow svg{width:20px}.gallery-position{display:flex;justify-content:center;align-items:center;gap:5px;height:44px;margin-top:13px;max-width:90%;overflow:hidden}.gallery-position button{width:14px;min-width:6px;position:relative}.gallery-position button:after{content:'';display:block;height:2px;width:100%;background:var(--line);transition:background .35s,transform .35s}.gallery-position button[aria-pressed=true]:after{background:var(--fg);transform:scaleY(1.3)}.gallery-position button:hover:after{background:var(--muted)}.gesture-hint{font-size:9px;text-transform:uppercase;letter-spacing:.24em;color:var(--muted);text-align:center}.mobile-hint{display:none}.thumbnails{display:none}
dialog{position:fixed;inset:0;margin:0;border:0;max-width:none;max-height:none;width:100%;height:100dvh;background:var(--bg);color:var(--fg);padding:30px 5%;overflow-y:auto}dialog::backdrop{background:#000b}dialog[open]{animation:reveal .5s var(--ease)}.dialog-bar{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:3;gap:24px}.dialog-bar .brand{font-size:26px}.dialog-bar>button{display:flex;align-items:center;gap:22px;font-size:11px}.close-icon{display:block;width:18px;height:18px;position:relative}.close-icon:before,.close-icon:after{content:'';position:absolute;left:8px;top:0;width:1px;height:18px;background:currentColor;transform:rotate(45deg)}.close-icon:after{transform:rotate(-45deg)}.work-heading{display:flex;align-items:end;justify-content:space-between;padding:65px 0 34px;gap:25px}.work-heading h2{font-size:clamp(37px,5.5vw,78px);letter-spacing:-.06em;font-weight:400}.work-heading>button{display:flex;align-items:center;gap:24px;font-size:12px}.work-heading svg{width:18px}.work-filters{display:flex;gap:34px;border-top:1px solid var(--line);padding:11px 0 25px;margin-bottom:20px}.photo-index{columns:4;column-gap:24px}.index-photo{display:block;width:100%;padding:0;margin-bottom:24px;break-inside:avoid;overflow:hidden;border-radius:4px;position:relative}.index-photo img{height:auto;width:100%;transition:transform .8s var(--ease)}.index-photo:hover img{transform:scale(1.025)}.index-photo:after{content:attr(data-title);position:absolute;inset:auto 0 0;padding:40px 15px 15px;text-align:left;color:#fff;background:linear-gradient(transparent,#000a);font-size:11px;opacity:0;transition:opacity .3s}.index-photo:hover:after,.index-photo:focus-visible:after{opacity:1}.work-footer{border-top:1px solid var(--line);padding:30px 0 10px;display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}
#contact{overflow:hidden;isolation:isolate}.contact-content{position:relative;z-index:2;min-height:calc(100dvh - 180px);display:flex;flex-direction:column;justify-content:center;align-items:start;padding-left:5%}.contact-content>p{font-size:12px;color:var(--muted);margin-bottom:30px}.contact-content h2{font-size:clamp(70px,9vw,150px);font-weight:400;line-height:.98;letter-spacing:-.065em}.whatsapp{margin-top:45px;display:flex;align-items:center;gap:45px;border-bottom:1px solid var(--fg);padding-bottom:17px;font-size:13px}.whatsapp svg{transition:transform .3s}.whatsapp:hover svg{transform:translate(4px,-4px)}.contact-image{position:absolute;right:8%;top:19%;height:66%;width:auto;max-width:42%;object-fit:contain;z-index:0;opacity:.18;transform:rotate(7deg)}.contact-footer{display:flex;justify-content:space-between;position:relative;z-index:2;font-size:10px;color:var(--muted);gap:20px}#viewer[open]{display:flex;flex-direction:column;padding:20px 4%;animation:viewer-reveal .25s ease}#viewer-caption{font-size:12px;color:var(--muted)}.viewer-picture{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:20px 0;touch-action:pan-y}.viewer-picture img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.viewer-controls{display:flex;align-items:center;justify-content:space-between;font-size:11px}.viewer-controls span{letter-spacing:.22em;color:var(--muted)}.viewer-controls button{font-size:12px;min-width:70px}.viewer-controls button:first-child{text-align:left}.viewer-controls button:last-child{text-align:right}
@keyframes reveal{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes viewer-reveal{from{opacity:0}to{opacity:1}}
@media(min-width:1800px){.site-header{height:132px}.brand{font-size:36px}.exhibition{--card-height:clamp(500px,49svh,680px);--max-card-width:690px;min-height:calc(100svh - 132px)}.collection-nav{margin:15px 0 20px;gap:48px}.collection-nav button{font-size:14px}.caption-text h1{font-size:40px}.gallery-caption{margin-top:28px}}
@media(max-width:900px){.site-header{height:95px;padding:0 5%;gap:22px}.brand{font-size:27px}.primary-nav{gap:26px}.exhibition{--card-height:clamp(320px,47svh,500px);--max-card-width:420px;min-height:calc(100svh - 95px)}.collection-nav{gap:29px;margin-top:4px}.photo-index{columns:3;column-gap:18px}.index-photo{margin-bottom:18px}.gallery-caption{gap:30px}.caption-text{min-width:240px}.caption-text h1{font-size:29px}.theme-toggle{gap:8px}}
@media(max-width:600px){.site-header{height:86px;padding:0 6%;grid-template-columns:1fr auto;gap:20px}.brand{font-size:25px;letter-spacing:.16em}.primary-nav{display:none}.header-tools{gap:21px}.menu-toggle{display:flex}.theme-word{display:none}.theme-track{width:39px;height:22px;padding:3px}.theme-track span{width:14px;height:14px;transform:translateX(16px)}.exhibition{--card-height:clamp(270px,42svh,390px);--max-card-width:76vw;min-height:calc(100svh - 86px);padding-bottom:max(25px,env(safe-area-inset-bottom));overflow:hidden}.collection-nav{justify-content:flex-start;gap:25px;align-self:stretch;overflow-x:auto;scrollbar-width:none;padding:0 6%;margin:0 0 11px}.collection-nav::-webkit-scrollbar{display:none}.collection-nav button{font-size:10px;flex-shrink:0}.collection-nav button:after{bottom:4px}.orbit{height:calc(var(--card-height) + 62px);perspective:1000px}.orbit-card{border-radius:7px}.orbit-card .view-label{display:none}.orbit-floor{bottom:10px;left:0;right:0;height:40px}.gallery-caption{margin-top:7px;gap:12px;width:100%;padding:0 5%;justify-content:space-between}.caption-text{min-width:0;flex:1}.caption-text h1{font-size:clamp(20px,6vw,27px);letter-spacing:.15em;line-height:1.2}.caption-text p{font-size:8px;letter-spacing:.09em;margin-top:10px}.caption-text p span{margin-inline:3px}.arrow{width:32px;flex-shrink:0}.arrow svg{width:18px}.gallery-position{margin-top:10px;height:37px;gap:5px}.gallery-position button{width:11px;min-width:4px;min-height:37px}.gesture-hint{font-size:8px;letter-spacing:.2em}.desktop-hint{display:none}.mobile-hint{display:inline}.thumbnails{display:flex;gap:9px;max-width:calc(100% - 38px);padding:8px 5px;margin-top:23px;overflow-x:auto;scrollbar-width:none;touch-action:pan-x;align-items:center}.thumbnails::-webkit-scrollbar{display:none}.thumbnails button{position:relative;flex-shrink:0;min-height:0;width:44px;height:54px;border-radius:4px;padding:0;opacity:.48;transition:opacity .3s}.thumbnails button[aria-pressed=true]{opacity:1;outline:1px solid var(--fg);outline-offset:3px}.thumbnails button:hover{opacity:1}.thumbnails img{width:100%;height:100%;object-fit:cover;border-radius:4px}dialog{padding:22px 6%}.dialog-bar .brand{font-size:24px}.dialog-bar>button{font-size:10px;gap:12px}.work-heading{padding:45px 0 25px}.work-heading h2{font-size:36px;max-width:220px;line-height:1.05}.work-heading>button{font-size:10px;gap:10px}.work-heading svg{width:16px}.work-filters{gap:23px;overflow-x:auto;scrollbar-width:none;padding-bottom:18px;margin-bottom:10px}.work-filters button{font-size:10px;flex-shrink:0}.photo-index{columns:2;column-gap:12px}.index-photo{margin-bottom:12px}.work-footer{font-size:9px;padding-top:25px}.contact-content{padding:0;min-height:calc(100dvh - 170px)}.contact-content h2{font-size:17vw}.contact-content>p{font-size:10px;margin-bottom:25px}.whatsapp{font-size:12px;margin-top:33px;gap:30px}.contact-image{right:-10%;max-width:80%;height:48%;top:25%;opacity:.16}.contact-footer{font-size:9px;line-height:1.6}.contact-footer span:last-child{max-width:170px;text-align:right}#viewer[open]{padding:17px 5%}#viewer-caption{font-size:10px}.viewer-picture{padding:15px 0}.viewer-controls button{font-size:11px}}
@media(max-width:360px){.collection-nav{gap:20px}.collection-nav button{font-size:9px}.header-tools{gap:15px}.caption-text h1{font-size:19px}.caption-text p{font-size:7px}.thumbnails{gap:8px}.thumbnails button{width:38px;height:48px}}
@media(max-height:740px) and (min-width:601px){.site-header{height:88px}.exhibition{--card-height:clamp(240px,43svh,360px);min-height:calc(100svh - 88px);padding-bottom:20px}.collection-nav{margin:0 0 3px}.orbit{height:calc(var(--card-height) + 55px)}.gallery-caption{margin-top:4px}.caption-text h1{font-size:26px}.caption-text p{margin-top:8px}.gallery-position{margin-top:5px;height:34px}.gallery-position button{min-height:34px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.page-intro{display:none!important}}

/* A softly lit backdrop; colours are sampled from the original photographs. */
body{isolation:isolate}
.ambient-light{position:fixed;inset:0;z-index:-1;pointer-events:none;color:rgb(var(--ambient,100 100 100));background:radial-gradient(ellipse at 50% 42%,currentColor 0%,transparent 75%);opacity:.19;transition:color 1.1s ease,opacity .45s ease}
[data-theme=light] .ambient-light{opacity:.13}
@media(prefers-reduced-motion:reduce){.ambient-light{transition:none}}

/* Small fibre-optic lights following Cancer's catalogue star positions. */
.starlight{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;user-select:none;color:#f7f3e8;transition:color .45s,opacity .45s}
.sky-star{position:absolute;width:var(--star-size);height:var(--star-size);border-radius:50%;background:currentColor;box-shadow:0 0 4px 1px #f7f3e824;opacity:var(--star-dim);transform:translate(-50%,-50%);animation:star-twinkle var(--star-period) ease-in-out var(--star-delay) infinite}
.sky-star-main{box-shadow:0 0 6px 1px #f7f3e840}
@keyframes star-twinkle{0%,35%,100%{opacity:var(--star-dim)}52%{opacity:var(--star-peak)}66%{opacity:var(--star-dim)}}
[data-theme=light] .starlight{color:#8b8270;opacity:.5}
[data-theme=light] .sky-star{box-shadow:none}
.sky-paused .sky-star,body:has(dialog[open]) .sky-star{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.sky-star{animation:none!important;opacity:var(--star-dim)}}
