/* Expedition Ledger v3.1 — light editorial base, charcoal bands, gold accents */
* { margin:0; padding:0; box-sizing:border-box; }
:root {
  --bg:#FFFFFF; --card:#FFFFFF; --band:#1B1A17; --band2:#22201C;
  --ink:#221F1B; --muted:rgba(34,31,27,.64); --hair:rgba(34,31,27,.14); --hair2:rgba(34,31,27,.08);
  --gold:#8FB0FF; --goldink:#1D4ED8;
  --bandink:#F2EDE4; --bandmuted:rgba(242,237,228,.65); --bandhair:rgba(242,237,228,.14);
}
html { scroll-behavior:smooth; }
body { font-family:'Inter',sans-serif; background:var(--bg); color:var(--ink); line-height:1.7; font-weight:400; -webkit-font-smoothing:antialiased; }
::selection { background:#1D4ED8; color:#fff; }
.grain { opacity:.028; }
.shell { max-width:1180px; margin:0 auto; padding:0 24px; }
a { color:var(--ink); }
em { font-style:italic; color:var(--goldink); }

.grain { position:fixed; inset:-50%; width:200%; height:200%; pointer-events:none; z-index:50; opacity:.035; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }

/* type */
.display { font-family:'Playfair Display',serif; font-weight:600; line-height:1.1; font-size:clamp(2.2rem,5vw,3.9rem); letter-spacing:-0.01em; }
.display.xl { font-size:clamp(2.8rem,6.5vw,5.4rem); line-height:1.05; }
.display.sm { font-size:clamp(1.4rem,3vw,2.2rem); }
.eyebrow { font-size:.68rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--goldink); margin-bottom:14px; }
.lede { font-size:clamp(1rem,1.5vw,1.15rem); color:var(--muted); max-width:620px; margin-top:24px; }
.gold { color:var(--goldink); }
h3 { font-family:'Playfair Display',serif; font-weight:600; font-size:1.3rem; }

/* nav */
.nav { position:fixed; top:0; left:0; right:0; z-index:60; background:rgba(255,255,255,.85); backdrop-filter:blur(14px); border-bottom:1px solid var(--hair2); transition:transform .45s ease; }
.nav.hide { transform:translateY(-100%); }
.nav-in { display:flex; align-items:center; justify-content:space-between; padding-top:15px; padding-bottom:15px; }
.brand { font-family:'Playfair Display',serif; font-weight:600; font-size:1.05rem; text-decoration:none; letter-spacing:.02em; }
.brand span { color:var(--goldink); }
.brand.big { font-size:1.6rem; }
.nav nav { display:flex; align-items:center; gap:26px; }
.nav nav a { text-decoration:none; font-size:.7rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); transition:color .3s; }
.nav nav a:hover, .nav nav a.on { color:var(--ink); }
.pill { background:var(--ink); color:#fff !important; padding:10px 22px; border-radius:999px; font-weight:600 !important; border:none; cursor:pointer; text-decoration:none; font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; display:inline-block; transition:transform .3s ease, box-shadow .3s ease; }
.pill:hover { transform:translateY(-2px); box-shadow:0 12px 30px rgba(29,78,216,.30); }
.pill.big { padding:15px 34px; font-size:.75rem; }

/* hero with image */
.hero .lede { color:rgba(34,31,27,.78); }
.hero { min-height:94vh; display:flex; align-items:center; padding:150px 0 90px; position:relative; overflow:hidden; }
.hero-bg { position:absolute; inset:0; z-index:-1; }
.hero-bg img { width:100%; height:100%; object-fit:cover; object-position:center 42%; }
.hero-bg::after { content:''; position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(255,255,255,.985) 0%, rgba(255,255,255,.95) 42%, rgba(255,255,255,.62) 72%, rgba(255,255,255,.3) 100%),
             linear-gradient(to top, var(--bg) 0%, rgba(255,255,255,0) 30%); }
.hero .line { display:block; overflow:hidden; }
.hero .line { padding-bottom:.08em; margin-bottom:-.08em; }
.hero .line span { display:block; transform:translateY(112%); animation:rise .9s cubic-bezier(.22,1,.36,1) forwards; padding-bottom:.06em; }
.hero .line:nth-child(2) span { animation-delay:.12s; }
@keyframes rise { to { transform:translateY(0); } }
.scroll-cue { position:absolute; bottom:26px; left:50%; transform:translateX(-50%); font-size:.62rem; letter-spacing:.3em; text-transform:uppercase; color:var(--muted); animation:cue 2.2s ease-in-out infinite; }
@keyframes cue { 50% { transform:translate(-50%,8px); opacity:.4; } }
.tlink { color:var(--ink); text-decoration:none; font-size:.85rem; border-bottom:2px solid var(--gold); padding-bottom:3px; margin-left:22px; transition:color .3s; font-weight:500; }
.tlink:hover { color:var(--goldink); }
.hero .rv.d3, .hero .rv.d4 { animation:fadeup .9s ease .45s forwards; opacity:0; }
.hero .rv.d4 { animation-delay:.6s; margin-top:36px; }
@keyframes fadeup { from { opacity:0; transform:translateY(20px); } to { opacity:1; transform:none; } }
.hero .eyebrow { animation:fadeup .8s ease .1s forwards; opacity:0; }

