*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;overflow-x:hidden;max-width:100%;}
body{margin:0;font-family:"Archivo",Arial,Helvetica,sans-serif;color:#222;background:#fff;line-height:1.7;overflow-x:hidden;max-width:100%;position:relative;}
a{color:#545c62;text-decoration:none;}
a:hover{color:#2f363a;}
img{max-width:100%;}

/* header */
.site-header{position:fixed;top:0;left:0;width:100%;z-index:999;padding:20px 0;transition:all .3s ease;background:transparent;font-family:'Archivo',Arial,sans-serif;}
.site-header.scrolled{padding:14px 0;background:#ffffff;box-shadow:0 10px 24px rgba(0,0,0,.08);}
.site-header .inner{width:100%;max-width:1280px;margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between;}
.site-header .logo-link{display:flex;align-items:center;opacity:1;transition:opacity .3s ease;}
body.home-page .site-header:not(.scrolled) .logo-link{opacity:0;}
.site-header .logo-link img{height:52px;width:auto;}
.hym-nav{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;flex:1;min-width:0;}
.hym-nav a{color:inherit;text-decoration:none;position:relative;overflow:hidden;padding:8px 16px;border-radius:999px;font-size:13px;white-space:nowrap;transition:all .3s ease;border:1px solid rgba(255,255,255,.55);color:#fff;}
.site-header.scrolled .hym-nav a{border-color:rgba(84,92,98,.28);color:#545c62;}
.hym-nav a:not([aria-current="page"])::after{content:"";position:absolute;left:16px;right:16px;bottom:6px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s ease;}
.hym-nav a:hover::after{transform:scaleX(1);}
.nav-toggle:hover{opacity:.8;}

/* footer */
.site-footer{background:#31373b;color:#fff;padding:60px 0 20px;font-family:'Archivo',Arial,sans-serif;}
.site-footer .cols{max-width:1280px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:50px;}
.site-footer h4{margin:0 0 18px;font-size:18px;font-weight:600;}
.site-footer ul{list-style:none;margin:0;padding:0;}
.site-footer .units li{margin-bottom:10px;color:#d8d8d8;font-weight:700;}
.ftr-link{position:relative;margin-bottom:10px;display:block;}
.ftr-link a{color:#d8d8d8;text-decoration:none;}
.ftr-link::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:#fff;transform:scaleX(0);transform-origin:left;transition:transform .3s ease;}
.ftr-link:hover::after{transform:scaleX(1);}
.site-footer{background:#31373b;}
.ftr-social{width:42px;height:42px;border-radius:10px;border:1px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;color:#fff;transition:all .25s ease;}
.ftr-social:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.6);transform:translateY(-2px);}
.site-footer .bottom{margin-top:40px;border-top:1px solid rgba(255,255,255,.15);padding-top:20px;}
.site-footer .bottom .in{max-width:1280px;margin:0 auto;padding:0 24px;display:flex;justify-content:space-between;gap:20px;font-size:14px;flex-wrap:wrap;}
.site-footer .bottom a{color:#fff;}

/* shared reveal */
.fade-up{opacity:0;transform:translateY(40px);transition:.8s ease;}
.fade-up.show{opacity:1;transform:none;}
@keyframes heroFadeUp{from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:none;}}

/* ===== HOME ===== */
.hb-card{display:block;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 14px 40px rgba(0,0,0,.06);transition:transform .4s cubic-bezier(.22,1,.36,1),box-shadow .4s ease;color:inherit;text-decoration:none;}
.hb-card:hover{transform:translateY(-6px);box-shadow:0 26px 60px rgba(0,0,0,.12);}
.hb-card:hover .hb-go{transform:translateX(5px);}
.hb-thumb{transition:transform .6s cubic-bezier(.22,1,.36,1);aspect-ratio:16/11;position:relative;display:flex;align-items:flex-end;padding:22px;background-size:cover;background-position:center;}
.hb-card:hover .hb-thumb{transform:scale(1.08);}
.hb-go{color:#545c62;font-size:1rem;display:inline-block;transition:transform .3s cubic-bezier(.22,1,.36,1);}
.vm-card{background:#fff;padding:50px;border-radius:28px;position:relative;overflow:hidden;transition:all .3s ease;box-shadow:0 10px 30px rgba(0,0,0,.04);}
.vm-card:hover{transform:translateY(-10px);box-shadow:0 20px 50px rgba(0,0,0,.08);}
.about-btn{display:inline-flex;align-items:center;gap:8px;margin-top:30px;padding:12px 26px;border:1px solid rgba(84,92,98,.30);border-radius:999px;font-size:.88rem;font-weight:500;color:#545c62;text-decoration:none;transition:all .3s ease;}
.about-btn:hover{background:#545c62;color:#fff;transform:translateY(-2px);}
.cta-dark:hover{background:#3f464d;}
.cta-line:hover{border-color:#545c62;background:rgba(84,92,98,.05);}
.social-follow-btn:hover{background:#545c62;color:#fff;transform:translateY(-2px);}
.ig-card:hover{transform:translateY(-5px);box-shadow:0 16px 34px rgba(0,0,0,.1);}
.divider-line{transform:scaleX(0);transform-origin:left;transition:transform .8s ease .2s;}
.divider-line.show{transform:scaleX(1);}
.subnav{position:fixed;top:0;left:0;width:100%;z-index:998;background:rgba(255,255,255,.97);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid rgba(84,92,98,.12);transform:translateY(-100%);transition:transform .35s ease;}
.subnav.show{transform:translateY(90px);}
.subnav a{color:#545c62;text-decoration:none;font-size:.82rem;letter-spacing:.03em;position:relative;}
.subnav a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:1px;background:#545c62;transform:scaleX(0);transition:transform .25s ease;}
.subnav a:hover::after{transform:scaleX(1);}
.uae-pin{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:7px;}
.uae-pin-dot{position:relative;width:9px;height:9px;border-radius:50%;background:#545c62;display:inline-block;flex-shrink:0;}
.uae-pin-dot::before{content:"";position:absolute;inset:-6px;border-radius:50%;border:1px solid rgba(84,92,98,.35);animation:pinPulse 2.6s infinite ease-out;}
@keyframes pinPulse{0%{transform:scale(.6);opacity:1;}100%{transform:scale(2.1);opacity:0;}}
.uae-pin-label{font-size:.78rem;font-weight:500;color:#4a5157;white-space:nowrap;background:rgba(255,255,255,.82);padding:2px 6px;border-radius:3px;}
.uae-pin .uae-pin-tip{position:absolute;bottom:100%;left:14px;margin-bottom:6px;white-space:nowrap;font-size:.7rem;background:#222;color:#fff;padding:5px 10px;border-radius:4px;opacity:0;pointer-events:none;transition:opacity .2s ease;}
.uae-pin:hover .uae-pin-tip{opacity:1;}
.ph-track{display:flex;gap:26px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px;scrollbar-width:none;scroll-behavior:smooth;}
.ph-track::-webkit-scrollbar{display:none;}
.ph-card{scroll-snap-align:start;flex:0 0 min(78vw,300px);background:#fff;}
.ph-card .ph-img{transition:transform .6s cubic-bezier(.22,1,.36,1);}
.ph-card:hover .ph-img{transform:scale(1.06);}
.ph-readmore:hover{background:#151718;color:#fff;border-color:#151718;}
.ph-nav-btn:hover{opacity:.85;}

/* ===== WHO WE ARE ===== */
.btn-primary:hover{background:#444 !important;transform:translateY(-2px);}
.leader-card{cursor:pointer;text-align:center;}
.leader-photo-wrap{position:relative;width:220px;height:220px;margin:0 auto;}
.leader-crescent{position:absolute;top:0;right:-14px;width:220px;height:220px;border-radius:50%;background:#151718;transition:transform .5s cubic-bezier(.22,1,.36,1);}
.leader-card:hover .leader-crescent{transform:translateX(10px) scale(1.04);}
.leader-photo{position:relative;width:220px;height:220px;border-radius:50%;overflow:hidden;z-index:1;}
.leader-photo img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.22,1,.36,1);}
.leader-card:hover .leader-photo img{transform:scale(1.08);}
.tl-item{position:relative;padding-left:30px;}
.tl-dot{position:absolute;left:-33px;top:6px;width:14px;height:14px;border-radius:50%;background:#545c62;border:3px solid #fff;box-shadow:0 0 0 1px rgba(84,92,98,.3);}

/* ===== NEWSROOM (press release pages) ===== */
.pr-body p{font-size:17px;line-height:1.9;color:#3b4147;margin:0 0 22px;}
.share-btn{width:40px;height:40px;border-radius:50%;border:1px solid rgba(21,23,24,.15);display:flex;align-items:center;justify-content:center;color:#545c62;transition:all .25s ease;}
.share-btn:hover{background:#151718;color:#fff;border-color:#151718;}
.back-link:hover{color:#151718;}

/* ===== BUSINESSES ===== */
.biz-section{scroll-margin-top:150px;}
.sector-nav{position:sticky;top:90px;z-index:50;background:rgba(255,255,255,.97);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid rgba(84,92,98,.12);}
.sector-pill{display:inline-block;padding:9px 18px;border-radius:999px;font-size:.82rem;color:#545c62;text-decoration:none;border:1px solid rgba(84,92,98,.22);white-space:nowrap;transition:all .25s ease;}
.sector-pill:hover{background:#545c62;color:#fff;border-color:#545c62;}
.biz-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:22px;}
.biz-tile{background:#fff;border:1px solid rgba(84,92,98,.12);border-radius:14px;padding:36px 26px;min-height:126px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .35s cubic-bezier(.22,1,.36,1);position:relative;}
.biz-tile:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(0,0,0,.08);border-color:rgba(84,92,98,.35);}
.biz-tile img{max-width:150px;max-height:60px;width:auto;height:auto;filter:grayscale(100%);opacity:.72;transition:all .35s ease;}
.biz-tile:hover img{filter:grayscale(0%);opacity:1;transform:scale(1.05);}
.biz-tile .tile-hint{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:#a9adb0;opacity:0;transition:opacity .25s ease;}
.biz-tile:hover .tile-hint{opacity:1;}
.sector-head{display:flex;align-items:baseline;gap:20px;margin-bottom:16px;}
.sector-num{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:1.5rem;color:#a9adb0;}
.biz-modal-backdrop{position:fixed;inset:0;background:rgba(20,23,27,.65);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;}
.biz-modal-backdrop.open{display:flex;}
.biz-modal{background:#fff;border-radius:14px;padding:46px 44px;max-width:600px;width:100%;max-height:82vh;overflow-y:auto;text-align:left;box-shadow:0 24px 60px rgba(0,0,0,.25);}

/* ===== CAREERS ===== */
.job-card{background:#fff;padding:35px;border-radius:12px;box-shadow:0 5px 18px rgba(0,0,0,.08);transition:all .3s ease;display:flex;flex-direction:column;}
.job-card:hover{transform:translateY(-6px);box-shadow:0 15px 35px rgba(0,0,0,.12);}
.apply-btn:hover{background:#000 !important;}
.seg-opt{cursor:pointer;padding:10px 18px;border-radius:999px;border:1px solid #ddd;background:#fff;color:#545c62;font-size:13px;font-family:inherit;}
.seg-opt.active{border-color:#545c62;background:#545c62;color:#fff;}
.sticky-apply{position:fixed;left:0;right:0;bottom:0;transform:translateY(100%);background:#fff;border-top:1px solid rgba(21,23,24,0.1);box-shadow:0 -6px 24px rgba(0,0,0,0.08);z-index:900;transition:transform .3s ease;}
.sticky-apply.show{transform:translateY(0);}
.sticky-apply-inner{max-width:1100px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.sticky-apply-inner span{font-size:14px;color:#3f464d;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sticky-apply-inner .apply-btn{flex-shrink:0;}

/* ---- Life at HYM bento gallery ----
   4 assets, one of them a portrait video (1080x1920) — the old layout
   forced everything into identical 4:3 boxes with object-fit:contain,
   which letterboxed the photos and left the portrait video floating as
   a thin sliver in a mostly-empty tile. This gives each tile a shape
   suited to its content instead. */
.life-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:18px;height:560px;}
.life-tile{position:relative;border-radius:16px;overflow:hidden;background:#eef0f1;}
.life-tile img,.life-tile video{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.22,1,.36,1);}
.life-tile:hover img,.life-tile:hover video{transform:scale(1.06);}
.life-caption{position:absolute;left:0;right:0;bottom:0;padding:20px;background:linear-gradient(to top, rgba(20,23,27,.78) 0%, rgba(20,23,27,.15) 65%, transparent 100%);color:#fff;font-size:.88rem;font-weight:600;letter-spacing:.01em;opacity:0;transform:translateY(8px);transition:all .3s ease;pointer-events:none;}
.life-tile:hover .life-caption{opacity:1;transform:none;}
.life-video-tile{grid-row:1 / 3;grid-column:1;}
.life-wide-tile{grid-column:2 / 4;grid-row:2;}
.life-sound-btn{position:absolute;top:14px;right:14px;width:38px;height:38px;border-radius:50%;background:rgba(20,23,27,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:none;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2;transition:background .25s ease;font-size:14px;}
.life-sound-btn:hover{background:rgba(20,23,27,.82);}

/* ===== CONTACT ===== */
.contact-card{background:#fff;padding:40px 30px;border-radius:12px;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.06);transition:.35s;}
.contact-card:hover{transform:translateY(-6px);box-shadow:0 20px 45px rgba(0,0,0,.08);}
.c-input{padding:14px 16px;border-radius:8px;border:1px solid #ddd;font-size:14px;font-family:inherit;outline:none;transition:.25s;width:100%;}
.c-input:focus{border-color:#545c62;box-shadow:0 0 0 2px rgba(84,92,98,.15);}
.c-input.err{border-color:#c0392b;}
.c-submit{margin-top:10px;padding:13px 22px;border:none;border-radius:30px;background:#545c62;color:#fff;font-size:14px;cursor:pointer;transition:.3s;}
.c-submit:hover{background:#333;}
.success-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;z-index:9999;}
.success-overlay.open{display:flex;}


/* =========================================================
   PORTFOLIO PAGE v2  (businesses.html)  — prefix .pf-
   Palette is inherited from the existing site tokens:
   #151718 ink · #545c62 slate · #31373b graphite
   #a9adb0 muted · #f6f7f8 surface · #fff
   Nothing here leaks outside .pf, so other pages are untouched.
   ========================================================= */
.pf,
.pf-panel,
.pf-scrim{
  --ink:#151718;
  --slate:#545c62;
  --graph:#31373b;
  --mute:#6b7378;      /* WCAG AA on #fff (4.83) and #f6f7f8 (4.50) */
  --mute-deco:#a9adb0; /* decorative only — never used for text */
  --surface:#f6f7f8;
  --line:rgba(84,92,98,.14);
  --line-2:rgba(84,92,98,.28);
  --shell:1280px;
  display:block;
}
.pf-shell{max-width:var(--shell);margin:0 auto;padding:0 24px;}
.pf-kicker{display:inline-block;font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;font-weight:600;}

/* ---------- word-by-word type animation ----------
   Each word sits in an overflow:hidden mask and slides up into place.
   The mask is why letters never bleed above the line. --d staggers. */
.pf-words{display:block;}
.pf-w{display:inline-block;overflow:hidden;vertical-align:bottom;padding:0 .07em .12em;margin:0 -.07em;}
.pf-w > i{
  display:inline-block;font-style:inherit;font-weight:inherit;
  transform:translateY(115%) rotate(3deg);opacity:0;
  transition:transform 1s cubic-bezier(.19,1,.22,1),opacity .8s ease;
  transition-delay:var(--d,0s);
}
.pf-words.is-in .pf-w > i{transform:none;opacity:1;}
/* soft fade for supporting lines */
.pf-rise{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform 1s cubic-bezier(.19,1,.22,1);transition-delay:var(--d,0s);}
.pf-rise.is-in{opacity:1;transform:none;}

/* ---------- HERO ---------- */
.pf-hero{position:relative;min-height:92vh;display:flex;align-items:flex-end;background:var(--ink);color:#fff;overflow:hidden;}
.pf-hero-media{position:absolute;inset:-6%;background:url('../assets/about/hero.jpg') center/cover no-repeat;opacity:.3;will-change:transform;}
.pf-hero-glow{position:absolute;inset:0;
  background:radial-gradient(58% 52% at 16% 18%,rgba(120,132,142,.5),transparent 62%),
             radial-gradient(52% 50% at 88% 78%,rgba(84,92,98,.55),transparent 64%);
  animation:pfDrift 20s ease-in-out infinite alternate;}
@keyframes pfDrift{to{transform:translate3d(-4%,3%,0) scale(1.1);}}
.pf-hero-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(21,23,24,.78) 0%,rgba(21,23,24,.44) 42%,rgba(21,23,24,.94) 100%);}
.pf-hero-inner{position:relative;width:100%;padding:170px 0 74px;}
.pf-hero .pf-kicker{color:rgba(255,255,255,.72);}
.pf-hero h1{
  font-size:clamp(2.5rem,6.4vw,5.1rem);font-weight:600;letter-spacing:-.03em;line-height:1.03;
  margin:22px 0 26px;max-width:16ch;
}
.pf-serif{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-weight:500;}
.pf-hero p{font-size:clamp(1rem,1.5vw,1.18rem);line-height:1.75;color:rgba(255,255,255,.8);max-width:62ch;margin:0 0 36px;}
.pf-cta-row{display:flex;gap:14px;flex-wrap:wrap;}
.pf-btn{display:inline-flex;align-items:center;gap:10px;padding:15px 30px;border-radius:999px;font-size:.9rem;font-weight:500;
  text-decoration:none;border:1px solid transparent;transition:all .35s cubic-bezier(.22,1,.36,1);min-height:48px;}
.pf-btn i,.pf-btn .pf-arrow{transition:transform .35s cubic-bezier(.22,1,.36,1);}
.pf-btn:hover .pf-arrow{transform:translateX(5px);}
.pf-btn--solid{background:#fff;color:var(--ink);}
.pf-btn--solid:hover{background:#e9ebec;color:var(--ink);transform:translateY(-2px);}
.pf-btn--ghost{border-color:rgba(255,255,255,.42);color:#fff;}
.pf-btn--ghost:hover{background:rgba(255,255,255,.12);border-color:#fff;color:#fff;transform:translateY(-2px);}
.pf-btn--dark{background:var(--slate);color:#fff;}
.pf-btn--dark:hover{background:var(--ink);color:#fff;transform:translateY(-2px);}
.pf-btn--line{border-color:var(--line-2);color:var(--slate);}
.pf-btn--line:hover{background:var(--slate);color:#fff;transform:translateY(-2px);}
.pf-scroll-cue{position:absolute;right:24px;bottom:74px;writing-mode:vertical-rl;font-size:.68rem;letter-spacing:.22em;
  text-transform:uppercase;color:rgba(255,255,255,.55);display:flex;align-items:center;gap:12px;}
.pf-scroll-cue::after{content:"";width:1px;height:56px;background:linear-gradient(rgba(255,255,255,.6),transparent);animation:pfCue 2.2s ease-in-out infinite;transform-origin:top;}
@keyframes pfCue{0%,100%{transform:scaleY(.35);opacity:.4;}50%{transform:scaleY(1);opacity:1;}}

/* ---------- STATS ---------- */
.pf-stats{background:#fff;padding:0;}
.pf-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);}
.pf-stat{padding:58px 34px;border-left:1px solid var(--line);position:relative;overflow:hidden;}
.pf-stat:first-child{border-left:none;padding-left:0;}
.pf-stat::after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:var(--slate);transform:scaleX(0);transform-origin:left;transition:transform 1.1s cubic-bezier(.19,1,.22,1) var(--d,0s);}
.pf-stat.is-in::after{transform:scaleX(1);}
.pf-stat b{display:block;font-size:clamp(2.6rem,5.4vw,4rem);line-height:1;font-weight:600;letter-spacing:-.03em;color:var(--slate);margin:0 0 12px;}
.pf-stat span{font-size:.78rem;letter-spacing:.17em;text-transform:uppercase;color:#5a646c;}
.pf-stat small{display:block;font-size:.82rem;color:var(--mute);margin-top:8px;letter-spacing:0;text-transform:none;}

/* ---------- ECOSYSTEM ---------- */
.pf-eco{background:var(--surface);padding:110px 0;}
.pf-eco-head{max-width:640px;margin:0 0 18px;}
.pf-eco-head h2{font-size:clamp(1.9rem,4vw,2.8rem);font-weight:600;letter-spacing:-.025em;line-height:1.12;color:var(--slate);margin:16px 0 18px;}
.pf-eco-head p{font-size:1.02rem;line-height:1.85;color:#6b6b6b;margin:0;}
.pf-eco-figure{margin:0;}
.pf-eco-svg{width:100%;height:auto;display:block;max-width:940px;margin:0 auto;}
.pf-eco-svg .pf-link{stroke:var(--line-2);stroke-width:1.4;fill:none;stroke-dasharray:var(--len,400);stroke-dashoffset:var(--len,400);transition:stroke-dashoffset 1.3s cubic-bezier(.4,0,.2,1) var(--d,0s);}
.pf-eco-svg.is-in .pf-link{stroke-dashoffset:0;}
.pf-eco-svg .pf-ring{stroke:rgba(84,92,98,.2);stroke-width:1;fill:none;stroke-dasharray:5 9;transform-origin:460px 265px;animation:pfSpin 90s linear infinite;}
@keyframes pfSpin{to{transform:rotate(360deg);}}
.pf-eco-svg .pf-node{opacity:0;transform:scale(.6);transform-box:fill-box;transform-origin:center;transition:opacity .7s ease var(--d,0s),transform .8s cubic-bezier(.19,1,.22,1) var(--d,0s);cursor:pointer;}
.pf-eco-svg.is-in .pf-node{opacity:1;transform:none;}
.pf-eco-svg .pf-node circle{fill:#fff;stroke:var(--line-2);stroke-width:1.4;transition:fill .3s ease,stroke .3s ease;}
.pf-eco-svg .pf-node:hover circle,.pf-eco-svg .pf-node:focus-visible circle{fill:var(--slate);stroke:var(--slate);}
.pf-eco-svg .pf-node:hover .pf-node-n,.pf-eco-svg .pf-node:focus-visible .pf-node-n{fill:#fff;}
.pf-eco-svg .pf-node-n{fill:var(--slate);font-family:'Archivo',Arial,sans-serif;font-size:20px;font-weight:600;text-anchor:middle;transition:fill .3s ease;}
.pf-eco-svg .pf-node-l{fill:#5a646c;font-family:'Archivo',Arial,sans-serif;font-size:14.5px;font-weight:500;text-anchor:middle;}
.pf-eco-svg .pf-hub circle{fill:var(--ink);stroke:none;}
.pf-eco-svg .pf-hub-t{fill:#fff;font-family:'Archivo',Arial,sans-serif;font-size:15px;font-weight:600;text-anchor:middle;letter-spacing:.06em;}
.pf-eco-svg .pf-hub-s{fill:rgba(255,255,255,.6);font-family:'Archivo',Arial,sans-serif;font-size:10.5px;text-anchor:middle;letter-spacing:.2em;}
.pf-eco-svg .pf-pulse{fill:none;stroke:rgba(84,92,98,.42);stroke-width:1.2;transform-origin:460px 265px;animation:pfPulse 3.6s ease-out infinite;}
@keyframes pfPulse{0%{transform:scale(.9);opacity:.9;}100%{transform:scale(1.55);opacity:0;}}
.pf-eco-chain{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;justify-content:center;margin:44px 0 0;font-size:.82rem;color:#6b6b6b;}
.pf-eco-chain b{font-weight:600;color:var(--slate);background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 16px;}
.pf-eco-chain i{font-style:normal;color:var(--mute);}
.pf-eco-list{display:none;}

/* ---------- CONTROLS (sticky filter + search) ---------- */
.pf-controls{position:sticky;top:88px;z-index:60;background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);}
.pf-controls-in{display:flex;align-items:center;gap:18px;padding:14px 24px;max-width:var(--shell);margin:0 auto;}
.pf-filters{display:flex;gap:9px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0;padding:3px 0;}
.pf-filters::-webkit-scrollbar{display:none;}
.pf-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;font-size:.82rem;
  color:var(--slate);background:none;border:1px solid var(--line-2);cursor:pointer;white-space:nowrap;font-family:inherit;
  transition:all .28s cubic-bezier(.22,1,.36,1);min-height:40px;}
.pf-chip:hover{border-color:var(--slate);transform:translateY(-1px);}
.pf-chip em{font-style:normal;font-size:.68rem;color:var(--mute);transition:color .28s ease;}
.pf-chip[aria-pressed="true"]{background:var(--slate);border-color:var(--slate);color:#fff;}
.pf-chip[aria-pressed="true"] em{color:rgba(255,255,255,.65);}
.pf-search{position:relative;flex:0 0 250px;}
.pf-search i{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:var(--mute);font-size:.82rem;pointer-events:none;}
.pf-search input{width:100%;padding:11px 38px 11px 38px;border:1px solid var(--line-2);border-radius:999px;font-family:inherit;
  font-size:.85rem;color:var(--ink);background:#fff;outline:none;transition:all .25s ease;min-height:40px;}
.pf-search input::placeholder{color:var(--mute);}
.pf-search input:focus{border-color:var(--slate);box-shadow:0 0 0 3px rgba(84,92,98,.12);}
.pf-search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:none;background:none;
  color:var(--mute);cursor:pointer;border-radius:50%;display:none;align-items:center;justify-content:center;font-size:.8rem;}
.pf-search-clear.show{display:flex;}
.pf-search-clear:hover{color:var(--ink);background:var(--surface);}

/* ---------- PORTFOLIO GRID ---------- */
.pf-portfolio{padding:74px 0 40px;background:#fff;}
.pf-count{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:0 0 30px;}
.pf-count b{color:var(--slate);font-weight:600;}
.pf-sector-block{margin:0 0 68px;}
.pf-sector-block[hidden]{display:none;}
.pf-sector-head{display:flex;align-items:baseline;gap:18px;padding-bottom:18px;border-bottom:1px solid var(--line);margin:0 0 12px;flex-wrap:wrap;}
.pf-sector-head .pf-num{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:1.45rem;color:var(--mute);}
.pf-sector-head h2{font-size:clamp(1.4rem,2.6vw,1.85rem);font-weight:600;letter-spacing:-.02em;color:var(--slate);margin:0;}
.pf-sector-head .pf-tag{margin-left:auto;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);}
.pf-sector-intro{max-width:74ch;font-size:.98rem;line-height:1.85;color:#6b6b6b;margin:0 0 34px;}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(286px,1fr));gap:20px;}

.pf-card{
  position:relative;display:flex;flex-direction:column;text-align:left;width:100%;
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:0;overflow:hidden;cursor:pointer;
  font-family:inherit;color:inherit;
  opacity:0;transform:translateY(28px);
  transition:opacity .7s ease var(--d,0s),transform .8s cubic-bezier(.19,1,.22,1) var(--d,0s),
             border-color .35s ease,box-shadow .45s ease;
}
.pf-card.is-in{opacity:1;transform:none;}
.pf-card[hidden]{display:none;}
.pf-card::before{content:"";position:absolute;left:0;top:0;height:3px;width:100%;background:var(--slate);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.22,1,.36,1);z-index:2;}
.pf-card:hover{border-color:var(--line-2);box-shadow:0 22px 52px rgba(21,23,24,.1);}
.pf-card:hover::before,.pf-card:focus-visible::before{transform:scaleX(1);}
.pf-card:focus-visible{outline:2px solid var(--slate);outline-offset:3px;}
.pf-plate{height:132px;display:flex;align-items:center;justify-content:center;background:var(--surface);padding:26px;position:relative;overflow:hidden;transition:background .4s ease;}
.pf-plate::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);transition:transform .8s cubic-bezier(.22,1,.36,1);}
.pf-card:hover .pf-plate{background:#eef0f1;}
.pf-card:hover .pf-plate::after{transform:translateX(120%);}
.pf-plate img{max-width:150px;max-height:58px;width:auto;height:auto;
  transition:transform .5s cubic-bezier(.22,1,.36,1);}
.pf-card:hover .pf-plate img{transform:scale(1.06);}
.pf-body{padding:24px 24px 22px;display:flex;flex-direction:column;flex:1;}
.pf-cat{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);font-weight:600;margin:0 0 9px;}
.pf-name{font-size:1.14rem;font-weight:600;letter-spacing:-.01em;color:var(--ink);margin:0 0 10px;}
.pf-desc{font-size:.88rem;line-height:1.72;color:#6b6b6b;margin:0 0 18px;flex:1;}
.pf-meta{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 18px;}
.pf-meta span{font-size:.68rem;color:#5a646c;background:var(--surface);border-radius:999px;padding:5px 11px;line-height:1.4;}
.pf-go{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:600;letter-spacing:.05em;color:var(--slate);margin-top:auto;}
.pf-card:hover .pf-go .pf-arrow{transform:translateX(5px);}
.pf-go .pf-arrow{transition:transform .35s cubic-bezier(.22,1,.36,1);}
.pf-full{display:none;}
.pf-empty{display:none;text-align:center;padding:80px 24px 100px;}
.pf-empty.show{display:block;}
.pf-empty i{font-size:1.6rem;color:var(--mute);margin-bottom:18px;display:block;}
.pf-empty h3{font-size:1.15rem;font-weight:600;color:var(--slate);margin:0 0 10px;}
.pf-empty p{font-size:.92rem;color:#6b6b6b;margin:0 0 22px;}

/* ---------- SIDE PANEL ---------- */
.pf-scrim{position:fixed;inset:0;background:rgba(21,23,24,.6);opacity:0;visibility:hidden;
  transition:opacity .45s ease,visibility .45s;z-index:1200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);}
.pf-scrim.open{opacity:1;visibility:visible;}
.pf-panel{position:fixed;top:0;right:0;height:100%;width:min(560px,100%);background:#fff;z-index:1201;
  transform:translateX(100%);transition:transform .55s cubic-bezier(.19,1,.22,1);
  display:flex;flex-direction:column;box-shadow:-24px 0 70px rgba(21,23,24,.22);}
.pf-panel.open{transform:none;}
.pf-panel-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 30px;border-bottom:1px solid var(--line);flex-shrink:0;}
.pf-panel-bar span{font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);font-weight:600;}
.pf-panel-close{width:42px;height:42px;border-radius:50%;border:1px solid var(--line-2);background:none;color:var(--slate);
  cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .28s ease;flex-shrink:0;}
.pf-panel-close:hover{background:var(--ink);border-color:var(--ink);color:#fff;transform:rotate(90deg);}
.pf-panel-scroll{overflow-y:auto;flex:1;padding:36px 30px 46px;-webkit-overflow-scrolling:touch;}
.pf-panel-hero{height:150px;border-radius:14px;background:var(--surface);display:flex;align-items:center;justify-content:center;padding:28px;margin:0 0 28px;}
.pf-panel-hero img{max-width:180px;max-height:72px;width:auto;height:auto;}
.pf-panel h2{font-size:1.65rem;font-weight:600;letter-spacing:-.02em;color:var(--ink);margin:0 0 10px;}
.pf-panel .pf-panel-cat{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--slate);font-weight:600;margin:0 0 20px;}
.pf-panel-facts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:0 0 30px;}
.pf-fact{background:#fff;padding:16px 18px;}
.pf-fact dt{font-size:.64rem;letter-spacing:.15em;text-transform:uppercase;color:var(--mute);margin:0 0 6px;font-weight:600;}
.pf-fact dd{margin:0;font-size:.88rem;color:var(--ink);line-height:1.5;}
.pf-panel-sec{font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);font-weight:600;margin:0 0 14px;}
.pf-panel-body p{font-size:.95rem;line-height:1.9;color:#5a646c;margin:0 0 18px;}
.pf-panel-body{margin:0 0 32px;}
.pf-related{margin:0 0 34px;}
.pf-related-row{display:flex;flex-wrap:wrap;gap:9px;}
.pf-related-row button{font-family:inherit;font-size:.8rem;color:var(--slate);background:var(--surface);border:1px solid transparent;
  border-radius:999px;padding:9px 16px;cursor:pointer;transition:all .25s ease;min-height:38px;}
.pf-related-row button:hover{background:var(--slate);color:#fff;}
.pf-panel-actions{display:flex;flex-direction:column;gap:10px;}
.pf-panel-note{font-size:.78rem;color:var(--mute);line-height:1.65;margin:14px 0 0;}

/* ---------- CLOSING CTA ---------- */
.pf-close-cta{background:var(--ink);color:#fff;padding:118px 0;position:relative;overflow:hidden;}
.pf-close-cta::before{content:"";position:absolute;inset:0;
  background:radial-gradient(46% 60% at 78% 22%,rgba(84,92,98,.55),transparent 66%);animation:pfDrift 22s ease-in-out infinite alternate;}
.pf-close-cta .pf-shell{position:relative;}
.pf-close-cta h2{font-size:clamp(2rem,5vw,3.4rem);font-weight:600;letter-spacing:-.03em;line-height:1.08;margin:20px 0 22px;max-width:14ch;}
.pf-close-cta p{font-size:1.05rem;line-height:1.8;color:rgba(255,255,255,.76);max-width:56ch;margin:0 0 40px;}
.pf-close-cta .pf-kicker{color:rgba(255,255,255,.6);}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .pf *,.pf *::before,.pf *::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;transition-delay:0s !important;}
  .pf-w > i,.pf-rise,.pf-card,.pf-eco-svg .pf-node{opacity:1 !important;transform:none !important;}
  .pf-eco-svg .pf-link{stroke-dashoffset:0 !important;}
  .pf-stat::after{transform:scaleX(1) !important;}
}

/* [hidden] must beat the display values set above, or the panel, scrim
   and the conditional "Visit website" button stay on screen. */
.pf-panel[hidden],.pf-scrim[hidden],.pf-btn[hidden],
.pf-related[hidden],.pf-panel-note[hidden],.pf-sector-block[hidden],.pf-card[hidden]{display:none !important;}
.pf-eco-list li{cursor:pointer;transition:background .25s ease;}
.pf-eco-list li:hover{background:#fff;}
.pf-eco-svg .pf-node:focus-visible{outline:2px solid #545c62;outline-offset:4px;border-radius:4px;}
