/* VEL DIGITAL public site.
   Colours come from theme variables (--primary, --bg, --text ...) rendered by the server from the admin "Theme & Colours" settings:
   - :root holds the GLOBAL theme (header, footer, home page, contact page).
   - .scope-photography / .scope-printing / .scope-frames / .scope-software override those variables only inside that department.
   Nothing below hardcodes a brand colour except decorative CMYK dots and the WhatsApp green. */

/* ---------- tokens ---------- */
:root{
  --disp:'Fraunces','Noto Sans Tamil','Latha','Nirmala UI',Georgia,'Times New Roman',serif;
  --body:'Hanken Grotesk','Noto Sans Tamil','Latha','Nirmala UI',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --r:18px;--hh:68px;--ease:cubic-bezier(.22,.8,.24,1);--wa:#15803D;
}
.scope-photography{--disp:'Cormorant Garamond','Noto Sans Tamil','Latha','Nirmala UI',Georgia,'Times New Roman',serif}
.scope-printing{--disp:'Poppins','Noto Sans Tamil','Latha','Nirmala UI','Segoe UI',system-ui,Arial,sans-serif}
.scope-frames{--disp:'Playfair Display','Noto Sans Tamil','Latha','Nirmala UI',Georgia,'Times New Roman',serif}
.scope-software{--disp:'Space Grotesk','Noto Sans Tamil','Latha','Nirmala UI','Segoe UI',system-ui,Arial,sans-serif}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--hh) + 16px);-webkit-text-size-adjust:100%}
html.nav-open{overflow:hidden}
body{margin:0;font-family:var(--body);color:var(--text);background:var(--bg);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:clip}
img,svg{max-width:100%}img{height:auto;display:block}a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--disp);overflow-wrap:break-word}
.i{width:22px;height:22px;flex:none}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--accent-ink);outline-offset:3px;border-radius:6px}
.hd :focus-visible{outline-color:var(--nav-accent)}.ft :focus-visible{outline-color:var(--footer-text)}
.hero :focus-visible,.dhero :focus-visible,.enq-sec :focus-visible{outline-color:var(--accent)}
.skip{position:absolute;left:-999px;top:8px}.skip:focus{left:8px;background:#fff;color:#000;padding:10px 14px;z-index:99;border-radius:8px}
.wrap{width:min(1200px,100% - 2*clamp(18px,4vw,44px));margin-inline:auto}
body.lang-ta{line-height:1.8}body.lang-ta h1,body.lang-ta h2,body.lang-ta h3{letter-spacing:0;line-height:1.3}
main{animation:pagein .5s var(--ease) backwards}/* backwards (not both): no leftover stacking context, so the lightbox stays above the sticky header */
@keyframes pagein{from{opacity:0}to{opacity:1}}
@view-transition{navigation:auto}
.hd{view-transition-name:hd}

/* ---------- header (global theme) ---------- */
.hd{position:sticky;top:0;z-index:50;background:var(--header);color:var(--header-text);border-bottom:1px solid var(--header-line)}
.bar{display:flex;align-items:center;gap:16px;height:var(--hh)}
.brand{flex:none}.brand img{height:50px;width:auto}
.nav{display:flex;gap:2px;margin-left:auto;font-size:14.5px;font-weight:600}
.nav a{position:relative;padding:10px 12px;border-radius:99px;color:var(--header-muted);transition:color .2s,background .2s}
.nav a:hover{color:var(--header-text);background:rgba(128,128,128,.16)}
.nav a[aria-current=page]{color:var(--header-text)}
.nav a[aria-current=page]::after{content:"";position:absolute;left:12px;right:12px;bottom:3px;height:2px;border-radius:2px;background:var(--nav-accent)}
.nav-cta{display:none}
.act{display:flex;align-items:center;gap:10px;flex:none}
.hd-cta{min-height:42px}
.lang{display:flex;border:1px solid var(--header-muted);border-radius:99px;overflow:hidden;font-size:13px}
.lang a{padding:7px 12px;color:var(--header-muted);min-height:36px;display:inline-flex;align-items:center}
.lang a[aria-current]{background:var(--header-text);color:var(--header);font-weight:700}
.mbtn{display:none;width:46px;height:46px;border-radius:12px;border:1px solid var(--header-muted);background:none;cursor:pointer;flex-direction:column;gap:5px;align-items:center;justify-content:center}
.mbtn span{width:20px;height:2px;background:var(--header-text);transition:transform .28s var(--ease),opacity .2s}
.mbtn[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.mbtn[aria-expanded=true] span:nth-child(2){opacity:0}
.mbtn[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:10px 26px;border-radius:99px;font-family:var(--body);font-size:16px;font-weight:700;line-height:1.2;text-align:center;border:2px solid transparent;cursor:pointer;
  background:var(--btn);color:var(--btn-text);transition:transform .2s var(--ease),background .2s,box-shadow .2s,color .2s,border-color .2s}
.btn:hover{transform:translateY(-2px);background:var(--btn-hover);box-shadow:0 10px 20px -12px rgba(0,0,0,.5)}
.btn:active{transform:translateY(0) scale(.98)}
.btn[disabled]{opacity:.7;cursor:progress;transform:none}
.btn-sm{min-height:44px;padding:8px 18px;font-size:14.5px}
.btn-ghost{background:transparent;color:inherit;border-color:currentColor}.btn-ghost:hover{background:rgba(128,128,128,.18);box-shadow:none}
.btn-line{background:transparent;color:var(--text);border-color:var(--text)}.btn-line:hover{background:var(--soft);box-shadow:none}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}

/* ---------- reveal on scroll (JS removes the class after it plays so hover effects stay snappy) ---------- */
.js .rv{opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease),transform .6s var(--ease);transition-delay:calc(var(--i,0)*70ms)}
.js .rv.in{opacity:1;transform:none}
@keyframes shim{to{background-position:-200% 0}}
.ph:not(.is-loaded) .lb,.pc-img:not(.is-loaded),.mi:not(.is-loaded){background:linear-gradient(100deg,var(--soft) 30%,rgba(var(--text-rgb),.09) 50%,var(--soft) 70%) 100% 0/200% 100%;animation:shim 1.3s linear infinite}