/* capabilities strip */
.caps { border-top:1px solid var(--hair2); border-bottom:1px solid var(--hair2); background:var(--card); }
.caps .shell { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
.cap { padding:26px 18px; text-decoration:none; border-left:1px solid var(--hair2); transition:background .3s; }
.cap:first-child { border-left:none; }
.cap:hover { background:#F7F7F5; }
.cap .cn { font-family:'Playfair Display',serif; font-size:1.6rem; font-weight:600; color:var(--goldink); }
.cap .cl { font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin-top:4px; }

/* dark bands */
.band { background:var(--band); color:var(--bandink); padding:80px 0; margin:100px 0; }
.band .eyebrow { color:var(--gold); }
.band .lede, .band p { color:var(--bandmuted); }
.stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:36px; }
.stat .n { font-family:'Playfair Display',serif; font-weight:600; font-size:clamp(2.2rem,4.2vw,3.4rem); color:var(--gold); line-height:1; }
.stat .l { font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--bandmuted); margin-top:12px; max-width:230px; }
.band.pad-sm { padding:64px 0; margin:80px 0; }

/* ventures intro */
.ventures { padding:90px 0 20px; }
.vgrid { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:44px; }
@media (max-width:820px){ .vgrid { grid-template-columns:1fr; } }
.vcard { background:var(--card); border:1px solid var(--hair2); padding:36px 32px; text-decoration:none; display:block; transition:transform .4s ease, box-shadow .4s ease; box-shadow:0 1px 0 rgba(34,31,27,.03); }
.vcard:hover { transform:translateY(-5px); box-shadow:0 24px 50px rgba(34,31,27,.10); }
.vcard h3 { margin:6px 0 10px; }
.vcard p { font-size:.9rem; color:var(--muted); }
.vcard .go { display:inline-block; margin-top:16px; font-size:.72rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--goldink); }
.vcard:hover .go .arrow { transform:translateX(6px); }

/* process */
.process { padding:20px 0 40px; }
.pgrid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:44px; }
@media (max-width:760px){ .pgrid { grid-template-columns:1fr; } }
.pstep { border-top:3px solid var(--gold); background:var(--card); border:1px solid var(--hair2); border-top:3px solid var(--gold); padding:30px 28px; }
.pstep .pn { font-family:'Playfair Display',serif; font-size:1.5rem; font-weight:600; color:var(--goldink); }
.pstep h3 { margin:8px 0 8px; }
.pstep p { font-size:.88rem; color:var(--muted); }

/* industries */
.industries { padding:70px 0 30px; }
.indgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:14px; margin-top:44px; }
.ind { background:var(--card); border:1px solid var(--hair2); border-left:3px solid var(--gold); padding:24px 22px; transition:transform .35s ease, box-shadow .35s ease; }
.ind:hover { transform:translateY(-4px); box-shadow:0 18px 40px rgba(34,31,27,.09); }
.ind h3 { font-size:1.05rem; }
.ind p { font-size:.82rem; color:var(--muted); margin-top:6px; }

