:root { --ink:#111; --paper:#f7f7f5; --line:#d4d4d0; --muted:#656562; --white:#fff; --brass:#e3b679; --brass-deep:#a97a3e; }
* { box-sizing:border-box; margin:0; }
html { scroll-behavior:smooth; overflow-x:hidden; max-width:100%; }
body { background:var(--paper); color:var(--ink); font-family:"DM Sans",Arial,sans-serif; -webkit-font-smoothing:antialiased; overflow-x:hidden; max-width:100%; }
img, svg, video, canvas { max-width:100%; height:auto; }
h1, h2, h3, h4, p { overflow-wrap:break-word; word-break:break-word; }
a { color:inherit; text-decoration:none; }
.shell { width:min(1440px,100%); margin:auto; padding:0 clamp(20px,4vw,42px); }
.eyebrow { font:500 10px/1.2 "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.brass { color:var(--brass); }
.arrow { font-size:20px; line-height:0; margin-left:8px; }
.link { display:inline-flex; align-items:center; border-bottom:1px solid var(--ink); padding-bottom:6px; font:500 11px/1 "DM Mono",monospace; letter-spacing:.07em; text-transform:uppercase; }
.link.on-dark { border-color:var(--brass); color:#f7f4ec; }

/* ---------- Header / nav ---------- */
header { position:fixed; z-index:100; top:0; left:0; right:0; background:rgba(247,244,236,.86); backdrop-filter:blur(10px); border-bottom:1px solid #dcd5c2; }
header.on-dark { background:rgba(17,17,17,.78); border-bottom:1px solid #333; }
nav { min-height:76px; display:flex; align-items:center; justify-content:space-between; gap:30px; position:relative; }
.brand { display:flex; align-items:center; gap:12px; }
.brand img { display:block; height:26px; width:auto; }
.brand span { font-family:"IBM Plex Mono",monospace; font-size:13px; letter-spacing:.14em; color:#5b5a53; text-transform:uppercase; }
header.on-dark .brand span { color:#cfcfc8; }
.navlinks { display:flex; align-items:center; gap:34px; font:500 13px "IBM Plex Mono",monospace; letter-spacing:.04em; }
.navlinks a { color:#5b5a53; opacity:1; transition:color .2s; }
.navlinks a:hover { color:#17181b; }
header.on-dark .navlinks a { color:#b7b7b0; }
header.on-dark .navlinks a:hover { color:#fff; }
.navlinks a.is-active { color:var(--brass-deep); }
header.on-dark .navlinks a.is-active { color:var(--brass); }
.nav-toggle { display:none; width:42px; height:42px; padding:0; border:1px solid currentColor; background:transparent; color:#5b5a53; cursor:pointer; }
.nav-toggle span { display:block; width:18px; height:1px; margin:4px auto; background:currentColor; transition:transform .2s ease, opacity .2s ease; }
header.on-dark .nav-toggle { color:#d8d8d1; }
.nav-toggle[aria-expanded="true"] span:first-child { transform:translateY(5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity:0; }
.nav-toggle[aria-expanded="true"] span:last-child { transform:translateY(-5px) rotate(-45deg); }
.nav-cta { font:500 12px "IBM Plex Mono",monospace; letter-spacing:.06em; text-transform:uppercase; border:1px solid #a97a3e; color:#8c5f2a; padding:10px 20px; transition:background .25s,color .25s; }
.nav-cta:hover { background:#a97a3e; color:#17181b; }
header.on-dark .nav-cta { color:var(--brass); border-color:var(--brass); }
header.on-dark .nav-cta:hover { background:var(--brass); color:#111; }
@media (max-width:860px) {
  nav { gap:12px; }
  .nav-toggle { display:block; margin-left:auto; }
  .navlinks { display:none; position:absolute; top:100%; right:0; left:0; z-index:1; padding:12px 20px 18px; background:rgba(247,244,236,.98); border:1px solid #dcd5c2; border-top:0; box-shadow:0 12px 24px rgba(0,0,0,.10); }
  .navlinks.is-open { display:flex; flex-direction:column; align-items:stretch; gap:0; }
  .navlinks a { display:block; padding:14px 0; border-bottom:1px solid var(--line); font-size:12px; }
  .navlinks a:last-child { border-bottom:0; }
  header.on-dark .navlinks { background:rgba(17,17,17,.98); border-color:#333; }
  header.on-dark .navlinks a { border-color:#333; }
}

/* ---------- Original photo hero (kept for reference / unused now) ---------- */
.hero { min-height:720px; height:100vh; max-height:920px; color:var(--white); position:relative; display:flex; align-items:flex-end; background:#0d0d0f; isolation:isolate; overflow:hidden; }
.hero:after { content:""; position:absolute; inset:0; z-index:-1; background:radial-gradient(ellipse at 20% 30%,rgba(227,182,121,.10),transparent 55%),linear-gradient(0deg,rgba(0,0,0,.55),transparent 45%); }
.hero-content { padding-top:154px; padding-bottom:clamp(48px,7vw,68px); }
.hero .eyebrow { font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.2em; color:var(--brass); margin-bottom:22px; display:flex; align-items:center; gap:10px; text-transform:uppercase; }
/*.hero .eyebrow::before { content:""; width:22px; height:1px; background:var(--brass); }*/
.hero h1 { margin:0 0 26px; max-width:880px; font-family:"Big Shoulders Display",sans-serif; text-transform:uppercase; font-weight:800; line-height:.92; letter-spacing:.01em; font-size:clamp(48px,7.4vw,108px); color:#f7f4ec; text-shadow:0 4px 30px rgba(0,0,0,.25); overflow-wrap:anywhere; }
.hero p { max-width:480px; font-size:17px; line-height:1.65; color:#dfdbcf; padding-bottom:6px; }

/* ---------- Network canvas backdrop ---------- */
.net-canvas-wrap { position:absolute; inset:0; z-index:-1; background:#0d0d0f; }
.net-canvas-wrap canvas { position:absolute; inset:0; width:100%; height:100%; display:block; }
.net-skyline { position:absolute; left:0; right:0; bottom:0; height:38%; background:linear-gradient(0deg,rgba(0,0,0,.55),transparent); opacity:.9; }

/* ---------- Hero CTA row ---------- */
.hero-ctas { display:flex; flex-wrap:wrap; gap:14px; margin-top:36px; }
.hero-cta { position:relative; padding:16px 26px; border:1px solid rgba(247,244,236,.35); font:500 12px "IBM Plex Mono",monospace; letter-spacing:.06em; text-transform:uppercase; color:#f7f4ec; transition:border-color .25s,background .25s,color .25s; overflow:hidden; }
.hero-cta.primary { border-color:var(--brass); color:#111; background:var(--brass); }
.hero-cta.primary:hover { background:#f0c98d; }
.hero-cta.secondary:hover { border-color:#f7f4ec; background:rgba(247,244,236,.08); }
.hero-cta .cta-hint { display:block; margin-top:3px; font-size:10px; letter-spacing:.03em; text-transform:none; color:rgba(247,244,236,.55); font-family:"DM Mono",monospace; max-height:0; opacity:0; transition:max-height .25s ease,opacity .25s ease; }
.hero-cta:hover .cta-hint { max-height:40px; opacity:1; }
.hero-cta.primary .cta-hint { color:rgba(17,17,17,.65); }

/* ---------- Intro / platform / approach / feature / perspectives (unchanged) ---------- */
.intro { padding:142px 0 130px; display:grid; grid-template-columns:1fr 2fr; gap:70px; }
.intro h2, .section-head h2, .approach > h2, .perspectives > h2, .page-hero h2 { font:400 clamp(35px,4.3vw,64px)/1.03 Newsreader,Georgia,serif; letter-spacing:-.045em; overflow-wrap:anywhere; }
.intro-copy { max-width:700px; padding-left:clamp(20px,5vw,40px); }
.intro-copy p { font-size:21px; line-height:1.42; letter-spacing:-.025em; }
.intro-copy p + p { margin-top:22px; font-size:15px; line-height:1.6; color:var(--muted); max-width:570px; letter-spacing:0; }
.platform { background:var(--ink); color:var(--white); padding:118px 0; }
.section-head { display:flex; justify-content:space-between; gap:50px; align-items:end; padding-bottom:63px; }
.section-head p { max-width:390px; font-size:16px; line-height:1.5; color:#d0d0cc; }
.cards { border-top:1px solid #555; }
.card { display:grid; grid-template-columns:80px 1fr minmax(220px,330px); gap:25px; align-items:start; padding:31px 0 34px; border-bottom:1px solid #555; }
.card h3 { font:500 30px/1.05 Newsreader,Georgia,serif; letter-spacing:-.03em; }
.card p { color:#c8c8c4; font-size:14px; line-height:1.55; }
.card-number { color:#b9b9b4; }
.approach { padding:136px 0; padding-left:clamp(20px,5vw,40px); }
.approach-grid { margin-top:65px; display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); }
.approach-item { padding:27px 34px 20px 0; min-height:240px; border-bottom:1px solid var(--line); }
.approach-item:not(:first-child) { padding-left:30px; border-left:1px solid var(--line); }
.approach-item h3 { margin:38px 0 14px; font-size:18px; font-weight:500; }
.approach-item p { max-width:300px; font-size:14px; line-height:1.55; color:var(--muted); }
.feature { min-height:560px; display:grid; grid-template-columns:1fr 1fr; background:var(--white); }
.feature-image { background:url('https://images.unsplash.com/photo-1563013544-824ae1b704d3?auto=format&fit=crop&w=1400&q=85') center/cover; filter:grayscale(1); min-height:360px; }
.feature-copy { padding:82px clamp(35px,7vw,120px); display:flex; flex-direction:column; align-items:flex-start; justify-content:center; }
.feature-copy h2 { margin:18px 0 22px; font:400 clamp(36px,4.4vw,60px)/1 Newsreader,Georgia,serif; letter-spacing:-.045em; }
.feature-copy p { max-width:430px; font-size:16px; line-height:1.55; color:var(--muted); }
.feature-copy .link { margin-top:31px; }
.perspectives { padding:130px 0; text-align:center; }
.perspectives > h2 { margin-left:auto; margin-right:auto; max-width:620px; }
.perspectives-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:25px; margin-top:57px; }
.story { border-top:1px solid var(--ink); padding-top:16px; min-height:210px; display:flex; flex-direction:column; align-items:center; }
.story h3 { margin-left:auto; margin-right:auto; margin:36px 0 18px; max-width:330px; font:400 27px/1.05 Newsreader,Georgia,serif; letter-spacing:-.035em; }
.story .link { margin-top:auto; }

/* ---------- Footer ---------- */
footer { background:var(--ink); color:var(--white); padding:66px 0 25px; }
.footer-top { display:grid; grid-template-columns:2fr 1fr 1fr; gap:40px; padding-bottom:85px; }
.footer-title { max-width:500px; font:400 42px/1 Newsreader,Georgia,serif; letter-spacing:-.045em; }
.footer-list { display:flex; flex-direction:column; gap:13px; font-size:13px; color:#d1d1cc; }
.footer-list strong { color:white; font:500 10px "DM Mono",monospace; letter-spacing:.1em; text-transform:uppercase; margin-bottom:8px; }
.footer-bottom { padding-top:20px; border-top:1px solid #555; display:flex; justify-content:space-between; gap:20px; color:#a9a9a4; font:10px "DM Mono",monospace; letter-spacing:.05em; }

/* ---------- Generic dark page hero (About / Strategy / Partner) ---------- */
.page-hero { min-height:440px; color:var(--white); position:relative; display:flex; align-items:flex-end; isolation:isolate; overflow:hidden; }
.page-hero-content { padding-top:150px; padding-bottom:56px; max-width:760px; }
.page-hero .eyebrow { color:var(--brass); margin-bottom:18px; display:flex; align-items:center; gap:10px; }
/*.page-hero .eyebrow::before { content:""; width:22px; height:1px; background:var(--brass); }*/
.page-hero p.lede { margin-top:20px; max-width:560px; font-size:17px; line-height:1.6; color:#dfdbcf; }

/* ---------- Content sections shared by About / Strategy ---------- */
.content-section { padding:100px clamp(28px,6vw,56px); }
.content-section.tight { padding:70px clamp(28px,6vw,56px); }
.content-section h2 { font:400 clamp(30px,3.6vw,48px)/1.08 Newsreader,Georgia,serif; letter-spacing:-.04em; margin-bottom:26px; }
.content-section .lede { max-width:640px; font-size:16px; line-height:1.65; color:var(--muted); }
.pillar-grid { margin-top:56px; display:grid; grid-template-columns:repeat(2,1fr); border-top:1px solid var(--line); }
.pillar { padding:30px 32px 28px 0; border-bottom:1px solid var(--line); }
.pillar:nth-child(even) { padding-left:32px; border-left:1px solid var(--line); }
.pillar .eyebrow { color:var(--brass-deep); margin-bottom:14px; }
.pillar h3 { font:500 21px/1.15 Newsreader,Georgia,serif; letter-spacing:-.02em; margin-bottom:10px; }
.pillar p { font-size:14px; line-height:1.6; color:var(--muted); max-width:420px; }
.values-row { margin-top:56px; display:flex; flex-wrap:wrap; gap:0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.value-chip { flex:1 1 180px; padding:22px 20px; border-right:1px solid var(--line); }
.value-chip:last-child { border-right:0; }
.value-chip .eyebrow { color:var(--brass-deep); margin-bottom:10px; }
.value-chip h3 { font:500 18px/1.2 Newsreader,Georgia,serif; letter-spacing:-.02em; }
.sector-grid { margin-top:56px; display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
.sector { background:var(--paper); padding:30px 26px; min-height:170px; display:flex; flex-direction:column; justify-content:space-between; }
.sector .eyebrow { color:var(--brass-deep); }
.sector h3 { margin-top:22px; font:500 22px/1.1 Newsreader,Georgia,serif; letter-spacing:-.02em; }
.sector p { margin-top:10px; font-size:13.5px; line-height:1.55; color:var(--muted); }
.cta-band { background:var(--ink); color:var(--white); padding:90px 0; text-align:center; }
.cta-band h2 { font:400 clamp(28px,3.4vw,46px)/1.1 Newsreader,Georgia,serif; letter-spacing:-.04em; max-width:620px; margin:0 auto 26px; }
.cta-band p { max-width:480px; margin:0 auto 34px; color:#d0d0cc; font-size:15px; line-height:1.6; }

/* ---------- Partner / auth page ---------- */
.auth-wrap { padding:100px 0 130px; display:grid; grid-template-columns:1fr 1fr; gap:70px; align-items:start; }
.auth-panel { border:1px solid var(--line); padding:clamp(28px,4vw,46px); }
.auth-panel h2 { font:400 clamp(26px,3vw,34px)/1.1 Newsreader,Georgia,serif; letter-spacing:-.03em; margin-bottom:10px; }
.auth-panel p.note { font-size:13.5px; line-height:1.6; color:var(--muted); margin-bottom:26px; }
.google-btn { width:100%; display:flex; align-items:center; justify-content:center; gap:12px; border:1px solid #ccc; background:var(--white); padding:14px 18px; font:500 13px "DM Sans",Arial,sans-serif; cursor:pointer; transition:border-color .2s,box-shadow .2s; }
.google-btn:hover { border-color:#999; box-shadow:0 2px 10px rgba(0,0,0,.06); }
.google-btn svg { width:18px; height:18px; }
.auth-divider { display:flex; align-items:center; gap:14px; margin:26px 0; color:var(--muted); font:10px "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; }
.auth-divider::before, .auth-divider::after { content:""; flex:1; height:1px; background:var(--line); }
.interest-form { display:grid; gap:16px; }
.interest-form label { display:grid; gap:7px; font:500 10px "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.interest-form input, .interest-form select, .interest-form textarea { width:100%; border:1px solid #aaa; border-radius:0; background:var(--white); padding:13px; color:var(--ink); font:15px "DM Sans",Arial,sans-serif; }
.interest-form button { justify-self:start; border:0; background:var(--ink); color:var(--white); padding:14px 22px; cursor:pointer; font:500 11px "DM Mono",monospace; letter-spacing:.06em; text-transform:uppercase; }
.auth-side h3 { font:500 20px/1.2 Newsreader,Georgia,serif; letter-spacing:-.02em; margin-bottom:16px; }
.auth-side ul { list-style:none; display:grid; gap:14px; }
.auth-side li { display:grid; grid-template-columns:22px 1fr; gap:12px; font-size:14px; line-height:1.55; color:var(--muted); }
.auth-side li b { color:var(--ink); }
.status-note { margin-top:16px; display:none; font-size:13.5px; color:#22613d; }
.status-note.is-visible { display:block; }

/* ---------- Contact modal (shared) ---------- */
.contact-modal { position:fixed; inset:0; z-index:200; display:grid; place-items:center; padding:20px; background:rgba(0,0,0,.62); opacity:0; visibility:hidden; transition:opacity .25s ease,visibility .25s; }
.contact-modal.is-open { opacity:1; visibility:visible; }
.contact-panel { position:relative; width:min(100%,620px); max-height:min(700px,calc(100svh - 40px)); overflow:auto; padding:clamp(28px,5vw,54px); background:var(--paper); color:var(--ink); transform:translateY(14px); transition:transform .25s ease; }
.contact-modal.is-open .contact-panel { transform:none; }
.contact-close { position:absolute; top:18px; right:18px; width:36px; height:36px; border:1px solid var(--ink); background:transparent; font-size:22px; cursor:pointer; }
.contact-panel h2 { max-width:470px; margin:15px 0 28px; font:400 clamp(35px,6vw,55px)/1 Newsreader,Georgia,serif; letter-spacing:-.045em; }
.contact-form { display:grid; gap:16px; }
.contact-form label { display:grid; gap:7px; font:500 10px "DM Mono",monospace; letter-spacing:.08em; text-transform:uppercase; }
.contact-form input,.contact-form textarea { width:100%; border:1px solid #aaa; border-radius:0; background:var(--white); padding:13px; color:var(--ink); font:15px "DM Sans",Arial,sans-serif; }
.contact-form textarea { min-height:110px; resize:vertical; }
.contact-form button { justify-self:start; border:0; background:var(--ink); color:var(--white); padding:14px 20px; cursor:pointer; font:500 11px "DM Mono",monospace; letter-spacing:.06em; text-transform:uppercase; }
.form-success { display:none; margin-top:16px; color:#22613d; font-size:14px; }
.form-success.is-visible { display:block; }
body.modal-open { overflow:hidden; }

/* ---------- Reveal on scroll ---------- */
.reveal { opacity:1; transform:none; }
.js-ready .reveal { opacity:0; transform:translateY(26px); transition:opacity .8s cubic-bezier(.2,.65,.25,1),transform .8s cubic-bezier(.2,.65,.25,1); }
.js-ready .reveal.is-visible { opacity:1; transform:none; }
.js-ready .card:nth-child(2),.js-ready .story:nth-child(2) { transition-delay:.09s; }
.js-ready .card:nth-child(3),.js-ready .story:nth-child(3) { transition-delay:.18s; }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .js-ready .reveal { opacity:1; transform:none; transition:none; } }

/*#firm > .eyebrow,.approach-item > .eyebrow,.pillar > .eyebrow.tag { }*/

/* ---------- Responsive ---------- */
@media (max-width:1000px) { nav { min-height:74px; } .navlinks { gap:18px; font-size:10px; } .hero { min-height:680px; } .intro { grid-template-columns:minmax(150px,.65fr) minmax(0,2fr); gap:45px; } .card { grid-template-columns:55px minmax(120px,.8fr) minmax(0,1fr); } .auth-wrap { grid-template-columns:1fr; gap:50px; } .pillar-grid { grid-template-columns:1fr; } .pillar:nth-child(even) { border-left:0; padding-left:0; } .sector-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:760px) { .shell { padding-left:clamp(16px,5vw,28px); padding-right:clamp(16px,5vw,28px); } .intro-copy { padding-left:0; } .hero { min-height:620px; height:100svh; max-height:none; } .hero-content { padding-top:135px; padding-bottom:42px; } .hero h1 { font-size:clamp(42px,13vw,62px); } .hero p { font-size:16px; max-width:36ch; } .page-hero-content { padding-top:120px; padding-bottom:44px; } .page-hero p.lede { font-size:16px; } .intro { padding-top:82px; padding-bottom:82px; display:block; } .intro h2 { margin-bottom:32px; } .intro-copy p { font-size:19px; } .platform { padding-top:80px; padding-bottom:80px; } .approach { padding:80px clamp(24px,6vw,38px); } .perspectives { padding-top:80px; padding-bottom:80px; } .content-section { padding:70px clamp(24px,6vw,38px); } .content-section.tight { padding:56px clamp(24px,6vw,38px); } .section-head { display:block; padding-bottom:40px; } .section-head p { margin-top:22px; } .card { grid-template-columns:45px minmax(0,1fr); gap:16px; } .card p { grid-column:2; } .approach-grid,.perspectives-grid,.sector-grid { grid-template-columns:1fr; } .approach-item:not(:first-child) { border-left:0; padding-left:0; } .approach-item { min-height:0; padding:25px 0; } .approach-item h3 { margin-top:25px; } .feature { grid-template-columns:1fr; } .footer-top { grid-template-columns:1fr 1fr; padding-bottom:55px; } .footer-title { grid-column:1/-1; } .footer-bottom { display:block; line-height:1.8; } .values-row { flex-direction:column; } .value-chip { border-right:0; border-bottom:1px solid var(--line); } }
@media (max-width:420px) { nav { min-height:68px; } .brand { gap:7px; } .brand img { height:22px; } .brand span { font-size:11px; } .nav-cta { padding:9px 10px; font-size:9px; letter-spacing:.03em; } .nav-toggle { width:38px; height:38px; } .footer-top { grid-template-columns:1fr; } .footer-title { font-size:37px; } }
