@font-face { font-family:"Onest"; font-style:normal; font-weight:100 900; font-display:swap; src:url("/static/fonts/onest/onest-cyrillic.woff2") format("woff2"); unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116,U+0406,U+0456,U+040E,U+045E; }
@font-face { font-family:"Onest"; font-style:normal; font-weight:100 900; font-display:swap; src:url("/static/fonts/onest/onest-latin.woff2") format("woff2"); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122; }
:root { --cb-surface-light:#fff; --cb-surface-muted:#f5f6f5; --cb-surface-mineral:#dde1e0; --cb-surface-dark:#161b1d; --cb-surface-dark-alt:#253036; --cb-surface-graphite-soft:#2c373d; --cb-text-primary:#141718; --cb-text-secondary:#687176; --cb-border-light:rgba(20,23,24,.15); --cb-paper:var(--cb-surface-light); --cb-paper-deep:#e8e4db; --cb-ink:var(--cb-text-primary); --cb-muted:var(--cb-text-secondary); --cb-line:var(--cb-border-light); --cb-dark:var(--cb-surface-dark); --cb-light:#fff; --cb-font:"Onest", "Helvetica Neue", Arial, sans-serif; --cb-intro-top:clamp(104px,11vh,140px); --cb-intro-bottom:clamp(72px,9vh,112px); --cb-hero-copy-top:clamp(144px,20vh,210px); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--cb-paper); color:var(--cb-ink); font-family:var(--cb-font); }
img { display:block; max-width:100%; }
a { color:inherit; }
.visually-hidden { position:absolute; top:0; left:0; width:1px; height:1px; margin:-1px; padding:0; border:0; clip:rect(0 0 0 0); clip-path:inset(50%); overflow:hidden; white-space:nowrap; }
.skip-link { position:fixed; z-index:100; top:-80px; left:20px; padding:12px 16px; background:var(--cb-light); color:var(--cb-ink); }
.skip-link:focus { top:16px; }
.cb-header { position:relative; z-index:20; display:flex; align-items:center; height:92px; padding:0 5.5vw; background:var(--cb-paper); color:var(--cb-ink); }
.cb-header--over-hero { position:absolute; top:0; left:0; width:100%; background:transparent; color:rgba(255,255,255,.94); }
.cb-brand { display:inline-flex; width:166px; text-decoration:none; }
.cb-brand__logo { display:block; width:100%; height:auto; }
.cb-brand__logo--light { display:none; }
.cb-header--over-hero .cb-brand__logo--dark { display:none; }
.cb-header--over-hero .cb-brand__logo--light { display:block; }
.cb-nav { display:flex; align-items:center; gap:clamp(22px,3vw,48px); margin-left:auto; font-size:11px; font-weight:500; letter-spacing:.08em; text-transform:uppercase; }
.cb-nav a { opacity:.78; text-decoration:none; transition:opacity .2s ease; }
.cb-nav a:hover { opacity:1; }
.cb-nav .cb-nav__contact { padding:12px 18px; border:1px solid currentColor; border-radius:14px; opacity:1; }
.cb-menu { display:none; margin-left:auto; border:0; padding:10px 0 10px 12px; background:transparent; color:inherit; }
.cb-menu span { display:block; width:24px; height:1px; margin:5px 0; background:currentColor; }
.cb-flash { width:min(90vw,800px); margin:18px auto; padding:12px 16px; border:1px solid var(--cb-line); background:var(--cb-light); font-size:14px; }

.cb-section { padding:clamp(92px,12vw,170px) 8vw; }
.cb-kicker { margin:0; color:var(--cb-muted); font-size:10px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; }
.cb-title { margin:25px 0 0; font-size:clamp(52px,7.2vw,112px); font-weight:500; letter-spacing:-.07em; line-height:.88; }
.cb-title--mid { font-size:clamp(46px,5.8vw,88px); }
.cb-lead { margin:0; font-size:clamp(17px,1.55vw,22px); line-height:1.55; }
.cb-text { color:var(--cb-muted); font-size:15px; line-height:1.7; }
.cb-button { display:inline-flex; align-items:center; justify-content:center; min-height:50px; padding:0 22px; border:1px solid var(--cb-ink); border-radius:15px; background:var(--cb-ink); color:var(--cb-light); font-size:11px; font-weight:500; letter-spacing:.04em; text-decoration:none; transition:transform .2s ease, background .2s ease; }
.cb-button:hover,.cb-button:focus-visible { transform:translateY(-1px); background:var(--cb-surface-dark-alt); }
.cb-button--light { border-color:rgba(255,255,255,.5); background:rgba(255,255,255,.17); box-shadow:inset 0 1px 0 rgba(255,255,255,.3); backdrop-filter:blur(14px); color:var(--cb-light); }
.cb-button--light:hover { background:rgba(255,255,255,.26); }
.cb-button--ghost { background:transparent; color:var(--cb-ink); }
.cb-button--ghost:hover { background:var(--cb-ink); color:var(--cb-light); }
.cb-text-link { position:relative; display:inline-flex; gap:13px; padding-bottom:9px; border-bottom:1px solid transparent; font-size:11px; font-weight:500; letter-spacing:.06em; text-decoration:none; }
/* Editorial text CTA primitive: works on a standalone <a> or on a <span> inside an already-clickable card
   ([data-cta-host]); the 1px underline is drawn by ::after on the old border line, so geometry is unchanged. */
.cb-text-link::after { content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px; background:currentColor; transform-origin:left; }

.cb-home-hero { position:relative; min-height:100svh; overflow:hidden; background:var(--cb-surface-dark-alt); color:var(--cb-light); }
.cb-home-hero .scene { position:absolute; inset:0; overflow:hidden; }
.cb-home-hero .scene-video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 0; opacity:1; transition:opacity .82s cubic-bezier(.2,.7,.2,1); }
.cb-home-hero .scene-video--b { opacity:0; }
.cb-home-hero .scene.scene--active-b .scene-video--a { opacity:0; }
.cb-home-hero .scene.scene--active-b .scene-video--b { opacity:1; }
.cb-home-hero .scene-wash { position:absolute; inset:0; background:linear-gradient(90deg,rgba(18,25,28,.47),rgba(18,25,28,.19) 38%,rgba(18,25,28,.02) 72%),linear-gradient(0deg,rgba(12,18,21,.4),transparent 43%); }
.cb-home-hero__copy { position:relative; z-index:2; width:min(750px,72vw); padding:var(--cb-hero-copy-top) 0 138px 8vw; }
.cb-home-hero__copy h1 { margin:23px 0 0; font-size:clamp(60px,7.4vw,116px); font-weight:500; letter-spacing:-.078em; line-height:.87; }
.cb-home-hero__copy > p { max-width:440px; margin:28px 0 0; color:rgba(255,255,255,.78); font-size:15px; line-height:1.63; }
.cb-home-hero__copy > p.cb-kicker { max-width:none; }

/* Hero sound toggle: a quiet glass pill with a visible label. Muted shows a crossed speaker;
   sound on shows a slow four-bar equaliser. The video always starts muted (browser autoplay rule). */
.hero-sound-toggle { position:absolute; z-index:3; right:48px; bottom:100px; display:inline-flex; align-items:center; gap:11px; min-height:46px; padding:0 18px 0 15px; border:1px solid rgba(255,255,255,.34); border-radius:999px; background:rgba(14,19,22,.36); box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 10px 30px rgba(0,0,0,.18); backdrop-filter:blur(14px) saturate(115%); -webkit-backdrop-filter:blur(14px) saturate(115%); color:#fff; font:500 11px/1 var(--cb-font); letter-spacing:.16em; text-transform:uppercase; cursor:pointer; transition:background .25s ease,border-color .25s ease,transform .25s ease; }
.hero-sound-toggle[hidden] { display:none; }
.hero-sound-toggle:hover { border-color:rgba(255,255,255,.62); background:rgba(14,19,22,.52); }
.hero-sound-toggle:active { transform:scale(.98); }
.hero-sound-toggle:focus-visible { outline:2px solid rgba(255,255,255,.96); outline-offset:3px; }
.hero-sound-toggle[aria-pressed="true"] { border-color:rgba(255,255,255,.7); background:rgba(14,19,22,.5); }
.hero-sound-toggle__icon { position:relative; display:inline-flex; width:18px; height:18px; align-items:center; justify-content:center; }
.hero-sound-toggle__muted { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.hero-sound-toggle__speaker { fill:currentColor; stroke:none; }
.hero-sound-toggle__bars { position:absolute; inset:0; display:none; align-items:flex-end; justify-content:center; gap:2px; padding-bottom:3px; }
.hero-sound-toggle__bars i { width:2px; height:12px; border-radius:1px; background:currentColor; transform-origin:bottom; animation:hero-sound-bar 1.1s ease-in-out infinite; }
.hero-sound-toggle__bars i:nth-child(2) { animation-delay:-.35s; }
.hero-sound-toggle__bars i:nth-child(3) { animation-delay:-.7s; }
.hero-sound-toggle__bars i:nth-child(4) { animation-delay:-.2s; }
.hero-sound-toggle[aria-pressed="true"] .hero-sound-toggle__muted { display:none; }
.hero-sound-toggle[aria-pressed="true"] .hero-sound-toggle__bars { display:flex; }
@keyframes hero-sound-bar { 0%,100% { transform:scaleY(.3); } 50% { transform:scaleY(1); } }
@media (prefers-reduced-motion:reduce) { .hero-sound-toggle__bars i { animation:none; transform:scaleY(.7); } }
.cb-home-hero .cb-kicker,.cb-home-hero__copy h1,.cb-home-hero__copy > p { opacity:0; }
.cb-home-hero.ui-eyebrow .cb-kicker { animation:cb-rise .45s .05s ease forwards; }
.cb-home-hero.ui-title .cb-home-hero__copy h1 { animation:cb-title .55s .05s ease forwards; }
.cb-home-hero.ui-actions .cb-home-hero__copy > p:not(.cb-kicker) { animation:cb-rise .5s .08s ease forwards; }
.cb-home-hero.is-static .cb-kicker,.cb-home-hero.is-static .cb-home-hero__copy h1,.cb-home-hero.is-static .cb-home-hero__copy > p { opacity:1; transform:none; clip-path:none; }
.cb-home-hero .cb-actions { display:flex; flex-wrap:wrap; align-items:center; gap:clamp(18px,1.7vw,24px); margin-top:31px; }
.cb-home-hero .cb-actions .cb-button--light { order:1; min-height:52px; padding:0 22px; border-color:rgba(255,255,255,.56); background:rgba(255,255,255,.2); box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 8px 30px rgba(0,0,0,.08); backdrop-filter:blur(14px); color:var(--cb-light); }
.cb-home-hero .cb-actions .cb-button--light:hover { transform:translateY(-2px); border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.27); color:var(--cb-light); }
.cb-home-hero .cb-actions .cb-button--ghost { order:2; min-height:auto; padding:0 0 9px; border:0; border-bottom:1px solid currentColor; border-radius:0; background:transparent; box-shadow:none; backdrop-filter:none; color:rgba(255,255,255,.85); font-size:11px; transition:color .2s ease; }
.cb-home-hero .cb-actions .cb-button--ghost:hover { transform:none; background:transparent; color:var(--cb-light); }
.cb-home-hero .cb-actions .cb-button:focus-visible { outline:2px solid rgba(255,255,255,.92); outline-offset:4px; }
@keyframes cb-rise { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:none; } }
@keyframes cb-title { from { opacity:0; transform:translateY(16px); clip-path:inset(0 0 100% 0); } to { opacity:1; transform:none; clip-path:inset(0); } }

.cb-home-trust { display:grid; grid-template-columns:minmax(0,1fr); align-items:end; }
.cb-home-trust p { margin:0; color:var(--cb-muted); font-size:16px; line-height:1.65; }

.cb-page-hero { padding:var(--cb-intro-top) 8vw var(--cb-intro-bottom); background:var(--cb-paper); }
.cb-page-hero__grid { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(220px,.48fr); gap:min(10vw,150px); align-items:end; }
.cb-page-hero__grid .cb-text { margin:0 0 7px; }
.cb-page-hero__image { width:100%; height:min(48vw,640px); margin-top:70px; object-fit:cover; }

.cb-service-groups { padding:0 8vw clamp(100px,13vw,180px); }
.cb-service-group { padding:55px 0 0; border-top:1px solid var(--cb-line); }
.cb-service-group + .cb-service-group { margin-top:80px; }
.cb-service-group__title { margin:0 0 32px; font-size:13px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; }
.cb-service-list { margin:0; padding:0; list-style:none; }
.cb-service-list a { display:grid; grid-template-columns:1fr; gap:20px; align-items:center; padding:22px 0; border-top:1px solid var(--cb-line); text-decoration:none; }
.cb-service-list a:last-child { border-bottom:1px solid var(--cb-line); }
.cb-service-list h2 { margin:0; font-size:clamp(25px,2.5vw,38px); font-weight:500; letter-spacing:-.055em; }
.cb-service-list p { margin:0; color:var(--cb-muted); font-size:14px; line-height:1.55; }
.cb-service-list b { font-size:18px; font-weight:400; text-align:right; }
.cb-service-group__note { margin:14px 0 0; max-width:280px; color:var(--cb-muted); font-size:14px; line-height:1.55; }

.cb-service-detail { display:grid; grid-template-columns:minmax(0,.9fr) minmax(320px,1.1fr); gap:10vw; padding:clamp(105px,15vw,180px) 8vw; background:var(--cb-paper); }
.cb-service-detail__meta { align-self:end; color:var(--cb-muted); font-size:14px; line-height:1.65; }
.cb-service-detail__blocks { grid-column:1/-1; display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:85px; }
.cb-info-card { min-height:230px; padding:27px; background:var(--cb-surface-mineral); }
.cb-info-card h2 { margin:48px 0 0; font-size:27px; font-weight:500; letter-spacing:-.045em; }
.cb-info-card p, .cb-info-card li { color:var(--cb-muted); font-size:14px; line-height:1.6; }
.cb-info-card ol, .cb-info-card ul { margin:22px 0 0; padding-left:18px; }
.cb-service-works { padding:clamp(90px,11vw,150px) 8vw; background:var(--cb-dark); color:var(--cb-light); }
.cb-service-works .cb-kicker { color:rgba(255,255,255,.58); }
.cb-service-works__grid { display:grid; grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr); gap:10vw; margin-top:72px; }
.cb-service-works__grid h2 { margin:0; font-size:clamp(42px,5vw,74px); font-weight:500; letter-spacing:-.065em; line-height:.9; }
.cb-work-list { margin:0; padding:0; list-style:none; border-top:1px solid rgba(255,255,255,.25); }
.cb-work-list li { display:grid; grid-template-columns:42px 1fr; gap:18px; padding:17px 0; border-bottom:1px solid rgba(255,255,255,.2); font-size:15px; line-height:1.45; }
.cb-work-list span { color:rgba(255,255,255,.52); font-size:10px; }

.cb-filters { display:flex; flex-wrap:wrap; gap:8px; padding:0 8vw 45px; background:var(--cb-paper); }
.cb-filter { display:inline-flex; align-items:center; min-height:39px; padding:0 15px; border:1px solid var(--cb-line); border-radius:12px; color:var(--cb-muted); font-size:11px; text-decoration:none; transition:.2s; }
.cb-filter:hover, .cb-filter.is-active { border-color:var(--cb-ink); background:var(--cb-ink); color:var(--cb-light); }
.cb-project-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,386px)); gap:18px; padding:0 8vw clamp(100px,13vw,170px); background:var(--cb-paper); }
.cb-project-card { position:relative; min-height:380px; overflow:hidden; background:var(--cb-surface-mineral); text-decoration:none; }
.cb-project-card img { width:100%; height:100%; min-height:380px; object-fit:cover; transition:transform .65s ease; }
.cb-project-card:hover img { transform:scale(1.035); }
.cb-project-card__caption { position:absolute; right:0; bottom:0; left:0; padding:21px; background:linear-gradient(0deg,rgba(0,0,0,.55),transparent); color:var(--cb-light); }
.cb-project-card__caption span { display:block; opacity:.72; font-size:10px; letter-spacing:.09em; text-transform:uppercase; }
.cb-project-card__caption h2 { margin:8px 0 0; font-size:22px; font-weight:500; letter-spacing:-.04em; }
.cb-project-card__caption p { margin:9px 0 0; font-size:11px; opacity:.78; }
.cb-project-empty { padding:70px 8vw; color:var(--cb-muted); }

.cb-project-hero { position:relative; min-height:72vh; overflow:hidden; background:var(--cb-surface-dark-alt); color:var(--cb-light); }
.cb-project-hero img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.84; }
.cb-project-hero::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(10,10,9,.58),rgba(10,10,9,.06) 70%),linear-gradient(0deg,rgba(10,10,9,.42),transparent 45%); }
.cb-project-hero__copy { position:relative; z-index:1; width:min(720px,75vw); padding:clamp(170px,29vh,300px) 8vw 90px; }
.cb-project-hero__copy .cb-kicker { color:rgba(255,255,255,.72); }
.cb-project-hero__copy h1 { margin:22px 0 0; font-size:clamp(58px,7.5vw,118px); font-weight:500; letter-spacing:-.075em; line-height:.88; }
.cb-project-hero__copy p { max-width:440px; margin:27px 0 0; color:rgba(255,255,255,.78); font-size:15px; line-height:1.65; }
.cb-project-facts { display:grid; grid-template-columns:repeat(4,1fr); border-bottom:1px solid var(--cb-line); background:var(--cb-paper); }
.cb-project-facts div { min-height:125px; padding:25px 8vw 20px 20px; border-right:1px solid var(--cb-line); }
.cb-project-facts span { display:block; color:var(--cb-muted); font-size:10px; letter-spacing:.11em; }
.cb-project-facts b { display:block; margin-top:27px; font-size:15px; font-weight:500; }
.cb-case-intro { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(220px,.55fr); gap:10vw; padding:clamp(100px,13vw,175px) 8vw; }
.cb-case-intro h2 { margin:20px 0 0; font-size:clamp(48px,6vw,90px); font-weight:500; letter-spacing:-.07em; line-height:.9; }
.cb-case-intro p { margin:0; color:var(--cb-muted); font-size:16px; line-height:1.7; }
.cb-case-note { margin-top:25px !important; font-size:13px !important; }
.cb-case-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; padding:0 8vw; background:var(--cb-line); }
.cb-case-grid article { min-height:210px; padding:27px; background:var(--cb-surface-mineral); }
.cb-case-grid h2 { margin:44px 0 0; font-size:26px; font-weight:500; letter-spacing:-.045em; }
.cb-case-grid p { color:var(--cb-muted); font-size:14px; line-height:1.6; }
.cb-gallery { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; padding:0 8vw; }
.cb-gallery img { width:100%; min-height:320px; object-fit:cover; }

