.route-intro{padding:8px 22px 16px}.route-intro .eyebrow{margin-bottom:6px}.route-intro>p:last-child{font-size:12px;line-height:1.6;margin:0;color:var(--muted)}
.map-window.branch-map{container-type:inline-size;aspect-ratio:384 / 900;--terrain:url(./assets/campaign/trilha-viva/terrain-clay-1-v10.webp);--earth-light:linear-gradient(#fffaf02e,#fffaf02e);background-image:var(--earth-light),var(--terrain);background-size:100% 100%;background-position:center;overflow:hidden;isolation:isolate;animation:map-arrive .35s ease-out both}
.branch-map.chapter-2{--terrain:url(./assets/campaign/trilha-viva/terrain-clay-2-v10.webp)}.branch-map.chapter-3{--terrain:url(./assets/campaign/trilha-viva/terrain-clay-3-v10.webp)}.branch-map.chapter-4{--terrain:url(./assets/campaign/trilha-viva/terrain-clay-4-v10.webp)}
.ambient-detail,.ambient-light{position:absolute;inset:0;pointer-events:none;z-index:0}.ambient-detail{background-image:var(--earth-light),var(--terrain);background-position:center;background-size:100% 100%;clip-path:polygon(78% 0,100% 0,100% 15%,85% 7%);transform-origin:100% 0}.chapter-1 .ambient-detail{display:none}.chapter-2 .ambient-detail{animation:garden-breathe 7s ease-in-out infinite}.chapter-3 .ambient-detail{clip-path:polygon(0 85%,18% 100%,0 100%);transform-origin:0 100%;animation:leaf-breeze 9s ease-in-out infinite}.chapter-4 .ambient-detail{animation:leaf-breeze 10s ease-in-out infinite}.ambient-light{opacity:.09;background:radial-gradient(ellipse at 10% 30%,#fff9df 0,transparent 65%);animation:sand-light 12s ease-in-out infinite}.chapter-4 .ambient-light{background:linear-gradient(115deg,transparent 65%,#4961431a 80%,transparent)}
.branch-trails{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.branch-trails path{fill:none;stroke-linecap:round;stroke-linejoin:round}.trail-progress{opacity:0}.traveled .trail-progress{opacity:.5}.sand-reveal{stroke:#fff;stroke-width:24;stroke-dasharray:1;stroke-dashoffset:0;filter:blur(2px)}.just-traveled .sand-reveal{animation:sand-settle 1.8s cubic-bezier(.3,0,.25,1) both}@keyframes sand-settle{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
/* Small impressions pressed into the existing soil, never an illuminated line.
   Their SVG transforms follow the actual path tangent and alternate feet. */
.journey-footprints{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:hidden}
.footprint-trail{color:#805c36}.ground-step{opacity:.72}.step-rim{color:#fff3d3;fill:currentColor;opacity:.8}.step-impression{fill:currentColor;filter:drop-shadow(0 -.5px .45px #51371c45)}
.branch-trails defs g path,.journey-footprints defs g path{fill:currentColor;stroke:none}
.branch-trails defs g path.sole-tread,.journey-footprints defs g path.sole-tread{fill:none;stroke:#f0d5a9;stroke-width:.65}
.is-new-track .ground-step{animation:footstep-settle .32s ease-out both;animation-delay:var(--step-delay)}
@keyframes footstep-settle{from{opacity:0}to{opacity:.72}}
@media(prefers-reduced-motion:reduce){.footprint-trail .ground-step{animation:none!important}}
body[data-reduce-motion=true] .footprint-trail .ground-step{animation:none!important}
.branch-stop{position:absolute;width:34%;height:0;z-index:2;transform:translateX(-50%)}.branch-map .map-item{position:absolute;left:50%;top:0;width:var(--art-width);height:var(--art-height);min-width:44px;min-height:44px;transform:translate(-50%,-50%);padding:0;background:transparent;border:0;border-radius:50%;box-shadow:none;outline:none}.branch-map .object-art{opacity:1;transition:transform .25s ease}.branch-map .object-pixels{filter:drop-shadow(0 3px 3px #5e401730)}.branch-map .map-item:is(:hover,:focus-visible,:active,.is-selected) .object-art{transform:translateY(-2px)}.branch-map .map-item.is-done::after{top:0;right:0;background:transparent;color:#214d35;font-weight:800;font-size:22px;text-shadow:0 1px 3px #fff8e8}
.stop-label{position:absolute;top:calc(var(--art-height)/2 + 7px);left:0;right:0;text-align:center;pointer-events:none;line-height:1.15}.stop-number{position:absolute;right:calc(100% - 10px);top:0;display:grid;place-items:center;width:clamp(18px,5.6cqw,23px);height:clamp(18px,5.6cqw,23px);border:1px solid #c6aa66;border-radius:50%;background:#173d2b;color:#fffae9;font:600 13px Georgia,serif}.stop-label strong{display:inline-block;max-width:100%;padding:4px 9px;border:1px solid #ddcda8;border-radius:11px;background:#fff9e9;color:#163c2b;font:600 clamp(12px,3.4cqw,15px)/1.18 Georgia,serif;box-shadow:0 2px 3px #6b491a0d;text-wrap:balance}.stop-label small{display:table;margin:4px auto 0;padding:2px 9px;border-radius:10px;background:#f5d792;color:#34422b;font:600 10px Georgia,serif}.stop-label em{display:block;margin:4px auto 0;color:#5d624b;font:9px/1.3 system-ui,sans-serif}
.map-area{position:absolute;transform:translate(-50%,-50%);font:italic clamp(10px,2.8cqw,13px) Georgia,serif;color:#76603e;text-align:center;pointer-events:none;z-index:1}.branch-guide{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:12px;margin-bottom:12px}.branch-guide strong{font-weight:600}.branch-guide span{color:var(--muted);white-space:nowrap;font-size:11px}.motion-control{display:block;margin:12px auto 0;min-height:44px;font-size:11px;border-color:transparent}.branch-map.is-still *{animation-play-state:paused!important}
@keyframes map-arrive{from{opacity:.4}to{opacity:1}}@keyframes garden-breathe{50%{transform:translate(-1px,2px);opacity:.65}}@keyframes leaf-breeze{50%{transform:rotate(.4deg);opacity:.85}}@keyframes sand-light{50%{opacity:.22}}
@media(prefers-reduced-motion:reduce){.branch-map,.branch-map *{animation:none!important;transition:none!important}.branch-map .map-item .object-art{transform:none}}
@media(max-width:360px){.chapter-1 [data-stop="initial-4"] .stop-label{left:-6px;right:-6px}}

/* Production integration: retain the approved object centers and full sizes.
   The button includes its ivory label, but selection lights only its artwork. */
.journey .journey-path.branch-map{position:relative;width:min(100%,440px);height:auto;min-height:0;aspect-ratio:384/900;background-image:var(--earth-light),var(--terrain);background-size:100% 100%;border-radius:20px;margin:16px auto}
.journey .branch-map .branch-stop.journey-node{position:absolute;display:block;left:auto;top:auto;grid-column:auto;grid-row:auto;width:var(--art-width);height:var(--art-height);min-width:44px;min-height:44px;transform:translate(-50%,-50%);padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:#163c2b;opacity:1;overflow:visible;outline:none!important;touch-action:manipulation}
.journey .branch-map .branch-stop .journey-object{position:absolute;inset:0;width:100%;height:100%;display:block;background:none;border:0;box-shadow:none;animation:none}
.journey .branch-map .object-art{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:hidden;pointer-events:none}
.journey .branch-map .journey-node .stop-label{position:absolute;left:50%;right:auto;top:calc(100% + 7px);width:34cqw;max-width:none;display:block;transform:translateX(-50%);padding:0;border:0;border-radius:0;background:none;box-shadow:none;text-align:center;pointer-events:auto;gap:0}
.journey .branch-map .journey-node .stop-label strong{display:inline-block;max-width:100%;padding:4px 9px;background:#fff9e9;border:1px solid #ddcda8;border-radius:11px;color:#163c2b;font:600 clamp(12px,3.4cqw,15px)/1.18 Georgia,serif}
.journey .branch-map .journey-node .stop-label small{display:table;margin:4px auto 0;padding:2px 9px;border-radius:10px;background:#f5d792;color:#34422b;font:600 10px Georgia,serif}
.journey .branch-map .map-item::before,.journey .branch-map .map-item::after{content:none}
.branch-map .object-shine{opacity:0;mix-blend-mode:screen}
.branch-map .map-item:is(:hover,:focus-visible,:active) .object-pixels{animation:trilha-object-light 1.8s ease-in-out infinite}
.branch-map .map-item:is(:hover,:focus-visible,:active) .object-shine{animation:trilha-object-reflection 1.8s ease-in-out infinite}
.branch-map .map-item:focus-visible .stop-label strong{text-decoration:underline;text-underline-offset:3px}
@keyframes trilha-object-light{0%,100%{filter:brightness(1.07) saturate(1.03)}50%{filter:brightness(1.16) saturate(1.08)}}
@keyframes trilha-object-reflection{0%{transform:translateX(-25%);opacity:0}35%,60%{opacity:.5}100%{transform:translateX(25%);opacity:0}}
@media(prefers-reduced-motion:reduce){.branch-map .map-item:is(:hover,:focus-visible) .object-pixels{animation:none;filter:brightness(1.12) saturate(1.04)}.branch-map .map-item .object-shine{animation:none;opacity:0}}
body[data-reduce-motion=true] .branch-map *,body[data-reduce-motion=true] .trilha-player *{animation:none!important;transition:none!important}
body[data-reduce-motion=true] .trilha-player .scene-call{display:none}
@media(max-width:360px){
 .journey .branch-map.chapter-2 [data-stop="initial-10"] .stop-label{left:calc(50% + 20px)}
}

/* Future activities reveal color only after their prerequisites are completed. */
.journey .journey-node.is-locked .journey-object{filter:grayscale(1);opacity:.65}
.journey .branch-map .branch-stop.is-locked .object-art{filter:grayscale(1);opacity:.65}
.journey-route-progress{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.branch-trails .completed-route,.journey-route-progress .completed-route{fill:none;stroke:#ad852e;stroke-width:2.2;stroke-dasharray:3 7;stroke-linecap:round;opacity:.9;filter:none}
.journey-route-progress .completed-route{stroke-width:3;stroke-dasharray:4 9}

.journey-course-paths{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.journey-course-paths button{display:grid;gap:6px;border:1px solid #cbb777;border-radius:16px;background:#fffaf0;padding:15px;color:#244c36}.journey-course-paths button[aria-pressed=true]{background:#e9dcad;border-color:#a88b3f}.journey-course-paths small{font-size:11px;line-height:1.4}.journey-map-order{font-size:11px;line-height:1.6;color:#64705c}.journey-maps button:disabled{opacity:.5;cursor:not-allowed}.journey-card-goal{padding:16px;border:1px solid #c7b171;border-radius:18px;background:#fffaf0;line-height:1.6}.journey-card-goal p{font-size:12px}.journey-card-goal small{font-size:11px;color:#64705c}.journal-wizard .journal-context{font-size:13px;line-height:1.65;color:#3e5946;margin:0 0 18px}.journal-tool-option{display:block;width:100%;margin:12px 0}.journal-tool-option small{display:block;font-size:10px;margin-top:4px}.journal-tool-intro{padding:16px;border:1px solid #cbb777;border-radius:16px;background:#f1ead3;animation:journal-enter .35s ease-out}.journal-tool-intro[hidden]{display:none}.journal-tool-intro p{font-size:13px;line-height:1.6}.journey-existing-record{padding:12px;border-radius:15px;background:#eef0d7}.bottom-nav,html[data-ui-experience=guided] .bottom-nav{grid-template-columns:repeat(var(--journey-nav-count,6),minmax(0,1fr))}

/* Only completed segments receive gold; the unvisited road stays quiet. */
.journey-road .journey-road-glimmer,.journey-road .journey-road-dots{display:none}
.journey .journey-road .journey-road-fill{stroke:#c5bba0}.journey .journey-road .journey-road-edge{stroke:#ddd3b8}
.journal-enter [data-indicator="temperature"] svg{animation:metric-warm .7s ease-out both}
.journal-enter [data-indicator="humidity"] svg{animation:metric-drop .7s ease-out both}
.journal-enter [data-indicator="ppfd"] svg{animation:metric-light .8s ease-out both}
@keyframes metric-warm{from{opacity:.25;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes metric-drop{from{opacity:.2;transform:translateY(-7px) scale(.85)}to{opacity:1;transform:none}}
@keyframes metric-light{from{opacity:.3;transform:rotate(-12deg) scale(.9)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.journal-enter svg{animation:none!important}}
