/* Layout: hash-routed pages. Home = viewport-fit hero → highlight marquee → about summary → client tiles → CTA. Albums open in a full-screen viewer. */
:root{
  --bg:#F2F4EF; --surface:#FFFFFF; --ink:#13241F; --muted:#56655F; --line:#D5DCD3;
  --deep:#16352D; --on-deep:#EEF3EC; --accent:#E39A2D; --accent-ink:#9A5C00; --soft:#E5ECE2;
  --danger:#B23A2B; --scrim:rgba(6,14,12,.94); --hdr:65px;
  --f-display:"Bricolage Grotesque","Avenir Next","Segoe UI",system-ui,sans-serif;
  --f-body:"Figtree","Segoe UI",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --r:14px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0E1714; --surface:#16221E; --ink:#E7EEE9; --muted:#9DAEA6; --line:#2A3A34;
  --deep:#0A2A22; --on-deep:#E7EEE9; --accent:#F0AE48; --accent-ink:#F5C278; --soft:#1C2C27; --danger:#F07A68; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0E1714; --surface:#16221E; --ink:#E7EEE9; --muted:#9DAEA6; --line:#2A3A34;
  --deep:#0A2A22; --on-deep:#E7EEE9; --accent:#F0AE48; --accent-ink:#F5C278; --soft:#1C2C27; --danger:#F07A68; color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--f-body);-webkit-text-size-adjust:100%}
body.locked{overflow:hidden}
.wrap{max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2,h3{font-family:var(--f-display);line-height:1.08;text-wrap:balance;margin:0}
h2{font-size:clamp(28px,4vw,44px);font-weight:800;letter-spacing:-.02em}
h3{font-size:19px;font-weight:600}
p{margin:0}
a{color:inherit}
img{max-width:100%}
.eyebrow{font:500 12px/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink)}
button,input,textarea,select{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:12px 22px;min-height:46px;font-weight:600;cursor:pointer;text-decoration:none;background:var(--ink);color:var(--bg);white-space:nowrap}
.btn.accent{background:var(--accent);color:#1d1200}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.light{background:var(--on-deep);color:var(--deep)}
.btn.small{padding:8px 14px;min-height:36px;font-size:14px}
.btn.danger{color:var(--danger)}
.btn[disabled]{opacity:.5;cursor:default}
.arrow::after{content:"→";transition:transform .2s}
.arrow:hover::after{transform:translateX(3px)}
.field{display:grid;gap:6px;font-size:13px;font-weight:500;min-width:0}
.field input,.field select{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--bg);color:var(--ink);min-height:44px}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.skip{position:absolute;left:-9999px;top:8px;z-index:90;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px}
.skip:focus{left:16px}

/* header */
header.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:30;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header.nav .wrap{display:flex;align-items:center;gap:14px;height:var(--hdr);position:relative}
.brand{font:800 22px/1 var(--f-display);text-decoration:none;white-space:nowrap;color:var(--accent-ink);letter-spacing:-.01em}
.brand small{font:500 13px/1 var(--f-body);color:var(--muted);margin-left:7px;letter-spacing:0}
nav.links{display:flex;gap:2px;margin-left:auto}
nav.links a{text-decoration:none;font-size:15px;font-weight:500;padding:9px 13px;border-radius:999px;color:var(--muted);white-space:nowrap}
nav.links a:hover{color:var(--ink);background:var(--soft)}
nav.links a[aria-current="page"]{color:var(--ink);background:var(--soft)}
.nav-cta{margin-left:6px}
.acct{display:flex;align-items:center;gap:8px;flex:none}
.acct img{width:30px;height:30px;border-radius:50%}
.menu-btn{display:none;margin-left:auto}
@media (max-width:980px){.brand small{display:none}nav.links a{padding:9px 9px;font-size:14px}}
@media (max-width:820px){
  .menu-btn{display:inline-flex}.nav-cta{display:none}
  nav.links{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;margin:0;background:var(--bg);border-bottom:1px solid var(--line);padding:8px max(16px,env(safe-area-inset-right,0px)) 14px max(16px,env(safe-area-inset-left,0px));box-shadow:0 14px 28px rgba(0,0,0,.1)}
  nav.links.open{display:flex}nav.links a{padding:14px 10px;border-radius:8px;font-size:17px;color:var(--ink)}
}

/* pages */
.page{display:block}
.page[hidden]{display:none!important}
section.band{padding-block:72px}
section.band.alt{background:var(--soft)}
.head{display:grid;gap:12px;margin-bottom:32px;max-width:700px}
.head p{color:var(--muted)}
.pagehead{padding-block:56px 8px}
.pagehead h1{font-size:clamp(36px,6vw,64px);font-weight:800;letter-spacing:-.03em;margin-top:12px}
.pagehead p.sub{margin-top:14px;color:var(--muted);font-size:clamp(16px,1.8vw,19px);max-width:60ch}
@media (max-width:760px){section.band{padding-block:52px}.pagehead{padding-block:36px 0}}

/* hero */
.hero{min-height:calc(100svh - var(--hdr) - env(safe-area-inset-top,0px));display:grid;align-items:center}
.hero .wrap{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(24px,4vw,56px);align-items:center;padding-block:clamp(16px,4svh,48px);width:100%}
.hero h1{font-weight:800;letter-spacing:-.035em}
.hero h1 .first{display:block;font-size:clamp(56px,min(10vw,16svh),136px);line-height:.92;color:var(--accent-ink)}
.hero h1 .rest{display:block;font-size:clamp(20px,min(2.6vw,4.4svh),34px);letter-spacing:-.01em;margin-top:clamp(6px,1.4svh,12px);font-weight:600}
.hero .eyebrow{margin-bottom:clamp(10px,2svh,16px)}
.hero .role{margin-top:clamp(12px,2.6svh,22px);font-size:clamp(16px,min(1.6vw,2.7svh),20px);color:var(--muted);max-width:38ch}
.hero .cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(16px,3.4svh,30px)}
.portrait{position:relative;justify-self:end;height:clamp(280px,calc(100svh - var(--hdr) - 72px),620px);aspect-ratio:574/640;max-width:100%}
.portrait img{display:block;width:100%;height:100%;object-fit:cover;border-radius:999px 999px var(--r) var(--r);background:var(--soft)}
.badge-card{position:absolute;left:-28px;bottom:9%;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 16px;box-shadow:0 12px 28px rgba(0,0,0,.14);display:grid;gap:2px}
.badge-card b{font:800 18px/1.1 var(--f-display);color:var(--accent-ink)}
.badge-card span{font:500 11px/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
@media (max-width:820px){
  .hero{min-height:0}
  .hero .wrap{grid-template-columns:1fr;gap:22px;padding-block:22px 36px}
  .portrait{order:-1;justify-self:center;height:min(34svh,300px)}
  .badge-card{left:-14px}
}

/* highlights marquee */
.highlights{background:var(--deep);color:var(--on-deep);padding-block:40px 44px;overflow:hidden}
.hl-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.hl-head h2{font-size:clamp(24px,3vw,34px)}
.hl-head .eyebrow{color:var(--accent);margin-bottom:10px;display:block}
.hl-head a{color:var(--on-deep)}
.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.track{display:flex;gap:16px;width:max-content;animation:slide var(--dur,60s) linear infinite}
.marquee:hover .track,.marquee:focus-within .track{animation-play-state:paused}
@keyframes slide{to{transform:translateX(calc(-50% - 8px))}}
.hl{all:unset;cursor:pointer;position:relative;flex:none;width:clamp(240px,28vw,380px);aspect-ratio:4/3;border-radius:16px;overflow:hidden;background:rgba(255,255,255,.06)}
.hl:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.hl img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.hl:hover img{transform:scale(1.05)}
.hl .tag{position:absolute;left:12px;bottom:12px;right:12px;display:flex}
.hl .tag span{background:rgba(8,20,16,.72);backdrop-filter:blur(4px);color:#fff;font-size:13px;font-weight:500;padding:6px 11px;border-radius:999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
@media (prefers-reduced-motion:reduce){.marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none}.track{animation:none}}

/* about summary */
.summary{display:grid;grid-template-columns:1.15fr 1fr;gap:56px;align-items:center}
.summary .text{display:grid;gap:16px;max-width:60ch}
.summary .lead{font:600 clamp(22px,2.6vw,30px)/1.3 var(--f-display);letter-spacing:-.01em}
.summary .text p:not(.lead){color:var(--muted)}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.stat{background:var(--surface);padding:22px}
.stat b{display:block;font:800 clamp(32px,4vw,46px)/1 var(--f-display);color:var(--accent-ink);font-variant-numeric:tabular-nums}
.stat span{display:block;margin-top:8px;font-size:14px;color:var(--muted)}
@media (max-width:820px){.summary{grid-template-columns:1fr;gap:28px}}

/* clients tiles */
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.tile{all:unset;cursor:pointer;display:grid;grid-template-columns:64px 1fr;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px;transition:border-color .2s,transform .2s}
.tile:hover{border-color:var(--accent);transform:translateY(-2px)}
.tile:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.tile img{width:64px;height:64px;border-radius:8px;object-fit:cover;background:var(--soft)}
.tile b{display:block;font:600 16px/1.2 var(--f-display);overflow-wrap:anywhere}
.tile span{display:block;font:500 11px/1.4 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.also{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px;align-items:center}
.also .lbl{font:500 12px/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-right:4px}
.chip{border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-size:14px;background:var(--surface)}
@media (max-width:1000px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:720px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tile{grid-template-columns:1fr;padding:8px}.tile img{width:100%;height:auto;aspect-ratio:4/3}}

/* CTA band */
.ctaband{background:var(--deep);color:var(--on-deep);border-radius:24px;padding:clamp(28px,5vw,56px);display:grid;grid-template-columns:1.4fr auto;gap:24px;align-items:center}
.ctaband p{opacity:.85;margin-top:12px;max-width:52ch}
.ctaband .acts{display:flex;gap:12px;flex-wrap:wrap}
@media (max-width:760px){.ctaband{grid-template-columns:1fr}}

/* about page */
.about{display:grid;grid-template-columns:1.2fr 1fr;gap:48px}
.about .text{display:grid;gap:16px;max-width:62ch;min-width:0}
.about .text p.lead{font-size:20px;line-height:1.5}
.facts{display:grid;align-content:start;border-top:1px solid var(--line);margin:0}
.fact{display:grid;grid-template-columns:120px 1fr;gap:12px;padding-block:14px;border-bottom:1px solid var(--line)}
.fact dt{font:500 12px/1.5 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.fact dd{margin:0}
.journey{display:grid;grid-template-columns:1fr 1fr;gap:48px}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:108px 1fr;gap:16px;padding-block:16px;border-bottom:1px solid var(--line)}
.timeline .yr{font:500 13px/1.6 var(--f-mono);color:var(--accent-ink);font-variant-numeric:tabular-nums}
.timeline .org{color:var(--muted);font-size:15px}
.creds{display:grid;gap:14px;align-content:start}
.cred{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;display:grid;gap:4px}
.cred .k{font:500 11px/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
@media (max-width:840px){.about,.journey{grid-template-columns:1fr;gap:28px}.fact{grid-template-columns:100px 1fr}.timeline li{grid-template-columns:92px 1fr}}

/* programmes */
.programs{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.prog{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px;display:grid;gap:8px;align-content:start}
.prog .tag{font:500 11px/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}
.prog p{color:var(--muted);font-size:15px}

/* gallery */
.gbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:24px}
.filters{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;min-width:0;max-width:100%}
.filters::-webkit-scrollbar{display:none}
.fchip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 14px;min-height:40px;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap}
.fchip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.fchip .n{font:500 12px var(--f-mono);opacity:.65;margin-left:4px}
.search{flex:0 1 260px;min-width:0}
.search input{width:100%;border:1px solid var(--line);border-radius:999px;padding:9px 16px;min-height:40px;background:var(--surface)}
.adminbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;background:var(--surface);border:1.5px dashed var(--accent);border-radius:var(--r);padding:16px;margin-bottom:24px}
.adminbar .note{font-size:14px;color:var(--muted);flex:1 1 260px;min-width:0}
.albums{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:28px 20px}
.album{all:unset;cursor:pointer;display:grid;gap:12px;border-radius:var(--r)}
.album:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.stack{position:relative;aspect-ratio:4/3;margin:8px 8px 0 0}
.stack::before,.stack::after{content:"";position:absolute;inset:0;border-radius:12px;background:var(--surface);border:1px solid var(--line)}
.stack::before{transform:translate(8px,-8px)}
.stack::after{transform:translate(4px,-4px)}
.stack .cover{position:absolute;inset:0;z-index:1;border-radius:12px;overflow:hidden;background:var(--soft);display:grid;place-items:center}
.stack .cover img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.album:hover .cover img{transform:scale(1.04)}
.stack .cover .ph{font:800 42px/1 var(--f-display);color:var(--accent-ink);opacity:.5}
.stack .count{position:absolute;z-index:2;right:10px;bottom:10px;background:rgba(0,0,0,.66);color:#fff;font:500 12px/1 var(--f-mono);padding:6px 9px;border-radius:999px}
.ameta{display:grid;gap:4px;min-width:0}
.ameta .cat{font:500 11px/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}
.ameta h3{font-size:19px;overflow-wrap:anywhere}
.ameta p{font-size:14px;color:var(--muted)}
@media (max-width:560px){.albums{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 12px}.stack{margin:6px 6px 0 0}.stack::before{transform:translate(6px,-6px)}.stack::after{transform:translate(3px,-3px)}.ameta h3{font-size:16px}.ameta p{font-size:13px}.stack .count{font-size:11px;padding:5px 7px;right:6px;bottom:6px}.search{flex:1 1 100%}}
.empty{border:1px solid var(--line);border-radius:var(--r);padding:40px 24px;text-align:center;color:var(--muted);background:var(--surface)}
.empty b{display:block;color:var(--ink);font-family:var(--f-display);font-size:20px;margin-bottom:6px}
.pill{display:inline-block;font:500 11px/1 var(--f-mono);padding:4px 8px;border-radius:999px;background:var(--soft);color:var(--muted);margin-left:6px;vertical-align:middle}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:60;background:var(--scrim);display:grid;grid-template-rows:auto 1fr auto;color:#eee;touch-action:pan-y}
.lbtop{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:calc(10px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 10px max(16px,env(safe-area-inset-left,0px));font:500 13px var(--f-mono)}
.lbstage{display:grid;place-items:center;min-height:0;padding:0 max(16px,env(safe-area-inset-left,0px))}
.lbstage img,.lbstage video{max-width:100%;max-height:calc(100dvh - 150px);border-radius:8px;user-select:none}
.lbbot{text-align:center;padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px));font-size:14px;min-height:44px}
.lbnav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:22px;cursor:pointer;display:grid;place-items:center}
.lbnav:hover{background:rgba(255,255,255,.26)}
.lbnav.prev{left:max(12px,env(safe-area-inset-left,0px))}
.lbnav.next{right:max(12px,env(safe-area-inset-right,0px))}
.lbclose{background:#fff;color:#111}
@media (max-width:600px){.lbnav{display:none}}

/* testimonials */
.tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
@media (max-width:400px){.tgrid{grid-template-columns:1fr}}
.quote{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:24px;display:grid;gap:14px;align-content:space-between}
.quote blockquote{margin:0;font-size:17px;line-height:1.55;overflow-wrap:anywhere}
.quote blockquote::before{content:"\201C";display:block;font:800 52px/0.6 var(--f-display);color:var(--accent);margin-bottom:10px}
.quote .who b{display:block}
.quote .who span{font-size:14px;color:var(--muted)}
.quote .prog-tag{font:500 11px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink)}
.tform-wrap{display:grid;grid-template-columns:1fr 1.3fr;gap:40px;margin-top:48px;background:var(--deep);color:var(--on-deep);border-radius:22px;padding:36px}
.tform-wrap .intro{display:grid;gap:12px;align-content:start}
.tform-wrap .intro p{opacity:.85}
form.tform{display:grid;gap:12px;min-width:0}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
form.tform label{display:grid;gap:6px;font-size:13px;font-weight:500}
form.tform input,form.tform textarea,form.tform select{width:100%;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.07);border-radius:10px;padding:11px 12px;color:var(--on-deep);min-height:44px}
form.tform select option{color:#111}
form.tform textarea{min-height:120px;resize:vertical}
.msg{font-size:14px;min-height:1.4em}
@media (max-width:840px){.tform-wrap{grid-template-columns:1fr;padding:24px 18px}.row2{grid-template-columns:1fr}}
.mod{margin-top:32px;border:1.5px dashed var(--accent);border-radius:var(--r);padding:20px;background:var(--surface)}
.mod h3{margin-bottom:12px}
.mod .item{display:grid;grid-template-columns:1fr auto;gap:12px;padding-block:12px;border-top:1px solid var(--line);align-items:start}
.mod .item p{font-size:15px;overflow-wrap:anywhere}
.mod .item .acts{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:560px){.mod .item{grid-template-columns:1fr}}

/* contact */
.contact{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:start}
.cards{display:grid;gap:12px}
.ccard{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.ccard .k{font:500 11px/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:6px}
.ccard .v{font-size:18px;font-weight:600;user-select:all;overflow-wrap:anywhere}
.ccard>div{min-width:0}
.ccard .acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:840px){.contact{grid-template-columns:1fr}}

/* footer */
footer{background:var(--deep);color:var(--on-deep);padding-block:44px 28px;margin-top:0}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:32px}
footer .fb{font:800 26px/1 var(--f-display);color:var(--accent)}
footer p,footer li{opacity:.82;font-size:14px}
footer .fh{font:500 12px/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;margin:0 0 12px;opacity:.7}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
footer a{text-decoration:none}
footer a:hover{text-decoration:underline}
footer .base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:32px;padding-top:18px;border-top:1px solid rgba(255,255,255,.14);font-size:13px;opacity:.75}
.linkbtn{background:none;border:0;padding:0;color:inherit;text-decoration:underline;cursor:pointer;font-size:13px}
@media (max-width:760px){footer .cols{grid-template-columns:1fr 1fr}footer .cols>div:first-child{grid-column:1/-1}}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:80;background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:999px;font-size:14px;max-width:calc(100% - 32px);box-shadow:0 10px 30px rgba(0,0,0,.25)}