.cb-about-facts { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; margin-top:80px; background:var(--cb-line); }
.cb-about-facts article { min-height:215px; padding:28px; background:var(--cb-surface-mineral); }
.cb-about-facts h2 { margin:42px 0 0; font-size:28px; font-weight:500; letter-spacing:-.05em; }
.cb-about-facts p { color:var(--cb-muted); font-size:14px; line-height:1.6; }
.cb-path { display:grid; grid-template-columns:repeat(4,1fr); margin-top:90px; border-top:1px solid var(--cb-line); }
.cb-path article { min-height:220px; padding:24px 22px 20px 0; border-right:1px solid var(--cb-line); }
.cb-path article + article { padding-left:22px; }
.cb-path span { color:var(--cb-muted); font-size:10px; }
.cb-path h2 { margin:42px 0 0; font-size:25px; font-weight:500; letter-spacing:-.045em; }
.cb-path p { color:var(--cb-muted); font-size:13px; line-height:1.55; }

.cb-contact { display:grid; grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr); gap:10vw; padding:clamp(110px,15vw,180px) 8vw; }
.cb-contact__intro h1 { margin:23px 0 0; font-size:clamp(52px,6.2vw,96px); font-weight:500; letter-spacing:-.07em; line-height:.9; }
.cb-contact__intro p { max-width:390px; margin:28px 0 0; color:var(--cb-muted); font-size:16px; line-height:1.65; }
.cb-contact__facts { margin-top:60px; color:var(--cb-muted); font-size:14px; line-height:1.6; }
.cb-form { display:grid; grid-template-columns:1fr 1fr; gap:20px; padding:28px; background:var(--cb-surface-mineral); }
.cb-form label { display:grid; gap:8px; color:var(--cb-muted); font-size:11px; letter-spacing:.04em; }
.cb-form label:nth-of-type(3), .cb-form label:nth-of-type(4), .cb-form label:nth-of-type(5) { grid-column:1/-1; }
.cb-form input, .cb-form select, .cb-form textarea { width:100%; border:0; border-bottom:1px solid rgba(20,23,24,.34); border-radius:0; padding:12px 0; background:transparent; color:var(--cb-ink); font:inherit; font-size:15px; outline:none; }
.cb-form textarea { resize:vertical; }
.cb-form input:focus, .cb-form select:focus, .cb-form textarea:focus { border-bottom-color:var(--cb-ink); }
.cb-form button { grid-column:1/-1; justify-self:start; margin-top:12px; }
.cb-form__note { grid-column:1/-1; margin:0; color:var(--cb-muted); font-size:12px; line-height:1.45; }

.cb-cta { padding:clamp(100px,13vw,175px) 8vw; background:var(--cb-dark); color:var(--cb-light); }
.cb-cta .cb-kicker { color:rgba(255,255,255,.58); }
.cb-cta h2 { max-width:800px; margin:50px 0 0; font-size:clamp(56px,7.2vw,112px); font-weight:500; letter-spacing:-.075em; line-height:.88; }
.cb-cta p { max-width:420px; color:rgba(255,255,255,.7); font-size:15px; line-height:1.6; }
.cb-cta .cb-button { margin-top:22px; }

.cb-footer { display:grid; grid-template-columns:1.2fr .6fr .65fr; gap:5vw; padding:70px 8vw 22px; background:#171914; color:var(--cb-light); }
.cb-footer__brand > span { display:block; color:rgba(255,255,255,.55); font-size:9px; letter-spacing:.13em; }
.cb-footer__brand a { display:block; margin-top:20px; font-size:clamp(34px,4vw,56px); font-weight:500; letter-spacing:-.07em; text-decoration:none; }
.cb-footer p { color:rgba(255,255,255,.52); font-size:11px; line-height:1.55; }
.cb-footer__nav { display:grid; align-content:start; gap:14px; padding-top:32px; }
.cb-footer__nav a { font-size:13px; text-decoration:none; }
.cb-footer__contact { padding-top:32px; font-size:14px; }
.cb-footer__bottom { grid-column:1/-1; display:flex; justify-content:space-between; margin-top:55px; padding-top:18px; border-top:1px solid rgba(255,255,255,.16); color:rgba(255,255,255,.58); font-size:10px; }
.cb-footer__bottom a { text-decoration:none; }

@media (max-width:900px) { .cb-header { padding:0 6vw; } .cb-menu { display:block; } .cb-nav { position:absolute; top:92px; right:0; left:0; display:none; flex-direction:column; align-items:stretch; gap:0; padding:12px 6vw 24px; background:var(--cb-paper); color:var(--cb-ink); } .cb-header--over-hero .cb-nav { background:rgba(22,27,29,.94); color:var(--cb-light); backdrop-filter:blur(12px); } .cb-nav.is-open { display:flex; } .cb-nav a { padding:15px 0; border-bottom:1px solid currentColor; } .cb-nav .cb-nav__contact { margin-top:14px; border:1px solid currentColor; text-align:center; } .cb-page-hero__grid,.cb-service-detail,.cb-service-works__grid,.cb-case-intro,.cb-contact,.cb-home-trust { grid-template-columns:1fr; gap:45px; } .cb-service-detail__blocks { grid-template-columns:1fr; margin-top:30px; } .cb-project-facts { grid-template-columns:repeat(2,1fr); } .cb-about-facts,.cb-path { grid-template-columns:repeat(2,1fr); } .cb-footer { grid-template-columns:1fr 1fr; }  }
@media (max-width:620px) { .cb-header { height:76px; padding:0 22px; } .cb-nav { top:76px; padding-right:22px; padding-left:22px; } .cb-brand { font-size:15px; } .cb-section,.cb-page-hero,.cb-service-detail,.cb-service-works,.cb-contact,.cb-cta { padding-right:22px; padding-left:22px; } .cb-service-groups,.cb-project-grid,.cb-filters,.cb-gallery { padding-right:22px; padding-left:22px; } .cb-page-hero { padding-top:115px; } .cb-page-hero__image { height:330px; margin-top:50px; } .cb-service-list a { gap:10px; } .cb-project-grid { grid-template-columns:1fr; } .cb-project-card,.cb-project-card img { min-height:360px; } .cb-project-hero__copy { width:auto; padding:165px 22px 75px; } .cb-project-facts { grid-template-columns:1fr 1fr; } .cb-project-facts div { min-height:105px; padding:18px; } .cb-project-facts b { margin-top:17px; } .cb-case-intro,.cb-case-grid { padding-right:22px; padding-left:22px; } .cb-case-grid { grid-template-columns:1fr; } .cb-gallery { grid-template-columns:1fr; } .cb-gallery img { min-height:240px; } .cb-about-facts,.cb-path { grid-template-columns:1fr; margin-top:55px; } .cb-path article,.cb-path article + article { padding:20px 0; border-right:0; border-bottom:1px solid var(--cb-line); } .cb-form { grid-template-columns:1fr; padding:22px; } .cb-form label:nth-of-type(n) { grid-column:1; } .cb-footer { grid-template-columns:1fr; padding-right:22px; padding-left:22px; } .cb-footer__nav,.cb-footer__contact { padding-top:8px; } .cb-home-hero { min-height:735px; } .cb-home-hero .scene-video { object-position:59% 52%; } .cb-home-hero .scene-wash { background:linear-gradient(180deg,rgba(18,25,28,.42) 0%,rgba(18,25,28,.34) 55%,rgba(18,25,28,.12) 78%,rgba(18,25,28,0) 92%),linear-gradient(90deg,rgba(18,25,28,.47),rgba(18,25,28,.19) 38%,rgba(18,25,28,.02) 72%),linear-gradient(0deg,rgba(12,18,21,.4),transparent 43%); } .cb-home-hero__copy { width:auto; padding:165px 22px 105px; } .cb-home-hero__copy h1 { font-size:clamp(51px,15vw,75px); }   .hero-sound-toggle { right:22px; bottom:17px; min-width:82px; min-height:44px; padding:0 14px; }    }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } * { scroll-behavior:auto !important; transition:none !important; } }

/* CMS pages — Concept B composition */
.cb-section-heading h2,.cb-home-trust h2,.cb-page-hero h1,.cb-page-hero h2,.cb-cta-band h2 { margin:18px 0 0; font-size:clamp(42px,5.4vw,82px); font-weight:500; letter-spacing:-.07em; line-height:.91; }
@media (max-width:359px) { .cb-page-hero h1 { font-size:35px; } .cb-home-hero__copy h1 { font-size:47px; } }

.cb-demo-note { max-width:310px; margin:0; color:var(--cb-muted); font-size:13px; line-height:1.5; }
.cb-project-grid { padding:0; }
.cb-project-card { min-height:0; overflow:visible; background:transparent; }
.cb-project-card__image { position:relative; overflow:hidden; background:var(--cb-surface-mineral); }
.cb-project-card__image img { min-height:0; height:clamp(260px,29vw,430px); }
.cb-project-card__image span { position:absolute; top:13px; left:13px; padding:6px 8px; border-radius:9px; background:rgba(255,255,255,.88); color:var(--cb-ink); font-size:9px; letter-spacing:.1em; }
.cb-project-card > div:last-child { padding:16px 0 4px; }
.cb-project-card p { margin:0; color:var(--cb-muted); font-size:10px; letter-spacing:.08em; text-transform:uppercase; }
.cb-project-card h2,.cb-project-card h3 { margin:10px 0 16px; font-size:clamp(24px,2.5vw,36px); font-weight:500; letter-spacing:-.055em; }
.cb-project-card b { font-size:11px; font-weight:500; letter-spacing:.05em; }

