:root{
  --night:#050B1A; --midnight:#0A1428; --horizon:#12233F; --ink:#E9E4D6;
  --muted:#9BA6B8; --gold:#C8A24D; --gold-soft:rgba(200,162,77,.28); --cyan:#7FB2FF;
  --rule:rgba(233,228,214,.10); --card:rgba(255,255,255,.025);
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--night);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;letter-spacing:.005em;margin:0}
h1{font-size:clamp(2.4rem,5.2vw,4.1rem);line-height:1.08}
h2{font-size:clamp(1.7rem,3vw,2.5rem);line-height:1.15}
h3{font-size:1.22rem;line-height:1.3}
p{margin:0 0 1.05em}
.wrap{width:min(1180px,92vw);margin:0 auto}
.narrow{width:min(820px,92vw);margin:0 auto}
.eyebrow{font-family:var(--sans);font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:.8rem;margin-bottom:1.4rem}
.eyebrow::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,var(--gold-soft),transparent)}
.lede{font-size:clamp(1.05rem,1.6vw,1.3rem);color:#CFC9BB;line-height:1.55}
.muted{color:var(--muted)}
.small{font-size:.9rem}
section{padding:clamp(4rem,8vw,7.5rem) 0;position:relative}
.rule{border:0;border-top:1px solid var(--rule);margin:0}
/* header */
.site-header{position:fixed;inset:0 0 auto 0;z-index:60;transition:background .3s,border-color .3s,backdrop-filter .3s;border-bottom:1px solid transparent}
.site-header.scrolled{background:rgba(5,11,26,.86);backdrop-filter:blur(14px);border-bottom-color:var(--rule)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:.95rem 0}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none}
.brand svg{width:26px;height:26px;flex:none}
.brand .mark-star{transform-origin:center;animation:breathe 6s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
.brand-name{font-family:var(--serif);font-size:1.04rem;letter-spacing:.14em;color:var(--ink);white-space:nowrap}
.brand-name b{color:var(--gold);font-weight:500}
.nav-right{display:flex;align-items:center;gap:1rem}
.nav-lang{display:none}   /* the in-panel language row is a phone-only affordance */
.nav-links{display:flex;align-items:center;gap:1.05rem;list-style:none;margin:0;padding:0}
.nav-links a{text-decoration:none;font-size:.78rem;letter-spacing:.05em;color:#C6C0B2;transition:color .2s;white-space:nowrap}
.nav-links a:hover,.nav-links a[aria-current="page"]{color:var(--gold)}
.btn{display:inline-block;padding:.72rem 1.1rem;border:1px solid var(--gold-soft);color:var(--ink);text-decoration:none;font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;transition:.25s;background:transparent;white-space:nowrap}
.btn:hover{background:var(--gold);border-color:var(--gold);color:#0A1428}
.btn-solid{background:var(--gold);border-color:var(--gold);color:#0A1428}
.btn-solid:hover{background:#DCB55C;border-color:#DCB55C}
.nav-toggle{display:none;background:none;border:1px solid var(--rule);color:var(--ink);padding:.5rem .7rem;font-size:.8rem;letter-spacing:.1em}
/* hero */
.hero{min-height:88vh;display:flex;align-items:flex-end;padding:9rem 0 5rem;background-image:linear-gradient(180deg,rgba(5,11,26,.55) 0%,rgba(5,11,26,.35) 45%,rgba(5,11,26,.94) 100%),url("../img/web/hero-north-star-16x9.jpg");background-size:cover;background-position:center 40%}
.hero-inner{max-width:840px}
.hero h1{margin-bottom:1.5rem}
.hero .lede{max-width:620px;margin-bottom:2rem}
.hero-actions{display:flex;flex-wrap:wrap;gap:.9rem;margin-bottom:2.2rem}
.hero-foot{font-size:.82rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
/* grids & cards */
.grid{display:grid;gap:1.2rem}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--card);border:1px solid var(--rule);padding:1.7rem;transition:border-color .3s,transform .3s}
.card:hover{border-color:var(--gold-soft);transform:translateY(-3px)}
.card h3{margin-bottom:.7rem}
.card p:last-child{margin-bottom:0}
.stat{font-family:var(--serif);font-size:2.1rem;color:var(--gold);line-height:1;margin-bottom:.6rem}
.source{font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:1rem}
.num{font-family:var(--serif);color:var(--gold);font-size:.95rem;letter-spacing:.1em}
.split{display:grid;grid-template-columns:1fr 1fr;gap:3.5rem;align-items:start}
.figure{margin:0;border:1px solid var(--rule);background:#071026}
.figure img{width:100%}
.figure figcaption{font-size:.78rem;color:var(--muted);padding:.7rem .9rem;border-top:1px solid var(--rule)}
/* cases */
.case{display:grid;grid-template-columns:180px 1fr;gap:2.2rem;padding:2.6rem 0;border-top:1px solid var(--rule)}
.case:first-of-type{border-top:0}
.case h3{margin-bottom:.9rem}
.case .label{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:.5rem}
.case ul{margin:.4rem 0 1rem;padding-left:1.1rem;color:#CFC9BB}
.case li{margin-bottom:.35rem}
.tag{display:inline-block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan);border:1px solid rgba(127,178,255,.3);padding:.2rem .55rem;margin-top:.8rem}
/* comparison */
table.cmp{width:100%;border-collapse:collapse;margin-top:1.5rem}
table.cmp th,table.cmp td{border-top:1px solid var(--rule);padding:.95rem .8rem;text-align:left;font-size:.95rem;vertical-align:top}
table.cmp th{font-family:var(--sans);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:500}
table.cmp td:first-child{color:var(--muted);width:26%}
table.cmp td:last-child{color:var(--ink)}
/* film */
dialog{border:1px solid var(--gold-soft);background:var(--midnight);color:var(--ink);max-width:520px;padding:2rem}
dialog::backdrop{background:rgba(2,5,12,.82)}
dialog h3{margin-bottom:.8rem}
/* insights */
.essay{padding:2.4rem 0;border-top:1px solid var(--rule)}
.essay:first-of-type{border-top:0}
.essay .meta{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.7rem}
/* cta */
.cta{border-top:1px solid var(--gold-soft);border-bottom:1px solid var(--gold-soft);text-align:center;padding:clamp(3.5rem,7vw,6rem) 0;background-image:radial-gradient(120% 100% at 50% 0%,rgba(200,162,77,.10),rgba(5,11,26,.86) 62%),url("../img/hero-stars-loop.webp");background-size:auto,cover;background-position:center,center}
.cta h2{max-width:760px;margin:0 auto 1.2rem}
.cta .lede{max-width:600px;margin:0 auto 2rem}
/* footer */
footer{padding:4rem 0 3rem;border-top:1px solid var(--rule);background:#040914}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2.5rem}
footer a{color:#C6C0B2;text-decoration:none}
footer a:hover{color:var(--gold)}
footer ul{list-style:none;margin:0;padding:0}
footer li{margin-bottom:.5rem;font-size:.9rem}
.disclosure{margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--rule);font-size:.78rem;color:#7E8898;max-width:900px}
/* reveal */
.reveal{opacity:1;transform:none}
body.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .8s ease,transform .8s ease}
body.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){body.js .reveal{opacity:1;transform:none;transition:none}.brand .mark-star{animation:none}}
@media (max-width:960px){
  .g3,.g4{grid-template-columns:repeat(2,1fr)}
  .split{gap:2.2rem}
  .case{grid-template-columns:1fr;gap:1rem}
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  .split{gap:1.4rem}
}
@media (max-width:600px){
  .split{grid-template-columns:1fr;gap:2rem}
  /* phone: text first, image after — regardless of the desktop order */
  .split > div{order:1}
  .split > figure{order:2}
}
/* The one-line header needs ~1120px (brand + seven links + switcher + CTA).
   Below that the CTA leaves the row; below 1024px the links move into the panel. */
@media (max-width:1120px){
  .nav-right .btn{display:none}
}
@media (max-width:1024px){
  .nav-links{position:fixed;inset:64px 0 auto 0;flex-direction:column;align-items:flex-start;gap:0;background:#050B1A;border-bottom:1px solid var(--rule);box-shadow:0 22px 48px rgba(0,0,0,.55);padding:1rem 6vw 1.4rem;display:none;max-height:calc(100vh - 64px);overflow-y:auto}
  .nav-links.open{display:flex}
  .nav-links li{width:100%;padding:.55rem 0;border-bottom:1px solid var(--rule)}
  .nav-links li:last-child{border-bottom:0}
  .nav-toggle{display:block}
}
@media (max-width:680px){
  body{font-size:16px}
  .g2,.g3,.g4{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr}
}


/* module subtitle — brand lines under the 4C headings */
.module-sub{font-family:var(--serif);font-style:italic;color:var(--gold);font-size:1.06rem;line-height:1.5;margin:.55rem 0 1.1rem}
:lang(zh) .module-sub,:lang(ja) .module-sub,:lang(ko) .module-sub{font-style:normal;font-size:1rem;letter-spacing:.02em}


/* 5C — the Crossing card spans the row on the home page */
.card-wide{grid-column:1/-1;border-color:rgba(200,162,77,.34)}
.card-wide .tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.1rem 0 1rem;padding:0;list-style:none}
.card-wide .tags li{font-size:.76rem;letter-spacing:.06em;color:var(--muted);border:1px solid var(--rule);padding:.35rem .65rem}
@media (max-width:700px){.card-wide .tags li{font-size:.72rem}}


/* language switcher — five languages in the header */
.lang-switch{display:flex;align-items:center;gap:.7rem;font-size:.72rem;letter-spacing:.09em;color:var(--muted);white-space:nowrap}
.lang-switch span[aria-current]{color:var(--gold);font-weight:600}
.lang-switch a{color:var(--muted);text-decoration:none;padding-bottom:1px;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}
.lang-switch a:hover{color:var(--ink);border-bottom-color:var(--gold-soft)}
@media (max-width:900px){.lang-switch{gap:.5rem;font-size:.68rem}}


/* ------------------------------------------------------------------
   Phone header (<=680px)
   The header row on a phone only has room for the brand, the language
   switcher and one control. "Start a conversation" moves out of the row
   (the menu still links to Contact) so the menu has room to expand.
   ------------------------------------------------------------------ */
@media (max-width:680px){
  .nav{gap:.7rem}
  /* the header row only fits the brand and the menu button: languages move into the panel */
  .nav-right .lang-switch{display:none}
  .nav-lang{display:block}
  .nav-lang .lang-switch{gap:.9rem;font-size:.8rem}
  .lang-switch{gap:.45rem;font-size:.64rem}
  .nav-toggle{padding:.45rem .6rem;font-size:.74rem;letter-spacing:.08em}
  .nav-toggle::before{content:'\2630';display:inline-block;margin-right:.4rem;font-size:1.05em;line-height:1;vertical-align:-.06em}
  .nav-toggle[aria-expanded="true"]{border-color:var(--gold);color:var(--gold)}
}
