/* VEXT-60: Manrope self-hosted (variable wght 400-800, latin + latin-ext). SIL OFL 1.1, see fonts/OFL.txt */
@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/manrope-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/manrope-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{--bg:#f5f3eb;--surface:#fff;--ink:#153d30;--muted:#58675c;--line:#cfd3c5;--soft:#c5d4c0;--dark:#153d30;--lime:#c5eb78;--trace:#9aaba0;--radius:24px;--max:1320px;--sans:Manrope,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.45}a{color:inherit;text-decoration:none}.shell{width:min(calc(100% - 40px),var(--max));margin:0 auto}
header{position:sticky;top:0;z-index:20;backdrop-filter:blur(14px);background:rgba(238,238,233,.9);border-bottom:1px solid rgba(207,208,200,.7)}
nav{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.05em;font-size:1.1rem}.brand-mark{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 34px}.brand-mark img{display:block;width:100%;height:100%}
.nav-links{display:flex;align-items:center;gap:28px;font-size:.91rem;color:#3e403a}.nav-links a:hover,.nav-links a[aria-current=page]{text-decoration:underline;text-underline-offset:4px}.nav-cta,.button{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--ink);border-radius:999px}.nav-cta{padding:10px 14px;font-size:.88rem;background:var(--surface)}.nav-labs{display:none;font-size:.91rem;color:#3e403a;white-space:nowrap}.nav-labs .ext,.nav-links .ext,footer .ext{margin-left:.15em;font-size:.85em}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;font-weight:700;color:var(--muted)}
.hero{padding:92px 0 56px}.hero-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:54px;align-items:end}h1{margin:16px 0 22px;max-width:950px;font-size:clamp(4.2rem,10vw,9rem);line-height:.84;letter-spacing:-.075em;font-weight:760}.hero-copy{max-width:540px;margin-left:auto;padding-bottom:8px}.hero-copy p{margin:0 0 24px;color:#4d5049;font-size:clamp(1.05rem,1.7vw,1.3rem)}.actions{display:flex;flex-wrap:wrap;gap:12px}.button{justify-content:center;padding:13px 17px;font-weight:650;font-size:.92rem}.button.primary{background:var(--dark);color:var(--surface)}.button.secondary{background:transparent}
.hero-panel{margin-top:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0;display:flex;justify-content:space-between;gap:20px;color:#54574f;font-size:.88rem}.section{padding:74px 0}.section-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:28px}h2{margin:0;font-size:clamp(2.3rem,5vw,4.7rem);letter-spacing:-.06em;line-height:.95;font-weight:730}.section-intro{max-width:470px;color:#5b5e56;margin:0}
.service-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.service{min-height:250px;padding:26px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;justify-content:space-between;transition:.2s ease}.service:hover{background:var(--surface);transform:translateY(-2px)}.service-num{font-size:.74rem;letter-spacing:.14em;color:#75786f}.service h3{font-size:1.45rem;letter-spacing:-.035em;margin:30px 0 8px}.service p{margin:0;color:#5a5d55;max-width:40ch}
.industry-list{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.industry-list a{padding:18px 12px;text-align:center;border-right:1px solid var(--line);font-size:.93rem}.industry-list a:last-child{border-right:0}.industry-list a:hover{background:var(--surface)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.soft-card,.dark-card{border-radius:var(--radius);padding:34px;min-height:360px}.soft-card{background:var(--soft);border:1px solid #d3d4cc}.dark-card{background:var(--dark);color:#f4f4ef;display:flex;flex-direction:column;justify-content:space-between}.soft-card h3,.dark-card h3{margin:14px 0 12px;font-size:clamp(2rem,4vw,3.8rem);line-height:.95;letter-spacing:-.06em}.soft-card p,.dark-card p{max-width:44ch;color:#5a5d55}.dark-card p{color:#c7c9c2}.mini-list{display:grid;gap:9px;margin-top:22px}.mini-list div{display:flex;justify-content:space-between;gap:20px;border-top:1px solid rgba(23,24,21,.2);padding-top:9px;font-size:.9rem}.dark-card .mini-list div{border-color:rgba(244,244,239,.18)}
.page-hero{padding:86px 0 48px}.page-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:end}.page-hero h1{font-size:clamp(4rem,8vw,7.4rem)}.prose{max-width:720px;font-size:1.08rem;color:#4e514a}.prose p{margin:0 0 18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.detail-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:30px;min-height:240px}.detail-card h3{font-size:1.6rem;margin:6px 0 10px;letter-spacing:-.04em}.detail-card p{color:#5b5e56}.meta-row{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:14px 0;font-size:.9rem;color:#5d6058}
.contact{padding:108px 0 90px;text-align:center}.contact h2{max-width:900px;margin:12px auto 20px}.contact p{max-width:640px;margin:0 auto 28px;color:#5b5e56;font-size:1.07rem}
footer{border-top:1px solid var(--line);padding:28px 0 44px;color:#62655d;font-size:.85rem}.footer-grid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:30px}.footer-title{color:var(--ink);font-weight:700;margin-bottom:8px}
@media(max-width:900px){.nav-links{display:none}.nav-labs{display:inline-flex;align-items:center}.hero-grid,.page-hero-grid,.split{grid-template-columns:1fr}.hero-copy{margin-left:0;max-width:540px}.hero-copy p{margin-bottom:28px}.service-grid{grid-template-columns:repeat(2,1fr)}.industry-list{grid-template-columns:repeat(2,1fr)}.industry-list a:nth-child(2){border-right:0}.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.shell{width:min(calc(100% - 24px),var(--max))}header{position:relative}.hero{padding-top:58px}.page-hero{padding-top:58px}h1{font-size:clamp(3.7rem,19vw,6.5rem)}.hero-panel{display:grid}.service-grid,.detail-grid,.industry-list{grid-template-columns:1fr}.service{min-height:220px}.industry-list a{border-right:0;border-bottom:1px solid var(--line)}.industry-list a:last-child{border-bottom:0}.soft-card,.dark-card{min-height:320px;padding:26px}.footer-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* ── VEXTR soft: Manrope + trace canopy ──────────────────────────── */
header{background:rgba(245,243,235,.9)}
body{-webkit-font-smoothing:antialiased}
h1{font-weight:800}h2{font-weight:750}
.hero{padding:56px 0 56px}.hero-art{width:100%;max-width:480px;margin:0 -12px 0 auto}.hero-art .lbl{font-size:18px;letter-spacing:2.4px}
.hero-art .soft-hero-art{width:100%;height:auto;overflow:visible}
.hero-art .g-grid{display:none}
.hero-copy{margin-left:0;max-width:540px}.hero-copy p{margin-bottom:28px}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:6px}
@media(max-width:900px){.hero-art{margin:8px auto 0;width:min(100%,380px)}}
@media(max-width:620px){h1{font-size:clamp(3rem,15vw,6.5rem)}}


/* ── Services: titles share a baseline (top-aligned, all widths) ──── */
.service{justify-content:flex-start}
.service h3{margin-top:56px}
/* ── Tablet (iPad): no outer frame — row rules + one inner divider ── */
@media(min-width:621px) and (max-width:900px){
 .section-head{flex-direction:column;align-items:flex-start;gap:16px}
 .section-intro{max-width:34rem}
 .service-grid{border-left:0;border-top:0;border-bottom:1px solid var(--line)}
 .service{min-height:0;border-right:0;border-bottom:0;border-top:1px solid var(--line);padding:24px 28px 30px 0}
 .service:nth-child(even){padding-left:28px;padding-right:0;border-left:1px solid var(--line)}
 .service h3{margin-top:28px}
 .service:hover{transform:none}
 .industry-list{border-top:0;border-bottom:0;column-gap:28px}
 .industry-list a:nth-last-child(-n+2){border-bottom:1px solid var(--line)}
 .industry-list a,.industry-list a:nth-child(2){border-right:0;border-top:1px solid var(--line);text-align:left;padding:16px 0}
 .industry-list a:hover{background:transparent;text-decoration:underline;text-underline-offset:4px}
}


/* ── Edge traces: bundles branch off dividers and run out of the viewport ── */
header,main,footer{position:relative;z-index:1}
header{z-index:20}
.vx-traces{position:absolute;top:0;left:0;z-index:0;pointer-events:none;overflow:hidden}
.vx-traces path{fill:none;stroke:var(--trace);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:1;stroke-dashoffset:1}
.vx-traces circle{fill:var(--bg);stroke:var(--trace);stroke-width:1.5;opacity:0;transform:scale(.3);transform-box:fill-box;transform-origin:center;
  transition:opacity .25s ease,transform .3s cubic-bezier(.3,1.6,.5,1)}
@media(prefers-reduced-motion:reduce){.vx-traces circle{transition:none}}

/* ── Mobile: services as a hairline list, heads stacked ──────────── */
@media(max-width:620px){
 .section{padding:56px 0}
 .section-head{flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:24px}
 .section-intro{max-width:none}
 .service-grid{border-left:0;border-top:1px solid var(--line)}
 .service{min-height:0;display:grid;grid-template-columns:2.25rem 1fr;align-items:baseline;gap:0;padding:20px 0 22px;border-right:0}
 .service:hover{transform:none;background:transparent}
 .service-num{padding-top:2px}
 .service h3{margin:0 0 6px;font-size:1.25rem}
 .service{justify-content:initial}
 .industry-list a{text-align:left;padding:16px 0}
 .industry-list a:hover{background:transparent;text-decoration:underline;text-underline-offset:4px}
}


/* ── Site-wide additions (subpages) ──────────────────────────────── */
@view-transition{navigation:auto}
header{view-transition-name:site-header}
::view-transition-old(root),::view-transition-new(root){animation-duration:.28s}
@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
.skip{position:absolute;left:12px;top:-60px;z-index:50;background:var(--ink);color:var(--bg);padding:.6rem 1rem;border-radius:999px}
.skip:focus{top:12px}
.eyebrow a{text-decoration:none;border-bottom:1px solid currentColor}
.eyebrow a:hover{color:var(--ink)}
a.service{color:inherit}
.service-top{display:flex;justify-content:space-between;gap:16px;align-items:baseline}
.service-focus{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.service-grid--2{grid-template-columns:repeat(2,1fr)}
.service-grid--steps .service{min-height:200px}
.link-row--3{grid-template-columns:repeat(3,1fr)}
.page-hero{padding:72px 0 56px}
.page-hero .hero-panel{margin-top:56px}
.page-hero h1{font-weight:800;margin-bottom:0}
.prose{color:#4e514a}
.soft-card{background:var(--soft);border:0}
.dark-card .eyebrow{color:var(--lime)}
.dark-card p{color:rgba(245,243,235,.8)}
.split .button{margin-top:18px}
.contact--forest{background:var(--dark);color:var(--bg)}
@media(max-width:900px){.service-grid--2,.link-row--3{grid-template-columns:repeat(2,1fr)}.page-hero .hero-panel{margin-top:40px}}
@media(max-width:620px){.service-grid--2,.link-row--3{grid-template-columns:1fr}.service-grid--steps .service{min-height:0}.service-top{display:contents}.service-focus{display:none}}
.service--plain{min-height:180px}
.service--plain h3{margin-top:0}
.service-more{margin-top:14px!important;font-weight:650;color:var(--ink)!important}
@media(min-width:621px) and (max-width:900px){.service--plain h3{margin-top:0}}
@media(max-width:620px){.page-hero h1{font-size:clamp(2.6rem,12vw,4rem)}.page-hero{padding-top:44px}}
@media(min-width:621px) and (max-width:900px){.page-hero h1{font-size:clamp(3.4rem,10vw,5.4rem)}}
@media(max-width:620px){.service--plain{grid-template-columns:1fr;min-height:0}}
@media(max-width:620px){.service--labelled{grid-template-columns:1fr;row-gap:6px}}

/* ── Legal pages: privacy, terms, credits (VEXT-45) ──────────────── */
.page-hero--legal h1{font-size:clamp(3.2rem,6.4vw,6rem);overflow-wrap:anywhere}
.legal{max-width:980px}
.legal-note{margin:0 0 28px;padding:14px 18px;border:1px dashed var(--ink);border-radius:16px;background:var(--surface);font-size:.92rem;color:var(--ink)}
.legal-block{display:grid;grid-template-columns:minmax(200px,.38fr) 1fr;gap:32px;border-top:1px solid var(--line);padding:30px 0}
.legal-block:last-child{border-bottom:1px solid var(--line)}
.legal-block>*{min-width:0}
.legal-block h2{font-size:1.35rem;line-height:1.15;letter-spacing:-.03em;font-weight:750}
.legal-block p{margin:0 0 14px;max-width:62ch;color:#4e514a;font-size:1.02rem;line-height:1.6}
.legal-block p:last-child{margin-bottom:0}
.legal-block a{border-bottom:1px solid currentColor}
.legal-block code{font-size:.9em;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:0 .3em}
mark.ph{background:var(--surface);color:var(--ink);border:1px dashed var(--ink);border-radius:6px;padding:0 .35em;font-weight:650}
.legal-table{overflow-x:auto;margin-top:18px}
.legal-table table{width:100%;border-collapse:collapse;font-size:.92rem;min-width:560px}
.legal-table th,.legal-table td{text-align:left;vertical-align:top;padding:12px 14px 12px 0;border-bottom:1px solid var(--line)}
.legal-table th{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700}
.legal-table td code{border:0;background:none;padding:0}
.footer-legal{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px}
.footer-legal a:hover,.lang-switch a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
@media(max-width:900px){.legal-block{grid-template-columns:1fr;gap:12px}}

/* ── VEXT-44: content-height hero, short photo bands, section air ── */
/* Air: 96px between sections on desktop, 64px at 375 (max 128px). */
.hero{padding:96px 0 72px}
.section{padding:48px 0}
.contact{padding:80px 0 90px}
.media-band{margin:48px auto 0;width:min(1080px,calc(100% - 144px));height:300px;border-radius:6px;overflow:hidden;background:var(--soft)}
.media-band picture{display:block;width:100%;height:100%}.media-band img{display:block;width:100%;height:100%;object-fit:cover}
.media-band + .hero-panel{margin-top:48px}
.section-head + .media-band{margin:0 auto 48px}
@media(max-width:900px){.media-band{width:100%;height:240px}}
@media(max-width:620px){
 .hero{padding:56px 0 48px}
 .section{padding:32px 0}
 .contact{padding:64px 0 72px}
 .media-band{height:190px}
}
/* VEXT-44: band is the last hero-grid row: 48px under the CTA row on desktop, directly under the CTAs on mobile */
.hero-grid{row-gap:0}
.hero-copy{padding-bottom:0}
.hero-grid > .media-band{grid-column:1/-1;margin-top:48px}
@media(max-width:900px){.hero-grid{row-gap:48px}.hero-grid > .media-band{order:2;margin-top:0}.hero-art{order:3}}
/* VEXT-49: header globe language menu */
.nav-tools{display:flex;align-items:center;gap:10px}
.lang-menu{position:relative}
.lang-btn{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--ink);font:inherit;font-size:.82rem;font-weight:600;letter-spacing:.04em;cursor:pointer}
.lang-btn:hover,.lang-btn[aria-expanded=true]{border-color:var(--ink);background:var(--surface)}
.lang-btn:focus-visible,.lang-list a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.lang-list{position:absolute;right:0;top:calc(100% + 8px);min-width:160px;margin:0;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px rgba(17,18,12,.12);z-index:30}
.lang-list[hidden]{display:none}
.lang-list a{display:block;padding:9px 12px;border-radius:9px;font-size:.9rem;color:#3e403a}
.lang-list a:hover{background:rgba(17,18,12,.05)}
.lang-list a[aria-current]{color:var(--ink);font-weight:700}
.lang-list a[aria-current]::after{content:" ✓"}
@media(max-width:620px){.nav-tools{gap:8px}.lang-btn{padding:0 10px}.lang-code{display:none}.nav-cta{padding:9px 12px}}

/* VEXT-53: touch targets >= 24px in footer (Lighthouse target-size) */
.footer-grid>div>a{display:inline-block;padding:4px 0}.footer-legal a{display:inline-block;padding:4px 0}
