/* ============================================================
   ALMO Nexus — site stylesheet
   Palette sampled from logo.jpg. One added hue (copper) with a
   stated job: cyan = what the systems do, copper = what the two
   humans do. Remove --copper and the page still stands.
   ============================================================ */

:root{
  /* ground */
  --ink:        #01071D;   /* logo field. Used as bands, never as the document. */
  --ink-raise:  #0A1024;
  --paper:      #EFEAE3;   /* warm plaster — perceptibly warm, greyer than cream */
  --card:       #FBF9F6;

  /* logo ramp */
  --deep:       #0033B3;
  --signal:     #007DF5;
  --cyan:       #0DB6F9;

  /* the human channel */
  --copper:     #A24E22;   /* on paper  — 6.1:1 */
  --copper-lit: #E0996A;   /* on ink    — 8.7:1 */

  /* type colour */
  --on-paper:      #12131A;
  --on-paper-body: #3F4048;
  --on-ink:        #FFFFFF;
  --on-ink-body:   #CDC8C2;  /* warm grey, 11:1 on ink */
  --rule:          #D9D1C6;
  --rule-ink:      #23304C;

  --rail-x: 56px;
  --shell: 1240px;
  --u: 24px;
}

*{box-sizing:border-box}
body{
  margin:0;
  background:var(--paper);
  color:var(--on-paper-body);
  font-family:"Schibsted Grotesk","Helvetica Neue",Arial,sans-serif;
  font-size:19px; line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{margin:0; color:var(--on-paper); font-weight:600; letter-spacing:-0.005em}
h1{font-size:60px; line-height:1.0; letter-spacing:-0.02em}
h2{font-size:35px; line-height:1.2; letter-spacing:-0.01em}
h3{font-size:24px; line-height:1.25}
p{margin:0}
a{color:var(--deep); text-decoration-thickness:1px; text-underline-offset:3px}
ul,ol{margin:0; padding:0; list-style:none}
svg{display:block}
img{max-width:100%}
[id]{scroll-margin-top:84px}   /* anchors land below the sticky header */

:focus-visible{outline:2px solid var(--signal); outline-offset:3px; border-radius:2px}
.on-ink :focus-visible{outline-color:var(--cyan)}

.shell{max-width:var(--shell); margin:0 auto; padding:0 28px}

/* fields ------------------------------------------------------ */
.field-ink{background:var(--ink); color:var(--on-ink-body)}
.field-ink h1,.field-ink h2,.field-ink h3{color:var(--on-ink)}
.field-paper{background:var(--paper)}

/* header ------------------------------------------------------ */
.masthead{
  position:sticky; top:0; z-index:50;
  background:var(--ink);
  border-bottom:1px solid transparent;
}
.masthead.is-stuck{border-bottom-color:var(--rule-ink)}
.masthead .shell{display:flex; align-items:center; gap:32px; height:72px}
.brand{display:flex; align-items:center; flex:none; text-decoration:none}
.brand img{display:block; height:50px; width:auto}
.nav{display:flex; gap:26px; margin-left:auto; align-items:center}
.nav a{color:var(--on-ink-body); text-decoration:none; font-size:16px}
.nav a:hover,.nav a[aria-current]{color:#fff}
.nav a.btn{color:var(--ink)}
.nav a.btn:hover{color:var(--ink)}
.nav-toggle{display:none}

/* buttons ----------------------------------------------------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  height:48px; padding:0 22px; border-radius:4px;
  font:inherit; font-size:16px; font-weight:500; letter-spacing:0;
  text-decoration:none; border:1px solid transparent; cursor:pointer;
  transition:background-color .12s ease, border-color .12s ease, color .12s ease;
}
.btn-sm{height:38px; padding:0 18px; font-size:15px}
.btn-solid{background:#fff; color:var(--ink)}
.btn-solid:hover{background:var(--cyan); color:var(--ink)}
.btn-line{background:transparent; color:#fff; border-color:rgba(255,255,255,.5)}
.btn-line:hover{border-color:var(--cyan); color:var(--cyan)}
.btn-ink{background:var(--ink); color:#fff}
.btn-ink:hover{background:var(--deep)}
.btn-ink-line{background:transparent; color:var(--on-paper); border-color:var(--on-paper)}
.btn-ink-line:hover{border-color:var(--deep); color:var(--deep)}
.btn-row{display:flex; flex-wrap:wrap; gap:12px}

/* hero (home) ------------------------------------------------- */
.hero .shell{
  display:grid; grid-template-columns:minmax(0,48fr) minmax(0,52fr);
  gap:56px; align-items:center;
  padding-top:88px; padding-bottom:96px;
}
.hero h1{max-width:9.5em}
.hero-sub{
  margin-top:22px; max-width:30em; font-size:20px; line-height:1.55;
  color:var(--on-ink-body);
}
.hero .btn-row{margin-top:32px}
.hero-who{
  margin-top:28px; padding-top:20px; border-top:1px solid var(--rule-ink);
  font-size:16px; color:var(--on-ink-body);
}
.hero-who b{color:#fff; font-weight:500}
.diagram-mobile{display:none}

/* hero (inner pages) — the same ink field, one column ---------- */
.page-hero .shell{padding-top:84px; padding-bottom:88px}
.page-hero h1{max-width:11em}
.page-hero .hero-sub{max-width:36em}
.page-hero .btn-row{margin-top:32px}
.eyebrow{
  margin:0 0 20px; font-size:15px; font-weight:600; letter-spacing:.06em;
  color:var(--copper-lit);
}
.field-paper .eyebrow{color:var(--copper)}

/* generic section rhythm -------------------------------------- */
.band{padding:112px 0}
.band-tight{padding:88px 0}
.band-head{max-width:22em; margin-bottom:48px}
.band-head p{margin-top:14px; font-size:19px}

/* the rail (conductor) ---------------------------------------- */
.railed{position:relative; padding-left:var(--rail-x)}
.railed::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:2px;
  background:var(--copper);
}

/* symptoms — hollow stations: unfixed things ------------------ */
.symptoms li{
  position:relative; padding:16px 0; font-size:21px; line-height:1.45;
  color:var(--on-paper); border-bottom:1px solid var(--rule);
}
.symptoms li::before{
  content:""; position:absolute; left:calc(-1 * var(--rail-x)); top:26px;
  width:11px; height:11px; margin-left:-4.5px; border-radius:50%;
  background:var(--paper); border:2px solid var(--copper);
}
.symptoms li::after{ /* elbow */
  content:""; position:absolute; left:calc(-1 * var(--rail-x) + 9px); top:31px;
  width:calc(var(--rail-x) - 22px); height:2px; background:var(--copper);
}
.verdict{
  position:relative; margin-top:40px; max-width:26em;
  font-size:24px; line-height:1.35; font-weight:600; color:var(--on-paper);
}
.verdict::before{ /* filled station: something you can act on */
  content:""; position:absolute; left:calc(-1 * var(--rail-x)); top:12px;
  width:13px; height:13px; margin-left:-5.5px; border-radius:50%;
  background:var(--deep);
}
.verdict::after{
  content:""; position:absolute; left:calc(-1 * var(--rail-x) + 7px); top:18px;
  width:calc(var(--rail-x) - 20px); height:2px; background:var(--deep);
}

/* fixes — filled stations: one line each, things we build ------ */
.fixes li{
  position:relative; padding:16px 0; font-size:21px; line-height:1.45;
  color:var(--on-paper); border-bottom:1px solid var(--rule);
}
.fixes li::before{
  content:""; position:absolute; left:calc(-1 * var(--rail-x)); top:27px;
  width:11px; height:11px; margin-left:-4.5px; border-radius:50%;
  background:var(--deep);
}
.fixes li::after{
  content:""; position:absolute; left:calc(-1 * var(--rail-x) + 7px); top:32px;
  width:calc(var(--rail-x) - 20px); height:2px; background:var(--deep);
}

/* stations — filled stations with a heading and a paragraph ---- */
.stations > li{position:relative; padding:30px 0; border-top:1px solid var(--rule)}
.stations h3{font-size:26px; letter-spacing:-0.01em}
.stations h3 .tag{
  display:inline-block; vertical-align:middle; margin-left:12px;
  font-size:13px; font-weight:600; letter-spacing:.06em; color:var(--copper);
}
.stations p{margin-top:10px; max-width:36em}
.stations p + p{margin-top:12px}
.stations > li::before{
  content:""; position:absolute; left:calc(-1 * var(--rail-x)); top:41px;
  width:11px; height:11px; margin-left:-4.5px; border-radius:50%;
  background:var(--deep);
}
.stations > li::after{
  content:""; position:absolute; left:calc(-1 * var(--rail-x) + 7px); top:46px;
  width:calc(var(--rail-x) - 20px); height:2px; background:var(--deep);
}
.ticks{margin-top:14px; max-width:36em}
.ticks li{position:relative; padding:5px 0 5px 24px; font-size:18px}
.ticks li::before{
  content:""; position:absolute; left:0; top:17px; width:12px; height:2px;
  background:var(--copper);
}

/* prose block ------------------------------------------------- */
.prose{max-width:36em}
.prose p + p{margin-top:14px}

/* the honest note — the one card, double ring on the rail ------ */
.note{
  position:relative; margin-top:56px; max-width:40em; padding:28px;
  border-radius:6px; background:var(--card); border:1px solid rgba(0,51,179,.28);
  font-size:20px; line-height:1.45; color:var(--on-paper);
}
.note b{font-weight:600}
.railed .note::before{
  content:""; position:absolute; left:calc(-1 * var(--rail-x) - 1px); top:34px;
  width:15px; height:15px; margin-left:-6.5px; border-radius:50%;
  background:var(--card); border:3px solid var(--deep);
}
.railed .note::after{
  content:""; position:absolute; left:calc(-1 * var(--rail-x) + 7px); top:40px;
  width:calc(var(--rail-x) - 20px); height:2px; background:var(--deep);
}

/* services ---------------------------------------------------- */
.services{margin-top:8px}
.svc{
  position:relative; display:grid; grid-template-columns:64px minmax(0,1fr) 28px;
  gap:24px; align-items:start;
  padding:28px 0; border-top:1px solid var(--rule);
  text-decoration:none; color:inherit;
}
.svc:hover{background:rgba(0,51,179,.045)}
.svc:hover .svc-name{color:var(--deep)}
.svc-num{
  font-size:15px; font-weight:600; color:var(--copper);
  letter-spacing:.06em; padding-top:6px;
}
.svc-name{display:block; font-size:26px; font-weight:600; color:var(--on-paper); letter-spacing:-0.01em}
.svc-line{display:block; margin-top:6px; font-size:18px; max-width:34em}
.svc-go{padding-top:8px; color:var(--deep); font-size:20px; line-height:1}
.svc::before{ /* station on the rail */
  content:""; position:absolute; left:calc(-1 * var(--rail-x)); top:38px;
  width:11px; height:11px; margin-left:-4.5px; border-radius:50%;
  background:var(--deep);
}
.svc::after{
  content:""; position:absolute; left:calc(-1 * var(--rail-x) + 7px); top:43px;
  width:calc(var(--rail-x) - 20px); height:2px; background:var(--deep);
}

/* the earned step */
.svc-earned{
  margin-top:64px; border-top:0; border-radius:6px;
  background:var(--card); border:1px solid rgba(0,51,179,.28);
  padding:32px 28px;
  grid-template-columns:64px minmax(0,1fr) 28px;
}
.svc-earned .svc-num{color:var(--deep)}
.svc-earned::before{
  top:42px; width:15px; height:15px; margin-left:-6.5px;
  background:var(--card); border:3px solid var(--deep);
}
.svc-earned::after{top:48px}
/* the approach to 05 goes dashed: you have not earned this yet */
.gap-dashed{
  position:absolute; left:calc(-1 * var(--rail-x)); top:-64px;
  width:2px; height:64px;
  background:repeating-linear-gradient(to bottom,
    var(--copper) 0 6px, var(--paper) 6px 13px);
}
.band-head-mid{margin-top:112px}

/* secondary capabilities — deliberately lighter than the five --- */
.light-list{max-width:46em; border-top:1px solid var(--rule)}
.light-list li{padding:14px 0; border-bottom:1px solid var(--rule); font-size:17px}
.light-list b{font-weight:600; color:var(--on-paper)}
.light-list + .also{border-top:0; padding-top:20px}

/* process — the conductor turns the corner --------------------- */
.rail-elbow{position:relative; height:0}
.rail-elbow::before{
  content:""; position:absolute; left:calc(-1 * var(--rail-x)); top:0;
  width:var(--rail-x); height:2px; background:var(--copper);
}
.process-shift{padding-left:var(--rail-x)}
.process{display:grid; grid-template-columns:repeat(5,1fr)}
.process-3{grid-template-columns:repeat(3,1fr); max-width:760px}
.step{position:relative; padding:34px 18px 0 0}
.step::before{
  content:""; position:absolute; left:0; top:0; right:0; height:2px;
  background:var(--copper);
}
.step:last-child::before{right:18px}
.step::after{
  content:""; position:absolute; left:0; top:-5px;
  width:12px; height:12px; border-radius:50%; background:var(--copper);
}
.step-n{font-size:14px; font-weight:600; color:var(--copper); letter-spacing:.06em}
.step-t{margin-top:6px; font-size:19px; font-weight:600; color:var(--on-paper); line-height:1.25}
.process-note{
  margin-top:44px; max-width:34em; font-size:19px;
}

/* why --------------------------------------------------------- */
.why-lead{
  font-size:35px; line-height:1.2; font-weight:600; color:var(--on-paper);
  letter-spacing:-0.01em; max-width:16em;
}
.why-mark{display:flex; align-items:center; gap:0; margin:28px 0 40px}
.why-mark i{width:13px; height:13px; border-radius:50%; background:var(--copper)}
.why-mark s{width:76px; height:2px; background:var(--copper); text-decoration:none}
.why-list{max-width:44em}
.why-list li{
  padding:16px 0; border-top:1px solid var(--rule);
  font-size:20px; color:var(--on-paper);
}

/* bios (about) ------------------------------------------------ */
.bios{border-top:1px solid var(--rule)}
.bio{
  display:grid; grid-template-columns:minmax(0,30fr) minmax(0,70fr);
  gap:40px; padding:36px 0; border-bottom:1px solid var(--rule);
}
.bio-name{font-size:24px; font-weight:600; color:var(--on-paper); line-height:1.25}
.bio-role{margin-top:8px; font-size:15px; color:var(--copper)}
.bio-body p + p{margin-top:12px}

/* why + also ------------------------------------------------- */
.why{margin-top:112px}
.also{
  padding:32px 0 0; border-top:1px solid var(--rule);
  font-size:18px; max-width:50em;
}

/* contact ----------------------------------------------------- */
.contact-grid{
  display:grid; grid-template-columns:minmax(0,58fr) minmax(0,42fr);
  gap:56px; align-items:start;
}
.form .field{margin-top:22px}
.form .field:first-child{margin-top:0}
.form label{display:block; margin-bottom:8px; font-size:15px; font-weight:500; color:var(--on-paper)}
.form input,.form select,.form textarea{
  width:100%; font:inherit; font-size:17px; line-height:1.4;
  padding:12px 14px; border:1px solid #B5AC9F; border-radius:4px;
  background:var(--card); color:var(--on-paper);
}
.form textarea{min-height:150px; resize:vertical}
.form input:focus,.form select:focus,.form textarea:focus{
  outline:2px solid var(--signal); outline-offset:1px; border-color:var(--signal);
}
.form .btn{margin-top:28px}
.form-note{margin-top:14px; font-size:15px}

/* form validation, status and success -------------------------- */
.hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.field-hint{margin:8px 0 0; font-size:15px; color:var(--on-paper-body)}
.field-err{margin:8px 0 0; font-size:15px; font-weight:500; color:var(--copper)}
.form input.is-invalid,.form select.is-invalid,.form textarea.is-invalid{
  border-color:var(--copper); background:#FDF6F2;
}
.form-status{margin-top:16px; font-size:16px; font-weight:500}
.form-status.is-error{color:var(--copper)}
.form-status.is-busy{color:var(--on-paper-body)}
.form-done{
  padding:32px; border-radius:6px; background:var(--card);
  border:1px solid rgba(0,51,179,.28); border-left:3px solid var(--deep);
}
.form-done h3{margin:0 0 10px; font-size:24px; color:var(--on-paper)}
.form-done p{margin:0; font-size:18px; line-height:1.5; color:var(--on-paper-body)}
.aside-block{
  padding:28px; border-radius:6px;
  background:var(--card); border:1px solid rgba(0,51,179,.28);
}
.aside-block + .aside-block{margin-top:24px}
.aside-block h3{font-size:22px}
.aside-block p{margin-top:10px; font-size:17px}
.aside-block p + p{margin-top:8px}
.aside-block .btn{margin-top:20px}

/* closing ----------------------------------------------------- */
.closing .shell{padding-top:104px; padding-bottom:104px}
.closing h2{max-width:14em}
.closing p{margin-top:18px; max-width:34em; font-size:20px; color:var(--on-ink-body)}
.closing .btn-row{margin-top:36px}

/* footer ------------------------------------------------------ */
.foot{border-top:1px solid var(--rule-ink)}
.foot .shell{
  display:flex; flex-wrap:wrap; gap:16px 56px; align-items:baseline;
  padding-top:36px; padding-bottom:56px;
  font-size:15px; color:var(--on-ink-body);
}
.foot-brand{width:100%; margin-bottom:8px}
.foot-brand img{display:block; width:220px; height:auto}
.foot a{color:var(--on-ink-body)}
.foot a:hover{color:var(--cyan)}
.foot .terminal{position:relative; padding-left:20px}
.foot .terminal::before{ /* the conductor ends on the inbox */
  content:""; position:absolute; left:0; top:9px;
  width:11px; height:11px; border-radius:50%; background:var(--cyan);
}
.ph{color:#7C8496}

/* diagram ----------------------------------------------------- */
.dg-label{font:500 14px/1 "Schibsted Grotesk",Arial,sans-serif; fill:#E7EAF0}
.dg-hub{font:600 17px/1 "Schibsted Grotesk",Arial,sans-serif; fill:#fff}
.dg-box{fill:#0A1024; stroke:#38455F; stroke-width:1.5}
.dg-hubbox{fill:rgba(13,182,249,.10); stroke:var(--cyan); stroke-width:2}
.dg-human{stroke:var(--copper-lit); stroke-width:2; fill:none; stroke-dasharray:5 5}
.dg-wire{stroke:var(--cyan); stroke-width:2.5; fill:none}
.dg-dot{fill:var(--cyan)}
.dg-cap{font:500 13px/1 "Schibsted Grotesk",Arial,sans-serif; fill:#96A0B5}

/* case studies — each program is a station on the rail --------- */
.provenance{
  max-width:44em; margin-bottom:8px; padding:22px 26px;
  border-radius:6px; background:var(--card); border:1px solid var(--rule);
  border-left:3px solid var(--copper);
}
.provenance p{margin:0; font-size:17px; line-height:1.5; color:var(--on-paper-body)}
.provenance b{font-weight:600; color:var(--on-paper)}

.case{padding:44px 0 8px; border-top:1px solid var(--rule); position:relative}
.case:first-of-type{border-top:0}
.railed .case::before{ /* station on the rail */
  content:""; position:absolute; left:calc(-1 * var(--rail-x)); top:56px;
  width:11px; height:11px; margin-left:-4.5px; border-radius:50%;
  background:var(--deep);
}
.railed .case::after{
  content:""; position:absolute; left:calc(-1 * var(--rail-x) + 7px); top:61px;
  width:calc(var(--rail-x) - 20px); height:2px; background:var(--deep);
}
.case-meta{display:flex; flex-wrap:wrap; align-items:baseline; gap:12px; margin-bottom:10px}
.case-kind{
  font-size:13px; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:var(--deep);
}
.case h2{font-size:30px; line-height:1.16; max-width:20em; margin-bottom:22px}
.case-body{margin:0; max-width:40em}
.case-body dt{
  font-size:13px; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:var(--on-paper-body); margin-top:20px;
}
.case-body dt:first-child{margin-top:0}
.case-body dd{margin:6px 0 0; font-size:18px; line-height:1.52; color:var(--on-paper-body)}
.case-rel{margin-top:22px; font-size:16px; color:var(--on-paper-body)}
.case-rel a{color:var(--deep)}
.case:last-of-type{padding-bottom:0}
.case:last-of-type .case-rel{margin-bottom:0}

/* homepage case cards ----------------------------------------- */
.cases{
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px;
  margin-top:8px;
}
.case-card{
  display:flex; flex-direction:column; gap:10px; padding:26px 24px;
  border-radius:6px; background:var(--card); border:1px solid var(--rule);
  text-decoration:none; color:inherit;
  transition:border-color .15s ease, transform .15s ease;
}
.case-card:hover{border-color:rgba(0,51,179,.45); transform:translateY(-2px)}
.case-card:hover .cc-title{color:var(--deep)}
.cc-kind{
  font-size:12px; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:var(--copper);
}
.cc-title{font-size:20px; font-weight:600; line-height:1.22; color:var(--on-paper); letter-spacing:-0.01em}
.cc-line{font-size:16px; line-height:1.48; color:var(--on-paper-body)}
.cases-more{margin-top:20px}

/* responsive -------------------------------------------------- */
@media (max-width:1080px){
  .cases{grid-template-columns:1fr}
  h1{font-size:48px}
  .hero .shell{grid-template-columns:1fr; gap:40px; padding-top:56px; padding-bottom:64px}
  .hero h1{max-width:none}
  .process{grid-template-columns:repeat(2,1fr); gap:0 24px}
  .process-3{grid-template-columns:repeat(3,1fr)}
  .step{padding-bottom:28px}
}
@media (max-width:760px){
  :root{--rail-x:34px; --u:16px}
  body{font-size:18px}
  h1{font-size:38px}
  h2{font-size:28px}
  .shell{padding:0 20px}
  .masthead .shell{height:60px; gap:16px}
  .brand img{height:40px}
  .nav-toggle{
    display:inline-flex; align-items:center; margin-left:auto;
    height:36px; padding:0 14px; border:1px solid rgba(255,255,255,.5); border-radius:4px;
    background:transparent; color:#fff; font:inherit; font-size:15px; cursor:pointer;
  }
  .nav{
    display:none; position:absolute; left:0; right:0; top:60px;
    flex-direction:column; align-items:stretch; gap:0;
    padding:4px 20px 20px; background:var(--ink); border-bottom:1px solid var(--rule-ink);
  }
  .nav.is-open{display:flex}
  .nav a{padding:14px 0; border-top:1px solid var(--rule-ink); font-size:17px}
  .nav a.btn{margin-top:16px; padding:0 18px; height:48px; border-top-color:transparent}
  .band,.band-tight{padding:72px 0}
  .page-hero .shell{padding-top:56px; padding-bottom:60px}
  .hero-order{display:flex; flex-direction:column}
  .hero-diagram{order:-1}
  .diagram-desktop{display:none}
  .diagram-mobile{display:block}
  .btn{width:100%; height:52px}
  .btn-sm{width:auto}
  .btn-row{flex-direction:column; align-items:stretch}
  .symptoms li,.fixes li{font-size:19px}
  .svc{grid-template-columns:44px minmax(0,1fr); gap:14px}
  .svc-go{display:none}
  .svc-name{font-size:22px}
  .svc-earned{grid-template-columns:44px minmax(0,1fr)}
  .stations h3{font-size:22px}
  .process,.process-3{grid-template-columns:1fr}
  .bio{grid-template-columns:1fr; gap:14px}
  .contact-grid{grid-template-columns:1fr; gap:40px}
  .why-lead{font-size:26px}
  .case h2{font-size:24px}
  .case-body dd{font-size:17px}
  .provenance{padding:18px 20px}
  .provenance p{font-size:16px}
  .cases{grid-template-columns:1fr; gap:14px}
  .case-card{padding:22px 20px}
  .foot .shell{flex-direction:column; gap:10px}
  .foot-brand img{width:190px}
}

@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01ms !important; animation-duration:.01ms !important}
}
