@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600&family=Work+Sans:wght@400;500&display=swap");
:root{--bg:#fbf8f1;--ink:#0b2c44;--muted:#5f7283;--line:#e6dfce;--gold:#f3cb4a;--panel:#f6e8c6;--serif:Fraunces,Georgia,"Times New Roman",serif;--sans:"Work Sans","Helvetica Neue",Helvetica,Arial,sans-serif}
@media (prefers-color-scheme:dark){:root{--bg:#0b1c2b;--ink:#f3ead6;--muted:#9db0c0;--line:#21384d;--panel:#12304a}}
*{box-sizing:border-box}
html{color-scheme:light dark;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}
::selection{background:var(--gold);color:#0b2c44}
a:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
/* header */
.bar{position:sticky;top:0;z-index:50;background:var(--bg);display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px clamp(20px,5vw,64px) 26px}
.bar::after{content:"";position:absolute;left:clamp(20px,5vw,64px);right:clamp(20px,5vw,64px);bottom:10px;height:6px;background:radial-gradient(circle,var(--ink) 1.1px,transparent 1.7px) 0 0/8px 6px;opacity:.3;-webkit-mask:linear-gradient(90deg,#000,transparent 85%);mask:linear-gradient(90deg,#000,transparent 85%)}
.brand{display:flex;align-items:center;gap:16px;min-width:0}
.mark{display:block;flex:none;height:54px;width:auto}
.wm{display:block;width:195px;max-width:100%;aspect-ratio:1081.2/124;background:var(--ink);-webkit-mask:url(wordmark.svg) no-repeat left center/contain;mask:url(wordmark.svg) no-repeat left center/contain}
.word{min-width:0}
.word i{display:block;margin-top:11px;font-style:normal;font-size:10px;letter-spacing:.42em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
@media (prefers-color-scheme:dark){.mark{background:#fbf8f1;border-radius:10px;padding:3px}}
nav a{margin-left:26px;font-size:12px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-bottom:4px;border-bottom:2px solid transparent;transition:color .2s,border-color .2s}
nav a:hover{color:var(--ink);border-bottom-color:var(--gold)}
nav a[aria-current]{color:var(--ink);border-bottom-color:var(--gold)}
/* display type */
.card span,.show h2,.cap h1{font-family:var(--serif);font-weight:600;font-variation-settings:"opsz" 144;text-transform:uppercase;letter-spacing:.02em}
/* home */
.hero,.series{--pad:clamp(20px,5vw,64px);--colw:min(calc(100% - 2*var(--pad) - 12px),1200px,max(600px,calc((100vh - 190px)*1.5)))}
.hero{width:var(--colw);margin:0 auto 12px}
.hero>a{display:block}
.hero img{width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;box-shadow:12px 12px 0 var(--gold)}
figcaption{margin-top:26px;font-size:13px;letter-spacing:.06em;color:var(--muted)}
figcaption a{border-bottom:2px solid var(--gold)}
.series{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:clamp(24px,4vw,48px);width:var(--colw);margin:clamp(48px,8vw,96px) auto}
.card img{width:100%;aspect-ratio:3/2;object-fit:cover;box-shadow:10px 10px 0 var(--gold);transition:transform .25s,box-shadow .25s}
.card:hover img{transform:translate(4px,4px);box-shadow:6px 6px 0 var(--gold)}
.card span{display:block;margin-top:24px;font-size:22px;line-height:1.2}
.card span::after{content:" \2192";color:var(--muted);font-family:var(--sans);font-size:18px}
/* footer */
footer{position:relative;margin-top:24px;padding:52px clamp(20px,5vw,64px) 40px;font-size:12px;letter-spacing:.1em;color:var(--muted)}
footer::before{content:"";position:absolute;left:clamp(20px,5vw,64px);right:clamp(20px,5vw,64px);top:20px;height:6px;background:radial-gradient(circle,var(--ink) 1.1px,transparent 1.7px) 0 0/8px 6px;opacity:.3;-webkit-mask:linear-gradient(270deg,#000,transparent 85%);mask:linear-gradient(270deg,#000,transparent 85%)}
.show img{box-shadow:10px 10px 0 var(--gold)}
/* series pages */
html:has(body.viewer){height:100%}
body.viewer{height:100%;overflow:hidden;display:flex;flex-direction:column}
.v{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,280px);grid-template-rows:minmax(0,1fr);align-items:center;gap:clamp(24px,4vw,64px);padding:8px clamp(20px,5vw,64px) 36px}
.photo{position:relative;display:flex;justify-content:center;align-items:center;min-width:0;min-height:0;height:100%;padding:0 10px 10px 0}
.photo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;cursor:pointer;box-shadow:10px 10px 0 var(--gold)}
.arrow{position:absolute;top:50%;transform:translateY(-50%);background:none;border:0;color:#fff;font-size:54px;line-height:1;padding:12px 14px;cursor:pointer;text-shadow:0 1px 10px rgba(0,0,0,.6);opacity:.9}
.arrow:hover{opacity:1}
.prev{left:0}.next{right:10px}
.cap h1{font-size:clamp(24px,2.6vw,34px);margin:0 0 8px;line-height:1.15}
.cap p{margin:0;font-size:15px;color:var(--muted)}
.cap .count{margin-top:28px;font-size:12px;letter-spacing:.16em}
.fsbtn{margin:28px 0 0;padding:0 0 3px;background:none;border:0;border-bottom:2px solid var(--gold);color:var(--muted);font:inherit;font-size:12px;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.fsbtn:hover{color:var(--ink)}
/* tablets and phones */
@media (max-width:800px){
  .v{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;align-items:start;padding:0 16px 16px;gap:14px}
  .photo{align-self:center}
  .cap h1{font-size:22px;margin-bottom:4px}
  .cap .count{margin-top:8px}
  .fsbtn{display:none}
}
@media (max-width:640px){
  .bar{flex-direction:column;align-items:flex-start;gap:8px;padding:10px 16px 20px}
  .bar::after{left:16px;right:16px;bottom:6px}
  .brand{gap:12px}
  .mark{height:40px}
  .wm{width:132px}
  .word i{margin-top:5px;font-size:8.5px;letter-spacing:.4em;line-height:1.2}
  nav{display:flex;flex-wrap:wrap;width:100%;justify-content:space-between;gap:6px 8px}
  nav a{margin:0;font-size:10.5px;letter-spacing:.05em}
  nav a:first-child{display:none}
  .hero{width:auto;margin:0 24px 8px 16px}
  .hero img{box-shadow:8px 8px 0 var(--gold)}
  figcaption{margin-top:20px}
  .series{grid-template-columns:minmax(0,1fr);gap:40px;width:auto;margin:44px 24px 40px 16px}
  .card img{box-shadow:8px 8px 0 var(--gold)}
  .card span{margin-top:20px;font-size:20px}
  footer{padding:48px 16px 32px}
  footer::before{left:16px;right:16px}
  .show img{box-shadow:8px 8px 0 var(--gold)}
  .photo{padding:0 8px 8px 0}
  .photo img{box-shadow:8px 8px 0 var(--gold)}
  .arrow{width:44px;height:44px;padding:0;border-radius:50%;background:rgba(11,44,68,.45);font-size:30px;display:grid;place-items:center;text-shadow:none;opacity:1}
  .prev{left:8px}.next{right:16px}
  .actions .btn{width:100%}
}
/* photo outlines */
.hero img,.card img,.photo img,.show img{border:2px solid var(--ink)}
/* cut-off titles: the bottom 7% of the capitals is trimmed, like the wordmark */
.card span,.show h2,.cap h1,.contact h1,.about h1,.ex h1{--cutY:calc((.811 + (var(--lh,1) - 1)/2)*1em);-webkit-mask-image:repeating-linear-gradient(to bottom,#000 0,#000 var(--cutY),transparent var(--cutY),transparent calc(var(--lh,1)*1em));mask-image:repeating-linear-gradient(to bottom,#000 0,#000 var(--cutY),transparent var(--cutY),transparent calc(var(--lh,1)*1em))}
.card span{--lh:1.2}
.show h2,.cap h1{--lh:1.15}
/* desktop home: photo with the two series beside it */
@media (min-width:1100px){
  main.home{--pad:clamp(20px,5vw,64px);--A:min(calc(100vw - 2*var(--pad) - 32px),1480px);--heroW:min(calc((var(--A) + 68px)/1.5),max(560px,calc((100vh - 190px)*1.5)));--cardW:calc(var(--heroW)*.5 - 108px);display:grid;grid-template-columns:var(--heroW) var(--cardW);column-gap:40px;justify-content:center;align-items:start;margin:0 auto}
  main.home .hero{width:auto;margin:0}
  main.home .series{width:auto;margin:0;display:flex;flex-direction:column;gap:36px}
}
/* landscape phones: wide but very short, so use a slim header and let photos use the height */
@media (orientation:landscape) and (max-height:500px){
  .bar{flex-direction:row;align-items:center;gap:12px;padding:6px clamp(16px,4vw,32px) 12px}
  .bar::after{left:clamp(16px,4vw,32px);right:clamp(16px,4vw,32px);bottom:4px}
  .brand{gap:10px}
  .mark{height:34px}
  .wm{width:124px}
  .word i{margin-top:4px;font-size:7.5px;letter-spacing:.36em}
  nav{display:flex;width:auto;gap:0}
  nav a{margin:0 0 0 14px;font-size:10.5px;letter-spacing:.06em;padding-bottom:3px}
  .hero,.series{--colw:min(calc(100% - 2*var(--pad) - 12px),720px)}
  .hero{width:var(--colw);margin:0 auto 12px}
  .series{width:var(--colw);margin:36px auto}
  .v{grid-template-columns:minmax(0,1fr) minmax(150px,210px);grid-template-rows:minmax(0,1fr);align-items:center;padding:4px clamp(16px,4vw,32px) 12px;gap:18px}
  .photo{align-self:stretch;padding:0 8px 8px 0}
  .photo img{box-shadow:8px 8px 0 var(--gold)}
  .cap h1{font-size:20px;margin-bottom:4px}
  .cap p{font-size:13px}
  .cap .count{margin-top:8px}
  .fsbtn{display:none}
  .arrow{width:40px;height:40px;padding:0;border-radius:50%;background:rgba(11,44,68,.45);font-size:26px;display:grid;place-items:center;text-shadow:none;opacity:1}
  .prev{left:8px}.next{right:16px}
}
@media (orientation:landscape) and (max-height:500px) and (max-width:600px){
  nav a{margin-left:10px;font-size:9.5px;letter-spacing:.04em}
  .wm{width:112px}
  .brand{gap:8px}
}
/* series pages on desktop: photo and title sit together as one centred unit */
@media (min-width:801px) and (min-height:501px){
  .v{display:flex;justify-content:center;align-items:center;gap:clamp(32px,3.5vw,48px)}
  .photo{flex:0 1 calc((100vh - 150px)*1.5 + 10px);min-width:0}
  .cap{flex:0 0 clamp(200px,18vw,280px)}
  .photo img{width:100%;height:auto}
}
/* thumbnail grid */
body.is-grid main.v{display:none}
body:not(.is-grid) .gridview{display:none}
.gridview{--pad:clamp(20px,5vw,64px);flex:1;min-height:0;overflow-y:auto;padding:4px var(--pad) 56px}
.gt{font-family:var(--serif);font-weight:600;font-variation-settings:"opsz" 144;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(24px,2.6vw,34px);line-height:1.15;margin:0 auto 28px;max-width:1400px;display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}
.gt span{font-family:var(--sans);font-weight:400;font-size:12px;letter-spacing:.16em;color:var(--muted);text-transform:uppercase}
.gg{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:36px 32px;align-items:start;max-width:1400px;margin:0 auto;padding-right:8px}
.th{display:block;width:100%;padding:0;background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
.th img{width:100%;height:auto;aspect-ratio:auto 3/2;background:var(--panel);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--gold);transition:transform .25s,box-shadow .25s}
.th:hover img,.th:focus-visible img{transform:translate(3px,3px);box-shadow:3px 3px 0 var(--gold)}
.tc{display:block;margin-top:14px;font-family:var(--serif);font-weight:600;text-transform:uppercase;letter-spacing:.02em;font-size:15px;line-height:1.2}
.tc i{display:block;margin-top:3px;font-family:var(--sans);font-style:normal;font-weight:400;font-size:12px;letter-spacing:.06em;text-transform:none;color:var(--muted)}
.gbtn{display:block;margin:14px 0 0;padding:0 0 3px;background:none;border:0;border-bottom:2px solid var(--gold);color:var(--muted);font:inherit;font-size:12px;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.gbtn:hover{color:var(--ink)}
@media (max-width:640px){
  .gg{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 18px;padding-right:6px}
  .th img{box-shadow:4px 4px 0 var(--gold)}
  .tc{font-size:13px;margin-top:10px}
  .tc i{font-size:11px}
  .gt{margin-bottom:20px}
  .gbtn{margin-top:10px}
}
/* enquire */
.enq{display:inline-block;margin:22px 0 0;background:var(--gold);color:#0b2c44;border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;line-height:1.3;padding:12px 20px;transition:transform .15s,box-shadow .15s}
.enq:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}
@media (max-width:800px){.enq{margin-top:10px;padding:10px 16px;font-size:11px}}
@media (orientation:landscape) and (max-height:500px){.enq{margin-top:10px;padding:8px 12px;font-size:10.5px}}
/* mobile viewer caption */
@media (max-width:800px) and (orientation:portrait){
  .v{grid-template-rows:auto auto;align-content:center;align-items:start;gap:14px}
  .photo{height:auto;align-self:start}
  .photo img{max-height:calc(100vh - 360px);max-height:calc(100svh - 360px)}
  .cap{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;align-items:center}
  .cap h1{grid-column:1;grid-row:1;margin:0 0 2px}
  .cap #d{grid-column:1;grid-row:2}
  .cap .enq{grid-column:2;grid-row:1 / span 2;margin:0;align-self:center;max-width:130px;padding:10px 14px;font-size:10.5px;letter-spacing:.1em;text-align:center}
  .cap .count{grid-column:1;grid-row:3;margin-top:10px}
  .cap .gbtn{grid-column:2;grid-row:3;justify-self:end;margin:10px 0 0}
}
/* mobile viewer caption v2 */
.enq .s{display:none}
@media (max-width:800px) and (orientation:portrait){
  .enq .f{display:none}
  .enq .s{display:inline}
  .cap .enq{max-width:none;white-space:nowrap;padding:7px 14px;font-size:11px;letter-spacing:.12em;line-height:1.2;box-shadow:3px 3px 0 var(--ink)}
  .cap .enq:hover{box-shadow:1px 1px 0 var(--ink)}
  .cap h1{font-size:24px}
  .cap #d{font-size:14px}
  .cap .count{margin-top:14px}
  .cap .gbtn{margin-top:14px}
}
@media (orientation:landscape) and (max-height:500px){
  .enq .f{display:none}
  .enq .s{display:inline}
}
/* mobile viewer caption v3 */
@media (max-width:800px) and (orientation:portrait){
  .cap{align-items:start}
  .cap h1{grid-column:1;grid-row:1;align-self:center;margin:0}
  .cap .enq{grid-column:2;grid-row:1;align-self:center;justify-self:end;margin:0}
  .cap #d{grid-column:1 / -1;grid-row:2;margin:6px 0 0}
  .cap .count{grid-column:1;grid-row:3;margin-top:14px}
  .cap .gbtn{grid-column:2;grid-row:3;justify-self:end;margin-top:14px}
}
/* mobile viewer caption v4 */
@media (max-width:800px) and (orientation:portrait){
  .cap .count{grid-column:1;grid-row:3;align-self:baseline;margin:14px 0 0;line-height:1.3}
  .cap .gbtn{grid-column:2;grid-row:3;justify-self:end;align-self:baseline;margin:14px 0 0;line-height:1.3}
}
/* mobile viewer caption v5 */
@media (max-width:800px) and (orientation:portrait){
  .v{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:none;grid-auto-rows:auto;gap:0;align-content:center;align-items:start}
  .cap{display:contents}
  .cap .enq{grid-column:1 / -1;grid-row:1;justify-self:end;align-self:start;margin:0 8px 14px 0}
  .photo{grid-column:1 / -1;grid-row:2}
  .cap h1{grid-column:1 / -1;grid-row:3;align-self:start;margin:14px 0 0}
  .cap #d{grid-column:1 / -1;grid-row:4;margin:4px 0 0}
  .cap .count{grid-column:1;grid-row:5;margin:8px 0 0}
  .cap .gbtn{grid-column:2;grid-row:5;margin:8px 0 0}
  .photo img{max-height:calc(100vh - 380px);max-height:calc(100svh - 380px)}
}
/* mobile viewer caption v6 */
@media (max-width:800px) and (orientation:portrait){
  .cap .gbtn{grid-column:1 / -1;grid-row:1;justify-self:start;align-self:start;margin:0 0 14px}
  .photo{grid-row:2;margin-bottom:8px}
  .cap h1{grid-column:1;grid-row:3;align-self:center;margin:0}
  .cap .enq{grid-column:2;grid-row:3;justify-self:end;align-self:center;margin:0}
  .cap #d{grid-column:1 / -1;grid-row:4;margin:4px 0 0}
  .cap .count{grid-column:1 / -1;grid-row:5;margin:8px 0 0}
}
/* mobile viewer caption v7 */
@media (max-width:800px) and (orientation:portrait){
  .cap #d{margin:0;line-height:1.25}
  .cap .count{margin:0;line-height:1.2}
}
/* mobile viewer caption v8 */
@media (max-width:800px) and (orientation:portrait){
  .cap #d{margin:2px 0 0;line-height:1.4}
  .cap .count{margin:5px 0 0;line-height:1.3}
}
/* arrows */
.gbtn::before{content:"\2190";margin-right:.55em;letter-spacing:0}
.card span::after{position:relative;top:-.1em}
/* hero fit */
.hero img{aspect-ratio:auto 3/2;object-fit:cover}