/* ---------- shared section pieces ---------- */
.sec{padding:clamp(52px,7vw,96px) 0}.sec.alt{background:var(--soft)}
.sh{max-width:680px;margin-bottom:clamp(24px,4vw,42px)}
.sh h2,.narrow h2,.eg h2,.rel h2,.why-h{font-size:clamp(28px,3.6vw,44px);line-height:1.15;margin:0 0 10px;letter-spacing:-.01em}
.sh p{color:var(--muted);font-size:clamp(16px,1.4vw,18px);margin:0}
.more{margin:28px 0 0;text-align:center}
.empty{color:var(--muted);padding:34px 22px;border:1px dashed var(--border);border-radius:16px;text-align:center;background:var(--surface)}
.narrow{max-width:780px}
details{border-bottom:1px solid var(--border);padding:6px 0}
summary{font-weight:700;cursor:pointer;font-size:17px;min-height:48px;display:flex;align-items:center;gap:10px;list-style:none}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";margin-left:auto;font-size:24px;line-height:1;transition:transform .25s var(--ease)}
details[open] summary::after{transform:rotate(45deg)}
details p{color:var(--muted);margin:0 0 14px}
.dm{position:absolute;top:10px;right:10px;z-index:2;background:var(--accent);color:var(--on-accent);font-style:normal;font-size:11px;font-weight:700;padding:3px 9px;border-radius:99px}

/* ---------- home hero (global theme) ---------- */
.hero{position:relative;isolation:isolate;overflow:hidden;background:var(--secondary);color:var(--on-secondary)}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(60% 80% at 88% 15%,rgba(var(--accent-rgb),.22),transparent 70%),radial-gradient(50% 60% at 0% 100%,rgba(var(--primary-rgb),.4),transparent 70%)}
.hg{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,5vw,64px);align-items:center;padding:clamp(34px,6vw,84px) 0}
.hc{min-width:0}
.hero h1{font-size:clamp(34px,5.2vw,68px);line-height:1.08;letter-spacing:-.02em;margin:0 0 20px;font-weight:700}
.lang-ta .hero h1{font-size:clamp(30px,4.4vw,56px);line-height:1.28}
.lead{font-size:clamp(16px,1.5vw,19px);max-width:58ch;margin:0;opacity:.88}
.facts{list-style:none;padding:0;margin:30px 0 0;display:flex;flex-wrap:wrap;gap:10px 22px;font-size:14.5px}
.facts li{display:flex;align-items:center;gap:8px;opacity:.9}.facts .i{width:18px;height:18px;color:var(--accent)}
.hv{min-width:0;width:var(--hv-w,100%);justify-self:center}
.hv-photo img{width:100%;aspect-ratio:var(--hv-ratio,4/5);height:auto;object-fit:var(--hv-fit,cover);border-radius:var(--hv-radius,999px 999px 28px 28px);box-shadow:0 30px 60px -30px rgba(0,0,0,.7)}
.hv-collage{display:grid;grid-template-columns:1.15fr 1fr;grid-template-rows:1fr 1fr;gap:12px;aspect-ratio:5/5.6}
.hv-collage figure{margin:0;overflow:hidden;background:rgba(128,128,128,.2);animation:rise .9s var(--ease) both}
.hv-collage img{width:100%;height:100%;object-fit:cover}
.hv-collage .c1{grid-row:1/3;border-radius:999px 999px 22px 22px}.hv-collage .c2{border-radius:22px;animation-delay:.15s}.hv-collage .c3{border-radius:22px 22px 22px 90px;animation-delay:.3s}
.hv-collage:has(.c1:last-child){grid-template-columns:1fr}.hv-collage:has(.c1:last-child) .c1{grid-row:auto}
.hv.hv-logo{width:100%;display:grid;place-items:center}.hv-logo img{width:var(--hv-w,min(260px,62%));max-width:100%;filter:drop-shadow(0 20px 50px rgba(var(--accent-rgb),.25));animation:rise 1s var(--ease) both}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* ---------- home: department cards (each uses its own palette + font) ---------- */
.dcards{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.6vw,20px)}
.dcard{position:relative;display:flex;flex-direction:column;min-width:0;border-radius:22px;overflow:hidden;background:var(--primary);color:var(--on-primary);transition:transform .35s var(--ease),box-shadow .35s}
.dcard:hover{transform:translateY(-6px);box-shadow:0 26px 40px -26px rgba(var(--primary-rgb),.8)}
.dcard.scope-printing::before{content:"";height:5px;background:linear-gradient(90deg,#00AEEF 25%,#EC008C 25% 50%,#FFF200 50% 75%,#231F20 75%)}
.dc-media{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:rgba(var(--accent-rgb),.1)}
.dc-media::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 45%,rgba(var(--primary-rgb),.9))}
.dc-img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}.dcard:hover .dc-img{transform:scale(1.05)}
.dc-art{position:absolute;inset:0;display:grid;place-items:center}.dc-art svg{width:56%;max-height:78%}
.scope-software .dc-media{background-image:linear-gradient(rgba(var(--accent-rgb),.12) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--accent-rgb),.12) 1px,transparent 1px);background-size:28px 28px}
.dc-body{padding:0 22px 24px;display:flex;flex-direction:column;gap:8px;flex:1}
.dc-ic{position:relative;z-index:2;pointer-events:none;width:46px;height:46px;margin-top:-23px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:var(--accent);border:1.5px solid var(--accent)}
.dcard h3{font-size:clamp(23px,2vw,29px);line-height:1.15;margin:8px 0 0}
/* whole card stays one big link (stretched), but a card with a video keeps its cover above the link so pressing the cover plays the video */
.dc-link::after{content:"";position:absolute;inset:0;z-index:1}
.dc-link:focus-visible{outline:none}.dcard:has(.dc-link:focus-visible){outline:3px solid var(--accent);outline-offset:3px}
.scope-photography.dcard h3{font-size:clamp(28px,2.4vw,34px);font-weight:600}
.dcard p{margin:0;opacity:.88;font-size:15px}
.go{margin-top:auto;padding-top:12px;display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14.5px;color:var(--accent-on-primary)}
.go .i{width:18px;height:18px;transition:transform .25s var(--ease)}.dcard:hover .go .i{transform:translateX(4px)}

/* home: featured work (photography palette) */
.hp-work{background:var(--bg);color:var(--text)}
.fw{columns:3;column-gap:14px}
.mi{position:relative;display:block;margin:0 0 14px;break-inside:avoid;border-radius:14px;overflow:hidden;background:var(--surface)}
.mi img{width:100%;height:auto;transition:transform .8s var(--ease)}.mi:hover img{transform:scale(1.04)}
.mi span{position:absolute;left:10px;bottom:10px;max-width:calc(100% - 20px);background:rgba(var(--bg-rgb),.82);color:var(--text);padding:4px 12px;border-radius:99px;font-size:13px}

