@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/chakra-petch-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/chakra-petch-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/chakra-petch-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/chakra-petch-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/chakra-petch-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/chakra-petch-700-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* ==========================================================================
   Durban CCTV Connect - "night monitor" design system
   Archetype H: colour-block mosaic. Near-black ground, 1px grid rules,
   signal-green status accent, technical display face over a workhorse text face.
   Art direction: /workspace/shared/design/cctv-durban/art-direction.md
   No inline styles and no <style> blocks anywhere: the site CSP allows only
   'self' plus two fixed hashes, so every rule lives in this file. Photo tiles
   use <img> with object-fit, never a CSS background set from markup.
   ========================================================================== */

:root{
  --ground:#F4F5F3;
  --ink:#0C1013;
  --tile:#141A1E;
  --on-dark:#E8EDEA;
  --accent:#35D07F;
  --accent-text:#1D7D4B;
  --surface:#E4E7E4;
  --rule-light:#CFD4D0;
  --rule-dark:rgba(232,237,234,.16);
  --rule-dark-strong:rgba(232,237,234,.34);
  --muted-dark:#A2ACA6;
  --muted:#4B5966;
  --max:1280px;
  --step1:16px; --step2:20.2px; --step3:25.4px; --step4:32px; --step5:40.4px; --step6:50.9px;
  --label:13px;
  --display:"Chakra Petch","IBM Plex Sans",system-ui,sans-serif;
  --text:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--ink);
  color:var(--on-dark);
  font-family:var(--text);
  font-size:var(--step1);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent)}
a:hover{color:#5ee39d}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
h1,h2,h3,h4,.display{font-family:var(--display);font-weight:600;letter-spacing:-.01em;line-height:1.14;margin:0 0 .5em}
h1{font-size:var(--step6)}
h2{font-size:var(--step4)}
h3{font-size:var(--step2)}
strong{font-weight:600;color:#fff}
hr{border:0;border-top:1px solid var(--rule-dark);margin:0}
::selection{background:var(--accent);color:var(--ink)}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

.container{max-width:var(--max);margin:0 auto;padding:0 clamp(16px,3vw,28px)}
.wide{max-width:none;padding:0}
.skip-link{position:absolute;left:-9999px;top:0;z-index:50;background:var(--accent);color:var(--ink);padding:10px 14px;font-weight:600}
.skip-link:focus{left:8px;top:8px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* --- label / status language ------------------------------------------- */
.label,.tile-label{font-family:var(--display);font-size:var(--label);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-dark);margin:0 0 .7em}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--accent);margin-right:9px;vertical-align:middle;box-shadow:0 0 0 3px rgba(53,208,127,.18);flex:none}
.figure{font-family:var(--display);font-weight:700;font-size:var(--step4);color:var(--accent);line-height:1}

