:root{
  --ink:#0b1f33;
  --muted:#536579;
  --line:#d9e3ec;
  --paper:#ffffff;
  --soft:#f4f7fa;
  --brand:#c6283c;
  --brand-dark:#951d2d;
  --navy:#0f2d49;
  --gold:#f3b83f;
  --success:#117a56;
  --warn:#805d08;
  --shadow:0 18px 50px rgba(12,31,50,.10);
  --radius:20px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-size:18px;line-height:1.62;text-rendering:optimizeLegibility}
a{color:inherit}
button,input,select{font:inherit}
.container{width:min(1200px,calc(100% - 34px));margin:auto}
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.97);backdrop-filter:blur(14px);border-bottom:1px solid rgba(217,227,236,.95)}
.header-row{min-height:78px;display:flex;align-items:center;gap:30px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:900;letter-spacing:-.03em;font-size:23px;white-space:nowrap}
.brand-mark{width:43px;height:43px;border-radius:13px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:900;box-shadow:0 8px 22px rgba(198,40,60,.25);font-size:22px}
.brand span small{display:block;font-weight:750;font-size:12px;color:var(--muted);letter-spacing:.055em;text-transform:uppercase;margin-top:-2px}
.nav{display:flex;gap:24px;margin-left:auto;align-items:center}
.nav a{text-decoration:none;color:#3d5063;font-size:15.5px;font-weight:760}
.nav a:hover{color:var(--brand)}
.header-cta{background:var(--ink);color:#fff!important;padding:11px 16px;border-radius:11px}
.menu-button{display:none;margin-left:auto;border:0;background:var(--soft);border-radius:10px;padding:10px 12px;font-size:20px;cursor:pointer}
.hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#091b2d 0%,#123b5f 65%,#163e5f 100%);color:#fff;padding:82px 0 78px}
.hero:before,.hero:after{content:"";position:absolute;border-radius:999px;filter:blur(4px);opacity:.15;pointer-events:none}
.hero:before{width:380px;height:380px;background:var(--brand);right:-120px;top:-170px}
.hero:after{width:280px;height:280px;background:var(--gold);left:-90px;bottom:-190px}
.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:58px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:13px;font-weight:850;letter-spacing:.12em;text-transform:uppercase;color:#d7e8f5;margin-bottom:14px}
.eyebrow:before{content:"";width:26px;height:3px;background:var(--gold);border-radius:3px}
h1{font-size:clamp(42px,6vw,72px);line-height:1.02;letter-spacing:-.055em;margin:0 0 22px;max-width:800px}
.hero p{font-size:20px;line-height:1.6;max-width:710px;color:#dbe7f0;margin:0 0 32px}
.search-shell{background:#fff;border-radius:19px;padding:9px;display:flex;align-items:center;box-shadow:0 18px 50px rgba(0,0,0,.25);max-width:800px}
.search-icon{font-size:23px;color:#72849a;margin-left:11px}
.search-shell input{border:0;outline:0;width:100%;font-size:19px;padding:15px 12px;color:var(--ink);background:transparent;min-width:0}
.search-shell button{border:0;background:var(--brand);color:#fff;border-radius:12px;padding:14px 22px;font-weight:850;font-size:16px;cursor:pointer}
.search-shell button:hover{background:var(--brand-dark)}
.search-hints{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;color:#d7e8f5;font-size:14px}
.search-hints button{border:1px solid rgba(255,255,255,.23);background:rgba(255,255,255,.08);color:#fff;padding:8px 12px;border-radius:999px;cursor:pointer;font-size:14px}
.search-hints button:hover{background:rgba(255,255,255,.17)}
.hero-card{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:24px;padding:30px;box-shadow:0 20px 60px rgba(0,0,0,.16)}
.hero-card h2{margin:0 0 20px;font-size:21px}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.stat{padding:19px;border-radius:16px;background:rgba(255,255,255,.08)}
.stat strong{display:block;font-size:30px;line-height:1.1;letter-spacing:-.03em}
.stat span{display:block;color:#cbdce8;font-size:13px;margin-top:4px}
.source-note{margin-top:17px;padding-top:16px;border-top:1px solid rgba(255,255,255,.15);font-size:13px;line-height:1.55;color:#cbdce8}
.section{padding:78px 0}
.section.soft{background:var(--soft)}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:30px}
.section-head h2{font-size:clamp(32px,4vw,46px);letter-spacing:-.04em;margin:0 0 8px;line-height:1.08}
.section-head p{margin:0;color:var(--muted);max-width:720px;font-size:17.5px}
.status-pill{display:inline-flex;align-items:center;gap:8px;background:#e8f7f0;color:var(--success);font-size:13px;font-weight:850;padding:9px 12px;border-radius:999px;white-space:nowrap}
.status-pill:before{content:"";width:8px;height:8px;background:currentColor;border-radius:50%}
.results-wrap{display:none;margin-top:-30px;position:relative;z-index:10}
.results-wrap.active{display:block}
.results-panel{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}
.results-top{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line);gap:12px}
.results-top h2{font-size:21px;margin:0}
.results-meta{font-size:14px;color:var(--muted)}
.result-list{display:grid}
.result-row{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(160px,.8fr) 128px 50px;gap:17px;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}
.result-row:last-child{border-bottom:0}
.result-place strong{display:block;font-size:18px;line-height:1.3}
.alt-names{font-size:13px;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.result-district{font-size:14.5px;color:#536579;line-height:1.4}
.code{font:900 28px/1.1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.055em;background:#edf3f8;color:#071a2c;padding:10px 11px;border-radius:10px;text-align:center;white-space:nowrap}
.copy-btn{border:1px solid var(--line);background:#fff;border-radius:10px;height:43px;cursor:pointer;font-size:18px}
.copy-btn:hover{background:var(--soft)}
.loading,.empty{padding:35px;text-align:center;color:var(--muted);font-size:16px}
.district-tools{display:flex;gap:13px;align-items:center;flex-wrap:wrap;margin-bottom:25px}
.filter-input,.filter-select{height:49px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:0 15px;font:inherit;font-size:16.5px;color:var(--ink);outline:none}
.filter-input{flex:1;min-width:250px}
.filter-input:focus,.filter-select:focus{border-color:#90a9bd;box-shadow:0 0 0 3px rgba(18,59,95,.08)}
.district-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.district-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;text-decoration:none;transition:.18s ease;min-height:124px;position:relative;overflow:hidden}
.district-card:hover{transform:translateY(-3px);border-color:#b8c8d6;box-shadow:0 12px 30px rgba(12,31,50,.08)}
.district-card:after{content:"→";position:absolute;right:17px;top:17px;color:#9aacbb;font-weight:900;font-size:19px}
.district-card strong{display:block;font-size:19px;margin-bottom:5px;padding-right:30px;line-height:1.3}
.district-card .local{display:block;font-size:13px;color:var(--muted);line-height:1.5;min-height:40px}
.district-card .province{display:inline-block;font-size:12px;color:var(--brand);font-weight:850;margin-top:9px;text-transform:uppercase;letter-spacing:.04em}
.zone-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start}
.zone-copy h2{font-size:42px;line-height:1.08;letter-spacing:-.04em;margin:0 0 16px}
.zone-copy p{color:var(--muted);margin:0 0 20px;font-size:18px}
.info-list{list-style:none;padding:0;margin:25px 0 0;display:grid;gap:13px}
.info-list li{display:flex;gap:12px;align-items:flex-start;font-size:16.5px}
.info-list li:before{content:"✓";width:24px;height:24px;border-radius:50%;background:#e8f7f0;color:var(--success);display:grid;place-items:center;font-size:13px;font-weight:900;flex:0 0 auto;margin-top:2px}
.zone-card{border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow);background:#fff}
.zone-card header{padding:19px 20px;background:var(--ink);color:#fff;font-weight:850;font-size:17px}
.zone-list{display:grid;grid-template-columns:1fr 1fr}
.zone-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 17px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);font-size:15px}
.zone-item:nth-child(2n){border-right:0}
.zone-item b{font:900 20px/1.1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.045em}
.guide-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:19px}
.guide-card{padding:25px;border:1px solid var(--line);border-radius:18px;background:#fff}
.guide-card .num{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#fbe9ec;color:var(--brand);font-weight:900;margin-bottom:17px}
.guide-card h3{margin:0 0 8px;font-size:20px}
.guide-card p{margin:0;color:var(--muted);font-size:15.5px}
.faq{display:grid;gap:11px}
details{border:1px solid var(--line);border-radius:14px;padding:0 19px;background:#fff}
summary{cursor:pointer;font-weight:820;padding:18px 0;list-style:none;font-size:17px}
summary::-webkit-details-marker{display:none}
details p{color:var(--muted);margin:0 0 18px;font-size:16px}
.district-hero{padding:52px 0;background:linear-gradient(135deg,#f5f7fa,#eef3f7);border-bottom:1px solid var(--line)}
.breadcrumb{font-size:14px;color:var(--muted);margin-bottom:15px}
.breadcrumb a{color:var(--brand);text-decoration:none;font-weight:760}
.district-hero h1{font-size:clamp(40px,5vw,62px);color:var(--ink);margin-bottom:14px}
.district-hero p{color:var(--muted);max-width:820px;margin:0;font-size:18px}
.district-summary{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.summary-chip{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 11px;font-size:13px;font-weight:760;color:#506276}
.notice{border:1px solid #efdba1;background:#fff9e8;color:#6c520e;border-radius:14px;padding:16px 18px;margin-bottom:28px;font-size:15.5px;line-height:1.55}
.directory-table{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff}
.directory-head,.directory-row{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(140px,.75fr) 132px 50px;gap:16px;align-items:center;padding:15px 20px}
.directory-head{background:#eef3f7;font-size:12px;text-transform:uppercase;letter-spacing:.07em;font-weight:850;color:#566879}
.directory-row{border-top:1px solid var(--line)}
.directory-row .place strong{font-size:18px;line-height:1.35;display:block}
.directory-row .district-col{font-size:14.5px;color:var(--muted)}
.pager{display:flex;justify-content:center;gap:10px;margin-top:22px;flex-wrap:wrap}
.pager button{border:1px solid var(--line);background:#fff;border-radius:11px;padding:10px 14px;cursor:pointer;font-size:14.5px}
.pager button:disabled{opacity:.52;cursor:default}
.district-seo-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:28px;align-items:start}
.seo-copy{font-size:17px;color:#425466}
.seo-copy h2{color:var(--ink);font-size:34px;line-height:1.1;letter-spacing:-.035em;margin:0 0 14px}
.seo-copy p{margin:0 0 14px}
.range-card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:23px}
.range-card h3{margin:0 0 10px;font-size:20px}
.range-card .range-code{font:900 31px/1.15 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.055em;color:var(--brand);margin:7px 0 11px}
.range-card p{margin:0;color:var(--muted);font-size:15.5px}
.site-footer{background:#091b2d;color:#d4e0e9;padding:56px 0 24px}
.footer-grid{display:grid;grid-template-columns:1.3fr .7fr .8fr;gap:42px}
.site-footer .brand{color:#fff}
.site-footer .brand span small{color:#aebfcd}
.site-footer p{color:#aec0ce;max-width:490px;font-size:15px}
.site-footer h4{color:#fff;margin:0 0 13px;font-size:16px}
.footer-links{display:grid;gap:9px}
.footer-links a{text-decoration:none;color:#aec0ce;font-size:14.5px}
.footer-links a:hover{color:#fff}
.footer-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:36px;padding-top:19px;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;color:#91a5b6;font-size:13px}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#071a2c;color:#fff;border-radius:999px;padding:11px 16px;font-size:14px;font-weight:750;transition:.18s ease;z-index:100}
.toast.show{opacity:1;transform:translate(-50%,0)}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:980px){
  .nav{display:none}.menu-button{display:block}
  .hero-grid,.zone-grid,.district-seo-grid{grid-template-columns:1fr}
  .hero-card{max-width:680px}
  .district-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .guide-grid{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr}.footer-grid>div:first-child{grid-column:1/-1}
}
@media(max-width:700px){
  body{font-size:17px}.container{width:min(100% - 24px,1200px)}
  .header-row{min-height:70px}.brand{font-size:21px}.brand-mark{width:40px;height:40px}
  .hero{padding:58px 0 56px}.hero p{font-size:18px}.hero-grid{gap:34px}
  .search-shell{display:grid;grid-template-columns:auto 1fr;padding:8px}.search-shell button{grid-column:1/-1;width:100%;margin-top:4px}.search-shell input{font-size:17px;padding:13px 10px}
  .section{padding:58px 0}.section-head{align-items:flex-start;flex-direction:column}.section-head h2{font-size:32px}
  .district-grid{grid-template-columns:1fr}.district-card{min-height:auto}
  .result-row,.directory-row{grid-template-columns:minmax(0,1fr) 116px 46px;gap:11px;padding:16px}
  .result-district,.directory-row .district-col{grid-column:1/-1;grid-row:2;font-size:13px}
  .result-place,.directory-row .place{grid-column:1;grid-row:1}.result-row .code,.directory-row .code{grid-column:2;grid-row:1}.result-row .copy-btn,.directory-row .copy-btn{grid-column:3;grid-row:1}
  .directory-head{display:none}.code{font-size:24px;padding:9px 8px}.result-place strong,.directory-row .place strong{font-size:17px}
  .zone-list{grid-template-columns:1fr}.zone-item{border-right:0}.zone-item b{font-size:21px}
  .zone-copy h2{font-size:34px}.footer-grid{grid-template-columns:1fr}.footer-grid>div:first-child{grid-column:auto}
}
/* V3: dedicated locality/postcode landing pages */
.postcode-hero{padding:58px 0;background:linear-gradient(135deg,#f7f9fb 0%,#edf4f7 100%);border-bottom:1px solid var(--line)}
.postcode-hero-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:46px;align-items:center}
.postcode-hero h1{font-size:clamp(44px,6vw,72px);line-height:1.02;letter-spacing:-.048em;margin:8px 0 16px;color:var(--ink)}
.postcode-lead{font-size:21px;color:#4b5e70;max-width:720px;margin:0}
.eyebrow{text-transform:uppercase;letter-spacing:.09em;font-size:13px!important;font-weight:900!important;color:var(--brand)!important;margin:0 0 8px!important}
.postcode-focus{background:#fff;border:1px solid var(--line);border-radius:24px;padding:28px;text-align:center;box-shadow:var(--shadow)}
.postcode-label{display:block;text-transform:uppercase;letter-spacing:.1em;font-size:12px;color:var(--muted);font-weight:900;margin-bottom:10px}
.postcode-big{display:block;font:950 clamp(48px,7vw,72px)/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.09em;color:var(--brand);margin:5px 0 21px}
.primary-copy,.copy-wide{border:0;border-radius:13px;background:var(--brand);color:#fff;font:850 16px/1 inherit;padding:14px 18px;cursor:pointer;width:100%}
.postcode-content-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:42px;align-items:start}
.postcode-content-grid article>h2{font-size:31px;line-height:1.12;letter-spacing:-.025em;margin:0 0 13px;color:var(--ink)}
.postcode-content-grid article>h2:not(:first-child){margin-top:36px}
.postcode-content-grid article>p{font-size:18px;color:#435669;line-height:1.72}
.fact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:26px 0 34px}
.fact{border:1px solid var(--line);background:#fff;border-radius:14px;padding:16px 18px}
.fact span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800;margin-bottom:5px}
.fact b{font-size:17px;color:var(--ink)}.fact b.mono{font:900 21px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--brand);letter-spacing:.05em}
.address-example{border:1px solid var(--line);border-left:5px solid var(--brand);background:#f9fbfc;border-radius:14px;padding:21px 22px;display:grid;gap:5px;font-size:17px;max-width:620px}
.address-example strong{font-size:19px;color:var(--ink)}
.source-note{padding:15px 17px;border-radius:12px;background:#fff9e8;border:1px solid #efdba1;font-size:15px!important;color:#65521a!important;margin-top:24px}
.verify-actions{display:flex;gap:11px;flex-wrap:wrap;margin-top:18px}.btn-secondary{display:inline-flex;align-items:center;text-decoration:none;border:1px solid var(--line);border-radius:12px;padding:11px 14px;font-weight:800;color:var(--ink);background:#fff}
.postcode-side{display:grid;gap:18px;position:sticky;top:92px}.quick-answer,.keyword-help{border:1px solid var(--line);border-radius:18px;background:#fff;padding:22px;box-shadow:0 8px 28px rgba(7,29,48,.05)}
.quick-answer>span{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:850;color:var(--muted)}.quick-answer h2{font-size:20px;margin:8px 0}.quick-code{font:950 38px/1.1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--brand);letter-spacing:.06em;margin:14px 0 17px}
.keyword-help h3{margin:0 0 11px;font-size:18px}.keyword-help p{margin:0;padding:9px 0;border-top:1px solid var(--line);font-size:14px;color:#56697a}.keyword-help p:first-of-type{border-top:0}
.section-soft{background:#f6f8fa}.related-postcodes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.related-postcode{display:flex;justify-content:space-between;gap:10px;align-items:center;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px 16px;font-weight:760}.related-postcode:hover{border-color:#bac9d5;box-shadow:0 6px 18px rgba(7,29,48,.06)}.related-postcode b{font:900 17px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--brand);letter-spacing:.035em}
.seo-question-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.seo-question-grid>div{border:1px solid var(--line);border-radius:16px;padding:23px;background:#fff}.seo-question-grid h2{font-size:22px;margin:0 0 9px}.seo-question-grid p{font-size:16.5px;color:var(--muted);margin:0}
.result-place a,.directory-row .place a{color:var(--ink);text-decoration:none}.result-place a:hover,.directory-row .place a:hover{color:var(--brand);text-decoration:underline}
@media(max-width:900px){.postcode-hero-grid,.postcode-content-grid{grid-template-columns:1fr}.postcode-focus{max-width:460px}.postcode-side{position:static}.related-postcodes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.postcode-hero{padding:42px 0}.postcode-hero h1{font-size:40px}.postcode-lead{font-size:18px}.postcode-focus{padding:22px}.postcode-big{font-size:48px}.fact-grid,.seo-question-grid,.related-postcodes{grid-template-columns:1fr}.postcode-content-grid article>p{font-size:17px}.postcode-content-grid article>h2{font-size:27px}}