/* home: services overview */
.ovs{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.ov{min-width:0;background:var(--surface);color:var(--text);border:1px solid var(--border);border-top:4px solid var(--accent);border-radius:16px;padding:20px}
.ov h3{margin:0;font-size:clamp(20px,1.8vw,24px)}.ov h3 a{display:flex;align-items:center;gap:10px}.ov h3 .i{color:var(--accent-ink)}
.ov ul{list-style:none;padding:0;margin:12px 0 0}
.ov li a{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 8px;border-radius:10px;font-size:15px;transition:background .2s}
.ov li a:hover{background:var(--soft)}.ov li .i{width:20px;height:20px;color:var(--accent-ink)}

/* home: products (frames palette) */
.hp-products{background:var(--bg);color:var(--text)}

/* home: why choose */
.wg{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(24px,5vw,64px);align-items:start}
.whys{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.whys li{display:flex;gap:16px;padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:16px}
.whys .i{width:28px;height:28px;color:var(--primary);margin-top:2px}
.whys h3{margin:0 0 4px;font-size:19px}.whys p{margin:0;color:var(--muted);font-size:15.5px}
.why-h{font-size:clamp(24px,2.6vw,32px);margin-bottom:16px}
.tms{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
blockquote{margin:0;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px}
blockquote p{margin:0 0 12px}cite{font-weight:700;font-style:normal;font-size:14px;color:var(--secondary-ink)}

/* ---------- department pages: shared hero ---------- */
.dept{background:var(--bg);color:var(--text)}
.dhero{position:relative;isolation:isolate;overflow:hidden;background:var(--primary);color:var(--on-primary)}
.page-hero{background:var(--secondary);color:var(--on-secondary)}
.dh-in{position:relative;padding:clamp(36px,6vw,84px) 0}
.dhero h1{font-size:clamp(34px,5vw,64px);line-height:1.08;margin:0 0 16px;letter-spacing:-.015em;font-weight:700}
.dhero .lead{opacity:.9}
.crumb{font-size:14px;opacity:.82;margin-bottom:18px}.crumb a:hover{text-decoration:underline}

/* ---------- photography ---------- */
.ph-hero{display:flex;align-items:flex-end;min-height:clamp(420px,78vh,760px);min-height:clamp(420px,78svh,760px)}
.ph-hero .dh-in{width:min(1200px,100% - 2*clamp(18px,4vw,44px))}
.ph-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;animation:kb 26s ease-in-out infinite alternate}
@keyframes kb{to{transform:scale(1.07)}}
.ph-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(var(--primary-rgb),.96) 0%,rgba(var(--primary-rgb),.6) 42%,rgba(var(--primary-rgb),.25) 100%),linear-gradient(90deg,rgba(var(--primary-rgb),.6),transparent 70%)}
.ph-hero h1{font-size:clamp(46px,9vw,124px);line-height:.94;font-weight:600;letter-spacing:-.02em;max-width:12ch}
.ph-hero h1::after{content:"";display:block;width:84px;height:2px;margin-top:22px;background:var(--accent)}
.lang-ta .ph-hero h1{font-size:clamp(36px,6.4vw,84px);line-height:1.18;max-width:none}
.ph-hero .lead{font-size:clamp(17px,1.6vw,21px)}
.gal-sec{background:var(--bg);padding-top:clamp(20px,3vw,36px)}
.fbar{position:sticky;top:calc(var(--hh) + 3px);z-index:20;background:rgba(var(--bg-rgb),.93);padding:10px 0;margin-bottom:10px;border-bottom:1px solid var(--border)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}
.fbar .chips{flex-wrap:nowrap;overflow-x:auto;margin:0;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:2px}
.fbar .chips::-webkit-scrollbar{display:none}
.chip{flex:none;min-height:44px;padding:8px 18px;border-radius:99px;border:1.5px solid var(--border);background:var(--surface);color:var(--text);font-weight:600;font-size:14.5px;cursor:pointer;white-space:nowrap;transition:background .2s,border-color .2s,color .2s}
.chip:hover{border-color:var(--accent-ink)}.chip.on{background:var(--text);color:var(--bg);border-color:var(--text)}
.gsec{padding:clamp(22px,4vw,46px) 0;scroll-margin-top:calc(var(--hh) + 84px)}.gsec[hidden]{display:none}
.gh{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;margin-bottom:20px}
.gh h2{margin:0;font-size:clamp(32px,4.2vw,54px);font-weight:600;line-height:1}
.gi{color:var(--accent);display:inline-flex}.gi .i{width:26px;height:26px}.gn{margin-left:auto;color:var(--muted);font-size:14px}
.mas{columns:3;column-gap:14px}
.ph{position:relative;margin:0 0 14px;break-inside:avoid;border-radius:6px;overflow:hidden;background:var(--surface)}
.ph .lb{display:block;width:100%;padding:0;border:0;background:none;line-height:0;cursor:zoom-in;position:relative}
.ph img{width:100%;height:auto;transition:transform .9s var(--ease),filter .5s}
.ph:hover img{transform:scale(1.035)}
.ph figcaption{position:absolute;left:0;right:0;bottom:0;padding:38px 14px 12px;pointer-events:none;background:linear-gradient(0deg,rgba(var(--bg-rgb),.88),transparent);font-family:var(--disp);font-size:19px;line-height:1.2;opacity:0;transform:translateY(6px);transition:opacity .35s,transform .35s var(--ease)}
.ph:hover figcaption,.ph:focus-within figcaption{opacity:1;transform:none}
@media(hover:none){.ph figcaption{opacity:1;transform:none;font-size:16px;padding-top:30px}}
.lay-story .mas{columns:2;column-gap:22px}.lay-story .ph{margin-bottom:22px;border-radius:2px}
.lay-contact .mas{columns:4;column-gap:8px}.lay-contact .ph{margin-bottom:8px;border-radius:3px}
.lay-contact .ph figcaption{display:none}
.strip{--sh:clamp(260px,46vw,460px);display:flex;gap:14px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:14px;scrollbar-color:var(--accent) transparent}
.strip .ph{flex:none;height:var(--sh);margin:0;scroll-snap-align:start;border-radius:4px}
.strip .ph .lb{height:100%}.strip .ph img{width:auto;height:100%;max-width:none}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:60px 64px 76px;background:rgba(8,6,5,.96);color:#fff}
.lightbox[hidden]{display:none}
.lightbox figure{margin:0;display:grid;gap:12px;justify-items:center;max-width:100%}
.lightbox img{max-width:100%;max-height:calc(100vh - 160px);max-height:calc(100dvh - 160px);width:auto;height:auto;border-radius:4px;animation:pagein .3s both}
.lightbox figcaption{font-size:15px;text-align:center;opacity:.9}
/* camera-flash shown when a photography picture is opened (see site.js) */
.shutter{position:fixed;inset:0;z-index:120;background:#fff;opacity:0;pointer-events:none}
.shutter.go{animation:shutter .32s cubic-bezier(.2,.7,.3,1) both}
@keyframes shutter{0%{opacity:0}22%{opacity:.85}100%{opacity:0}}
.lx{position:absolute;display:grid;place-items:center;width:52px;height:52px;border:0;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:30px;line-height:1;cursor:pointer;transition:background .2s}
.lx:hover{background:rgba(255,255,255,.26)}.lx.x{top:12px;right:12px}.lx.p{left:12px;top:50%;margin-top:-26px}.lx.n{right:12px;top:50%;margin-top:-26px}

/* ---------- printing ---------- */
.pr-hero{background:radial-gradient(70% 90% at 92% 8%,rgba(var(--secondary-rgb),.6),transparent 70%),var(--primary)}
.pr-hero::after{content:"";position:absolute;z-index:-1;right:-6%;bottom:-40%;width:46%;height:90%;background:rgba(var(--accent-rgb),.16);transform:rotate(-14deg)}
.pr-hero h1{font-weight:800;letter-spacing:-.025em}
.pr-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,5vw,56px);align-items:center}.pr-grid>*{min-width:0}
.pr-stack{position:relative;height:clamp(250px,30vw,340px)}
.sheet{position:absolute;width:64%;display:grid;gap:8px;padding:18px;border-radius:12px;background:var(--surface);color:var(--text);box-shadow:0 22px 40px -18px rgba(0,0,0,.5);font-family:var(--disp)}
.sheet .i{width:30px;height:30px;color:var(--secondary-ink)}.sheet b{font-size:17px;line-height:1.2;overflow-wrap:anywhere}
.sheet i{display:block;height:7px;border-radius:4px;background:var(--border)}.sheet i+i{width:60%}
.sh1{left:0;top:8%;transform:rotate(-5deg)}.sh2{right:0;top:0;transform:rotate(3deg);z-index:2}.sh3{left:16%;bottom:0;transform:rotate(-1.5deg);z-index:3}
.cmyk{position:absolute;right:4px;bottom:4px;display:flex;gap:6px;z-index:4}.cmyk span{width:22px;height:22px;border-radius:50%;border:2px solid var(--on-primary)}
.svcs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:16px}
.svc{display:flex;flex-direction:column;gap:10px;min-width:0;padding:22px;background:var(--surface);border:1px solid var(--border);border-left:5px solid var(--accent);border-radius:16px;transition:transform .3s var(--ease),box-shadow .3s}
.svc:hover{transform:translateY(-4px);box-shadow:0 18px 34px -22px rgba(var(--text-rgb),.45)}
.svc-ic{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:var(--primary);color:var(--on-primary)}.svc-ic .i{width:26px;height:26px}
.svc h3{margin:4px 0 0;font-size:19px;font-weight:700;line-height:1.25}.svc-n{margin:0;color:var(--muted);font-size:14px}
.svc .ia{margin-top:auto}
.steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.steps li{padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:16px}
.sn{display:grid;place-items:center;width:40px;height:40px;margin-bottom:12px;border-radius:50%;background:var(--secondary);color:var(--on-secondary);font-weight:700}
.steps h3{margin:0 0 6px;font-size:19px;line-height:1.25}.steps p{margin:0;color:var(--muted)}