/* PHP site additions */
.cta-title{font-size:clamp(26px,3.6vw,40px)}
.ftext{margin-top:10px;max-width:36ch}
footer .base a{opacity:.9}
.page-pad{padding-top:40px}
.album-head{padding-block:48px 8px;display:grid;gap:10px}
.album-head .back{justify-self:start}
.album-head h1{font-size:clamp(32px,5.4vw,56px);font-weight:800;letter-spacing:-.03em}
.album-head .meta{display:flex;flex-wrap:wrap;gap:8px 18px;color:var(--muted);font-size:15px}
.photos{columns:4 220px;column-gap:10px;padding-bottom:64px}
.ph-tile{break-inside:avoid;margin-bottom:10px;position:relative;border-radius:10px;overflow:hidden;background:var(--soft);display:block}
.ph-tile img,.ph-tile video{display:block;width:100%;height:auto}
.ph-tile .vbadge{position:absolute;left:8px;top:8px;background:rgba(0,0,0,.66);color:#fff;font:500 11px/1 var(--f-mono);padding:5px 8px;border-radius:6px}
@media (max-width:520px){.photos{columns:2;column-gap:6px}.ph-tile{margin-bottom:6px;border-radius:6px}}
.notice{border-radius:12px;padding:14px 16px;font-size:15px;margin-bottom:18px}
.notice.ok{background:color-mix(in srgb,var(--accent) 18%,var(--surface));color:var(--ink);border:1px solid var(--accent)}
.notice.err{background:color-mix(in srgb,var(--danger) 12%,var(--surface));color:var(--ink);border:1px solid var(--danger)}
.tform-wrap .notice{color:var(--ink)}
.err404{padding-block:96px;display:grid;gap:16px;justify-items:start}
.err404 h1{font-size:clamp(40px,7vw,72px);font-weight:800}
.contact-list{margin:10px 0 0;padding-left:18px;color:var(--muted);display:grid;gap:6px}
.lead-sm{font-size:20px;line-height:1.5}
.btn-on-deep{color:var(--on-deep);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.35)}
.mt-24{margin-top:24px}.mt-36{margin-top:36px}.mt-56{margin-top:56px}
.tform-wrap .intro .eyebrow{color:var(--accent)}
.tform-wrap h2{font-size:clamp(26px,3.4vw,36px)}
.quote .who b{margin-top:6px}