.cb-home-trust { padding:clamp(64px,10vw,108px) 8vw clamp(32px,4vw,44px); background:var(--cb-dark); color:var(--cb-light); }
.cb-home-trust .cb-kicker,.cb-home-trust > div > p { color:rgba(255,255,255,.6); }
.cb-home-trust > div > p { max-width:460px; margin:16px 0; }
.cb-page-hero > p:not(.cb-kicker) { max-width:530px; margin:30px 0 0; color:var(--cb-muted); font-size:16px; line-height:1.65; }
.cb-page-hero--compact { padding-bottom:60px; }
.cb-page-hero--service { position:relative; isolation:isolate; overflow:hidden; background:var(--cb-surface-muted); }
.cb-page-hero--service .cb-button { margin-top:30px; }
/* Quiet «back to the home block» link on service pages (top of the hero and above the contact band). */
.cb-back-link { display:inline-flex; align-items:center; gap:9px; min-height:44px; margin:0 0 6px -2px; padding:0 2px; color:var(--cb-muted); font-size:12px; letter-spacing:.04em; text-decoration:none; transition:color .2s ease; }
.cb-back-link span { display:inline-block; transition:transform .2s ease; }
.cb-back-link:hover,.cb-back-link:focus-visible { color:var(--cb-ink); }
.cb-back-link:hover span { transform:translateX(-3px); }
.cb-back-link:focus-visible { outline:2px solid var(--cb-ink); outline-offset:3px; border-radius:3px; }
.cb-page-hero--service > .cb-back-link { display:flex; width:fit-content; }
.cb-back-row { padding:8px 8vw 0; }
@media (prefers-reduced-motion:reduce) { .cb-back-link,.cb-back-link span { transition:none; } }
.cb-page-hero--service.cb-page-hero--motif::after { content:""; position:absolute; z-index:-1; background-repeat:no-repeat; pointer-events:none; }
.cb-page-hero--service.cb-page-hero--motif-architecture::after { right:-8vw; bottom:-9vw; width:min(74vw,1120px); height:min(50vw,760px); background-image:url("../images/service-motifs/optimized/architectural-design.webp"); background-position:right bottom; background-size:auto 100%; opacity:.72; -webkit-mask-image:radial-gradient(ellipse at 82% 72%,#000 0%,rgba(0,0,0,.78) 48%,rgba(0,0,0,.28) 70%,rgba(0,0,0,0) 88%); mask-image:radial-gradient(ellipse at 82% 72%,#000 0%,rgba(0,0,0,.78) 48%,rgba(0,0,0,.28) 70%,rgba(0,0,0,0) 88%); }
.cb-page-hero--service.cb-page-hero--motif-house-projects::after,.cb-page-hero--service.cb-page-hero--motif-land-management::after,.cb-page-hero--service.cb-page-hero--motif-geodesy::after,.cb-page-hero--service.cb-page-hero--motif-geology::after,.cb-page-hero--service.cb-page-hero--motif-water-supply::after,.cb-page-hero--service.cb-page-hero--motif-gas-supply::after,.cb-page-hero--service.cb-page-hero--motif-electricity::after,.cb-page-hero--service.cb-page-hero--motif-engineering::after,.cb-page-hero--service.cb-page-hero--motif-interiors::after,.cb-page-hero--service.cb-page-hero--motif-landscape::after { right:-8vw; bottom:-9vw; width:min(74vw,1120px); height:min(50vw,760px); background-position:right bottom; background-size:auto 100%; opacity:var(--cb-service-motif-opacity,.72); pointer-events:none; -webkit-mask-image:radial-gradient(ellipse at 82% 72%,#000 0%,rgba(0,0,0,.78) 48%,rgba(0,0,0,.28) 70%,rgba(0,0,0,0) 88%); mask-image:radial-gradient(ellipse at 82% 72%,#000 0%,rgba(0,0,0,.78) 48%,rgba(0,0,0,.28) 70%,rgba(0,0,0,0) 88%); }
.cb-page-hero--service:is(.cb-page-hero--motif-geodesy,.cb-page-hero--motif-geology,.cb-page-hero--motif-water-supply,.cb-page-hero--motif-interiors,.cb-page-hero--motif-landscape) { --cb-service-motif-opacity:.9; --cb-service-motif-opacity-tablet:.86; --cb-service-motif-opacity-mobile:.9; }
.cb-page-hero--service.cb-page-hero--motif-house-projects::after { background-image:url("../images/service-motifs/optimized/house-projects.webp"); }
.cb-page-hero--service.cb-page-hero--motif-land-management::after { background-image:url("../images/service-motifs/optimized/land-management.webp"); }
.cb-page-hero--service.cb-page-hero--motif-geodesy::after { background-image:url("../images/service-motifs/contrast/construction-geodesy.webp?v=20260924-clean"); }
.cb-page-hero--service.cb-page-hero--motif-geology::after { background-image:url("../images/service-motifs/contrast/geology.webp?v=20260924-clean"); }
.cb-page-hero--service.cb-page-hero--motif-water-supply::after { background-image:url("../images/service-motifs/contrast/water-supply.webp?v=20260924-clean"); }
.cb-page-hero--service.cb-page-hero--motif-gas-supply::after { background-image:url("../images/service-motifs/optimized/gas-supply.webp"); }
.cb-page-hero--service.cb-page-hero--motif-electricity::after { background-image:url("../images/service-motifs/optimized/electricity.webp"); }
.cb-page-hero--service.cb-page-hero--motif-engineering::after { background-image:url("../images/service-motifs/engineering-systems.webp"); }
.cb-page-hero--service.cb-page-hero--motif-interiors::after { background-image:url("../images/service-motifs/contrast/interiors.webp?v=20260924-clean"); }
.cb-page-hero--service.cb-page-hero--motif-landscape::after { background-image:url("../images/service-motifs/contrast/landscape.webp?v=20260924-clean"); }
@media (max-width:900px) { .cb-page-hero--service.cb-page-hero--motif-architecture::after { right:-14vw; bottom:-7vw; width:94vw; height:64vw; opacity:.68; } }
@media (max-width:900px) { .cb-page-hero--service.cb-page-hero--motif-house-projects::after,.cb-page-hero--service.cb-page-hero--motif-land-management::after,.cb-page-hero--service.cb-page-hero--motif-geodesy::after,.cb-page-hero--service.cb-page-hero--motif-geology::after,.cb-page-hero--service.cb-page-hero--motif-water-supply::after,.cb-page-hero--service.cb-page-hero--motif-gas-supply::after,.cb-page-hero--service.cb-page-hero--motif-electricity::after,.cb-page-hero--service.cb-page-hero--motif-engineering::after,.cb-page-hero--service.cb-page-hero--motif-interiors::after,.cb-page-hero--service.cb-page-hero--motif-landscape::after { right:-14vw; bottom:-7vw; width:94vw; height:64vw; opacity:var(--cb-service-motif-opacity-tablet,.68); } }
@media (max-width:620px) { .cb-page-hero--service.cb-page-hero--motif-architecture::after { right:-31vw; bottom:-3vw; width:126vw; height:84vw; opacity:.78; } }
@media (max-width:620px) { .cb-page-hero--service.cb-page-hero--motif-house-projects::after,.cb-page-hero--service.cb-page-hero--motif-land-management::after,.cb-page-hero--service.cb-page-hero--motif-geodesy::after,.cb-page-hero--service.cb-page-hero--motif-geology::after,.cb-page-hero--service.cb-page-hero--motif-water-supply::after,.cb-page-hero--service.cb-page-hero--motif-gas-supply::after,.cb-page-hero--service.cb-page-hero--motif-electricity::after,.cb-page-hero--service.cb-page-hero--motif-engineering::after,.cb-page-hero--service.cb-page-hero--motif-interiors::after,.cb-page-hero--service.cb-page-hero--motif-landscape::after { right:-31vw; bottom:-3vw; width:126vw; height:84vw; opacity:var(--cb-service-motif-opacity-mobile,.78); } }
/* Phones need at most ~330 CSS px of motif height: serve the smaller derivatives of the converted line-art. */
@media (max-width:620px) {
  .cb-page-hero--service.cb-page-hero--motif-architecture::after { background-image:url("../images/service-motifs/optimized/architectural-design-m.webp"); }
  .cb-page-hero--service.cb-page-hero--motif-house-projects::after { background-image:url("../images/service-motifs/optimized/house-projects-m.webp"); }
  .cb-page-hero--service.cb-page-hero--motif-land-management::after { background-image:url("../images/service-motifs/optimized/land-management-m.webp"); }
  .cb-page-hero--service.cb-page-hero--motif-gas-supply::after { background-image:url("../images/service-motifs/optimized/gas-supply-m.webp"); }
  .cb-page-hero--service.cb-page-hero--motif-electricity::after { background-image:url("../images/service-motifs/optimized/electricity-m.webp"); }
}
.cb-services-page { padding:0; }
.cb-service-block + .cb-service-block { margin-top:48px; }
.cb-service-group { display:grid; grid-template-columns:minmax(220px,.5fr) minmax(0,1.5fr); gap:8vw; padding:55px 0 0; border-top:1px solid var(--cb-line); }
.cb-service-group + .cb-service-group { margin-top:48px; }
.cb-services-page .cb-service-block + .cb-service-block,.cb-services-page .cb-service-group + .cb-service-group { margin-top:0; }
.cb-services-page .cb-service-group { padding:72px 8vw; border-top:0; background:var(--cb-surface-light); }
.cb-services-page .cb-service-group:is([data-service-group="GEODESY"],[data-service-group="ENGINEERING"],[data-service-group="LANDSCAPE"]) { background:var(--cb-surface-muted); }
@media (max-width:620px) { .cb-services-page .cb-service-group { padding:56px 22px; } }
.cb-service-group h2 { margin:18px 0 0; font-size:clamp(30px,3.6vw,53px); font-weight:500; letter-spacing:-.06em; }
.cb-service-list a { position:relative; transition:color .2s ease; }
.cb-service-list a::before { position:absolute; top:-1px; right:0; left:0; height:1px; background:var(--cb-ink); content:""; transform:scaleX(0); transform-origin:left center; transition:transform .22s ease; }
.cb-service-list a:hover::before,.cb-service-list a:focus-visible::before { transform:scaleX(1); }
.cb-service-list a:focus-visible { outline:2px solid var(--cb-ink); outline-offset:5px; }
.cb-service-list h3 { margin:0; font-size:22px; font-weight:500; letter-spacing:-.04em; transition:transform .2s ease,color .2s ease; }
.cb-service-list a:hover h3,.cb-service-list a:focus-visible h3 { color:var(--cb-surface-dark-alt); transform:translateX(4px); }
.cb-cta-band { padding:clamp(64px,10vw,108px) 8vw clamp(32px,4vw,44px); background:var(--cb-dark); color:var(--cb-light); }
.cb-cta-band .cb-kicker { color:rgba(255,255,255,.56); }
.cb-cta-band p:not(.cb-kicker) { max-width:430px; margin:12px 0 0; color:rgba(255,255,255,.7); font-size:15px; line-height:1.6; }
.cb-cta-band .cb-button { margin-top:18px; }
.cb-home-trust h2,.cb-cta-band h2 { margin-top:12px; font-size:clamp(34px,8.5vw,56px); }
.cb-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; background:var(--cb-line); }
.cb-detail-grid article { min-height:410px; padding:clamp(44px,6vw,92px) 8vw; background:var(--cb-paper); }
.cb-detail-grid h2 { max-width:560px; margin:28px 0 0; font-size:clamp(36px,4.3vw,67px); font-weight:500; letter-spacing:-.065em; line-height:.94; }
.cb-detail-grid article > p:not(.cb-kicker) { max-width:460px; color:var(--cb-muted); font-size:15px; line-height:1.65; }
.cb-kicker--spaced { margin-top:55px; }
.cb-work-section { display:grid; grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr); gap:10vw; padding:clamp(90px,12vw,160px) 8vw; background:var(--cb-surface-dark-alt); color:var(--cb-light); }
.cb-work-section .cb-kicker { color:rgba(255,255,255,.55); }
.cb-work-section h2 { margin:22px 0 0; font-size:clamp(43px,5.2vw,78px); font-weight:500; letter-spacing:-.07em; line-height:.9; }
.cb-work-section > div > p { color:rgba(255,255,255,.7); font-size:15px; line-height:1.65; }
.cb-work-section ul { margin:0; padding:0; list-style:none; border-top:1px solid rgba(255,255,255,.25); }
.cb-work-section li { padding:17px 0; border-bottom:1px solid rgba(255,255,255,.18); font-size:15px; line-height:1.45; }
.cb-service-secondary { display:grid; grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr); gap:10vw; padding:clamp(78px,10vw,128px) 8vw; border-top:1px solid var(--cb-line); background:var(--cb-surface-muted); }
.cb-service-secondary h2 { max-width:560px; margin:22px 0 0; font-size:clamp(40px,4.8vw,72px); font-weight:500; letter-spacing:-.07em; line-height:.92; }
.cb-service-secondary > p { max-width:580px; margin:0; align-self:end; color:var(--cb-muted); font-size:16px; line-height:1.7; }
.cb-process-section { padding:clamp(82px,10vw,130px) 8vw; }
.cb-process-section ol { display:grid; grid-template-columns:repeat(4,1fr); margin:45px 0 0; padding:0; list-style:none; border-top:1px solid var(--cb-line); }
.cb-process-section li { min-height:155px; padding:20px 20px 0 0; border-right:1px solid var(--cb-line); }
.cb-process-section li + li { padding-left:20px; }
.cb-process-section li span { color:var(--cb-muted); font-size:10px; }
.cb-process-section li p { margin:43px 0 0; font-size:17px; line-height:1.35; }
.cb-process-section__note { max-width:600px; margin:50px 0 0; color:var(--cb-muted); font-size:14px; line-height:1.6; }
.cb-geodesy-documents { padding:clamp(64px,7vw,100px) 8vw; border-top:1px solid var(--cb-line); background:var(--cb-paper); }
.cb-geodesy-documents__group { display:grid; grid-template-columns:minmax(0,.24fr) minmax(0,.76fr); gap:clamp(28px,4vw,56px); align-items:start; }
.cb-geodesy-documents__heading { display:block; }
.cb-geodesy-documents__heading .cb-kicker { margin:0 0 16px; }
.cb-geodesy-documents__heading h2 { margin:0; font-size:clamp(36px,3.75vw,54px); font-weight:500; letter-spacing:-.05em; line-height:1.05; }
.cb-geodesy-documents__groups { margin-top:clamp(40px,3.34vw,48px); }
.cb-geodesy-documents__group { padding-top:36px; border-top:1px solid var(--cb-line); }
.cb-geodesy-documents__group + .cb-geodesy-documents__group { margin-top:64px; }
.cb-geodesy-documents__group-heading { display:block; }
.cb-geodesy-documents__format { color:var(--cb-muted); font-size:10px; letter-spacing:.1em; }
.cb-geodesy-documents__group-heading h3 { margin:0; font-size:clamp(23px,2.3vw,34px); font-weight:500; letter-spacing:-.055em; line-height:1; }
.cb-geodesy-documents__dossier { display:grid; grid-template-columns:minmax(0,.44fr) minmax(0,.56fr); gap:28px; align-items:start; }
.cb-geodesy-documents__preview { display:block; width:100%; max-width:380px; margin:0; padding:10px; border:1px solid var(--cb-line); }
.cb-geodesy-documents__preview img { display:block; width:100%; height:auto; object-fit:contain; }
.cb-geodesy-documents__index { margin:0; padding:0; list-style:none; }
.cb-geodesy-documents__index li { border-bottom:1px solid var(--cb-line); }
.cb-geodesy-documents__index a { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:14px; align-items:baseline; padding:20px 0; color:var(--cb-ink); text-decoration:none; font-size:18px; line-height:1.3; letter-spacing:-.025em; cursor:pointer; }
.cb-geodesy-documents__index li:first-child a { padding-top:0; }
.cb-geodesy-documents__index a:hover > span:first-child { text-decoration:underline; text-underline-offset:4px; }
.cb-geodesy-documents__index a:focus-visible { outline:2px solid var(--cb-ink); outline-offset:5px; }
.cb-geodesy-documents + .cb-process-section { padding-top:72px; padding-bottom:72px; background:var(--cb-surface-muted); }
.cb-geodesy-documents + .cb-process-section li p { margin-top:28px; font-size:18px; line-height:1.45; }
.cb-geodesy-documents + .cb-process-section .cb-process-section__note { line-height:1.7; }
@media (max-width:1100px) { .cb-geodesy-documents__heading,.cb-geodesy-documents__group { grid-template-columns:1fr; gap:28px; } }
@media (max-width:620px) { .cb-geodesy-documents__dossier { grid-template-columns:1fr; gap:28px; } .cb-geodesy-documents__preview { max-width:320px; } .cb-geodesy-documents__group + .cb-geodesy-documents__group { margin-top:44px; } .cb-geodesy-documents__index a { font-size:17px; gap:12px; } }
.cb-filters { margin:0; padding:0 8vw 48px; }
.cb-filters a { display:inline-flex; align-items:center; min-height:40px; padding:0 15px; border:1px solid var(--cb-line); border-radius:13px; color:var(--cb-muted); font-size:11px; text-decoration:none; transition:.2s; }
.cb-filters a:hover,.cb-filters a.is-active { border-color:var(--cb-ink); background:var(--cb-ink); color:var(--cb-light); }
.cb-segmented { display:flex; width:max-content; max-width:calc(100vw - 16vw); gap:4px; margin:0 8vw 48px; padding:5px; overflow-x:auto; border:1px solid var(--cb-border-light); border-radius:15px; background:rgba(255,255,255,.72); box-shadow:inset 0 1px 0 rgba(255,255,255,.7); backdrop-filter:blur(12px); }
.cb-segmented a { flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; min-height:42px; padding:0 16px; border-radius:10px; color:var(--cb-text-secondary); font-size:11px; font-weight:600; letter-spacing:.04em; text-decoration:none; transition:color .2s ease,background .2s ease,box-shadow .2s ease; }
.cb-segmented a:hover { color:var(--cb-ink); background:rgba(255,255,255,.56); }
.cb-segmented a.is-active { background:var(--cb-ink); box-shadow:0 2px 8px rgba(20,23,24,.16); color:var(--cb-light); }
.cb-segmented a:focus-visible { outline:2px solid var(--cb-ink); outline-offset:3px; }
.cb-segmented.cb-filters { padding:4px; }
.cb-segmented.cb-filters a { min-height:37px; padding:0 14px; border:0; }
.cb-catalog { display:grid; grid-template-columns:repeat(3,1fr); gap:28px 18px; padding:0 8vw 135px; }
.cb-empty { padding:30px; color:var(--cb-muted); }
.cb-project-detail { overflow:hidden; background:var(--cb-paper); }
.cb-case-hero { position:relative; min-height:min(810px,82svh); overflow:hidden; color:var(--cb-light); background:var(--cb-surface-dark-alt); }
.cb-case-hero__media { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:transparent; color:inherit; cursor:zoom-in; }
.cb-case-hero__media img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; transform:scale(1.01); }
.cb-case-hero::after { position:absolute; inset:0; content:""; pointer-events:none; background:linear-gradient(90deg,rgba(16,23,26,.76) 0%,rgba(16,23,26,.48) 37%,rgba(16,23,26,.08) 76%),linear-gradient(0deg,rgba(13,20,23,.62),transparent 47%); }
.cb-case-hero__content { position:relative; z-index:1; display:flex; flex-direction:column; justify-content:flex-end; box-sizing:border-box; width:min(820px,76vw); min-height:min(810px,82svh); padding:clamp(150px,19vh,210px) 8vw clamp(70px,9vh,112px); pointer-events:none; }
.cb-case-hero__content a { pointer-events:auto; }
.cb-case-hero__back { position:absolute; top:clamp(118px,14vh,160px); left:8vw; color:rgba(255,255,255,.76); font-size:11px; letter-spacing:.055em; text-decoration:none; }
.cb-case-hero__back span { margin-left:8px; }
.cb-case-hero__back:hover { color:var(--cb-light); }
.cb-case-hero__labels { display:flex; flex-wrap:wrap; gap:9px; margin:0; }
.cb-case-hero__labels span { padding:7px 10px; border:1px solid rgba(255,255,255,.3); color:rgba(255,255,255,.88); font-size:9px; font-weight:500; letter-spacing:.12em; }
.cb-case-hero h1 { max-width:760px; margin:24px 0 0; font-size:clamp(62px,8.1vw,128px); font-weight:500; letter-spacing:-.08em; line-height:.84; }
.cb-case-hero__summary { max-width:490px; margin:29px 0 0; color:rgba(255,255,255,.78); font-size:15px; line-height:1.62; }
.cb-demo-disclosure { display:grid; grid-template-columns:minmax(170px,.6fr) minmax(0,1.4fr); gap:7vw; padding:28px 8vw 30px; border-bottom:1px solid var(--cb-line); background:var(--cb-surface-muted); }
.cb-demo-disclosure .cb-kicker { margin:4px 0 0; }
.cb-demo-disclosure > p:last-child { max-width:720px; margin:0; color:var(--cb-muted); font-size:13px; line-height:1.65; }
.cb-case-copy { display:grid; grid-template-columns:minmax(0,1fr) minmax(280px,.7fr); gap:12vw; padding:clamp(104px,13vw,184px) 8vw; }
.cb-case-copy--intro { min-height:300px; align-items:start; }
.cb-case-copy h2,.cb-gallery-section h2 { max-width:700px; margin:20px 0 0; font-size:clamp(44px,5.5vw,84px); font-weight:500; letter-spacing:-.075em; line-height:.9; }
.cb-case-copy__body { max-width:470px; padding-top:5px; }
.cb-case-copy__body p { margin:0; color:var(--cb-muted); font-size:17px; line-height:1.75; }
.cb-case-copy--details { align-items:start; border-top:1px solid var(--cb-line); background:var(--cb-surface-muted); }
.cb-case-details { display:grid; gap:0; margin:0; border-top:1px solid var(--cb-line); }
.cb-case-details > div { padding:23px 0 25px; border-bottom:1px solid var(--cb-line); }
.cb-case-details dt { color:var(--cb-muted); font-size:10px; letter-spacing:.1em; }
.cb-case-details dd { max-width:540px; margin:12px 0 0; color:var(--cb-ink); font-size:16px; line-height:1.6; }
.cb-gallery-section { padding:clamp(105px,13vw,185px) 8vw; background:var(--cb-paper); }
.cb-gallery-section__heading { display:flex; justify-content:space-between; align-items:end; margin-bottom:clamp(45px,7vw,90px); }
.cb-gallery { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:clamp(18px,2.4vw,38px); }
.cb-gallery__item { grid-column:span 5; margin:0; overflow:hidden; background:var(--cb-surface-mineral); }
.cb-gallery__item--dominant { grid-column:1 / -1; }
.cb-gallery__item:nth-child(2) { grid-column:1 / span 7; }
.cb-gallery__item:nth-child(3) { grid-column:9 / -1; align-self:end; }
.cb-gallery__item:nth-child(4) { grid-column:4 / -1; margin-top:clamp(14px,3vw,56px); }
.cb-gallery__item > button { display:block; width:100%; padding:0; border:0; background:transparent; color:inherit; cursor:zoom-in; }
.cb-gallery__item img { display:block; width:100%; height:auto; min-height:220px; object-fit:cover; transition:transform .65s ease; }
.cb-gallery__item figcaption { padding:13px 14px 0; color:var(--cb-muted); font-size:12px; line-height:1.5; }
.cb-gallery__item--dominant img { max-height:min(72svh,940px); object-fit:cover; }
.cb-gallery__item:hover img { transform:scale(1.015); }
.cb-project-lightbox { position:fixed; z-index:100; inset:0; display:grid; grid-template-columns:minmax(52px,1fr) minmax(0,12fr) minmax(52px,1fr); align-items:center; gap:clamp(10px,2vw,34px); box-sizing:border-box; padding:clamp(18px,4vw,64px); background:rgba(12,17,19,.98); color:var(--cb-light); opacity:0; transition:opacity .2s ease; }
.cb-project-lightbox[hidden] { display:none; }
.cb-project-lightbox.is-visible { opacity:1; }
.cb-project-lightbox__stage { display:grid; place-items:center; min-width:0; max-height:calc(100svh - clamp(36px,8vw,128px)); }
.cb-project-lightbox__image { display:block; max-width:100%; max-height:calc(100svh - clamp(36px,8vw,128px)); object-fit:contain; }
.cb-project-lightbox__control { display:grid; place-items:center; width:52px; height:52px; border:1px solid rgba(245,246,245,.3); border-radius:50%; background:transparent; color:rgba(245,246,245,.92); font:inherit; cursor:pointer; transition:border-color .18s ease,background .18s ease; }
.cb-project-lightbox__control:hover { border-color:rgba(245,246,245,.7); background:rgba(245,246,245,.08); }
.cb-project-lightbox__control svg { width:20px; height:20px; }
.cb-project-lightbox__close { position:absolute; top:clamp(16px,2vw,28px); right:clamp(16px,2vw,28px); }
.cb-project-lightbox__counter { position:absolute; bottom:clamp(17px,2vw,28px); left:50%; margin:0; color:rgba(245,246,245,.62); font-size:10px; font-weight:500; letter-spacing:.16em; transform:translateX(-50%); }
.cb-project-lightbox__previous { justify-self:end; }
.cb-project-lightbox__next { justify-self:start; }
.has-project-lightbox { position:fixed; width:100%; overflow:hidden; }
@media (max-width:620px) { .cb-project-lightbox { display:block; padding:20px; } .cb-project-lightbox__stage { height:calc(100svh - 40px); max-height:none; } .cb-project-lightbox__image { max-height:calc(100svh - 132px); } .cb-project-lightbox__control { width:46px; height:46px; } .cb-project-lightbox__previous,.cb-project-lightbox__next { position:absolute; bottom:18px; } .cb-project-lightbox__previous { left:20px; } .cb-project-lightbox__next { right:20px; } .cb-project-lightbox__counter { bottom:33px; } }
@media (prefers-reduced-motion:reduce) { .cb-project-lightbox,.cb-project-lightbox__control { transition:none; } }
.cb-project-close { padding:0 8vw clamp(100px,12vw,166px); background:var(--cb-paper); }
.cb-project-close__next { position:relative; display:grid; grid-template-columns:minmax(260px,.85fr) minmax(0,1.15fr); min-height:410px; overflow:hidden; color:var(--cb-light); text-decoration:none; background:var(--cb-surface-dark-alt); }
.cb-project-close__next::after { position:absolute; inset:0; content:""; background:linear-gradient(90deg,rgba(10,14,15,.2),rgba(10,14,15,.54)); }
.cb-project-close__next img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .65s ease; }
.cb-project-close__next:hover img { transform:scale(1.02); }
.cb-project-close__next > span { position:relative; z-index:1; grid-column:2; align-self:end; padding:clamp(34px,5vw,70px); }
.cb-project-close__next small { display:block; color:rgba(255,255,255,.64); font-size:10px; letter-spacing:.1em; }
.cb-project-close__next strong { display:block; margin-top:18px; font-size:clamp(38px,5vw,72px); font-weight:500; letter-spacing:-.07em; line-height:.9; }
.cb-project-close__actions { display:flex; justify-content:space-between; gap:20px; padding:35px 0 0; }
.cb-project-close__actions a { display:inline-flex; padding-bottom:4px; color:var(--cb-ink); font-size:12px; font-weight:500; letter-spacing:.04em; text-decoration:none; }
.cb-project-close__actions a:hover { color:var(--cb-muted); }
.cb-project-close__actions span { margin-left:7px; }
.cb-about-photo { background:var(--cb-paper); }
.cb-about-photo img { display:block; width:100%; height:auto; }
.cb-about-photo__caption { margin:0; padding:14px 8vw; color:var(--cb-muted); font-size:12px; line-height:1.5; }
@media (max-width:620px) { .cb-about-photo__caption { padding:12px 22px; } }
.cb-about-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--cb-line); }
.cb-about-grid article { min-height:380px; padding:clamp(44px,7vw,100px) 8vw; background:var(--cb-surface-mineral); }
.cb-about-grid h2 { margin:25px 0 0; font-size:clamp(38px,4.5vw,70px); font-weight:500; letter-spacing:-.07em; line-height:.93; }
.cb-about-grid article > p:not(.cb-kicker),.cb-about-method > p { max-width:530px; color:var(--cb-muted); font-size:16px; line-height:1.7; }
.cb-about-coverage { display:grid; grid-template-columns:minmax(280px,.9fr) minmax(0,1.1fr); gap:10vw; padding:clamp(65px,8vw,108px) 8vw; border-top:1px solid var(--cb-line); background:var(--cb-paper); }
.cb-about-coverage h2 { max-width:580px; margin:20px 0 0; font-size:clamp(38px,4.6vw,68px); font-weight:500; letter-spacing:-.07em; line-height:.93; }
.cb-about-coverage > p { margin:0; align-self:end; color:var(--cb-muted); font-size:15px; line-height:1.65; }
.cb-about-facts { display:block; margin:0; padding:clamp(85px,11vw,140px) 8vw; background:var(--cb-paper); }
.cb-about-facts dl { display:grid; grid-template-columns:repeat(4,1fr); margin:45px 0 0; border-top:1px solid var(--cb-line); }
.cb-about-facts dl div { min-height:150px; padding:20px 20px 0 0; border-right:1px solid var(--cb-line); }
.cb-about-facts dl div + div { padding-left:20px; }
.cb-about-facts dt { font-size:18px; font-weight:500; line-height:1.35; }
.cb-about-facts dd { margin:10px 0 0; color:var(--cb-muted); font-size:11px; }
.cb-about-method { padding:clamp(90px,12vw,150px) 8vw; background:var(--cb-surface-muted); }
.cb-about-method h2 { max-width:850px; margin:20px 0 0; font-size:clamp(44px,5.4vw,80px); font-weight:500; letter-spacing:-.07em; line-height:.92; }
.cb-method-stages { margin:clamp(40px,4.6vw,76px) 0 0; }
@media (max-width:900px) { .cb-method-stages { margin-top:36px; } .cb-method-stages li:last-child { margin-bottom:0; } }
.cb-contact-layout { display:grid; grid-template-columns:minmax(270px,.75fr) minmax(0,1.25fr); gap:10vw; padding:var(--cb-intro-top) 8vw var(--cb-intro-bottom); }
.cb-contact-layout h1 { margin:22px 0 0; font-size:clamp(56px,6.3vw,98px); font-weight:500; letter-spacing:-.075em; line-height:.88; }
.cb-contact-layout > div > p:not(.cb-kicker) { max-width:400px; margin:28px 0 0; color:var(--cb-muted); font-size:16px; line-height:1.7; }
.cb-contact-legal { margin-top:60px; }
.cb-contact-legal .cb-address-link { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; text-decoration-color:rgba(20,23,24,.35); }
.cb-contact-legal .cb-address-link:hover,.cb-contact-legal .cb-address-link:focus-visible { text-decoration-color:currentColor; }
.cb-contact-form { display:grid; grid-template-columns:repeat(2,1fr); gap:25px 18px; padding:30px; background:var(--cb-surface-mineral); }
.cb-contact-form > .cb-kicker,.cb-contact-form > details,.cb-contact-form > label:nth-of-type(5),.cb-contact-form > .cb-form-note,.cb-contact-form > button { grid-column:1/-1; }
.cb-contact-form label { display:grid; gap:9px; color:var(--cb-muted); font-size:11px; letter-spacing:.04em; }
.cb-contact-form input,.cb-contact-form textarea,.cb-contact-form select { width:100%; border:0; border-bottom:1px solid rgba(20,23,24,.35); padding:11px 0; border-radius:0; background:transparent; color:var(--cb-ink); font:inherit; font-size:15px; outline:none; }
.cb-contact-form textarea { resize:vertical; }
.cb-contact-form details { color:var(--cb-muted); font-size:13px; }
.cb-contact-form details[open] { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.cb-contact-form summary { cursor:pointer; grid-column:1/-1; color:var(--cb-ink); }
.cb-contact-form details label:nth-of-type(4) { grid-column:1/-1; }
.cb-form-note { margin:0; color:var(--cb-muted); font-size:12px; line-height:1.5; }
@media (max-width:900px) {   .cb-service-group,.cb-work-section,.cb-service-secondary,.cb-case-copy,.cb-contact-layout,.cb-about-coverage,.cb-geodesy-documents__heading { grid-template-columns:1fr; gap:42px; } .cb-catalog { grid-template-columns:repeat(2,1fr); } .cb-about-facts dl,.cb-process-section ol { grid-template-columns:repeat(2,1fr); } }

@media (max-width:620px) { .cb-gallery-section > div:first-child { display:block; } .cb-demo-note { margin-top:25px; } .cb-detail-grid,.cb-catalog,.cb-about-grid { grid-template-columns:1fr; }  .cb-about-facts dl,.cb-process-section ol { grid-template-columns:1fr; } .cb-about-facts dl div,.cb-about-facts dl div + div,.cb-process-section li,.cb-process-section li + li { min-height:auto; padding:20px 0; border-right:0; border-bottom:1px solid var(--cb-line); } .cb-detail-grid article { min-height:0; padding:55px 22px; } .cb-work-section,.cb-service-secondary,.cb-case-copy,.cb-contact-layout,.cb-about-coverage,.cb-geodesy-documents { padding-right:22px; padding-left:22px; } .cb-catalog { padding-right:22px; padding-left:22px; } .cb-geodesy-documents__heading { gap:16px; } .cb-geodesy-documents__group-heading { gap:12px; } .cb-case-hero > div { width:auto; padding:165px 22px 70px; } .cb-demo-disclosure { grid-template-columns:1fr; padding-right:22px; padding-left:22px; } .cb-case-facts { grid-template-columns:1fr; } .cb-case-facts div { min-height:0; padding:18px 22px; border-right:0; border-bottom:1px solid var(--cb-line); } .cb-contact-form { grid-template-columns:1fr; padding:22px; } .cb-contact-form > .cb-kicker,.cb-contact-form > details,.cb-contact-form > label:nth-of-type(5),.cb-contact-form > .cb-form-note,.cb-contact-form > button { grid-column:1; } .cb-contact-form details[open] { grid-template-columns:1fr; } .cb-contact-form details label:nth-of-type(4) { grid-column:1; } .cb-segmented { max-width:calc(100vw - 44px); margin-right:22px; margin-left:22px; } .cb-home-hero .cb-actions { gap:14px; } }

@media (max-width:620px) { .cb-gallery-section h2 { overflow-wrap:anywhere; } }

/* Pass 2: two architectural entry routes, callback-first contact, and one stable footer cascade. */

.cb-callback-primary { display:grid; grid-column:1 / -1; grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr); align-items:end; gap:18px; }
.cb-callback-primary > label { min-width:0; }
.cb-callback-primary .cb-button { grid-column:1 / -1; min-height:48px; margin:4px 0 0; justify-self:start; }
.cb-contact-form .cb-contact-consent-block { grid-column:1 / -1; }
.cb-contact-consent { display:flex; align-items:flex-start; gap:9px; margin:0; color:var(--cb-muted); font-size:12px; line-height:1.55; letter-spacing:normal; }
.cb-contact-consent input { flex-shrink:0; width:16px; height:16px; margin-top:2px; accent-color:var(--cb-ink); }
.cb-contact-consent-links { margin:6px 0 0 25px; color:var(--cb-muted); font-size:11px; letter-spacing:normal; }
.cb-contact-consent-links a { color:var(--cb-ink); text-decoration:underline; text-underline-offset:2px; }
.cb-contact-form .cb-contact-details { grid-column:1 / -1; }
.cb-contact-form .cb-contact-details[open] { display:block; }
.cb-contact-details__grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 18px; margin-top:24px; }
.cb-contact-details__grid label:nth-of-type(4) { grid-column:auto; }
.cb-contact-details__message { grid-column:1 / -1; }

