/* Octopus Development — new site (2026).
   Every color comes from the logo: the navy slab, the red "DEVELOPMENT" and the white label box.
   The label box hanging off a navy slab is the one recurring motif. */
:root{
  --navy:#1A478B;          /* logo slab */
  --red:#C22F28;           /* logo "DEVELOPMENT" */
  --ink:#0F2A55;           /* text and footer */
  --tide:#EEF2F8;          /* alternate section background */
  --line:#CBD5E5;
  --muted:#4A5D7E;
  --white:#FFFFFF;
  --font:"Archivo", "Arial", sans-serif;
  --gutter:clamp(16px, 5vw, 56px);
  --max:1180px;
  --space:clamp(64px, 10vw, 128px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--white);color:var(--ink);font:400 1.0625rem/1.6 var(--font);font-variation-settings:"wdth" 100;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:var(--navy);text-underline-offset:.18em}
a:hover{color:var(--red)}
:focus-visible{outline:3px solid var(--red);outline-offset:3px}
h1,h2,h3{margin:0;color:var(--navy);line-height:1.05;text-wrap:balance}
p{margin:0 0 1em;max-width:62ch}
address{font-style:normal}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.skip{position:absolute;left:-999px;top:8px;background:var(--white);padding:8px 12px;z-index:20}
.skip:focus{left:8px}

/* Display type: wide and heavy, like the letters of the logo */
.display{font-weight:900;font-variation-settings:"wdth" 125;letter-spacing:-.01em}
.h2{font-size:clamp(2rem, 4.2vw, 3.1rem);font-weight:850;font-variation-settings:"wdth" 118;margin-bottom:.55em}
.h3{font-size:1.3rem;font-weight:800;font-variation-settings:"wdth" 110}

/* ---------- Header ---------- */
.top{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-bottom:1px solid transparent;transition:border-color .2s}
.top.scrolled{border-bottom-color:var(--line)}
.top .wrap{display:flex;align-items:center;gap:24px;height:76px}
.brand img{width:118px}
.nav{display:flex;align-items:center;gap:28px;margin-left:auto}
.nav a{color:var(--ink);text-decoration:none;font-weight:600}
.nav a:hover{color:var(--red)}
.nav .call{background:var(--navy);color:var(--white);padding:10px 16px;border-radius:4px}
.nav .call:hover{background:var(--ink);color:var(--white)}
.menu-btn{display:none;margin-left:auto;background:none;border:2px solid var(--navy);border-radius:4px;color:var(--navy);font:700 .95rem var(--font);padding:8px 14px;cursor:pointer}

/* ---------- Buttons ---------- */
.btn{display:inline-block;font:700 1rem var(--font);text-decoration:none;padding:15px 24px;border-radius:4px;border:2px solid var(--navy);cursor:pointer}
.btn-solid{background:var(--navy);color:var(--white)}
.btn-solid:hover{background:var(--ink);border-color:var(--ink);color:var(--white)}
.btn-line{background:transparent;color:var(--navy)}
.btn-line:hover{background:var(--navy);color:var(--white)}

/* ---------- The slab + label motif (from the logo) ---------- */
.slab{position:relative;z-index:1;background:var(--navy);color:var(--white)}
.label{display:inline-block;background:var(--white);color:var(--red);border:3px solid var(--navy);font-weight:800;font-variation-settings:"wdth" 112;padding:.35em .8em;line-height:1.2}

/* ---------- Hero ---------- */
.hero{padding-top:clamp(84px, 13vw, 150px)}   /* room for the octopus */
.hero-stage{position:relative}
.octopus{position:absolute;z-index:0;bottom:calc(100% - 2px);right:clamp(16px, 9%, 120px);width:clamp(190px, 31vw, 400px);transform:translateY(0)}
.js .octopus{transform:translateY(100%)}
.js.ready .octopus{transform:translateY(0);transition:transform 1.1s cubic-bezier(.2,.9,.25,1.15) .25s}
.hero .slab{padding:clamp(40px, 6vw, 72px) clamp(24px, 5vw, 64px) clamp(64px, 8vw, 96px)}
.hero h1{color:var(--white);font-size:clamp(2.3rem, 6.4vw, 5.4rem);line-height:.98;max-width:13ch}
.hero .label{position:absolute;z-index:2;left:clamp(24px, 5vw, 64px);bottom:0;transform:translateY(55%);font-size:clamp(1rem, 2.2vw, 1.6rem)}
.hero-after{display:grid;grid-template-columns:minmax(0, 1.25fr) minmax(0, 1fr);gap:24px 56px;align-items:end;padding:clamp(56px, 7vw, 84px) clamp(24px, 5vw, 64px) 0}
.hero-after p{font-size:1.2rem;color:var(--ink);margin:0}
.actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}

/* ---------- Sections ---------- */
section.block{padding:var(--space) 0 0}
.lead{font-size:1.15rem;color:var(--muted);margin-bottom:2.2em}
section.tide{background:var(--tide);margin-top:var(--space);padding:var(--space) 0}

