/* Hauberk (Pty) Ltd — merged site, one stylesheet.
   Idea: the hazard stripe as a measured, structural rule. Brand blue is the only accent.
   Plain CSS. No frameworks, no web fonts, no external requests, no JavaScript. */

:root{
  --brand:#014A91;
  --brand-dark:#01386D;
  --band:#012950;
  --ink:#0E1B2E;
  --steel:#465869;
  --tint:#E8EFF7;
  --surface:#F5F7FA;
  --hairline:#DCE4EC;
  --white:#FFFFFF;
  --font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --wrap:1200px;
  --gutter:clamp(20px,4vw,48px);
  --sec:clamp(64px,9vw,120px);
  --stripe:repeating-linear-gradient(-45deg,currentColor 0 6px,transparent 6px 14px);
  --on-band:rgba(255,255,255,.82);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--surface);color:var(--steel);font:400 1.0625rem/1.65 var(--font);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
h1,h2,h3{color:var(--ink);margin:0;line-height:1.1;letter-spacing:-.02em;font-weight:700;text-wrap:balance}
p{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
a{color:var(--brand);text-underline-offset:.2em}
a:hover{color:var(--brand-dark)}
:focus-visible{outline:3px solid var(--brand);outline-offset:3px;border-radius:2px}
.hero :focus-visible,.cta :focus-visible,.section--deep :focus-visible,.site-footer :focus-visible{outline-color:#fff}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.skip{position:absolute;left:-9999px;top:0;background:var(--brand);color:#fff;padding:12px 16px;z-index:100}
.skip:focus{left:16px;top:16px}

/* Header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);border-bottom:1px solid var(--hairline);backdrop-filter:saturate(1.2) blur(8px)}
.header-inner{display:flex;align-items:center;gap:32px;min-height:76px}
.brand img{width:150px}
.site-header nav{margin-left:auto}
.nav{display:flex;gap:4px}
.nav a{display:block;padding:10px 14px;color:var(--ink);text-decoration:none;font-size:.9375rem;font-weight:500;border-radius:4px}
.nav a:hover{color:var(--brand);background:var(--tint)}
.nav a[aria-current="page"]{color:var(--brand);box-shadow:inset 0 -2px 0 var(--brand)}
.nav-cta{display:none}

/* CSS-only mobile menu (no JavaScript): checkbox + label disclosure, active below 880px */
.nav-toggle{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.nav-toggle-label{display:none;align-items:center;gap:10px;min-height:44px;padding:0 16px;border:2px solid var(--hairline);border-radius:4px;background:var(--white);color:var(--ink);font-weight:600;font-size:.9375rem;cursor:pointer}
.nav-toggle-label:hover{border-color:var(--brand);color:var(--brand)}
.nav-toggle-bars{display:inline-flex;flex-direction:column;gap:4px}
.nav-toggle-bars span{display:block;width:18px;height:2px;background:var(--brand)}
.nav-toggle:focus-visible + .nav-toggle-label{outline:3px solid var(--brand);outline-offset:3px}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;border-radius:4px;font-weight:600;font-size:1rem;text-decoration:none;border:2px solid transparent;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}
.btn-sm{min-height:42px;padding:0 18px;font-size:.9375rem}
.btn-primary{background:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-dark);color:#fff}
.btn-light{background:#fff;color:var(--brand)}
.btn-light:hover{background:var(--tint);color:var(--brand-dark)}
.btn-ghost{color:#fff;border-color:rgba(255,255,255,.55)}
.btn-ghost:hover{color:#fff;border-color:#fff;background:rgba(255,255,255,.08)}

/* Hero */
.hero{position:relative;overflow:hidden;background:var(--band);color:#fff;isolation:isolate}
.hero::before{content:"";position:absolute;inset:0 0 0 auto;width:min(46%,620px);color:#fff;background:var(--stripe);opacity:.06;z-index:-1;
  -webkit-mask:linear-gradient(90deg,transparent,#000 40%);mask:linear-gradient(90deg,transparent,#000 40%)}
.hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:10px;color:var(--brand);background:var(--stripe)}
.hero-inner{padding-top:clamp(72px,11vw,148px);padding-bottom:clamp(72px,10vw,132px)}
.hero h1{color:#fff;font-size:clamp(2.5rem,6.4vw,5rem);max-width:13ch;letter-spacing:-.035em;line-height:1.02}
.hero--page .hero-inner{padding-top:clamp(56px,7vw,96px);padding-bottom:clamp(56px,7vw,96px)}
.hero--page h1{font-size:clamp(2rem,4.8vw,3.375rem);max-width:20ch}
.lede{margin-top:28px;max-width:56ch;font-size:clamp(1.0625rem,1.6vw,1.25rem);color:rgba(255,255,255,.86)}
.hero--page .lede{margin-top:20px}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:40px}
.hero--page .actions{margin-top:32px}
.trust{display:flex;flex-wrap:wrap;gap:12px 32px;margin-top:56px;padding-top:24px;border-top:1px solid rgba(255,255,255,.18);font-size:.9375rem;font-weight:600;color:#fff;max-width:720px}
.trust li{display:flex;align-items:center;gap:10px}
.trust li::before{content:"";width:14px;height:14px;opacity:.9;background:repeating-linear-gradient(-45deg,#fff 0 3px,transparent 3px 6px)}

/* Section rhythm */
.section{padding:var(--sec) 0;background:var(--surface)}
.section-tint{background:var(--tint)}
.section--tight{padding:clamp(40px,5vw,64px) 0;background:var(--surface)}
.section--deep{background:var(--band);color:var(--on-band)}
.section--deep h2,.section--deep h3{color:#fff}
.section--deep p{color:var(--on-band)}
.sec-head{margin-bottom:clamp(36px,5vw,56px);max-width:760px}
.sec-head h2{font-size:clamp(1.75rem,3.6vw,2.75rem)}
.sec-head p{margin-top:16px;max-width:62ch}
.sec-head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;max-width:none;flex-wrap:wrap}
.index{display:flex;align-items:center;gap:14px;margin-bottom:18px;font-size:.8125rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--brand)}
.index span{font-variant-numeric:tabular-nums;color:var(--ink)}
.index::before{content:"";width:40px;height:10px;color:var(--brand);background:var(--stripe);order:-1}
.section--deep .index,.cta .index{color:#fff}
.section--deep .index span{color:#fff}
.eyebrow{font-size:.8125rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:24px}
.eyebrow-light{color:rgba(255,255,255,.8)}
.section--deep .sec-head{margin-bottom:clamp(32px,4vw,48px)}

/* Grid + cards */
.grid{display:grid;gap:24px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--white);border:1px solid var(--hairline);border-top:4px solid var(--brand);border-radius:4px;padding:36px 32px 40px}
.card h3{font-size:1.25rem;margin-bottom:12px}
.card p+p{margin-top:12px}
.card__meta{margin-top:20px;font-size:.9375rem}
.card__figure{aspect-ratio:4/3;display:grid;place-items:center;text-align:center;padding:20px;margin:-12px 0 24px;background:var(--surface);border:1px dashed var(--hairline);border-radius:4px;color:var(--steel);font-size:.875rem;font-weight:600}
.note{background:var(--white);border:1px solid var(--hairline);border-left:4px solid var(--brand);border-radius:4px;padding:24px 28px}
.note p+p{margin-top:12px}
.note strong{color:var(--ink)}

/* Chips */
.split{display:grid;grid-template-columns:5fr 7fr;gap:48px;align-items:start}
.split .sec-head{margin-bottom:0}
.chips{display:flex;flex-wrap:wrap;gap:12px;padding-top:40px}
.chips li{padding:12px 20px;background:var(--white);border:1px solid var(--hairline);border-radius:999px;color:var(--ink);font-weight:600;font-size:.9375rem}

/* Numbered points and steps (01-04) */
.points,.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--hairline);counter-reset:pt}
.points li,.steps li{padding:32px 28px 8px 0;counter-increment:pt;position:relative}
.points li+li,.steps li+li{padding-left:28px;border-left:1px solid var(--hairline)}
.points li::before,.steps li::before{content:"0" counter(pt);display:block;font-size:.8125rem;font-weight:700;letter-spacing:.14em;color:var(--brand);margin-bottom:20px}
.points h3,.steps h3{font-size:1.125rem;margin-bottom:10px}
.points p,.steps p{font-size:1rem}
.section--deep .points,.section--deep .steps{border-top-color:rgba(255,255,255,.2)}
.section--deep .points li+li,.section--deep .steps li+li{border-left-color:rgba(255,255,255,.2)}
.section--deep .points li::before,.section--deep .steps li::before{color:#fff}

/* Products */
.product{background:var(--white);border:1px solid var(--hairline);border-radius:4px;overflow:hidden}
.ph{aspect-ratio:4/3;display:grid;place-items:center;text-align:center;padding:20px;background:var(--surface);border-bottom:1px solid var(--hairline);color:var(--steel);font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.product h3{font-size:1.0625rem;padding:20px 24px 24px}
.link-arrow{font-weight:600;text-decoration:none;white-space:nowrap}
.link-arrow::after{content:" \2192"}
.link-arrow:hover{text-decoration:underline}

/* Stats */
.stat{background:var(--white);border:1px solid var(--hairline);border-top:4px solid var(--brand);border-radius:4px;padding:28px 24px}
.stat__num{display:block;font-size:clamp(1.5rem,2.6vw,2rem);font-weight:700;color:var(--brand);letter-spacing:-.02em;line-height:1.15}
.stat__label{display:block;margin-top:10px;color:var(--steel);font-weight:600;font-size:.9375rem}
.stat .placeholder{font-size:.9375rem}

/* Tables */
.table-wrap{overflow-x:auto;background:var(--white);border:1px solid var(--hairline);border-radius:4px;margin-bottom:24px}
table{width:100%;border-collapse:collapse;min-width:640px}
caption{text-align:left;padding:24px 24px 8px;color:var(--ink);font-weight:700;font-size:1.0625rem}
th,td{text-align:left;padding:14px 24px;border-bottom:1px solid var(--hairline);vertical-align:top;font-size:1rem}
thead th{background:var(--brand);color:#fff;font-size:.8125rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-bottom:0;padding-top:16px;padding-bottom:16px}
tbody th{color:var(--ink);font-weight:700}
tbody tr:nth-child(even){background:var(--surface)}
tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}
.table-note{font-size:.9375rem;color:var(--steel);margin-bottom:24px}

/* Placeholder markers — never ship to production */
.placeholder{display:inline-block;padding:2px 8px;background:var(--tint);border:1px dashed var(--brand);border-radius:3px;color:var(--brand-dark);font-weight:600;font-size:.875rem;letter-spacing:.02em}
.marker-list{display:grid;gap:10px;margin-top:18px}
.marker-list li{position:relative;padding-left:22px;font-size:.9375rem;color:var(--steel)}
.marker-list li::before{content:"";position:absolute;left:0;top:.6em;width:12px;height:6px;color:var(--brand);background:repeating-linear-gradient(-45deg,currentColor 0 2px,transparent 2px 5px)}
.marker-list strong{color:var(--ink);font-weight:700}

/* Prose */
.prose{margin-top:16px;max-width:65ch}
.prose p{font-size:1.0625rem;color:var(--steel)}

/* Contact */
.contact-list{display:grid;gap:26px;margin-top:32px}
.contact-list__label{display:block;font-size:.8125rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);margin-bottom:6px}
.contact-list a{font-weight:600}
address{font-style:normal;line-height:1.8}
.map-card{background:var(--white);border:1px solid var(--hairline);border-top:4px solid var(--brand);border-radius:4px;padding:32px}
.map-card h2{font-size:1.5rem;margin-bottom:20px}
.map-canvas{aspect-ratio:16/10;display:grid;place-items:center;text-align:center;padding:24px;margin-bottom:24px;background:var(--surface);border:1px dashed var(--hairline);border-radius:4px;color:var(--steel);font-size:.9375rem}

/* Form */
.form{background:var(--white);border:1px solid var(--hairline);border-top:4px solid var(--brand);border-radius:4px;padding:32px}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.field{margin-bottom:20px}
.field label{display:block;margin-bottom:8px;color:var(--ink);font-weight:700;font-size:.9375rem}
input,select,textarea{width:100%;min-height:48px;padding:10px 14px;border:1px solid var(--hairline);border-radius:4px;background:var(--white);color:var(--ink);font:inherit;font-size:1rem}
textarea{min-height:148px;resize:vertical}
select{appearance:auto}
.field__hint{display:block;margin-top:8px;color:var(--steel);font-size:.875rem;line-height:1.5}
.req{color:var(--brand);font-weight:700}
.form__actions{display:flex;align-items:center;flex-wrap:wrap;gap:20px;margin-top:8px}
.form__required-note{font-size:.875rem;color:var(--steel);margin:0}
.field--plain{margin-bottom:8px}

/* CTA band */
.cta{background:var(--brand);color:#fff;position:relative}
.cta::before{content:"";position:absolute;left:0;right:0;top:0;height:10px;color:var(--band);background:var(--stripe)}
.cta-inner{display:grid;grid-template-columns:1fr auto;gap:48px;align-items:center;padding-top:clamp(64px,8vw,104px);padding-bottom:clamp(64px,8vw,104px)}
.cta h2{color:#fff;font-size:clamp(2rem,4.4vw,3.25rem);letter-spacing:-.03em;max-width:24ch}
.cta p{margin-top:16px;color:rgba(255,255,255,.88);max-width:48ch}
.cta p a{color:#fff}
.cta-contact{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.big-link{color:#fff;font-size:clamp(1.25rem,2.4vw,1.75rem);font-weight:700;text-decoration:none;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.big-link:hover{color:#fff;text-decoration:underline}
.cta-contact .btn{margin-top:16px}

/* Footer */
.site-footer{background:var(--band);color:var(--on-band);font-size:.9375rem}
.site-footer a{color:#fff}
.site-footer a:hover{color:#fff}
.footer-inner{display:grid;grid-template-columns:2fr 1.5fr 1.4fr 1.8fr;gap:40px;padding-top:72px;padding-bottom:48px}
.site-footer img{width:140px}
.foot-note{margin-top:20px;max-width:36ch}
.footer-col h2{color:#fff;font-size:1rem;margin-bottom:16px;letter-spacing:.01em}
.footer-col ul{display:grid;gap:8px}
address strong{color:#fff}
.badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.badges li{padding:6px 12px;border:1px solid rgba(255,255,255,.3);border-radius:4px;color:#fff;font-size:.8125rem;font-weight:600}
.badges--light li{border-color:var(--hairline);color:var(--ink);background:var(--white)}
.legal{padding-top:20px;padding-bottom:28px;border-top:1px solid rgba(255,255,255,.14);font-size:.8125rem}

/* Responsive */
@media (max-width:1024px){
  .points,.steps{grid-template-columns:repeat(2,1fr)}
  .points li:nth-child(3),.steps li:nth-child(3){padding-left:0;border-left:0}
  .points li:nth-child(n+3),.steps li:nth-child(n+3){border-top:1px solid var(--hairline);margin-top:24px}
  .section--deep .points li:nth-child(n+3),.section--deep .steps li:nth-child(n+3){border-top-color:rgba(255,255,255,.2)}
  .split{grid-template-columns:1fr;gap:0}
  .split .sec-head{margin-bottom:clamp(28px,4vw,40px)}
  .chips{padding-top:32px}
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .footer-inner{grid-template-columns:1fr 1fr;gap:40px}
}
@media (max-width:880px){
  .header-inner{flex-wrap:wrap;justify-content:space-between;gap:12px;min-height:64px;padding-top:10px;padding-bottom:10px}
  .brand img{width:132px}
  .nav-toggle-label{display:inline-flex}
  .header-cta{display:none}
  .site-header nav{margin-left:0;display:none;order:3;flex-basis:100%}
  .nav-toggle:checked ~ .primary-nav{display:block}
  .nav{flex-direction:column;gap:2px;padding-top:10px;border-top:1px solid var(--hairline)}
  .nav a{padding:14px 12px;font-size:1.0625rem}
  .nav-cta{display:block;margin-top:10px}
  .nav-cta .btn{width:100%}
  .grid-3{grid-template-columns:1fr 1fr}
  .grid-2{grid-template-columns:1fr}
  .cta-inner{grid-template-columns:1fr;gap:32px}
}
@media (max-width:600px){
  .grid-3,.grid-4,.grid-2,.points,.steps,.footer-inner,.form__row{grid-template-columns:1fr}
  .points li,.points li+li,.steps li,.steps li+li{padding:28px 0 4px;border-left:0}
  .points li+li,.steps li+li{border-top:1px solid var(--hairline);margin-top:0}
  .brand img{width:120px}
  .btn-sm{padding:0 14px}
  .actions .btn{flex:1 1 100%}
  .trust{flex-direction:column}
  .card,.map-card,.form{padding:24px 20px 28px}
  .note{padding:20px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}


/* Spacing utilities — used instead of inline style attributes, since the
   Content-Security-Policy uses style-src 'self' (no 'unsafe-inline'). */
.mt-16{margin-top:16px}
.mt-20{margin-top:20px}
.mt-24{margin-top:24px}
.mb-24{margin-bottom:24px}
.map-note{margin-top:16px;font-size:.9375rem}
.legal ul{margin-top:8px}