/* ---------- product cards (printing samples, frames, home) ---------- */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:18px}
.pc{display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:16px;transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.pc:hover{transform:translateY(-4px);border-color:var(--accent-ink);box-shadow:0 18px 36px -22px rgba(var(--text-rgb),.5)}
.pc[hidden]{display:none}
.pc-img{position:relative;display:grid;place-items:center;aspect-ratio:1/1;overflow:hidden;background:var(--soft)}
.pc-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:transform .6s var(--ease)}.pc:hover .pc-img img{transform:scale(1.04)}
.pc-ph{display:grid;place-items:center;color:var(--accent-ink);opacity:.75}.pc-ph .i{width:64px;height:64px}.pc-ph.big .i{width:120px;height:120px}
.pc-b{display:flex;flex-direction:column;gap:6px;flex:1;padding:16px 16px 18px}
.pc-cat{margin:0;font-size:13px;font-weight:600;color:var(--secondary-ink)}
.pc h3{margin:0;font-size:19px;line-height:1.25}.pc h3 a:hover{text-decoration:underline}
.pc-d{margin:0;color:var(--muted);font-size:14.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sizes{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 0;padding:0;list-style:none}.sizes li{padding:3px 10px;border-radius:99px;border:1px solid var(--border);background:var(--soft);font-size:12.5px;font-weight:600;color:var(--text)}
.pd-sz{margin:18px 0 0}.pd-sz h2{font-size:16px;margin:0 0 8px;font-family:var(--body)}.pd-sz .sizes li{font-size:14px;padding:6px 14px}
.pc-p{margin:0;font-weight:700}.pc-pr{color:var(--muted);font-weight:600;font-size:14.5px}
.ia{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:10px}.ia:empty{display:none}
.scope-frames .pc{border-radius:6px}.scope-frames .pc:hover{border-color:var(--accent)}

/* ---------- photo frames ---------- */
.fr-hero{background:radial-gradient(60% 80% at 82% 30%,rgba(var(--accent-rgb),.24),transparent 70%),var(--primary)}
.fr-hero h1{font-weight:600}
.fr-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,5vw,56px);align-items:center}.fr-grid>*{min-width:0}
.fr-frame{position:relative;justify-self:center;width:min(100%,360px);padding:14px;border:2px solid var(--accent);border-radius:3px;transform:rotate(1.5deg);box-shadow:0 30px 50px -26px rgba(0,0,0,.65)}
.fr-frame::before{content:"";position:absolute;inset:6px;border:1px solid rgba(var(--accent-rgb),.55);pointer-events:none}
.fr-mat{display:grid;place-items:center;aspect-ratio:4/5;padding:clamp(14px,2.4vw,26px);background:var(--surface)}
.fr-mat img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.fr-art svg{width:72%}
.tools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:18px}
.srch{display:flex;align-items:center;gap:10px;flex:1 1 260px;min-height:50px;padding:0 18px;background:var(--surface);border:1.5px solid var(--border);border-radius:99px}
.srch:focus-within{border-color:var(--secondary-ink);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.28)}
.srch input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:16px;min-height:46px}
.srch .i{color:var(--muted)}
.sort{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14.5px}
.sort select{min-height:48px;padding:0 14px;border-radius:12px;border:1.5px solid var(--border);background:var(--surface);font-size:15px}
.count{margin:2px 0 14px;color:var(--muted);font-size:14px}
.none{padding:34px 22px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:16px}
.pd{padding:clamp(24px,4vw,56px) 0 clamp(34px,5vw,70px)}
.pd .crumb{color:var(--muted);opacity:1}
.pd-g{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,5vw,60px);align-items:start}.pd-g>*{min-width:0}
.pd-m{position:relative;display:grid;place-items:center;padding:clamp(12px,2vw,24px);background:var(--soft);border:1px solid var(--border);border-radius:12px}
.pd-m img{width:auto;max-width:100%;height:auto;max-height:78vh;object-fit:contain}
.pd-i h1{font-size:clamp(28px,4vw,46px);line-height:1.12;margin:6px 0 10px}
.pd-p{font-size:22px;font-weight:700;margin:0 0 12px}.pd-d{color:var(--muted);font-size:17px;margin:0}
.pd-c{margin-top:22px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:14px}
.pd-c h2{font-size:20px;margin:0 0 6px}.pd-c p{margin:0;color:var(--muted)}.pd-c .cta{margin-top:16px}
.rel{margin-top:clamp(34px,5vw,64px)}.rel h2{font-size:clamp(24px,3vw,34px);margin-bottom:18px}