/* Work: each project framed in navy with its name in a hanging label, like the logo */
.feature{display:grid;grid-template-columns:minmax(0, 1fr);gap:0}
.shot{position:relative;margin:0}
.shot img{width:100%;border:2px solid var(--navy);background:var(--white)}
.shot .label{position:absolute;left:18px;bottom:0;transform:translateY(50%);font-size:1.05rem}
.shot-text{padding-top:36px}
.shot-text p{color:var(--muted);margin-bottom:0}
.feature .shot .label{font-size:clamp(1.1rem, 2.2vw, 1.5rem);left:clamp(18px, 3vw, 32px)}
.feature-body{display:grid;grid-template-columns:minmax(0, 1.4fr) minmax(0, 1fr);gap:16px 48px;padding-top:44px}
.feature-body p{font-size:1.15rem;color:var(--ink)}
.facts{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.facts li{padding:10px 0;border-bottom:1px solid var(--line);color:var(--muted)}
.facts strong{color:var(--ink)}
.grid{display:grid;gap:56px 28px;margin-top:64px}
.grid-3{grid-template-columns:repeat(3, minmax(0, 1fr))}
.grid-4{grid-template-columns:repeat(4, minmax(0, 1fr))}
.sub{margin-top:var(--space);display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1.6fr);gap:12px 48px;align-items:end}
.sub p{color:var(--muted);margin:0}
.grid-4 .shot .label{font-size:.95rem;left:12px}
/* Second project: image and text side by side, quieter than the feature */
.row-2{display:grid;grid-template-columns:minmax(0, 1.3fr) minmax(0, 1fr);gap:44px 48px;align-items:center;margin-top:72px}
.row-2 p{font-size:1.1rem}
.muted{color:var(--muted)}

/* Services: a plain list, not cards */
.services{display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1.5fr);gap:32px 64px;align-items:start}
.services > div{position:sticky;top:110px}
.svc{list-style:none;margin:0;padding:0;border-top:2px solid var(--navy)}
.svc li{display:grid;grid-template-columns:minmax(0, 13rem) minmax(0, 1fr);gap:4px 24px;padding:20px 0;border-bottom:1px solid var(--line)}
.svc h3{font-size:1.15rem;font-weight:800;font-variation-settings:"wdth" 108;line-height:1.3}
.svc p{margin:0;color:var(--muted)}

/* Contact */
.contact{display:grid;grid-template-columns:minmax(0, 1.2fr) minmax(0, 1fr);gap:48px 64px;align-items:start}
.form{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:18px 20px}
.field{display:grid;gap:6px}
.field.full{grid-column:1 / -1}
.field label{font-weight:700;font-size:.95rem}
.field input,.field textarea{font:400 1rem var(--font);color:var(--ink);background:var(--white);border:2px solid var(--line);border-radius:4px;padding:12px 14px;width:100%}
.field input:focus,.field textarea:focus{border-color:var(--navy);outline:none;box-shadow:0 0 0 3px rgba(26,71,139,.18)}
.field textarea{min-height:150px;resize:vertical}
.form .hint{grid-column:1 / -1;color:var(--muted);font-size:.95rem;margin:0}
.form .error{grid-column:1 / -1;color:var(--red);font-weight:600;margin:0}
.details{border-top:2px solid var(--navy)}
.details dl{margin:0}
.details dt{font-weight:800;margin-top:18px}
.details dd{margin:2px 0 0}
.details dd a{font-weight:600}
.map{margin-top:28px;border:2px solid var(--navy);aspect-ratio:4 / 3;background:var(--tide)}
.map iframe{width:100%;height:100%;border:0;display:block}

/* Footer */
.foot{margin-top:var(--space);background:var(--ink);color:#C9D4E8;padding:56px 0 32px}
.foot .wrap{display:grid;grid-template-columns:auto 1fr auto;gap:32px 56px;align-items:start}
.foot img{width:150px}
.foot a{color:var(--white)}
.foot a:hover{color:#FFB4AE}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.foot address{font-style:normal}
.foot .copy{grid-column:1 / -1;max-width:none;border-top:1px solid rgba(255,255,255,.15);padding-top:20px;font-size:.92rem;margin:0}

/* Legal pages */
.legal-head{padding-top:clamp(40px, 6vw, 72px)}
.legal-head .slab{padding:clamp(36px, 5vw, 56px) clamp(24px, 5vw, 56px) clamp(56px, 7vw, 76px)}
.legal-head h1{color:var(--white);font-size:clamp(2rem, 5vw, 3.6rem)}
.legal-head .label{position:absolute;left:clamp(24px, 5vw, 56px);bottom:0;transform:translateY(55%);font-size:1.05rem}
.legal{padding:clamp(56px, 7vw, 84px) clamp(0px, 5vw, 56px) 0;max-width:820px}
.legal h2{font-size:1.4rem;font-weight:800;font-variation-settings:"wdth" 110;margin:2em 0 .6em}
.legal ul,.legal ol{padding-left:1.3em;max-width:62ch}
.legal li{margin-bottom:.5em}

/* ---------- Responsive ---------- */
@media (max-width:960px){
  .grid-4{grid-template-columns:repeat(2, minmax(0, 1fr))}
  .grid-3{grid-template-columns:repeat(2, minmax(0, 1fr))}
  .services,.contact,.feature-body,.sub,.hero-after,.row-2{grid-template-columns:minmax(0, 1fr)}
  .services > div{position:static}
  .actions{justify-content:flex-start}
  .foot .wrap{grid-template-columns:1fr 1fr}
  .foot .brand-col{grid-column:1 / -1}
}
@media (max-width:760px){
  .menu-btn{display:block}
  .nav{display:none;position:absolute;top:76px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--white);border-bottom:2px solid var(--navy);padding:8px var(--gutter) 16px}
  .nav.open{display:flex}
  .nav a{padding:12px 0;border-bottom:1px solid var(--line)}
  .nav .call{margin-top:12px;text-align:center;border-bottom:0}
  .svc li{grid-template-columns:minmax(0, 1fr)}
}
@media (max-width:560px){
  .grid-3,.grid-4,.form{grid-template-columns:minmax(0, 1fr)}
  .foot .wrap{grid-template-columns:minmax(0, 1fr)}
  .hero .label,.legal-head .label{right:16px;text-align:center}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .octopus,.js.ready .octopus{transform:none;transition:none}
}
