@font-face{font-family:DispatchCondensed;src:url("assets/fonts/barlow-condensed-700.ttf") format("truetype");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:DispatchSans;src:url("assets/fonts/barlow-400.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:DispatchSans;src:url("assets/fonts/barlow-600.ttf") format("truetype");font-weight:600;font-style:normal;font-display:swap}

:root{
  --ink:#121411;
  --ink-soft:#323730;
  --paper:#f2f3ef;
  --white:#fff;
  --rule:#c9cdc5;
  --muted:#687068;
  --accent:var(--brand,#1f5b53);
  --on-accent:var(--brand-on,#fff);
  --accent-text:var(--brand-text,#1f5b53);
  --wrap:min(1180px,calc(100vw - 48px));
  --sans:DispatchSans,Arial,sans-serif;
  --condensed:DispatchCondensed,"Arial Narrow",sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.55;-webkit-font-smoothing:antialiased}
body,button,input,select,textarea{font-family:var(--sans)}
img{display:block;max-width:100%}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:4px}
button,input,select,textarea{font:inherit}
button,a{touch-action:manipulation}
[hidden]{display:none!important}
.wrap{width:var(--wrap);margin-inline:auto}
.icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:square;stroke-linejoin:miter;stroke-width:1.7;vertical-align:-4px}
.skip-link{position:fixed;left:16px;top:-80px;z-index:999;background:var(--ink);color:#fff;padding:10px 16px}
.skip-link:focus{top:16px}
:focus-visible{outline:3px solid var(--accent);outline-offset:4px}

/* Neutral newspaper shell */
.site-header{position:sticky;top:0;z-index:40;background:#fff;border-bottom:1px solid var(--ink)}
.header-inner{width:var(--wrap);min-height:80px;margin:auto;display:grid;grid-template-columns:minmax(220px,1fr) auto auto;align-items:center;gap:30px}
.brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none;min-width:0}
.brand-logo{width:auto;max-width:190px;height:50px;object-fit:contain}
.brand-mark{display:grid;place-items:center;width:43px;height:43px;border:1px solid var(--ink);font:700 18px/1 var(--condensed);letter-spacing:.04em}
.brand-name{font:700 clamp(21px,2.2vw,30px)/.92 var(--condensed);letter-spacing:.01em;text-transform:uppercase;max-width:230px}
.brand-name small{display:block;margin-top:6px;color:var(--muted);font:600 10px/1.15 var(--sans);letter-spacing:.12em}
.site-menu{display:flex;align-items:center;gap:28px}
.site-menu a{position:relative;font-size:13px;font-weight:600;text-decoration:none;text-transform:uppercase;letter-spacing:.09em;padding:30px 0 25px}
.site-menu a::after{content:"";position:absolute;left:0;right:0;bottom:18px;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left}
.site-menu a:hover::after,.site-menu a[aria-current="page"]::after{transform:scaleX(1)}
.header-book{display:inline-flex;align-items:center;gap:8px;background:var(--ink);color:#fff;padding:11px 15px;font-size:13px;font-weight:600;text-decoration:none;text-transform:uppercase;letter-spacing:.05em}
.menu-toggle{display:none;border:0;background:transparent;padding:10px 0;align-items:center;gap:8px}
.menu-toggle span{display:block;width:26px;height:2px;background:var(--ink)}
.menu-toggle b{font-size:13px;text-transform:uppercase;letter-spacing:.08em}
.dispatch-bar{min-height:38px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:8px max(24px,calc((100vw - 1180px)/2));font:600 11px/1.2 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.dispatch-bar .dispatch-kicker{color:var(--on-accent);background:var(--accent);padding:5px 8px;margin:-5px 0}

/* Buttons and shared labels */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 20px;border:1px solid transparent;font-size:14px;font-weight:600;text-decoration:none;text-transform:uppercase;letter-spacing:.05em;cursor:pointer}
.btn-primary{background:var(--accent);color:var(--on-accent)}
.btn-primary:hover{filter:brightness(.9)}
.btn-light{background:#fff;color:var(--ink)}
.text-link{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.ledger-index{margin:0 0 12px;color:var(--accent-text);font:600 12px/1.2 var(--sans);letter-spacing:.13em;text-transform:uppercase}
.route-stamp{display:inline-flex;align-items:center;gap:10px;margin:0 0 20px;font:600 12px/1.2 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.route-stamp span{display:grid;place-items:center;width:34px;height:30px;background:var(--accent);color:var(--on-accent)}

/* Edition-cover hero: headline on paper, photography on the facing page */
.hero{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:0;width:var(--wrap);min-height:650px;margin:32px auto;background:#fff;border-top:5px solid var(--ink);overflow:hidden}
.hero-photo{grid-column:7/-1;grid-row:1;width:100%;height:650px;object-fit:cover}
.hero-filter{display:none}
.hero-grid{position:relative;z-index:2;grid-column:1/-1;grid-row:1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:center;pointer-events:none}
.hero-copy{grid-column:1/7;padding:58px 54px 60px 36px;pointer-events:auto}
.hero-copy h1{max-width:650px;margin:0;font:700 clamp(58px,6.1vw,90px)/.87 var(--condensed);letter-spacing:-.025em;text-transform:uppercase}
.hero-copy>p:not(.route-stamp){max-width:560px;margin:28px 0 0;color:var(--ink-soft);font-size:18px;line-height:1.55}
.hero-actions{display:flex;align-items:center;gap:24px;margin-top:32px;flex-wrap:wrap}
.hero-ledger{grid-column:9/-1;align-self:end;margin:0 22px 24px 0;background:rgba(255,255,255,.95);border-top:4px solid var(--accent);pointer-events:auto}
.hero-ledger>p{margin:0;padding:12px 14px;border-bottom:1px solid var(--rule);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
.hero-ledger ol{list-style:none;margin:0;padding:0}
.hero-ledger li{display:grid;grid-template-columns:34px 1fr;gap:0 10px;padding:11px 14px;border-bottom:1px solid var(--rule)}
.hero-ledger li:last-child{border:0}
.hero-ledger b{grid-row:1/3;color:var(--accent);font:700 18px/1 var(--condensed)}
.hero-ledger span{font-weight:600}
.hero-ledger small{color:var(--muted)}

/* Search resembles a classifieds desk, not a floating card */
.search-dock{background:var(--paper);padding:0 0 70px}
.property-finder{display:grid;grid-template-columns:1.35fr 1fr 1fr auto;background:#fff;border:1px solid var(--ink)}
.property-finder fieldset,.property-finder>label{min-width:0;margin:0;padding:15px 18px;border:0;border-right:1px solid var(--rule)}
.property-finder fieldset{display:flex;align-items:end;gap:8px;flex-wrap:wrap}
.property-finder legend,.property-finder>label>span{display:block;width:100%;margin-bottom:9px;color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.13em;text-transform:uppercase}
.property-finder fieldset label{position:relative}
.property-finder input{position:absolute;opacity:0;pointer-events:none}
.property-finder fieldset span{display:block;padding:5px 9px;border:1px solid var(--rule);font-size:13px;font-weight:600;cursor:pointer}
.property-finder input:checked+span{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.property-finder select{width:100%;border:0;background:#fff;color:var(--ink);font-weight:600;cursor:pointer}
.property-finder button{border:0;background:var(--ink);color:#fff;padding:16px 24px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:pointer}
.property-finder.is-compact{grid-template-columns:1.3fr 1fr 1fr auto}

/* Editorial story strips */
.section{padding:86px 0}
.section-heading{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.6fr);align-items:end;gap:50px;padding-bottom:24px;border-bottom:2px solid var(--ink)}
.section-heading h2,.process-head h2,.agent-statement h2,.route-copy h2{max-width:760px;margin:0;font:700 clamp(40px,5vw,68px)/.95 var(--condensed);text-transform:uppercase;letter-spacing:-.015em}
.section-heading>p{margin:0;color:var(--muted)}
.property-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:26px;background:var(--rule);border:1px solid var(--rule)}
.property-card{min-width:0;background:#fff}
.property-photo{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:#dfe1db}
.property-photo img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.property-card:hover .property-photo img{transform:scale(1.025)}
.property-index,.property-purpose{position:absolute;top:12px;background:#fff;color:var(--ink);padding:6px 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.09em}
.property-index{left:12px}
.property-purpose{right:12px;background:var(--accent);color:var(--on-accent)}
.property-copy{padding:22px}
.property-place{display:flex;justify-content:space-between;gap:15px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.property-copy h3{margin:18px 0 8px;font:700 clamp(26px,3vw,38px)/1 var(--condensed);text-transform:uppercase}
.property-copy h3 a{text-decoration:none}
.property-price{margin:0;font-size:17px;font-weight:600}
.property-facts{display:flex;justify-content:space-between;gap:20px;margin-top:18px;padding-top:14px;border-top:1px solid var(--rule);font-size:13px}
.property-facts>a{font-weight:600}
.dispatch-stories .property-list{grid-template-columns:minmax(0,1.6fr) minmax(310px,.8fr);grid-template-rows:repeat(3,minmax(0,auto))}
.dispatch-stories .property-card:first-child{grid-row:1/4}
.dispatch-stories .property-card:not(:first-child){display:grid;grid-template-columns:150px 1fr}
.dispatch-stories .property-card:not(:first-child) .property-photo{height:100%;min-height:190px;aspect-ratio:auto}
.dispatch-stories .property-card:not(:first-child) .property-copy{padding:17px}
.dispatch-stories .property-card:not(:first-child) .property-place{display:block}
.dispatch-stories .property-card:not(:first-child) .property-place span{display:block;margin-bottom:4px}
.dispatch-stories .property-card:not(:first-child) h3{font-size:25px;margin:12px 0 6px}
.dispatch-stories .property-card:not(:first-child) .property-facts{display:block}
.dispatch-stories .property-card:not(:first-child) .property-facts span{display:none}
.section-foot,.catalogue-meta{display:flex;justify-content:space-between;gap:20px;padding-top:17px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.section-foot p,.catalogue-meta p{margin:0}

/* Sales/rental columns are opposing editorial pages */
.paths{display:grid;grid-template-columns:1fr 1fr;background:#fff;border-block:1px solid var(--ink)}
.paths>div{min-height:430px;padding:70px max(24px,calc((100vw - 1180px)/2));padding-right:7vw}
.paths>div+div{border-left:1px solid var(--ink)}
.paths h2{max-width:560px;margin:0 0 24px;font:700 clamp(44px,5vw,70px)/.92 var(--condensed);text-transform:uppercase}
.paths p:not(.ledger-index){max-width:520px;color:var(--ink-soft)}
.paths a{display:inline-flex;gap:8px;margin-top:22px;font-weight:600}
.path-rent{background:var(--ink);color:#fff}
.path-rent p:not(.ledger-index){color:#d5d8d2}

/* Location desk */
.neighbourhoods{background:#fff}
.route-layout{display:grid;grid-template-columns:.85fr 1.15fr;gap:70px;align-items:center}
.route-map{position:relative;min-height:410px;border:1px solid var(--ink);background:var(--paper)}
.route-map::before{content:"CAMEROON / DESK";position:absolute;left:20px;top:18px;font:600 11px/1 var(--sans);letter-spacing:.12em}
.route-line{position:absolute;left:50%;top:70px;bottom:55px;width:1px;background:var(--ink)}
.route-stop{position:absolute;left:50%;display:flex;align-items:center;gap:12px;transform:translateX(-14px);border:0;background:transparent;text-align:left;cursor:pointer}
.route-stop b{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--ink);background:#fff;font:700 15px/1 var(--condensed)}
.route-stop span{padding:5px 8px;background:#fff;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.route-stop:nth-of-type(1){top:90px}.route-stop:nth-of-type(2){top:200px}.route-stop:nth-of-type(3){top:310px}
.route-stop.is-active b{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.route-copy [data-route-copy]{margin-top:35px;padding-top:24px;border-top:1px solid var(--ink)}
.route-copy h3{margin:0 0 10px;font:700 33px/1 var(--condensed);text-transform:uppercase}
.route-copy p{max-width:580px;color:var(--ink-soft)}
.route-copy a{font-weight:600}
.route-copy [data-route-copy].is-refreshing{animation:dispatchFlash .34s ease}
@keyframes dispatchFlash{50%{opacity:.35}}

/* Viewing procedure and people */
.viewing-process{padding:90px 0;background:var(--ink);color:#fff}
.process-head{display:grid;grid-template-columns:1.2fr .8fr;gap:50px;align-items:end}
.process-head p{margin:0;color:#cfd3cd}
.process-steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);margin:50px 0 36px;padding:0;border-block:1px solid #555b54}
.process-steps li{padding:26px 24px;min-height:215px;border-right:1px solid #555b54}
.process-steps li:last-child{border:0}
.process-steps b{color:var(--accent-light,#cfd3cd);font:700 28px/1 var(--condensed)}
.process-steps h3{margin:45px 0 8px;font:700 25px/1 var(--condensed);text-transform:uppercase}
.process-steps p{margin:0;color:#cfd3cd;font-size:15px}
.agent-layout{display:grid;grid-template-columns:1fr .85fr;gap:0;border:1px solid var(--ink);background:#fff}
.agent-statement{padding:50px;border-right:1px solid var(--ink)}
.agent-statement>p:last-child{max-width:580px;color:var(--ink-soft)}
.agent-card{display:grid;grid-template-columns:auto 1fr;gap:22px;padding:45px;align-content:start}
.agent-monogram{display:grid;place-items:center;width:68px;height:68px;background:var(--accent);color:var(--on-accent);font:700 26px/1 var(--condensed)}
.agent-card p,.agent-card h3,.agent-card span{margin:0}.agent-card h3{font:700 30px/1 var(--condensed);text-transform:uppercase}.agent-card>a{grid-column:1/-1;font-weight:600}
.agent-layout blockquote{grid-column:1/-1;margin:0;padding:32px 50px;border-top:1px solid var(--ink);font:700 clamp(30px,4vw,48px)/1.05 var(--condensed);text-transform:uppercase}
.contact-strip{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:55px max(24px,calc((100vw - 1180px)/2));background:var(--accent);color:var(--on-accent)}
.contact-strip h2{margin:0;font:700 clamp(38px,4vw,58px)/1 var(--condensed);text-transform:uppercase}
.contact-strip .ledger-index{color:inherit}
.contact-strip-actions{display:flex;gap:28px;flex-wrap:wrap}.contact-strip-actions a{font-weight:600}
.closing{display:grid;grid-template-columns:auto 1fr auto;gap:34px;align-items:center;padding:75px max(24px,calc((100vw - 1180px)/2));background:#fff;border-bottom:1px solid var(--ink)}
.closing-number{font:700 66px/1 var(--condensed);color:var(--accent-text)}
.closing p{margin:0;color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.08em}
.closing h2{margin:6px 0 0;font:700 clamp(38px,4vw,58px)/.95 var(--condensed);text-transform:uppercase}

/* Injected map */
.sb-location-map{padding:82px 0;background:#fff!important;color:var(--ink)!important}
.sb-location-map__inner{width:var(--wrap)!important;margin:auto!important;display:grid!important;grid-template-columns:minmax(260px,.55fr) minmax(0,1.45fr)!important;gap:44px!important;align-items:center!important}
.sb-location-map iframe{width:100%!important;min-height:430px!important;border:1px solid var(--ink)!important;border-radius:0!important;filter:grayscale(1) contrast(.92)}
.sb-location-map h2{font:700 clamp(40px,5vw,66px)/.95 var(--condensed)!important;text-transform:uppercase}

/* Catalogue is a tabular picture ledger */
.page-intro{width:var(--wrap);margin:58px auto 0;display:grid;grid-template-columns:1.3fr .7fr;gap:60px;align-items:end;padding:0 0 34px;border-bottom:3px solid var(--ink)}
.page-intro h1{max-width:850px;margin:0;font:700 clamp(55px,7vw,94px)/.86 var(--condensed);text-transform:uppercase;letter-spacing:-.02em}
.page-intro>p{margin:0 0 6px;color:var(--ink-soft)}
.catalogue-tools{padding:20px 0 0}.catalogue-tools .property-finder{width:var(--wrap);margin:auto}
.catalogue-section{padding-top:40px}
.property-list--catalogue{grid-template-columns:1fr;background:transparent;border:0;border-top:1px solid var(--ink)}
.property-list--catalogue .property-card{display:grid;grid-template-columns:280px minmax(0,1fr);border-bottom:1px solid var(--ink)}
.property-list--catalogue .property-photo{height:205px;aspect-ratio:auto}
.property-list--catalogue .property-copy{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto 1fr;gap:4px 30px;padding:24px 28px}
.property-list--catalogue .property-place{grid-column:1/-1}
.property-list--catalogue h3{margin:10px 0 4px}.property-list--catalogue .property-price{align-self:center}
.property-list--catalogue .property-facts{grid-column:1/-1;align-self:end}
.property-card.is-hidden{display:none}
.empty-filter{text-align:center;padding:80px 20px;border-bottom:1px solid var(--ink)}

/* Property detail */
.detail-breadcrumb{width:var(--wrap);margin:30px auto;font-size:13px}.detail-breadcrumb span{margin-left:10px}
.detail-hero{display:grid;grid-template-columns:1.25fr .75fr;background:#fff;border-block:1px solid var(--ink)}
.detail-hero figure{position:relative;margin:0;min-height:600px}.detail-hero figure img{width:100%;height:100%;object-fit:cover}
.detail-hero figcaption{position:absolute;left:20px;top:20px;background:var(--accent);color:var(--on-accent);padding:7px 10px;font-size:12px;font-weight:600;text-transform:uppercase}
.detail-summary{padding:65px 7vw 65px 48px;align-self:center}
.detail-summary h1{margin:0;font:700 clamp(48px,6vw,80px)/.88 var(--condensed);text-transform:uppercase}
.detail-price{margin:24px 0;font-size:22px;font-weight:600}
.agent-line{font-size:13px;color:var(--muted)}
.detail-ledger{width:var(--wrap);margin:55px auto 90px;display:grid;grid-template-columns:1fr 1fr .8fr;border:1px solid var(--ink)}
.detail-ledger>div,.detail-ledger>aside{padding:30px;border-right:1px solid var(--ink)}.detail-ledger>aside{border:0;background:#fff}
.detail-ledger dl{margin:0}.detail-ledger dl div{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid var(--rule)}
.detail-ledger dt{color:var(--muted)}.detail-ledger dd{margin:0;font-weight:600}.detail-ledger ul{padding-left:19px}
.missing-property,.not-found{width:var(--wrap);min-height:60vh;margin:auto;display:grid;place-content:center;text-align:center}.not-found>span{font:700 clamp(100px,20vw,260px)/.8 var(--condensed);color:var(--accent-text)}

/* Booking */
.booking-page{width:var(--wrap);margin:56px auto 90px;display:grid;grid-template-columns:.8fr 1.2fr;background:#fff;border:1px solid var(--ink)}
.booking-intro{padding:48px;background:var(--ink);color:#fff}
.booking-intro h1{margin:0;font:700 clamp(45px,5vw,70px)/.9 var(--condensed);text-transform:uppercase}
.booking-intro>p{color:#d1d5cf}.booking-intro ol{list-style:none;margin:50px 0 0;padding:0;border-top:1px solid #525851}
.booking-intro li{display:flex;gap:20px;padding:17px 0;border-bottom:1px solid #525851}.booking-intro li b{color:var(--accent-light,#cfd3cd)}
.booking-panel{padding:48px}.form-head{display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:14px;border-bottom:2px solid var(--ink);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.1em}
.booking-panel label{display:block;margin-bottom:18px}.booking-panel label>span{display:block;margin-bottom:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.booking-panel input,.booking-panel select,.booking-panel textarea{width:100%;border:1px solid var(--rule);border-radius:0;background:#fff;padding:12px;color:var(--ink)}
.booking-panel textarea{resize:vertical}.consent{display:flex!important;align-items:flex-start;gap:10px}.consent input{width:auto;margin-top:5px}.consent span{text-transform:none!important;letter-spacing:0!important;font-weight:400!important}
.form-note,.booking-status{font-size:13px}.booking-status{min-height:22px;color:#9b231b}.booking-success{padding:30px}.success-mark{display:grid;place-items:center;width:52px;height:52px;background:var(--accent);color:var(--on-accent)}.booking-success h2{font:700 44px/1 var(--condensed);text-transform:uppercase}.booking-success button{display:block;margin-top:20px;border:0;background:transparent;text-decoration:underline;cursor:pointer}

/* About, contact and policy pages */
.agency-story-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}.agency-story h2{margin:0;font:700 clamp(42px,5vw,66px)/.94 var(--condensed);text-transform:uppercase}.agency-principles{display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border-block:1px solid var(--ink)}
.agency-principles article{padding:55px max(24px,4vw);border-right:1px solid var(--ink)}.agency-principles article:last-child{border:0}.agency-principles b{color:var(--accent-text);font:700 30px/1 var(--condensed)}.agency-principles h3{font:700 30px/1 var(--condensed);text-transform:uppercase}
.contact-page{width:var(--wrap);margin:58px auto 90px;display:grid;grid-template-columns:1.1fr .9fr;border:1px solid var(--ink);background:#fff}.contact-copy,.contact-card{padding:48px}.contact-copy{border-right:1px solid var(--ink)}.contact-copy h1,.contact-card h2{margin:0;font:700 clamp(46px,5vw,72px)/.9 var(--condensed);text-transform:uppercase}.contact-ledger{margin-top:36px;border-top:1px solid var(--ink)}.contact-ledger>div{display:grid;grid-template-columns:90px 1fr;gap:20px;padding:13px 0;border-bottom:1px solid var(--rule)}.contact-ledger span{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.contact-ledger p{margin:0}.contact-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;background:var(--paper)}.contact-card>a:last-child{margin-top:22px;font-weight:600}
.policy-page .wrap{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--ink)}.policy-page article{padding:36px 32px;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink)}.policy-page article:nth-child(even){border-right:0}.policy-page article b{color:var(--accent-text);font:700 26px/1 var(--condensed)}.policy-page article h2{font:700 32px/1 var(--condensed);text-transform:uppercase}

/* Neutral footer */
.site-footer{background:#fff;color:var(--ink);border-top:1px solid var(--ink)}
.footer-grid{width:var(--wrap);margin:auto;display:grid;grid-template-columns:1.35fr .75fr 1fr .85fr;gap:40px;padding:58px 0}
.footer-grid>div{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.footer-grid>div:first-child p{max-width:310px;color:var(--muted)}
.footer-label{margin:0 0 12px;font-size:11px!important;font-weight:600;text-transform:uppercase;letter-spacing:.11em;color:var(--accent-text)!important}.footer-grid a{font-size:14px}.footer-cta{font-weight:600}
.footer-bottom{width:var(--wrap);margin:auto;display:flex;justify-content:space-between;gap:20px;padding:16px 0;border-top:1px solid var(--rule);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.toast{position:fixed;left:50%;bottom:22px;z-index:80;transform:translate(-50%,20px);opacity:0;background:var(--ink);color:#fff;padding:10px 16px;pointer-events:none;transition:.2s ease}.toast.is-visible{transform:translate(-50%,0);opacity:1}

@media(max-width:980px){
  :root{--wrap:min(100% - 32px,760px)}
  .hero{min-height:0;grid-template-columns:1fr;margin-top:20px}.hero-photo{grid-column:1;grid-row:2;height:min(62vw,500px)}.hero-grid{grid-column:1;grid-row:1/3;display:block}.hero-copy{padding:45px 26px 38px;background:#fff}.hero-copy h1{font-size:clamp(50px,10vw,76px)}.hero-ledger{width:min(330px,calc(100% - 32px));margin:-110px 16px 16px auto;position:relative}.property-finder,.property-finder.is-compact{grid-template-columns:1fr 1fr}.property-finder fieldset{grid-column:1/-1}.property-finder button{min-height:70px}
  .dispatch-stories .property-list{grid-template-columns:1fr;grid-template-rows:auto}.dispatch-stories .property-card:first-child{grid-row:auto}.dispatch-stories .property-card:not(:first-child){grid-template-columns:180px 1fr}.paths>div{padding:55px 32px}.route-layout,.process-head,.agent-layout,.detail-ledger,.booking-page,.contact-page{grid-template-columns:1fr}.process-steps{grid-template-columns:repeat(2,1fr)}.process-steps li:nth-child(2){border-right:0}.agent-statement,.contact-copy{border-right:0;border-bottom:1px solid var(--ink)}.agent-layout blockquote{grid-column:1}.closing{grid-template-columns:auto 1fr}.closing .btn{grid-column:2;justify-self:start}.footer-grid{grid-template-columns:1fr 1fr}
  .page-intro{grid-template-columns:1fr}.detail-hero{grid-template-columns:1fr}.detail-hero figure{min-height:450px}.detail-ledger>div,.detail-ledger>aside{border-right:0;border-bottom:1px solid var(--ink)}.detail-ledger>aside{border-bottom:0}.sb-location-map__inner{grid-template-columns:1fr!important}
}
@media (max-width: 767px) {
  .header-inner{grid-template-columns:1fr auto}
  .menu-toggle{display:grid;grid-template-columns:auto auto;align-items:center}
  .menu-toggle span{grid-column:1}
  .menu-toggle b{grid-column:2;grid-row:1/4}
  .site-menu{position:absolute;left:0;right:0;top:100%;display:none;flex-direction:column;align-items:stretch;gap:0;background:#fff;border-bottom:1px solid var(--ink);padding:10px 16px}
  .site-menu.is-open{display:flex}
  .site-menu a{padding:14px 6px;border-bottom:1px solid var(--rule)}
  .site-menu a::after{display:none}
  .header-book{display:none}
}

@media(max-width:640px){
  :root{--wrap:calc(100% - 24px)}
  body{font-size:16px}.header-inner{min-height:70px}.brand-name{font-size:21px}.brand-mark{width:38px;height:38px}.brand-logo{height:42px;max-width:150px}.dispatch-bar{justify-content:flex-start;padding:9px 12px;overflow:hidden;white-space:nowrap}.dispatch-bar span:not(.dispatch-kicker){display:none}
  .hero{width:100%;margin:0;border-top:0}.hero-copy{padding:36px 18px}.hero-copy h1{font-size:clamp(43px,14vw,61px);line-height:.9}.hero-copy>p:not(.route-stamp){font-size:16px;margin-top:20px}.hero-actions{align-items:flex-start;flex-direction:column;gap:15px}.hero-photo{height:430px}.hero-ledger{margin-top:0}
  .search-dock{padding:18px 0 55px}.property-finder,.property-finder.is-compact{grid-template-columns:1fr}.property-finder fieldset,.property-finder>label{grid-column:auto;border-right:0;border-bottom:1px solid var(--rule)}.property-finder button{min-height:58px}
  .section{padding:58px 0}.section-heading{grid-template-columns:1fr;gap:18px}.section-heading h2,.process-head h2,.agent-statement h2,.route-copy h2{font-size:42px}.property-list{grid-template-columns:1fr}.dispatch-stories .property-card:not(:first-child),.property-list--catalogue .property-card{grid-template-columns:1fr}.dispatch-stories .property-card:not(:first-child) .property-photo,.property-list--catalogue .property-photo{height:240px}.property-place,.property-facts,.section-foot,.catalogue-meta{align-items:flex-start;flex-direction:column}.property-list--catalogue .property-copy{display:block}.property-list--catalogue .property-price{margin-top:10px}
  .paths{grid-template-columns:1fr}.paths>div+div{border-left:0;border-top:1px solid var(--ink)}.paths h2{font-size:46px}.route-layout{gap:35px}.route-map{min-height:350px}.viewing-process{padding:60px 0}.process-steps{grid-template-columns:1fr}.process-steps li{min-height:0;border-right:0;border-bottom:1px solid #555b54}.process-steps h3{margin-top:22px}.agent-statement,.agent-card,.agent-layout blockquote{padding:28px}.contact-strip{align-items:flex-start;flex-direction:column}.closing{grid-template-columns:1fr;padding-block:50px}.closing-number{font-size:48px}.closing .btn{grid-column:1}.sb-location-map{padding:58px 0}.sb-location-map iframe{min-height:340px!important}
  .page-intro{margin-top:38px;gap:24px}.page-intro h1{font-size:clamp(48px,16vw,70px)}.catalogue-tools .property-finder{width:var(--wrap)}.detail-hero figure{min-height:330px}.detail-summary{padding:38px 22px}.detail-summary h1{font-size:52px}.detail-ledger{margin-top:26px}.booking-page{width:100%;margin:0;border-inline:0}.booking-intro,.booking-panel{padding:30px 20px}.booking-intro h1{font-size:48px}.form-row{grid-template-columns:1fr}.agency-story-grid,.agency-principles,.policy-page .wrap{grid-template-columns:1fr}.agency-principles article,.policy-page article{border-right:0;border-bottom:1px solid var(--ink)}.contact-page{width:100%;margin:0;border-inline:0}.contact-copy,.contact-card{padding:30px 20px}.contact-copy h1,.contact-card h2{font-size:48px}.contact-ledger>div{grid-template-columns:70px 1fr}.footer-grid{grid-template-columns:1fr;gap:28px;padding:45px 0}.footer-bottom{align-items:flex-start;flex-direction:column}
}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
/* Mobile interaction floor: preserve the composition while keeping controls usable. */
.menu-toggle,
.property-finder button,
.property-finder select,
.property-finder fieldset label span { touch-action: manipulation; }

@media (max-width: 820px) {
  .property-finder select,
  .property-finder button { min-height: 48px; }
  .property-finder fieldset label span {
    display: flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
  }
}
@media (max-width: 767px) {
  .menu-toggle { min-width: 44px; min-height: 44px; }
}

/* Listing cards: the viewing link is a full tap target on a phone. */
@media (max-width: 820px) {
  .property-facts a { display: inline-flex; align-items: center; min-height: 40px; }
}

/* >>> colours and phone 2026-09-26 */
/* Labels on the ink bands read light (they were the business's colour on
   near-black) (2026-09-26 phone check). */
.viewing-process .ledger-index, .path-rent .ledger-index { color: var(--accent-light, #cfd3cd); }
/* The phone hero: the words sit on the photograph, not on a white card
   (white words on white). */
@media (max-width: 980px) {
  :root body section[data-section="hero"] .hero-copy { background: none; }
}
/* The map in the contact strip: its own row under the words, the address
   beside the map (it was squeezed into a narrow strip beside the buttons). */
.contact-strip { flex-wrap: wrap; }
.contact-strip > .sb-location-map--embedded.sb-location-map__inner { flex: 1 1 100%; width: 100% !important; margin: 8px 0 0 !important; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr) !important; }
.contact-strip > .sb-location-map--embedded .sb-location-map__canvas iframe { min-height: 0 !important; }
@media (max-width: 760px) {
  .contact-strip > .sb-location-map--embedded.sb-location-map__inner { grid-template-columns: 1fr !important; }
}
/* No fixed English words drawn by the stylesheet over the towns' card. */
.route-map::before { content: none; display: none; }
/* The viewing request in the phone menu (the header's button is hidden there). */
.site-menu .menu-book { display: none; }
@media (max-width: 980px) {
}
@media (max-width: 767px) {
  .site-menu .menu-book { display: block; margin-top: 10px; padding: 14px 16px; border: 0; background: var(--ink); color: #fff; font-weight: 600; text-align: center; text-transform: uppercase; letter-spacing: .05em; }
}
/* The viewing request first in the open phone menu, in sight without
   scrolling past every page. */
@media (max-width: 980px) {
}
@media (max-width: 767px) {
  .site-menu .menu-book { order: -1; margin-top: 0; margin-bottom: 12px; }
}
/* Wide screens (2026-09-26: "most hero images are cropped"): the
   photograph's focus in its upper part, and the hero growing with the width,
   so a roof or a face is not cut away at the top. */
html:root body section[data-section="hero"] > .hero-photo,
html:root body section[data-section="hero"] :is(.hero-garden,.hero-visual,.exchange-hero__visual,.atlas-map-plane,.atlas-map-photo) img { object-position: center 30%; }
@media (min-width: 1440px) {
  html:root body section[data-section="hero"] { min-height: max(clamp(560px, 82vh, 800px), 40vw); }
}
/* <<< colours and phone 2026-09-26 */

/* >>> standard 2026-09-25 */
/* The finished sites' standard (goal 2026-09-25): sections at most 68px a
   side (40px on a phone), the engines' bands a little tighter, no panel held
   taller than its words, the engine pages opening like the About page. */
:root body .section,:root body .viewing-process{padding-top:clamp(40px,5vw,68px);padding-bottom:clamp(40px,5vw,68px)}
:root body .section.eng-sec{padding-top:clamp(36px,4vw,52px);padding-bottom:clamp(36px,4vw,52px)}
:root body .paths > div{min-height:0;padding-top:clamp(40px,5vw,68px);padding-bottom:clamp(40px,5vw,68px)}
:root body .closing{min-height:0}
:root body :is(.section,.viewing-process) > :first-child{margin-top:0}
:root body :is(.section,.viewing-process) > :last-child{margin-bottom:0}
:root body .eng-sec .eng-head{margin-top:0}
@media(max-width:760px){:root body :is(.section,.viewing-process){padding-top:40px;padding-bottom:40px}:root body .paths > div{padding-top:40px;padding-bottom:40px}}
:root body :is(.section h2,.section-head h2){max-width:none}
:root body .eng-page-intro{min-height:0;padding-top:clamp(40px,6vw,84px);padding-bottom:clamp(28px,4vw,48px)}
/* The editors: every photograph keeps its frame inside the editor's wrapper. */
:root body :is(figure,.eng-card__photo) > [data-paurtal-img-wrap]{display:block !important;width:100%;height:100%}

/* The hero: the photograph across the whole width, the words on it in white
   over a dark fade from their side (the bottom on a phone, the left on a
   computer); no split, no frame, no drawn panel beside it. The five hero
   layouts of the family: the ledger set (img.hero-photo + .hero-grid),
   Canopy (.hero-stone + figure.hero-garden), Exchange (.exchange-hero__copy
   + .exchange-hero__visual), Gallery (.hero-copy + figure.hero-visual) and
   Atlas (.atlas-hero-copy + .atlas-map-plane). */
:root body section[data-section="hero"]{position:relative;isolation:isolate;display:grid;grid-template-columns:1fr;grid-template-rows:none;align-items:end;align-content:end;width:100%;max-width:none;min-height:max(480px,calc(100svh - 250px));margin:0;padding:0;background:#141a19;border:0;border-radius:0;box-shadow:none;overflow:hidden;gap:0;color:#fff}
:root body section[data-section="hero"]::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;display:block;width:auto;height:auto;border:0;border-radius:0;transform:none;opacity:1;background:linear-gradient(0deg,rgba(12,16,15,.92) 0%,rgba(12,16,15,.78) 45%,rgba(12,16,15,.5) 80%,rgba(12,16,15,.4) 100%)}
:root body section[data-section="hero"]::after{display:none}
:root body section[data-section="hero"] > :is(.hero-photo,.hero-garden,.hero-visual,.exchange-hero__visual,.atlas-map-plane){position:absolute;inset:0;z-index:-2;display:block;width:100%;height:100%;min-height:0;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;clip-path:none;-webkit-mask:none;mask:none;transform:none;opacity:1;overflow:hidden;grid-area:auto;background:none}
:root body section[data-section="hero"] > .hero-photo{object-fit:cover;object-position:center 45%}
:root body section[data-section="hero"] :is(.hero-garden,.hero-visual,.exchange-hero__visual,.atlas-map-plane,.atlas-map-photo) img{position:absolute;inset:0;width:100%;height:100%;max-width:none;margin:0;object-fit:cover;object-position:center 45%;border:0;border-radius:0;clip-path:none;transform:none;filter:none;box-shadow:none}
:root body section[data-section="hero"] .atlas-map-photo{position:absolute;inset:0;margin:0;border:0;border-radius:0;box-shadow:none;transform:none}
:root body section[data-section="hero"] :is(.hero-filter,.hero-note,.visual-grid,.quote-panel,figcaption){display:none}
:root body section[data-section="hero"] > :is(.hero-grid,.hero-stone,.hero-copy,.exchange-hero__copy,.atlas-hero-copy){position:relative;z-index:1;width:100%;max-width:none;min-height:0;margin:0;padding:28px 20px 32px;background:none;border:0;border-radius:0;box-shadow:none;clip-path:none;transform:none;grid-area:auto;color:#fff;pointer-events:none}
:root body section[data-section="hero"] > :is(.hero-grid,.hero-stone,.hero-copy,.exchange-hero__copy,.atlas-hero-copy) > *{pointer-events:auto}
:root body section[data-section="hero"] :is(h1,p,dt,dd,li,.route-stamp,.garden-kicker,.market-eyebrow,.atlas-coordinate,.hero-intro,.exchange-hero__intro){color:#fff}
:root body section[data-section="hero"] :is(.hero-copy,.hero-stone,.exchange-hero__copy,.atlas-hero-copy) h1{max-width:14ch;text-wrap:balance}
:root body section[data-section="hero"] :is(.hero-copy,.hero-stone,.exchange-hero__copy,.atlas-hero-copy) > p{max-width:46ch;color:#e6ebe8}
:root body section[data-section="hero"] .text-link,:root body section[data-section="hero"] .atlas-hero-actions > a:not(.btn){color:#fff;border-color:#fff}
:root body section[data-section="hero"] :is(.market-rail,.atlas-city-index,.hero-quiet-facts){border-color:rgba(255,255,255,.35)}
@media(min-width:900px){
  :root body section[data-section="hero"]{align-items:center;align-content:center;min-height:clamp(560px,82vh,800px)}
  :root body section[data-section="hero"]::before{background:linear-gradient(90deg,rgba(12,16,15,.9) 0%,rgba(12,16,15,.72) 38%,rgba(12,16,15,.2) 70%,rgba(12,16,15,0) 86%)}
  :root body section[data-section="hero"] > :is(.hero-stone,.hero-copy,.exchange-hero__copy,.atlas-hero-copy){padding:clamp(48px,8vh,96px) max(24px,calc((100% - 1240px) / 2))}
  :root body section[data-section="hero"] > :is(.hero-stone,.hero-copy,.exchange-hero__copy,.atlas-hero-copy) > *{max-width:620px}
  :root body section[data-section="hero"] > .hero-grid{width:min(1240px,calc(100% - 48px));margin-inline:auto;padding:clamp(48px,8vh,96px) 0}
}

/* The menu on one row beside the header's button, however many pages. */
@media(min-width:1025px){
  :root body .site-menu{flex-wrap:nowrap;gap:clamp(8px,.9vw,14px)}
  :root body .site-menu > a{flex-shrink:0;white-space:nowrap}
  :root body .site-menu:has(> a:nth-child(8)) > a{font-size:12.5px;letter-spacing:.02em}
  :root body .site-header :is(.header-cta,.header-book,.nav-cta){white-space:nowrap;flex-shrink:0}
}

/* The map in the contact strip: its own row across the strip, the address
   beside a real map, in the strip's own colours. */
:root body .contact-strip > .sb-location-map--embedded{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(20px,3vw,40px);align-items:center;width:100%;max-width:none;margin:8px 0 0;padding:0;background:none;border:0;border-radius:0;box-shadow:none;color:inherit}
:root body .contact-strip > .sb-location-map--embedded .sb-location-map__canvas{width:100%;height:340px;min-height:0;margin:0;border-radius:0;overflow:hidden;background:rgba(255,255,255,.12)}
:root body .contact-strip > .sb-location-map--embedded .sb-location-map__canvas :is(iframe,img){display:block;width:100%;height:100%;border:0}
:root body .contact-strip > .sb-location-map--embedded :is(h2,p,a){color:inherit}
@media(max-width:760px){:root body .contact-strip > .sb-location-map--embedded{grid-template-columns:1fr}:root body .contact-strip > .sb-location-map--embedded .sb-location-map__canvas{height:260px}}

/* A footer page list of seven or more: two columns. */
:root body .site-footer .footer-links > div:first-child:has(> a:nth-of-type(7)){display:grid;grid-template-columns:repeat(2,minmax(0,max-content));column-gap:28px;align-content:start}
:root body .site-footer .footer-links > div:first-child:has(> a:nth-of-type(7)) > h2{grid-column:1/-1}

/* The hero's route card (Douala, Yaoundé, Buea) reads on the photograph: a
   dark see-through card with light words, whatever the design's own card. */
:root body section[data-section="hero"] .hero-ledger{background:rgba(12,16,15,.6);border:1px solid rgba(255,255,255,.22);box-shadow:none;color:#fff;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
:root body section[data-section="hero"] .hero-ledger :is(p,li,span,small,strong,b){color:#fff}
:root body section[data-section="hero"] .hero-ledger li{border-color:rgba(255,255,255,.2)}
:root body section[data-section="hero"] :is(.hero-garden,.hero-stone,.hero-visual,.exchange-hero__visual,.atlas-map-plane)::before,
:root body section[data-section="hero"] :is(.hero-garden,.hero-stone,.hero-visual,.exchange-hero__visual,.atlas-map-plane)::after{display:none}

/* No drawn lines: the route line joining the three towns goes, in every design. */
:root body .route-line{display:none}

/* A tap beside the hero's words reaches the photograph (the editors open its
   picker): the words' empty box lets the tap through, the words do not. */
:root body section[data-section="hero"] > .hero-grid > .hero-copy{pointer-events:none}
:root body section[data-section="hero"] > .hero-grid > .hero-copy > *{pointer-events:auto}
/* <<< standard 2026-09-25 */
/* >>> header 2026-11-03 */
/* Tumi 2026-11-03 ("the logos ... are too small", "hamburger ... only on mobile"): the business's logo is drawn
   72px high on a laptop (64 on a tablet, 56 on a phone), never stretched or cropped; the whole menu shows from
   768px (a little tighter on a small laptop and a tablet); the menu button only under 768px. */
header .brand img{width:auto;height:72px;max-width:220px;max-height:none;object-fit:contain;object-position:left center}
.header-inner{height:auto;min-height:80px;padding-block:10px}
.site-menu{font-size:12.5px}
@media(min-width:768px) and (max-width:1100px){
  .header-inner{grid-template-columns:auto minmax(0,1fr);gap:14px}
  .header-book{display:none}
  .site-menu{justify-content:flex-end;gap:clamp(7px,1.3vw,14px);font-size:12.5px}
  .site-menu a{font-size:1em;letter-spacing:.02em;min-width:0;padding-inline:5px;white-space:nowrap;flex-shrink:0}
}
@media(min-width:768px) and (max-width:1023px){header .brand img{height:64px}}
@media(max-width:767px){header .brand img{height:56px;max-width:170px}.header-inner{min-height:70px;padding-block:5px}}
/* a long menu (10 or more links: every engine on): no book button up to 1400px */
@media(min-width:1101px) and (max-width:1400px){
  .header-inner:has(.site-menu > a:nth-child(11)){grid-template-columns:auto minmax(0,1fr);gap:14px}
  .header-inner:has(.site-menu > a:nth-child(11)) .header-book{display:none}
  .header-inner:has(.site-menu > a:nth-child(11)) .site-menu{justify-content:flex-end;gap:clamp(7px,1.3vw,14px);font-size:12.5px}
  .header-inner:has(.site-menu > a:nth-child(11)) .site-menu a{font-size:1em;letter-spacing:.02em;min-width:0;padding-inline:5px;white-space:nowrap;flex-shrink:0}
}
/* and on a row of its own below the logo up to 1100px, where one row would run over the logo */
@media(min-width:768px) and (max-width:1100px){
  .header-inner:has(.site-menu > a:nth-child(11)) .site-menu{grid-column:1/-1;grid-row:2;justify-content:center}
  .header-inner:has(.site-menu > a:nth-child(11)) .site-menu a{padding-block:10px 8px}.header-inner:has(.site-menu > a:nth-child(11)) .site-menu a::after{bottom:0}
}
/* <<< header 2026-11-03 */