/* --- header ------------------------------------------------------------ */
.site-header{background:var(--ink);border-bottom:1px solid var(--rule-dark-strong);position:sticky;top:0;z-index:20}
.header-container{display:flex;align-items:center;gap:clamp(12px,2vw,28px);min-height:70px;flex-wrap:wrap}
.logo{display:flex;align-items:center;gap:11px;text-decoration:none;color:#fff}
.logo img{width:34px;height:34px}
.logo-text{font-family:var(--display);font-weight:600;font-size:1.02rem;letter-spacing:.02em;color:#fff;white-space:nowrap}
.logo .dot{margin:0}
.main-nav{margin-left:auto}
.nav-menu{list-style:none;display:flex;flex-wrap:wrap;gap:2px 6px;margin:0;padding:0}
.nav-link{display:block;text-decoration:none;color:var(--on-dark);font-family:var(--display);font-weight:500;font-size:.94rem;letter-spacing:.03em;padding:9px 11px;border:1px solid transparent}
.nav-link:hover{color:#fff;border-color:var(--rule-dark-strong)}
.nav-link.active{color:var(--ink);background:var(--accent)}
.nav-toggle{display:none;align-items:center;gap:9px;background:var(--tile);border:1px solid var(--rule-dark-strong);padding:9px 12px;font:inherit;font-family:var(--display);font-weight:500;font-size:.9rem;letter-spacing:.06em;text-transform:uppercase;color:var(--on-dark);cursor:pointer;margin-left:auto}
.nav-toggle-bar{display:block;width:16px;height:2px;background:var(--accent);position:relative}
.nav-toggle-bar::before,.nav-toggle-bar::after{content:"";position:absolute;left:0;width:16px;height:2px;background:var(--accent)}
.nav-toggle-bar::before{top:-5px}
.nav-toggle-bar::after{top:5px}

/* --- buttons ----------------------------------------------------------- */
.btn{display:inline-block;font-family:var(--display);font-weight:600;font-size:.98rem;letter-spacing:.03em;text-decoration:none;padding:12px 22px;border:1px solid var(--accent);background:var(--accent);color:var(--ink);cursor:pointer}
.btn:hover{background:#5ee39d;border-color:#5ee39d;color:var(--ink)}
.btn-primary{background:var(--accent);color:var(--ink)}
.btn-secondary{background:transparent;color:var(--on-dark);border-color:var(--rule-dark-strong)}
.btn-secondary:hover{background:transparent;border-color:var(--accent);color:#fff}
.btn-light{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-light:hover{background:#000;border-color:#000;color:#fff}
.btn:disabled{opacity:.55;cursor:wait}
.header-cta{padding:10px 16px;font-size:.9rem}

/* --- breadcrumbs ------------------------------------------------------- */
.breadcrumbs{padding:14px 0 0}
.breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;font-family:var(--display);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-dark)}
.breadcrumbs li+li::before{content:"/";margin-right:8px;color:var(--rule-dark-strong)}
.breadcrumbs a{color:var(--muted-dark);text-decoration:none}
.breadcrumbs a:hover{color:var(--accent)}

/* --- mosaic ------------------------------------------------------------ */
.mosaic{display:grid;grid-template-columns:repeat(12,1fr);gap:1px;background:var(--rule-dark);border-top:1px solid var(--rule-dark);border-bottom:1px solid var(--rule-dark)}
.mosaic+.mosaic{border-top:0}
.tile{grid-column:span 12;background:var(--ink);padding:clamp(20px,2.6vw,34px);min-width:0}
.tile--flat{background:var(--tile)}
.tile--quiet{background:#0A0E11}
.tile--light{background:var(--ground);color:var(--ink)}
.tile--light a{color:var(--accent-text)}
.tile--light a:hover{color:#145c37}
.tile--light .label,.tile--light .tile-label{color:var(--muted)}
.tile--light strong{color:var(--ink)}
.tile--light h2,.tile--light h3{color:var(--ink)}
.span1{grid-column:span 1}.span2{grid-column:span 2}.span3{grid-column:span 3}
.span4{grid-column:span 4}.span5{grid-column:span 5}.span6{grid-column:span 6}
.span7{grid-column:span 7}.span8{grid-column:span 8}.span9{grid-column:span 9}
.span10{grid-column:span 10}.span11{grid-column:span 11}.span12,.spanfull{grid-column:span 12}
.tile--tall{min-height:clamp(240px,32vw,420px);display:flex;flex-direction:column;justify-content:flex-end}

/* a photo tile: the image fills the cell, the label sits on a scrim band */
.tile--photo{padding:0;position:relative;overflow:hidden;display:flex;align-items:flex-end;min-height:clamp(220px,26vw,380px)}
.tile--photo img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.tile--photo .tile-body{position:relative;z-index:2;width:100%;padding:clamp(16px,2.2vw,26px);background:linear-gradient(180deg,rgba(12,16,19,.30),rgba(12,16,19,.72) 40%,rgba(12,16,19,.94))}
.tile--photo .tile-label{color:var(--on-dark);margin:0;display:inline-flex;align-items:center;background:rgba(12,16,19,.88);padding:5px 11px 5px 9px;letter-spacing:.08em}
.tile--photo .tile-body .tile-text{color:var(--on-dark);font-size:.95rem;margin:.5em 0 0;max-width:52ch;background:rgba(12,16,19,.9);padding:11px 13px}
.tile--band{min-height:clamp(240px,30vw,440px)}
.tile--band .tile-body{background:linear-gradient(180deg,rgba(12,16,19,.42),rgba(12,16,19,.88))}
.tile--art{position:relative;overflow:hidden;padding:0}
.tile--art img{width:100%;height:100%;object-fit:cover}
.tile--art .tile-body{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(16px,2.2vw,26px)}
.tile--art .tile-body .tile-text{color:var(--on-dark);margin:.4em 0 0}

/* hero split: 7 columns of type, 5 columns of photograph, 1px rule between */
.hero-tile{padding:clamp(26px,4vw,52px)}
.hero-tile h1{font-size:clamp(1.9rem,4.4vw,3.1rem);max-width:20ch}
.hero-lead{font-size:var(--step2);color:var(--on-dark);max-width:46ch}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 14px}
.hero-note{font-size:.93rem;color:var(--muted-dark);margin:0}

/* service / area / advice tiles across a hub */
.tile-link{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;height:100%}
.tile-link h3{margin:0;font-size:var(--step3);color:#fff}
.tile-link p{margin:0;color:var(--muted-dark);font-size:.97rem}
.tile-link:hover h3{color:var(--accent)}
a.tile{text-decoration:none;color:inherit;display:block}
a.tile:hover{background:#191F24}
.tile-sub{font-size:.9rem;color:var(--muted-dark);margin:10px 0 0}
.tile-sub a{color:var(--accent)}

/* --- page body --------------------------------------------------------- */
main{display:block}
.container.wide{max-width:var(--max)}
.page-header{background:var(--ink);padding:clamp(26px,3.4vw,44px) 0 clamp(20px,2.4vw,32px);border-bottom:1px solid var(--rule-dark)}
/* interior pages: header as an 8/4 row, then one cell per section */
.page-head-tile{padding-top:clamp(22px,2.8vw,34px)}
.page-head-tile h1{margin:.35em 0 .4em}
.status-tile{display:flex;flex-direction:column;gap:12px;justify-content:center}
.status-tile .btn{align-self:flex-start}
.micro{font-size:.92rem;color:var(--muted-dark);margin:0}
.mosaic--sections > *{grid-column:span 12;min-width:0;background:var(--ink)}
.mosaic--sections .section{border-bottom:0;max-width:none;padding:clamp(22px,2.6vw,34px)}
.mosaic--sections .section > *{max-width:78ch}
.mosaic--sections .section > .link-tiles,.mosaic--sections .section > .card-grid,.mosaic--sections .section > .faq-grid{max-width:none}
/* a link list rendered as grid cells rather than a bullet column */
.link-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1px;background:var(--rule-dark);border:1px solid var(--rule-dark);list-style:none;padding:0;margin:16px 0 2px}
.link-tiles li{background:var(--tile);margin:0;padding:0}
.link-tiles a{display:block;padding:13px 15px;color:var(--on-dark);text-decoration:none;font-weight:500}
.link-tiles a:hover{background:#191F24;color:var(--accent)}
.tile--light .link-tiles{background:var(--rule-light);border-color:var(--rule-light)}
.tile--light .link-tiles li{background:var(--ground)}
.tile--light .link-tiles a{color:var(--ink)}
.tile--light .link-tiles a:hover{background:var(--surface);color:var(--accent-text)}
.page-header h1{font-size:clamp(1.75rem,3.4vw,2.7rem);max-width:28ch;margin:0 0 .4em}
.lead{font-size:var(--step2);color:var(--muted-dark);max-width:62ch;margin:0}
.section{padding:clamp(22px,2.6vw,34px) 0;border-bottom:1px solid var(--rule-dark);max-width:78ch}
.section:last-of-type{border-bottom:0}
.section h2{font-size:var(--step3);margin-bottom:.55em}
.section h2::before,.faq-block h2::before{content:"";display:inline-block;width:9px;height:9px;background:var(--accent);margin-right:11px;vertical-align:middle}
.section p{color:var(--on-dark)}
.section .label{margin-bottom:.5em}
.post-meta{font-family:var(--display);font-size:.84rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-dark);margin:0 0 1.4em}
.tick-list,.steps,.link-list,.source-list{padding-left:1.1em;margin:0 0 1em}
.tick-list li,.steps li,.link-list li,.source-list li{margin:7px 0;color:var(--on-dark)}
.tick-list li::marker{color:var(--accent)}
.steps{counter-reset:step;list-style:none;padding-left:0}
.steps li{counter-increment:step;position:relative;padding-left:52px;margin:0 0 16px}
.steps li::before{content:counter(step,decimal-leading-zero);position:absolute;left:0;top:-2px;font-family:var(--display);font-weight:700;font-size:var(--step3);color:var(--accent)}
.link-list{columns:2;column-gap:2.2rem}
.link-list li{break-inside:avoid}
.link-list.compact{columns:1;margin:.6em 0 0}
.sources{font-size:.93rem;color:var(--muted-dark)}
.sources h2{font-size:var(--step2)}
.tile--light .sources,.tile--light .post-meta{color:var(--muted)}

/* card grid used by the hubs, rendered as mosaic cells */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1px;background:var(--rule-dark);border:1px solid var(--rule-dark);margin:18px 0 4px}
.card{display:block;background:var(--ink);padding:20px 22px;text-decoration:none;color:inherit}
.card h3{margin:0 0 6px;font-size:var(--step2);color:#fff}
.card p{margin:0;color:var(--muted-dark);font-size:.96rem}
.card .card-sub{margin-top:10px;font-size:.88rem;color:var(--muted-dark)}
.card .card-sub a{color:var(--accent)}
a.card:hover{background:#191F24}
a.card:hover h3{color:var(--accent)}

/* --- faq --------------------------------------------------------------- */
.faq-grid{display:grid;gap:1px;background:var(--rule-dark);border:1px solid var(--rule-dark)}
.faq-item{background:var(--tile);padding:16px 20px}
.faq-question{font-family:var(--display);font-weight:500;font-size:1.04rem;color:#fff;cursor:pointer;list-style:none}
.faq-question::-webkit-details-marker{display:none}
.faq-question::before{content:"+";color:var(--accent);font-weight:700;margin-right:10px;display:inline-block;width:12px}
.faq-item[open] .faq-question::before{content:"-"}
.faq-answer{padding-top:10px}
.faq-answer p{color:var(--muted-dark);margin:0 0 .6em}
.faq-answer p:last-child{margin-bottom:0}

/* --- disclosure + cta -------------------------------------------------- */
.disclosure-note{border-left:3px solid var(--accent);background:var(--tile);padding:14px 18px;margin:22px 0;max-width:78ch}
.disclosure-note p{margin:0;font-size:.95rem;color:var(--on-dark)}
.disclosure-note strong{color:#fff}
.cta-banner{background:var(--tile);border:1px solid var(--rule-dark-strong);border-top:3px solid var(--accent);padding:clamp(22px,3vw,34px);margin:26px 0;max-width:78ch}
.cta-title{margin:0 0 8px;font-size:var(--step3);color:#fff}
.cta-text{margin:0 0 18px;color:var(--on-dark)}

/* --- forms ------------------------------------------------------------- */
.form-section{background:var(--tile);border:1px solid var(--rule-dark);padding:clamp(20px,2.6vw,32px);margin:26px 0;max-width:900px}
.form-section h2,.form-section h3{margin-top:0;color:#fff}
.lead-form{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;max-width:760px}
.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.form-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.form-field label{font-family:var(--display);font-weight:500;font-size:.9rem;letter-spacing:.04em;color:var(--on-dark)}
.form-field input,.form-field select,.form-field textarea{font:inherit;font-size:1rem;padding:11px 13px;border:1px solid var(--rule-dark-strong);background:#0A0E11;color:#fff;border-radius:0;width:100%;min-width:0;max-width:100%}
.form-field select{appearance:none;background-image:none}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:3px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.form-field textarea{resize:vertical}
.form-check{flex-direction:row;align-items:flex-start;gap:11px}
.form-check input{margin-top:4px;width:18px;height:18px;accent-color:var(--accent)}
.form-check label{font-family:var(--text);font-weight:400;letter-spacing:0;font-size:.95rem;color:var(--muted-dark)}
.form-hint{margin:0;font-size:.9rem;color:var(--muted-dark)}
.form-status{margin:4px 0 0;font-weight:600;color:var(--on-dark)}
.form-status.is-error{color:#FF9E93}
.form-status.is-ok{color:var(--accent)}
.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.cf-turnstile{min-height:65px}
.form-section .btn{margin-top:6px;justify-self:start}

/* --- footer ------------------------------------------------------------ */
.site-footer{background:#080B0D;border-top:1px solid var(--rule-dark-strong);margin-top:0;padding:clamp(30px,3.6vw,48px) 0 22px;color:var(--on-dark)}
.site-footer a{color:var(--on-dark)}
.site-footer a:hover{color:var(--accent)}
.footer-grid{display:grid;grid-template-columns:1.7fr 1.1fr 1fr 1.1fr;gap:1px;background:var(--rule-dark);border:1px solid var(--rule-dark)}
.footer-column{background:#080B0D;padding:18px 20px}
.footer-title{font-family:var(--display);font-size:var(--label);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#fff;margin:0 0 10px}
.footer-text,.footer-contact-item{font-size:.92rem;margin:0 0 7px;color:var(--muted-dark)}
.footer-links{list-style:none;padding:0;margin:0;font-size:.92rem}
.footer-links li{margin:5px 0}
.footer-logo{display:inline-block;width:26px;height:26px;vertical-align:middle;margin-right:8px}
.footer-bottom{border-top:1px solid var(--rule-dark);margin-top:22px;padding-top:14px;font-size:.85rem;color:var(--muted-dark)}
.footer-bottom p{margin:5px 0}
.footer-legal a{color:var(--muted-dark)}
.footer-credits{font-size:.8rem;color:#6E7873;max-width:100ch}
.footer-credits a{color:#8C9691}
.preferred-source{margin-top:16px}
.preferred-source:empty{margin-top:0}

/* --- utility ----------------------------------------------------------- */
.credit-line{font-size:.8rem;color:var(--muted-dark);margin:10px 0 0}
.tile--light .credit-line{color:var(--muted)}
.rule-grid{display:grid;gap:1px;background:var(--rule-dark);border:1px solid var(--rule-dark)}
.form-intro{max-width:72ch;color:var(--muted-dark)}
.panel-on-photo{background:rgba(12,16,19,.9);border-left:3px solid var(--accent);padding:clamp(18px,2.4vw,30px);max-width:66ch}
.panel-on-photo h2,.panel-on-photo h3{margin-top:0;color:#fff}
.panel-on-photo p{color:var(--on-dark);margin-bottom:.7em}
.panel-on-photo p:last-child{margin-bottom:0}
.tile--band .tile-body{background:linear-gradient(180deg,rgba(12,16,19,.30),rgba(12,16,19,.86))}
.tile--band.tile--light{background:var(--ground)}

/* --- responsive -------------------------------------------------------- */
@media (max-width:1000px){
  .span7,.span8,.span9,.span10,.span11{grid-column:span 12}
  .span6{grid-column:span 12}
  .footer-grid{grid-template-columns:1fr 1fr}
  .link-list{columns:1}
}
@media (max-width:860px){
  .nav-toggle{display:inline-flex}
  .main-nav{display:none;margin-left:0;width:100%;order:4}
  .main-nav.is-open{display:block;border-top:1px solid var(--rule-dark)}
  .nav-menu{flex-direction:column;gap:0;padding:6px 0 12px}
  .nav-link{padding:11px 2px;border:0;border-bottom:1px solid var(--rule-dark)}
  .header-cta{order:3}
  .span1,.span2,.span3,.span4,.span5{grid-column:span 12}
  .tile--tall{min-height:0}
}
@media (max-width:600px){
  :root{--step5:32px;--step6:32px;--step4:25.4px}
  body{font-size:16px}
  .form-row{grid-template-columns:minmax(0,1fr)}
  .footer-grid{grid-template-columns:1fr}
  .header-container{gap:10px;min-height:62px}
  .hero-tile h1{font-size:1.9rem}
  .card-grid{grid-template-columns:1fr}
}
@media print{
  body{background:#fff;color:#000}
  .site-header,.site-footer,.cta-banner,.form-section{display:none}
}
