/* Scene and dialogue form one playfield; only the journal occupies the right rail. */
.stage2-game.river-journey{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);gap:12px;height:100%;min-height:0;overflow:hidden;color:#211b42}
.river-play{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;min-width:0;gap:8px}
.river-scene{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;background:#191630;border-radius:18px}
.river-canvas{position:relative;flex:none;max-width:100%}
.river-art{display:block;width:100%;height:100%;object-fit:contain;border-radius:14px}
.river-caption{position:absolute;left:8px;top:8px;color:#fff;background:#191630c9;padding:4px 8px;border-radius:8px;font-size:12px;pointer-events:none}
.river-pin{position:absolute;transform:translate(-50%,-50%);width:48px;height:48px;padding:0;border:0!important;border-radius:50%;background:transparent!important;box-shadow:none!important;cursor:pointer}
.river-pin:before{content:'';position:absolute;left:20px;top:20px;width:8px;height:8px;border:1px solid #211b42;border-radius:50%;background:#fff;box-shadow:0 0 10px 3px #fff9}
.river-pin.is-recorded:before{background:#4be0b0;box-shadow:0 0 0 2px #183d38}
.river-pin.is-hint:after,.river-pin:focus-visible:after{content:'';position:absolute;inset:3px;border:3px solid #ffe367;border-radius:50%}
.river-dialogue{padding:12px 16px;background:#fffcf2;border:2px solid #c7b89a;border-radius:16px;box-shadow:0 3px 0 #dcd1bd;min-width:0}
.river-speaker{font-size:15px;color:#706033}
.river-line{display:block;text-align:left;width:100%;min-height:2.8em;padding:3px 0;margin:0;background:transparent;border:0;box-shadow:none;color:#211b42;font-size:clamp(16px,1.3vw,20px);line-height:1.5;font-weight:700;line-break:strict;overflow-wrap:break-word;cursor:pointer}
.river-dialogue-actions{display:flex;justify-content:space-between;gap:8px;margin-top:5px}
.river-button,.river-replay,.river-stamp-card{min-height:44px;padding:8px 12px;border:2px solid #393056;border-radius:12px;background:#fff;color:#241a52;font:inherit;font-weight:700;cursor:pointer;line-height:1.35}
.river-primary,.river-stamp-card{background:#ffdb50;box-shadow:0 3px 0 #463257}
.river-stamp-card{position:absolute;z-index:20;left:10%;bottom:10%;max-width:80%;touch-action:none;user-select:none}
.river-journal{min-height:0;overflow:auto;padding:16px;background:#fffaf0;border:1px solid #dbd1b5;border-radius:18px;overscroll-behavior:contain}
.river-identity{font-size:13px;color:#12695b;margin:0 0 5px}
.river-journal h2{font-size:clamp(18px,1.6vw,24px);line-height:1.3;margin:0 0 16px}
.river-journal h3{font-size:18px;margin:8px 0}
.river-progress{font-weight:700;margin:4px 0 10px}
.river-stamps{list-style:none;padding:0;margin:0;display:grid;gap:10px;border-radius:12px}
.river-stamps li{min-height:54px;padding:10px;border:2px dashed #c4b89b;border-radius:12px;color:#706d64;background:#f5f0e4;font-size:16px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px}
.river-stamps li.is-recorded{border:2px solid #49816b;color:#184e3b;background:#e7f4e7}
.river-stamps.is-drop-target{outline:4px solid #f7c735;outline-offset:4px}
.river-feedback:empty{display:none}
.river-feedback{font-size:15px;line-height:1.5;padding:8px;border-left:3px solid #d7ac25}
.river-accessible,.river-sources{margin-top:12px;font-size:14px}
.river-accessible summary,.river-sources summary{min-height:44px;padding:10px 0;cursor:pointer}
.river-accessible button{display:block;width:100%;text-align:left;margin:4px 0}
.river-sources a{display:block;margin:8px 0;overflow-wrap:anywhere}
.river-journal .stage2-save-status{font-size:12px;color:#676270}
.river-replay{font-size:13px;margin-top:10px}
.river-finale:empty{display:none}
.river-finale{margin:12px 0}.river-finale button{width:100%}
@media(orientation:landscape) and (max-height:550px){
 .stage2-game.river-journey{grid-template-columns:minmax(0,2fr) minmax(220px,1fr);grid-template-rows:minmax(0,2.4fr) minmax(0,1fr);gap:8px}
 /* Short landscape puts the dialogue above the journal, preserving the full
    scene height and keeping every pictured target clear of text panels. */
 .river-play{display:contents}.river-scene{grid-column:1;grid-row:1 / span 2}
 .river-dialogue{grid-column:2;grid-row:1}.river-journal{grid-column:2;grid-row:2}
 .river-dialogue{padding:6px 10px;min-height:0;overflow:auto;overscroll-behavior:contain}.river-line{min-height:1.5em;font-size:16px;max-height:90px;overflow:auto}
 .river-speaker{font-size:13px}.river-journal{padding:10px}.river-journal h2{margin-bottom:8px;font-size:18px}
}
@media(orientation:portrait){
 .stage2-game.river-journey{height:auto;min-height:80dvh;grid-template-columns:minmax(0,1fr);overflow:visible}
 .river-play{grid-template-rows:minmax(180px,32dvh) auto}.river-journal{overflow:visible}
}
@media(prefers-reduced-motion:no-preference){.river-stamps li.is-recorded{animation:river-stamp-in .25s ease-out}@keyframes river-stamp-in{from{transform:scale(.95);opacity:.7}to{transform:scale(1);opacity:1}}}

.river-decisions{display:flex;flex-wrap:wrap;gap:8px}.river-decisions:empty{display:none}.river-decisions button{flex:1 1 160px;text-align:left}

/* Qualitative water comparison, labelled as a model rather than a real measurement. */
.wetland-model{width:100%;display:grid;gap:6px}.wetland-model label{font-weight:700}.wetland-model input{width:100%;min-height:44px;accent-color:#166d8b}.wetland-reservoir{height:48px;border:2px solid #77654a;border-top:0;position:relative;overflow:hidden;background:#f6ecd7;border-radius:0 0 12px 12px}.wetland-water{position:absolute;bottom:0;left:0;width:100%;background:repeating-linear-gradient(0deg,#79c6e6 0 10px,#bceafa 10px 12px)}.wetland-output{font-size:15px}.wetland-answers{display:flex;gap:8px;flex-wrap:wrap}.wetland-answers p{width:100%;margin:4px 0}.wetland-answers button{flex:1 1 160px}


/* The Netherlands mission reveals the pictured water route as each decision succeeds. */
.waterworks-waterline{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.waterworks-waterline:before{content:'';position:absolute;left:21%;top:75%;width:58%;height:3px;border-radius:4px;background:repeating-linear-gradient(90deg,#fff 0 8px,#55d9e3 8px 16px);opacity:.18;filter:drop-shadow(0 0 5px #fff)}
.waterworks-waterline[data-stage="1"]:before{left:34%;width:27%;height:6px;opacity:.8;transform:rotate(-4deg);transform-origin:left center}
.waterworks-waterline[data-stage="2"]:before{left:22%;width:43%;height:5px;opacity:.9;animation:waterworks-flow 1.4s linear infinite}
.waterworks-waterline[data-stage="3"]:before{left:37%;width:43%;height:5px;opacity:1;animation:waterworks-flow .9s linear infinite}
.waterworks-journey .river-pin{z-index:2}
@keyframes waterworks-flow{to{background-position:16px 0}}
@media(prefers-reduced-motion:reduce){.waterworks-waterline[data-stage]:before{animation:none}}

.river-recap-slot:empty{display:none}.river-recap-slot{margin:8px 0}.river-recap-slot button{width:100%}

/* Reef mission reuses the compressed illustrated field scene and existing two-column playfield. */
.reef-journey .river-scene{background:linear-gradient(160deg,#8fe6ee,#14678b 58%,#092f57)}
.reef-status-tag{position:absolute;left:10px;top:10px;z-index:3;max-width:calc(100% - 20px);padding:6px 10px;border:1px solid #fff;border-radius:999px;background:#072e51e8;color:#fff;font-size:13px;font-weight:700;pointer-events:none}
.reef-status-tag.is-checked{background:#075b4b}
.reef-journey .river-pin.is-hint:before{background:#fff8a4;box-shadow:0 0 0 3px #f7c735,0 0 14px 7px #fff9}
.reef-journey .river-dialogue{border-color:#67b9c8}
.reef-journey .river-journal{border-color:#8dcbd2;background:#f0fcfc}
.reef-journey .river-stamps li.is-recorded{border-color:#2a9b88;color:#075b4b;background:#e5fbf3}
.reef-journey .river-button,.reef-journey .river-choice{min-height:48px}