/* featured + ledger rows */
.home-work { padding:70px 0 60px; }
.feat, .row a, .row-in { display:grid; grid-template-columns:90px 1fr 220px 40px; gap:22px; align-items:center; padding:30px 6px; border-bottom:1px solid var(--hair); text-decoration:none; transition:background .35s, padding-left .35s; }
.row a, .row-in { grid-template-columns:74px 1fr 190px 130px 40px; }
.feat:hover, .row a:hover { background:#F8F8F6; padding-left:18px; }
.no { font-family:'Playfair Display',serif; font-size:clamp(1.6rem,3vw,2.4rem); color:var(--goldink); font-weight:500; }
.no.dim { color:var(--muted); }
.ft .t, .rt .t { display:block; font-family:'Playfair Display',serif; font-weight:600; font-size:clamp(1.15rem,2.2vw,1.6rem); }
.ft .d, .rt .d { display:block; font-size:.83rem; color:var(--muted); margin-top:6px; max-width:560px; }
.fm { font-family:'Playfair Display',serif; font-size:1.5rem; font-weight:600; text-align:right; color:var(--goldink); }
.fm .ms, .mv .ms { font-family:'Inter',sans-serif; font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; display:block; color:var(--muted); margin-top:4px; }
.rv2, .rc { font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }
.arrow { color:var(--goldink); font-size:1.2rem; transition:transform .3s; display:inline-block; }
.feat:hover .arrow, .row a:hover .arrow, .next:hover .arrow { transform:translateX(8px); }
.arrow.dim { opacity:0; }
.ledger { list-style:none; margin:30px 0 100px; }
@media (max-width:860px){ .feat, .row a, .row-in { grid-template-columns:52px 1fr 30px; } .rv2, .rc, .fm { display:none; } }

/* photo bands */
.photo-band { height:58vh; overflow:hidden; position:relative; margin:100px 0; }
.photo-band img { width:100%; height:130%; object-fit:cover; }
@supports (animation-timeline: view()) {
  .photo-band.parallax img { animation:par linear both; animation-timeline:view(); }
  @keyframes par { from { transform:translateY(-12%); } to { transform:translateY(0); } }
}

/* offers */
.offers { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; margin-top:48px; }
.offer { background:var(--card); border:1px solid var(--hair2); padding:32px 28px; transition:transform .4s ease, box-shadow .4s; }
.offer:hover { transform:translateY(-5px); box-shadow:0 24px 50px rgba(34,31,27,.10); }
.offer .ohead { display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
.offer .op { font-size:.85rem; font-weight:600; white-space:nowrap; color:var(--goldink); }
.offer p { font-size:.87rem; color:var(--muted); margin:14px 0 18px; }
.offer .eyebrow { margin:0; color:var(--muted); }

/* case pages */
main { padding-top:70px; }
.case-hero { padding:120px 0 40px; }
.meta-strip { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:28px; border-top:1px solid var(--hair); border-bottom:1px solid var(--hair); padding:30px 0; margin:40px 0 20px; background:transparent; }
.mv { font-size:.95rem; }
.mv.gold { font-family:'Playfair Display',serif; font-size:1.5rem; font-weight:600; color:var(--goldink); }
.prose { padding:50px 0; display:grid; gap:44px; }
.prose p { max-width:68ch; color:var(--muted); font-size:1.02rem; }
.prose.two { grid-template-columns:1fr 1fr; gap:54px 64px; }
.prose h2, .prose h3 { margin-bottom:12px; }
@media (max-width:760px){ .prose.two { grid-template-columns:1fr; } }
.imgs { display:grid; gap:40px; padding:30px 0 20px; }
.frame { background:var(--card); border:1px solid var(--hair2); border-radius:14px; padding:14px; box-shadow:0 30px 70px rgba(34,31,27,.14); }
.frame img { width:100%; display:block; border-radius:8px; }
.frame figcaption { font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); padding:14px 6px 4px; }
.next-wrap { padding:20px 0 110px; }
.next { display:block; text-decoration:none; border:1px solid var(--hair2); padding:44px 40px; background:var(--card); transition:box-shadow .4s, transform .4s; }
.next:hover { box-shadow:0 24px 50px rgba(34,31,27,.10); transform:translateY(-4px); }

/* about + strip */
.about { padding:60px 0 30px; }
.about-grid { display:grid; grid-template-columns:340px 1fr; gap:52px; align-items:start; margin-top:24px; }
@media (max-width:760px){ .about-grid { grid-template-columns:1fr; } }
.strip { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:44px; }
@media (max-width:700px){ .strip { grid-template-columns:1fr; } }
.strip img { height:240px; object-fit:cover; }

/* contact */
.contact { padding:70px 0 120px; }
form { max-width:640px; margin-top:40px; display:grid; gap:16px; }
.row2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:600px){ .row2 { grid-template-columns:1fr; } }
label { font-size:.66rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
input, select, textarea { width:100%; font-family:'Inter',sans-serif; font-size:.95rem; padding:13px 15px; border:1px solid var(--hair); background:var(--card); color:var(--ink); margin-top:8px; border-radius:4px; }
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--goldink); }
textarea { min-height:130px; resize:vertical; }
#formmsg { font-size:.9rem; }

/* footer (dark) */
.foot { background:var(--band); color:var(--bandink); padding:70px 0 46px; margin-top:60px; }
.foot .brand span { color:var(--gold); }
.foot-grid { display:grid; grid-template-columns:1fr 200px 220px; gap:40px; margin-bottom:44px; }
@media (max-width:700px){ .foot-grid { grid-template-columns:1fr; } }
.foot .eyebrow { color:var(--gold); }
.foot a { display:block; color:var(--bandmuted); text-decoration:none; font-size:.85rem; padding:4px 0; }
.foot a:hover { color:var(--gold); }
.foot p { color:var(--bandmuted); font-size:.85rem; }
.fine { font-size:.72rem; color:var(--bandmuted); border-top:1px solid var(--bandhair); padding-top:26px; }

/* reveals */
.rv { opacity:0; transform:translateY(26px); transition:opacity .8s ease, transform .8s cubic-bezier(.22,1,.36,1); }
.rv.in { opacity:1; transform:none; }
.rv.d1 { transition-delay:.08s; } .rv.d2 { transition-delay:.16s; } .rv.d3 { transition-delay:.24s; } .rv.d4 { transition-delay:.32s; }

@media (prefers-reduced-motion: reduce) {
  .rv { opacity:1; transform:none; transition:none; }
  .hero .line span { animation:none; transform:none; }
  .hero .rv { animation:none; opacity:1; }
  .scroll-cue { animation:none; }
  html { scroll-behavior:auto; }
}