/* The photograph fades in over the preceding surface, within the existing footer. */
.land-footer { --footer-entry:var(--cb-paper); --footer-fade:100px; position:relative; z-index:0; isolation:isolate; display:flex; flex-direction:column; justify-content:flex-end; min-height:500px; margin-top:0; padding-top:0; background:var(--footer-entry); color:#f5f6f5; font-family:var(--cb-font); }
main:has(> :last-child:is(.cb-cta-band,.cb-home-trust)) + .land-footer { --footer-entry:var(--cb-dark); }
.land-footer__image { position:absolute; z-index:0; inset:0; width:100%; height:100%; object-fit:cover; object-position:66% 42%; -webkit-mask-image:linear-gradient(to bottom,transparent,#000 var(--footer-fade)); mask-image:linear-gradient(to bottom,transparent,#000 var(--footer-fade)); }
.land-footer::after { position:absolute; z-index:1; inset:0; content:""; pointer-events:none; background:linear-gradient(to bottom,transparent 38%,rgba(28,29,26,.16) 52%,rgba(28,29,26,.52) 66%,rgba(24,25,23,.8) 80%,rgba(22,23,21,.9) 100%); }
.land-footer__content { position:relative; z-index:2; margin-top:auto; padding:0 8vw 26px; text-align:left; opacity:.85; transition:opacity .4s ease; }
.land-footer.is-visible .land-footer__content { opacity:1; }
.land-footer__top { display:flex; align-items:center; justify-content:space-between; gap:24px; padding-bottom:18px; border-bottom:1px solid rgba(245,246,245,.16); }
.land-footer__brand-link { display:block; width:118px; margin:0; opacity:.9; }
.land-footer__brand { display:block; width:100%; height:auto; margin:0; }
.land-footer nav { display:flex; justify-content:flex-end; gap:clamp(28px,3vw,48px); }
.land-footer a { color:rgba(245,246,245,.95); font-size:11px; font-weight:350; letter-spacing:.02em; text-decoration:none; transition:color .2s ease,opacity .2s ease; }
.land-footer a:hover { color:#fff; opacity:1; }
.land-footer a:focus-visible { outline:1px solid #f5f6f5; outline-offset:6px; }
.land-footer nav a { position:relative; }
.land-footer nav a::after { position:absolute; right:0; bottom:-6px; left:0; height:1px; content:""; background:currentColor; opacity:0; transition:opacity .2s ease; }
.land-footer nav a:hover::after { opacity:.7; }
.land-footer__info { display:flex; justify-content:space-between; align-items:flex-start; gap:32px; margin-top:18px; padding-bottom:16px; border-bottom:1px solid rgba(245,246,245,.12); }
.land-footer__contact { display:flex; flex-direction:column; gap:6px; margin:0; }
.land-footer__contact p { margin:0; }
.land-footer__company { display:flex; flex-direction:column; gap:4px; margin:0; color:rgba(245,246,245,.7); font-size:12px; font-weight:350; letter-spacing:.015em; line-height:1.6; text-align:right; }
.land-footer__company .cb-address-link { color:inherit; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:2px; text-decoration-color:rgba(245,246,245,.3); }
.land-footer__company .cb-address-link:hover,.land-footer__company .cb-address-link:focus-visible { color:#fff; text-decoration-color:currentColor; }
.land-footer__meta { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-top:14px; }
.land-footer__copyright { margin:0; color:rgba(245,246,245,.5); font-size:11px; font-weight:350; letter-spacing:.02em; }
.land-footer__credit { margin:0; text-align:right; font-family:var(--cb-font); font-size:11px; line-height:1.5; letter-spacing:.02em; font-weight:350; color:rgba(245,246,245,.5); }
.land-footer__credit a.land-footer__credit-name { font-size:inherit; font-family:inherit; font-weight:500; letter-spacing:inherit; color:rgba(245,246,245,.72); text-decoration:none; transition:color .2s ease; }
.land-footer__credit a.land-footer__credit-name:hover,.land-footer__credit a.land-footer__credit-name:focus-visible { color:#fff; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:2px; }
.cb-terrain-motif { display:block; width:100%; height:100%; overflow:visible; pointer-events:none; }
.cb-terrain-motif path { fill:none; stroke:currentColor; stroke-width:1; vector-effect:non-scaling-stroke; }
.cb-about-grid article:first-child { position:relative; overflow:hidden; }
.cb-about-grid article:first-child .cb-terrain-motif { position:absolute; inset:auto -8% -12% -8%; width:116%; height:80%; opacity:.16; color:var(--cb-text-secondary); z-index:0; }
.cb-about-grid article:first-child > * { position:relative; z-index:1; }
@media (min-width:768px) { .cb-terrain-motif { transform:translateX(var(--terrain-shift,0px)); } }
@media (max-width:767px) { .cb-about-grid article:first-child .cb-terrain-motif { opacity:.12; } }
@media (prefers-reduced-motion:reduce) { .cb-terrain-motif { transform:none !important; } }
@media (max-width:620px) {  .cb-callback-primary,.cb-contact-details__grid { grid-template-columns:1fr; }  .cb-contact-details__message { grid-column:1; } .cb-callback-primary .cb-button { justify-self:start; } .land-footer { min-height:624px; } .land-footer__image { object-position:61% 0; } .land-footer::after { background:linear-gradient(to bottom,transparent 26%,rgba(18,20,18,.5) 42%,rgba(17,19,17,.82) 56%,rgba(16,18,16,.93) 70%,rgba(15,17,15,.97) 88%,rgba(15,17,15,.98) 100%); } .land-footer__brand-link { width:104px; margin-bottom:22px; } .land-footer nav { display:grid; grid-template-columns:repeat(2,max-content); gap:16px 42px; } .land-footer a { font-size:11px; } .land-footer__company { flex-direction:column; margin-top:26px; font-size:12px; line-height:1.9; } .land-footer__company span + span::before { content:none; } .land-footer__copyright { margin-top:26px; font-size:11px; } .cb-segmented { width:calc(100% - 44px); max-width:none; flex-wrap:wrap; overflow:visible; } .cb-segmented a { padding-right:12px; padding-left:12px; } }
@media (min-width:621px) and (max-width:1099px) { .cb-callback-primary { grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr); } .cb-callback-primary .cb-button { grid-column:1 / -1; justify-self:start; margin-top:4px; } }
@media (max-width:620px) { .land-footer__content { padding:0 22px 26px; } .land-footer__top { flex-direction:column; align-items:flex-start; gap:16px; padding-bottom:18px; } .land-footer nav { flex-wrap:wrap; justify-content:flex-start; gap:12px 26px; } .land-footer__info { flex-direction:column; align-items:flex-start; gap:18px; margin-top:18px; padding-bottom:18px; } .land-footer__company { text-align:left; } .land-footer__meta { flex-direction:column; align-items:flex-start; gap:6px; margin-top:16px; } .land-footer__credit { text-align:left; } }
@media (prefers-reduced-motion:reduce) { .land-footer a,.land-footer nav a::after { transition:none; } }
@media (max-width:620px) { .land-footer { --footer-fade:72px; } .land-footer__image { object-position:72% 50%; -webkit-mask-image:none; mask-image:none; } .land-footer::after { background:linear-gradient(to bottom,var(--cb-dark) 0,var(--cb-dark) 4px,transparent var(--footer-fade),transparent 26%,rgba(18,20,18,.5) 42%,rgba(17,19,17,.82) 56%,rgba(16,18,16,.93) 70%,rgba(15,17,15,.97) 88%,rgba(15,17,15,.98) 100%); } }

@media (max-width:900px) {
  .hero-sound-toggle { right:28px; bottom:82px; }
}

@media (max-width:620px) {
  .hero-sound-toggle { right:22px; bottom:78px; min-height:44px; padding:0 15px 0 13px; }
}

/* Mobile CTA sizing for the shared primary / secondary hierarchy. */
@media (max-width:620px) {
  .cb-home-hero .cb-actions { align-items:center; gap:14px 18px; }
  .cb-home-hero .cb-actions .cb-button--light { order:1; min-height:48px; padding:0 19px; border-color:rgba(255,255,255,.56); background:rgba(255,255,255,.2); box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 8px 30px rgba(0,0,0,.08); backdrop-filter:blur(14px); color:var(--cb-light); }
  .cb-home-hero .cb-actions .cb-button--light:hover { transform:translateY(-2px); border-color:rgba(255,255,255,.72); background:rgba(255,255,255,.27); }
  .cb-home-hero .cb-actions .cb-button--ghost { order:2; min-height:auto; padding:0 0 9px; border:0; border-bottom:1px solid currentColor; border-radius:0; background:transparent; box-shadow:none; backdrop-filter:none; color:rgba(255,255,255,.85); font-size:11px; transition:color .2s ease; }
  .cb-home-hero .cb-actions .cb-button--ghost:hover { transform:none; background:transparent; color:var(--cb-light); }
}

@media (max-width:900px) {
  .cb-case-hero,.cb-case-hero__content { min-height:74svh; }
  .cb-gallery { grid-template-columns:repeat(6,minmax(0,1fr)); }
  .cb-gallery__item:nth-child(2) { grid-column:1 / span 4; }
  .cb-gallery__item:nth-child(3) { grid-column:5 / -1; }
  .cb-gallery__item:nth-child(4) { grid-column:2 / -1; }
}

@media (max-width:620px) {
  .cb-case-hero,.cb-case-hero__content { min-height:600px; }
  .cb-case-hero__content { width:auto; padding:124px 22px 54px; }
  .cb-case-hero__back { top:98px; left:22px; }
  .cb-case-hero__labels { gap:10px; }
  .cb-case-hero__labels span { padding:8px 10px; border-color:rgba(255,255,255,.42); color:rgba(255,255,255,.94); font-size:10px; letter-spacing:.1em; }
  .cb-case-hero h1 { font-size:clamp(55px,16vw,72px); }
  .cb-case-hero__summary { margin-top:24px; font-size:14px; }
  .cb-demo-disclosure { gap:16px; padding:25px 22px 27px; }
  .cb-case-copy { gap:38px; padding:84px 22px; }
  .cb-case-copy--intro { min-height:0; }
  .cb-case-copy h2,.cb-gallery-section h2 { font-size:clamp(40px,12vw,58px); }
  .cb-case-copy__body p { font-size:16px; }
  .cb-gallery-section { padding:84px 0; }
  .cb-gallery-section__heading { display:block; margin:0 22px 42px; }
  .cb-gallery { display:block; padding:0; }
  .cb-gallery__item,.cb-gallery__item:nth-child(2),.cb-gallery__item:nth-child(3),.cb-gallery__item:nth-child(4) { margin:0 0 18px; }
  .cb-gallery__item img,.cb-gallery__item--dominant img { min-height:0; max-height:none; }
  .cb-project-close { padding:0 22px 92px; }
  .cb-project-close__next { display:block; min-height:400px; }
  .cb-project-close__next > span { position:absolute; right:0; bottom:0; left:0; padding:31px 28px; }
  .cb-project-close__next strong { font-size:48px; }
  .cb-project-close__actions { align-items:flex-start; flex-direction:column; gap:20px; padding-top:29px; }
}

@media (prefers-reduced-motion:reduce) {
  .cb-gallery__item img,.cb-project-close__next img { transition:none; }
}

.cb-home-trust { background:var(--cb-surface-dark); }

/* Digital business card (/card) — standalone lightweight page, not part of base.html. */
.cb-card-page { margin:0; background:var(--cb-paper); color:var(--cb-ink); font-family:var(--cb-font); }
.cb-card { box-sizing:border-box; max-width:480px; margin:0 auto; padding:40px 22px 48px; display:flex; flex-direction:column; gap:32px; }
.cb-card__brand { display:flex; flex-direction:column; align-items:center; gap:12px; text-align:center; }
.cb-card__logo { width:148px; height:auto; }
.cb-card__name { margin:0; color:var(--cb-ink); font-size:15px; font-weight:500; letter-spacing:.01em; }
.cb-card__lead { margin:0; max-width:360px; color:var(--cb-muted); font-size:14px; line-height:1.55; }
.cb-card__brand + .cb-card__actions { margin-top:-14px; }
.cb-card__actions { display:flex; flex-direction:column; gap:10px; }
.cb-card__actions .cb-button { width:100%; }
/* Contact actions: call first, then the three messengers on the same approved number,
   then save-contact; email and site stay quieter. Every action keeps a visible label. */
.cb-card__icon { flex:none; width:18px; height:18px; }
.cb-card__actions .cb-button { gap:10px; }
.cb-card__call { min-height:54px; font-size:12px; }
.cb-card__messengers { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.cb-card__messenger { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; min-height:64px; padding:8px 4px; border:1px solid var(--cb-line); border-radius:15px; background:var(--cb-paper); color:var(--cb-ink); font-size:11px; font-weight:500; letter-spacing:.02em; text-decoration:none; transition:border-color .2s ease, background .2s ease; }
.cb-card__messenger .cb-card__icon { width:24px; height:24px; }
.cb-card__messengers--1 { grid-template-columns:minmax(0,1fr); }
.cb-card__messengers--2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.cb-card__messengers--4 { grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; }
@media (max-width:359px) { .cb-card__messengers--4 { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.cb-card__icon--brand { stroke:none; }
.cb-card__messenger:hover { border-color:var(--cb-ink); background:var(--cb-surface-muted); }
.cb-card__secondary { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:4px 12px; padding-top:2px; }
.cb-card__link { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; color:var(--cb-ink); font-size:12px; text-decoration:underline; text-decoration-color:var(--cb-line); text-underline-offset:4px; }
.cb-card__link .cb-card__icon { width:16px; height:16px; color:var(--cb-muted); }
.cb-card__link:hover { text-decoration-color:currentColor; }
.cb-card a:focus-visible { outline:2px solid var(--cb-ink); outline-offset:3px; }
.cb-card__directions-list { margin:14px 0 0; padding:14px 0 0; list-style:none; display:flex; flex-direction:column; border-top:1px solid var(--cb-line); }
.cb-card__directions-list li { padding:9px 0; border-bottom:1px solid var(--cb-line); font-size:14px; }
.cb-card__directions-list li:last-child { border-bottom:0; }
.cb-card__work-grid { display:flex; flex-direction:column; gap:16px; margin-top:14px; }
.cb-card__work-item { position:relative; display:block; aspect-ratio:16/9; border-radius:16px; overflow:hidden; background:var(--cb-surface-mineral); text-decoration:none; }
.cb-card__work-item img { position:absolute; z-index:0; inset:0; width:100%; height:100%; object-fit:cover; }
.cb-card__work-item::after { content:""; position:absolute; z-index:1; inset:0; background:linear-gradient(to top,rgba(10,12,12,.82),rgba(10,12,12,0) 48%); }
.cb-card__work-item b { position:absolute; z-index:2; left:18px; right:18px; bottom:16px; color:#fff; font-size:18px; font-weight:500; line-height:1.25; letter-spacing:-.01em; }
.cb-card__work-tag { position:absolute; z-index:2; top:12px; left:12px; padding:4px 8px; border-radius:6px; background:rgba(255,255,255,.92); color:var(--cb-ink); font-size:9px; font-weight:600; letter-spacing:.06em; }
.cb-card__cta { display:flex; flex-direction:column; align-items:center; gap:12px; padding-top:8px; }
.cb-card__cta .cb-button { width:100%; }
.cb-card__footer { display:flex; flex-direction:column; align-items:center; gap:8px; padding-top:18px; margin-top:4px; border-top:1px solid var(--cb-line); text-align:center; }
.cb-card__footer p { margin:0; color:var(--cb-muted); font-size:11px; }
.cb-card__footer a { color:var(--cb-muted); font-size:11px; text-decoration:underline; text-underline-offset:2px; }
.cb-card__footer a:hover { color:var(--cb-ink); }
@media (min-width:640px) {
  .cb-card { padding-top:64px; }
  .cb-card__cta { flex-direction:row; justify-content:center; }
  .cb-card__cta .cb-button { width:auto; padding:0 26px; }
}

/* Legal/policy prose (/privacy). */
.cb-legal { max-width:760px; margin:0 auto; padding:0 8vw 120px; color:var(--cb-ink); font-family:var(--cb-font); }
.cb-legal h2 { margin:48px 0 14px; font-size:20px; font-weight:500; letter-spacing:-.01em; }
.cb-legal h2:first-child { margin-top:0; }
.cb-legal__version { margin:0 0 32px; padding-bottom:14px; border-bottom:1px solid var(--cb-line); color:var(--cb-muted); font-size:12px; letter-spacing:.04em; text-transform:uppercase; }
.cb-legal__preview-note { padding:18px 20px; border:1px solid var(--cb-line); border-radius:12px; background:var(--cb-surface-muted); color:var(--cb-ink); font-size:14px; line-height:1.6; }
.cb-legal p { margin:0 0 14px; color:var(--cb-muted); font-size:15px; line-height:1.65; }
.cb-legal ul { margin:0 0 14px; padding-left:20px; color:var(--cb-muted); font-size:15px; line-height:1.65; }
.cb-legal li { margin-bottom:6px; }
.cb-legal table { width:100%; margin-bottom:14px; border-collapse:collapse; font-size:14px; }
.cb-legal th,.cb-legal td { padding:9px 12px 9px 0; border-bottom:1px solid var(--cb-line); text-align:left; color:var(--cb-muted); }
.cb-legal th { color:var(--cb-ink); font-weight:500; }
.cb-legal a { color:var(--cb-ink); }
@media (max-width:620px) { .cb-legal { padding:0 22px 80px; } .cb-legal table { font-size:13px; } }

/* HOME — editorial recomposition (hp-*). Chapters differ by composition, scale and type, not by colour bands. */
.concept-b-home {
  --hp-gutter:8vw; --hp-ink:#141718; --hp-muted:#4f575b; --hp-line:rgba(20,23,24,.16); --hp-paper:#f4f5f3;
  /* spacing system: chapter top / chapter bottom / heading-to-content */
  --hp-top:clamp(88px,8vw,132px); --hp-bottom:clamp(72px,6.4vw,104px); --hp-head-gap:clamp(40px,4.6vw,76px);
}
/* Link affordance without labels or icons: the linked title carries a permanent, restrained 1px underline;
   hover/focus darkens it and the row divider, and nudges the title a few pixels. Descriptions are never underlined. */
.hp-row,.hp-route { cursor:pointer; }
.hp-row h3,.hp-route h3 { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.14em; text-decoration-color:rgba(20,23,24,.28); transition:transform .25s ease, text-decoration-color .2s ease; }
.hp-row:hover h3,.hp-route:hover h3,.hp-row:focus-visible h3,.hp-route:focus-visible h3 { text-decoration-color:var(--hp-ink); }
/* pointer-capable devices: clean at rest, underline appears on hover/focus (touch keeps the permanent underline) */
@media (hover:hover) and (pointer:fine) {
  .hp-row h3,.hp-route h3 { text-decoration-color:transparent; }
  .hp-row:hover h3,.hp-route:hover h3,.hp-row:focus-visible h3,.hp-route:focus-visible h3 { text-decoration-color:var(--hp-ink); }
}
.hp-row:hover h3,.hp-route:hover h3 { transform:translateX(4px); }
.hp-row:hover,.hp-route:hover { border-bottom-color:var(--hp-ink); }
.hp-row:focus-visible,.hp-route:focus-visible { outline:2px solid var(--hp-ink); outline-offset:6px; }
.hp-projects h2,.hp-arch h2,.hp-index h2,.hp-process h2,.hp-practice h2 { margin:0; font-weight:500; letter-spacing:-.075em; line-height:.9; }

/* 1. Selected projects — image-led: the picture is the chapter, captioned like a monograph plate. */
.hp-projects { padding:var(--hp-top) 0 var(--hp-bottom); background:var(--hp-paper); overflow:hidden; }
.hp-projects__head { display:flex; justify-content:space-between; align-items:end; gap:30px; padding:0 var(--hp-gutter); margin-bottom:var(--hp-head-gap); }
.hp-projects__head h2 { font-size:clamp(52px,7.6vw,124px); }
.hp-projects .cb-demo-note { max-width:310px; color:var(--hp-muted); }
.hp-projects .cb-project-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:clamp(18px,2vw,32px); row-gap:clamp(56px,7vw,110px); padding:0 var(--hp-gutter); background:none; }
.hp-projects .cb-project-card { position:relative; display:block; grid-column:1 / -1; min-height:0; overflow:visible; background:none; color:var(--hp-ink); text-decoration:none; }
.hp-fig { position:relative; margin:0; overflow:hidden; background:#e6e9e8; }
.hp-fig img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .9s ease; }
.hp-projects .cb-project-card:hover .hp-fig img { transform:scale(1.02); }
.hp-fig__tag { position:absolute; top:14px; left:14px; padding:6px 9px; border-radius:9px; background:rgba(255,255,255,.9); font-size:9px; letter-spacing:.1em; }
.hp-cap { padding-top:18px; border-top:1px solid var(--hp-ink); }
.hp-cap__meta,.hp-projects .cb-project-card p.hp-cap__meta { margin:0; color:var(--hp-muted); font-size:10px; letter-spacing:.14em; text-transform:uppercase; }
.hp-cap h3 { margin:16px 0 14px; font-size:clamp(38px,4.6vw,76px); font-weight:500; letter-spacing:-.07em; line-height:.92; }
.hp-cap__text { margin:0 0 24px; max-width:320px; color:var(--hp-muted); font-size:15px; line-height:1.55; }
.hp-projects .cb-project-card .cb-text-link { display:inline-block; padding-bottom:7px; font-size:11px; font-weight:500; letter-spacing:.06em; }
.hp-detail { margin:0; }
.hp-detail img { display:block; width:100%; aspect-ratio:5/4; object-fit:cover; object-position:50% 42%; }
.hp-detail figcaption { margin-top:10px; color:var(--hp-muted); font-size:11px; letter-spacing:.04em; }
.hp-projects__all { padding:clamp(32px,3.4vw,52px) var(--hp-gutter) 0; }
/* lead project: image bleeds off the left edge, caption + detail crop in a narrow right column */
.hp-projects .cb-project-card[data-slot="1"] { display:grid; grid-template-columns:minmax(0,8fr) minmax(0,3.6fr); grid-template-rows:auto 1fr; column-gap:clamp(28px,3.4vw,64px); margin-left:calc(var(--hp-gutter) * -1); }
.hp-projects .cb-project-card[data-slot="1"] .hp-fig { grid-column:1; grid-row:1 / 3; aspect-ratio:1.3 / 1; }
.hp-projects .cb-project-card[data-slot="1"] .hp-cap { grid-column:2; grid-row:1; align-self:start; }
.hp-projects .cb-project-card[data-slot="1"] .hp-detail { grid-column:2; grid-row:2; align-self:end; margin-top:clamp(36px,4vw,64px); }
/* future rule: 2nd and 3rd projects step down in a staggered pair under the lead */
.hp-projects .cb-project-card[data-slot="2"] { grid-column:2 / 8; }
.hp-projects .cb-project-card[data-slot="3"] { grid-column:9 / 13; margin-top:clamp(56px,8vw,140px); }
.hp-projects .cb-project-card[data-slot="2"] .hp-fig { aspect-ratio:3 / 2; }
.hp-projects .cb-project-card[data-slot="3"] .hp-fig { aspect-ratio:4 / 5; }
.hp-projects .cb-project-card:not([data-slot="1"]) .hp-cap { margin-top:18px; }
.hp-projects .cb-project-card:not([data-slot="1"]) .hp-cap h3 { font-size:clamp(28px,3vw,46px); }

/* 2. Individual architecture — typography-led, one real drawing, routes as large type rows. */
.hp-arch { padding:var(--hp-top) var(--hp-gutter) var(--hp-bottom); background:var(--cb-paper); }
.hp-arch h2 { margin-top:22px; font-size:clamp(46px,6.8vw,112px); }
.hp-arch__body { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,6fr); column-gap:clamp(48px,8vw,140px); margin-top:var(--hp-head-gap); align-items:start; }
.hp-arch__body--text { grid-template-columns:minmax(0,4fr) minmax(0,7fr); }
.hp-arch__body--text .hp-arch__text { grid-column:2; }
.hp-arch__plan { margin:0; }
.hp-arch__plan img { display:block; width:100%; aspect-ratio:1 / .8; object-fit:cover; object-position:50% 8%; border:1px solid var(--hp-line); }
.hp-arch__plan figcaption { margin-top:12px; color:var(--hp-muted); font-size:11px; letter-spacing:.04em; }
.hp-arch__lead { max-width:520px; margin:0 0 clamp(40px,4vw,64px); color:var(--hp-muted); font-size:clamp(16px,1.35vw,19px); line-height:1.65; }
.hp-routes { border-top:1px solid var(--hp-ink); margin-bottom:34px; }
.hp-route { display:grid; grid-template-columns:minmax(0,1fr); align-items:start; padding:28px 0 30px; border-bottom:1px solid var(--hp-line); color:var(--hp-ink); text-decoration:none; transition:border-color .2s ease; }
.hp-route h3 { grid-column:1; margin:0; font-size:clamp(30px,3.3vw,54px); font-weight:500; letter-spacing:-.065em; line-height:.98; }
.hp-route p { grid-column:1; max-width:380px; margin:14px 0 0; color:var(--hp-muted); font-size:14px; line-height:1.55; }

/* 3. Complex solutions — editorial service index: anchor left, five large typographic rows right. */
.hp-index { position:relative; display:grid; grid-template-columns:minmax(0,4.4fr) minmax(0,7.6fr); column-gap:clamp(48px,8vw,140px); padding:var(--hp-top) var(--hp-gutter) var(--hp-bottom); background:var(--cb-paper); }
.hp-index::before { content:""; position:absolute; top:0; left:var(--hp-gutter); right:var(--hp-gutter); height:1px; background:var(--hp-line); }
.hp-index__anchor { align-self:start; position:sticky; top:clamp(32px,7vh,96px); }
.hp-index h2 { margin-top:22px; font-size:clamp(38px,4.6vw,76px); }
.hp-index__list { border-top:1px solid var(--hp-ink); }
.hp-row { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); align-items:center; gap:clamp(20px,2.4vw,36px); padding:clamp(24px,2.8vw,42px) 0; border-bottom:1px solid var(--hp-line); color:var(--hp-ink); text-decoration:none; transition:border-color .2s ease; }
.hp-row h3 { margin:0; font-size:clamp(34px,4.4vw,72px); font-weight:500; letter-spacing:-.07em; line-height:.94; }
.hp-row p { margin:0; max-width:280px; color:var(--hp-muted); font-size:14px; line-height:1.55; }
.hp-index__note { display:grid; grid-template-columns:minmax(150px,.5fr) minmax(0,1fr); gap:clamp(24px,3vw,48px); padding:32px 0 34px; }
.hp-index__note p { margin:0; color:var(--hp-muted); font-size:14px; line-height:1.6; max-width:460px; }
.hp-index__note .cb-kicker { color:var(--hp-muted); }

/* 4. Architecture — core of the project: staggered editorial sequence, numerals as the typographic device. */
.hp-process { padding:var(--hp-top) var(--hp-gutter) var(--hp-bottom); background:var(--hp-paper); }
.hp-process h2 { margin-top:22px; font-size:clamp(44px,5.8vw,92px); }
.hp-process__list { margin:var(--hp-head-gap) 0 0; }
/* Shared 01/02/03 step ladder (HOME "Архитектура — ядро проекта", About "Логика проекта"): three columns,
   thin oversized numerals, 02/03 stepping down, a rule above each title. Section spacing stays page-specific. */
.cb-step-ladder { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:clamp(28px,4.4vw,80px); padding:0; list-style:none; }
.cb-step-ladder li:nth-child(2) { margin-top:clamp(24px,3vw,48px); }
.cb-step-ladder li:nth-child(3) { margin-top:clamp(48px,6vw,96px); }
.cb-step-ladder li > span:first-child { display:block; font-size:clamp(64px,7.6vw,116px); font-weight:200; letter-spacing:-.08em; line-height:.8; }
.cb-step-ladder h3 { margin:clamp(20px,2vw,30px) 0 0; padding-top:18px; border-top:1px solid var(--hp-ink,#141718); font-size:clamp(20px,1.9vw,28px); font-weight:500; letter-spacing:-.045em; }
.cb-step-ladder p { max-width:340px; margin:12px 0 0; color:var(--hp-muted,#4f575b); font-size:15px; line-height:1.6; }

/* 5. About / practice — quiet studio chapter: real office photograph beside a large quiet statement. */
.hp-practice { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); column-gap:clamp(48px,7vw,120px); align-items:stretch; padding:var(--hp-top) var(--hp-gutter) var(--hp-bottom); background:var(--cb-paper); }
.hp-practice__img { position:relative; margin:0; align-self:start; min-height:0; }
/* square picture in the left column, its top edge on the top line of the text block (the kicker) */
.hp-practice__img::before { content:""; display:block; padding-top:100%; }
.hp-practice__img img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:cover; object-position:42% 50%; }
.hp-practice h2 { margin-top:18px; font-size:clamp(38px,4.8vw,78px); }
.hp-practice__copy > p:not(.cb-kicker) { max-width:440px; margin:clamp(28px,3vw,44px) 0 30px; color:var(--hp-muted); font-size:16px; line-height:1.7; }

@media (max-width:900px) {
  .concept-b-home { --hp-top:clamp(72px,11vw,96px); --hp-bottom:clamp(56px,8vw,72px); --hp-head-gap:36px; }
  .hp-projects__head { display:block; }
  .hp-projects .cb-demo-note { margin-top:22px; }
  .hp-projects .cb-project-grid { display:block; padding:0 22px; }
  .hp-projects .cb-project-card { margin-bottom:48px; }
  .hp-projects .cb-project-card[data-slot="1"] { display:block; margin-left:-22px; margin-right:-22px; }
  .hp-projects .cb-project-card[data-slot="1"] .hp-fig { aspect-ratio:4 / 3.4; }
  .hp-projects .cb-project-card[data-slot="1"] .hp-cap,.hp-projects .cb-project-card[data-slot="1"] .hp-detail { margin-left:22px; margin-right:22px; }
  .hp-projects .cb-project-card[data-slot="1"] .hp-cap { margin-top:24px; }
  .hp-projects .cb-project-card[data-slot="1"] .hp-detail { margin-top:36px; }
  .hp-projects .cb-project-card[data-slot="3"] { margin-top:0; }
  .hp-projects__all { padding:0 22px; }
  .hp-arch,.hp-index,.hp-process,.hp-practice,.hp-projects__head { padding-left:22px; padding-right:22px; }
  .hp-arch__body,.hp-arch__body--text,.hp-index,.hp-practice { display:block; }
  .hp-arch__plan { margin-bottom:44px; }
  .hp-index::before { left:22px; right:22px; }
  .hp-index__anchor { position:static; margin-bottom:48px; }
  .hp-row { grid-template-columns:minmax(0,1fr); row-gap:10px; padding:22px 0; }
  .hp-row p { max-width:none; }
  .hp-row h3,.hp-route h3 { transition:none; }
  .hp-row:hover h3,.hp-route:hover h3 { transform:none; }
  .hp-index__note { grid-template-columns:1fr; gap:10px; }
  .cb-step-ladder { display:block; }
  .cb-step-ladder li,.cb-step-ladder li:nth-child(2),.cb-step-ladder li:nth-child(3) { margin-top:0; margin-bottom:36px; }
  .cb-step-ladder li > span:first-child { font-size:64px; }
  .hp-practice__img { margin:0 0 32px; }
  .hp-practice__img::before { padding-top:100%; }
}
@media (prefers-reduced-motion:reduce) { .hp-row h3,.hp-route h3,.hp-fig img { transition:none; } .hp-projects .cb-project-card:hover .hp-fig img,.hp-row:hover h3,.hp-route:hover h3 { transform:none; } }
.hp-projects .cb-project-card p.hp-cap__text { margin:0 0 26px; color:var(--hp-muted); font-size:15px; letter-spacing:0; text-transform:none; }
.hp-projects .cb-project-card[data-slot="1"] .hp-fig { aspect-ratio:1.2 / 1; }

/* PROJECTS — split-frame portfolio (pf-*): one leading frame + an index of projects. */
.pf { --pf-ink:#141718; --pf-muted:#687176; --pf-line:rgba(20,23,24,.16); display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); column-gap:clamp(40px,5vw,96px); align-items:start; padding:0 8vw clamp(96px,9vw,135px) 0; }
.pf__stage { position:sticky; top:clamp(24px,5vh,64px); height:min(78vh,50vw); min-height:420px; }
.pf__frame { position:absolute; inset:0 0 34px; overflow:hidden; background:#e6e9e8; opacity:0; visibility:hidden; transition:opacity .6s ease, visibility 0s linear .6s; }
.pf__frame.is-active { opacity:1; visibility:visible; transition:opacity .6s ease, visibility 0s; }
.pf__frame img { display:block; width:100%; height:100%; object-fit:cover; scale:1.025; transition:scale 1.4s cubic-bezier(.2,.7,.2,1); }
.pf__frame.is-active img { scale:1; }
.pf__tag { position:absolute; top:14px; left:14px; padding:6px 9px; border-radius:9px; background:rgba(255,255,255,.9); color:var(--pf-ink); font-size:9px; letter-spacing:.1em; }
.pf__counter { position:absolute; left:8vw; bottom:0; margin:0; color:var(--pf-muted); font-size:11px; letter-spacing:.12em; font-variant-numeric:tabular-nums; }
.pf__counter span { color:var(--pf-ink); }
.pf__list { margin:0; padding:0; list-style:none; border-top:1px solid var(--pf-ink); }
.pf__item { display:grid; grid-template-columns:3.2em minmax(0,1fr); column-gap:clamp(12px,1.4vw,22px); padding:clamp(26px,2.6vw,40px) 0 clamp(24px,2.4vw,36px); border-bottom:1px solid var(--pf-line); color:var(--pf-ink); text-decoration:none; transition:border-color .3s ease; }
.pf__thumb { display:none; }
.pf__num { grid-row:1; padding-top:.55em; color:var(--pf-muted); font-size:11px; letter-spacing:.1em; font-variant-numeric:tabular-nums; }
.pf__title { grid-column:2; margin:0; font-size:clamp(32px,3.5vw,58px); font-weight:500; letter-spacing:-.065em; line-height:.96; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.14em; text-decoration-color:transparent; transition:color .35s ease, text-decoration-color .35s ease, translate .35s ease; }
.pf__meta { grid-column:2; margin:16px 0 0; color:var(--pf-muted); font-size:10px; letter-spacing:.14em; text-transform:uppercase; }
.pf__text { grid-column:2; max-width:340px; margin:10px 0 0; color:var(--pf-muted); font-size:14px; line-height:1.55; }
/* contrast shift: the row that drives the frame is ink, the others step back (still AA-legible) */
.pf__item:not(.is-active) .pf__title { color:var(--pf-muted); }
.pf__item.is-active { border-bottom-color:var(--pf-ink); }
.pf__item:hover .pf__title,.pf__item:focus-visible .pf__title { text-decoration-color:currentColor; translate:6px 0; }
.pf__item:focus-visible { outline:2px solid var(--pf-ink); outline-offset:6px; }
@media (max-width:900px) {
  .pf { display:block; padding:0 22px 88px; }
  .pf__stage { display:none; }
  .pf__list { border-top:0; }
  .pf__item { display:block; padding:0 0 30px; margin-bottom:44px; }
  .pf__num { display:block; padding-top:0; margin-bottom:12px; }
  .pf__item:not(.is-active) .pf__title { color:var(--pf-ink); }
  .pf__item.is-active { border-bottom-color:var(--pf-line); }
  .pf__thumb { position:relative; display:block; grid-column:1 / -1; margin:0 -22px 22px; overflow:hidden; aspect-ratio:4 / 3; background:#e6e9e8; }
  .pf__thumb img { display:block; width:100%; height:100%; object-fit:cover; }
  .pf__thumb .pf__tag { left:22px; }
  .pf__title { font-size:clamp(30px,8.4vw,42px); text-decoration-color:rgba(20,23,24,.28); }
  .pf__item:hover .pf__title { translate:none; }
}

/* MOTION — quiet scroll reveal, line drawing and media drift (enabled by concept-b.js only when motion is allowed). */
@media (prefers-reduced-motion:no-preference) {
  .rv { opacity:0; translate:0 18px; transition:opacity .9s cubic-bezier(.2,.7,.2,1) var(--rv-delay,0ms), translate .9s cubic-bezier(.2,.7,.2,1) var(--rv-delay,0ms); }
  .rv.rv-in { opacity:1; translate:none; }
  .rv-line { border-top-color:transparent !important; background:linear-gradient(var(--hp-ink,#141718),var(--hp-ink,#141718)) no-repeat 0 0 / 0 1px; background-origin:border-box; transition:background-size 1.2s cubic-bezier(.6,0,.2,1) calc(var(--rv-delay,0ms) + 120ms); }
  .rv-line.rv-in,.rv-in .rv-line { background-size:100% 1px; }
  .rv-drift { will-change:translate; }
  .pf__item.rv { transition:opacity .9s cubic-bezier(.2,.7,.2,1) var(--rv-delay,0ms), translate .9s cubic-bezier(.2,.7,.2,1) var(--rv-delay,0ms), border-color .3s ease; }
}
.hp-detail { overflow:hidden; }
@media (prefers-reduced-motion:reduce) { .pf__frame,.pf__frame img,.pf__title { transition:none; } .pf__item:hover .pf__title,.pf__item:focus-visible .pf__title { translate:none; } }

/* INTERACTION — quiet, legible affordances. */
@media (hover:hover) and (pointer:fine) {
  .cb-text-link:hover::after,.cb-text-link:focus-visible::after,[data-cta-host]:hover .cb-text-link::after,[data-cta-host]:focus-visible .cb-text-link::after,.cb-home-hero .cb-actions .cb-button--ghost:hover::after,.cb-home-hero .cb-actions .cb-button--ghost:focus-visible::after { animation:cb-redraw .7s cubic-bezier(.6,0,.2,1); }
  .cb-global-nav .cb-nav-trigger { position:relative; }
  .cb-global-nav .cb-nav-trigger::after { content:""; position:absolute; left:0; right:0; bottom:12px; height:1px; background:currentColor; transform:scaleX(0); transform-origin:right; transition:transform .45s cubic-bezier(.6,0,.2,1); }
  .cb-global-nav .cb-nav-trigger:hover::after,.cb-global-nav .cb-nav-trigger[aria-expanded="true"]::after,.cb-global-nav .cb-nav-trigger[aria-current="page"]::after { transform:scaleX(1); transform-origin:left; }
  .cb-global-nav .cb-nav-trigger[aria-current="page"] { opacity:1; }
}
/* Hero secondary CTA: same geometry as before (1px border-bottom line), now drawn by ::after so it can reuse cb-redraw. */
.cb-home-hero .cb-actions .cb-button--ghost { position:relative; border-bottom-color:transparent; }
.cb-home-hero .cb-actions .cb-button--ghost::after { content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px; background:currentColor; transform-origin:left; }
@keyframes cb-redraw { 0% { transform:scaleX(1); transform-origin:right; } 45% { transform:scaleX(0); transform-origin:right; } 46% { transform:scaleX(0); transform-origin:left; } 100% { transform:scaleX(1); transform-origin:left; } }
.pf__item:active,.hp-row:active,.hp-route:active,.hp-projects .cb-project-card:active { opacity:.72; transition:opacity .1s; }
.cb-text-link:focus-visible,.hp-projects .cb-project-card:focus-visible { outline:2px solid currentColor; outline-offset:6px; }
/* section-to-section navigation: a short cross-fade where the browser supports cross-document view transitions */
@view-transition { navigation:auto; }
::view-transition-old(root),::view-transition-new(root) { animation-duration:.26s; animation-timing-function:ease; }
@media (prefers-reduced-motion:reduce) {
  @view-transition { navigation:none; }
  .cb-text-link:hover::after,.cb-text-link:focus-visible::after,[data-cta-host]:hover .cb-text-link::after,[data-cta-host]:focus-visible .cb-text-link::after,.cb-home-hero .cb-actions .cb-button--ghost:hover::after,.cb-home-hero .cb-actions .cb-button--ghost:focus-visible::after { animation:none; }
  .cb-global-nav .cb-nav-trigger::after { transition:none; }
}
/* /projects intro: title and note share one band so the split frame starts closer to the first screen */
@media (min-width:901px) {
  .cb-page-hero--compact:has(+ .pf) { display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); column-gap:clamp(40px,5vw,96px); align-items:end; padding-bottom:clamp(48px,5vw,72px); }
  .cb-page-hero--compact:has(+ .pf) > .cb-kicker { grid-column:1; }
  .cb-page-hero--compact:has(+ .pf) > h1 { grid-column:1; grid-row:2 / span 2; }
  .cb-page-hero--compact:has(+ .pf) > p:not(.cb-kicker) { grid-column:2; grid-row:2; align-self:end; max-width:420px; margin:0; color:var(--cb-muted); font-size:15px; line-height:1.6; }
  .cb-page-hero--compact:has(+ .pf) > p:not(.cb-kicker) + p:not(.cb-kicker) { grid-row:3; margin-top:12px; }
}
/* static-preview note inside the contact form: sized by the form, not by the page-level flash width */
.cb-contact-form .cb-flash { grid-column:1 / -1; width:auto; max-width:100%; margin:0 0 18px; box-sizing:border-box; }

/* When Web Animations drive the split-frame change and the story counter (concept-b.js), the CSS transitions for the
   same properties step aside; without JS / WAAPI / with reduced motion the plain CSS states below still apply. */
.pf.is-waapi .pf__frame,.pf.is-waapi .pf__frame img { transition:none; }
.pf.is-waapi .pf__frame img { scale:none; }
/* the incoming frame rises from the neutral image surface, never from the white page */
.pf.is-waapi .pf__stage::before { content:""; position:absolute; inset:0 0 34px; background:#e6e9e8; }
.cs-story__status.is-waapi [data-story-index] { display:inline-block; }
/* Split-frame refinement: schematic DEMO covers are presented as a small plate, never edge-to-edge. */
.pf__frame--schematic { display:grid; place-items:center; background:#eef0ef; }
.pf__frame--schematic img { width:min(44%,440px); height:auto; max-height:58%; object-fit:contain; box-shadow:0 0 0 1px var(--pf-line); }
.pf__plate { position:absolute; left:8vw; bottom:28px; right:28px; color:var(--pf-muted); font-size:10px; letter-spacing:.14em; text-transform:uppercase; }
@media (max-width:900px) {
  .cb-page-hero--compact:has(+ .pf) { padding-top:36px; padding-bottom:40px; }
  .cb-page-hero--compact:has(+ .pf) h1 { margin-top:12px; }
  .cb-page-hero--compact:has(+ .pf) > p:not(.cb-kicker) { margin-top:14px; font-size:15px; line-height:1.55; }
  .pf__item { padding-bottom:22px; margin-bottom:34px; }
  .pf__thumb { margin-bottom:16px; }
  .pf__num { margin-bottom:8px; }
  .pf__meta { margin-top:12px; }
  .pf__text { margin-top:8px; }
  .pf__tag { top:12px; left:12px; padding:5px 7px; border-radius:7px; font-size:8px; }
  .pf__thumb .pf__tag { left:16px; }
  .pf__thumb--schematic { display:grid; place-items:center; aspect-ratio:2 / 1; background:#eef0ef; }
  .pf__thumb--schematic img { position:absolute; inset:0; width:auto; max-width:78%; height:72%; margin:auto; object-fit:contain; box-shadow:0 0 0 1px var(--pf-line); }
  .pf { padding-bottom:48px; }
  .pf__list > li:last-child .pf__item { margin-bottom:0; }
}

/* PROJECT CASE STUDY (cs-*) — real projects read as an architectural monograph: statement, plate, one sticky story, plan. */
/* overflow:clip keeps the horizontal clipping of .cb-project-detail but, unlike hidden, does not create a scroll
   container — otherwise the story rail could never stick. */
[data-case-study] { overflow:clip; --cs-ink:#141718; --cs-muted:#5d666a; --cs-line:rgba(20,23,24,.16); --cs-paper:#f4f5f3; }
.cs-hero,.cs-hero .cb-case-hero__content { min-height:min(900px,90svh); }
.cs-intro { display:grid; grid-template-columns:minmax(0,7.4fr) minmax(0,4fr); column-gap:clamp(48px,7vw,128px); align-items:start; padding:clamp(88px,9vw,140px) 8vw clamp(80px,8vw,124px); }
.cs-intro .cb-kicker,.cs-story .cb-kicker,.cs-plan .cb-kicker { margin:0; }
.cs-intro__lead { max-width:880px; margin:26px 0 0; color:var(--cs-ink); font-size:clamp(26px,2.55vw,40px); font-weight:400; letter-spacing:-.035em; line-height:1.24; }
.cs-intro__meta { margin:4px 0 0; border-top:1px solid var(--cs-ink); }
.cs-intro__meta > div { display:grid; grid-template-columns:7.5em minmax(0,1fr); gap:16px; padding:17px 0 18px; border-bottom:1px solid var(--cs-line); }
.cs-intro__meta dt { color:var(--cs-muted); font-size:10px; letter-spacing:.14em; text-transform:uppercase; padding-top:3px; }
.cs-intro__meta dd { margin:0; color:var(--cs-ink); font-size:15px; line-height:1.5; }
[data-case-study] button[data-project-lightbox-open]:not(.cb-case-hero__media) { display:block; width:100%; padding:0; border:0; background:none; cursor:zoom-in; overflow:hidden; }
[data-case-study] button[data-project-lightbox-open]:focus-visible { outline:2px solid var(--cs-ink); outline-offset:4px; }
.cs-plate { margin:0 0 0 8vw; padding:0 0 clamp(96px,10vw,160px); }
.cs-plate img { display:block; width:100%; height:auto; aspect-ratio:3 / 2; object-fit:cover; }
.cs-plate figcaption,.cs-story__step figcaption { display:flex; gap:14px; margin-top:14px; color:var(--cs-muted); font-size:12px; letter-spacing:.02em; }
.cs-plate figcaption { padding-right:8vw; }
.cs-story { display:grid; grid-template-columns:minmax(0,4fr) minmax(0,7.2fr); column-gap:clamp(48px,6vw,112px); padding:clamp(96px,9vw,150px) 8vw clamp(96px,9vw,150px); border-top:1px solid var(--cs-line); }
.cs-story__rail { position:relative; }
.cs-story__sticky { position:sticky; top:clamp(40px,12vh,120px); padding-bottom:24px; }
.cs-story__idea { max-width:420px; margin:22px 0 0; color:var(--cs-ink); font-size:clamp(22px,1.9vw,30px); letter-spacing:-.03em; line-height:1.28; }
.cs-story__label { margin-top:clamp(36px,4vw,56px) !important; }
.cs-story__context { max-width:380px; margin:14px 0 0; color:var(--cs-muted); font-size:15px; line-height:1.65; }
.cs-story__status { display:grid; gap:10px; max-width:340px; margin:clamp(40px,6vh,72px) 0 0; padding-top:16px; border-top:1px solid var(--cs-ink); color:var(--cs-muted); font-size:12px; line-height:1.5; }
.cs-story__count { font-size:11px; letter-spacing:.14em; font-variant-numeric:tabular-nums; }
.cs-story__count b { color:var(--cs-ink); font-weight:500; }
.cs-story__media { display:grid; gap:clamp(96px,16vh,180px); margin:0; padding:0; list-style:none; }
.cs-story__media li:nth-child(even) { padding-left:clamp(40px,8vw,140px); }
.cs-story__step { margin:0; }
.cs-story__step img { display:block; width:100%; height:auto; aspect-ratio:3 / 2; object-fit:cover; }
.cs-story__step figcaption span,.cs-plate figcaption span { color:var(--cs-ink); font-variant-numeric:tabular-nums; }
.cs-plan { display:grid; grid-template-columns:minmax(0,4fr) minmax(0,7.2fr); column-gap:clamp(48px,6vw,112px); align-items:end; padding:clamp(96px,9vw,150px) 8vw; background:var(--cs-paper); }
.cs-plan h2 { margin:20px 0 0; font-size:clamp(44px,5vw,80px); font-weight:500; letter-spacing:-.075em; line-height:.9; }
.cs-plan__text p:not(.cb-kicker) { max-width:320px; margin:22px 0 0; color:var(--cs-muted); font-size:14px; line-height:1.6; }
.cs-plan__figure { margin:0; background:#fff; border:1px solid var(--cs-line); }
.cs-plan__figure img { display:block; width:100%; height:auto; max-height:min(84vh,900px); object-fit:contain; }
[data-case-study] .cb-project-close { padding-top:clamp(88px,9vw,140px); }
@media (prefers-reduced-motion:no-preference) {
  .cs-hero .cb-case-hero__media img { animation:cs-settle 1.8s cubic-bezier(.2,.7,.2,1) both; }
  .rv .cs-zoom,.rv.cs-zoom { transition:scale 1.4s cubic-bezier(.2,.7,.2,1) var(--rv-delay,0ms); }
  .rv:not(.rv-in) .cs-zoom { scale:1.02; }
}
@keyframes cs-settle { from { transform:scale(1.03); } to { transform:scale(1.01); } }
@media (max-width:900px) {
  .cs-hero,.cs-hero .cb-case-hero__content { min-height:min(640px,78svh); }
  .cs-intro { display:block; padding:56px 22px 48px; }
  .cs-intro__lead { margin-top:18px; font-size:22px; line-height:1.34; }
  .cs-intro__meta { margin-top:32px; }
  .cs-intro__meta > div { grid-template-columns:6.5em minmax(0,1fr); padding:14px 0; }
  .cs-plate { margin:0; padding:0 0 56px; }
  .cs-plate figcaption { padding:0 22px; }
  .cs-story { display:block; padding:56px 22px; }
  .cs-story__sticky { position:static; padding:0; }
  .cs-story__idea { font-size:21px; }
  .cs-story__status { display:none; }
  .cs-story__media { gap:40px; margin:48px -22px 0; }
  .cs-story__media li:nth-child(even) { padding-left:0; }
  .cs-story__step figcaption { padding:0 22px; }
  .cs-plan { display:block; padding:56px 22px 64px; }
  .cs-plan h2 { font-size:clamp(40px,11vw,56px); }
  .cs-plan__figure { margin:32px -22px 0; border-left:0; border-right:0; }
  [data-case-study] .cb-project-close { padding-top:64px; }
}

/* SERVICES — editorial service family (sv-*). Same type, rules, spacing and motion as HOME / projects / About;
   composition follows the content: a brief with one sticky rail, a numbered scope index, a process list. */
.sv { --sv-ink:#141718; --sv-muted:#5d666a; --sv-line:rgba(20,23,24,.16); --sv-paper:#f4f5f3; --sv-top:clamp(88px,8vw,132px); --sv-bottom:clamp(72px,6.4vw,104px); }
.sv-brief,.sv-aside,.sv-scope,.sv-steps,.sv-related { display:grid; grid-template-columns:minmax(0,4.4fr) minmax(0,7.6fr); column-gap:clamp(48px,8vw,140px); padding:var(--sv-top) 8vw var(--sv-bottom); }
.sv h2 { margin:20px 0 0; font-size:clamp(38px,4.4vw,72px); font-weight:500; letter-spacing:-.07em; line-height:.92; }
.sv .cb-kicker { margin:0; }
/* brief: the one sticky rail on a service page, released inside its own section */
.sv-brief__rail { align-self:start; position:sticky; top:clamp(32px,7vh,96px); }
.sv-brief__rail h2 { font-size:clamp(34px,3.4vw,54px); }
.sv-brief__meta { display:grid; gap:6px; max-width:320px; margin:26px 0 0; padding-top:16px; border-top:1px solid var(--sv-line); color:var(--sv-ink); font-size:15px; line-height:1.45; }
.sv-brief__meta span { color:var(--sv-muted); font-size:10px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; }
/* process heading is a quieter chapter title than "Состав работ" */
.sv-steps__head h2 { font-size:clamp(32px,3.2vw,50px); }
.sv-brief__items { margin:0; border-top:1px solid var(--sv-ink); }
.sv-brief__item { display:grid; grid-template-columns:minmax(120px,.34fr) minmax(0,1fr); gap:clamp(20px,2.4vw,40px); padding:clamp(26px,2.6vw,38px) 0; border-bottom:1px solid var(--sv-line); }
.sv-brief__item dt { padding-top:.45em; color:var(--sv-muted); font-size:10px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; }
.sv-brief__item dd { max-width:600px; margin:0; color:var(--sv-ink); font-size:clamp(18px,1.55vw,23px); letter-spacing:-.02em; line-height:1.45; }
.sv-brief--quiet { display:block; padding-bottom:clamp(40px,4vw,64px); }
.sv-brief--quiet p:not(.cb-kicker) { max-width:520px; margin:16px 0 0; color:var(--sv-muted); font-size:16px; line-height:1.65; }
/* aside: a factual secondary note, typographically quiet */
.sv-aside { align-items:end; padding-top:0; }
.sv-aside > .cb-kicker,.sv-aside > h2 { grid-column:1; }
.sv-aside > h2 { font-size:clamp(32px,3.4vw,54px); }
.sv-aside > p:not(.cb-kicker) { grid-column:2; grid-row:1 / span 2; align-self:end; max-width:600px; margin:0; padding-top:28px; border-top:1px solid var(--sv-line); color:var(--sv-muted); font-size:16px; line-height:1.7; }
/* scope: numbered editorial index on the neutral surface (dark is reserved for the closing CTA) */
.sv-scope { background:var(--sv-paper); }
.sv-scope__list { margin:0; padding:0; list-style:none; border-top:1px solid var(--sv-ink); }
.sv-scope__list li { display:grid; grid-template-columns:3.4em minmax(0,1fr); gap:clamp(12px,1.6vw,24px); padding:clamp(22px,2.2vw,30px) 0; border-bottom:1px solid var(--sv-line); }
.sv-scope__list span { padding-top:.5em; color:var(--sv-muted); font-size:11px; letter-spacing:.1em; font-variant-numeric:tabular-nums; }
.sv-scope__list p { max-width:640px; margin:0; color:var(--sv-ink); font-size:clamp(18px,1.5vw,22px); letter-spacing:-.02em; line-height:1.42; }
.sv--technical .sv-scope__list li { padding:clamp(18px,1.8vw,24px) 0; }
.sv--technical .sv-scope__list p { font-size:clamp(17px,1.3vw,19px); line-height:1.5; }
.sv-scope--quiet { padding-bottom:clamp(56px,5vw,80px); }
.sv-scope__empty { align-self:end; max-width:460px; margin:0; padding-top:20px; border-top:1px solid var(--sv-line); color:var(--sv-muted); font-size:16px; line-height:1.6; }
/* process: an instruction list — related to the step ladder (thin numerals, rules) but not a staircase */
.sv-steps__list { margin:0; padding:0; list-style:none; border-top:1px solid var(--sv-ink); }
.sv-steps__list li { display:grid; grid-template-columns:clamp(64px,6vw,96px) minmax(0,1fr); gap:clamp(16px,2vw,32px); align-items:baseline; padding:clamp(22px,2.4vw,32px) 0; border-bottom:1px solid var(--sv-line); }
.sv-steps__list span { font-size:clamp(34px,3.2vw,50px); font-weight:200; letter-spacing:-.07em; line-height:.9; font-variant-numeric:tabular-nums; }
.sv-steps__list p { max-width:560px; margin:0; color:var(--sv-ink); font-size:clamp(17px,1.4vw,20px); letter-spacing:-.015em; line-height:1.45; }
.sv-steps__note { max-width:560px; margin:28px 0 0 calc(clamp(64px,6vw,96px) + clamp(16px,2vw,32px)); color:var(--sv-muted); font-size:14px; line-height:1.6; }
/* related projects: real covers large, schematic DEMO covers as a small plate; DEMO only when the project is DEMO */
.sv-related { border-top:1px solid var(--sv-line); }
.sv-related__head { grid-column:1; }
.sv-related__list { display:grid; grid-template-columns:repeat(auto-fit,minmax(0,1fr)); grid-auto-flow:column; gap:clamp(18px,2vw,32px); }
.sv-related__item { color:var(--sv-ink); text-decoration:none; }
.sv-related__media { position:relative; margin:0 0 16px; overflow:hidden; aspect-ratio:4 / 3; background:#e6e9e8; }
.sv-related__media img { display:block; width:100%; height:100%; object-fit:cover; transition:scale .9s ease; }
.sv-related__media--schematic { display:grid; place-items:center; background:#eef0ef; }
.sv-related__media--schematic img { width:58%; height:auto; object-fit:contain; box-shadow:0 0 0 1px var(--sv-line); }
.sv-related__media span { position:absolute; top:12px; left:12px; padding:5px 8px; border-radius:8px; background:rgba(255,255,255,.9); font-size:9px; letter-spacing:.1em; }
.sv-related__item p { margin:0; color:var(--sv-muted); font-size:10px; letter-spacing:.14em; text-transform:uppercase; }
.sv-related__item h3 { margin:10px 0 0; font-size:clamp(22px,2vw,30px); font-weight:500; letter-spacing:-.05em; line-height:1; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.16em; text-decoration-color:rgba(20,23,24,.28); transition:text-decoration-color .25s ease; }
.sv-related__item:hover .sv-related__media:not(.sv-related__media--schematic) img { scale:1.02; }
.sv-related__item:focus-visible { outline:2px solid var(--sv-ink); outline-offset:6px; }
@media (hover:hover) and (pointer:fine) {
  .sv-related__item h3 { text-decoration-color:transparent; }
  .sv-related__item:hover h3,.sv-related__item:focus-visible h3 { text-decoration-color:currentColor; }
}
/* geodesy documents: same rules/rhythm as the rest of the family */
.sv .cb-geodesy-documents,.sv + .cb-geodesy-documents { padding:var(--sv-top) 8vw var(--sv-bottom); border-top:0; }
.cb-geodesy-documents__group { border-top-color:var(--cb-ink); }
.cb-geodesy-documents__preview { padding:12px; background:#fff; transition:border-color .25s ease; }
.cb-geodesy-documents__dossier:hover .cb-geodesy-documents__preview { border-color:rgba(20,23,24,.4); }
.cb-geodesy-documents__index a > span:first-child { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; text-decoration-color:rgba(20,23,24,.28); transition:text-decoration-color .25s ease; }
@media (hover:hover) and (pointer:fine) {
  .cb-geodesy-documents__index a > span:first-child { text-decoration-color:transparent; }
  .cb-geodesy-documents__index a:hover > span:first-child,.cb-geodesy-documents__index a:focus-visible > span:first-child { text-decoration-color:currentColor; }
}

/* SERVICES CATALOGUE — one surface, thin rules, editorial index rows (title | description) */
.cb-services-page .cb-service-group,.cb-services-page .cb-service-group:is([data-service-group="GEODESY"],[data-service-group="ENGINEERING"],[data-service-group="LANDSCAPE"]) { grid-template-columns:minmax(0,4.4fr) minmax(0,7.6fr); column-gap:clamp(48px,8vw,140px); padding:clamp(48px,5vw,76px) 8vw; background:var(--cb-paper); }
.cb-services-page .cb-service-group + .cb-service-group,.cb-services-page .cb-service-block + .cb-service-block .cb-service-group:first-child { box-shadow:inset 0 1px 0 var(--cb-line); }
.cb-services-page .cb-service-group h2 { margin:0; font-size:clamp(38px,4.4vw,64px); letter-spacing:-.07em; line-height:.95; }
.cb-services-page .cb-service-list { border-top:1px solid var(--cb-ink); }
.cb-services-page .cb-service-list a { grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); align-items:baseline; gap:clamp(20px,2.4vw,36px); padding:clamp(22px,2.4vw,32px) 0; border-top:0; border-bottom:1px solid var(--cb-line); color:var(--cb-ink); transition:border-color .2s ease; }
.cb-services-page .cb-service-list a::before { content:none; }
.cb-services-page .cb-service-list a > div { display:contents; }
.cb-services-page .cb-service-list h3 { font-size:clamp(26px,2.6vw,40px); letter-spacing:-.06em; line-height:1; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.14em; text-decoration-color:rgba(20,23,24,.28); transition:transform .25s ease,text-decoration-color .2s ease; }
.cb-services-page .cb-service-list p { max-width:340px; }
.cb-services-page .cb-service-list a:hover { border-bottom-color:var(--cb-ink); }
.cb-services-page .cb-service-list a:hover h3,.cb-services-page .cb-service-list a:focus-visible h3 { color:var(--cb-ink); text-decoration-color:currentColor; transform:translateX(4px); }
@media (hover:hover) and (pointer:fine) { .cb-services-page .cb-service-list h3 { text-decoration-color:transparent; } }

@media (max-width:900px) {
  .sv { --sv-top:clamp(56px,10vw,80px); --sv-bottom:clamp(48px,8vw,64px); }
  .sv-brief,.sv-aside,.sv-scope,.sv-steps,.sv-related { display:block; padding-left:22px; padding-right:22px; }
  .sv h2 { font-size:clamp(34px,9vw,48px); }
  .sv-brief__rail { position:static; margin-bottom:32px; }
  .sv-brief__item { grid-template-columns:1fr; gap:10px; padding:22px 0; }
  .sv-brief__item dd { font-size:18px; }
  .sv-aside > p:not(.cb-kicker) { margin-top:24px; padding-top:20px; }
  .sv-scope__head,.sv-steps__head,.sv-related__head { margin-bottom:28px; }
  .sv-scope__list li { grid-template-columns:2.6em minmax(0,1fr); padding:18px 0; }
  .sv-scope__list p,.sv--technical .sv-scope__list p { font-size:17px; }
  .sv-scope__empty { margin-top:20px; }
  .sv-steps__list li { grid-template-columns:56px minmax(0,1fr); padding:20px 0; }
  .sv-steps__list span { font-size:34px; }
  .sv-steps__note { margin-left:0; }
  .sv-related__list { grid-auto-flow:row; grid-template-columns:1fr; gap:36px; }
  .sv-related__media--schematic { aspect-ratio:2 / 1; }
  .sv-related__media--schematic img { width:auto; height:72%; }
  .sv .cb-geodesy-documents,.sv + .cb-geodesy-documents { padding-left:22px; padding-right:22px; }
  .cb-services-page .cb-service-group,.cb-services-page .cb-service-group:is([data-service-group="GEODESY"],[data-service-group="ENGINEERING"],[data-service-group="LANDSCAPE"]) { display:block; padding:44px 22px; }
  .cb-services-page .cb-service-group h2 { margin-bottom:24px; font-size:clamp(32px,8.6vw,44px); }
  .cb-services-page .cb-service-list a { grid-template-columns:1fr; gap:8px; padding:20px 0; }
  .cb-services-page .cb-service-list h3 { font-size:clamp(24px,6.6vw,30px); }
  .cb-services-page .cb-service-list a:hover h3 { transform:none; }
}
@media (prefers-reduced-motion:reduce) { .sv-related__media img,.cb-services-page .cb-service-list h3 { transition:none; } .cb-services-page .cb-service-list a:hover h3 { transform:none; } }

/* CONTACTS — the closing chapter: asymmetric split, contact rows on thin rules, a quiet precise form (no box). */
.cb-contact-layout { grid-template-columns:minmax(0,5fr) minmax(0,7fr); column-gap:clamp(48px,8vw,140px); align-items:start; }
.cb-contact-rows { max-width:440px; margin:56px 0 0; border-top:1px solid var(--cb-ink); }
.cb-contact-rows > div { display:grid; grid-template-columns:6.5em minmax(0,1fr); gap:16px; padding:17px 0; border-bottom:1px solid var(--cb-line); }
.cb-contact-rows dt { padding-top:.5em; color:var(--cb-muted); font-size:10px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; }
.cb-contact-rows dd { margin:0; font-size:17px; line-height:1.45; }
.cb-contact-rows a,.cb-contact-legal .cb-address-link { color:var(--cb-ink); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; text-decoration-color:rgba(20,23,24,.3); transition:text-decoration-color .2s ease; }
.cb-contact-rows a:hover,.cb-contact-rows a:focus-visible { text-decoration-color:currentColor; }
.cb-contact-rows a:focus-visible { outline:2px solid var(--cb-ink); outline-offset:4px; }
@media (hover:hover) and (pointer:fine) { .cb-contact-rows a { text-decoration-color:transparent; } }
/* desktop: the whole answer — heading, address/phone/email and the short form — is on the first screen.
   Empty space goes first; the heading only steps down slightly. Mobile keeps the natural document flow. */
@media (min-width:901px) {
  .cb-contact-layout { padding-top:clamp(40px,6vh,64px); padding-bottom:clamp(56px,8vh,96px); }
  .cb-contact-layout h1 { margin-top:18px; font-size:clamp(56px,5.8vw,90px); }
  .cb-contact-layout > div > p:not(.cb-kicker) { margin-top:22px; }
  .cb-contact-rows { margin-top:36px; }
  .cb-contact-rows > div { padding:13px 0; }
}
/* form: shared by /contacts and /withdraw-consent */
.cb-contact-form { display:block; padding:28px 0 0; border-top:1px solid var(--cb-ink); background:none; }
.cb-contact-form > * + * { margin-top:28px; }
.cb-contact-form > .cb-kicker { margin:0; }
.cb-contact-form label { gap:10px; color:var(--cb-muted); font-size:12px; letter-spacing:.02em; }
.cb-contact-form input:not([type="checkbox"]),.cb-contact-form textarea,.cb-contact-form select { padding:12px 0; border-bottom:1px solid rgba(20,23,24,.3); font-size:16px; transition:border-color .2s ease,box-shadow .2s ease; }
.cb-contact-form input:not([type="checkbox"]):focus,.cb-contact-form textarea:focus,.cb-contact-form select:focus { border-bottom-color:var(--cb-ink); box-shadow:0 1px 0 var(--cb-ink); }
.cb-contact-form input:focus-visible,.cb-contact-form textarea:focus-visible,.cb-contact-form select:focus-visible { outline:none; }
.cb-contact-form input[type="file"] { padding:12px 0; color:var(--cb-muted); font-size:13px; cursor:pointer; }
/* native picker kept; only its button is restyled as a quiet underlined text control */
.cb-contact-form input[type="file"]::file-selector-button { margin-right:16px; padding:0 0 3px; border:0; border-bottom:1px solid rgba(20,23,24,.3); border-radius:0; background:none; color:var(--cb-ink); font:inherit; font-weight:500; letter-spacing:.02em; cursor:pointer; transition:border-color .2s ease; }
.cb-contact-form input[type="file"]::-webkit-file-upload-button { margin-right:16px; padding:0 0 3px; border:0; border-bottom:1px solid rgba(20,23,24,.3); border-radius:0; background:none; color:var(--cb-ink); font:inherit; font-weight:500; letter-spacing:.02em; cursor:pointer; }
.cb-contact-form input[type="file"]:hover::file-selector-button,.cb-contact-form input[type="file"]:focus-visible::file-selector-button { border-bottom-color:var(--cb-ink); }
/* the two core fields lead: darker labels, larger entry */
.cb-callback-primary { column-gap:clamp(18px,2.4vw,32px); row-gap:26px; }
.cb-callback-primary > label { color:var(--cb-ink); font-size:13px; font-weight:500; }
.cb-callback-primary > label input { font-size:clamp(18px,1.5vw,21px); }
.cb-contact-form .cb-contact-consent { display:flex; align-items:flex-start; gap:10px; color:var(--cb-muted); font-size:12px; font-weight:400; line-height:1.55; }
.cb-contact-form .cb-contact-consent input { margin-top:2px; }
.cb-contact-consent-links { margin-left:26px; }
/* optional details: a quiet editorial disclosure */
.cb-contact-form .cb-contact-details { padding-top:22px; border-top:1px solid var(--cb-line); }
.cb-contact-form .cb-contact-details summary { display:inline-flex; gap:10px; padding-bottom:6px; border-bottom:1px solid currentColor; color:var(--cb-ink); font-size:13px; font-weight:500; letter-spacing:.02em; list-style:none; }
.cb-contact-form .cb-contact-details summary::-webkit-details-marker { display:none; }
.cb-contact-form .cb-contact-details summary::after { content:"+"; color:var(--cb-muted); font-weight:400; }
.cb-contact-form .cb-contact-details[open] summary::after { content:"−"; }
.cb-contact-form .cb-contact-details summary:focus-visible { outline:2px solid var(--cb-ink); outline-offset:4px; }
.cb-contact-details__grid { gap:24px clamp(18px,2.4vw,32px); margin-top:28px; }
/* static-preview notice stays prominent: the form does not work on the preview */
.cb-contact-form .cb-flash,.cb-legal__preview-note { padding:16px 18px; border:0; border-left:2px solid var(--cb-ink); border-radius:0; background:#f4f5f3; color:var(--cb-ink); font-size:14px; line-height:1.6; }

/* DIGITAL CARD — compact editorial object: square plates, captions below, thin rules. */
.cb-card__work-item { aspect-ratio:auto; overflow:visible; border-radius:0; background:none; color:var(--cb-ink); }
.cb-card__work-item::after { content:none; }
.cb-card__work-media { position:relative; display:block; aspect-ratio:16 / 10; overflow:hidden; background:#e6e9e8; }
.cb-card__work-media img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.cb-card__work-item b { position:static; display:block; margin-top:12px; color:var(--cb-ink); font-size:20px; font-weight:500; letter-spacing:-.035em; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; text-decoration-color:rgba(20,23,24,.28); transition:text-decoration-color .2s ease; }
.cb-card__work-item:hover b,.cb-card__work-item:focus-visible b { text-decoration-color:currentColor; }
.cb-card__work-item:focus-visible { outline:2px solid var(--cb-ink); outline-offset:4px; }
.cb-card__work-tag { border-radius:7px; }
.cb-card__directions-list { border-top-color:var(--cb-ink); }
.cb-card__directions-list li { padding:11px 0; }

/* LEGAL — a reading system: aligned to the page grid, comfortable measure, quiet hierarchy, readable tables. */
.cb-legal { max-width:none; margin:0; padding:0 8vw clamp(88px,9vw,140px); }
.cb-legal > * { max-width:720px; }
.cb-legal .cb-legal__version { margin:0 0 28px; padding-bottom:0; border-bottom:0; color:var(--cb-muted); font-size:11px; letter-spacing:.12em; line-height:1.5; }
.cb-legal .cb-legal__version + h2 { margin-top:0; }
.cb-legal h2 { margin:44px 0 16px; padding-top:22px; border-top:1px solid var(--cb-line); font-size:clamp(19px,1.5vw,22px); font-weight:500; letter-spacing:-.02em; line-height:1.3; }
.cb-legal p,.cb-legal ul { color:#3d4549; font-size:16px; line-height:1.72; }
.cb-legal ul { padding-left:1.2em; }
.cb-legal li { margin-bottom:8px; padding-left:.2em; }
.cb-legal li::marker { color:var(--cb-muted); }
.cb-legal a { color:var(--cb-ink); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; text-decoration-color:rgba(20,23,24,.35); }
.cb-legal a:hover,.cb-legal a:focus-visible { text-decoration-color:currentColor; }
.cb-legal table { margin:8px 0 18px; font-size:15px; }
.cb-legal th { padding:10px 16px 10px 0; border-bottom:1px solid var(--cb-ink); color:var(--cb-ink); font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; }
.cb-legal td { padding:12px 16px 12px 0; color:#3d4549; line-height:1.45; }
.cb-legal td:last-child,.cb-legal th:last-child { padding-right:0; }
.cb-legal-nav { display:flex; flex-wrap:wrap; gap:8px 28px; max-width:720px; margin:0 8vw 44px; padding:14px 0; border-top:1px solid var(--cb-line); border-bottom:1px solid var(--cb-line); }
.cb-legal-nav a { color:var(--cb-muted); font-size:13px; text-decoration:none; }
.cb-legal-nav a:hover,.cb-legal-nav a:focus-visible { color:var(--cb-ink); }
.cb-legal-nav a[aria-current="page"] { color:var(--cb-ink); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px; }
.cb-legal-nav a:focus-visible { outline:2px solid var(--cb-ink); outline-offset:4px; }
.cb-legal .cb-contact-form { margin-top:36px; }
@media (max-width:900px) {
  .cb-contact-layout { grid-template-columns:1fr; row-gap:48px; }
  .cb-contact-rows { margin-top:40px; }
  .cb-contact-rows > div { grid-template-columns:5.6em minmax(0,1fr); }
}
@media (max-width:620px) {
  .cb-legal { padding:0 22px 80px; }
  .cb-legal-nav { flex-direction:column; gap:10px; margin:0 22px 32px; }
  .cb-legal p,.cb-legal ul { font-size:15.5px; }
  .cb-legal table { font-size:14px; }
  .cb-legal th,.cb-legal td { padding-right:10px; }
}
@media (prefers-reduced-motion:reduce) { .cb-contact-rows a,.cb-card__work-item b,.cb-contact-form input,.cb-contact-form textarea,.cb-contact-form select,.cb-contact-form input[type="file"]::file-selector-button { transition:none; } }

/* ============================================================
   PROJECT VIDEO — published snapshot only; native player, no crop
   ============================================================ */
.cb-project-video { padding:clamp(96px,9vw,150px) 8vw; background:var(--cb-paper); }
.cb-project-video__heading { margin-bottom:clamp(40px,5vw,72px); }
.cb-project-video__heading .cb-kicker { margin:0; }
.cb-project-video h2 { margin:20px 0 0; font-size:clamp(44px,5vw,80px); font-weight:500; letter-spacing:-.075em; line-height:.9; }
.cb-project-video__list { display:grid; row-gap:clamp(48px,6vw,96px); }
.cb-project-video__item { margin:0; }
.cb-project-video__item video { display:block; width:100%; height:auto; max-height:84vh; background:#141718; object-fit:contain; }
.cb-project-video__item figcaption { max-width:560px; margin-top:16px; padding-top:12px; border-top:1px solid var(--cb-line); color:var(--cb-muted); font-size:14px; line-height:1.6; }
@media (max-width:760px) {
  .cb-project-video { padding:56px 22px 64px; }
  .cb-project-video h2 { font-size:clamp(40px,11vw,56px); }
  .cb-project-video__item video { width:calc(100% + 44px); max-width:none; margin:0 -22px; max-height:none; }
}

/* Chapter separation (owner feedback 2026-10-04, approved variant D): neighbouring light sections read as one
   white sheet. HOME: «Комплексные решения» is a soft blue-graphite chapter between the white architecture
   chapter and the white process chapter; the practice chapter takes the light gray so the rhythm alternates.
   SERVICES: every group opens with a thin ink rule, groups alternate white / light gray, the group title is
   clearly larger than the service names; no numbering. */
.hp-index { background:var(--cb-surface-graphite-soft); color:#fff; padding-top:calc(var(--hp-top) + 24px); padding-bottom:calc(var(--hp-bottom) + 24px); }
.hp-index::before { content:none; }
.hp-index .cb-kicker { color:rgba(255,255,255,.66); }
.hp-index h2 { color:#fff; }
.hp-index__list { border-top-color:rgba(255,255,255,.55); }
.hp-index .hp-row { color:#fff; border-bottom-color:rgba(255,255,255,.16); }
.hp-index .hp-row p,.hp-index .hp-index__note p { color:rgba(255,255,255,.76); }
.hp-index .hp-row h3 { text-decoration-color:rgba(255,255,255,.36); }
.hp-index .hp-row:hover,.hp-index .hp-row:focus-visible { border-bottom-color:#fff; }
.hp-index .hp-row:hover h3,.hp-index .hp-row:focus-visible h3 { text-decoration-color:#fff; }
.hp-index .hp-row:focus-visible { outline-color:#fff; }
@media (hover:hover) and (pointer:fine) { .hp-index .hp-row h3 { text-decoration-color:transparent; } .hp-index .hp-row:hover h3,.hp-index .hp-row:focus-visible h3 { text-decoration-color:#fff; } }
.hp-process { background:var(--cb-surface-light); }
.hp-practice { background:var(--cb-surface-muted); }

.cb-services-page .cb-service-group { position:relative; box-shadow:none; }
.cb-services-page .cb-service-group,.cb-services-page .cb-service-group:is([data-service-group="GEODESY"],[data-service-group="ENGINEERING"],[data-service-group="LANDSCAPE"]) { background:var(--cb-surface-light); padding-top:clamp(64px,7vw,104px); }
.cb-services-page .cb-service-group[data-tone="alt"],.cb-services-page .cb-service-group[data-tone="alt"]:is([data-service-group="GEODESY"],[data-service-group="ENGINEERING"],[data-service-group="LANDSCAPE"]) { background:var(--cb-surface-muted); }
.cb-services-page .cb-service-group::before { content:""; position:absolute; top:0; left:8vw; right:8vw; height:1px; background:var(--cb-ink); }
.cb-services-page .cb-service-group + .cb-service-group,.cb-services-page .cb-service-block + .cb-service-block .cb-service-group:first-child { box-shadow:none; }
.cb-services-page .cb-service-list,.cb-services-page .cb-service-list.rv-line { border-top:0; background-image:none; }
.cb-services-page .cb-service-group > div:first-child { align-self:start; position:sticky; top:110px; }
.cb-services-page .cb-service-group h2 { font-size:clamp(44px,5vw,72px); }
.cb-services-page .cb-service-list h3 { font-size:clamp(22px,2vw,30px); }
@media (max-width:900px) {
  .cb-services-page .cb-service-group,.cb-services-page .cb-service-group:is([data-service-group="GEODESY"],[data-service-group="ENGINEERING"],[data-service-group="LANDSCAPE"]) { padding-top:56px; }
  .cb-services-page .cb-service-group::before { left:22px; right:22px; }
  .cb-services-page .cb-service-group > div:first-child { position:static; }
  .cb-services-page .cb-service-group h2 { font-size:clamp(36px,10vw,48px); }
  .cb-services-page .cb-service-list { margin-top:28px; }
  .cb-services-page .cb-service-list h3 { font-size:clamp(22px,6vw,26px); }
}

/* Audit batch 1 (2026-10-10). Home «Индивидуальное проектирование домов.»: its longest word is about 7.17 em wide
   (letter-spacing included), so below 375 px the 46 px minimum size no longer fits the 22 px gutters. Scale the size
   with the viewport there only; 375 px and wider are unchanged.
   About: the muted text on the mineral cards was 3.78:1; the darker muted tone already used on «Услуги» gives 5.59:1. */
@media (max-width:374px) { .hp-arch h2 { font-size:calc((100vw - 44px) / 7.3); } }
.cb-about-grid article { --cb-muted:#4f575b; }

.cb-card__strip { margin:0; }
.cb-card__strip img { display:block; width:100%; height:auto; }
.cb-card__discuss { display:flex; align-items:center; justify-content:center; box-sizing:border-box; width:100%; min-height:52px; padding:0 22px; border:1px solid #2c373d; border-radius:15px; background:#2c373d; color:#fff; font-size:12px; font-weight:500; letter-spacing:.04em; text-decoration:none; transition:background-color .2s ease, transform .2s ease; }
.cb-card__discuss:hover { background:#222c31; }
.cb-card__discuss:focus-visible { outline:2px solid #2c373d; outline-offset:3px; }