/* ---------- VEL software ---------- */
.sw-hero{background:radial-gradient(60% 70% at 88% 18%,rgba(var(--secondary-rgb),.55),transparent 70%),radial-gradient(40% 50% at 8% 100%,rgba(var(--accent-rgb),.16),transparent 70%),var(--primary)}
.sw-hero::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(rgba(128,128,128,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(128,128,128,.12) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(70% 80% at 70% 30%,#000,transparent);mask-image:radial-gradient(70% 80% at 70% 30%,#000,transparent)}
.sw-hero h1{font-weight:700;letter-spacing:-.03em}
.sw-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,5vw,56px);align-items:center}.sw-grid>*{min-width:0}
.sw-win{justify-self:end;width:100%;max-width:480px;overflow:hidden;border-radius:14px;border:1px solid rgba(128,128,128,.4);background:rgba(128,128,128,.1);box-shadow:0 30px 60px -30px rgba(0,0,0,.65)}
.sw-bar{display:flex;gap:6px;padding:10px 12px;border-bottom:1px solid rgba(128,128,128,.35)}.sw-bar i{width:9px;height:9px;border-radius:50%;background:var(--accent);opacity:.75}
.sw-body{display:grid;grid-template-columns:70px 1fr;min-height:210px}
.sw-side{display:grid;gap:8px;align-content:start;padding:12px;border-right:1px solid rgba(128,128,128,.35)}.sw-side b{height:8px;border-radius:4px;background:rgba(128,128,128,.5)}
.sw-main{display:grid;gap:14px;padding:14px}.sw-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sw-row u{height:34px;border-radius:8px;background:rgba(var(--secondary-rgb),.6);text-decoration:none}
.sw-chart{display:flex;align-items:flex-end;gap:8px;height:110px}.sw-chart s{flex:1;height:var(--h);border-radius:5px 5px 0 0;background:linear-gradient(0deg,var(--secondary),var(--accent));text-decoration:none;transform-origin:bottom;animation:grow 1.1s var(--ease) both}
@keyframes grow{from{transform:scaleY(.12)}}
.swg{margin-bottom:clamp(28px,4vw,44px)}.swg:last-child{margin-bottom:0}
.swg h3{margin:0 0 16px;padding-left:14px;border-left:4px solid var(--accent);font-size:clamp(22px,2.4vw,30px);line-height:1.2}
.scs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:16px}
.sc{position:relative;display:flex;flex-direction:column;gap:10px;min-width:0;padding:22px;background:var(--surface);border:1px solid var(--border);border-radius:14px;transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}
.sc::before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:3px;border-radius:14px 14px 0 0;background:linear-gradient(90deg,var(--secondary),var(--accent));opacity:0;transition:opacity .3s}
.sc:hover{transform:translateY(-4px);border-color:var(--secondary-ink);box-shadow:0 18px 34px -22px rgba(var(--text-rgb),.5)}.sc:hover::before{opacity:1}
.sc-ic{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:rgba(var(--secondary-rgb),.13);color:var(--secondary-ink)}
.sc-img{width:100%;height:auto;border-radius:8px}.sc h3{margin:0;font-size:20px;line-height:1.25}.sc p{margin:0;color:var(--muted);font-size:15px}.sc .ia{margin-top:auto}

