/* Qfast — design system. Brand: orange #FA541A, green #69B23B (from logo). */
:root{
  --ink:#14181d; --ink-70:#4b535d; --ink-45:#838b95;
  --orange:#fa541a; --orange-deep:#d8480f; --orange-tint:#fee9e0;
  --green:#69b23b; --green-deep:#4f8a2b; --green-tint:#eaf4e1;
  --paper:#ffffff; --warm:#fff5ef; --mist:#f5f6f8; --line:#eae5e0;
  --r:14px; --r-sm:10px; --r-lg:24px; --r-pill:999px;
  --shadow:0 1px 2px rgba(20,24,29,.04), 0 8px 24px -12px rgba(20,24,29,.12);
  --shadow-lg:0 2px 6px rgba(20,24,29,.05), 0 24px 48px -20px rgba(20,24,29,.22);
  --maxw:1140px;
  --ff-display:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
  --ff-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --ff-mono:"Inter", system-ui, sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0; font-family:var(--ff-body); color:var(--ink);
  background:var(--paper); line-height:1.62; font-size:17px;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:var(--ff-display); font-weight:700; line-height:1.1; letter-spacing:-.02em; margin:0}
p{margin:0}
a{color:inherit; text-decoration:none}
img{max-width:100%; display:block}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 24px}
.section{padding:84px 0}
.section--tight{padding:56px 0}
.bg-warm{background:var(--warm)}
.bg-mist{background:var(--mist)}
.bg-ink{background:var(--ink); color:#fff}
.eyebrow{font-family:var(--ff-mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--orange-deep); margin:0 0 14px; display:inline-block}
.bg-ink .eyebrow{color:#ffb094}
h1.h-hero{font-size:clamp(2.3rem,5.2vw,3.6rem); font-weight:800; letter-spacing:-.03em}
h2.h-sec{font-size:clamp(1.7rem,3.4vw,2.4rem); max-width:18ch}
h2.h-sec.center{margin-left:auto; margin-right:auto; text-align:center}
.lead{font-size:1.12rem; color:var(--ink-70); max-width:54ch}
.muted{color:var(--ink-70)}
.center{text-align:center}
svg.icon{width:22px; height:22px; stroke:currentColor; fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round}

/* buttons */
.btn{display:inline-flex; align-items:center; gap:8px; font-family:var(--ff-body); font-weight:600;
  font-size:15px; padding:13px 22px; border-radius:var(--r-pill); border:1.5px solid transparent;
  cursor:pointer; transition:transform .12s ease, background .15s ease, box-shadow .15s ease; white-space:nowrap}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--orange); color:#fff; box-shadow:0 8px 18px -8px rgba(250,84,26,.6)}
.btn-primary:hover{background:var(--orange-deep)}
.btn-ghost{background:transparent; color:var(--ink); border-color:var(--line)}
.btn-ghost:hover{border-color:var(--ink); }
.bg-ink .btn-ghost{color:#fff; border-color:rgba(255,255,255,.28)}
.bg-ink .btn-ghost:hover{border-color:#fff}
.btn-sm{padding:9px 16px; font-size:14px}
.link-arrow{font-weight:600; color:var(--orange-deep); display:inline-flex; align-items:center; gap:6px}
.link-arrow svg{width:18px;height:18px}
.link-arrow:hover{gap:10px}

/* header */
header.site{position:sticky; top:0; z-index:50; background:rgba(255,255,255,.86);
  backdrop-filter:saturate(1.4) blur(10px); border-bottom:1px solid var(--line)}
.nav{display:flex; align-items:center; gap:22px; height:74px}
.nav .logo img{height:34px; width:auto}
.nav .spacer{flex:1}
.nav-links{display:flex; gap:24px; align-items:center}
.nav-links a{font-size:15px; font-weight:500; color:var(--ink-70); padding:6px 0; position:relative}
.nav-links a:hover{color:var(--ink)}
.nav-links a.active{color:var(--ink)}
.nav-links a.active::after{content:""; position:absolute; left:0; right:0; bottom:-2px; height:2px; background:var(--orange); border-radius:2px}
.lang{display:inline-flex; border:1px solid var(--line); border-radius:var(--r-pill); overflow:hidden}
.lang button{font-family:var(--ff-mono); font-size:12px; letter-spacing:.06em; padding:6px 11px; border:0; background:transparent; cursor:pointer; color:var(--ink-45)}
.lang button.is-active{background:var(--ink); color:#fff}
.burger{display:none; border:1px solid var(--line); background:#fff; border-radius:10px; width:42px; height:42px; align-items:center; justify-content:center; cursor:pointer}

/* hero */
.hero{padding:64px 0 72px; position:relative; overflow:hidden}
.hero-grid{display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:48px; align-items:center}
.hero h1 .hl{color:var(--orange)}
.hero .lead{margin:18px 0 26px}
.quote-box{background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:18px; box-shadow:var(--shadow); max-width:480px}
.quote-box .qlabel{font-size:14px; color:var(--ink-70); margin-bottom:10px}
.quote-row{display:flex; gap:10px}
.quote-row input{flex:1; font-family:var(--ff-body); font-size:15px; padding:13px 15px; border:1.5px solid var(--line); border-radius:var(--r-pill); outline:none; min-width:0}
.quote-row input:focus{border-color:var(--orange)}
.hero-alt{font-size:14px; color:var(--ink-45); margin-top:14px}
.hero-alt a{color:var(--orange-deep); font-weight:600}

/* trust bar */
.trust{display:flex; align-items:center; gap:18px; flex-wrap:wrap; padding:18px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line)}
.trust .tlabel{font-family:var(--ff-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-45)}
.trust .titems{color:var(--ink-70); font-weight:500}

/* cards / grid */
.grid{display:grid; gap:18px}
.g-4{grid-template-columns:repeat(4,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-2{grid-template-columns:repeat(2,1fr)}
.card{background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:24px; transition:transform .15s ease, box-shadow .15s ease}
.card:hover{transform:translateY(-3px); box-shadow:var(--shadow-lg)}
.card .ico{width:54px; height:54px; border-radius:15px; background:linear-gradient(135deg,var(--orange-tint),#ffe6d9); color:var(--orange-deep); display:flex; align-items:center; justify-content:center; margin-bottom:18px}
.card .ico i{font-size:27px}
.card h3{font-size:1.18rem; margin-bottom:8px}
.card p{color:var(--ink-70); font-size:.97rem}
.card.feature{border:2px solid var(--orange); position:relative}
.tag{display:inline-block; font-family:var(--ff-mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; background:var(--orange-tint); color:var(--orange-deep); padding:4px 10px; border-radius:var(--r-pill); margin-bottom:14px}
.card a.more{margin-top:16px; display:inline-flex}

/* steps */
.steps{display:grid; grid-template-columns:repeat(4,1fr); gap:16px; counter-reset:s}
.step{background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:22px; position:relative}
.step .num{font-family:var(--ff-mono); font-size:13px; color:#fff; background:var(--orange); width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center; margin-bottom:14px}
.step h3{font-size:1.05rem; margin-bottom:6px}
.step p{color:var(--ink-70); font-size:.93rem}

/* benefits list */
.benefits{display:grid; grid-template-columns:1fr 1fr; gap:14px 30px}
.benefit{display:flex; gap:12px; align-items:flex-start}
.benefit .bi{color:var(--green-deep); flex:0 0 auto; margin-top:0}
.benefit .bi i{font-size:22px}
.benefit b{display:block; font-weight:600}
.benefit span{color:var(--ink-70); font-size:.96rem}

/* comparison */
.cmp{border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; background:#fff}
.cmp-row{display:grid; grid-template-columns:1.4fr 1fr 1.25fr; align-items:center}
.cmp-row+.cmp-row{border-top:1px solid var(--line)}
.cmp-head{background:var(--mist)}
.cmp-row>div{padding:15px 18px; font-size:.96rem}
.cmp-row .col-c{font-size:13px; font-weight:600; text-align:center}
.cmp-row .col-old{border-left:1px solid var(--line); text-align:center; color:var(--ink-45)}
.cmp-row .col-q{border-left:2px solid var(--orange); text-align:center; background:var(--orange-tint)}
.cmp-row .col-q .hd{color:var(--orange-deep)}
.cmp-row .col-old svg,.cmp-row .col-q svg{width:16px;height:16px;vertical-align:-3px;margin-right:5px}
.cmp .col-old svg{color:#b23b3b} .cmp .col-q svg{color:var(--green-deep)}

/* smart building strip */
.tiles{display:grid; grid-template-columns:repeat(4,1fr); gap:14px}
.tile{background:#fff; border:1px solid var(--line); border-radius:var(--r); padding:18px; text-align:center}
.tile .ti2{width:56px; height:56px; border-radius:15px; background:linear-gradient(135deg,var(--orange-tint),#ffe6d9); color:var(--orange-deep); margin:0 auto 14px; display:flex; align-items:center; justify-content:center}
.tile .ti2 i{font-size:28px}
.tile span{font-weight:600; font-size:.95rem}
.callout{display:flex; align-items:center; gap:12px; background:var(--green-tint); border-radius:var(--r); padding:16px 18px; margin-top:18px; color:var(--green-deep); font-weight:500}
.callout i{font-size:24px; flex:0 0 auto}

/* international spotlight */
.spot{display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:center}
.hubline{display:flex; align-items:center; gap:14px; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:18px}
.hub{width:54px;height:54px;border-radius:50%;background:var(--orange);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--ff-mono);font-weight:700;flex:0 0 auto}
.hub-dash{flex:1;border-top:2px dashed var(--line)}
.hub-dest{display:flex;flex-direction:column;gap:7px}
.hub-dest .chip{font-size:13px;background:var(--mist);border-radius:var(--r-pill);padding:5px 12px;display:inline-flex;align-items:center;gap:7px}
.chips{display:flex; gap:8px; flex-wrap:wrap; margin-top:8px}
.chip-o{font-size:14px; border:1px solid var(--line); border-radius:var(--r-pill); padding:6px 14px}

/* news */
.news{display:grid; grid-template-columns:repeat(3,1fr); gap:18px}
.post{background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; transition:transform .15s ease, box-shadow .15s ease}
.post:hover{transform:translateY(-3px); box-shadow:var(--shadow-lg)}
.post .thumb{height:120px; background:linear-gradient(120deg,var(--orange-tint),var(--green-tint))}
.post .pbody{padding:20px}
.post .meta{font-family:var(--ff-mono); font-size:11px; letter-spacing:.05em; text-transform:uppercase; color:var(--orange-deep); margin-bottom:8px}
.post h3{font-size:1.08rem; line-height:1.25; margin-bottom:8px}
.post p{font-size:.92rem; color:var(--ink-70)}

/* faq */
.faq{max-width:760px; margin:0 auto}
.faq details{border-bottom:1px solid var(--line); padding:6px 0}
.faq summary{list-style:none; cursor:pointer; padding:16px 0; font-weight:600; font-size:1.05rem; display:flex; justify-content:space-between; align-items:center; gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary .pm{flex:0 0 auto; color:var(--orange-deep); font-size:1.4rem; line-height:1; transition:transform .2s}
.faq details[open] summary .pm{transform:rotate(45deg)}
.faq .ans{padding:0 0 18px; color:var(--ink-70)}

/* case study */
.case{display:grid; grid-template-columns:1fr 1fr; gap:0; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; background:#fff}
.case .half{padding:30px 32px}
.case .before{background:var(--mist)}
.case .after{border-left:1px solid var(--line)}
.case .ch{font-family:var(--ff-mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-45); margin-bottom:14px}
.case .big{font-size:2rem; font-family:var(--ff-display); font-weight:600}
.case .after .big{color:var(--green-deep)}
.ph{background:repeating-linear-gradient(45deg,var(--mist),var(--mist) 10px,#eef0f3 10px,#eef0f3 20px); border:1px dashed var(--ink-45); border-radius:6px; color:var(--ink-45); font-family:var(--ff-mono); font-size:12px; padding:2px 7px; display:inline-block}

/* cta band */
.cta-band{background:var(--ink); color:#fff; border-radius:var(--r-lg); padding:48px; display:grid; grid-template-columns:1.4fr 1fr; gap:24px; align-items:center}
.cta-band h2{color:#fff; font-size:1.9rem}
.cta-band p{color:rgba(255,255,255,.72); margin-top:8px}
.cta-actions{display:flex; gap:12px; flex-wrap:wrap; justify-content:flex-end}

/* segments */
.seg{display:flex; gap:14px; align-items:flex-start; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:22px}
.seg .si{width:50px;height:50px;border-radius:14px;background:linear-gradient(135deg,var(--orange-tint),#ffe6d9);color:var(--orange-deep);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.seg .si i{font-size:24px}
.seg h3{font-size:1.05rem;margin-bottom:5px}
.seg p{color:var(--ink-70); font-size:.95rem}

/* page hero (inner pages) */
.phero{padding:56px 0 40px}
.phero .eyebrow{color:var(--orange-deep)}
.phero h1{font-size:clamp(2rem,4.4vw,3rem); max-width:20ch}
.phero .lead{margin-top:16px}

/* form */
.form{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:28px}
.field{margin-bottom:16px}
.field label{display:block;font-weight:600;font-size:.92rem;margin-bottom:6px}
.field input,.field textarea{width:100%;font-family:var(--ff-body);font-size:15px;padding:12px 14px;border:1.5px solid var(--line);border-radius:var(--r-sm);outline:none}
.field input:focus,.field textarea:focus{border-color:var(--orange)}
.form-ok{display:none;background:var(--green-tint);color:var(--green-deep);border-radius:var(--r);padding:16px;font-weight:500}

/* footer */
footer.site{background:var(--ink); color:#cfd4da; padding:64px 0 32px; margin-top:0}
.fgrid{display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:32px}
footer .logo img{height:32px; margin-bottom:14px}
footer p.blurb{color:#9aa2ab; font-size:.95rem; max-width:34ch}
footer h4{font-family:var(--ff-body); font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; color:#79818b; margin:0 0 14px; font-weight:600}
footer ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px}
footer ul a{color:#cfd4da; font-size:.95rem}
footer ul a:hover{color:#fff}
.fbar{display:flex; justify-content:space-between; align-items:center; border-top:1px solid rgba(255,255,255,.1); margin-top:40px; padding-top:22px; color:#79818b; font-size:.85rem; gap:16px; flex-wrap:wrap}

/* fiber motif animation */
@keyframes dashmove{to{stroke-dashoffset:-28}}
.fiber-anim{stroke-dasharray:6 8; animation:dashmove 1.4s linear infinite}
.node-pulse{transform-origin:center; animation:pulse 2.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.35} 50%{opacity:1}}

/* responsive */
@media(max-width:960px){
  .hero-grid,.spot,.case,.cta-band,.fgrid{grid-template-columns:minmax(0,1fr)}
  .g-4{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,1fr)}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .news{grid-template-columns:1fr 1fr}
  .benefits{grid-template-columns:1fr}
  .cta-actions{justify-content:flex-start}
  .hero-visual{order:-1}
  .case .after{border-left:0;border-top:1px solid var(--line)}
}
@media(max-width:680px){
  body{font-size:16px}
  .section{padding:56px 0}
  .nav-links,.nav .cta-desktop{display:none}
  .burger{display:flex}
  .nav.open .nav-links{display:flex; position:absolute; top:74px; left:0; right:0; flex-direction:column; background:#fff; border-bottom:1px solid var(--line); padding:16px 24px; gap:16px}
  .g-4,.g-3,.g-2,.news,.tiles,.steps{grid-template-columns:1fr}
  .cmp-row{grid-template-columns:1fr; }
  .cmp-row .col-old,.cmp-row .col-q{border-left:0;border-top:1px solid var(--line);text-align:left}
  .cmp-head{display:none}
  .cta-band{padding:32px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important; transition:none!important; scroll-behavior:auto!important}
}

/* ---- top utility bar ---- */
.topbar{background:var(--ink); color:#cfd4da; font-size:13px}
.topbar-in{display:flex; align-items:center; justify-content:space-between; min-height:40px; gap:16px}
.tb-tag{color:#9aa2ab}
.tb-right{display:flex; align-items:center; gap:18px}
.tb-link{color:#cfd4da; display:inline-flex; align-items:center; gap:6px; font-weight:500}
.tb-link:hover{color:#fff}
.tb-link i{font-size:15px}
.topbar .lang{border-color:rgba(255,255,255,.22)}
.topbar .lang button{color:#9aa2ab}
.topbar .lang button.is-active{background:#fff; color:var(--ink)}

/* fix CTA band ghost button on dark */
.cta-band .btn-ghost{color:#fff; border-color:rgba(255,255,255,.32)}
.cta-band .btn-ghost:hover{border-color:#fff; background:rgba(255,255,255,.07)}

/* international visuals */
.intl-visual,.hero-visual{width:100%; max-width:100%; height:auto}
svg{max-width:100%}
.intl-hub-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}

/* article (news detail) */
.article{max-width:720px; margin:0 auto}
.article .meta{color:var(--orange-deep); font-weight:600; font-size:.85rem; letter-spacing:.04em; text-transform:uppercase; margin-bottom:12px}
.article h1{font-size:clamp(1.8rem,4vw,2.6rem); margin-bottom:10px}
.article p{margin:0 0 18px; color:var(--ink-70); font-size:1.06rem}
.article .back{margin-top:24px; display:inline-flex}

/* process steps (numbered, with connecting flow) */
.flow{display:grid; grid-template-columns:repeat(3,1fr); gap:16px}
.flow .step{position:relative}

/* logo wall */
.logos{display:grid; grid-template-columns:repeat(4,1fr); gap:16px}
.logo-card{background:#fff; border:1px solid var(--line); border-radius:14px; padding:18px 14px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; min-height:128px; box-shadow:0 1px 2px rgba(20,24,29,.04); transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease}
.logo-card:hover{transform:translateY(-3px); box-shadow:var(--shadow-lg); border-color:#ded8d2}
.logo-card img{max-height:46px; max-width:100%; width:auto; object-fit:contain; filter:grayscale(1) opacity(.72); transition:filter .25s ease}
.logo-card:hover img{filter:grayscale(0) opacity(1)}
.logo-name{font-size:.8rem; font-weight:600; color:var(--ink-70); text-align:center; line-height:1.25}

/* quote / testimonial */
.tquote{background:#fff; border:1px solid var(--line); border-left:3px solid var(--orange); border-radius:var(--r); padding:24px; margin:0}
.tquote p{font-size:1.05rem; margin-bottom:12px}
.tquote .who{color:var(--ink-45); font-size:.9rem}

@media(max-width:680px){
  .tb-tag{display:none}
  .topbar-in{justify-content:flex-end}
  .tb-right{gap:12px; font-size:12px}
  .intl-hub-grid,.logos,.flow{grid-template-columns:1fr 1fr}
}

/* ---- homepage hero: mobile alignment ---- */
@media(max-width:680px){
  .hero{padding:34px 0 44px}
  .hero-grid{text-align:center; gap:24px}
  .hero .eyebrow{margin-bottom:10px}
  .hero h1.h-hero{font-size:clamp(2rem,8vw,2.5rem)}
  .hero .lead{margin-left:auto; margin-right:auto}
  .quote-box{margin-left:auto; margin-right:auto; width:100%}
  .quote-box .qlabel{text-align:left}
  .quote-row{flex-direction:column; align-items:stretch}
  .quote-row input{width:100%}
  .quote-row .btn{width:100%; justify-content:center}
  .hero-alt{text-align:center}
  .hero-visual{max-width:320px; margin:0 auto}
  .trust{justify-content:center; text-align:center; gap:10px}
}

/* ---- postcode check ---- */
.pc-fields{display:flex; gap:10px; margin-bottom:12px}
.pc-fields input{font-family:var(--ff-body); font-size:15px; padding:13px 15px; border:1.5px solid var(--line); border-radius:var(--r-pill); outline:none; min-width:0; background:#fff}
.pc-fields input:focus{border-color:var(--orange)}
.pc-postcode{flex:1}
.pc-huisnr{flex:0 0 84px; text-align:center}
.quote-box button[type=submit]{width:100%; justify-content:center}
.pc-msg{margin-top:12px; font-size:.95rem; line-height:1.55; display:none}
.pc-msg.loading{display:block; color:var(--ink-70)}
.pc-msg.error{display:block; color:#b23b3b; font-weight:500}
.pc-msg.success{display:block; color:var(--ink); background:var(--green-tint); border-radius:var(--r-sm); padding:13px 15px}
.pc-msg .btn{margin-top:10px}

/* hero fiber: flowing packets of light */
.fiber-pulse{stroke-dasharray:5 95; animation:pulseflow 2.2s linear infinite}
@keyframes pulseflow{from{stroke-dashoffset:100} to{stroke-dashoffset:0}}

/* ---- offerte form ---- */
.of-group{display:none; background:var(--warm,#faf7f4); border:1px solid var(--line); border-radius:var(--r); padding:20px; margin:16px 0}
.of-group.on{display:block}
.of-group h3{font-size:1rem; margin-bottom:14px}
.of-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px 16px}
.of-grid .field.wide{grid-column:1/-1}
.ckrow{display:flex; flex-wrap:wrap; gap:10px 18px; margin-top:4px}
.ck{display:inline-flex; align-items:center; gap:8px; font-size:.95rem; color:var(--ink-70); cursor:pointer}
.ck input{width:17px; height:17px; accent-color:var(--orange)}
.req::after{content:" *"; color:var(--orange-deep)}
.form input.inv, .form select.inv{border-color:#b23b3b}
.form select{font-family:var(--ff-body); font-size:15px; padding:12px 14px; border:1.5px solid var(--line); border-radius:var(--r-sm); background:#fff; width:100%}
.form select:focus{border-color:var(--orange); outline:none}
@media(max-width:680px){ .of-grid{grid-template-columns:1fr} }
