/* Photography is scoped to corporate content; the catalogue keeps its own grid. */
.smc-photo { position:relative; min-width:0; margin:0; }
.smc-photo-frame { position:relative; isolation:isolate; overflow:hidden; aspect-ratio:4/3; border-radius:7px; background:#e8e7e3; }
.smc-photo .smc-photo-frame img { position:absolute; display:block; left:0; top:-56px; width:100%; height:calc(100% + 112px); max-width:none; object-fit:cover; object-position:var(--photo-position,center); transform:translate3d(0,var(--photo-offset,0px),0) scale(var(--photo-scale,1)); }
.smc-photo .is-photo-moving img { will-change:transform; }
.smc-photo figcaption { display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin:13px 0 0; color:#4f5d65; font-size:13px; line-height:1.5; }
.smc-photo figcaption small { flex:none; color:#849099; font-size:11px; }
.smc-photo-hero .smc-photo-frame { aspect-ratio:2.55; min-height:340px; max-height:600px; background:#252723; }
.smc-photo-hero .smc-photo-frame::after { content:''; position:absolute; inset:45% 0 0; background:linear-gradient(transparent,rgba(10,16,18,.68)); pointer-events:none; }
.smc-photo-hero figcaption { position:absolute; left:30px; right:30px; bottom:26px; margin:0; color:#fff; gap:20px; }
.smc-photo-hero figcaption>span { font-size:20px; font-weight:500; letter-spacing:-.02em; }
.smc-photo-hero figcaption small { color:#e0e4e4; font-size:12px; }
.smc-photo-section { padding:44px 0; border-bottom:1px solid #e7eaed; }
.smc-photo-heading { margin-bottom:26px; }
.smc-photo-heading h2 { margin:9px 0 12px; font-size:28px; font-weight:600; line-height:1.2; letter-spacing:-.025em; }
.smc-photo-heading p { margin:0; max-width:680px; color:#75828b; font-size:15px; line-height:1.7; }
.smc-photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; gap:22px; }
.smc-photo-grid .smc-photo-frame { aspect-ratio:1.2; }
.smc-photo-grid .smc-photo:nth-child(2) { margin-top:36px; }
.smc-photo-grid .smc-photo figcaption { display:grid; gap:4px; }
.smc-photo-pair { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(0,1fr); gap:30px; margin-top:32px; align-items:start; }
.smc-photo-pair .smc-photo:first-child .smc-photo-frame { aspect-ratio:1.4; }
.smc-photo-pair .smc-photo:last-child { margin-top:70px; }
.smc-photo-pair .smc-photo:last-child .smc-photo-frame { aspect-ratio:1; }
.smc-photo-pair figcaption { display:grid; gap:4px; }
.smc-photo-split { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.3fr); gap:60px; align-items:center; }
.smc-photo-split .smc-photo-heading { max-width:400px; }
.smc-photo-split .smc-photo-grid { grid-template-columns:1fr; }
.smc-photo-split .smc-photo-frame { aspect-ratio:1.35; }
body.branch-view .smc-branch-cover { margin:0 0 28px; }
body.branch-view .smc-photo-section { margin:4px 0 10px; }
/* Branch photographs form aligned rows; only the image inside each frame moves. */
body.branch-view .smc-photo-grid { row-gap:30px; }
body.branch-view .smc-photo-grid>.smc-photo:nth-child(n) { margin-top:0; }
.cp-photographic .cp-breadcrumb { margin-bottom:20px; }
.cp-photographic .cp-hero { padding:10px 0 32px; border-bottom:0; }
.cp-photographic .cp-hero h1 { font-size:clamp(34px,3.65vw,52px); }
.cp-photographic .smc-company-cover .smc-photo-frame { aspect-ratio:2.35; }
.cp-photographic .cp-section { padding-top:52px; padding-bottom:52px; }
.cp-photographic .cp-service-photo { margin:-1px -1px 22px; }
.cp-photographic .cp-service-photo .smc-photo-frame { aspect-ratio:1.55; border-radius:6px; }
.cp-photographic .cp-service-photo + .cp-number { margin-top:0; }
.cp-photographic .cp-service:has(.cp-service-photo) { padding:0 0 24px; overflow:hidden; }
.cp-photographic .cp-service:has(.cp-service-photo)>:not(.cp-service-photo) { margin-left:24px; margin-right:24px; }
.cp-photographic .cp-service:has(.cp-service-photo) h3 { margin-top:18px; }
.smc-city-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.smc-city-card { min-width:0; color:inherit; text-decoration:none; }
.smc-city-card .smc-photo-frame { aspect-ratio:1.5; }
.smc-city-label { display:flex; justify-content:space-between; gap:12px; padding:16px 0 0; font-size:18px; font-weight:550; letter-spacing:-.02em; }
.smc-city-label span { color:#9b7a45; font-weight:400; transition:transform 180ms; }
.smc-city-card>small { display:block; margin-top:8px; color:#7d8992; font-size:13px; line-height:1.5; }
.smc-city-card:hover .smc-city-label span { transform:translate(3px,-3px); }
.smc-city-card:focus-visible { outline:2px solid #bc904b; outline-offset:7px; border-radius:6px; }
.smc-photo-grid-rich { row-gap:34px; }
.smc-photo-grid-rich .smc-photo:nth-child(3n + 2) { margin-top:36px; }
.smc-photo-grid-four { grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
.smc-photo-grid-four .smc-photo-frame { aspect-ratio:1.45; }
.smc-photo-grid-four .smc-photo:nth-child(2n) { margin-top:38px; }
.smc-photo-grid-four .smc-photo:nth-child(3) { margin-top:0; }

/* Native sticky layout: title, steps, scene and continuation stay together. */
.smc-story-section,#company-capabilities { scroll-margin-top:20px; }
.smc-story-pin { display:grid; gap:18px; background:#fff; }
.smc-story-pin>.cp-section-title { margin:0; }
.smc-story-pin .cp-section-title h2 { margin:8px 0; }
.smc-story-chapters { display:grid; gap:28px; }
.smc-story-chapter { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); min-width:0; margin:0; overflow:hidden; border:1px solid #e4e8eb; border-radius:7px; background:#fafbfc; color:#303b43; scroll-margin-top:20px; }
.smc-story-chapter .smc-photo { min-width:0; height:100%; }
.smc-story-chapter .smc-photo-frame { height:100%; min-height:360px; aspect-ratio:1.5; border-radius:0; }
.smc-story-chapter .smc-photo-frame img { top:0; height:100%; transform:scale(var(--scene-scale,1)); }
.smc-story-text { display:flex; flex-direction:column; justify-content:center; min-width:0; padding:clamp(24px,3vw,44px); }
.smc-story-number { display:flex; justify-content:space-between; gap:12px; font-size:11px; letter-spacing:.06em; color:#8d6b36; }
.smc-story-number>span { color:#74818a; letter-spacing:0; }
.smc-story-text h3 { font-size:clamp(26px,2.35vw,34px); line-height:1.15; letter-spacing:-.025em; font-weight:550; margin:24px 0 16px; color:#303b43; }
.smc-story-text p { margin:0; max-width:390px; font-size:15px; line-height:1.75; color:#64737e; }
.smc-story-fact { display:grid; gap:7px; padding-top:22px; margin-top:24px; border-top:1px solid #dfe5e9; }
.smc-story-fact strong { font-size:27px; line-height:1.25; font-weight:500; letter-spacing:-.02em; color:#806136; }
.smc-story-fact>span { font-size:12px; line-height:1.5; color:#74818a; }
.smc-story-nav { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.smc-story-nav a { position:relative; overflow:hidden; display:flex; align-items:center; gap:12px; padding:13px 18px; border:1px solid #e2e7eb; border-radius:6px; color:#65747f; background:#fff; text-decoration:none; font-size:14px; font-weight:500; line-height:1.4; }
.smc-story-nav a>span:first-child { font-size:11px; color:#86929a; font-variant-numeric:tabular-nums; }
.smc-story-step-arrow { margin-left:auto; color:#94a0a8; }
.smc-story-nav a[aria-current] { color:#72572e; border-color:#e5bd7d; background:#fff8eb; }
.smc-story-nav a[aria-current]>span { color:#9b7947; }
.smc-story-nav a::after { content:''; position:absolute; bottom:0; left:0; right:0; height:2px; background:#d0a568; transform:scaleX(var(--step-progress,0)); transform-origin:left; }
.smc-story-nav a:hover { background:#f7f8f9; }
.smc-story-nav a[aria-current]:hover { background:#fff2dc; }
.smc-story-footer { display:none; }
.is-story-active .smc-story-track { height:calc(var(--story-pin-height,820px) + var(--story-travel,1500px)); }
.is-story-active .smc-story-pin { position:sticky; top:var(--story-sticky-top,20px); }
.is-story-active .smc-story-stage { height:var(--story-stage-height,540px); border:1px solid #e4e8eb; border-radius:7px; overflow:hidden; background:#fafbfc; isolation:isolate; }
.is-story-active .smc-story-chapters { position:relative; display:block; height:100%; }
.is-story-active .smc-story-chapter { position:absolute; inset:0; visibility:hidden; pointer-events:none; background:transparent; border:0; border-radius:0; z-index:var(--scene-layer,1); }
.is-story-active .smc-story-chapter.is-present { visibility:visible; }
.is-story-active .smc-story-chapter[aria-hidden="false"] { pointer-events:auto; }
.is-story-active .smc-story-chapter .smc-photo { clip-path:inset(0 0 0 var(--scene-mask,0%)); }
.smc-story-copy-host { display:none; }
.is-story-active .smc-story-chapter>.smc-story-text { visibility:hidden; }
.is-story-active .smc-story-copy-host { display:block; position:absolute; inset:0 0 0 auto; width:38.461538%; z-index:5; pointer-events:none; }
.is-story-active .smc-story-copy-host>.smc-story-text { height:100%; }
.is-story-active .is-transitioning .smc-photo-open { visibility:hidden; }
.is-story-active .smc-story-chapter .smc-photo-frame { aspect-ratio:auto; height:100%; min-height:0; }
.is-story-active .is-scene-visible .smc-story-chapter.is-present img { will-change:transform; }
.is-story-active .smc-story-footer { display:flex; justify-content:space-between; align-items:center; gap:20px; min-height:42px; padding-right:64px; }
.smc-story-hint { display:flex; align-items:center; gap:12px; font-size:12px; line-height:1.5; color:#687782; }
.smc-story-hint>span:first-child { display:grid; place-items:center; width:30px; height:30px; flex:none; border:1px solid #e5e9ec; border-radius:50%; color:#957142; font-size:17px; }
.smc-story-next { display:flex; align-items:center; justify-content:space-between; gap:24px; min-width:195px; padding:11px 16px; border:1px solid #e5bd7d; border-radius:6px; background:#fff8eb; color:#72572e; text-decoration:none; font-size:13px; line-height:1.4; }
.smc-story-next:hover { background:#fff2dc; }
.smc-story-nav a:focus-visible,.smc-story-next:focus-visible,.smc-photo-open:focus-visible,.smc-photo-dialog button:focus-visible { outline:2px solid #ad8242; outline-offset:3px; }

/* An asymmetric collection gives the shapes room to read as a whole. */
.smc-reveal { opacity:.76; transform:translateY(16px); transition:opacity 550ms ease var(--reveal-delay,0ms),transform 550ms cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms); }
.smc-reveal.is-revealed,.smc-reveal:focus-within { opacity:1; transform:none; }

/* Full photographs are requested only when the viewer is opened. */
.smc-photo-open { position:absolute; z-index:2; right:14px; top:14px; display:flex; align-items:center; gap:12px; border:1px solid #ffffff80; border-radius:5px; padding:9px 12px; background:#fffffff0; color:#4f5d65; font:inherit; font-size:11px; line-height:1.4; cursor:pointer; box-shadow:0 1px 8px #17242e0a; }
.smc-photo-open:hover { background:#fff8eb; }
html.smc-viewer-open { overflow:hidden; scrollbar-gutter:stable; }
html.smc-viewer-open body.contacts-view { position:fixed; top:var(--viewer-scroll-top,0px); left:0; width:100%; overflow:hidden; overscroll-behavior:none; }
.smc-photo-dialog { box-sizing:border-box; width:min(1440px,calc(100vw - 48px)); max-width:calc(100vw - 48px); height:min(1000px,calc(100dvh - 48px)); max-height:calc(100dvh - 48px); padding:0; border:1px solid #e2e7eb; border-radius:8px; background:#fff; color:#35434d; }
.smc-photo-dialog[open] { display:grid; grid-template-rows:auto minmax(0,1fr) auto; }
.smc-photo-dialog::backdrop { background:rgba(30,40,49,.62); }
/* Compensate only inside the top-layer viewer for the site's large-screen 125% scale. */
@media(min-width:1800px) { .smc-photo-dialog { zoom:.8; } }
.smc-viewer-top { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:16px 24px; border-bottom:1px solid #e5e9ec; font-size:12px; color:#75828b; }
.smc-photo-dialog button { display:inline-flex; align-items:center; justify-content:center; gap:14px; min-width:44px; min-height:44px; padding:9px 12px; border:1px solid #dfe5e9; border-radius:5px; background:#fff; color:#596a76; font:inherit; font-size:13px; cursor:pointer; }
.smc-photo-dialog button:hover { border-color:#e5bd7d; background:#fff8eb; }
.smc-viewer-canvas { display:grid; min-height:0; overflow:hidden; place-items:center; background:#f3f5f6; padding:16px; }
.smc-viewer-canvas img { display:block; width:100%; height:100%; min-height:0; object-fit:contain; }
.smc-viewer-bottom { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:20px 24px; }
.smc-viewer-caption { display:grid; gap:6px; min-width:0; line-height:1.4; }
.smc-viewer-caption strong { font-size:16px; font-weight:500; }
.smc-viewer-caption>span { font-size:12px; color:#75828b; }
.smc-viewer-bottom nav { display:flex; align-items:center; gap:16px; flex:none; }
[data-viewer-count] { font-size:12px; color:#75828b; font-variant-numeric:tabular-nums; }
@media(min-width:901px) and (max-height:740px) {
  .is-story-active .smc-story-text { padding:22px 28px; }
  .is-story-active .smc-story-text h3 { font-size:27px; margin:18px 0 12px; }
  .is-story-active .smc-story-text p { font-size:14px; line-height:1.6; }
  .is-story-active .smc-story-fact { margin-top:18px; padding-top:16px; }
}
@media(min-width:1800px) { .smc-photo-hero .smc-photo-frame { aspect-ratio:2.8; } }
@media(max-width:900px) {
  .smc-story-text { padding:28px; }
  .smc-story-text h3 { font-size:28px; margin-top:24px; }
  .smc-story-text p { font-size:14px; }
  .smc-story-number { flex-wrap:wrap; }
  .smc-story-fact { padding-top:22px; margin-top:24px; }
  .smc-photo-hero .smc-photo-frame,.cp-photographic .smc-company-cover .smc-photo-frame { aspect-ratio:1.85; min-height:300px; }
  .smc-photo-grid,.smc-city-grid { gap:16px; }
  .smc-photo-pair { gap:20px; }
  .smc-photo-pair .smc-photo:last-child { margin-top:42px; }
  .smc-photo-split { gap:30px; }
  .smc-photo-heading h2 { font-size:25px; }
  .smc-photo figcaption { font-size:12px; }
  .smc-photo-hero figcaption { left:24px; right:24px; bottom:22px; }
  .smc-photo-hero figcaption>span { font-size:18px; }
  .smc-city-label { font-size:16px; }
  .cp-photographic .cp-section { padding-block:36px; }
  .cp-photographic .cp-service:has(.cp-service-photo)>:not(.cp-service-photo) { margin-left:18px; margin-right:18px; }
}
@media(max-width:600px) {
  .smc-story-nav { gap:6px; }
  .smc-story-nav a { display:grid; gap:7px; padding:12px; font-size:12px; }
  .smc-story-step-arrow { display:none; }
  .smc-photo-open { top:12px; right:12px; padding:10px 12px; }
  .smc-photo-dialog { width:calc(100vw - 20px); max-width:calc(100vw - 20px); height:calc(100dvh - 20px); max-height:calc(100dvh - 20px); }
  .smc-viewer-top { padding:10px 14px; gap:12px; }
  .smc-viewer-top>span { max-width:160px; line-height:1.5; font-size:11px; }
  .smc-viewer-canvas { padding:6px; }
  .smc-viewer-bottom { padding:16px; gap:18px; flex-wrap:wrap; }
  .smc-viewer-caption { flex:1 1 100%; }
  .smc-viewer-bottom nav { width:100%; justify-content:space-between; }
  .smc-photo .smc-photo-frame img { top:-32px; height:calc(100% + 64px); }
  .smc-photo-grid-rich,.smc-photo-grid-four { grid-template-columns:1fr; }
  .smc-photo-grid-rich .smc-photo:nth-child(n) { margin-top:0; }
  .smc-story-chapter { grid-template-columns:1fr; }
  .smc-story-chapter .smc-photo-frame { min-height:0; aspect-ratio:1.12; }
  .smc-story-chapter .smc-photo-frame img { top:0; height:100%; }
  .smc-story-text { padding:28px 24px 30px; }
  .smc-story-text h3 { font-size:30px; margin-bottom:16px; }
  .smc-story-fact strong { font-size:25px; }
  .smc-photo-section { padding:32px 0; }
  .smc-photo-heading { margin-bottom:22px; }
  .smc-photo-heading p { font-size:14px; }
  .smc-photo-hero .smc-photo-frame,.cp-photographic .smc-company-cover .smc-photo-frame { aspect-ratio:1.05; min-height:0; }
  .smc-photo-hero figcaption { left:20px; right:20px; bottom:20px; display:grid; gap:7px; }
  .smc-photo-hero figcaption>span { font-size:18px; max-width:260px; }
  .smc-photo-hero figcaption small { font-size:11px; }
  .smc-photo-grid,.smc-photo-pair,.smc-photo-split,.smc-city-grid { grid-template-columns:1fr; gap:28px; }
  .smc-photo-grid .smc-photo:nth-child(2),.smc-photo-pair .smc-photo:last-child { margin-top:0; }
  .smc-photo-grid .smc-photo-frame,.smc-photo-pair .smc-photo:first-child .smc-photo-frame,.smc-photo-pair .smc-photo:last-child .smc-photo-frame { aspect-ratio:1.25; }
  .smc-photo-split .smc-photo-heading { margin-bottom:0; }
  .smc-photo-split .smc-photo-frame { aspect-ratio:1; }
  .smc-photo-pair { margin-top:24px; }
  .smc-photo figcaption { gap:4px; }
  .cp-photographic .cp-hero { padding-top:2px; }
  .cp-photographic .cp-hero h1 { font-size:34px; }
  .smc-city-label { font-size:19px; }
}
@media(prefers-reduced-motion:reduce) {
  .smc-reveal { opacity:1; transform:none; transition:none; }
  .smc-photo .smc-photo-frame img { transform:none; top:0; height:100%; will-change:auto; }
  .smc-city-label span { transition:none; }
  .smc-city-card:hover .smc-city-label span { transform:none; }
}