/* ---------- enquiry + contact (call-to-action) ---------- */
.enq-sec{position:relative;isolation:isolate;overflow:hidden;background:var(--cta);color:var(--on-cta);padding:clamp(56px,8vw,104px) 0}
.enq-sec::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(55% 70% at 8% 0%,rgba(255,255,255,.14),transparent 70%),radial-gradient(45% 60% at 100% 100%,rgba(0,0,0,.22),transparent 70%)}
.enq-sec::after{content:"";position:absolute;z-index:-1;right:-140px;top:-140px;width:420px;height:420px;border-radius:50%;border:60px solid rgba(255,255,255,.07)}
.eg{display:grid;grid-template-columns:1.02fr 1fr;gap:clamp(28px,6vw,80px);align-items:center}.eg>*{min-width:0}
.eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 14px;padding:6px 14px;border-radius:99px;background:rgba(255,255,255,.14);color:var(--on-cta);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.eyebrow::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent-on-cta)}
.lang-ta .eyebrow{text-transform:none;letter-spacing:0}
.eg-t h2{font-size:clamp(32px,4.4vw,56px);line-height:1.08;margin:0 0 14px;letter-spacing:-.015em}
.eg-t .eg-sub{opacity:.92;margin:0;font-size:clamp(16px,1.5vw,19px);max-width:46ch}
.cl{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:12px}
.cl li{display:flex;gap:14px;align-items:center;padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18)}
.cl li>.i,.cl li a>.i{flex:none;width:44px;height:44px;padding:11px;border-radius:12px;background:var(--on-cta);color:var(--cta);margin:0}
.cl li a{display:flex;gap:14px;align-items:center;min-width:0}
.cl .cl-n{font-family:var(--disp);font-size:clamp(22px,2.6vw,30px);font-weight:700;line-height:1.1}
.cl small{display:block;font-size:13px;opacity:.8}
.cl li span{min-width:0;overflow-wrap:anywhere}
a:hover>.cl-n{text-decoration:underline}
.eg-btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.btn-wa{background:var(--wa);color:#fff}.btn-wa:hover{background:#166534}
.btn-wa .i{width:20px;height:20px}
.eg-pts{list-style:none;padding:0;margin:26px 0 0;display:flex;flex-wrap:wrap;gap:10px 22px;font-size:14.5px;font-weight:600}
.eg-pts li{display:flex;align-items:center;gap:8px}.eg-pts .i{width:20px;height:20px;color:var(--accent-on-cta)}
.eg-t .btn-ghost{color:var(--on-cta)}
.enq{position:relative;display:grid;gap:16px;padding:clamp(22px,3vw,36px);background:var(--surface);color:var(--text);border-radius:24px;box-shadow:0 40px 70px -36px rgba(0,0,0,.7);overflow:hidden}
.enq::before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:linear-gradient(90deg,var(--cta),var(--accent))}
.enq-h{margin:4px 0 0;font-family:var(--disp);font-size:clamp(22px,2.2vw,27px);line-height:1.2}.enq-s{margin:-8px 0 0;color:var(--muted);font-size:14.5px}
.enq label{display:grid;gap:6px;font-weight:600;font-size:14px}
.enq input,.enq select,.enq textarea{width:100%;min-height:48px;padding:12px 14px;font-size:16px;border:1.5px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text)}
.enq textarea{resize:vertical;min-height:96px}
.enq select{appearance:none;-webkit-appearance:none;padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23777' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;cursor:pointer}
.enq input:focus,.enq select:focus,.enq textarea:focus{outline:none;border-color:var(--secondary-ink);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.3)}
.enq [aria-invalid=true]{border-color:var(--err)}.fe{color:var(--err);font-size:13px;font-weight:600}
.enq .btn{width:100%;min-height:56px;font-size:17px;background:var(--wa);color:#fff}.enq .btn:hover{background:#166534}.enq .btn .i{width:22px;height:22px}
.fine{font-size:12.5px;color:var(--muted)!important;margin:0}.hp{position:absolute;left:-9999px}
.chosen{margin:0;padding:8px 12px;border-left:4px solid var(--accent);border-radius:8px;background:rgba(var(--accent-rgb),.16);font-size:14px;font-weight:600}.chosen[hidden]{display:none}
.ccs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px}
.cc{display:flex;gap:14px;align-items:flex-start;min-width:0;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:16px;transition:transform .25s var(--ease),border-color .25s}
a.cc:hover{transform:translateY(-3px);border-color:var(--accent-ink)}
.cc .i{width:26px;height:26px;color:var(--primary);margin-top:2px}.cc>span{min-width:0}.cc b{display:block}.cc span span{display:block;color:var(--muted);overflow-wrap:anywhere}

