.journey-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:20px 0}.journey-heading h1{font-size:clamp(28px,4vw,42px);margin:10px 0}.journey-heading p{color:var(--muted)}.journey-track{display:flex;flex-wrap:wrap;gap:8px;max-width:800px;margin:28px 0}.journey-track span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:11px;background:var(--surface,#f0f1eb);color:var(--muted);border:1px solid var(--line,#dce3df)}.journey-track .done{background:#d8e7d2;color:#315947}.journey-track .current{background:#244c3f;color:#fff;border-color:#b49b6e;box-shadow:0 0 0 3px #b49b6e22}.journey-play{max-width:840px;margin:0 auto;padding:28px!important}.journey-memory{margin:24px auto;max-width:510px}.journey-memory.large-deck{grid-template-columns:repeat(6,minmax(0,1fr));max-width:650px}.journey-memory .memory-tile{min-height:65px;aspect-ratio:1;padding:8px}.journey-symbol{font-family:serif;font-size:clamp(28px,4vw,52px);color:#a48860}.journey-water{display:grid;gap:8px;max-width:520px;margin:28px auto}.water-3{grid-template-columns:repeat(3,minmax(0,1fr))}.water-4{grid-template-columns:repeat(4,minmax(0,1fr))}.water-5{grid-template-columns:repeat(5,minmax(0,1fr))}.water-6{grid-template-columns:repeat(6,minmax(0,1fr))}.journey-water button{padding:0;aspect-ratio:1;position:relative;border-radius:12px;color:#b2b8b1;background:var(--surface,#f0f2eb);overflow:hidden;min-width:0}.journey-water button.wet{color:#5c9eaf;background:#d9eced}.journey-water svg{width:100%;height:100%;display:block}.journey-water small{position:absolute;bottom:2px;right:5px;font-size:10px;color:#244c3f}.journey-message{text-align:center;min-height:55px;line-height:1.8}.journey-message button{margin:8px 5px}.journey-message p{color:var(--muted)}.journey-rest{text-align:center;padding:70px 10px}.journey-rest>span{font-size:60px;color:#b49b6e}@media(max-width:600px){.journey-heading{align-items:flex-start}.journey-heading>button{font-size:11px;padding:9px;max-width:130px}.journey-track{gap:5px}.journey-track span{width:23px;height:23px}.journey-play{padding:16px!important}.journey-play>.row{gap:10px;flex-wrap:wrap}.journey-memory{gap:6px}.journey-memory .memory-tile{min-height:43px;padding:4px}.journey-water{gap:5px}.journey-water button{border-radius:8px}}
.journey-heading h1{font-size:32px}.journey-heading .eyebrow{font-size:11px}.journey-heading p{font-size:14px}.journey-heading>button{font-size:12px}.journey-path{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;max-width:840px;margin:24px auto 0}.journey-chapter{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;color:var(--muted);background:var(--surface)}.journey-chapter>span{font:29px Georgia,serif;color:#a78e6a}.journey-chapter>div{display:grid;gap:5px}.journey-chapter strong{font-size:13px;font-weight:500}.journey-chapter small{font-size:11px}.journey-chapter.current{border-color:var(--green);background:var(--soft);color:var(--green)}.journey-chapter.done{color:var(--green)}.journey-track{max-width:840px;margin:16px auto 22px;align-items:center;gap:10px}.journey-track small{margin-left:auto;font-size:12px;color:var(--muted)}.journey-play{position:relative;overflow:hidden}.journey-play>.row>strong{font-size:15px;font-weight:500;display:grid;gap:8px}.journey-budget{color:var(--muted);font-size:12px;font-weight:400}.journey-play>.row button{font-size:12px;padding:9px 12px}.journey-memory .memory-tile{border:1px solid var(--line);box-shadow:0 4px 0 var(--line);transition:background .15s,box-shadow .15s}.journey-memory .memory-tile.revealed{box-shadow:none}.journey-memory .memory-tile.matched{opacity:.6;box-shadow:none;border-color:transparent}.journey-message p{font-size:12px}.journey-finish{position:absolute;inset:90px 16px 16px;display:flex;flex-direction:column;justify-content:center;align-items:center;border-radius:20px;background:var(--surface);box-shadow:0 8px 48px #17332318;border:1px solid var(--line);z-index:2;padding:24px}.journey-earned{font:60px/1.2 Georgia,serif;color:#b79b66}.journey-finish h2{font:28px/1.5 "Songti SC","SimSun",serif;margin:15px 0}.journey-finish p{font-size:13px}.game-saving .journey-water{opacity:.85}.journey-water button:hover{transform:none}
@media(max-width:600px){.journey-heading h1{font-size:27px}.journey-heading p{font-size:12px}.journey-path{gap:6px}.journey-chapter{padding:12px 6px;display:grid;gap:6px;text-align:center;justify-content:center}.journey-chapter>span{font-size:23px}.journey-track{gap:7px}.journey-track small{font-size:10px}.journey-heading>button{max-width:110px}.journey-play>.row>strong{font-size:13px}.journey-play>.row button{padding:8px}.journey-finish{inset:85px 10px 10px;padding:16px}.journey-finish h2{font-size:22px}.journey-earned{font-size:40px}}

.water-7{grid-template-columns:repeat(7,minmax(0,1fr))}.water-8{grid-template-columns:repeat(8,minmax(0,1fr))}.water-7,.water-8{max-width:640px;gap:5px}.journey-water button:focus-visible{outline:3px solid var(--green);outline-offset:2px}@media(max-width:600px){.water-7,.water-8{gap:3px}.water-7 button,.water-8 button{border-radius:5px}.journey-water small{font-size:9px}}

.journey-path{grid-template-columns:repeat(6,minmax(0,1fr))}.journey-daily-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding:26px;border-radius:24px;background:var(--soft);margin:22px 0}.journey-daily-summary span{display:block;color:var(--muted);font-size:12px;margin-bottom:10px}.journey-daily-summary strong{font-size:22px}.journey-daily-summary p{grid-column:1/-1;margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.8}.journey-heading>.row{flex-wrap:wrap;gap:10px}.journey-memory.large-deck{grid-template-columns:repeat(6,minmax(0,1fr))}@media(max-width:700px){.journey-path{grid-template-columns:repeat(3,minmax(0,1fr))}.journey-daily-summary{padding:18px;gap:12px}.journey-daily-summary strong{font-size:16px}.journey-heading>.row{width:100%}.journey-heading>.row>button{flex:1}.journey-memory.large-deck .memory-tile{min-height:44px}}

.journey-chapter.done,.journey-chapter.done *,.journey-track .done{text-decoration:none!important}@media(max-width:700px){.journey-heading{flex-direction:column;align-items:stretch}.journey-heading h1{margin:10px 0}.journey-heading p{margin:8px 0}.journey-path{grid-template-columns:repeat(6,minmax(0,1fr))}.journey-chapter{padding:10px 3px}.journey-chapter>span{font-size:18px}.journey-chapter strong{font-size:11px}.journey-chapter small{font-size:9px}}

/* Keep the advanced board in one view once the player reaches the play card. */
@media(min-width:900px){
 .journey-memory.large-deck{grid-template-columns:repeat(8,minmax(0,1fr));max-width:620px;gap:10px}
 .journey-memory.large-deck .memory-tile{min-height:44px;min-width:0;padding:5px}
 .journey-memory.large-deck .journey-symbol{font-size:36px}
}

.journey-rhythm{max-width:840px;margin:0 auto 18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.journey-rhythm>span{color:var(--green);font-weight:600;white-space:nowrap}.journey-rhythm p{margin:0;font-size:13px;color:var(--muted);flex:1;min-width:160px}.journey-rhythm small{color:var(--muted);font-size:11px}.rhythm-3>span{color:var(--accent)}.journey-memory{touch-action:manipulation}.journey-water button{touch-action:manipulation}@media(max-width:600px){.journey-rhythm{gap:8px}.journey-rhythm small{width:100%}}

.journey-rule-note{font-size:12px;color:var(--muted);line-height:1.7;margin:16px 0 0}

/* Clear porcelain tiles, inset channels and quiet companion feedback. */
.canal-scene{--tile:#f4f7f5;--tile-wet:#f0faf5;--track:#82968b;--water:#21a77c;--scene-ink:#183f32;--scene-muted:#667e72;position:relative;isolation:isolate;background:#fbfdfb;border:1px solid #dce7df;border-radius:24px;padding:24px;max-width:680px;margin:20px auto 0;color:var(--scene-ink);box-sizing:border-box}
.canal-mission{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0}.canal-kicker{display:block;font:10px/1.5 system-ui,sans-serif;letter-spacing:.2em;color:var(--scene-muted)}.canal-mission h2{font-family:"Songti SC","SimSun",serif;font-size:27px;line-height:1.4;font-weight:600;letter-spacing:.03em;margin:8px 0;color:var(--scene-ink)}.canal-mission p{font-size:12px;color:var(--scene-muted);margin:0}.canal-served{display:grid;gap:6px;white-space:nowrap;font-size:10px;color:var(--scene-muted);text-align:right}.canal-served b{font:22px/1.2 system-ui,sans-serif;color:var(--scene-ink)}
.canal-friends{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:20px 0}.canal-friend{display:flex;position:relative;align-items:center;gap:7px;padding:8px 10px 8px 5px;min-width:0;border:1px solid #e1eae4;border-radius:14px;background:#fff}.canal-friend>.canal-animal-art{width:44px;height:44px;flex-shrink:0;overflow:visible}.canal-friend>div{display:grid;gap:6px}.canal-friend b{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--scene-ink)}.canal-friend b em{font:9px/14px system-ui,sans-serif;font-style:normal;text-align:center;width:14px;border:1px solid #d6e2d9;border-radius:4px;color:var(--scene-muted)}.canal-friend span{font-size:10px;color:var(--scene-muted);white-space:nowrap}.canal-friend-check{margin-left:auto;font-style:normal;color:#9cada3;font-size:14px}.canal-friend.is-drinking{background:#edf8f2;border-color:#c1dfce}.canal-friend.is-drinking span,.canal-friend.is-drinking .canal-friend-check{color:#167956}.canal-friend.is-drinking .animal-body{animation:canal-drink 3.8s ease-in-out infinite;transform-origin:center 75%}.animal-spark{animation:canal-spark 3.8s ease-in-out infinite;transform-origin:74px 16px}
.canal-board-wrap{padding:9px;border:1px solid #c8d7ce;border-radius:19px;background:#dfe8e2;box-shadow:inset 0 1px 1px #fff,0 3px 0 #bbcbbf,0 12px 22px -16px #1f483745}.canal-scene .canal-board{display:grid;grid-template-columns:repeat(var(--canal-size),minmax(0,1fr));gap:4px;max-width:none;margin:0;touch-action:manipulation}.canal-scene .canal-tile{padding:0;aspect-ratio:1;min-width:0;position:relative;border:0;border-radius:9px;overflow:hidden;background:linear-gradient(140deg,#fff8,transparent 70%),var(--tile);box-shadow:inset 0 1px 0 #fff,0 1px 1px #6d897d33;isolation:isolate;transition:background-color .2s}.canal-scene .canal-tile:disabled{opacity:1;cursor:default}.canal-scene .canal-tile:hover{transform:none}.canal-scene .canal-tile:focus-visible{outline:3px solid #d1a44d;outline-offset:1px;z-index:2}.canal-scene .canal-tile.wet{background:var(--tile-wet)}.canal-scene .canal-tile.source{box-shadow:inset 0 0 0 1px #81c6a9,0 1px 1px #6d897d33}.canal-scene .canal-pipe{display:block;width:100%;height:100%;overflow:visible;transform-origin:50% 50%}
.canal-bank-shadow{stroke:#3c625325;stroke-width:23;transform:translateY(1.4px)}.canal-bank{stroke:#c6d4cc;stroke-width:22}.canal-bed{stroke:#6e8579;stroke-width:16}.canal-channel{stroke:var(--track);stroke-width:12}.wet .canal-bank{stroke:#b7e4cf}.wet .canal-bed{stroke:#148e68}.wet .canal-channel{stroke:var(--water)}.canal-water-light{stroke:#c6f7e1;stroke-width:3;opacity:.3}.canal-stream{stroke:#e2fff2;stroke-width:1.5;stroke-dasharray:6 34;opacity:.72;animation:canal-flow 2.6s linear infinite}.canal-pool{fill:var(--track)}.wet .canal-pool{fill:var(--water)}.canal-ripple{fill:none;stroke:#d5ffeb;stroke-width:1;opacity:.5}.just-watered .canal-channel,.just-watered .canal-pool{animation:canal-arrive .3s ease-out}
.canal-scene .canal-source-mark,.canal-scene .canal-target-mark{position:absolute;right:5%;top:5%;display:grid;place-items:center;width:23%;height:23%;min-width:10px;min-height:10px;border-radius:5px;font:clamp(8px,1vw,11px)/1 system-ui,sans-serif;font-style:normal;pointer-events:none;background:#e9f0eb;color:#546e5e;border:1px solid #c4d2c7;box-sizing:border-box}.canal-scene .canal-source-mark{background:#f5eacf;color:#906e2b;border-color:#e0c78e}.canal-scene .canal-target-mark.is-drinking{background:#daf3e5;border-color:#91c8a9;color:#167452}
.canal-restoration{display:flex;align-items:center;gap:18px;margin-top:22px;font-size:11px;color:var(--scene-muted)}.canal-restoration span{white-space:nowrap}.canal-restoration b{font:15px/1 system-ui,sans-serif;color:var(--scene-ink);margin-left:8px}.canal-restoration small{font:11px/1 system-ui,sans-serif;color:var(--scene-muted)}.canal-restoration progress{appearance:none;flex:1;min-width:0;width:100%;height:4px;border:0;border-radius:8px;overflow:hidden;background:#e1eae3}.canal-restoration progress::-webkit-progress-bar{background:#e1eae3;border-radius:8px}.canal-restoration progress::-webkit-progress-value{background:#2ba777;border-radius:8px}.canal-restoration progress::-moz-progress-bar{background:#2ba777;border-radius:8px}
.canal-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:14px 0 0;font-size:10px;color:var(--scene-muted)}.canal-legend span{display:flex;align-items:center;gap:6px}.canal-legend i{display:inline-block;width:10px;height:4px;border-radius:8px;background:var(--water)}.canal-legend span:nth-child(2) i{background:var(--track)}.canal-legend small{margin-left:auto;font-size:10px}.canal-rescue-status{font-size:11px;text-align:center;line-height:1.8;margin:16px 0 0;color:var(--scene-muted)}.canal-scene .canal-tile.hint{outline:3px solid #be933d;outline-offset:1px;z-index:2}
.canal-celebration{display:flex;justify-content:center;gap:0;width:min(80%,260px);margin:0 auto}.canal-celebration svg{width:33.33%;height:auto;overflow:visible}.canal-celebration .animal-body{animation:canal-joy .65s ease-out both;transform-origin:center 80%}.canal-celebration svg:nth-child(2) .animal-body{animation-delay:.13s}.canal-celebration svg:nth-child(3) .animal-body{animation-delay:.26s}
.journey-reward{display:grid;gap:7px;justify-items:center;margin:4px 0 16px}.journey-stars{display:flex;gap:10px;font-size:35px;color:var(--line)}.journey-stars .earned{color:#c7a054;text-shadow:0 2px 0 #9f782920;animation:canal-joy .5s both}.journey-stars .earned:nth-child(2){animation-delay:.12s}.journey-stars .earned:nth-child(3){animation-delay:.24s}.journey-reward>strong{font-size:16px;color:var(--green);font-weight:500}.journey-reward>small,[data-next-countdown]{font-size:11px;color:var(--muted)}.journey-finish:has(.canal-celebration){background:radial-gradient(ellipse at 50% 0,#e9f4ee88,transparent 65%),var(--surface)}.journey-finish:has(.canal-celebration) h2{margin:12px 0 4px}.journey-finish:has(.canal-celebration) p{max-width:26em;margin:8px 0}
.canal-board.water-3,.canal-board.canal-size-3{--canal-size:3}.canal-board.water-4,.canal-board.canal-size-4{--canal-size:4}.canal-board.water-5,.canal-board.canal-size-5{--canal-size:5}.canal-board.water-6,.canal-board.canal-size-6{--canal-size:6}.canal-board.water-7,.canal-board.canal-size-7{--canal-size:7}.canal-board.water-8,.canal-board.canal-size-8{--canal-size:8}
@keyframes canal-flow{to{stroke-dashoffset:-40}}@keyframes canal-arrive{from{opacity:.3}to{opacity:1}}@keyframes canal-drink{0%,75%,100%{transform:rotate(0)}84%{transform:rotate(-3deg)}93%{transform:rotate(2deg)}}@keyframes canal-spark{0%,70%,100%{opacity:.4;transform:scale(.8)}85%{opacity:1;transform:scale(1)}}@keyframes canal-joy{0%{opacity:0;transform:translateY(14px) scale(.85)}65%{opacity:1;transform:translateY(-7px) scale(1.03)}100%{opacity:1;transform:none}}
[data-game-hidden] .canal-scene *,[data-game-hidden] .canal-celebration *,[data-game-hidden] .journey-stars *,.canal-scene.is-resting *{animation-play-state:paused!important}.game-stage-open .canal-scene .canal-board{margin:0}
[data-theme=dark] .canal-scene{--tile:#294237;--tile-wet:#244c3b;--track:#92aa9a;--water:#4acf9a;--scene-ink:#e6f1e9;--scene-muted:#a9bfb1;background:#1a3026;border-color:#355344}[data-theme=dark] .canal-friend{background:#233c2f;border-color:#365445}[data-theme=dark] .canal-friend b em{border-color:#4b6a57}[data-theme=dark] .canal-friend.is-drinking{background:#254b36;border-color:#48815c}[data-theme=dark] .canal-friend.is-drinking span,[data-theme=dark] .canal-friend.is-drinking .canal-friend-check{color:#90deb0}[data-theme=dark] .canal-board-wrap{background:#16291f;border-color:#3e5b48;box-shadow:inset 0 1px 0 #58715c66,0 3px 0 #102018,0 12px 22px -16px #0008}[data-theme=dark] .canal-scene .canal-tile{background:linear-gradient(140deg,#ffffff04,transparent 70%),var(--tile);box-shadow:inset 0 1px 0 #5f786055,0 1px 1px #0003}[data-theme=dark] .canal-scene .canal-tile.wet{background:var(--tile-wet)}[data-theme=dark] .canal-bank{stroke:#3d5848}[data-theme=dark] .canal-bed{stroke:#acbfb0}[data-theme=dark] .wet .canal-bank{stroke:#31694d}[data-theme=dark] .wet .canal-bed{stroke:#6fe4af}[data-theme=dark] .canal-restoration progress,[data-theme=dark] .canal-restoration progress::-webkit-progress-bar{background:#35513f}
@media(max-width:600px){.canal-scene{padding:16px 10px 14px;border-radius:18px;margin-top:16px}.canal-kicker{font-size:9px;letter-spacing:.14em}.canal-mission h2{font-size:22px;margin:6px 0}.canal-mission p{font-size:10px}.canal-served{font-size:9px}.canal-served b{font-size:18px}.canal-friends{gap:5px;margin:16px 0}.canal-friend{padding:7px 3px;gap:3px;border-radius:10px}.canal-friend>.canal-animal-art{width:29px;height:36px}.canal-friend b{font-size:10px;gap:3px}.canal-friend b em{font-size:8px;line-height:11px;width:11px}.canal-friend span{font-size:8px}.canal-friend-check{display:none}.canal-board-wrap{padding:6px;border-radius:13px}.canal-scene .canal-board{gap:3px}.canal-scene .canal-tile{border-radius:6px}.canal-restoration{font-size:10px;gap:12px;margin-top:18px}.canal-restoration b{font-size:13px}.canal-legend{gap:12px;font-size:9px}.canal-legend small{font-size:9px;margin-left:0}.canal-rescue-status{font-size:10px;margin-top:12px}.canal-celebration{max-width:220px}.journey-reward{margin:0 0 6px}.journey-reward>small{max-width:23em;line-height:1.6}.journey-stars{font-size:29px}.journey-rule-note{font-size:11px}}
@media(min-width:1000px) and (min-height:700px){.game-stage-open .journey-play:has(.canal-scene){max-width:940px}.game-stage-open .canal-scene{display:grid;grid-template-columns:180px minmax(0,1fr);column-gap:28px;max-width:none;padding:24px}.game-stage-open .canal-mission{grid-column:1;flex-direction:column;align-items:flex-start;gap:14px}.game-stage-open .canal-mission h2{font-size:23px;line-height:1.5}.game-stage-open .canal-served{text-align:left;display:flex;align-items:center;gap:12px}.game-stage-open .canal-friends{grid-column:1;grid-template-columns:1fr;gap:8px;margin:16px 0}.game-stage-open .canal-board-wrap{grid-column:2;grid-row:1 / span 5;align-self:center;justify-self:center;width:100%;max-width:clamp(320px,calc(100dvh - 420px),500px);box-sizing:border-box}.game-stage-open .canal-restoration{grid-column:1;flex-wrap:wrap;gap:8px;margin-top:0}.game-stage-open .canal-restoration progress{flex-basis:100%}.game-stage-open .canal-legend{grid-column:1;gap:8px;margin-top:14px}.game-stage-open .canal-legend small{margin-left:0}.game-stage-open .canal-rescue-status{grid-column:1;text-align:left;margin:10px 0 0}}
.journey-finish[role=dialog],.journey-finish[role=dialog]:has(.canal-celebration){position:fixed;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;box-sizing:border-box;z-index:180;box-shadow:0 0 0 100vmax #17352b70,0 16px 60px #152d3930;padding:28px 24px;justify-content:flex-start}.journey-finish[role=dialog] .canal-celebration{flex-shrink:0}.journey-finish[role=dialog]>button{flex-shrink:0}.journey-finish[role=dialog]>small{margin-top:8px}
@media(max-width:600px){.journey-finish[role=dialog],.journey-finish[role=dialog]:has(.canal-celebration){padding:24px 18px}.journey-finish[role=dialog] .canal-celebration{height:90px}}
@media(prefers-reduced-motion:reduce){.canal-scene *,.canal-celebration *,.journey-stars *{animation:none!important;transition:none!important}}

/* Focus mode keeps only play state, controls and the puzzle. */
.game-stage-open .journey-heading h1,.game-stage-open .journey-heading p,.game-stage-open .journey-heading>.row,.game-stage-open .journey-map,.game-stage-open .journey-rule-note,.game-stage-open .journey-message:not(.journey-finish),.game-stage-open .canal-kicker,.game-stage-open .canal-mission p,.game-stage-open .canal-rescue-status,.game-stage-open .canal-legend small{display:none!important}
.game-stage-open .journey-heading{max-width:940px;margin:0 auto 12px;min-height:20px}.game-stage-open .journey-heading .eyebrow{font-size:12px;letter-spacing:.05em;color:var(--muted)}
.game-stage-open .journey-play:has(.canal-scene){padding:20px!important}.game-stage-open .canal-scene{margin-top:16px}.game-stage-open .canal-mission h2{margin:0;font-size:24px}.game-stage-open .canal-legend{margin-bottom:2px}
@media(min-width:1000px) and (min-height:700px){.game-stage-open .canal-scene{grid-template-columns:175px minmax(0,1fr)}.game-stage-open .canal-board-wrap{grid-row:1 / span 4;max-width:clamp(320px,calc(100dvh - 300px),580px)}.game-stage-open .canal-mission{align-self:end}.game-stage-open .canal-friends{align-self:center}.game-stage-open .canal-legend{align-self:start}.game-stage-open .canal-restoration{align-self:start}}
@media(max-width:600px){.game-stage-open .journey-play:has(.canal-scene){padding:12px!important}.game-stage-open .journey-heading{margin-bottom:8px}.game-stage-open .canal-mission h2{font-size:21px}.game-stage-open .canal-scene{padding:14px 9px 12px}}

.game-stage-open .journey-play:has(.canal-scene)>.row>strong{font-size:0;gap:0}.game-stage-open .journey-play:has(.canal-scene) .journey-budget{font-size:14px;color:var(--ink)}

/* Sunny island edition: original illustrated world, toy-like pieces and game HUD. */
.canal-scene{--tile:#fff1c9;--tile-wet:#eafaff;--track:#92acb7;--water:#36c5ef;--scene-ink:#245770;--scene-muted:#42788c;background:#7cd4e5 url('/assets/canal-world15.webp') center / cover;border:3px solid #f9d08e;border-radius:28px;padding:24px;box-shadow:0 5px 0 #b6783e,0 15px 30px -16px #174e65aa}
.canal-mission h2{font-family:"Microsoft YaHei","Segoe UI",sans-serif;font-size:25px;font-weight:800;letter-spacing:.01em;color:#fff;text-shadow:0 2px 0 #247999,1px 0 #247999,-1px 0 #247999}.canal-kicker{letter-spacing:.08em;font-size:11px;font-weight:600;color:#1c627d}.canal-mission p{color:#285f78}.canal-served{color:#245c73;font-weight:600}.canal-served b{color:#fff;font-weight:800;text-shadow:0 2px 0 #287a97}
.canal-friend{background:linear-gradient(#fffef1,#ffe4ae);border:2px solid #fff5d6;border-bottom:3px solid #cda56e;border-radius:18px;box-shadow:0 3px 0 #95866545,inset 0 1px 0 #fff;gap:7px;padding:4px 8px 4px 2px}.canal-friend>.canal-animal-art{width:63px;height:68px;flex-shrink:0;display:block}.canal-character{display:block;width:100%;height:100%;background-image:url('/assets/canal-companions15.webp');background-repeat:no-repeat;background-size:300% 100%;pointer-events:none}.character-rabbit{background-position:0 50%}.character-duck{background-position:50% 50%}.character-otter{background-position:100% 50%}.canal-friend b{font-weight:700;font-size:13px;color:#315f6c}.canal-friend b em{background:#5da9d2;color:#fff;border:1px solid #2c85b8;font-weight:700;width:15px;line-height:15px}.canal-friend span{color:#677566;font-size:10px}.canal-friend.is-drinking{background:linear-gradient(#f4ffe9,#d7efb0);border-color:#eaffd0;border-bottom-color:#7daa65}.canal-friend.is-drinking .canal-friend-check{color:#4a933c;font-size:18px}.canal-friend-check{color:#ae965e}.canal-character.is-happy{animation:canal-drink 3.8s ease-in-out infinite;transform-origin:center 80%}
.canal-board-wrap{padding:10px;border:4px solid #ffdf9b;border-radius:23px;background:linear-gradient(135deg,#cf8e49,#a76430);box-shadow:inset 0 3px 0 #fff0b188,inset 0 -3px 0 #86482799,0 5px 0 #87502c,0 12px 20px #1c6d7e35}.canal-scene .canal-board{gap:4px}.canal-scene .canal-tile{border-radius:11px;background:linear-gradient(140deg,#fffdf3,#ffe9ad);box-shadow:inset 0 2px 0 #fff,inset 0 -2px 0 #d7ad6a,0 1px 1px #70492388}.canal-scene .canal-tile.wet{background:linear-gradient(140deg,#f7ffff,#cceff5)}.canal-scene .canal-tile.source{box-shadow:inset 0 0 0 2px #ffce67,inset 0 3px 0 #fff,0 1px 1px #70492388}
.canal-bank-shadow{stroke:#9a713a80;stroke-width:28;transform:translateY(1.5px)}.canal-bank{stroke:#e0bf86;stroke-width:27}.canal-bed{stroke:#647e89;stroke-width:21}.canal-channel{stroke:#a0b9c0;stroke-width:15}.wet .canal-bank{stroke:#b4d9d7}.wet .canal-bed{stroke:#1d86b8}.wet .canal-channel{stroke:#38c6ef}.canal-water-light{stroke:#c6fbff;stroke-width:7;opacity:.28}.canal-stream{stroke:#efffff;stroke-width:2;stroke-dasharray:7 32;opacity:.8}.canal-pool{fill:#a0b9c0}.wet .canal-pool{fill:#38c6ef}.canal-ripple{stroke:#e7ffff}
.canal-scene .canal-source-mark,.canal-scene .canal-target-mark{background:linear-gradient(#fff,#bfe7fa);color:#287598;border-color:#83b3ca;box-shadow:0 1px 0 #497e9144;border-radius:6px;font-weight:700}.canal-scene .canal-source-mark{background:linear-gradient(#fffacb,#ffcc5c);color:#9b5f16;border-color:#d79935}.canal-scene .canal-target-mark.is-drinking{background:linear-gradient(#edffd5,#a4dc77);color:#427629;border-color:#7faf57}
.canal-restoration{padding:9px 12px;border:2px solid #d9f5ff;background:linear-gradient(#fbffff,#d2eef5);border-radius:15px;box-shadow:0 2px 0 #43859b44;color:#377286}.canal-restoration b{color:#1c6888;font-weight:700}.canal-restoration small{color:#5d8b98}.canal-restoration progress{height:9px;background:#87b7c5;border:1px solid #7ba9b8;box-shadow:inset 0 1px 2px #31717f44}.canal-restoration progress::-webkit-progress-bar{background:#90bfcb}.canal-restoration progress::-webkit-progress-value{background:linear-gradient(#a2eb71,#57b84b)}.canal-restoration progress::-moz-progress-bar{background:#7cd659}.canal-legend{color:#205c72;font-weight:500}.canal-legend i{background:#26bbee}.canal-legend span:nth-child(2) i{background:#829fab}.canal-rescue-status{color:#285a6e}
html[data-game-stage=canal] .main{background:#7dd5e7 url('/assets/canal-world15.webp') center center / cover no-repeat;scrollbar-gutter:stable}html[data-game-stage=canal] .game-stage-bar{background:linear-gradient(#70cfeaf2,#9ae6e3dd);border-bottom:2px solid #c4f5f3;box-shadow:0 2px 6px #19648730}html[data-game-stage=canal] .game-stage-bar>strong{color:#fff;font-size:17px;font-weight:800;text-shadow:0 2px 0 #3889ad;letter-spacing:.03em}
html[data-game-stage=canal] .game-stage-bar button,html[data-game-stage=canal] .game-stage-bar summary{border:1px solid #ecffff;border-bottom:3px solid #338bb6;border-radius:13px;background:linear-gradient(#d6f9ff,#81cff0);color:#235d7a;font-weight:600;box-shadow:inset 0 1px 0 #fff,0 2px 3px #2d829833}html[data-game-stage=canal] .game-stage-bar button:active,html[data-game-stage=canal] .game-stage-bar summary:active{transform:translateY(1px)}html[data-game-stage=canal] .game-stage-tools{gap:8px}html[data-game-stage=canal] .mini-music-panel,html[data-game-stage=canal] .game-stage-menu nav{background:#fff8e4;border:2px solid #e3b86e;color:#386776}
html[data-game-stage=canal] .journey-play:has(.canal-scene){background:transparent;border:0;box-shadow:none;padding:0!important;overflow:visible}html[data-game-stage=canal] .canal-scene{background:transparent;border:0;box-shadow:none;padding:12px 0 0;margin-top:12px;max-width:940px}html[data-game-stage=canal] .journey-heading .eyebrow{display:inline-block;background:linear-gradient(#fff5cc,#ffce79);color:#90602b;border:2px solid #fff0b4;border-bottom:3px solid #bb8444;border-radius:15px;padding:7px 15px;font-size:13px;font-weight:700;letter-spacing:0;box-shadow:0 3px 5px #3b798128}html[data-game-stage=canal] .journey-play>.row{padding:0 5px;gap:12px}html[data-game-stage=canal] .journey-budget{display:block;padding:10px 16px;border:2px solid #e4faff;border-bottom:3px solid #3186a6;border-radius:15px;background:linear-gradient(#f3ffff,#b5e9f3);color:#26617b!important;font-size:14px!important;font-weight:700;box-shadow:0 3px 6px #327b8f30}html[data-game-stage=canal] .journey-play>.row button{background:linear-gradient(#fff8d8,#ffd17d);color:#8a5b25;border:2px solid #fff0b8;border-bottom:3px solid #bc8240;border-radius:13px;font-weight:700;box-shadow:0 3px 5px #337f8833}html[data-game-stage=canal] .journey-play>.row button:active{transform:translateY(1px)}html[data-game-stage=canal] .canal-mission h2{font-size:25px;line-height:1.4}html[data-game-stage=canal] .canal-served{background:#f5ffffdf;border:2px solid #cdf4fc;border-radius:12px;padding:8px 12px;box-shadow:0 2px 0 #4795a355;color:#286a80}html[data-game-stage=canal] .canal-served b{color:#1e86a2;text-shadow:none;font-weight:800}html[data-game-stage=canal] .canal-legend{background:#e7fbf7e8;border:1px solid #edffff;border-radius:12px;padding:7px 10px}
.canal-celebration>.canal-animal-art{display:block;width:33.33%;height:105px}.canal-celebration .canal-character{animation:canal-joy .65s ease-out both}.canal-celebration>.canal-animal-art:nth-child(2) .canal-character{animation-delay:.13s}.canal-celebration>.canal-animal-art:nth-child(3) .canal-character{animation-delay:.26s}.journey-finish[role=dialog]:has(.canal-celebration){background:linear-gradient(#f5ffff,#d9f4ec);border:3px solid #ffe4a6;box-shadow:0 0 0 100vmax #134d6370,0 6px 0 #b07d3f,0 18px 60px #15363a55}.journey-finish:has(.canal-celebration) h2{font-family:"Microsoft YaHei",sans-serif;font-weight:800;color:#328583}.journey-finish:has(.canal-celebration) .primary{background:linear-gradient(#8ed85e,#4dad4a);border:2px solid #d2fca3;border-bottom:4px solid #2c763a;color:#fff;text-shadow:0 1px #267438;border-radius:15px;font-weight:700}.journey-finish:has(.canal-celebration) .journey-stars .earned{color:#ffc647;text-shadow:0 2px 0 #bd8228,1px 0 #fff3a5,-1px 0 #fff3a5}
@media(min-width:1000px) and (min-height:700px){html[data-game-stage=canal] .canal-scene{grid-template-columns:200px minmax(0,1fr);column-gap:28px;max-width:940px}.game-stage-open .canal-board-wrap{max-width:clamp(320px,calc(100dvh - 250px),580px)}html[data-game-stage=canal] .canal-friends{gap:14px}html[data-game-stage=canal] .canal-friend>.canal-animal-art{width:72px;height:78px}html[data-game-stage=canal] .canal-mission{gap:14px}}
@media(max-width:600px){.canal-scene{padding:16px 10px;border-radius:20px}.canal-mission h2{font-size:20px}.canal-friend{gap:2px;padding:4px 2px;border-radius:13px}.canal-friend>.canal-animal-art{width:36px;height:43px}.canal-friend b{font-size:10px}.canal-friend b em{width:11px;line-height:11px;font-size:8px}.canal-friend span{font-size:8px}.canal-board-wrap{padding:6px;border-width:3px;border-radius:17px}.canal-scene .canal-board{gap:3px}.canal-scene .canal-tile{border-radius:7px}.canal-restoration{padding:8px 10px;border-radius:12px;margin-top:15px}.canal-legend{font-size:9px;gap:9px}.canal-celebration>.canal-animal-art{height:84px}html[data-game-stage=canal] .game-stage-bar>strong{font-size:14px}html[data-game-stage=canal] .game-stage-bar button,html[data-game-stage=canal] .game-stage-bar summary{padding:7px 8px;font-size:10px;border-radius:11px}html[data-game-stage=canal] .game-stage-tools{gap:5px}html[data-game-stage=canal] #page{padding:12px 12px 20px}html[data-game-stage=canal] .journey-heading{margin-bottom:10px}html[data-game-stage=canal] .journey-heading .eyebrow{font-size:11px;padding:6px 12px}html[data-game-stage=canal] .journey-play>.row{padding:0;gap:8px}html[data-game-stage=canal] .journey-budget{font-size:11px!important;padding:8px 10px}html[data-game-stage=canal] .journey-play>.row button{font-size:11px;padding:8px}html[data-game-stage=canal] .canal-mission h2{font-size:22px}html[data-game-stage=canal] .canal-served{padding:5px 9px;font-size:8px}html[data-game-stage=canal] .canal-served b{font-size:16px}html[data-game-stage=canal] .canal-friends{margin:12px 0}html[data-game-stage=canal] .canal-scene{padding:8px 0 0}html[data-game-stage=canal] .canal-board-wrap{padding:7px}}
@media(prefers-reduced-motion:reduce){.canal-character{animation:none!important;transition:none!important}}

/* The illustrated game keeps its authored daylight palette in either site theme. */
[data-theme=dark] .canal-scene{--tile:#fff1c9;--tile-wet:#eafaff;--track:#92acb7;--water:#36c5ef;--scene-ink:#245770;--scene-muted:#42788c;background:#7cd4e5 url('/assets/canal-world15.webp') center / cover;border-color:#f9d08e}
html[data-theme=dark][data-game-stage=canal] .canal-scene{background:transparent;border:0}
[data-theme=dark] .canal-friend{background:linear-gradient(#fffef1,#ffe4ae);border-color:#fff5d6;border-bottom-color:#cda56e}[data-theme=dark] .canal-friend span{color:#677566}[data-theme=dark] .canal-friend b em{border-color:#2c85b8}[data-theme=dark] .canal-friend.is-drinking{background:linear-gradient(#f4ffe9,#d7efb0);border-color:#eaffd0;border-bottom-color:#7daa65}[data-theme=dark] .canal-friend.is-drinking span,[data-theme=dark] .canal-friend.is-drinking .canal-friend-check{color:#4a933c}
[data-theme=dark] .canal-board-wrap{background:linear-gradient(135deg,#cf8e49,#a76430);border-color:#ffdf9b;box-shadow:inset 0 3px 0 #fff0b188,inset 0 -3px 0 #86482799,0 5px 0 #87502c,0 12px 20px #1c6d7e35}[data-theme=dark] .canal-scene .canal-tile{background:linear-gradient(140deg,#fffdf3,#ffe9ad);box-shadow:inset 0 2px 0 #fff,inset 0 -2px 0 #d7ad6a,0 1px 1px #70492388}[data-theme=dark] .canal-scene .canal-tile.wet{background:linear-gradient(140deg,#f7ffff,#cceff5)}[data-theme=dark] .canal-bank{stroke:#e0bf86}[data-theme=dark] .canal-bed{stroke:#647e89}[data-theme=dark] .wet .canal-bank{stroke:#b4d9d7}[data-theme=dark] .wet .canal-bed{stroke:#1d86b8}[data-theme=dark] .canal-restoration progress,[data-theme=dark] .canal-restoration progress::-webkit-progress-bar{background:#90bfcb}

@media(max-width:600px){html[data-game-stage=canal] .main{background-image:url('/assets/canal-world-mobile15.webp');background-position:center top}.canal-scene,[data-theme=dark] .canal-scene{background-image:url('/assets/canal-world-mobile15.webp')}html[data-game-stage=canal] .canal-scene,html[data-theme=dark][data-game-stage=canal] .canal-scene{background:transparent}}

/* Clearwater: bright porcelain channels, crisp blue shadows, no yellow dry pipes. */
.canal-scene .canal-board-wrap{background:linear-gradient(145deg,#f4fdff,#85c7de);border:3px solid #edfcff;box-shadow:inset 0 2px #fff,0 6px 0 #337f9f,0 16px 28px #155c7940;padding:10px}
.canal-scene .canal-tile,.canal-scene .canal-tile:disabled{opacity:1;background:linear-gradient(145deg,#f9fdff,#d3e8f2);box-shadow:inset 0 2px #fff,inset 0 -3px #9dbeca,0 1px 2px #2a688b40}
.canal-scene .canal-tile.wet{background:linear-gradient(140deg,#f7ffff,#bceaf7)}
.canal-scene .canal-bank-shadow{stroke:#37647d66;stroke-width:31;transform:translateY(2px)}
.canal-scene .canal-bank{stroke:#f7fdff;stroke-width:29}.canal-scene .canal-bed{stroke:#597e95;stroke-width:22}.canal-scene .canal-channel{stroke:#a6c8d9;stroke-width:15}.canal-scene .canal-pool{fill:#a6c8d9}
.canal-scene .wet .canal-bank{stroke:#f4ffff}.canal-scene .wet .canal-bed{stroke:#1787b4}.canal-scene .wet .canal-channel,.canal-scene .wet .canal-pool{stroke:#22bde7;fill:#22bde7}.canal-scene .wet .canal-channel{fill:none}
.canal-scene .canal-tile.source{box-shadow:inset 0 0 0 2px #49a8c1,inset 0 2px #fff,0 1px 2px #2a688b40}.canal-scene .canal-source-mark{background:#ecffff;color:#2588a3;border-color:#8dc8d7}
.canal-scene .canal-friend{background:linear-gradient(#fff,#edf7fc);border-color:#f8ffff;border-bottom-color:#8bbdcf;box-shadow:0 3px 0 #4488a545;padding:6px}.canal-scene .canal-friend.is-drinking{background:linear-gradient(#f8fff3,#d9f6d2);border-color:#f1ffe9;border-bottom-color:#87bd73}.canal-scene .canal-friend span{color:#3b6c80}.canal-friend.is-thirsty-again{animation:canal-reconnect18 .4s ease-out}
.canal-character{background-image:url('/assets/canal-rescue18.webp');background-size:300% 200%;background-position-y:0}.canal-character.is-happy{background-position-y:100%;animation:canal-hop18 2.4s ease-in-out infinite;transform-origin:50% 85%}.character-rabbit{background-position-x:0}.character-duck{background-position-x:50%}.character-otter{background-position-x:100%}
.canal-scene .canal-target-mark{width:clamp(24px,3.2vw,40px);height:clamp(24px,3.2vw,40px);background:#f1fbff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px #20516d40;overflow:hidden;padding:0;bottom:3px;right:3px;pointer-events:none}.canal-target-mark .canal-animal-art{width:100%;height:100%;display:block}.canal-scene .canal-target-mark.is-drinking{background:#d7f9ca;border-color:#f6ffec}
.journey-clock{display:grid;text-align:center;gap:1px;padding:5px 12px;border:1px solid #c2e6f0;border-radius:13px;background:#f5fdff;color:#225e78;min-width:56px;font-variant-numeric:tabular-nums}.journey-clock small{font-size:9px;letter-spacing:.12em}.journey-clock b{font-size:18px}.journey-clock.is-overtime b{font-size:12px;color:#47785b}
html[data-game-stage=canal] .journey-play>.row button{background:linear-gradient(#fff,#d7f0fa);border-color:#efffff;border-bottom-color:#6caac4;color:#215c77}.journey-play>.row button:disabled{opacity:.46;box-shadow:none;cursor:default}.journey-play [data-journey-action=undo] small{display:inline-block;min-width:16px;border-radius:8px;background:#acd8ea;color:#28637a}
html[data-game-stage=canal] .mini-music-panel,html[data-game-stage=canal] .game-stage-menu nav{background:#f2fbff;border-color:#a7d6e7}.canal-friend-check{display:none}
@keyframes canal-hop18{0%,65%,100%{transform:translateY(0) rotate(0)}72%{transform:translateY(-6px) rotate(-4deg)}80%{transform:translateY(0) rotate(3deg)}88%{transform:translateY(-3px)}}
@keyframes canal-reconnect18{0%,100%{transform:translateX(0)}30%{transform:translateX(-3px)}70%{transform:translateX(3px)}}
@media(max-width:600px){.canal-scene .canal-target-mark{width:24px;height:24px;bottom:1px;right:1px}.water-8 .canal-target-mark,.water-7 .canal-target-mark{width:20px;height:20px}.journey-clock{min-width:42px;padding:4px 7px}.journey-clock b{font-size:15px}.journey-play>.row>.row{gap:5px;flex-wrap:wrap}.canal-scene .canal-friend>.canal-animal-art{width:46px;height:48px}.canal-friend>div{min-width:0}.canal-friend b{font-size:11px}.canal-friend span{font-size:9px}}
@media(prefers-reduced-motion:reduce){.canal-character.is-happy,.canal-friend.is-thirsty-again{animation:none!important}}

@media(max-width:360px){.canal-scene .canal-friend{padding:4px 2px;gap:2px}.canal-scene .canal-friend>.canal-animal-art{width:36px;height:42px}.canal-friend>div{flex:1;overflow:hidden}.canal-friend>div>span{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.canal-friend b{font-size:10px}html[data-game-stage=canal] .canal-mission h2{font-size:20px}}

/* Stability and mobile cell geometry only. */
.journey-network{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:120;padding:10px 20px;border-radius:24px;background:#f4fcff;color:#25566c;box-shadow:0 3px 18px #236f7f35;font-size:13px;pointer-events:none}.journey-network[hidden]{display:none}.canal-board .canal-tile{min-height:0}
