/* JOHANNESBURGO · V93 · same premium editorial vocabulary as Ruta Jardín */
.pt-page{--pt-ink:#112d3a;--pt-ocean:#0c3949;--pt-moss:#1b715c;--pt-gold:#f0b66a;--pt-pale:#f6f4ef;--pt-border:#e3e7e7;color:var(--pt-ink);font-family:inherit;overflow:hidden;background:#fff}
.pt-page *{box-sizing:border-box}.pt-page img{display:block;width:100%;object-fit:cover}.pt-page a{text-decoration:none}.pt-page button,.pt-page select{font:inherit}.pt-page [hidden]{display:none!important}
.pt-shell{width:min(1200px,calc(100% - 42px));margin-inline:auto}
.pt-hero{height:min(770px,86vh);min-height:600px;position:relative;background:#123446 var(--pt-hero) center 42%/cover no-repeat;color:white;display:flex;align-items:center;isolation:isolate}
.pt-hero::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(2,16,26,.88),rgba(3,23,31,.62) 48%,rgba(5,23,34,.12)),linear-gradient(0deg,rgba(2,15,26,.86),transparent 45%);z-index:-1}
.pt-hero-fog{position:absolute;inset:0;background:radial-gradient(ellipse at 88% 3%,rgba(255,190,113,.19),transparent 44%);pointer-events:none}
.pt-hero-in{position:relative;padding-block:58px 65px}.pt-crumbs{display:flex;gap:11px;align-items:center;font-size:13px;color:#e9e3d9;margin-bottom:75px}.pt-crumbs a{color:inherit}.pt-crumbs a:hover{color:var(--pt-gold)}
.pt-overline,.pt-eyebrow{font-size:11px;font-weight:800;letter-spacing:2.3px;text-transform:uppercase}.pt-overline{color:var(--pt-gold)}
.pt-hero h1,.pt-section-head h2,.pt-intro h2,.pt-final h2{font-family:Georgia,"Times New Roman",serif;letter-spacing:-.04em}
.pt-hero h1{font-size:clamp(58px,9vw,126px);line-height:.96;margin:19px 0 25px;max-width:1050px;font-weight:500}
.pt-hero h1 span{display:block;max-width:850px;margin-top:20px;font-size:clamp(22px,3.3vw,43px);font-style:italic;letter-spacing:-.025em;line-height:1.13;color:#f8eee0}
.pt-hero-text{font-size:clamp(15px,1.7vw,20px);line-height:1.7;color:#e8e5dc;max-width:680px;margin-bottom:28px}
.pt-hero-actions,.pt-final-acts{display:flex;align-items:center;gap:13px;flex-wrap:wrap}
.pt-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:28px;border-radius:4px;padding:15px 22px;font-size:13px;font-weight:800;letter-spacing:.25px;cursor:pointer;border:1px solid transparent;transition:transform .2s,background .2s}
.pt-btn:hover{transform:translateY(-2px)}.pt-btn-gold{background:var(--pt-gold);color:#152f38!important}.pt-btn-outline{border-color:#b8c8cb;color:#fff!important;background:#ffffff0c}.pt-btn-dark{background:var(--pt-ocean);color:white;border:none}
.pt-facts{display:flex;flex-wrap:wrap;gap:0;margin-top:52px;padding-top:27px;border-top:1px solid #ffffff52}.pt-facts span{font-size:10px;letter-spacing:1.2px;color:#cddcdd;padding:0 24px;border-left:1px solid #ffffff57}.pt-facts span:first-child{padding-left:0;border-left:0}.pt-facts b{font-family:Georgia,serif;font-weight:400;font-size:27px;letter-spacing:-.7px;color:white;display:block;margin-bottom:5px}
.pt-sticky{position:sticky;top:0;z-index:90;background:#fffdfb;box-shadow:0 7px 22px #112d3a0e;border-bottom:1px solid #dfe4df}.pt-sticky .pt-shell{display:flex;justify-content:center;gap:clamp(17px,4.5vw,75px);overflow-x:auto}.pt-sticky a{white-space:nowrap;font-size:11px;color:var(--pt-ocean);font-weight:900;letter-spacing:1.1px;padding:18px 0}.pt-sticky a:hover{color:var(--pt-moss)}
.pt-intro{display:grid;grid-template-columns:1fr .82fr;gap:clamp(30px,7vw,95px);align-items:center;padding-block:102px}.pt-eyebrow{color:var(--pt-moss)}.pt-intro h2,.pt-section-head h2{font-size:clamp(33px,4.4vw,60px);font-weight:500;line-height:1.07;margin:21px 0}
.pt-intro p,.pt-section-head p{font-size:15px;line-height:1.9;color:#526572}.pt-intro figure{margin:0;position:relative}.pt-intro figure img{height:450px;border-radius:2px;box-shadow:21px 21px 0 #e5ece7}.pt-intro figcaption{font-size:10px;letter-spacing:1.6px;line-height:1.5;margin-top:31px;color:#7f8f90}
.pt-section{padding-block:100px}.pt-section-head{max-width:820px;margin-bottom:42px}.pt-section-head p{max-width:770px}.pt-planner-outer{background:#f2f6f3;background-image:radial-gradient(circle at 9% 15%,#dfecdf 0,transparent 30%)}
.pt-planner{display:grid;grid-template-columns:minmax(270px,.76fr) minmax(0,1.38fr);gap:25px;align-items:start}.pt-planner-controls,.pt-planner-results{background:#fff;padding:34px;border-radius:6px;border:1px solid #dce8e1;box-shadow:0 14px 37px #184d4111}
.pt-planner-controls{position:sticky;top:77px}.pt-control-label{display:block;font-weight:800;font-size:13px;margin:0 0 14px}.pt-control-label:not(:first-child){margin-top:31px}.pt-days{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.pt-days button{border:1px solid #d2dfd7;background:#f6faf7;color:#234133;padding:13px 2px;font-size:12px;font-weight:800;cursor:pointer;border-radius:5px}.pt-days button.is-selected{background:#1c705d;color:white;border-color:#1c705d}.pt-days button:focus-visible,.pt-filters button:focus-visible,.pt-map-category button:focus-visible{outline:3px solid #e5a54e;outline-offset:2px}
.pt-planner select{display:block;width:100%;padding:14px 12px;background:#fbfcfb;border:1px solid #c9d7d0;border-radius:4px;color:#183d3f}.pt-planner-note{margin-top:35px;background:#edf6f0;padding:17px 19px;border-left:3px solid #357d62;font-size:12px;line-height:1.7;color:#456c5d}
.pt-result-summary{border-bottom:1px solid #e2eae4;padding-bottom:18px}.pt-result-summary span{display:block;color:#69877b;font-size:10px;letter-spacing:1.7px;font-weight:900}.pt-result-summary strong{display:block;font-family:Georgia,serif;font-size:26px;margin-top:11px;font-weight:500}.pt-day-row{display:grid;grid-template-columns:49px 1fr;gap:17px;border-bottom:1px solid #e4ebe7;padding:23px 0}.pt-day-index{background:#0d4d4c;color:white;border-radius:50%;height:47px;width:47px;display:grid;place-items:center;font-family:Georgia,serif;font-size:23px}.pt-day-row strong{font-size:17px}.pt-day-row p{font-size:13px;line-height:1.7;color:#59706c;margin:7px 0 8px}.pt-day-row ol{margin:0;padding-left:17px;font-size:13px;line-height:1.9}.pt-day-row small{font-size:12px;color:#6c7f7e}
.pt-result-split{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding-top:18px}.pt-result-split>div{padding:15px 17px;background:#f3f8f5}.pt-result-split>div+div{background:#fcf6f1}.pt-result-split h3{font-size:14px;margin:0 0 15px}.pt-result-split ul{list-style:none;margin:0;padding:0}.pt-result-split li{padding:8px 0;border-top:1px solid #dde8df;font-size:12px}.pt-result-split li strong{display:block;font-weight:750}.pt-result-split li small{display:block;color:#75857b;margin-top:3px}.pt-small{font-size:12px;line-height:1.6;color:#657879;margin:18px 0}
.pt-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:25px}.pt-filters button,.pt-map-category button{padding:10px 18px;border:1px solid #cfdad8;background:#fff;border-radius:30px;color:#365860;font-size:12px;cursor:pointer;font-weight:800}.pt-filters button.is-active,.pt-map-category button.is-active{color:#fff;background:#124f51;border-color:#124f51}
.pt-places{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}.pt-place{border:1px solid #e6e8e4;border-radius:5px;overflow:hidden;box-shadow:0 10px 27px #132d3a0b;display:flex;flex-direction:column;background:#fff}.pt-place-media{height:224px;position:relative;overflow:hidden}.pt-place-media img{height:100%;transition:transform .55s}.pt-place:hover .pt-place-media img{transform:scale(1.05)}.pt-place-media span{position:absolute;top:16px;left:16px;background:#103a47e8;color:#fff;padding:7px 12px;letter-spacing:1px;font-size:11px;font-weight:800}.pt-place-body{padding:25px;display:flex;flex-direction:column;flex:1}.pt-zone{font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#448073;font-size:10px}.pt-place h3{font-family:Georgia,serif;font-weight:500;font-size:28px;line-height:1.13;margin:13px 0}.pt-place-body>strong{font-size:13px;line-height:1.5}.pt-place-body>p{font-size:13px;line-height:1.78;color:#60727b;margin:12px 0 18px}.pt-tip{padding:15px;background:#f3f6f3;border-left:3px solid #7cae9a;color:#4d6265;font-size:12px;line-height:1.7;margin-top:auto}.pt-tip span{display:block;color:#1a6759;font-size:10px;letter-spacing:1.3px;font-weight:900;margin-bottom:4px}.pt-place-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.pt-place-links a{font-size:11px;letter-spacing:.3px;color:#12535b;font-weight:800;border-bottom:1px solid #abc6b9;padding-bottom:3px}.pt-place-links a:hover{color:#af6528}.pt-photos-note{font-size:11px;line-height:1.7;color:#7b8485;margin-top:26px}
.pt-days-section{background:#0d2f3b;color:white}.pt-days-section .pt-eyebrow{color:#f0bf81}.pt-days-section .pt-section-head h2{color:white}.pt-route-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.pt-route-card{background:#163e4a;color:#fff!important;display:block;transition:transform .2s}.pt-route-card:hover{transform:translateY(-5px)}.pt-route-photo{height:153px;position:relative}.pt-route-photo img{height:100%}.pt-route-photo b{position:absolute;left:14px;top:13px;font-family:Georgia,serif;font-size:30px;color:#fff;text-shadow:0 2px 6px #000}.pt-route-body{padding:20px 17px}.pt-route-body span{letter-spacing:1.8px;color:#f8bb78;font-size:10px;font-weight:900}.pt-route-body h3{font-family:Georgia,serif;font-size:20px;font-weight:500;line-height:1.17;min-height:70px;margin:11px 0}.pt-route-body p{font-size:11px;line-height:1.55;color:#cfdbda;min-height:55px}.pt-route-body strong{display:block;color:#f3c690;font-size:11px;border-top:1px solid #ffffff26;padding-top:13px;margin-top:17px}
.pt-map-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(270px,.65fr);background:#f4f7f4;border:1px solid #dfe8e1;min-height:510px}.pt-map{height:510px;z-index:1;background:#e0ebe7}.pt-map-sidebar{padding:32px}.pt-map-sidebar h3{font-family:Georgia,serif;font-size:27px;font-weight:400;margin:0 0 20px}.pt-map-category{display:flex;flex-direction:column;gap:9px}.pt-map-category button{text-align:left;background:#fff;border-radius:4px}.pt-map-category button.is-active{background:#145459}.pt-map-links{display:grid;gap:12px;margin-top:26px;border-top:1px solid #d7dfd7;padding-top:21px}.pt-map-links a{font-size:12px;font-weight:800;color:#1b6063}.pt-map-popup{min-width:155px;font-family:system-ui,sans-serif}.pt-map-popup strong,.pt-map-popup small,.pt-map-popup a{display:block}.pt-map-popup strong{font-size:14px}.pt-map-popup small{font-size:12px;color:#738284;margin:7px 0}.pt-map-popup a{font-size:12px;color:#07675b;font-weight:800}.pt-map-fallback{padding:30px}
.pt-advice{background:#f7f5ef}.pt-advice-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.pt-advice-grid article{background:#fff;padding:28px 23px;border-top:3px solid #2b755d;box-shadow:0 8px 22px #1a3c3709}.pt-advice-grid article>span{font-size:28px}.pt-advice-grid h3{font-family:Georgia,serif;font-size:21px;font-weight:500;margin:13px 0}.pt-advice-grid p{font-size:12px;line-height:1.8;color:#5b706e;margin:0}.pt-official{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:28px;padding:23px;border:1px solid #dde7da}.pt-official span{font-size:10px;letter-spacing:1px;font-weight:800}.pt-official a{font-size:11px;color:#0e615c;font-weight:800}
.pt-final{min-height:410px;padding:94px 0;position:relative;background:linear-gradient(90deg,#092530ed,#09313aba),var(--pt-final) center 54%/cover;color:white}.pt-final span{font-size:11px;letter-spacing:2px;color:#f7c18d}.pt-final h2{font-size:clamp(36px,5.5vw,71px);font-weight:400;max-width:800px;margin:18px 0}.pt-final p{max-width:630px;line-height:1.7}.pt-final-acts{margin-top:27px}.pt-final-acts a{border:1px solid #e1c9a8;padding:14px 19px;font-size:12px;color:white;font-weight:800}
@media(max-width:990px){.pt-route-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.pt-places{grid-template-columns:repeat(2,minmax(0,1fr))}.pt-advice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pt-intro{gap:42px}}
@media(max-width:720px){.pt-shell{width:min(100% - 28px,560px)}.pt-hero{min-height:665px;height:auto}.pt-hero-in{padding-block:24px 35px}.pt-crumbs{margin-bottom:85px;font-size:11px}.pt-hero h1{font-size:clamp(52px,13.5vw,92px)}.pt-hero h1 span{font-size:28px}.pt-facts{margin-top:37px}.pt-facts span{padding:8px 12px 8px 0;border:0;min-width:45%}.pt-sticky .pt-shell{justify-content:flex-start;gap:24px;width:calc(100% - 26px)}.pt-sticky a{font-size:10px}.pt-section{padding-block:65px}.pt-intro{grid-template-columns:1fr;padding-block:65px;gap:25px}.pt-intro figure img{height:320px;box-shadow:10px 10px 0 #e5ece7}.pt-intro figcaption{margin-top:21px}.pt-planner{grid-template-columns:1fr}.pt-planner-controls{position:static}.pt-planner-controls,.pt-planner-results{padding:22px}.pt-places{grid-template-columns:1fr}.pt-place-media{height:240px}.pt-result-split{grid-template-columns:1fr;gap:12px}.pt-route-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pt-map-layout{grid-template-columns:1fr}.pt-map{height:385px}.pt-map-sidebar{padding:22px}.pt-map-category{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.pt-advice-grid{grid-template-columns:1fr}.pt-final{min-height:380px}.pt-hero-actions{gap:8px}.pt-btn{padding:13px 15px;font-size:11px}}
@media(max-width:430px){.pt-days button{font-size:10px;padding:12px 0}.pt-route-grid{gap:9px}.pt-route-photo{height:130px}.pt-route-body{padding:13px}.pt-route-body h3{font-size:18px;min-height:78px}.pt-route-body p{font-size:10px;min-height:84px}}
@media(prefers-reduced-motion:reduce){.pt-page *{scroll-behavior:auto!important;transition:none!important}}
@media print{header,footer,.pt-sticky,.pt-hero,.pt-intro,.pt-planner-controls,.pt-btn,.pt-places,.pt-days-section,.pt-map-layout,.pt-advice,.pt-final{display:none!important}.pt-section{padding:0!important}.pt-planner{display:block}.pt-planner-outer{background:white}.pt-planner-results{box-shadow:none;border:0}.pt-day-row{break-inside:avoid}.pt-shell{width:100%}}

/* Pretoria V101: botanical green / jacaranda premium accents */
.pt-page{--jh-gold:#dbb888;--pt-gold:#deb98a}
.pt-hero{background-position:center 45%}
.pt-hero::after{content:"";position:absolute;inset:auto 0 0;height:22%;background:linear-gradient(0deg,rgba(7,31,31,.22),transparent);pointer-events:none}
.pt-facts b{color:#efc28d}
.pt-place-media img,.pt-route-photo img{transition:transform .55s cubic-bezier(.2,.8,.2,1)}
.pt-place-card:hover .pt-place-media img,.pt-route-card:hover .pt-route-photo img{transform:scale(1.055)}
.pt-when-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:24px;margin-top:20px}
.pt-when-grid>figure{margin:0;overflow:hidden;border-radius:16px;min-height:310px;position:relative}
.pt-when-grid>figure img{height:100%;width:100%;object-fit:cover;position:absolute;inset:0}
.pt-when-content{display:grid;gap:12px}
.pt-when-content article{padding:19px 22px;border:1px solid #dce7e4;border-radius:15px;background:#f5faf8}
.pt-when-content article b{display:block;color:#184b4d;font-weight:850;font-size:15px;margin-bottom:6px}
.pt-when-content article p{margin:0;color:#385457;line-height:1.65}
.pt-availability-note{margin:17px 0 0;padding:13px 17px;border-left:3px solid #bf9b69;background:#f6f3ec;border-radius:0 8px 8px 0;font-size:13px;color:#294749;line-height:1.65}
.pt-map .leaflet-container{font-family:inherit}
.pt-card-skipped{opacity:.66}
@media(max-width:780px){.pt-when-grid{grid-template-columns:1fr}.pt-when-grid>figure{min-height:240px}}
@media(prefers-reduced-motion:reduce){.pt-place-media img,.pt-route-photo img{transition:none}}
