:root {
  --paper: #f2f0e9;
  --white: #fbfaf6;
  --ink: #171916;
  --muted: #6e716b;
  --orange: #f15a29;
  --sage: #d8ddd2;
  --line: rgba(23, 25, 22, .18);
  --sans: Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --condensed: "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  line-height: 1.5;
}
img { display: block; width: 100%; }
a { color: inherit; text-decoration: none; }
p, h1, h2, h3 { margin-top: 0; }

.site-header {
  height: 102px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 0 clamp(22px, 4vw, 70px);
  position: absolute;
  inset: 0 0 auto;
  z-index: 10;
  color: white;
  border-bottom: 1px solid rgba(255, 255, 255, .28);
}
.logo { width: max-content; display: flex; flex-direction: column; line-height: .8; text-transform: uppercase; }
.logo-small { margin-left: 3px; font-size: .55rem; font-weight: 800; letter-spacing: .4em; }
.logo-main { font-family: var(--condensed); font-size: 2.25rem; font-weight: 900; letter-spacing: -.075em; }
.logo-main > span { color: var(--orange); }
nav { display: flex; gap: clamp(24px, 3vw, 48px); font-size: .7rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
nav a, .header-phone, .text-link { transition: opacity .2s ease; }
nav a:hover, .header-phone:hover, .text-link:hover { opacity: .62; }
.header-phone { justify-self: end; display: flex; flex-direction: column; align-items: flex-end; font-size: .9rem; font-weight: 800; letter-spacing: .02em; }
.header-phone span { color: rgba(255,255,255,.63); font-size: .58rem; letter-spacing: .16em; text-transform: uppercase; }

.hero { min-height: 840px; height: 100svh; position: relative; display: flex; align-items: center; overflow: hidden; color: white; }
.hero-image { height: 100%; position: absolute; inset: 0; object-fit: cover; object-position: center; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(12,14,12,.86) 0%, rgba(12,14,12,.61) 40%, rgba(12,14,12,.08) 78%); }
.hero-content { width: min(860px, calc(100% - 44px)); margin-left: clamp(22px, 7vw, 130px); padding-top: 65px; position: relative; z-index: 2; }
.kicker { margin-bottom: 22px; font-size: .67rem; font-weight: 850; letter-spacing: .18em; text-transform: uppercase; }
.kicker.light { color: rgba(255,255,255,.67); }
h1 { max-width: 930px; margin-bottom: 30px; font-family: var(--condensed); font-size: clamp(4.4rem, 8.3vw, 9.2rem); font-weight: 900; line-height: .85; letter-spacing: -.075em; text-transform: uppercase; }
h1 em, .intro h2 em { color: #ff9b78; font-family: Georgia, "Times New Roman", serif; font-weight: 400; text-transform: none; }
.hero-lead { max-width: 600px; margin-bottom: 36px; color: rgba(255,255,255,.77); font-size: 1.08rem; line-height: 1.7; }
.hero-actions { display: flex; align-items: center; gap: 32px; }
.button { min-height: 58px; display: inline-flex; align-items: center; justify-content: center; gap: 24px; padding: 0 27px; font-size: .7rem; font-weight: 850; letter-spacing: .11em; text-transform: uppercase; transition: transform .2s ease, filter .2s ease; }
.button:hover { transform: translateY(-2px); filter: brightness(1.06); }
.button-orange { background: var(--orange); color: white; }
.button-dark { width: 100%; margin-top: 26px; background: var(--ink); color: white; }
.text-link { display: inline-flex; align-items: center; gap: 18px; padding-bottom: 5px; border-bottom: 1px solid currentColor; font-size: .7rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.light-link { color: white; }
.hero-facts { min-height: 112px; display: grid; grid-template-columns: repeat(3, 1fr); position: absolute; left: clamp(22px, 4vw, 70px); right: clamp(22px, 4vw, 70px); bottom: 0; z-index: 2; border-top: 1px solid rgba(255,255,255,.3); }
.hero-facts p { margin: 0; padding: 26px 32px 22px 0; display: flex; flex-direction: column; border-right: 1px solid rgba(255,255,255,.3); }
.hero-facts p + p { padding-left: 32px; }
.hero-facts p:last-child { border-right: 0; }
.hero-facts strong { margin-bottom: 5px; font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; }
.hero-facts span { color: rgba(255,255,255,.58); font-size: .76rem; }

.section-pad { padding: clamp(90px, 11vw, 170px) clamp(22px, 6vw, 110px); }
.section-number { padding-top: 8px; color: var(--muted); font-size: .62rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.intro { display: grid; grid-template-columns: .25fr 1fr; gap: 5vw; background: var(--paper); }
.intro-content h2 { margin-bottom: 74px; font-family: var(--condensed); font-size: clamp(3.8rem, 6.8vw, 7.8rem); font-weight: 900; line-height: .89; letter-spacing: -.07em; text-transform: uppercase; }
.intro-copy { max-width: 920px; margin-left: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 8vw; }
.intro-copy p { margin-bottom: 0; font-size: 1.06rem; line-height: 1.75; }
.intro-copy p:last-child { color: var(--muted); }

.services { padding: clamp(90px, 10vw, 150px) clamp(22px, 6vw, 110px); background: var(--ink); color: white; }
.services-head { display: grid; grid-template-columns: 1.25fr .55fr; gap: 8vw; align-items: end; margin-bottom: 88px; }
.services-head h2 { margin-bottom: 0; font-family: var(--condensed); font-size: clamp(4rem, 7vw, 8rem); font-weight: 900; line-height: .87; letter-spacing: -.07em; text-transform: uppercase; }
.services-head > p { margin-bottom: 8px; color: rgba(255,255,255,.62); font-size: 1rem; line-height: 1.75; }
.service-list { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgba(255,255,255,.19); border-left: 1px solid rgba(255,255,255,.19); }
.service-list article { min-height: 390px; display: flex; flex-direction: column; padding: clamp(28px, 3.2vw, 48px); border-right: 1px solid rgba(255,255,255,.19); border-bottom: 1px solid rgba(255,255,255,.19); }
.service-index { margin-bottom: auto; color: var(--orange); font-size: .64rem; font-weight: 850; }
.service-list h3 { margin: 50px 0 18px; font-size: clamp(1.8rem, 2.7vw, 3.2rem); line-height: 1; letter-spacing: -.05em; }
.service-list p { margin-bottom: 0; color: rgba(255,255,255,.56); font-size: .92rem; line-height: 1.65; }
.service-list .service-cta { background: var(--orange); }
.service-cta .service-index, .service-cta p { color: rgba(255,255,255,.75); }
.service-cta a { margin-top: 24px; font-size: .67rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }

.project-feature { min-height: 760px; display: grid; grid-template-columns: 1.3fr .7fr; background: var(--white); }
.project-image-wrap { min-height: 680px; position: relative; overflow: hidden; }
.project-image-wrap img { height: 100%; object-fit: cover; }
.image-label { position: absolute; left: 0; bottom: 0; padding: 17px 25px; background: var(--white); font-size: .62rem; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
.project-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(65px, 7vw, 120px); }
.project-copy h2 { margin-bottom: 36px; font-family: Georgia, "Times New Roman", serif; font-size: clamp(3rem, 4.5vw, 5.5rem); font-weight: 400; font-style: italic; line-height: .98; letter-spacing: -.045em; }
.project-copy > p:not(.kicker) { margin-bottom: 35px; color: var(--muted); line-height: 1.75; }
.project-copy .text-link { align-self: flex-start; }

.about { display: grid; grid-template-columns: .25fr 1fr; gap: 5vw; background: var(--sage); }
.about-content > h2 { max-width: 1100px; margin-bottom: 84px; font-family: var(--condensed); font-size: clamp(3.8rem, 6.5vw, 7.5rem); font-weight: 900; line-height: .88; letter-spacing: -.07em; text-transform: uppercase; }
.process-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid rgba(23,25,22,.28); }
.process-list li { display: grid; grid-template-columns: 100px 1fr; gap: 30px; padding: 34px 0; border-bottom: 1px solid rgba(23,25,22,.28); }
.process-list > li > span { padding-top: 7px; color: var(--orange); font-size: .66rem; font-weight: 900; }
.process-list div { display: grid; grid-template-columns: .7fr 1fr; gap: 60px; align-items: baseline; }
.process-list h3 { margin-bottom: 0; font-size: clamp(1.5rem, 2.2vw, 2.5rem); letter-spacing: -.04em; }
.process-list p { max-width: 570px; margin-bottom: 0; color: #62675f; }

.area { min-height: 760px; display: grid; grid-template-columns: 1.1fr .9fr; background: var(--ink); color: white; }
.area-map { min-height: 640px; position: relative; overflow: hidden; background: #242722; border-right: 1px solid rgba(255,255,255,.16); }
.area-map::before, .area-map::after { content: ""; position: absolute; border: 1px solid rgba(255,255,255,.08); border-radius: 50%; }
.area-map::before { width: 620px; height: 620px; left: 9%; top: 6%; }
.area-map::after { width: 350px; height: 350px; left: 30%; top: 24%; }
.map-line { height: 1px; display: block; position: absolute; left: 14%; background: rgba(255,255,255,.19); transform-origin: left; }
.line-one { width: 68%; top: 49%; transform: rotate(-18deg); }
.line-two { width: 62%; top: 34%; transform: rotate(24deg); }
.map-dot { position: absolute; display: flex; align-items: center; gap: 10px; font-size: .65rem; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
.map-dot i { width: 9px; height: 9px; display: block; background: var(--orange); border: 3px solid #242722; border-radius: 50%; box-shadow: 0 0 0 1px var(--orange); }
.dot-ockelbo { left: 48%; top: 38%; }
.dot-gavle { left: 70%; top: 57%; }
.dot-sandviken { left: 38%; top: 58%; }
.dot-bollnas { left: 40%; top: 18%; }
.area-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(70px, 8vw, 130px); }
.area-copy h2 { margin-bottom: 38px; font-family: var(--condensed); font-size: clamp(4.2rem, 7vw, 8rem); font-weight: 900; line-height: .86; letter-spacing: -.07em; text-transform: uppercase; }
.area-copy > p:not(.kicker) { max-width: 560px; margin-bottom: 38px; color: rgba(255,255,255,.62); line-height: 1.75; }
.area-copy .text-link { align-self: flex-start; }

.contact { display: grid; grid-template-columns: 1.15fr .85fr; gap: 9vw; align-items: end; padding: clamp(90px, 11vw, 170px) clamp(22px, 7vw, 130px); background: var(--paper); }
.contact-lead h2 { margin-bottom: 34px; font-family: var(--condensed); font-size: clamp(4.4rem, 8vw, 9rem); font-weight: 900; line-height: .84; letter-spacing: -.075em; text-transform: uppercase; }
.contact-lead > p:last-child { max-width: 600px; margin-bottom: 0; color: var(--muted); font-size: 1.04rem; line-height: 1.75; }
.contact-card { padding: clamp(34px, 4.5vw, 66px); background: var(--orange); color: white; }
.contact-card-label { margin-bottom: 38px; font-size: .65rem; font-weight: 850; letter-spacing: .15em; text-transform: uppercase; }
.contact-link { display: block; padding: 21px 0; border-top: 1px solid rgba(255,255,255,.42); }
.contact-link span { display: block; margin-bottom: 5px; color: rgba(255,255,255,.68); font-size: .58rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.contact-link strong { font-size: clamp(1.35rem, 2.3vw, 2.4rem); letter-spacing: -.04em; }
.contact-note { margin: 24px 0 0; color: rgba(255,255,255,.72); font-size: .62rem; font-weight: 800; letter-spacing: .12em; text-align: center; text-transform: uppercase; }

footer { min-height: 130px; display: grid; grid-template-columns: 1fr 1fr auto; gap: 40px; align-items: center; padding: 30px clamp(22px, 4vw, 70px); background: var(--white); border-top: 1px solid var(--line); color: var(--muted); font-size: .63rem; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
footer p { margin: 0; }
.footer-logo { color: var(--ink); }

@media (max-width: 980px) {
  .site-header { grid-template-columns: 1fr auto; }
  nav { display: none; }
  .hero { min-height: 800px; }
  .intro, .about { grid-template-columns: 1fr; }
  .section-number { display: none; }
  .services-head, .project-feature, .area, .contact { grid-template-columns: 1fr; }
  .service-list { grid-template-columns: repeat(2, 1fr); }
  .project-image-wrap { min-height: 620px; }
  .area-map { min-height: 560px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.16); }
}

@media (max-width: 680px) {
  .site-header { height: 84px; }
  .logo-main { font-size: 1.85rem; }
  .header-phone span { display: none; }
  .header-phone { font-size: .8rem; }
  .hero { height: auto; min-height: 830px; align-items: flex-start; }
  .hero-image { object-position: 60% center; }
  .hero-overlay { background: linear-gradient(90deg, rgba(12,14,12,.88), rgba(12,14,12,.35)); }
  .hero-content { margin: 0 22px; padding-top: 165px; }
  h1 { font-size: clamp(3.7rem, 17vw, 5.5rem); }
  .hero-actions { align-items: flex-start; flex-direction: column; gap: 25px; }
  .hero-facts { display: none; }
  .intro-content h2, .services-head h2, .about-content > h2 { font-size: clamp(3.3rem, 14vw, 5rem); }
  .intro-content h2 { margin-bottom: 48px; }
  .intro-copy { grid-template-columns: 1fr; gap: 24px; }
  .services-head { margin-bottom: 55px; }
  .service-list { grid-template-columns: 1fr; }
  .service-list article { min-height: 330px; }
  .project-image-wrap { min-height: 470px; }
  .process-list li { grid-template-columns: 1fr; gap: 12px; }
  .process-list div { grid-template-columns: 1fr; gap: 10px; }
  .area-map { min-height: 440px; }
  .area-map::before { width: 420px; height: 420px; left: -4%; }
  .area-copy h2, .contact-lead h2 { font-size: clamp(4rem, 18vw, 6rem); }
  .contact-link strong { font-size: 1.22rem; }
  footer { grid-template-columns: 1fr; gap: 15px; }
}
