
:root{--cream:#f2eee6;--paper:#fffdf8;--ink:#171714;--muted:#726c62;--line:#d9d1c5;--gold:#a98445;--dark:#11110f;--journal:#e6dccb}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.shell{max-width:1180px;margin:auto;padding-left:24px;padding-right:24px}
.nav{height:72px;max-width:1240px;margin:auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between}.nav nav{display:flex;align-items:center;gap:25px;font-size:14px}.brand{font-size:23px;font-weight:900;letter-spacing:-.05em}.brand span,.eyebrow{color:var(--gold)}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:14px 22px;font-weight:800;border:1px solid transparent;cursor:pointer}.btn.small{padding:10px 15px}.dark{background:var(--dark);color:white}.light{background:white;color:var(--dark)}.ghost{border-color:#a79e91;background:transparent}.wide{width:100%}.eyebrow{font-size:12px;font-weight:900;letter-spacing:.16em;margin:0 0 12px}.hero{display:grid;grid-template-columns:1.03fr .97fr;gap:50px;min-height:650px;align-items:center;padding-top:55px;padding-bottom:70px}.hero h1,.section-head h2,.cta h2,.message-page h1,.legal h1{font-family:Georgia,serif;font-weight:500;letter-spacing:-.055em;line-height:.98}.hero h1{font-size:clamp(55px,7vw,88px);margin:0 0 24px}.lead{font-size:20px;color:#5c574e;max-width:640px;line-height:1.55}.hero-actions{display:flex;gap:10px;margin-top:28px}.micro{font-size:12px;color:var(--muted);margin-top:19px}.hero-art{height:540px;border-radius:32px;background:#cbc1b2;display:grid;place-items:center}.mock{width:56%;aspect-ratio:5/7;padding:7%;box-shadow:0 26px 50px rgba(0,0,0,.25)}.poster.midnight,.mini-poster.midnight{background:#11110f;color:#f0eadf}.poster.editorial,.mini-poster.editorial{background:#f9f4ea;color:#171714}.poster.journal,.mini-poster.journal{background:var(--journal);color:#272219}.mock h2{font:500 34px Georgia;margin:7px 0 3px}.mock p{font-size:10px}.mock .kicker{color:var(--gold);letter-spacing:.15em}.mock-map{height:36%;margin:20px 0;border-top:1px solid #574b39;border-bottom:1px solid #574b39;color:var(--gold);display:grid;place-items:center}.mock-map svg{width:100%}.mock-stats{display:flex;justify-content:space-between;color:var(--gold);font-size:8px}.mock-photos{height:18%;display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:14px 0}.mock-photos i{background:#8a8172}.trustbar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:center;gap:58px;padding:17px 20px;font-size:12px;font-weight:800}.section{padding-top:95px;padding-bottom:95px}.section-head{max-width:780px;margin-bottom:40px}.section-head.centered{text-align:center;margin-left:auto;margin-right:auto}.section-head h2{font-size:48px;margin:0}.section-head>p:not(.eyebrow){color:var(--muted)}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.steps article{border-top:1px solid var(--ink);padding-top:20px}.steps span{color:var(--gold);font-size:12px;font-weight:900}.steps h3{font-size:21px}.steps p,.style-card p{color:var(--muted);line-height:1.6}.showcase{background:#e7e0d5}.style-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.style-card{text-align:center}.mini-poster{aspect-ratio:5/7;padding:10%;text-align:left;margin-bottom:18px;border:1px solid rgba(0,0,0,.08)}.mini-poster b{font-size:9px;letter-spacing:.14em;color:var(--gold)}.mini-poster h3{font:500 30px Georgia;margin:12px 0 3px}.mini-poster span{font-size:9px}.line-art{height:42%;margin-top:25px;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold);background:linear-gradient(30deg,transparent 48%,var(--gold) 49%,transparent 51%),linear-gradient(120deg,transparent 58%,rgba(100,90,70,.4) 59%,transparent 61%)}.featured{transform:translateY(-18px)}.pricing{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.pricing article{background:var(--paper);padding:28px;border:1px solid var(--line);border-radius:20px;text-align:center;position:relative}.pricing h3{font:500 44px Georgia;margin:5px}.pricing span{display:block;color:var(--muted);margin-bottom:25px}.pricing em{font-style:normal;font-size:9px;letter-spacing:.1em;color:var(--gold);font-weight:900}.popular{outline:2px solid var(--dark)}.cta{margin-top:35px;margin-bottom:80px;background:var(--gold);border-radius:28px;padding:45px 50px;display:flex;justify-content:space-between;align-items:center;gap:30px}.cta h2{font-size:42px;max-width:700px;margin:0}.footer{border-top:1px solid var(--line);padding-top:25px;padding-bottom:50px;display:flex;justify-content:space-between;gap:25px;align-items:center;color:var(--muted)}.footer div{display:flex;gap:18px;font-size:12px}.footer small{font-size:10px}

/* Creator */
.creator-body{background:#e9e3d9}.creator-nav{max-width:none;background:var(--paper);border-bottom:1px solid var(--line);padding-left:26px;padding-right:26px}.creator-nav>span{font-size:11px;color:var(--muted)}.creator{display:grid;grid-template-columns:430px minmax(0,1fr);min-height:calc(100vh - 72px)}.builder{background:var(--paper);border-right:1px solid var(--line);padding:25px;overflow:auto}.builder h1{font:500 38px Georgia;margin:0 0 20px}.progress{display:flex;gap:4px;margin-bottom:24px}.progress i{height:3px;background:#ddd5c9;flex:1}.progress .active{background:var(--gold)}.build-card{border-top:1px solid var(--line);padding:18px 0}.build-card h3{font-size:14px;margin:0 0 12px}.build-card label{display:block;font-size:11px;font-weight:800;margin:9px 0}.build-card input,.build-card select,.order-panel select{display:block;width:100%;margin-top:5px;border:1px solid var(--line);background:white;border-radius:10px;padding:10px}.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.helper{font-size:10px;color:var(--muted);line-height:1.5}.real-map{height:285px;border-radius:14px;overflow:hidden;border:1px solid var(--line)}.map-search{display:flex;gap:5px;margin-top:8px}.map-search input{margin:0}.map-search button{border:0;border-radius:9px;background:var(--dark);color:white;padding:0 12px}.stop-list{margin-top:10px;display:flex;flex-direction:column;gap:6px}.stop{display:grid;grid-template-columns:25px 1fr auto;gap:6px;align-items:center;background:#f5f1e9;padding:7px;border-radius:9px}.stop .num{width:22px;height:22px;border-radius:50%;background:var(--gold);color:white;display:grid;place-items:center;font-size:9px;font-weight:900}.stop input{margin:0;padding:6px 7px;font-size:11px;background:transparent}.stop-actions{display:flex;gap:2px}.stop-actions button{border:0;background:transparent;padding:4px;font-size:11px}.route-summary{font-size:11px;color:var(--muted)}.upload{border:1px dashed #aaa094!important;border-radius:12px;padding:15px;text-align:center;cursor:pointer}.upload input{display:none!important}.upload b,.upload span{display:block}.upload span{font-weight:400;color:var(--muted);margin-top:3px}.thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:8px}.thumbs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:7px}.style-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.style-buttons button{border:1px solid var(--line);background:white;border-radius:9px;padding:9px;font-size:10px}.style-buttons .selected{background:var(--dark);color:white}.preview-side{padding:22px 28px 45px}.preview-toolbar{display:flex;justify-content:space-between;align-items:center;max-width:700px;margin:0 auto 12px}.preview-toolbar div{display:flex;gap:10px;align-items:center}.preview-toolbar small{color:var(--muted)}.text-btn{background:none;border:0;text-decoration:underline;font-size:11px}.poster-wrap{background:#cfc5b6;border-radius:25px;padding:28px;max-width:760px;margin:auto}.final-poster{aspect-ratio:5/7;padding:7%;position:relative;box-shadow:0 20px 45px rgba(0,0,0,.24);overflow:hidden}.final-poster.editorial{background:#f9f4ea;color:#171714}.final-poster.midnight{background:#11110f;color:#f0eadf}.final-poster.journal{background:var(--journal);color:#272219}.final-poster>p:first-child{font-size:9px;font-weight:900;letter-spacing:.15em;color:var(--gold)}.final-poster h2{font:500 48px Georgia;letter-spacing:-.045em;margin:8px 0 4px}.final-poster h2+p{font-size:10px;color:#837b70}.final-poster #pmeta{font-size:9px;color:var(--gold);font-weight:800}.poster-map{height:32%;margin:18px 0 12px;border-top:1px solid rgba(169,132,69,.5);border-bottom:1px solid rgba(169,132,69,.5);position:relative;overflow:hidden;background:#e9e4da}.poster-map-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:none}.poster-map svg{position:absolute;inset:0;width:100%;height:100%;z-index:2}.map-loading{position:absolute;inset:0;display:grid;place-items:center;font-size:9px;color:#7e776d;z-index:3;background:rgba(249,244,234,.74)}.poster-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.poster-stats span{font-size:7px;color:#827a6e;border-top:1px solid rgba(169,132,69,.4);padding-top:5px}.poster-stats b{display:block;font-size:18px;color:inherit}.poster-photos{height:15%;display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:12px 0}.poster-photos i{background:#bdb3a5 center/cover no-repeat}.poster-stops{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.poster-stops span{font-size:7px;line-height:1.35;color:#7e776d}.poster-stops b{display:block;color:var(--gold)}.final-poster blockquote{position:absolute;left:7%;right:7%;bottom:4%;margin:0;text-align:center;font:italic 10px Georgia;color:var(--gold);border-top:1px solid rgba(169,132,69,.4);padding-top:7px}.order-panel{max-width:760px;margin:15px auto 0;background:var(--paper);border-radius:18px;padding:17px;display:grid;grid-template-columns:1fr 150px 210px;gap:14px;align-items:end}.order-panel label{font-size:11px;font-weight:800}.order-panel select{margin-top:6px}.order-total small,.order-total span{display:block;font-size:9px;color:var(--muted)}.order-total b{font-size:26px}.checkout-status{grid-column:1/-1;margin:0;font-size:10px;color:var(--muted)}.message-page{min-height:100vh;display:grid;place-items:center;padding:25px}.message-page>div{max-width:650px}.message-page h1{font-size:54px}.message-page p{color:var(--muted);line-height:1.7}.legal{max-width:800px;padding-top:70px;padding-bottom:100px}.legal h1{font-size:55px}.legal h2{margin-top:35px}.legal p{color:var(--muted);line-height:1.7}.legal-note{border:1px solid var(--gold);padding:16px;border-radius:12px;color:var(--ink)!important}
@media(max-width:900px){.nav nav>a:not(.btn){display:none}.hero,.creator{grid-template-columns:1fr}.hero-art{height:500px}.steps,.style-grid,.pricing{grid-template-columns:1fr}.featured{transform:none}.trustbar{gap:15px;flex-wrap:wrap}.cta,.footer{flex-direction:column;align-items:flex-start}.builder{border-right:0}.preview-side{padding:20px 12px}.order-panel{grid-template-columns:1fr}.checkout-status{grid-column:auto}}


/* === Editorial Premium poster v2 === */
.editorial-lock{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#f7f2e9;display:flex;align-items:center;justify-content:space-between}.editorial-lock b{font:500 17px Georgia}.editorial-lock span{font-size:9px;text-transform:uppercase;letter-spacing:.11em;color:var(--gold)}
.final-poster.editorial{background:#f4efe5;color:#191915;padding:5.5% 6.4%;display:flex;flex-direction:column;box-shadow:0 20px 45px rgba(41,34,22,.2)}
.poster-head{text-align:center;flex:0 0 auto}.final-poster .poster-head h2{font:500 54px Georgia;letter-spacing:.09em;text-transform:uppercase;margin:0;color:#1c1b18;line-height:1}.poster-rule{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:9px 0 13px}.poster-rule span{height:1px;background:#b48d4b}.poster-rule #pmeta{margin:0!important;font:700 7px/1.1 Arial!important;letter-spacing:.12em;color:#a98445!important;white-space:nowrap}
.poster-map.premium-map{height:42%;min-height:0;margin:0 0 12px;border:0;position:relative;overflow:hidden;background:#e8e3d9}.poster-map.premium-map:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(180deg,rgba(244,239,229,.08),rgba(244,239,229,.18));mix-blend-mode:multiply}.poster-map-image{filter:sepia(.18) saturate(.72) contrast(.88) brightness(1.05);opacity:.88}.poster-map.premium-map svg{z-index:3}.map-loading{z-index:5;background:rgba(244,239,229,.88)}
.compass{position:absolute;left:2.5%;bottom:20%;z-index:4;color:#6f6a61;font:600 7px Georgia;text-align:center;line-height:1.1}.compass b{display:block;font-size:20px;font-weight:400;color:#716b61;margin-top:1px}.map-metrics{position:absolute;left:2.8%;bottom:3%;z-index:4;display:flex;flex-direction:column;gap:4px;color:#a98445;font:700 6.5px Arial;letter-spacing:.055em}.map-metrics span{display:block}.map-metrics b{font-weight:800}
.poster-photos.premium-photos{height:18%;margin:0 0 12px;gap:3px;flex:0 0 auto}.poster-photos.premium-photos i{background-color:#c7bbaa;background-position:center;background-size:cover;box-shadow:inset 0 0 0 1px rgba(35,32,25,.08)}
.poster-stops.premium-stops{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;position:relative;padding-top:13px;flex:0 0 auto}.poster-stops.premium-stops:before{content:"";position:absolute;left:1%;right:1%;top:5px;height:1px;background:#b48d4b}.poster-stops.premium-stops .journey-stop{font-size:6.3px;line-height:1.35;color:#5f5a52;text-align:center;position:relative}.poster-stops.premium-stops .journey-stop:before{content:attr(data-num);position:absolute;top:-15px;left:50%;transform:translateX(-50%);width:14px;height:14px;border-radius:50%;display:grid;place-items:center;background:#22211d;color:#f3eee4;font:bold 6px Arial;box-shadow:0 0 0 1px #b48d4b}.poster-stops.premium-stops b{display:block;color:#22211d;font:700 6.5px Arial;text-transform:uppercase;margin-bottom:2px}.poster-stops.premium-stops em{font-style:normal;color:#8c6e3b;font-size:5.8px;display:block;margin-bottom:3px}.poster-stops.premium-stops span{display:block}
.poster-footer{margin-top:auto;text-align:center;border-top:1px solid #b48d4b;padding-top:8px;color:#a98445}.final-poster .poster-footer blockquote{position:static;border:0;padding:0;margin:0;font:italic 11px Georgia;color:#a98445}.poster-footer>span{display:block;margin-top:4px;color:#4f4a43;font:6px Arial;letter-spacing:.13em}.final-poster #psubtitle,.final-poster #pkicker,.final-poster .poster-stats{display:none!important}

/* Map overlay labels */
.route-label-bg{fill:#f4efe5;fill-opacity:.92;stroke:#a98445;stroke-width:.65}.route-label-title{font-family:Arial,sans-serif;font-weight:800;font-size:14px;letter-spacing:.02em;fill:#24231f}.route-label-date{font-family:Arial,sans-serif;font-size:11px;fill:#665f56}.route-marker{fill:#24231f;stroke:#a98445;stroke-width:3}.route-marker-text{font-family:Arial,sans-serif;font-weight:800;font-size:12px;fill:#f5f0e6;text-anchor:middle;dominant-baseline:central}.route-line-halo{fill:none;stroke:#f4efe5;stroke-opacity:.78;stroke-width:8;stroke-linecap:round;stroke-linejoin:round}.route-line{fill:none;stroke:#b08642;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}

@media(max-width:620px){.poster-stops.premium-stops{gap:3px}.final-poster .poster-head h2{font-size:8vw}.poster-rule #pmeta{font-size:1.1vw}.route-label-title{font-size:12px}.route-label-date{font-size:9px}}

/* Editorial clean build v3 */
.map-loading{
  padding:18px;
  text-align:center;
  line-height:1.45;
}
.map-loading.error{
  color:#7a342c;
  background:rgba(249,244,234,.94);
}
.premium-map.has-map{
  background:#e9e3d8;
}
.map-metrics{
  background:linear-gradient(90deg,rgba(244,239,229,.94),rgba(244,239,229,.74),transparent);
  width:max-content;
  max-width:76%;
  padding:7px 10px 7px 8px;
  border-radius:3px;
}
@media(max-width:900px){
  .map-metrics{max-width:90%}
}


/* === Editorial v4 art direction === */
.final-poster.editorial{
  padding:4.6% 6.2% 4.2%;
}
.final-poster .poster-head h2{
  font-size:58px;
  letter-spacing:.075em;
}
.poster-rule{
  margin:8px 0 11px;
}
.poster-rule #pmeta{
  font-size:6.7px!important;
  letter-spacing:.11em;
}

/* Make the map the hero, but remove the navigation-map harshness. */
.poster-map.premium-map{
  height:43.5%;
  margin:0;
  background:#e9e4da;
  border-top:1px solid rgba(180,141,75,.28);
  border-bottom:1px solid rgba(180,141,75,.28);
}
.poster-map.premium-map:after{
  background:
    linear-gradient(180deg,rgba(244,239,229,.16),rgba(244,239,229,.24)),
    radial-gradient(circle at 50% 45%,transparent 45%,rgba(244,239,229,.11) 100%);
  mix-blend-mode:normal;
  z-index:1;
}
.poster-map-image{
  filter:sepia(.30) saturate(.55) contrast(.78) brightness(1.09);
  opacity:.86;
}
.compass{
  left:2.2%;
  bottom:4%;
  opacity:.72;
  font-size:6px;
}
.compass b{font-size:16px}

/* Metrics are no longer drawn over the map. */
.map-metrics{display:none!important}
.poster-metrics-band{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:0;
  flex:0 0 auto;
  border-bottom:1px solid rgba(180,141,75,.45);
  padding:8px 0 9px;
  margin-bottom:10px;
}
.poster-metrics-band>span{
  padding:0 13px;
  text-align:center;
  border-right:1px solid rgba(180,141,75,.28);
}
.poster-metrics-band>span:first-child{padding-left:0}
.poster-metrics-band>span:last-child{border-right:0;padding-right:0}
.poster-metrics-band small{
  display:block;
  color:#8e8271;
  font:600 5.6px Arial;
  letter-spacing:.17em;
  margin-bottom:3px;
}
.poster-metrics-band b{
  display:block;
  color:#9c763a;
  font:700 8px Arial;
  letter-spacing:.055em;
}
.poster-metrics-band i{font-style:normal}

/* Larger images with a unified editorial print grade. */
.poster-photos.premium-photos{
  height:20.2%;
  margin:0 0 11px;
  gap:3px;
}
.poster-photos.premium-photos i{
  filter:saturate(.82) contrast(.94) brightness(.98) sepia(.08);
  background-color:#c4b8a8;
}

/* Tighter, more legible timeline. */
.poster-stops.premium-stops{
  gap:8px;
  padding-top:13px;
}
.poster-stops.premium-stops .journey-stop{
  font-size:6.15px;
  line-height:1.32;
  color:#625c53;
}
.poster-stops.premium-stops b{
  font-size:6.2px;
  letter-spacing:.015em;
}
.poster-stops.premium-stops em{
  font-size:5.65px;
  margin-bottom:2px;
}
.poster-stops.premium-stops .journey-stop:before{
  width:13px;height:13px;top:-14px;
}

/* Footer is pulled up instead of leaving a large empty field. */
.poster-footer{
  margin-top:14px;
  padding-top:7px;
}
.final-poster .poster-footer blockquote{
  font-size:10.4px;
}
.poster-footer>span{
  margin-top:3px;
  font-size:5.6px;
}

/* Map route: elegant line, no white label cards. */
.route-line-halo{
  stroke:#f4efe5;
  stroke-opacity:.72;
  stroke-width:5.5;
}
.route-line{
  stroke:#a67d3c;
  stroke-width:2.8;
}
.route-marker{
  fill:#24231f;
  stroke:#b48d4b;
  stroke-width:2.4;
}
.route-marker-text{
  font-size:11px;
}
.route-label-bg{display:none}
.route-label-title,
.route-label-date{
  paint-order:stroke;
  stroke:#f4efe5;
  stroke-width:4px;
  stroke-linejoin:round;
}
.route-label-title{
  font-family:Arial,sans-serif;
  font-size:11.3px;
  font-weight:800;
  letter-spacing:.02em;
  fill:#25231f;
}
.route-label-date{
  font-family:Arial,sans-serif;
  font-size:8.8px;
  fill:#7a6a52;
  stroke-width:3.5px;
}

/* Mobile preview */
@media(max-width:620px){
  .poster-metrics-band{padding:6px 0 7px}
  .poster-metrics-band b{font-size:1.2vw}
  .poster-metrics-band small{font-size:.8vw}
}


/* === Editorial v4.1 polish ===
   Goal: halfway between v3's detailed Outdoors map and v4's very pale Light map.
*/
.final-poster.editorial{
  padding:4.15% 5.8% 3.5%;
}
.final-poster .poster-head{
  flex:0 0 auto;
}
.final-poster .poster-head h2{
  font-size:60px;
  letter-spacing:.07em;
  margin-bottom:4px;
}
.poster-rule{
  margin:6px 0 9px;
}

/* More visible cartographic detail without returning to "navigation map". */
.poster-map.premium-map{
  height:45%;
  background:#e4ded2;
}
.poster-map-image{
  filter:sepia(.22) saturate(.72) contrast(.88) brightness(1.01);
  opacity:.92;
}
.poster-map.premium-map:after{
  background:
    linear-gradient(180deg,rgba(244,239,229,.08),rgba(244,239,229,.14)),
    radial-gradient(circle at 50% 45%,transparent 52%,rgba(244,239,229,.08) 100%);
}
.compass{
  opacity:.82;
  font-size:6.6px;
}
.compass b{font-size:17px}

/* Stronger route + larger map labels for real-world print readability. */
.route-line-halo{
  stroke:#f4efe5;
  stroke-opacity:.78;
  stroke-width:6.2;
}
.route-line{
  stroke:#9f7331;
  stroke-width:3.4;
}
.route-marker{
  fill:#22211e;
  stroke:#b48a43;
  stroke-width:2.7;
}
.route-marker-text{
  font-size:12px;
}
.route-label-title{
  font-size:13.2px;
  stroke-width:4.7px;
}
.route-label-date{
  font-size:10.2px;
  stroke-width:4px;
}

/* Slightly more compact metrics, freeing space for photography. */
.poster-metrics-band{
  padding:7px 0 8px;
  margin-bottom:8px;
}
.poster-metrics-band small{font-size:5.5px}
.poster-metrics-band b{font-size:8.4px}

/* Photography becomes a stronger part of the product. */
.poster-photos.premium-photos{
  height:22%;
  margin-bottom:9px;
}
.poster-photos.premium-photos i{
  filter:saturate(.86) contrast(.96) brightness(.99) sepia(.06);
}

/* Timeline enlarged a little and moved closer to photos. */
.poster-stops.premium-stops{
  padding-top:12px;
  gap:7px;
}
.poster-stops.premium-stops .journey-stop{
  font-size:6.45px;
  line-height:1.28;
}
.poster-stops.premium-stops b{font-size:6.7px}
.poster-stops.premium-stops em{font-size:5.9px}
.poster-stops.premium-stops .journey-stop:before{
  width:14px;height:14px;top:-14px;
}

/* Reduce dead space at the bottom. */
.poster-footer{
  margin-top:9px;
  padding-top:6px;
}
.final-poster .poster-footer blockquote{
  font-size:10.8px;
}
.poster-footer>span{
  font-size:5.8px;
}

/* Slightly warmer paper without becoming yellow. */
.final-poster.editorial{
  background:#f3eee3;
}

/* Editorial v4.2 — Storyprint Map */
.final-poster.editorial{padding:3.8% 5.8% 3%;background:#f3eee3}
.final-poster .poster-head h2{font-size:61px;letter-spacing:.075em}.poster-rule{margin:5px 0 8px}
.poster-map.premium-map{height:45.8%;background:#dfd9cc}
.poster-map-image{filter:sepia(.28) saturate(.61) contrast(.90) brightness(1.015);opacity:.94}
.poster-map.premium-map:after{background:linear-gradient(180deg,rgba(244,239,229,.06),rgba(244,239,229,.12)),radial-gradient(ellipse at 48% 48%,transparent 58%,rgba(244,239,229,.12) 100%)}
.route-line-halo{stroke-width:6.5;stroke-opacity:.82}.route-line{stroke:#a57a31;stroke-width:3.5}.route-marker{stroke:#b58b43;stroke-width:2.8}.route-label-title{font-size:13.5px}.route-label-date{font-size:10.4px}
.poster-metrics-band{padding:6px 0 7px;margin-bottom:7px}.poster-metrics-band small{font-size:5.4px}.poster-metrics-band b{font-size:8.5px}
.poster-photos.premium-photos{height:22.4%;margin-bottom:7px}
.poster-stops.premium-stops{padding-top:13px;gap:5px;flex:0 0 auto}.poster-stops.premium-stops .journey-stop{font-size:6.75px;line-height:1.3;min-height:73px}.poster-stops.premium-stops b{font-size:7px;margin-bottom:2px}.poster-stops.premium-stops em{font-size:6.05px;margin-bottom:4px}.poster-stops.premium-stops .journey-stop:before{width:15px;height:15px;top:-15px}
.poster-footer{margin-top:11px!important;padding-top:8px;flex:0 0 auto}.final-poster .poster-footer blockquote{font-size:12.5px;letter-spacing:.015em}.poster-footer>span{font-size:6px;margin-top:4px}
.poster-map.premium-map:before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.10;background-image:repeating-linear-gradient(0deg,rgba(65,55,40,.05) 0,rgba(65,55,40,.05) 1px,transparent 1px,transparent 3px);mix-blend-mode:multiply}.poster-map svg,.compass{z-index:3}

/* Editorial v4.3 — Mercator framing engine; visual design unchanged from v4.2 */


/* ============================================================
   Editorial v4.4 — Reference Match
   Composition pass based on the framed Costa Rica reference.
   ============================================================ */

.final-poster.editorial{
  padding:3.35% 5.45% 2.7%;
  background:#f2ecdf;
}

/* Printed-paper micro texture. Intentionally extremely subtle. */
.final-poster.editorial::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:20;
  pointer-events:none;
  opacity:.026;
  mix-blend-mode:multiply;
  background-image:
    radial-gradient(circle at 18% 24%,rgba(78,65,44,.40) 0 .35px,transparent .55px),
    radial-gradient(circle at 72% 61%,rgba(78,65,44,.28) 0 .3px,transparent .55px),
    radial-gradient(circle at 42% 82%,rgba(255,255,255,.55) 0 .35px,transparent .6px);
  background-size:7px 7px,11px 11px,13px 13px;
}

.final-poster .poster-head h2{
  font-size:64px;
  line-height:.96;
  letter-spacing:.105em;
  margin:0 0 5px;
}

.poster-rule{
  grid-template-columns:1fr auto 1fr;
  gap:14px;
  margin:7px 0 10px;
}
.poster-rule span{background:#b48a43}
.poster-rule #pmeta{
  font-size:7.6px!important;
  letter-spacing:.115em;
  color:#a47b37!important;
}

/* Map returns to being the hero. Removing the external metrics band frees
   enough vertical room to approximate the reference composition. */
.poster-map.premium-map{
  flex:0 0 49%;
  height:auto;
  margin:0 0 10px;
  overflow:hidden;
  border:0;
  background:#e3ded1;
}

/* The custom Mapbox style already has the right palette; v4.4 stops
   over-washing it and only gives it a restrained printed grade. */
.poster-map-image{
  filter:sepia(.10) saturate(.84) contrast(.96) brightness(1.01);
  opacity:.975;
}

/* Soft paper fade at map edges; route and Storyprint labels sit above it. */
.poster-map.premium-map:after{
  content:"";
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  background:
    linear-gradient(to bottom,
      rgba(242,236,223,.03) 0%,
      rgba(242,236,223,0) 70%,
      rgba(242,236,223,.30) 91%,
      rgba(242,236,223,.62) 100%),
    linear-gradient(to right,
      rgba(242,236,223,.16) 0%,
      transparent 8%,
      transparent 91%,
      rgba(242,236,223,.20) 100%),
    radial-gradient(ellipse at 48% 46%,transparent 62%,rgba(242,236,223,.12) 100%);
  box-shadow:inset 0 0 18px rgba(242,236,223,.22);
}

/* Retain the tiny map texture but keep it behind route/metrics. */
.poster-map.premium-map:before{
  z-index:1;
  opacity:.055;
}

/* Metrics now live in the lower-left of the map, matching the reference. */
.poster-metrics-band{display:none!important}
.map-metrics.reference-metrics{
  display:flex!important;
  position:absolute;
  left:3.1%;
  bottom:3.9%;
  z-index:6;
  flex-direction:column;
  gap:5px;
  width:max-content;
  max-width:48%;
  padding:7px 12px 7px 7px;
  color:#a57a31;
  border-radius:2px;
  background:linear-gradient(90deg,rgba(242,236,223,.88),rgba(242,236,223,.62),transparent);
  font-family:Arial,sans-serif;
  letter-spacing:.045em;
  text-transform:uppercase;
}
.map-metrics.reference-metrics span{
  display:grid;
  grid-template-columns:15px auto auto;
  align-items:center;
  column-gap:5px;
  min-height:12px;
}
.map-metrics.reference-metrics .metric-icon{
  font:400 12px/1 Georgia,serif;
  color:#a57a31;
  text-align:center;
}
.map-metrics.reference-metrics b{
  font:700 7.2px/1.1 Arial,sans-serif;
  color:#a57a31;
  white-space:nowrap;
}
.map-metrics.reference-metrics b strong{
  font:inherit;
}
.map-metrics.reference-metrics small{
  font:600 5.4px/1 Arial,sans-serif;
  color:#a57a31;
  white-space:nowrap;
}

/* More deliberate compass rose, placed above the metrics block. */
.compass{
  left:3.3%;
  bottom:25%;
  z-index:6!important;
  opacity:.82;
  color:#5e5a52;
  width:27px;
  font:600 6.2px/1 Georgia,serif;
}
.compass span{
  display:block;
  margin-bottom:1px;
  letter-spacing:.08em;
}
.compass b{
  display:block;
  font-size:28px;
  line-height:.78;
  color:#5f5a52;
  transform:rotate(0deg);
  text-shadow:
    7px 0 0 rgba(95,90,82,.16),
    -7px 0 0 rgba(95,90,82,.16);
}

/* Route: warmer gold, more presence, no digital white-card look. */
.route-line-halo{
  stroke:#f2ecdf;
  stroke-opacity:.72;
  stroke-width:7.2;
}
.route-line{
  stroke:#a97827;
  stroke-width:4.25;
}
.route-waypoint{
  fill:#ad8133;
  stroke:#eadfc8;
  stroke-width:1.4;
}
.route-marker{
  fill:#22211e;
  stroke:#b98b39;
  stroke-width:3.1;
}
.route-marker-text{font-size:12.2px}
.route-label-title{
  font-size:14.4px;
  letter-spacing:.018em;
  stroke:#f2ecdf;
  stroke-width:4.8px;
}
.route-label-date{
  font-size:10.7px;
  fill:#625a4f;
  stroke:#f2ecdf;
  stroke-width:3.8px;
}

/* Photo strip: quiet, continuous editorial strip. */
.poster-photos.premium-photos{
  flex:0 0 18.8%;
  height:auto;
  margin:0 0 11px;
  gap:2px;
}
.poster-photos.premium-photos i{
  box-shadow:none;
  border:0;
  border-radius:0;
  filter:saturate(.90) contrast(.98) brightness(.985) sepia(.035);
}

/* Timeline becomes a real secondary design feature. */
.poster-stops.premium-stops{
  flex:0 0 auto;
  padding-top:18px;
  gap:7px;
  margin:0 1.2%;
}
.poster-stops.premium-stops:before{
  top:7px;
  left:.4%;
  right:.4%;
  height:1px;
  background:#b68a3d;
}
.poster-stops.premium-stops .journey-stop{
  min-height:91px;
  font-size:7.15px;
  line-height:1.34;
  color:#565149;
}
.poster-stops.premium-stops .journey-stop:before{
  content:"✦";
  top:-19px;
  width:19px;
  height:19px;
  font:700 8px/19px Georgia,serif;
  background:#22211e;
  color:#f2ecdf;
  border-radius:50%;
  box-shadow:0 0 0 1px #b68a3d;
}
.poster-stops.premium-stops b{
  font-size:7.7px;
  line-height:1.15;
  letter-spacing:.025em;
  margin-bottom:3px;
}
.poster-stops.premium-stops em{
  font-size:6.6px;
  color:#967038;
  margin-bottom:5px;
}
.poster-stops.premium-stops span{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:4;
  overflow:hidden;
}

/* Footer mirrors the framed reference: strong gold accent quote + coordinates. */
.poster-footer{
  margin-top:8px!important;
  padding-top:9px;
  border-top:1px solid #b68a3d;
}
.final-poster .poster-footer blockquote{
  font-family:"Segoe Script","Bradley Hand","Brush Script MT",Georgia,cursive;
  font-style:italic;
  font-size:14px;
  line-height:1.05;
  color:#a8792d;
  letter-spacing:.005em;
}
.poster-footer>span{
  margin-top:5px;
  font-size:6.4px;
  letter-spacing:.15em;
  color:#49453f;
}

@media(max-width:620px){
  .final-poster .poster-head h2{font-size:8.6vw}
  .poster-rule #pmeta{font-size:1.05vw!important}
  .map-metrics.reference-metrics{gap:3px;padding:4px 8px 4px 5px}
  .map-metrics.reference-metrics b{font-size:1vw}
  .map-metrics.reference-metrics small{font-size:.72vw}
  .poster-stops.premium-stops .journey-stop{font-size:.95vw}
}

/* Editorial v4.4 end */


/* ============================================================
   Editorial v4.5 — Print Readability Pass
   Keeps the v4.4 composition; increases only the elements that
   were still visually undersized against the physical reference.
   ============================================================ */

/* Map metrics: approximately 1.5x visual weight without changing placement. */
.map-metrics.reference-metrics{
  gap:7px;
  padding:9px 15px 9px 9px;
}
.map-metrics.reference-metrics span{
  grid-template-columns:19px auto auto;
  column-gap:7px;
  min-height:15px;
}
.map-metrics.reference-metrics .metric-icon{
  font-size:16px;
}
.map-metrics.reference-metrics b{
  font-size:9.8px;
  letter-spacing:.055em;
}
.map-metrics.reference-metrics small{
  font-size:7.2px;
}

/* Compass: more like a deliberate cartographic ornament. */
.compass{
  width:37px;
  bottom:27%;
}
.compass span{font-size:8px}
.compass b{
  font-size:39px;
  line-height:.76;
  text-shadow:
    9px 0 0 rgba(95,90,82,.14),
    -9px 0 0 rgba(95,90,82,.14);
}

/* Route waypoints and labels need to survive physical print reduction. */
.route-waypoint{
  stroke-width:1.7;
}
.route-label-title{
  font-size:17.5px;
  stroke-width:5.5px;
}
.route-label-date{
  font-size:13.2px;
  stroke-width:4.4px;
}
.route-marker-text{font-size:13px}

/* Preserve map/photo proportions from v4.4. Give the lower editorial section
   more authority by enlarging typography instead of restructuring it. */
.poster-stops.premium-stops{
  padding-top:21px;
  gap:8px;
  margin-left:.6%;
  margin-right:.6%;
}
.poster-stops.premium-stops:before{
  top:8px;
}
.poster-stops.premium-stops .journey-stop{
  min-height:108px;
  font-size:9.25px;
  line-height:1.31;
  padding-left:3px;
  padding-right:3px;
}
.poster-stops.premium-stops .journey-stop:before{
  top:-21px;
  width:22px;
  height:22px;
  font-size:9.5px;
  line-height:22px;
}
.poster-stops.premium-stops b{
  font-size:10.2px;
  line-height:1.12;
  margin-bottom:3px;
}
.poster-stops.premium-stops em{
  font-size:8.4px;
  margin-bottom:5px;
}
.poster-stops.premium-stops span{
  -webkit-line-clamp:4;
}

/* Stronger closing statement, while retaining whitespace. */
.poster-footer{
  margin-top:7px!important;
  padding-top:10px;
}
.final-poster .poster-footer blockquote{
  font-size:18px;
  line-height:1.06;
}
.poster-footer>span{
  margin-top:6px;
  font-size:7.8px;
}

/* Keep the fixed print composition when scaled down in the browser. */
@media(max-width:620px){
  .map-metrics.reference-metrics b{font-size:1.25vw}
  .map-metrics.reference-metrics small{font-size:.92vw}
  .poster-stops.premium-stops .journey-stop{font-size:1.16vw}
  .poster-stops.premium-stops b{font-size:1.28vw}
  .poster-stops.premium-stops em{font-size:1.04vw}
}

/* Editorial v4.5 end */

/* ============================================================
   Editorial v4.6 — Lower Section Reference Pass
   Stronger destination timeline, tighter vertical rhythm and a
   quieter single-line closing statement. Map/photo composition
   intentionally remains unchanged from v4.5.
   ============================================================ */
.poster-stops.premium-stops{
  padding-top:24px;
  gap:6px;
  margin-left:0;
  margin-right:0;
}
.poster-stops.premium-stops:before{top:9px;left:.5%;right:.5%}
.poster-stops.premium-stops .journey-stop{
  min-height:124px;
  font-size:11.2px;
  line-height:1.32;
  padding:0 4px;
}
.poster-stops.premium-stops .journey-stop:before{
  top:-24px;
  width:25px;
  height:25px;
  font-size:10.5px;
  line-height:25px;
}
.poster-stops.premium-stops b{
  font-size:11.7px;
  line-height:1.1;
  margin-bottom:4px;
  letter-spacing:.02em;
}
.poster-stops.premium-stops em{
  font-size:9.4px;
  line-height:1.1;
  margin-bottom:6px;
}
.poster-stops.premium-stops span{
  line-height:1.3;
  -webkit-line-clamp:4;
}
.poster-footer{
  margin-top:2px!important;
  padding-top:8px;
}
.final-poster .poster-footer blockquote{
  font-size:13.6px;
  line-height:1;
  letter-spacing:0;
  white-space:nowrap;
}
.poster-footer>span{
  margin-top:5px;
  font-size:7.2px;
}
@media(max-width:620px){
  .poster-stops.premium-stops .journey-stop{font-size:1.34vw}
  .poster-stops.premium-stops b{font-size:1.42vw}
  .poster-stops.premium-stops em{font-size:1.13vw}
  .final-poster .poster-footer blockquote{font-size:1.65vw}
}
/* Editorial v4.6 end */

/* ============================================================
   Editorial v4.7 — Composition Pass
   Final visual rebalance: map gains presence, photography becomes
   a supporting strip, and the six-stop journey gets more breathing
   room and stronger typography. Closing quote remains restrained.
   ============================================================ */
.poster-map.premium-map{
  height:50.2%;
}
.poster-photos.premium-photos{
  height:17.2%;
  margin-bottom:6px;
}
.poster-stops.premium-stops{
  padding-top:25px;
  gap:7px;
}
.poster-stops.premium-stops:before{
  top:9px;
  left:.5%;
  right:.5%;
}
.poster-stops.premium-stops .journey-stop{
  min-height:137px;
  font-size:11.7px;
  line-height:1.38;
  padding:0 5px;
}
.poster-stops.premium-stops .journey-stop:before{
  top:-25px;
  width:26px;
  height:26px;
  font-size:10.5px;
  line-height:26px;
}
.poster-stops.premium-stops b{
  font-size:12.4px;
  line-height:1.08;
  margin-bottom:4px;
  letter-spacing:.025em;
}
.poster-stops.premium-stops em{
  font-size:9.7px;
  line-height:1.15;
  margin-bottom:6px;
}
.poster-stops.premium-stops span{
  line-height:1.38;
  -webkit-line-clamp:4;
}
.poster-footer{
  margin-top:1px!important;
  padding-top:8px;
}
.final-poster .poster-footer blockquote{
  font-size:13.4px;
  line-height:1;
  white-space:nowrap;
}
@media(max-width:620px){
  .poster-stops.premium-stops .journey-stop{font-size:1.39vw}
  .poster-stops.premium-stops b{font-size:1.48vw}
  .poster-stops.premium-stops em{font-size:1.16vw}
  .final-poster .poster-footer blockquote{font-size:1.62vw}
}
/* Editorial v4.7 end */


/* ============================================================
   Editorial v4.8 — Detail & Print Polish
   Keeps v4.7 geometry. Focuses on texture, route character,
   stronger map metrics, timeline icon variety and photo choice UI.
   ============================================================ */

/* Slightly softer lower map transition, closer to a printed illustration. */
.poster-map.premium-map:after{
  background:
    linear-gradient(to bottom,
      rgba(242,236,223,.015) 0%,
      rgba(242,236,223,0) 68%,
      rgba(242,236,223,.16) 87%,
      rgba(242,236,223,.52) 100%),
    linear-gradient(to right,
      rgba(242,236,223,.11) 0%,
      transparent 7%,
      transparent 92%,
      rgba(242,236,223,.13) 100%),
    radial-gradient(ellipse at 49% 47%,transparent 65%,rgba(242,236,223,.09) 100%);
}

/* Less "UI card", more ink-on-paper metrics. */
.map-metrics.reference-metrics{
  left:2.9%;
  bottom:3.3%;
  gap:8px;
  padding:10px 18px 10px 8px;
  background:linear-gradient(90deg,
    rgba(242,236,223,.92) 0%,
    rgba(242,236,223,.72) 62%,
    rgba(242,236,223,0) 100%);
}
.map-metrics.reference-metrics span{
  grid-template-columns:21px auto auto;
  column-gap:8px;
}
.map-metrics.reference-metrics .metric-icon{
  font-size:17px;
}
.map-metrics.reference-metrics b{
  font-size:10.5px;
}
.map-metrics.reference-metrics small{
  font-size:7.5px;
  letter-spacing:.075em;
}

/* More organic cartographic route. */
.route-line{
  stroke:#aa7a29;
  stroke-width:4.45;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.route-line-halo{
  stroke-width:7.5;
}
.route-waypoint{
  fill:#ad8235;
  stroke:#eee4d2;
  stroke-width:1.5;
}
.route-marker{
  stroke:#ad8132;
}
.route-label-title{
  font-family:Arial,sans-serif;
  font-weight:800;
  letter-spacing:.025em;
}
.route-label-date{
  letter-spacing:.01em;
}

/* Timeline: visually varied but generic travel symbols.
   nth-child is deterministic and does not hardcode destinations. */
.poster-stops.premium-stops .journey-stop:before{
  font-family:Georgia,"Times New Roman",serif;
  font-size:0;
}
.poster-stops.premium-stops .journey-stop:nth-child(1):before{content:"⌂";font-size:10px}
.poster-stops.premium-stops .journey-stop:nth-child(2):before{content:"△";font-size:11px}
.poster-stops.premium-stops .journey-stop:nth-child(3):before{content:"♧";font-size:11px}
.poster-stops.premium-stops .journey-stop:nth-child(4):before{content:"☀";font-size:10px}
.poster-stops.premium-stops .journey-stop:nth-child(5):before{content:"≈";font:bold 12px/22px Georgia}
.poster-stops.premium-stops .journey-stop:nth-child(6):before{content:"✦";font-size:10px}

/* Closing quote gets a little more confidence without returning to v4.5 scale. */
.final-poster .poster-footer blockquote{
  color:#a7772c;
  letter-spacing:.012em;
}

/* Photo selection UI: uploaded photos are explicitly selectable for the
   three poster slots. Keeps existing upload flow, adds visible selection state. */
#photoThumbs img,
.photo-thumbs img,
.upload-thumbs img{
  cursor:pointer;
  transition:transform .12s ease, box-shadow .12s ease, opacity .12s ease;
}
#photoThumbs img.poster-selected,
.photo-thumbs img.poster-selected,
.upload-thumbs img.poster-selected{
  box-shadow:0 0 0 3px #b68a3d;
  transform:translateY(-2px);
  opacity:1;
}
#photoThumbs img:not(.poster-selected),
.photo-thumbs img:not(.poster-selected),
.upload-thumbs img:not(.poster-selected){
  opacity:.84;
}

/* Editorial v4.8 end */


/* ============================================================
   Editorial v4.9 — Final UI Polish
   Keeps poster geometry locked; improves label collisions,
   timeline presence and explicit 1/2/3 photo selection.
   ============================================================ */

.poster-stops.premium-stops{
  padding-top:24px;
  gap:10px;
  margin-left:.15%;
  margin-right:.15%;
}
.poster-stops.premium-stops:before{
  top:9px;
  height:1.25px;
}
.poster-stops.premium-stops .journey-stop{
  min-height:122px;
  padding:0 3px;
  font-size:10px;
  line-height:1.36;
  color:#4e4942;
}
.poster-stops.premium-stops .journey-stop:before{
  top:-24px;
  width:25px;
  height:25px;
  line-height:25px;
  box-shadow:0 0 0 1.4px #b68a3d;
}
.poster-stops.premium-stops b{
  font-size:11px;
  line-height:1.12;
  letter-spacing:.035em;
}
.poster-stops.premium-stops em{
  font-size:9px;
  line-height:1.15;
}
.poster-stops.premium-stops span{
  font-size:8.6px;
  line-height:1.36;
}

.map-metrics.reference-metrics b{font-size:11px}
.map-metrics.reference-metrics small{font-size:7.9px}

/* Explicit poster photo order UI. */
#thumbs{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
}
.photo-pick-wrap{
  position:relative;
  display:inline-block;
  line-height:0;
  cursor:pointer;
  border-radius:5px;
}
.photo-pick-wrap img{
  display:block;
  transition:transform .12s ease,opacity .12s ease,box-shadow .12s ease;
}
.photo-pick-wrap:not(.is-selected) img{opacity:.78}
.photo-pick-wrap:hover img{transform:translateY(-1px);opacity:1}
.photo-pick-wrap.is-selected img{
  opacity:1;
  box-shadow:0 0 0 3px #b68a3d;
}
.photo-pick-badge{
  position:absolute;
  top:4px;
  left:4px;
  width:20px;
  height:20px;
  border-radius:50%;
  z-index:2;
  background:#201f1b;
  color:#f3ecdf;
  border:1px solid #b68a3d;
  font:700 11px/18px Arial,sans-serif;
  text-align:center;
  pointer-events:none;
  box-shadow:0 1px 4px rgba(0,0,0,.25);
}
.photo-picker-hint{
  margin:7px 0 1px;
  font-size:10px;
  line-height:1.3;
  color:#8b7960;
}
.route-label-title{stroke-width:4.7px}
.route-label-date{stroke-width:3.7px}

/* Editorial v4.9 end */


/* ============================================================
   Editorial v4.9.1 — photo picker hotfix
   Restores compact thumbnail grid while keeping 1/2/3 badges.
   ============================================================ */

#thumbs{
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:5px !important;
  align-items:start;
}

#thumbs .photo-pick-wrap{
  position:relative;
  display:block !important;
  width:100% !important;
  aspect-ratio:1 / 1;
  overflow:hidden;
  border-radius:5px;
  line-height:0;
  cursor:pointer;
}

#thumbs .photo-pick-wrap img{
  display:block !important;
  width:100% !important;
  height:100% !important;
  min-width:0 !important;
  max-width:none !important;
  object-fit:cover !important;
  margin:0 !important;
  border-radius:5px;
}

#thumbs .photo-pick-wrap.is-selected{
  outline:2px solid #b68a3d;
  outline-offset:0;
}

#thumbs .photo-pick-wrap.is-selected img{
  box-shadow:none !important;
}

#thumbs .photo-pick-badge{
  top:4px;
  left:4px;
  width:18px;
  height:18px;
  line-height:16px;
  font-size:10px;
}

.photo-picker-hint{
  margin-top:6px;
  max-width:100%;
}

/* Editorial v4.9.1 end */


/* ============================================================
   Editorial v4.9.2 — Consolidated polish
   Keeps v4.9 composition + v4.9.1 compact photo picker.
   ============================================================ */

/* The reference treats the adventure/date line as real typography,
   not micro-copy. Keep it restrained but physically readable. */
.poster-rule{
  margin-top:8px;
  margin-bottom:11px;
}
.poster-rule #pmeta{
  font-size:8.8px!important;
  line-height:1;
  letter-spacing:.105em;
  font-weight:700;
}

/* Cleaner in-map statistics: every row reads as a complete editorial line. */
.map-metrics.reference-metrics span{
  grid-template-columns:22px auto;
  column-gap:8px;
}
.map-metrics.reference-metrics b{
  font-size:11.2px;
  line-height:1.05;
  letter-spacing:.06em;
}
.map-metrics.reference-metrics small{
  display:none;
}

/* Final small readability lift for physical A3 print. */
.poster-stops.premium-stops b{
  font-size:11.4px;
}
.poster-stops.premium-stops em{
  font-size:9.3px;
}
.poster-stops.premium-stops span{
  font-size:9px;
  line-height:1.38;
}

/* A touch more closing authority, still clearly secondary to the journey. */
.final-poster .poster-footer blockquote{
  font-size:16.5px;
  letter-spacing:.013em;
}

/* Preserve compact thumbnail sizing even if generic earlier rules change. */
#thumbs{
  width:100%;
  max-width:100%;
}
#thumbs .photo-pick-wrap{
  min-width:0!important;
  max-width:100%!important;
}

/* Editorial v4.9.2 end */


/* ============================================================
   Editorial v4.9.3 — Footer Quote Hotfix
   Locks quote inside poster width without changing composition.
   ============================================================ */

.poster-footer{
  overflow:hidden;
}

.final-poster .poster-footer blockquote{
  display:block;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  padding:0 14px;
  margin-left:auto;
  margin-right:auto;
  text-align:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:clip;
  font-size:15px;
  line-height:1.05;
}

/* At small preview scales, reduce proportionally rather than wrapping. */
@media(max-width:620px){
  .final-poster .poster-footer blockquote{
    font-size:1.9vw;
    padding-left:1.8vw;
    padding-right:1.8vw;
  }
}

/* Editorial v4.9.3 end */


/* ============================================================
   Storyprint v5.0 — Print/Export Pipeline
   Poster artwork geometry remains locked to v4.9.3.
   ============================================================ */

.export-tools{
  display:flex;
  align-items:center;
  gap:9px;
}
.export-tools #exportStatus{
  font-size:9px;
  color:#8b7960;
  white-space:nowrap;
}
.export-tools .text-btn:disabled{
  opacity:.55;
  cursor:wait;
}

/* v5.0 intentionally contains no final-poster geometry overrides. */


/* ============================================================
   Storyprint v5.1 — Stripe Checkout
   Poster artwork geometry remains locked to v4.9.3 / v5.0.
   ============================================================ */

.checkout-status{
  min-height:16px;
  margin-top:8px;
  font-size:11px;
  line-height:1.35;
  color:#776751;
}
.checkout-status.is-error{color:#9a493f}
.checkout-status.is-ok{color:#596b4d}

.order-panel .btn[disabled]{
  opacity:.62;
  cursor:wait;
}

/* No final-poster geometry overrides in v5.1. */


/* ============================================================
   Storyprint v5.2 — 300 DPI printmaster test/export
   Poster artwork geometry remains locked.
   ============================================================ */
.export-tools{flex-wrap:wrap;justify-content:flex-end}
.export-tools .print-master-btn{font-weight:700}
@media(max-width:760px){.export-tools #exportStatus{flex-basis:100%;text-align:right}}

/* v5.3 digital-only commerce scope */
.digital-note{margin:8px 0 0;font-size:10px;line-height:1.45;color:#6f675c}.digital-note strong{color:#2a2722}.download-order{display:inline-flex;margin-top:16px}


/* ============================================================
   Storyprint v5.4 — Preview Protection
   Digital-only: previews are visibly protected.
   Paid high-resolution download remains clean.
   ============================================================ */

.preview-protection-note{
  margin:0 0 5px auto;
  font-size:9px;
  line-height:1.25;
  letter-spacing:.02em;
  color:#8a7960;
  text-align:right;
}

/* Browser preview watermark overlay */
.final-poster{
  position:relative;
}

.final-poster::after{
  content:"STORYPRINT · PREVIEW";
  position:absolute;
  left:50%;
  top:49%;
  transform:translate(-50%,-50%) rotate(-24deg);
  z-index:50;
  pointer-events:none;
  white-space:nowrap;
  font-family:Arial,sans-serif;
  font-size:clamp(20px,3.4vw,48px);
  font-weight:700;
  letter-spacing:.16em;
  color:rgba(74,64,51,.16);
  text-shadow:0 0 1px rgba(255,255,255,.18);
}

/* Repeated subtle marks make screenshots less useful without
   obscuring the actual design evaluation. */
.final-poster .preview-watermark-grid{
  position:absolute;
  inset:0;
  z-index:49;
  pointer-events:none;
  overflow:hidden;
}

.final-poster .preview-watermark-grid span{
  position:absolute;
  font:700 9px/1 Arial,sans-serif;
  letter-spacing:.14em;
  color:rgba(72,61,47,.10);
  transform:rotate(-24deg);
  white-space:nowrap;
}

.final-poster .preview-watermark-grid span:nth-child(1){left:9%;top:22%}
.final-poster .preview-watermark-grid span:nth-child(2){left:54%;top:19%}
.final-poster .preview-watermark-grid span:nth-child(3){left:22%;top:49%}
.final-poster .preview-watermark-grid span:nth-child(4){left:64%;top:48%}
.final-poster .preview-watermark-grid span:nth-child(5){left:12%;top:76%}
.final-poster .preview-watermark-grid span:nth-child(6){left:58%;top:77%}

/* Make preview-only messaging explicit in order panel */
.digital-license-note{
  margin-top:8px;
  font-size:10px;
  line-height:1.35;
  color:#776751;
}

/* v5.4 intentionally does not alter poster artwork geometry. */

/* ============================================================
   Storyprint v5.5 — Secure Paid Delivery
   No poster geometry changes. Clean download is never exposed in editor.
   ============================================================ */


/* === v5.6 dynamic 2–8 stop timeline === */
.poster-stops.premium-stops{grid-template-columns:repeat(var(--stop-count,6),minmax(0,1fr));}
.poster-stops.premium-stops .journey-stop:nth-child(7):before{content:"◇";font-size:10px}
.poster-stops.premium-stops .journey-stop:nth-child(8):before{content:"✧";font-size:10px}
.poster-stops.premium-stops.many-stops{gap:3px}
.poster-stops.premium-stops.many-stops .journey-stop{padding-left:2px;padding-right:2px}
.poster-stops.premium-stops.many-stops b{font-size:5.2px;line-height:1.1}
.poster-stops.premium-stops.many-stops em{font-size:4.8px}
.poster-stops.premium-stops.many-stops span{font-size:4.75px;line-height:1.25}
@media(max-width:620px){
 .poster-stops.premium-stops.many-stops b{font-size:1.02vw}
 .poster-stops.premium-stops.many-stops em{font-size:.88vw}
 .poster-stops.premium-stops.many-stops span{font-size:.84vw}
}


/* ============================================================
   Storyprint v5.7 — Release Hardening
   No core poster geometry changes.
   ============================================================ */

.digital-product-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-bottom:10px;
  padding:5px 8px;
  border:1px solid #cdb88f;
  border-radius:999px;
  font-size:9px;
  font-weight:700;
  letter-spacing:.08em;
  color:#8c6a2d;
  background:#faf4e8;
}

/* 7–8 stop layouts: preserve hierarchy, reduce only secondary copy */
.poster-stops.is-dense{
  column-gap:5px;
}
.poster-stops.is-dense b{
  font-size:9.7px!important;
  line-height:1.08!important;
}
.poster-stops.is-dense em{
  font-size:8px!important;
  line-height:1.15!important;
}
.poster-stops.is-dense span{
  font-size:7.7px!important;
  line-height:1.23!important;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

/* Slightly stronger digital-only copy without changing layout. */
.order-panel .digital-license-note{
  max-width:560px;
}

/* Mobile hardening */
@media(max-width:760px){
  .digital-product-badge{
    font-size:8px;
    letter-spacing:.055em;
    white-space:normal;
  }
  .preview-protection-note{
    text-align:left;
    margin-left:0;
    margin-right:0;
  }
  .export-tools{
    flex-wrap:wrap;
  }
}

/* v5.7 end */


/* ============================================================
   Storyprint v5.8 — Stop Dates
   ============================================================ */

.stop-date-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6px;
  margin-top:6px;
}

.stop-date-field{
  display:flex;
  flex-direction:column;
  gap:3px;
}

.stop-date-field label{
  font-size:8px;
  font-weight:700;
  color:#8a7960;
  letter-spacing:.02em;
}

.stop-date-field input[type="date"]{
  width:100%;
  min-width:0;
  box-sizing:border-box;
  border:1px solid #dfd4c2;
  border-radius:7px;
  background:#fffdf9;
  padding:5px 7px;
  font:inherit;
  font-size:9px;
  color:#2c2925;
}

.stop-date-field input[type="date"]:focus{
  outline:none;
  border-color:#b9914d;
  box-shadow:0 0 0 2px rgba(185,145,77,.10);
}

.stop-date-warning{
  margin-top:4px;
  min-height:10px;
  font-size:7.5px;
  line-height:1.25;
  color:#9a493f;
}

@media(max-width:520px){
  .stop-date-row{
    grid-template-columns:1fr;
  }
}

/* v5.8 end */


/* ============================================================
   Storyprint v5.8.1 — Stop Dates UI Hotfix
   ============================================================ */
.stop-card{
  margin-bottom:8px;
}
.stop-card-top{
  display:grid;
  grid-template-columns:22px minmax(0,1fr) auto;
  gap:7px;
  align-items:start;
}
.stop-number{
  width:18px;
  height:18px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#b68c43;
  color:#fff;
  font-size:8px;
  font-weight:700;
  margin-top:2px;
}
.stop-card-main{
  min-width:0;
}
.stop-card-main .stop-name,
.stop-card-main .stop-memory{
  width:100%;
  box-sizing:border-box;
}
.stop-card-main .stop-memory{
  margin-top:4px;
}
.stop-card-actions{
  display:flex;
  gap:2px;
  padding-top:2px;
}
.stop-action{
  border:0;
  background:transparent;
  padding:1px 3px;
  font-size:10px;
  cursor:pointer;
}
.stop-date-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6px;
  margin-top:6px;
}
.stop-date-field label{
  display:block;
  margin-bottom:2px;
  font-size:7px;
  font-weight:700;
  color:#8a7960;
}
.stop-date-field input[type="date"]{
  width:100%;
  box-sizing:border-box;
  min-width:0;
  height:27px;
  padding:4px 6px;
  border:1px solid #ded4c5;
  border-radius:7px;
  background:#fffdf9;
  font-size:8px;
  color:#2d2924;
}
.stop-date-warning{
  min-height:9px;
  margin-top:2px;
  font-size:7px;
  color:#9a493f;
}

/* v5.8.2: explicit stop dates drive live preview and paid export. */