/* ---------- footer (global theme) ---------- */
.ft{background:var(--footer);color:var(--footer-muted);padding:56px 0 20px;border-top:1px solid var(--footer-line)}
.fg{display:grid;grid-template-columns:1.2fr 1fr 1fr 1.2fr;gap:30px}.fg>*{min-width:0}
.ft img{height:92px;width:auto;margin-bottom:10px}.ft h3{margin:0 0 12px;font-size:16px;color:var(--footer-text)}
.ft a,.ft p{display:block;font-size:14.5px;margin:0;padding:5px 0;overflow-wrap:anywhere}.ft a{color:var(--footer-text);opacity:.88;transition:opacity .2s}.ft a:hover{opacity:1;text-decoration:underline}
.cp{margin-top:30px;padding:16px 0 0;border-top:1px solid var(--footer-line);font-size:13px}
/* floating WhatsApp button: image icon + pulsing rings + gentle wiggle */
.wafl{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;justify-content:center;width:68px;height:68px;border-radius:50%;--wa-glow:#25D366}
.wafl img{position:relative;z-index:2;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 8px 14px rgba(0,0,0,.35));transform-origin:50% 60%;animation:wa-wiggle 4.8s ease-in-out 1.5s infinite;transition:transform .25s var(--ease)}
.wafl:hover img,.wafl:focus-visible img{animation-play-state:paused;transform:scale(1.12)}
.wafl-ring{position:absolute;inset:6px;z-index:1;border-radius:50%;background:var(--wa-glow);opacity:0;animation:wa-ring 2.6s cubic-bezier(.2,.6,.3,1) infinite}
.wafl-ring.r2{animation-delay:1.3s}
.wafl-tip{position:absolute;right:calc(100% + 12px);top:50%;z-index:3;white-space:nowrap;padding:9px 16px;border-radius:99px;background:#fff;color:#14110F;font-size:14px;font-weight:700;box-shadow:0 10px 26px -10px rgba(0,0,0,.5);opacity:0;pointer-events:none;transform:translate(10px,-50%);transition:opacity .25s,transform .25s var(--ease)}
.wafl-tip::after{content:"";position:absolute;left:100%;top:50%;margin-top:-6px;border:6px solid transparent;border-left-color:#fff}
.wafl:hover .wafl-tip,.wafl:focus-visible .wafl-tip{opacity:1;transform:translate(0,-50%)}
.wafl-tip.hello{animation:wa-hello 7s var(--ease) 3.5s 1 backwards}
@keyframes wa-ring{0%{transform:scale(.9);opacity:.55}80%,100%{transform:scale(2.05);opacity:0}}
@keyframes wa-wiggle{0%,62%,100%{transform:rotate(0) translateY(0)}68%{transform:translateY(-9px) rotate(-8deg)}74%{transform:translateY(0) rotate(8deg)}80%{transform:translateY(-5px) rotate(-5deg)}86%{transform:translateY(0) rotate(4deg)}92%{transform:rotate(0)}}
@keyframes wa-hello{0%{opacity:0;transform:translate(14px,-50%)}8%,86%{opacity:1;transform:translate(0,-50%)}100%{opacity:0;transform:translate(14px,-50%)}}

/* ---------- responsive ---------- */
@media(max-width:1100px){.dcards,.ovs{grid-template-columns:repeat(2,1fr)}.mas{columns:2}.lay-contact .mas{columns:3}.fw{columns:2}}
@media(max-width:1020px){
  .nav{position:fixed;left:0;right:0;top:var(--hh);z-index:49;flex-direction:column;gap:0;margin:0;padding:8px clamp(18px,4vw,44px) 22px;max-height:calc(100vh - var(--hh));max-height:calc(100dvh - var(--hh));overflow-y:auto;font-size:17px;
    background:var(--header);border-bottom:1px solid var(--header-line);box-shadow:0 30px 40px -20px rgba(0,0,0,.5);
    opacity:0;visibility:hidden;transform:translateY(-10px);transition:opacity .25s var(--ease),transform .3s var(--ease),visibility 0s .3s}
  .nav.open{opacity:1;visibility:visible;transform:none;transition-delay:0s}
  .nav a{padding:0 4px;min-height:54px;display:flex;align-items:center;border-radius:0;border-bottom:1px solid rgba(128,128,128,.25)}
  .nav a[aria-current=page]::after{left:4px;right:auto;width:28px;bottom:10px}
  .nav-cta{display:flex!important;justify-content:center;margin-top:16px;border:0!important;border-radius:99px!important;background:var(--btn);color:var(--btn-text)!important;font-weight:700}
  .mbtn{display:flex}.act{margin-left:auto}
}
@media(max-width:900px){.hg,.eg,.wg,.pd-g,.pr-grid,.fr-grid,.sw-grid{grid-template-columns:1fr}.hv{max-width:520px}.hv-photo img{aspect-ratio:var(--hv-ratio,4/3)}.hv-collage{aspect-ratio:16/11}.pr-stack{max-width:440px}.sw-win{justify-self:start}.fr-frame{justify-self:start}
  .steps,.tms{grid-template-columns:1fr}.fg{grid-template-columns:1fr 1fr}.pd-m img{max-height:60vh}}
@media(max-width:700px){.hd-cta{display:none}.pr-stack,.fr-frame{display:none}.hv-collage{aspect-ratio:4/3}.lay-story .mas{columns:1}.lay-contact .mas{columns:2}.strip{--sh:clamp(220px,62vw,340px)}}
@media(max-width:560px){.dcards,.ovs,.fg{grid-template-columns:1fr}.mas,.fw{columns:2;column-gap:10px}.ph,.mi{margin-bottom:10px}.cta .btn{flex:1 1 100%}.wafl{width:60px;height:60px}.wafl-tip{display:none}.cp{padding-bottom:84px}.brand img{height:44px}.bar{gap:10px}.pgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.pc-b{padding:12px 12px 14px}.pc h3{font-size:16px}.pc .ia .btn{flex:1 1 100%}.lightbox{padding:56px 12px 84px}.lx.p{top:auto;bottom:14px;left:calc(50% - 64px);margin:0}.lx.n{top:auto;bottom:14px;right:calc(50% - 64px);margin:0}.sw-body{grid-template-columns:48px 1fr}.scs,.svcs{grid-template-columns:1fr}}
@media(max-width:360px){.lang a{padding:7px 9px}.pgrid{grid-template-columns:1fr}.mas,.fw{columns:1}.lay-contact .mas{columns:2}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.js .rv{opacity:1;transform:none}}

/* ---------- hero and category media (image or video) ---------- */
.hm{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hm-img,.hm-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hm-vid{opacity:0;transition:opacity .7s var(--ease)}.hm-vid.is-playing{opacity:1}
.hm-failed .hm-vid{display:none}
.hm-shade{position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(var(--primary-rgb),.9),rgba(var(--primary-rgb),.62) 55%,rgba(var(--primary-rgb),.4)),linear-gradient(0deg,rgba(var(--primary-rgb),.45),transparent 45%)}
.page-hero .hm-shade{background:linear-gradient(90deg,rgba(var(--secondary-rgb),.9),rgba(var(--secondary-rgb),.6) 60%,rgba(var(--secondary-rgb),.4))}
.hv-video{position:relative;z-index:0;aspect-ratio:var(--hv-ratio,4/5);border-radius:var(--hv-radius,999px 999px 28px 28px);overflow:hidden;background:rgba(128,128,128,.2);box-shadow:0 30px 60px -30px rgba(0,0,0,.7)}
.hv-video .hm{z-index:auto}.hv-video .hm-img,.hv-video .hm-vid{object-fit:var(--hv-fit,cover)}
.cm{position:relative;margin:0;overflow:hidden;aspect-ratio:16/10;border-radius:12px;background:rgba(var(--text-rgb),.08)}
.cm img,.cm .cm-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cm .cm-vid{object-fit:contain;background:#000}
.cm-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;padding:0;border-radius:50%;border:2px solid rgba(255,255,255,.9);background:rgba(0,0,0,.55);color:#fff;display:grid;place-items:center;cursor:pointer;transition:transform .25s var(--ease),background .25s}
.cm-play:hover{transform:translate(-50%,-50%) scale(1.07);background:rgba(0,0,0,.75)}.cm-play svg{width:26px;height:26px;margin-left:3px}
.cm-failed .cm-play{display:none}
.cm-feature{aspect-ratio:21/9;margin:0 0 clamp(14px,2vw,22px)}
.svc.has-media{overflow:hidden}.svc-media{margin:-22px -22px 6px;border-radius:0}
@media(max-width:900px){.hv-video{aspect-ratio:var(--hv-ratio,4/3)}}
@media(max-width:700px){.cm-feature{aspect-ratio:16/10}}

/* ---------- home department cards: click-to-play video ---------- */
.dc-media.dc-has-video{z-index:2;cursor:pointer;background:#000}
.dc-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000;opacity:0;transition:opacity .25s}
.dc-has-video.is-live .dc-vid{opacity:1}
.dc-play{position:absolute;inset:0;z-index:3;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer;display:grid;place-items:center;-webkit-tap-highlight-color:transparent}
.dc-play:focus-visible{outline:3px solid var(--accent);outline-offset:-4px}
.dc-ico{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;color:#fff;background:rgba(0,0,0,.55);border:2px solid rgba(255,255,255,.92);box-shadow:0 0 0 0 rgba(255,255,255,.45);animation:dcpulse 2.6s ease-out infinite;transition:transform .25s var(--ease),opacity .25s,background .25s}
.dc-ico svg{width:28px;height:28px}.dc-i-play svg{margin-left:3px}
.dc-i-pause,.dc-i-mute{display:none}
.dc-play:hover .dc-ico{transform:scale(1.08);background:rgba(0,0,0,.75)}
.dc-has-video.is-playing .dc-ico{opacity:0;transform:scale(.85);animation:none}
.dc-has-video.is-playing .dc-i-play{display:none}.dc-has-video.is-playing .dc-i-pause{display:block}
.dc-has-video.is-playing .dc-play:hover .dc-ico,.dc-has-video.is-playing .dc-play:focus-visible .dc-ico{opacity:1;transform:none}
.dc-has-video.is-loading .dc-ico{opacity:0;animation:none}
.dc-spin{position:absolute;z-index:3;left:50%;top:50%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;opacity:0;pointer-events:none;transition:opacity .15s;animation:dcspin .8s linear infinite}
.dc-has-video.is-loading .dc-spin{opacity:1}
.dc-mute{position:absolute;z-index:4;right:10px;bottom:10px;width:44px;height:44px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;cursor:pointer;color:#fff;background:rgba(0,0,0,.6);transition:background .2s}
.dc-mute[hidden]{display:none}.dc-mute:hover{background:rgba(0,0,0,.8)}.dc-mute:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.dc-mute svg{width:22px;height:22px}
.dc-has-video.is-muted .dc-i-vol{display:none}.dc-has-video.is-muted .dc-i-mute{display:block}
.dc-has-video.is-active::after{opacity:.55}
.dc-failed.dc-has-video{z-index:0;cursor:inherit}.dc-failed .dc-play,.dc-failed .dc-spin,.dc-failed .dc-mute,.dc-failed .dc-vid{display:none}
@keyframes dcpulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.45)}70%,100%{box-shadow:0 0 0 18px rgba(255,255,255,0)}}
@keyframes dcspin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.dc-spin{animation:dcspin 1.6s linear infinite!important}}

/* Photography: the display font (Cormorant Garamond) draws old-style numerals that look uneven in a phone number.
   Use the clean body font with lining, equal-width digits there. */
.scope-photography .cl .cl-n{font-family:var(--body);font-weight:800;font-variant-numeric:lining-nums tabular-nums;letter-spacing:.02em}

/* ---------- printing: clean media hero + picture gallery ---------- */
.pr-media{display:flex;align-items:flex-end;min-height:clamp(360px,72svh,720px);min-height:clamp(360px,72vh,720px);min-height:clamp(360px,72svh,720px);background:#0b1020}
.pr-media::after{display:none}
.pr-media .dh-in{width:min(1200px,100% - 2*clamp(18px,4vw,44px));padding-bottom:clamp(26px,5vw,56px)}
.pr-shade{position:absolute;inset:auto 0 0 0;height:60%;z-index:-1;pointer-events:none;background:linear-gradient(0deg,rgba(0,0,0,.62),rgba(0,0,0,.28) 55%,transparent)}
.pr-media h1{margin:0 0 8px;color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.45)}
.pr-media .lead{margin:0;max-width:60ch;font-size:clamp(16px,1.6vw,20px);color:#fff;opacity:.95;text-shadow:0 1px 12px rgba(0,0,0,.5)}
.pr-hero:not(.pr-media) .dh-in{padding:clamp(48px,8vw,110px) 0}
.pr-hero:not(.pr-media) .lead{max-width:60ch}
.pr-gal{padding-top:clamp(22px,3.5vw,44px)}
.pr-gal .chips{margin-bottom:clamp(16px,2.4vw,26px)}
.pr-mas .ph figcaption{font-size:16px}
.pr-mas .ph-vid{background:none;border-radius:6px}.pr-mas .cm{border-radius:6px;aspect-ratio:16/10}
.pr-mas .ph[hidden]{display:none}
@media(max-width:700px){.pr-media{min-height:clamp(300px,60svh,480px)}.pr-gal .chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-left:-2px;padding:2px}.pr-gal .chips::-webkit-scrollbar{display:none}}

/* ---------- printing: category cover cards ---------- */
.pcats{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:clamp(12px,1.6vw,20px)}
.pcats[hidden]{display:none}
.pcats .ph{margin:0}.pcats .ph .lb,.pcats .ph-vid{height:100%}
.pcat{display:flex;flex-direction:column;padding:0;text-align:left;font:inherit;color:inherit;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;overflow:hidden;cursor:pointer;animation:pagein .45s var(--ease) both;transition:transform .35s var(--ease),box-shadow .35s,border-color .25s}
.pcat:hover,.pcat:focus-visible{transform:translateY(-4px);border-color:var(--accent-ink);box-shadow:0 18px 36px -22px rgba(0,0,0,.55)}
.pcat-img{display:block;aspect-ratio:4/3;overflow:hidden;background:var(--soft)}
.pcat-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.pcat:hover .pcat-img img{transform:scale(1.05)}
.pcat-ph{display:grid;place-items:center;width:100%;height:100%;color:var(--accent)}.pcat-ph .i{width:56px;height:56px}
.pcat-b{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:14px 16px 16px}
.pcat-b b{font-size:clamp(17px,1.5vw,20px);font-weight:700;line-height:1.2}
.pcat-b small{color:var(--muted);font-size:13.5px;white-space:nowrap}
.pr-cathead{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin-bottom:clamp(14px,2vw,22px)}
.pr-cathead[hidden]{display:none}
.pr-cathead h2{margin:0;font-size:clamp(24px,3vw,36px);line-height:1.1}
.pr-cathead .gn{margin-left:auto}
.pr-back{min-height:44px;padding:8px 16px;border-radius:99px;border:1.5px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:600;font-size:14.5px;cursor:pointer;transition:border-color .2s}
.pr-back:hover{border-color:var(--accent-ink)}
.pr-mas[hidden]{display:none}

/* photography: camera-flash + shutter sound toggle */
.lx.s{top:12px;right:76px}
.lx.s .off{display:none}.lx.s.muted .off{display:inline}.lx.s.muted .on{display:none}.lx.s.muted{opacity:.7}
