:root {
  color-scheme: light;
  --navy: #17283b;
  --cream: #fff8e9;
  --green: #64d84f;
  --green-dark: #246b42;
  --gold: #f4bd4e;
  --muted: #62717d;
  --line: rgba(23, 40, 59, 0.16);
  font-family: ui-rounded, "Avenir Next", "Nunito", system-ui, sans-serif;
}
.drop-stream.open-end i{animation-duration:1.15s}

.show-active-links .water-route,.show-active-links .heat-rail{outline:.13rem dashed #ff49c9;outline-offset:.18rem;opacity:.65}.show-active-links.water-active .water-route,.show-active-links.heat-active .heat-rail{outline-color:#79ffd9;opacity:1}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body { color: var(--navy); background: #dceef5; overflow-x: hidden; }
button { color: inherit; font: inherit; }
.hidden { display: none !important; }

.adventure-app { min-height: 100vh; background: linear-gradient(180deg, #eef7fa, #f9f1df); }
.game-header { position: sticky; top: 0; z-index: 100; min-height: 4.6rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.7rem clamp(1rem, 3vw, 2rem); border-bottom: 1px solid var(--line); background: rgba(255,248,233,.93); box-shadow: 0 8px 28px rgba(23,40,59,.1); backdrop-filter: blur(16px); }
.game-brand { display: flex; align-items: center; gap: .65rem; padding: 0; border: 0; background: transparent; font-size: clamp(1.35rem,3vw,2rem); font-weight: 950; letter-spacing: -.04em; cursor: pointer; }
.goo-mark { position: relative; width: 2.55rem; aspect-ratio: 1; border: 1px solid #238144; border-radius: 48% 52% 44% 47%; background: radial-gradient(circle at 30% 18%,#fff 0 7%,transparent 18%),radial-gradient(circle at 38% 38%,#79f14d,#32b94b 62%,#14723b); box-shadow: inset -.35rem -.4rem rgba(0,71,31,.2),0 .35rem .8rem rgba(24,66,42,.18); }
.goo-mark i { position: absolute; top: 1rem; width: .28rem; height: .38rem; border-radius: 50%; background: #102219; box-shadow: 0 -.1rem 0 .06rem #fff; }
.goo-mark i:first-child { left: .72rem; }.goo-mark i:last-child { right: .72rem; }
.player-summary { display: flex; align-items: center; gap: .5rem; font-size: .78rem; font-weight: 900; }
.player-summary > span,.icon-action,.back-action,.workshop-link { min-height: 2.45rem; display: inline-flex; align-items: center; gap: .25rem; padding: .4rem .65rem; border: 1px solid var(--line); border-radius: 999px; background: rgba(255,255,255,.82); }
.icon-action,.back-action { cursor: pointer; font-weight: 900; }
.workshop-link{background:var(--navy);color:#fff;text-decoration:none;font-weight:950}
.admin-label{padding:.18rem .35rem;border-radius:999px;background:#f3bd4d;color:#17283b;font-size:.55rem;letter-spacing:.08em}
.account-action{min-height:2.45rem;display:flex;align-items:center;gap:.45rem;padding:.35rem .65rem;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;text-align:left}
.account-action span,.account-action b{display:block}.account-action span{font-size:.7rem;font-weight:950}.account-action b{color:#28714b;font-size:.58rem}
body.is-admin .account-action{box-shadow:inset 0 0 0 .12rem #f3bd4d}
body:not(.is-admin) [data-admin-only]{display:none!important}
.guest-save-notice{position:fixed;z-index:260;right:1rem;top:5.35rem;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.65rem;width:min(35rem,calc(100% - 2rem));padding:.7rem .75rem;border:1px solid rgba(23,40,59,.14);border-radius:1rem;background:rgba(255,248,233,.97);box-shadow:0 1rem 2.5rem rgba(23,40,59,.18);backdrop-filter:blur(12px)}
.guest-save-notice>span{display:grid;place-items:center;width:2.3rem;aspect-ratio:1;border-radius:50%;background:#dff4db;color:#28714b;font-size:1.15rem}.guest-save-notice strong,.guest-save-notice small{display:block}.guest-save-notice strong{font-size:.75rem}.guest-save-notice small{margin-top:.12rem;color:var(--muted);font-size:.62rem;font-weight:750}.guest-save-notice button{min-height:2.25rem;padding:.35rem .65rem;border:0;border-radius:.65rem;background:var(--navy);color:#fff;font-size:.64rem;font-weight:900;cursor:pointer}.guest-save-notice .notice-close{width:2rem;padding:0;background:transparent;color:var(--muted);font-size:1.2rem}
.account-modal{position:fixed;z-index:500;inset:0;display:grid;place-items:center;padding:1rem}.account-backdrop{position:absolute;inset:0;border:0;background:rgba(12,30,39,.62);backdrop-filter:blur(5px);cursor:pointer}.account-card{position:relative;width:min(29rem,100%);padding:clamp(1.3rem,4vw,2rem);border:.25rem solid #fff4ce;border-radius:1.35rem;background:#fff8e9;box-shadow:0 2rem 6rem rgba(9,26,34,.4)}
.account-card h2{margin:.15rem 0;font-size:clamp(2rem,6vw,3rem);line-height:1;letter-spacing:-.045em}.account-intro{margin:.65rem 0 1rem;color:var(--muted);font-size:.82rem;font-weight:700}.account-close{position:absolute;right:.75rem;top:.75rem;width:2.25rem;aspect-ratio:1;border:0;border-radius:50%;background:#e8dfcf;font-size:1.3rem;cursor:pointer}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;margin-bottom:.85rem;padding:.25rem;border-radius:.8rem;background:#e8dfcf}.auth-tabs button{min-height:2.45rem;border:0;border-radius:.6rem;background:transparent;font-weight:900;cursor:pointer}.auth-tabs button.active{background:#fff;box-shadow:0 .2rem .6rem rgba(23,40,59,.1)}
.adventure-auth-form{display:grid;gap:.7rem}.adventure-auth-form label{display:grid;gap:.3rem;color:#435365;font-size:.67rem;font-weight:900}.adventure-auth-form input{width:100%;min-height:2.8rem;padding:.55rem .7rem;border:1px solid rgba(23,40,59,.2);border-radius:.65rem;background:#fff;font:inherit}.adventure-auth-form .primary-action{width:100%;min-height:3rem;border:0;border-radius:.7rem;background:linear-gradient(#76df5e,#49b64c);font-weight:950;cursor:pointer}.auth-message{min-height:1rem;margin:0;color:#a43c36;font-size:.68rem;font-weight:800}.cloud-save-confirmation{padding:.75rem;border-radius:.7rem;background:#dff4db;color:#246b42;font-size:.75rem;font-weight:900}.signed-in-actions{display:flex;gap:.5rem}.signed-in-actions button{flex:1;min-height:2.7rem;border:0;border-radius:.65rem;background:#e7dfd1;font-weight:900;cursor:pointer}.signed-in-actions button:first-child{background:var(--navy);color:#fff}

.game-screen { display: none; }.game-screen.active { display: block; }
.map-heading,.level-toolbar { width: min(1200px,100%); margin: 0 auto; padding: clamp(1rem,3vw,2rem); }
.map-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; }
.kicker { margin: 0 0 .25rem; color: #28714b; font-size: .72rem; font-weight: 950; letter-spacing: .13em; text-transform: uppercase; }
.map-heading h1,.level-toolbar h1 { margin: 0; font-size: clamp(2.4rem,6vw,4.7rem); line-height: .9; letter-spacing: -.05em; }
.map-heading p:not(.kicker),.level-toolbar p:not(.kicker) { margin: .55rem 0 0; color: var(--muted); font-weight: 750; }
.region-progress { min-width: min(20rem,100%); display: grid; gap: .4rem; }
.region-progress-label { display: flex; justify-content: space-between; font-size: .76rem; font-weight: 900; }
.progress-track { height: .7rem; overflow: hidden; border-radius: 999px; background: #d7ded5; box-shadow: inset 0 1px 3px rgba(0,0,0,.1); }
.progress-track i { display: block; width: var(--progress); height: 100%; border-radius: inherit; background: linear-gradient(90deg,#65d44e,#efbd4d); transition: width .35s ease; }

.world-map { position: relative; width: min(1280px,calc(100% - 2rem)); aspect-ratio: 16/9; min-height: 34rem; margin: 0 auto; overflow: hidden; border: .42rem solid var(--cream); border-radius: 1.65rem; background: #43aef1 url("assets/adventure/first-region-map.png") center/cover no-repeat; box-shadow: 0 24px 70px rgba(17,39,55,.28); }
.world-map::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(11,41,56,.12)); }
.location-node { position: absolute; z-index: 3; width: clamp(4.3rem,8vw,6.3rem); aspect-ratio: 1; display: grid; place-items: center; border: .28rem solid #fff6dd; border-radius: 50%; background: linear-gradient(180deg,#83ea64,#40aa55); box-shadow: 0 .45rem 0 #287347,0 .8rem 1.5rem rgba(12,38,50,.3); cursor: pointer; transform: translate(-50%,-50%); transition: transform .15s ease; }
.location-node:hover:not(:disabled) { transform: translate(-50%,-50%) scale(1.07); }
.location-node:disabled { cursor: default; filter: saturate(.2); background: #7c8990; box-shadow: 0 .4rem 0 #4e5960,0 .7rem 1.2rem rgba(12,38,50,.22); }
.location-node.complete { background: linear-gradient(180deg,#f8d567,#e7aa3e); box-shadow: 0 .45rem 0 #a86e2d,0 .8rem 1.5rem rgba(12,38,50,.3); }
.location-node.workshop-draft{border-color:#8df2e0}.node-draft{position:absolute;right:-1rem;top:-.45rem;padding:.2rem .35rem;border-radius:999px;background:#216f68;color:#fff;font-size:.48rem;font-weight:950;letter-spacing:.08em}.workshop-link.has-drafts{box-shadow:inset 0 0 0 .12rem #69d5b8}
.node-number { font-size: clamp(1.2rem,3vw,2rem); font-weight: 950; }.node-lock { font-size: 1.4rem; }
.node-stars { position: absolute; top: -.85rem; min-width: 3.5rem; padding: .2rem .35rem; border-radius: 999px; background: var(--navy); color: var(--gold); font-size: .68rem; white-space: nowrap; }
.node-label { position: absolute; top: calc(100% + .65rem); min-width: 8.5rem; padding: .45rem .55rem; border: 1px solid rgba(255,255,255,.4); border-radius: .65rem; background: rgba(23,40,59,.9); color: #fff; box-shadow: 0 8px 20px rgba(12,31,43,.2); line-height: 1.1; text-align: center; }
.node-label strong,.node-label small { display:block; }.node-label small { margin-top:.2rem;color:#d6e3df;font-size:.62rem; }
.map-legend { width:min(1200px,100%); display:flex; justify-content:center; flex-wrap:wrap; gap:1rem; margin:1rem auto 0; padding:0 1rem 2rem; color:var(--muted); font-size:.74rem; font-weight:850; }
.map-legend span { display:flex; align-items:center; gap:.35rem; }.legend-dot { width:.75rem; height:.75rem; border-radius:50%; background:#67cf54; }.legend-dot.complete{background:#efba49}.legend-dot.locked{background:#849097}

.level-toolbar { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:1rem; padding-block:1rem; }
.level-toolbar h1 { font-size:clamp(2rem,4vw,3.4rem); }.back-action { border-radius:.7rem; }
.attempt-stats { display:flex; flex-wrap:wrap; justify-content:end; gap:.5rem; }.attempt-stats span { padding:.45rem .65rem; border:1px solid var(--line); border-radius:.65rem; background:rgba(255,255,255,.75); font-size:.72rem; font-weight:900; }
.level-stage { position:relative; width:min(1240px,calc(100% - 2rem)); margin:0 auto 2rem; overflow:hidden; border:.42rem solid var(--cream); border-radius:1.5rem; background:#bde8ff; box-shadow:0 24px 70px rgba(17,39,55,.26); }
.scene { position:relative; min-height:clamp(28rem,64vh,44rem); overflow:hidden; background:linear-gradient(180deg,rgba(51,165,231,.15),rgba(23,56,45,.22)),url("assets/visual-direction/slime-city-main.png") center/cover; }
.scene::before { content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%,rgba(16,38,45,.18)); pointer-events:none; }
.scene.alley::after { content:""; position:absolute; left:0; right:0; bottom:0; height:26%; background:linear-gradient(170deg,transparent 0 18%,rgba(33,43,48,.82) 19%); pointer-events:none; }
.scene.bridge { background-position:center; }.scene.bridge::after { content:""; position:absolute; left:0; right:0; bottom:0; height:38%; background:linear-gradient(180deg,rgba(49,171,214,.78),#207ca7); clip-path:polygon(0 35%,16% 31%,35% 39%,52% 27%,70% 36%,100% 24%,100% 100%,0 100%); }
.cliff { position:absolute; z-index:2; bottom:14%; width:31%; height:32%; background:linear-gradient(135deg,#b66d4c,#78402f); border:.35rem solid #5f382d; box-shadow:inset 0 .7rem rgba(255,255,255,.12),0 1rem 2rem rgba(10,31,40,.25); }.cliff.left{left:-2%;border-radius:0 2rem 0 0}.cliff.right{right:-2%;border-radius:2rem 0 0 0}
.bridge-deck { position:absolute; z-index:5; left:29%; bottom:36%; width:42%; height:4.6rem; transform-origin:95% 50%; transition:transform 1s cubic-bezier(.22,.85,.33,1.2); }.bridge-deck::before { content:""; position:absolute; inset:0; border:.28rem solid #67391f; border-radius:.4rem; background:repeating-linear-gradient(90deg,#b96c34 0 11%,#7c431f 11% 13%); box-shadow:0 .65rem 1.1rem rgba(13,30,37,.3); }.scene.solved .bridge-deck { transform:rotate(0deg)!important; }
.scene.bridge:not(.solved) .bridge-deck { transform:rotate(-28deg); }
.rope { position:absolute; z-index:8; left:50%; top:16%; width:.7rem; height:43%; border:0; border-radius:999px; background:repeating-linear-gradient(0deg,#d6a461 0 .5rem,#8e5c2f .5rem .8rem); box-shadow:0 0 0 .18rem rgba(95,54,30,.22); transform:rotate(-17deg); cursor:crosshair; transition:opacity .25s ease; }.rope::after { content:"ROPE"; position:absolute; left:1.25rem; top:45%; padding:.25rem .4rem; border-radius:.35rem; background:rgba(23,40,59,.85); color:#fff; font-size:.62rem; font-weight:950; letter-spacing:.08em; }
.rope.burning { animation:rope-burn .18s ease-in-out infinite alternate; box-shadow:0 0 1.3rem .6rem #ff8b2f; }.rope.broken { opacity:0; pointer-events:none; }
@keyframes rope-burn { to { filter:brightness(1.45); transform:rotate(-17deg) scaleX(1.18); } }
.counterweight { position:absolute; z-index:9; right:17%; bottom:39%; width:5rem; aspect-ratio:1; border:.3rem solid #54372c; border-radius:.8rem; background:linear-gradient(145deg,#8e9aa0,#47565e); box-shadow:0 .6rem 1rem rgba(10,30,39,.25); color:#fff; font-size:.62rem; font-weight:950; cursor:pointer; }.scene.solved .counterweight { transform:translateY(5rem) rotate(18deg); transition:transform 1.4s ease; }
.crate-stack { position:absolute; z-index:5; left:47%; bottom:16%; width:9rem; height:10rem; cursor:pointer; transition:transform .8s cubic-bezier(.3,.9,.3,1.2); }.crate-stack::before,.crate-stack::after { content:""; position:absolute; width:5.6rem; aspect-ratio:1; border:.28rem solid #6e421f; background:linear-gradient(45deg,transparent 44%,#7b4a25 45% 54%,transparent 55%),linear-gradient(-45deg,transparent 44%,#7b4a25 45% 54%,transparent 55%),#bd7739; box-shadow:0 .5rem 1rem rgba(18,33,39,.3); }.crate-stack::before{left:0;bottom:0}.crate-stack::after{right:0;top:0}.scene.solved .crate-stack{transform:translateX(13rem) rotate(14deg)}
.fire-captive { position:absolute; z-index:4; left:49%; bottom:17%; width:7rem; opacity:.35; transform:scale(.8); transition:opacity .5s .45s,transform .6s .45s; }.scene.solved .fire-captive{opacity:1;transform:scale(1)}
.drop-target { outline:none; }.drop-target.target-ready { filter:brightness(1.15); animation:target-pulse .7s ease-in-out infinite alternate; }.drop-target.target-wrong { animation:wrong .25s linear 2; }
@keyframes target-pulse { to { box-shadow:0 0 0 .65rem rgba(244,189,78,.42),0 0 2rem rgba(255,173,48,.5); } } @keyframes wrong { 50%{transform:translateX(.5rem)} }

.ingredient-pickup { position:absolute; z-index:12; width:3.1rem; aspect-ratio:1; display:grid; place-items:center; border:.2rem solid #fff5cc; border-radius:50%; background:radial-gradient(circle at 30% 20%,#fff,#ffd95e 22%,#e79d27 70%); box-shadow:0 .4rem 1rem rgba(15,38,48,.24); font-size:1.25rem; cursor:pointer; animation:float 1.2s ease-in-out infinite alternate; }.ingredient-pickup.collected{opacity:0;transform:scale(1.5);pointer-events:none;transition:.3s}.ingredient-pickup:nth-of-type(2){animation-delay:-.4s}.ingredient-pickup:nth-of-type(3){animation-delay:-.8s}@keyframes float{to{translate:0 -.45rem}}
.level-hud { position:relative; z-index:20; display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:7.5rem; padding:.8rem 1rem; background:rgba(255,248,233,.96); box-shadow:0 -10px 30px rgba(18,39,50,.12); }.instruction { display:flex; align-items:center; gap:.65rem; max-width:30rem; }.instruction p{margin:.18rem 0 0;color:var(--muted);font-size:.75rem;font-weight:750}.drag-hand{font-size:1.8rem}.slime-tray{display:flex;justify-content:end;gap:.65rem;}.slime-token{position:relative;width:6.6rem;display:grid;grid-template-columns:2.7rem 1fr;align-items:center;gap:.35rem;padding:.45rem;border:.18rem solid transparent;border-radius:.9rem;background:#eee5d7;cursor:grab;touch-action:none}.slime-token.selected{border-color:#3b925a;background:#e4f2de}.slime-token.used{opacity:.4;cursor:default}.slime-token strong,.slime-token small{display:block;text-align:left}.slime-token strong{font-size:.75rem}.slime-token small{color:var(--muted);font-size:.62rem;font-weight:850}.slime-avatar{width:2.7rem;aspect-ratio:1}.slime-avatar svg{width:100%;height:100%;overflow:visible}.drag-ghost{position:fixed;z-index:999;width:6rem;pointer-events:none;transform:translate(-50%,-50%) scale(1.08);filter:drop-shadow(0 1rem .7rem rgba(9,28,38,.3))}.drag-ghost svg{width:100%}
.level-message { position:absolute; z-index:25; left:50%; top:1rem; translate:-50% 0; max-width:min(32rem,calc(100% - 2rem)); padding:.6rem .9rem;border-radius:999px;background:rgba(23,40,59,.92);color:#fff;font-size:.76rem;font-weight:900;text-align:center;opacity:0;transform:translateY(-.4rem);transition:.2s;pointer-events:none}.level-message.show{opacity:1;transform:none}
.action-slime{position:absolute;z-index:18;width:7.5rem;translate:-50% -50%;pointer-events:none;animation:slime-impact .7s cubic-bezier(.2,.9,.25,1.25) both}.action-slime svg{width:100%;filter:drop-shadow(0 .8rem .6rem rgba(9,30,38,.3))}.action-slime.goo{animation-name:goo-impact}.fire-spark{position:absolute;left:50%;top:45%;width:.65rem;height:1rem;border-radius:60% 40% 55% 45%;background:#ffd34e;box-shadow:0 0 .7rem #ff5a27;animation:spark-out .75s var(--spark-delay) ease-out infinite}@keyframes slime-impact{0%{opacity:0;transform:translateY(8rem) scale(.5)}65%{opacity:1;transform:translateY(-1rem) scale(1.16)}100%{transform:none}}@keyframes goo-impact{0%{opacity:0;transform:translateX(-10rem) scaleX(1.4) scaleY(.7)}70%{opacity:1;transform:translateX(1rem) scaleX(.75) scaleY(1.3)}100%{transform:none}}@keyframes spark-out{to{opacity:0;transform:translate(var(--spark-x),-4.5rem) rotate(30deg) scale(.2)}}
.mini-slime{display:inline-block;width:3rem;height:3rem}.mini-slime svg{width:100%;height:100%}
.results-panel { position:absolute; z-index:50; inset:0; display:grid; place-items:center; padding:1rem; background:rgba(13,31,42,.55); backdrop-filter:blur(5px) }.results-card{width:min(28rem,100%);padding:1.3rem;border:.25rem solid #fff6dd;border-radius:1.3rem;background:#fff8e9;box-shadow:0 24px 70px rgba(7,23,32,.4);text-align:center}.results-card h2{margin:.35rem 0 0;font-size:2.1rem}.result-stars{margin:.65rem 0;color:#d6d8d8;font-size:2.8rem;letter-spacing:.08em}.result-stars .earned{color:#f1b83e;text-shadow:0 .18rem 0 #a76e29}.result-breakdown{display:grid;gap:.4rem;margin:.9rem 0;text-align:left}.result-row{display:flex;justify-content:space-between;padding:.55rem .65rem;border-radius:.55rem;background:#eee6d8;font-size:.75rem;font-weight:850}.unlock-banner{display:flex;align-items:center;justify-content:center;gap:.6rem;margin:.8rem 0;padding:.65rem;border-radius:.7rem;background:#e4f2dd;color:#24663f;font-weight:950}.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.primary-action,.secondary-action{min-height:2.9rem;border:0;border-radius:.7rem;cursor:pointer;font-weight:950}.primary-action{background:linear-gradient(#83e667,#58bd4e);box-shadow:0 .28rem 0 #347f3e}.secondary-action{background:#e9dfcf}

@media (max-width:760px){
  .game-header{align-items:flex-start;flex-direction:column}.player-summary{width:100%;justify-content:space-between}.map-heading,.level-toolbar{align-items:flex-start;grid-template-columns:1fr}.map-heading{flex-direction:column}.region-progress{width:100%}.world-map{width:calc(100% - 1rem);min-height:38rem;aspect-ratio:9/14;background-position:center}.location-node{width:4.1rem}.node-label{min-width:7rem;font-size:.68rem}.level-toolbar{display:grid}.attempt-stats{justify-content:start}.level-stage{width:calc(100% - 1rem);border-width:.28rem}.scene{min-height:32rem}.level-hud{align-items:stretch;flex-direction:column}.slime-tray{justify-content:start;overflow-x:auto}.instruction{display:none}.bridge-deck{left:25%;width:50%}.rope{left:49%;top:13%;height:44%}.counterweight{right:7%}.cliff{width:28%}.result-actions{grid-template-columns:1fr}.player-summary>span{padding:.35rem .5rem}.icon-action{margin-left:auto}
}
@media(max-width:700px){
  .guest-save-notice{top:auto;right:.65rem;bottom:.65rem;width:calc(100% - 1.3rem);grid-template-columns:auto 1fr auto}
  .guest-save-notice>button:not(.notice-close){grid-column:2/-1}
  .account-action b{display:none}
  .workshop-link{order:5}
  .admin-label{display:none}
}

.canonical-map{background-color:#74c9dc;background-position:center;background-size:cover}.map-loading,.map-empty{position:absolute;inset:0;display:grid;place-content:center;gap:.35rem;padding:2rem;background:rgba(255,248,233,.82);text-align:center}.map-empty strong{font-size:1.35rem}.map-empty span{color:var(--muted);font-weight:750}.player-map-links{position:absolute;z-index:2;inset:0;width:100%;height:100%;pointer-events:none}.player-map-links path{fill:none;stroke:rgba(255,248,190,.9);stroke-width:7;stroke-linecap:round;filter:drop-shadow(0 .2rem .15rem rgba(13,39,49,.45))}.player-map-links marker path{fill:#fff8be;stroke:none}.destination-node{position:absolute;z-index:4;width:clamp(6.8rem,12vw,9.5rem);min-height:clamp(5.4rem,9vw,7rem);padding:.6rem;border:.28rem solid #fff3cf;border-radius:1.2rem;background:linear-gradient(#7ee367,#43ae52);box-shadow:0 .42rem 0 #2e7745,0 .8rem 1.5rem rgba(12,38,50,.32);translate:-50% -50%;cursor:pointer;transition:scale .15s,filter .15s}.destination-node:hover:not(:disabled){scale:1.06}.destination-node.complete{background:linear-gradient(#f8d567,#e7aa3e);box-shadow:0 .42rem 0 #a86e2d,0 .8rem 1.5rem rgba(12,38,50,.3)}.destination-node.locked{filter:grayscale(.75);background:#7c8990;box-shadow:0 .38rem 0 #4e5960,0 .7rem 1.2rem rgba(12,31,43,.25);cursor:default}.destination-node span,.destination-node strong,.destination-node small{display:block}.destination-node .destination-icon{font-size:1.35rem}.destination-node strong{margin:.15rem 0;font-size:clamp(.72rem,1.4vw,1rem)}.destination-node small{font-size:.58rem;font-weight:850}.destination-modal{position:fixed;z-index:480;inset:0;display:grid;place-items:center;padding:1rem}.destination-backdrop{position:absolute;inset:0;border:0;background:rgba(12,30,39,.62);backdrop-filter:blur(5px)}.destination-card{position:relative;width:min(36rem,100%);max-height:min(42rem,90vh);overflow:auto;padding:clamp(1.2rem,4vw,2rem);border:.25rem solid #fff4ce;border-radius:1.35rem;background:#fff8e9;box-shadow:0 2rem 6rem rgba(9,26,34,.4)}.destination-card h2{margin:.15rem 0;font-size:clamp(2.2rem,7vw,3.6rem);line-height:.95;letter-spacing:-.05em}.destination-card>p:not(.kicker){margin:.7rem 0 1.2rem;color:var(--muted);font-weight:750}.destination-close{position:absolute;right:.75rem;top:.75rem;width:2.3rem;aspect-ratio:1;border:0;border-radius:50%;background:#e8dfcf;font-size:1.3rem;cursor:pointer}.destination-levels{display:grid;gap:.6rem}.destination-levels article{display:grid;grid-template-columns:2.6rem 1fr auto;align-items:center;gap:.65rem;padding:.7rem;border:1px solid var(--line);border-radius:.75rem;background:#fff}.destination-levels article>span{display:grid;place-items:center;width:2.4rem;aspect-ratio:1;border-radius:50%;background:#dceee0;color:#287044;font-weight:950}.destination-levels article.complete>span{background:#f3d77d;color:#79551f}.destination-levels strong,.destination-levels small{display:block}.destination-levels strong{font-size:.85rem}.destination-levels small{margin-top:.15rem;color:var(--muted);font-size:.64rem;font-weight:750}.destination-levels button{min-height:2.45rem;padding:.35rem .7rem;border:0;border-radius:.6rem;background:var(--navy);color:#fff;font-size:.65rem;font-weight:900;cursor:pointer}
@media(max-width:600px){.canonical-map{min-height:37rem}.destination-node{width:6.7rem;min-height:5.1rem}.destination-levels article{grid-template-columns:2.4rem 1fr}.destination-levels button{grid-column:2}}

/* Dropworks: reusable element-flow puzzle prototype */
.flow-stage{overflow:hidden;border:.42rem solid var(--cream);border-radius:1.5rem;background:#c8ecf5;box-shadow:0 24px 70px rgba(17,39,55,.26)}
.flow-scene{position:relative;isolation:isolate;aspect-ratio:16/9;overflow:hidden;background-position:center;background-size:cover;touch-action:none}
.flow-vignette{position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(14,34,42,.12),transparent 20%,transparent 72%,rgba(12,31,37,.18));box-shadow:inset 0 0 5rem rgba(8,29,37,.25)}
.machine-links{position:absolute;z-index:3;inset:0;width:100%;height:100%;pointer-events:none}.machine-links path{fill:none;stroke:#66523b;stroke-width:6;stroke-dasharray:3 8;stroke-linecap:round;filter:drop-shadow(0 2px 1px rgba(13,31,37,.35))}.room-complete .machine-links path{stroke:#83df62}
.piece-layer,.game-piece-pixi-layer,.drop-layer,.particle-layer,.slime-layer{position:absolute;inset:0}.game-piece-pixi-layer{z-index:4;overflow:hidden;pointer-events:none}.piece-layer{z-index:5}.drop-layer{z-index:8;pointer-events:none}.particle-layer{z-index:15;pointer-events:none}.slime-layer{z-index:31;pointer-events:none}
.flow-piece{position:absolute;transform:translate(-50%,-50%) rotate(var(--piece-rotation));transform-origin:center;filter:drop-shadow(0 .45rem .4rem rgba(18,34,39,.28))}
.flow-piece>small{display:none;position:absolute;left:50%;top:105%;translate:-50% 0;padding:.12rem .24rem;border-radius:.22rem;background:#ff42c0;color:#fff;font-size:.4rem;font-weight:900;white-space:nowrap}.show-piece-debug .flow-piece>small{display:block}.show-piece-debug .flow-piece{outline:.12rem dashed #ff42c0;outline-offset:.15rem}
.piece-wall{border:.16rem solid #4f4d48;border-radius:.3rem;background:linear-gradient(#a99e8d 0 22%,#625e57 23%);box-shadow:inset 0 .2rem rgba(255,255,255,.3)}.piece-wall>i{position:absolute;inset:30% 4% 8%;background:repeating-linear-gradient(90deg,transparent 0 14%,rgba(29,35,35,.18) 15% 16%)}
.piece-water-source,.piece-fire-source{border:.18rem solid #314d4d;border-radius:44% 44% 25% 25%;background:linear-gradient(90deg,#406e6c,#87aba4 48%,#365d5b);box-shadow:inset .25rem .22rem rgba(255,255,255,.25)}
.piece-water-source>i,.piece-fire-source>i{position:absolute;inset:16% 24% 26%;border:.13rem solid rgba(255,255,255,.72);border-radius:50%;background:radial-gradient(circle at 35% 25%,#c9f8ff,#38c7ec 48%,#1887bd)}
.piece-fire-source>i{background:radial-gradient(circle at 48% 65%,#fff3a5,#ffb52d 35%,#f05b2e 68%,#7a3029 70%)}
.piece-water-source>b,.piece-fire-source>b,.piece-funnel>b,.piece-button>b,.piece-gate>b{position:absolute;left:50%;top:104%;translate:-50% 0;padding:.16rem .3rem;border-radius:.3rem;background:rgba(23,40,59,.88);color:#fff;font-size:clamp(.28rem,.55vw,.5rem);font-weight:950;white-space:nowrap}
.piece-water-source>em,.piece-fire-source>em{position:absolute;right:-12%;top:-13%;display:grid;place-items:center;width:30%;aspect-ratio:1;border:.1rem solid #fff;border-radius:50%;background:#2b9ac8;color:#fff;font-size:clamp(.42rem,1vw,.8rem);font-style:normal}.piece-fire-source>em{background:#ef6533}
.piece-water-source.occupied,.piece-fire-source.occupied{filter:drop-shadow(0 0 1rem rgba(255,241,145,.9)) brightness(1.12)}
.piece-funnel{clip-path:polygon(5% 5%,95% 5%,64% 58%,64% 100%,36% 100%,36% 58%);border:.18rem solid #435654;background:linear-gradient(90deg,#718a84,#c1d0c6 45%,#566f6b)}.piece-funnel>i{position:absolute;left:20%;top:14%;width:60%;height:12%;border-radius:50%;background:#293f40}.piece-funnel>b{top:94%}
.piece-straight-channel{border:.16rem solid #465956;border-radius:999px;background:linear-gradient(#91a9a2,#405f5a 45%,#263f3d);box-shadow:inset 0 .14rem rgba(255,255,255,.3)}.piece-straight-channel>i{position:absolute;left:5%;right:5%;top:35%;height:30%;border-radius:999px;background:#203838}
.piece-corner-channel{border:.7rem solid #536e68;border-left-color:transparent;border-top-color:transparent;border-radius:0 0 90% 0;box-shadow:inset -.14rem -.14rem rgba(255,255,255,.25)}.piece-corner-channel>i{position:absolute;inset:18%;border:.22rem solid #213d3b;border-left-color:transparent;border-top-color:transparent;border-radius:0 0 90% 0}
.piece-funnel.active,.piece-straight-channel.active,.piece-corner-channel.active{filter:drop-shadow(0 0 .8rem #61d9f2) brightness(1.15)}
.piece-wheel{border:.25rem solid #56432f;border-radius:50%;background:radial-gradient(circle,#d1ae61 0 13%,#405653 14% 24%,transparent 25%)}.piece-wheel>i{position:absolute;left:47%;top:5%;width:6%;height:90%;border-radius:999px;background:linear-gradient(90deg,#6b4a2d,#ca9650,#68432a);transform-origin:50% 50%}.piece-wheel>i:nth-child(2){rotate:45deg}.piece-wheel>i:nth-child(3){rotate:90deg}.piece-wheel>i:nth-child(4){rotate:135deg}.piece-wheel>i:nth-child(5){rotate:22.5deg}.piece-wheel>i:nth-child(6){rotate:67.5deg}.piece-wheel>i:nth-child(7){rotate:112.5deg}.piece-wheel>i:nth-child(8){rotate:157.5deg}.piece-wheel>b{position:absolute;inset:36%;border:.15rem solid #4b3a2c;border-radius:50%;background:#dfb95f}.piece-wheel.active{animation:drop-wheel-spin var(--wheel-speed,1s) linear infinite;filter:drop-shadow(0 0 .8rem #52d7ef)}@keyframes drop-wheel-spin{to{rotate:360deg}}
.piece-button{border:.18rem solid #4b4540;border-radius:50%;background:radial-gradient(circle,#e15b43 0 48%,#843b34 50% 65%,#414947 67%);transition:.2s}.piece-button>i{position:absolute;inset:30%;border-radius:50%;background:#ffb045}.piece-button.active{transform:translate(-50%,-50%) scale(.82);filter:drop-shadow(0 0 1rem #ff8b36) brightness(1.25)}.piece-button>b{top:112%}
.piece-gate{overflow:hidden;border:.22rem solid #2f4b49;border-radius:1.2rem 1.2rem .25rem .25rem;background:rgba(28,57,55,.32);box-shadow:inset .2rem .2rem rgba(255,255,255,.14)}.piece-gate>i{position:absolute;top:0;width:17%;height:100%;border-radius:.2rem;background:linear-gradient(90deg,#294b48,#4e7b74,#264440);transition:transform .75s cubic-bezier(.2,.8,.2,1)}.piece-gate>i:nth-child(1){left:6%}.piece-gate>i:nth-child(2){left:29%}.piece-gate>i:nth-child(3){left:54%}.piece-gate>i:nth-child(4){left:77%}.piece-gate>b{top:8%}.piece-gate.active>i{transform:translateY(-108%)}.piece-gate.active{filter:drop-shadow(0 0 .8rem #8bf083)}
.drop-stream{position:absolute;height:.8rem;transform:translateY(-50%) rotate(var(--stream-angle));transform-origin:0 50%;overflow:visible}.drop-stream i{--drop-index:0;position:absolute;left:0;top:50%;width:clamp(.38rem,.85vw,.72rem);aspect-ratio:.78;border-radius:58% 42% 62% 38% / 66% 42% 58% 34%;background:linear-gradient(145deg,#d7fbff,#42c7ec 45%,#1385bb);box-shadow:0 0 .35rem rgba(69,207,239,.65);translate:-50% -50%;rotate:45deg;animation:element-drop-flow 1.35s linear infinite;animation-delay:calc(var(--drop-index) * -.15s)}.drop-stream.fire i{background:radial-gradient(circle at 35% 30%,#fff5ab,#ffb52f 40%,#f05c2e 72%);box-shadow:0 0 .45rem #ff7135}.drop-stream i:nth-child(2){--drop-index:1}.drop-stream i:nth-child(3){--drop-index:2}.drop-stream i:nth-child(4){--drop-index:3}.drop-stream i:nth-child(5){--drop-index:4}.drop-stream i:nth-child(6){--drop-index:5}.drop-stream i:nth-child(7){--drop-index:6}.drop-stream i:nth-child(8){--drop-index:7}.drop-stream i:nth-child(9){--drop-index:8}.drop-stream.dissipates i{animation-name:element-drop-dissipate}@keyframes element-drop-flow{from{left:0;opacity:0}10%,85%{opacity:1}to{left:100%;opacity:0}}@keyframes element-drop-dissipate{from{left:0;opacity:1}to{left:100%;opacity:0;scale:.25}}
.physics-drop{position:absolute;width:clamp(.38rem,.85vw,.72rem);aspect-ratio:.78;translate:-50% -50%;border-radius:58% 42% 62% 38% / 66% 42% 58% 34%;background:linear-gradient(145deg,#d7fbff,#42c7ec 45%,#1385bb);box-shadow:0 0 .35rem rgba(69,207,239,.65);rotate:45deg}
.character-hit-target{position:absolute;z-index:2;width:6.8%;aspect-ratio:.92;padding:0;border:0;background:transparent;translate:-50% -62%;pointer-events:auto;cursor:grab;touch-action:none}.character-hit-target[data-state="attached"]{cursor:crosshair}.character-hit-target[data-state="stuck"]{cursor:not-allowed}.character-hit-target[hidden]{display:none}.character-hit-target.selected::after{content:"";position:absolute;inset:-14%;border:.12rem dashed rgba(255,246,182,.92);border-radius:50%;animation:selected-orbit 5s linear infinite}.character-hit-target.being-steered::after{border-color:#8cf2ff;box-shadow:0 0 1rem #8cf2ff}.character-hit-target .element-core{position:absolute;inset:14%;border-radius:50%;opacity:0;pointer-events:none}.character-hit-target .direction-arrow{position:absolute;z-index:3;left:43%;top:-29%;display:none;width:18%;height:55%;color:#fff;font-size:clamp(.65rem,1.5vw,1.2rem);font-style:normal;line-height:1;filter:drop-shadow(0 .1rem .12rem rgba(10,30,35,.55));transform-origin:50% 145%;transform:rotate(var(--slime-facing));transition:transform .18s;pointer-events:none}
.level-task{position:absolute;z-index:24;left:1.5%;top:2.5%;display:grid;gap:.08rem;padding:.55rem .7rem;border:.12rem solid rgba(255,255,255,.55);border-radius:.75rem;background:rgba(23,40,59,.88);color:#fff;box-shadow:0 .5rem 1rem rgba(13,31,38,.22);pointer-events:none}.level-task span{color:#ffd35b;font-size:clamp(.35rem,.58vw,.52rem);font-weight:950;letter-spacing:.14em}.level-task strong{font-size:clamp(.55rem,.95vw,.84rem)}.level-task small{font-size:clamp(.36rem,.58vw,.52rem);font-weight:800;line-height:1.45;opacity:.82}.flow-message{position:absolute;z-index:27;left:50%;bottom:2.5%;translate:-50% .5rem;max-width:min(36rem,80%);padding:.55rem .85rem;border-radius:999px;background:rgba(23,40,59,.93);color:#fff;font-size:clamp(.48rem,.78vw,.7rem);font-weight:900;text-align:center;opacity:0;transition:.2s;pointer-events:none}.flow-message.show{opacity:1;translate:-50% 0}
.flow-console{display:flex;align-items:center;gap:.65rem;min-height:7rem;padding:.7rem 1rem;background:rgba(255,248,233,.98);box-shadow:0 -8px 25px rgba(16,38,47,.12)}.slime-picker{display:flex;align-items:center;gap:.45rem}.slime-picker>span{max-width:4.2rem;color:var(--muted);font-size:.48rem;font-weight:950;letter-spacing:.1em}.slime-picker>button{position:relative;display:grid;grid-template-columns:2.7rem 1fr;align-items:center;gap:.35rem;min-width:10.8rem;padding:.4rem .5rem;border:.15rem solid transparent;border-radius:.8rem;background:#e7dfd2;cursor:pointer}.slime-picker>button.selected{border-color:#328567;background:#e1f0dc}.slime-picker>button>span{text-align:left}.slime-picker strong,.slime-picker small{display:block}.slime-picker strong{font-size:.67rem}.slime-picker small{color:var(--muted);font-size:.48rem}.slime-picker>button>b{position:absolute;right:.35rem;top:.25rem;color:#397b62;font-size:.36rem;letter-spacing:.08em}
.selected-controls{display:flex;align-items:center;gap:.35rem;margin-left:auto;padding:.35rem;border:1px solid var(--line);border-radius:.8rem;background:#f0e9dd}.selected-controls>div{min-width:8rem;padding:0 .35rem}.selected-controls small,.selected-controls strong,.selected-controls span{display:block}.selected-controls small{color:var(--muted);font-size:.38rem;font-weight:950;letter-spacing:.11em}.selected-controls strong{font-size:.68rem}.selected-controls span{color:var(--muted);font-size:.48rem;font-weight:750}.selected-controls button,.flow-console>.room-restart,.flow-console>.debug-button{min-height:2.6rem;padding:.4rem .58rem;border:1px solid var(--line);border-radius:.6rem;background:#fff;font-size:.58rem;font-weight:900;cursor:pointer}.selected-controls button:disabled{opacity:.36;cursor:not-allowed}.selected-controls button[data-remove]{color:#a54438}.selected-controls button[data-rotate]{background:#fff4c9;color:#6c5523}
.mouse-aim-hint{display:grid;gap:.08rem;max-width:12rem;padding:.42rem .62rem;border:.12rem solid #8cccd7;border-radius:.72rem;background:#e2f7f8}.mouse-aim-hint b{color:#23758a;font-size:.4rem;letter-spacing:.1em}.mouse-aim-hint span{color:#345b63;font-size:.5rem;font-weight:800}.steering-stream .mouse-aim-hint{background:#fff1ad;border-color:#e2bd44}
.flow-success{position:absolute;z-index:55;inset:0;display:grid;place-items:center;padding:1rem;background:rgba(12,30,39,.56);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:.35s}.room-complete .flow-success{opacity:1;pointer-events:auto}.flow-success>div{width:min(28rem,90%);padding:1.3rem;border:.25rem solid #fff4ce;border-radius:1.2rem;background:#fff8e9;box-shadow:0 1.4rem 4rem rgba(9,26,34,.38);text-align:center}.flow-success span{color:#f1b942;font-size:2.2rem}.flow-success h2{margin:.25rem 0;font-size:2rem}.flow-success p{color:var(--muted);font-weight:750}.flow-success button{min-height:2.7rem;padding:.4rem .8rem;border:0;border-radius:.65rem;background:linear-gradient(#7be261,#4db64d);font-weight:900;cursor:pointer}
@media(max-width:900px){.flow-console{align-items:stretch;flex-wrap:wrap}.slime-picker{order:-2;width:100%}.slime-picker>button{flex:1}.selected-controls{order:-1;width:100%;margin:0}.selected-controls>div{margin-right:auto}.flow-console>.room-restart,.flow-console>.debug-button{flex:1}.character-hit-target{width:8%}}
@media(max-width:600px){.flow-scene{aspect-ratio:16/10}.character-hit-target{width:10%}.slime-picker>span{display:none}.slime-picker>button{min-width:0;grid-template-columns:2.2rem 1fr;padding:.3rem}.slime-picker small{display:none}.selected-controls>div{display:none}.selected-controls button{flex:1;padding:.3rem;font-size:.48rem}.level-task small{display:none}.flow-message{bottom:1.5%;font-size:.48rem}}
.hardening .mouse-aim-hint{background:#dff1b5;border-color:#7dac42}.hardening .mouse-aim-hint b{color:#395f22}.flow-level-tabs{display:flex;gap:.4rem;padding:.55rem .8rem 0;background:#fff8e9}.flow-level-tabs button{padding:.45rem .7rem;border:1px solid var(--line);border-radius:.65rem .65rem 0 0;background:#e9e1d5;color:var(--muted);font-size:.58rem;font-weight:900;cursor:pointer}.flow-level-tabs button.selected{background:#fff;color:var(--navy);border-bottom-color:#fff}
.flow-edit-level{margin-left:auto;align-self:center;padding:.35rem .65rem;color:#36555b;font-size:.62rem;font-weight:900;text-decoration:none}.flow-edit-level:hover{text-decoration:underline}

/* Full-screen puzzle shell */
body:has(#prototype-screen.active){overflow:hidden;background:#101d24}
body:has(#prototype-screen.active) .game-header{display:none}
#prototype-screen.active{position:fixed;z-index:150;inset:0;overflow:hidden;background:#101d24}
#prototype-screen.active .prototype-heading{display:none}
#prototype-screen.active #boiler-prototype-root{width:100%;height:100%;margin:0}
#prototype-screen.active #boiler-prototype-root .flow-stage{width:100%;height:100%;overflow:hidden;border:0;border-radius:0;box-shadow:none}
#prototype-screen.active #boiler-prototype-root .flow-scene{width:100%;height:100%;aspect-ratio:auto;background-size:cover;background-position:center}
.game-menu-toggle{position:absolute;z-index:46;right:clamp(.75rem,2vw,1.4rem);top:clamp(.75rem,2vw,1.4rem);display:grid;align-content:center;gap:.22rem;width:3rem;aspect-ratio:1;padding:.72rem;border:1px solid rgba(255,255,255,.5);border-radius:50%;background:rgba(23,40,59,.88);box-shadow:0 .45rem 1.2rem rgba(7,23,31,.3);backdrop-filter:blur(12px);cursor:pointer}
.game-clock{position:absolute;z-index:46;right:clamp(4.15rem,calc(2vw + 3.4rem),4.8rem);top:clamp(.75rem,2vw,1.4rem);min-width:5.2rem;height:3rem;display:grid;align-content:center;padding:.35rem .8rem;border:1px solid rgba(255,255,255,.5);border-radius:999px;background:rgba(23,40,59,.88);color:#fff;box-shadow:0 .45rem 1.2rem rgba(7,23,31,.3);backdrop-filter:blur(12px);font-variant-numeric:tabular-nums;transition:opacity .2s}.game-clock span{color:rgba(255,255,255,.62);font-size:.48rem;font-weight:950;letter-spacing:.12em;text-transform:uppercase;line-height:1}.game-clock b{font-size:.82rem;line-height:1.15}.game-menu-open>.flow-stage .game-clock{opacity:0;pointer-events:none}
.element-power-hud{position:absolute;z-index:46;left:50%;bottom:clamp(.8rem,2vw,1.35rem);display:grid;gap:.08rem;min-width:min(22rem,calc(100% - 2rem));padding:.58rem 1rem;border:.12rem solid rgba(255,255,255,.62);border-radius:999px;background:rgba(20,91,109,.92);color:#fff;box-shadow:0 .55rem 1.5rem rgba(7,28,36,.3);text-align:center;pointer-events:none;opacity:0;translate:-50% .8rem;transition:opacity .2s,translate .2s;backdrop-filter:blur(12px)}.element-power-hud.active{opacity:1;translate:-50% 0}.element-power-hud small{color:#91f2ff;font-size:.44rem;font-weight:950;letter-spacing:.14em}.element-power-hud strong{font-size:.72rem;text-transform:capitalize}.element-power-hud span{font-size:.5rem;font-weight:800;opacity:.8}.steering-stream .element-power-hud{border-color:#ffe274;background:rgba(36,76,83,.95);box-shadow:0 0 1.6rem rgba(86,224,244,.45)}.steering-stream .element-power-hud small{color:#ffe274}.game-menu-open .element-power-hud{opacity:0}
.game-menu-toggle i{display:block;height:.14rem;border-radius:999px;background:#fff}
.game-menu-open>.flow-stage .game-menu-toggle{opacity:0;pointer-events:none}
.game-menu-panel{position:absolute;z-index:45;right:0;top:0;width:min(24rem,100%);height:100%;display:flex;flex-direction:column;gap:.8rem;padding:clamp(1rem,3vw,1.5rem);overflow:auto;background:rgba(255,248,233,.97);box-shadow:-1rem 0 3rem rgba(6,24,31,.34);backdrop-filter:blur(18px);translate:105% 0;transition:translate .28s cubic-bezier(.2,.8,.2,1)}
.game-menu-open .game-menu-panel{translate:0}
.game-menu-heading{position:relative;display:grid;padding-right:3rem}.game-menu-heading>span,.menu-objective>small,.menu-levels>small{color:#28714b;font-size:.58rem;font-weight:950;letter-spacing:.12em}.game-menu-heading>strong{font-size:1.5rem;line-height:1.1}.game-menu-heading>button{position:absolute;right:0;top:0;width:2.5rem;aspect-ratio:1;border:0;border-radius:50%;background:#e8dfd1;font-size:1.4rem;cursor:pointer}
.menu-objective{padding:1rem;border:1px solid var(--line);border-radius:1rem;background:#fff}.menu-objective h2{margin:.28rem 0 .35rem;font-size:1.2rem}.menu-objective p{margin:0;color:var(--muted);font-size:.72rem;font-weight:750;line-height:1.45}.game-menu-panel .selected-controls{width:100%;margin:0}.game-menu-panel .selected-controls>div{margin-right:auto}.game-menu-panel .mouse-aim-hint{max-width:none}.menu-levels{display:grid;gap:.35rem}.menu-levels button{padding:.65rem .75rem;border:1px solid var(--line);border-radius:.65rem;background:#eee6d9;text-align:left;font-size:.68rem;font-weight:900;cursor:pointer}.menu-levels button.selected{border-color:#328567;background:#e1f0dc;color:#245c44}.game-menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:.45rem;margin-top:auto}.game-menu-actions button,.game-menu-actions a{display:grid;place-items:center;min-height:2.7rem;padding:.45rem;border:1px solid var(--line);border-radius:.68rem;background:#fff;color:var(--navy);font-size:.64rem;font-weight:900;text-align:center;text-decoration:none;cursor:pointer}.game-menu-actions .room-restart{background:#fff0c8}.game-menu-actions .debug-button{background:#e8e1d6}
.level-intro{position:absolute;z-index:42;left:50%;top:50%;display:grid;gap:.18rem;width:min(32rem,calc(100% - 2rem));padding:1.15rem 1.4rem;border:.15rem solid rgba(255,255,255,.65);border-radius:1.1rem;background:rgba(23,40,59,.9);color:#fff;box-shadow:0 1rem 3rem rgba(7,24,32,.36);text-align:center;pointer-events:none;translate:-50% -50%;animation:level-objective-intro 4.2s ease forwards}.level-intro span{color:#ffd35b;font-size:.62rem;font-weight:950;letter-spacing:.16em}.level-intro strong{font-size:clamp(1.4rem,4vw,2.5rem)}.level-intro small{font-size:clamp(.65rem,1.5vw,.85rem);font-weight:800;line-height:1.45;opacity:.86}@keyframes level-objective-intro{0%,15%{opacity:0;transform:translateY(.8rem) scale(.96)}25%,72%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-.5rem) scale(.98);visibility:hidden}}
@media(max-width:700px){.game-menu-panel{width:100%}.game-menu-actions{grid-template-columns:1fr}.level-intro{padding:.9rem}.flow-message{bottom:4.7rem}.game-menu-panel .selected-controls{display:grid;grid-template-columns:1fr 1fr}.game-menu-panel .selected-controls>div{grid-column:1/-1}}

/* Landing-page design language */
:root{--ink:#151c18;--paper:#fbfaf5;--landing-cream:#f4f1e8;--slime:#b9f527;--slime-deep:#72bc16;--lilac:#c9b7ff;--sky:#7ed8ff;--orange:#ff9e5d;--modern-line:rgba(21,28,24,.18);--display:"Manrope","Arial Rounded MT Bold",system-ui,sans-serif;--body-font:"DM Sans",system-ui,sans-serif;color-scheme:light}
html{background:var(--ink)}body{color:var(--ink);background:var(--paper);font-family:var(--body-font);-webkit-font-smoothing:antialiased}.adventure-app{background:var(--paper)}button,input,textarea{font-family:inherit}
.game-header{position:sticky;top:0;min-height:4.7rem;padding:.85rem clamp(1rem,3.2vw,3.75rem);border-bottom:1px solid var(--modern-line);background:rgba(251,250,245,.94);box-shadow:none;backdrop-filter:blur(18px)}.game-brand{gap:.65rem;color:var(--ink);font-family:var(--display);font-size:clamp(1.2rem,2vw,1.55rem);font-weight:800;letter-spacing:-.05em}.goo-mark{width:2rem;height:1.65rem;aspect-ratio:auto;border:0;border-radius:52% 49% 44% 46%;rotate:-4deg;background:var(--slime);box-shadow:inset -.2rem -.25rem 0 rgba(0,0,0,.11)}.goo-mark::after{content:"";position:absolute;inset:1.05rem .42rem auto;height:.23rem;border-radius:50%;background:#163313}.goo-mark i{top:.55rem;width:.28rem;height:.38rem;background:#163313;box-shadow:none}.goo-mark i:first-child{left:.53rem}.goo-mark i:last-child{right:.53rem}
.player-summary{gap:.35rem;font-size:.76rem;font-weight:600}.player-summary>span,.icon-action,.back-action,.workshop-link,.account-action{min-height:2.7rem;padding:.55rem .82rem;border:1px solid var(--modern-line);border-radius:999px;background:transparent;box-shadow:none}.icon-action,.back-action{font-weight:700}.icon-action:hover,.back-action:hover{background:#eeece4}.prototype-nav{color:rgba(21,28,24,.58)}.player-summary>span{background:#fff}.workshop-link{border-color:var(--ink);background:var(--ink);color:#fff;font-weight:700}.admin-label{background:var(--slime);color:var(--ink);font-size:.5rem}.account-action{gap:.5rem;background:#fff}.account-action span{font-size:.7rem;font-weight:700}.account-action b{color:#5b675e;font-size:.56rem;font-weight:600}body.is-admin .account-action{box-shadow:inset 0 0 0 1px var(--slime-deep)}
#map-screen{min-height:calc(100vh - 4.7rem);padding:clamp(2.8rem,6vw,6rem) 0 2.5rem;background:var(--paper)}.map-heading{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(15rem,.55fr);align-items:end;width:min(1320px,100%);padding:0 clamp(1.25rem,4vw,3.5rem) clamp(2rem,4vw,3.5rem)}.kicker{margin:0 0 .85rem;color:#657166;font-size:.68rem;font-weight:700;letter-spacing:.15em}.map-heading h1,.level-toolbar h1{max-width:12ch;color:var(--ink);font-family:var(--display);font-size:clamp(3.4rem,8vw,7.5rem);font-weight:700;line-height:.91;letter-spacing:-.075em}.map-heading p:not(.kicker),.level-toolbar p:not(.kicker){max-width:36rem;margin:1.2rem 0 0;color:#59645c;font-size:clamp(.95rem,1.5vw,1.12rem);font-weight:500;line-height:1.55}.region-progress{align-self:end;min-width:0;gap:.65rem;padding-bottom:.35rem}.region-progress-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em}.progress-track{height:.42rem;background:#e2e1da;box-shadow:none}.progress-track i{background:var(--slime);transition:width .45s cubic-bezier(.2,.8,.2,1)}
.world-map{width:min(1400px,calc(100% - clamp(2rem,6vw,7rem)));min-height:38rem;margin:0 auto;border:0;border-radius:clamp(1.25rem,2.5vw,2rem);box-shadow:0 1.5rem 4rem rgba(21,28,24,.16);background-color:#7ed8ff}.world-map::after{background:linear-gradient(180deg,rgba(8,21,18,.02),rgba(8,21,18,.2))}.player-map-links path{stroke:rgba(251,250,245,.94);stroke-width:6;filter:drop-shadow(0 2px 4px rgba(21,28,24,.32))}.player-map-links marker path{fill:var(--paper)}
.destination-node{width:clamp(7.4rem,12vw,10.5rem);min-height:clamp(5rem,8vw,6.5rem);padding:.75rem;border:1px solid rgba(21,28,24,.2);border-radius:1.1rem;background:var(--slime);box-shadow:0 .7rem 1.7rem rgba(21,28,24,.2);color:var(--ink);transition:transform .2s,background .2s,box-shadow .2s;translate:-50% -50%}.destination-node:hover:not(:disabled){scale:1;transform:translateY(-4px);background:#c8ff3f;box-shadow:0 1rem 2.2rem rgba(21,28,24,.24)}.destination-node.complete{background:#fff;border-color:rgba(21,28,24,.2);box-shadow:0 .7rem 1.7rem rgba(21,28,24,.18)}.destination-node.locked{filter:none;background:rgba(21,28,24,.78);border-color:rgba(255,255,255,.3);box-shadow:0 .7rem 1.7rem rgba(21,28,24,.24);color:#fff}.destination-node .destination-icon{font-size:1rem}.destination-node strong{margin:.3rem 0 .18rem;font-family:var(--display);font-size:clamp(.75rem,1.3vw,.98rem);letter-spacing:-.035em}.destination-node small{color:inherit;font-size:.56rem;font-weight:600;opacity:.68}.map-legend{width:min(1320px,100%);justify-content:flex-start;gap:1.25rem;margin:1.25rem auto 0;padding:0 clamp(1.25rem,4vw,3.5rem);color:#657166;font-size:.7rem;font-weight:600}.legend-dot{width:.6rem;height:.6rem;background:var(--slime)}.legend-dot.complete{border:1px solid var(--ink);background:#fff}.legend-dot.locked{background:var(--ink)}
.map-loading,.map-empty{background:rgba(251,250,245,.9)}.map-empty strong{font-family:var(--display);font-size:1.5rem}.map-empty span{color:#657166;font-weight:500}
.guest-save-notice{right:clamp(1rem,3vw,2rem);top:5.55rem;grid-template-columns:auto 1fr auto auto;gap:.8rem;width:min(37rem,calc(100% - 2rem));padding:.8rem .9rem;border:1px solid rgba(255,255,255,.15);border-radius:1rem;background:rgba(21,28,24,.94);box-shadow:0 1rem 3rem rgba(21,28,24,.22);color:#fff;backdrop-filter:blur(18px)}.guest-save-notice>span{width:2.1rem;background:var(--slime);color:var(--ink)}.guest-save-notice strong{font-size:.75rem;font-weight:700}.guest-save-notice small{color:rgba(255,255,255,.62);font-size:.62rem;font-weight:500}.guest-save-notice button{min-height:2.35rem;padding:.45rem .75rem;border-radius:999px;background:var(--slime);color:var(--ink);font-size:.62rem;font-weight:700}.guest-save-notice .notice-close{background:transparent;color:rgba(255,255,255,.6)}
.destination-backdrop,.account-backdrop{background:rgba(21,28,24,.66);backdrop-filter:blur(9px)}.destination-card,.account-card{width:min(39rem,100%);padding:clamp(1.5rem,4vw,2.6rem);border:0;border-radius:1.5rem;background:var(--paper);box-shadow:0 2rem 6rem rgba(8,16,12,.34)}.destination-card h2,.account-card h2{max-width:11ch;margin:.2rem 0;font-family:var(--display);font-size:clamp(2.5rem,7vw,4.4rem);font-weight:700;line-height:.94;letter-spacing:-.07em}.destination-card>p:not(.kicker),.account-intro{margin:1rem 0 1.4rem;color:#59645c;font-size:.9rem;font-weight:500;line-height:1.55}.destination-close,.account-close{right:1rem;top:1rem;width:2.5rem;background:#eeece4;color:var(--ink)}.destination-levels{gap:.55rem}.destination-levels article{grid-template-columns:2.5rem 1fr auto;gap:.8rem;padding:.8rem .85rem;border:1px solid var(--modern-line);border-radius:1rem;background:#fff}.destination-levels article>span{width:2.3rem;background:#edf6d3;color:var(--ink)}.destination-levels article.complete>span{background:var(--slime);color:var(--ink)}.destination-levels strong{font-family:var(--display);font-size:.84rem;letter-spacing:-.02em}.destination-levels small{color:#657166;font-weight:500}.destination-levels button{min-height:2.5rem;padding:.45rem .85rem;border-radius:999px;background:var(--ink);font-size:.65rem;font-weight:700}.destination-levels button:hover{background:#303a33}
.auth-tabs{gap:0;margin-bottom:1rem;padding:.25rem;border-radius:999px;background:#eeece4}.auth-tabs button{min-height:2.55rem;border-radius:999px;font-weight:700}.auth-tabs button.active{box-shadow:none}.adventure-auth-form{gap:.85rem}.adventure-auth-form label{gap:.4rem;color:#59645c;font-size:.67rem;font-weight:700}.adventure-auth-form input{min-height:3.15rem;padding:.65rem .9rem;border:1px solid var(--modern-line);border-radius:.8rem;background:#fff}.adventure-auth-form input:focus{border-color:var(--ink);outline:3px solid rgba(185,245,39,.35)}.adventure-auth-form .primary-action{min-height:3.35rem;border-radius:999px;background:var(--slime);font-weight:700}.cloud-save-confirmation{border-radius:.8rem;background:#edf6d3;color:#3c5c25}.signed-in-actions button{min-height:3rem;border-radius:999px;background:#eeece4;font-weight:700}.signed-in-actions button:first-child{background:var(--ink)}
body:has(#prototype-screen.active){background:var(--ink)}#prototype-screen.active{background:var(--ink)}.game-menu-toggle{width:3.1rem;border:1px solid rgba(255,255,255,.26);background:rgba(21,28,24,.88);box-shadow:0 .55rem 1.6rem rgba(8,16,12,.28)}.game-clock{height:3.1rem;border:1px solid rgba(255,255,255,.26);background:rgba(21,28,24,.88);box-shadow:0 .55rem 1.6rem rgba(8,16,12,.28);font-family:var(--body-font)}.game-clock span{font-weight:600}.game-clock b{font-weight:700}.game-menu-panel{width:min(25rem,100%);gap:1rem;padding:clamp(1.25rem,3vw,1.8rem);background:rgba(251,250,245,.97);box-shadow:-1.5rem 0 4rem rgba(8,16,12,.28)}.game-menu-heading>span,.menu-objective>small{color:#657166;font-weight:700}.game-menu-heading>strong{font-family:var(--display);font-size:1.7rem;letter-spacing:-.05em}.game-menu-heading>button{background:#eeece4}.menu-objective{padding:1.1rem;border:1px solid var(--modern-line);border-radius:1rem;background:#fff}.menu-objective h2{font-family:var(--display);letter-spacing:-.04em}.menu-objective p{color:#657166;font-weight:500}.game-menu-actions button,.game-menu-actions a{min-height:2.9rem;border:1px solid var(--modern-line);border-radius:999px;background:#fff;font-weight:700}.game-menu-actions .room-restart{border-color:var(--slime-deep);background:var(--slime)}.game-menu-actions .debug-button{background:#eeece4}.level-intro{gap:.35rem;width:min(35rem,calc(100% - 2rem));padding:1.4rem 1.7rem;border:1px solid rgba(255,255,255,.24);border-radius:1.25rem;background:rgba(21,28,24,.9);box-shadow:0 1.4rem 4rem rgba(8,16,12,.34)}.level-intro span{color:var(--slime);font-weight:700}.level-intro strong{font-family:var(--display);font-size:clamp(1.7rem,4vw,3rem);letter-spacing:-.055em}.level-intro small{font-weight:500;line-height:1.55}.flow-success{background:rgba(21,28,24,.58);backdrop-filter:blur(8px)}.flow-success>div,.success-overlay>div{padding:1.7rem;border:0;border-radius:1.5rem;background:var(--paper);box-shadow:0 2rem 6rem rgba(8,16,12,.36)}.flow-success h2,.success-overlay h2{font-family:var(--display);font-size:2.4rem;letter-spacing:-.055em}.flow-success p,.success-overlay p{color:#657166;font-weight:500}.flow-success button,.success-overlay button{min-height:2.8rem;border-radius:999px;background:var(--slime);font-weight:700}.prototype-debug{border:1px solid var(--modern-line);border-radius:1.2rem;background:rgba(251,250,245,.98)}
@media(max-width:760px){.game-header{min-height:auto;padding:.75rem 1rem}.game-brand{font-size:1.2rem}.player-summary{overflow-x:auto;justify-content:flex-start;padding-bottom:.15rem}.player-summary>*{flex:0 0 auto}.player-summary>span{order:3}.prototype-nav{display:none}.workshop-link{font-size:0}.workshop-link .admin-label{font-size:.5rem}.map-heading{grid-template-columns:1fr;padding:0 1.15rem 1.7rem}.map-heading h1{font-size:clamp(3.2rem,14vw,5.5rem)}.region-progress{margin-top:.8rem}.world-map{width:calc(100% - 1rem);min-height:38rem;border-radius:1.25rem}.map-legend{padding-inline:1rem}.guest-save-notice{top:auto;right:.65rem;bottom:.65rem}.destination-card,.account-card{border-radius:1.25rem}.destination-levels article{grid-template-columns:2.4rem 1fr}.destination-levels button{grid-column:2}.game-menu-panel{width:100%}}
@media(prefers-reduced-motion:reduce){.destination-node,.progress-track i{transition-duration:.01ms!important}.level-intro{animation-duration:.01ms!important}}

/* Reusable level runtime */
.runtime-scene{aspect-ratio:16/9;min-height:0;background-position:center;background-size:100% 100%;background-repeat:no-repeat;touch-action:none;isolation:isolate}
.runtime-scene::before,.runtime-scene::after{display:none}
.runtime-scene .world-object{position:absolute;z-index:8}
.runtime-scene .bridge-rig{transform:translate(-50%,-50%) rotate(-77deg)}
.runtime-scene .bridge-rig[data-state="lowered"]{transform:translate(-50%,-50%) rotate(0deg)}
.runtime-scene .hanging-weight{transform:translate(-50%,-50%)}
.runtime-scene .hanging-weight[data-state="dropped"]{transform:translate(-50%,150%) rotate(22deg);opacity:.8}
.target-glow{animation:object-glow 1s ease-in-out infinite alternate}
.target-glow.actor-near{filter:brightness(1.28);box-shadow:0 0 0 .7rem rgba(255,199,66,.38),0 0 2rem #ff923f}
@keyframes object-glow{to{filter:brightness(1.12);box-shadow:0 0 0 .32rem rgba(255,215,97,.25),0 0 1rem rgba(255,174,60,.35)}}
.tutorial-coach{position:absolute;z-index:25;left:2%;bottom:3%;display:grid;gap:.28rem;width:min(15rem,30%);padding:.65rem;border:.15rem solid rgba(255,255,255,.65);border-radius:.85rem;background:rgba(255,248,233,.93);box-shadow:0 .7rem 1.5rem rgba(17,38,46,.2);transition:.35s}
.tutorial-coach b{color:#28714b;font-size:clamp(.45rem,.7vw,.62rem);letter-spacing:.12em}.tutorial-coach span{display:flex;align-items:center;gap:.38rem;font-size:clamp(.48rem,.85vw,.72rem);font-weight:850}.tutorial-coach i{display:grid;place-items:center;flex:0 0 auto;width:1.15rem;aspect-ratio:1;border-radius:50%;background:var(--navy);color:#fff;font-size:.52rem;font-style:normal}.runtime-scene.tutorial-seen .tutorial-coach{opacity:0;transform:translateY(1rem);pointer-events:none}
.level-actor{position:absolute;z-index:14;width:clamp(4rem,11%,9rem);aspect-ratio:1.1;padding:0;border:0;background:transparent;cursor:grab;touch-action:none;transform:translate(-50%,-64%) rotate(var(--actor-rotation,0deg)) scaleX(calc(1 + var(--actor-stretch,0)*.22)) scaleY(calc(1 - var(--actor-stretch,0)*.14));transform-origin:50% 70%;filter:drop-shadow(0 .65rem .5rem rgba(14,38,42,.4));transition:filter .15s}.level-actor img{width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}.level-actor.dragging{cursor:grabbing;filter:drop-shadow(0 .85rem .6rem rgba(14,38,42,.45)) brightness(1.05)}.level-actor.flying{transition:none}.level-actor.missed{animation:actor-miss .42s ease}.level-actor.casting{animation:actor-cast .5s ease-in-out infinite alternate}.actor-fire{width:clamp(4rem,10%,8rem)}
@keyframes actor-miss{50%{filter:grayscale(.4);transform:translate(-50%,-64%) rotate(-12deg) scale(.86)}}@keyframes actor-cast{to{filter:drop-shadow(0 0 1rem #ff7b35) brightness(1.2);transform:translate(-50%,-68%) scale(1.06)}}
.flight-ingredient{position:absolute;z-index:12;width:clamp(1.7rem,4.2%,3.2rem);aspect-ratio:1;display:grid;place-items:center;border:.16rem solid #fff5cc;border-radius:50%;background:radial-gradient(circle at 30% 20%,#fff,#ffd95e 22%,#e79d27 70%);box-shadow:0 .4rem 1rem rgba(15,38,48,.24);font-size:clamp(.72rem,1.6vw,1.25rem);translate:-50% -50%;animation:flight-float 1.1s ease-in-out infinite alternate;pointer-events:none}.flight-ingredient::after{content:"";position:absolute;inset:-35%;border:.12rem dashed rgba(255,246,194,.72);border-radius:50%;animation:ingredient-orbit 4s linear infinite}.flight-ingredient.collected{animation:ingredient-pop .38s ease-out forwards}.flight-ingredient:nth-of-type(2n){animation-delay:-.45s}@keyframes flight-float{to{transform:translateY(-.4rem)}}@keyframes ingredient-orbit{to{rotate:360deg}}@keyframes ingredient-pop{60%{opacity:1;transform:scale(1.6)}100%{opacity:0;transform:scale(.2)}}
.runtime-scene .trajectory{z-index:11}.runtime-scene .trajectory i{background:#fff;border:.13rem solid rgba(24,58,62,.35);box-shadow:0 .12rem .3rem rgba(13,32,38,.3)}
.effect-particles{position:absolute;z-index:19;left:68%;top:48%;pointer-events:none}.effect-particles i{position:absolute;width:.7rem;height:.22rem;border-radius:999px;background:#ffd24b;opacity:0}.effect-impact .effect-particles i,.effect-ring .effect-particles i,.effect-ignite .effect-particles i{animation:runtime-burst .75s ease-out both}.effect-particles i:nth-child(1){--r:0deg}.effect-particles i:nth-child(2){--r:30deg}.effect-particles i:nth-child(3){--r:60deg}.effect-particles i:nth-child(4){--r:90deg}.effect-particles i:nth-child(5){--r:120deg}.effect-particles i:nth-child(6){--r:150deg}.effect-particles i:nth-child(7){--r:180deg}.effect-particles i:nth-child(8){--r:210deg}.effect-particles i:nth-child(9){--r:240deg}.effect-particles i:nth-child(10){--r:270deg}.effect-particles i:nth-child(11){--r:300deg}.effect-particles i:nth-child(12){--r:330deg}@keyframes runtime-burst{0%{opacity:1;transform:rotate(var(--r)) translateX(0)}100%{opacity:0;transform:rotate(var(--r)) translateX(4rem) scaleX(1.8)}}
.scene-shake{animation:scene-shake .08s linear 5}@keyframes scene-shake{25%{transform:translate(.3rem,-.15rem)}75%{transform:translate(-.25rem,.12rem)}}

.bell-target{width:8%;aspect-ratio:.8;translate:-50% -50%;border:0;background:transparent;cursor:crosshair}.bell-target::before{content:"";position:absolute;left:14%;top:0;width:72%;height:78%;border:.2rem solid #76501e;border-radius:48% 48% 35% 35%;background:radial-gradient(circle at 34% 22%,#fff0a4,#e4a52f 30%,#8a4f19 80%);box-shadow:inset -.4rem -.3rem rgba(80,43,14,.2),0 .45rem .7rem rgba(28,39,39,.3)}.bell-target::after{content:"";position:absolute;left:40%;bottom:5%;width:22%;aspect-ratio:1;border-radius:50%;background:#55351d}.bell-target.ring{animation:bell-ring .13s ease-in-out 7 alternate}@keyframes bell-ring{to{rotate:11deg}}
.gate-effect{width:17%;height:25%;translate:-50% -50%;perspective:400px;pointer-events:none}.gate-effect i{position:absolute;top:0;width:50%;height:100%;border:.15rem solid #50321d;background:repeating-linear-gradient(90deg,#91602e 0 16%,#5e391f 17% 20%);transition:transform .85s ease,opacity .3s}.gate-effect i:first-child{left:0;transform-origin:0 50%}.gate-effect i:last-child{right:0;transform-origin:100% 50%}.gate-effect[data-state="open"] i:first-child{transform:rotateY(-82deg)}.gate-effect[data-state="open"] i:last-child{transform:rotateY(82deg)}
.vine-target{width:29%;height:43%;translate:-50% -50%;border:0;background:transparent;cursor:crosshair}.vine-target i{position:absolute;width:12%;height:105%;border-radius:999px;background:linear-gradient(90deg,#236531,#55a64a,#1f6030);box-shadow:inset .2rem 0 rgba(255,255,255,.18),0 .2rem .4rem rgba(22,48,35,.3)}.vine-target i:nth-child(1){left:18%;top:0;rotate:-22deg}.vine-target i:nth-child(2){left:42%;top:-5%;rotate:16deg}.vine-target i:nth-child(3){left:65%;top:4%;rotate:-11deg}.vine-target i:nth-child(4){left:80%;top:-2%;rotate:25deg}.vine-target i::after{content:"🍃";position:absolute;left:-70%;top:35%;font-size:clamp(.7rem,2vw,1.5rem)}.vine-target span{position:absolute;left:42%;top:40%;display:grid;place-items:center;width:22%;aspect-ratio:1;border-radius:50%;background:rgba(23,40,59,.8);font-size:clamp(.8rem,2.4vw,1.8rem)}.vine-target.ignite i{animation:vine-burn .32s ease-in-out infinite alternate;filter:drop-shadow(0 0 .7rem #ff7b26)}.vine-target[data-state="cleared"]{opacity:0;transform:scale(.35);transition:opacity .7s,transform .8s}@keyframes vine-burn{to{filter:hue-rotate(300deg) brightness(1.55) drop-shadow(0 0 .8rem #ff5a1f)}}
.scene-garden .effect-particles{left:68%;top:51%}.scene-bell-yard .effect-particles{left:81%;top:27%}.scene-bell-yard .launcher{top:69%!important}.scene-garden .tutorial-coach{left:2%;bottom:4%}.scene-garden .level-actor{z-index:15}
.runtime-scene.effect-friends-cross .crossing-friends{opacity:1;animation:friends-cross 2s ease-in-out forwards}.runtime-scene.effect-gate-open::after,.runtime-scene.effect-garden-open::after{display:block;content:"";position:absolute;z-index:6;left:72%;top:52%;width:18%;height:30%;translate:-50% -50%;background:radial-gradient(circle,rgba(255,238,133,.75),transparent 70%);animation:portal-glow 1.2s ease-in-out infinite alternate;pointer-events:none}@keyframes portal-glow{to{opacity:.45;transform:scale(1.1)}}
.results-message{margin:.35rem 0;color:var(--muted);font-weight:800}

@media(max-width:760px){.runtime-scene{aspect-ratio:16/9;min-height:0}.tutorial-coach{width:34%;padding:.35rem;gap:.16rem}.tutorial-coach span{font-size:.4rem}.tutorial-coach i{width:.85rem;font-size:.4rem}.mission-card{max-width:36%}.level-actor{min-width:3.3rem}.flight-ingredient{min-width:1.45rem}.bell-target{min-width:2.4rem}.vine-target{min-width:7rem}.runtime-scene .fire-waiting{min-width:2.8rem}}

/* Independent gameplay geometry and reusable asset renderers */
.runtime-scene .game-asset{position:absolute;box-sizing:border-box;transform:translate(-50%,-50%) rotate(var(--asset-rotation,0deg));transform-origin:50% 50%}
.asset-stone-platform,.asset-brick-platform{overflow:hidden;border:.22rem solid #4b4037;border-radius:.5rem;background:linear-gradient(180deg,#a98b6a 0 12%,#62534a 13% 100%);box-shadow:inset 0 .35rem rgba(255,255,255,.22),0 .75rem 1rem rgba(16,37,44,.3)}
.asset-stone-platform::before,.asset-brick-platform::before{content:"";position:absolute;inset:14% 0 0;background:repeating-linear-gradient(0deg,transparent 0 43%,rgba(40,34,31,.45) 44% 48%),repeating-linear-gradient(90deg,#786b62 0 15%,#554a44 15.5% 17%)}
.asset-stone-platform::after{content:"";position:absolute;left:0;right:0;top:0;height:17%;background:linear-gradient(#c9b18e,#8c755d);box-shadow:0 .14rem #493e37}
.asset-brick-platform{border-color:#5f3526;background:#884832}.asset-brick-platform::before{background:repeating-linear-gradient(0deg,transparent 0 42%,rgba(72,31,23,.7) 43% 49%),repeating-linear-gradient(90deg,#a95d3c 0 16%,#683527 16.5% 18%)}.asset-brick-platform::after{content:"";position:absolute;left:0;right:0;top:0;height:16%;background:#c2a073;box-shadow:0 .14rem #614734}
.asset-support-post{border:.18rem solid #50331f;border-radius:.25rem;background:linear-gradient(90deg,#69401f,#a86330 45%,#58331e);box-shadow:inset .2rem 0 rgba(255,218,151,.18),0 .4rem .7rem rgba(21,36,39,.3)}.asset-support-post::before{content:"";position:absolute;left:-45%;right:-45%;top:0;height:12%;border:.15rem solid #4f3322;background:#87542a}
.runtime-scene .game-asset.launcher{transform:translate(-50%,-50%) rotate(var(--asset-rotation,0deg))}.runtime-scene .game-asset.fire-waiting{animation:fire-idle 1.8s ease-in-out infinite alternate}.runtime-scene .game-asset.fire-waiting img{width:100%;height:100%;object-fit:contain}
.runtime-scene .game-asset.bridge-rig{transform:translate(-50%,-50%) rotate(var(--asset-rotation,-77deg));transform-origin:100% 55%}.runtime-scene .game-asset.bridge-rig[data-state="lowered"]{transform:translate(-50%,-50%) rotate(0deg)}
.runtime-scene .asset-crate{border:.24rem solid #5a351d;background:linear-gradient(45deg,transparent 43%,#6b401f 44% 55%,transparent 56%),linear-gradient(-45deg,transparent 43%,#6b401f 44% 55%,transparent 56%),#b8783d;box-shadow:inset 0 0 0 .14rem #d39a5a}.runtime-scene .asset-crate .asset-symbol{display:grid;place-items:center;width:100%;height:100%;color:#603919;font-size:2rem;font-style:normal}.runtime-scene .asset-boulder{border-radius:48% 53% 46% 50%;background:radial-gradient(circle at 30% 25%,#b8b4a7,#565951 72%);box-shadow:inset -.35rem -.4rem rgba(25,30,27,.25)}.runtime-scene .asset-lever{border:0;background:transparent}.runtime-scene .asset-lever>i{position:absolute;left:46%;bottom:0;width:16%;height:85%;border-radius:999px;background:#513a2a;transform:rotate(-24deg);transform-origin:50% 100%}.runtime-scene .asset-lever>i::before{content:"";position:absolute;left:50%;top:-12%;width:170%;aspect-ratio:1;border-radius:50%;background:#db5a40;translate:-50% 0}.runtime-scene .asset-pressure-plate{border:.12rem solid #4d554e;border-radius:50%;background:linear-gradient(#a3aba0,#606861)}
.collider-visual{display:none;position:absolute!important;z-index:50!important;inset:0!important;border:.14rem dashed #ff42c6!important;border-radius:.25rem!important;background:rgba(255,66,198,.12)!important;pointer-events:none!important}.collider-visual[data-collider="circle"]{border-radius:50%!important}.runtime-scene.show-colliders .collider-visual{display:block}

@media (max-width:430px){.game-brand{font-size:1.35rem}.player-summary{font-size:.67rem}.map-heading h1{font-size:2.7rem}.world-map{min-height:35rem}.location-node{width:3.65rem}.node-label{min-width:6.3rem;padding:.35rem;font-size:.62rem}.scene{min-height:28rem}.slime-token{width:6rem}.results-card{padding:1rem}}

/* Persistent placement vertical slice */
.prototype-nav{background:linear-gradient(#76e4d3,#42afaa);box-shadow:0 .2rem 0 #28726f}.prototype-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;width:min(1280px,100%);margin:0 auto;padding:clamp(1rem,3vw,2rem)}.prototype-heading h1{margin:0;font-size:clamp(2.5rem,6vw,4.8rem);line-height:.9;letter-spacing:-.055em}.prototype-heading>div>p:not(.kicker){margin:.55rem 0 0;color:var(--muted);font-weight:750}.prototype-goals{display:flex;align-items:center;gap:.5rem;padding:.65rem .8rem;border:1px solid var(--line);border-radius:1rem;background:rgba(255,255,255,.8);box-shadow:0 .6rem 1.5rem rgba(21,47,58,.08);font-size:.68rem;font-weight:950}.prototype-goals span{display:flex;align-items:center;gap:.3rem}.prototype-goals i{width:.7rem;aspect-ratio:1;border-radius:50%;background:#39bde7}.prototype-goals .goal-fire{background:#ff7138}.prototype-goals b{color:#91a0a3}#boiler-prototype-root{position:relative;width:min(1320px,calc(100% - 1rem));margin:0 auto 2rem}.boiler-stage{overflow:hidden;border:.42rem solid var(--cream);border-radius:1.5rem;background:#bde8ff;box-shadow:0 24px 70px rgba(17,39,55,.26)}.boiler-scene{--lift-offset:13%;position:relative;aspect-ratio:16/9;overflow:hidden;background-position:center;background-size:cover;touch-action:none;isolation:isolate}.room-vignette{position:absolute;z-index:1;inset:0;pointer-events:none;box-shadow:inset 0 0 5rem rgba(11,36,43,.2);background:linear-gradient(180deg,transparent 58%,rgba(13,34,38,.1))}.room-surface{position:absolute;z-index:4;border:.18rem solid #453e38;box-shadow:inset 0 .22rem rgba(255,255,255,.3),0 .6rem .8rem rgba(17,36,42,.28)}.surface-launch{left:2%;top:77.25%;width:30%;height:7.5%;border-radius:.45rem;background:linear-gradient(#b7a68d 0 24%,#685c52 25%)}.surface-wheel{left:36.5%;top:78.75%;width:25%;height:6.5%;border-radius:.4rem;background:repeating-linear-gradient(90deg,#a75c40 0 15%,#6f3c31 16% 18%)}.surface-boiler{left:57%;top:64.5%;width:34%;height:7%;border-radius:.35rem;background:linear-gradient(#778681 0 24%,#3d514e 25%);transform:translateY(var(--lift-offset));transition:transform .12s linear}.surface-left-wall,.surface-right-wall{top:0;width:3%;height:100%;background:#594e45}.surface-left-wall{left:0}.surface-right-wall{right:0}.surface-ceiling{left:0;top:0;width:100%;height:7%;background:linear-gradient(#3e5f57,#1f3e39)}.source-tank{position:absolute;z-index:5;left:10%;top:10%;width:12%;height:16%;border:.22rem solid #324d4b;border-radius:45% 45% 22% 22%;background:linear-gradient(90deg,#3f716d,#77aaa0 45%,#315b58);box-shadow:inset .3rem .2rem rgba(255,255,255,.22),0 .5rem .8rem rgba(13,36,41,.25)}.source-tank i{position:absolute;left:27%;top:21%;width:46%;height:48%;border:.13rem solid #d4f5ed;border-radius:50%;background:linear-gradient(180deg,transparent 32%,#3fc8ed 33%)}.source-tank span,.pilot-housing span{position:absolute;left:50%;bottom:-1.25rem;translate:-50% 0;padding:.15rem .3rem;border-radius:.3rem;background:#18303c;color:#fff;font-size:clamp(.3rem,.58vw,.52rem);font-weight:950;white-space:nowrap}.pipe{position:absolute;z-index:5;border:.18rem solid #344d4b;background:linear-gradient(#81a7a0,#426d68 48%,#284b48);box-shadow:inset 0 .14rem rgba(255,255,255,.28)}.pipe-inlet{left:20%;top:16%;width:12%;height:4%;border-radius:999px}.pipe-elbow{left:29%;top:16%;width:4%;height:14%;border-radius:.3rem}.pipe-control{position:absolute;z-index:9;left:28.3%;top:23%;width:8%;height:14%;border:.2rem solid #294c49;border-radius:45% 35% 35% 45%;background:radial-gradient(circle,#e1d182 0 16%,#4b8177 17% 44%,#274d4a 45% 60%,transparent 61%);filter:drop-shadow(0 .45rem .5rem rgba(16,37,41,.3));transition:.2s}.pipe-control i{position:absolute;left:44%;bottom:-31%;width:18%;height:46%;border-radius:999px;background:#4a7770;rotate:-28deg}.believable-control b{position:absolute;left:50%;top:105%;translate:-50% 0;padding:.18rem .3rem;border-radius:.3rem;background:rgba(23,40,59,.86);color:#fff;font-size:clamp(.26rem,.48vw,.45rem);white-space:nowrap;opacity:.72}.water-drip{position:absolute;z-index:3;left:32%;top:31%;width:.55%;height:42%;border-radius:999px;background:linear-gradient(180deg,#bdf6ff,#27bde7);box-shadow:0 0 .5rem rgba(76,211,242,.6);transform-origin:50% 0;transition:.35s}.water-drip::after{content:"";position:absolute;left:50%;bottom:-.7rem;width:1.4rem;aspect-ratio:2;border:.15rem solid #85e6f7;border-radius:50%;translate:-50% 0;opacity:.7}.water-route{position:absolute;z-index:3;height:.65%;border-radius:999px;background:linear-gradient(90deg,#bff9ff,#31c3eb);box-shadow:0 0 .55rem rgba(58,205,239,.7);opacity:0;transform-origin:0 50%;transition:opacity .25s}.route-a{left:32%;top:32%;width:18%;rotate:36deg}.route-b{left:46.5%;top:48%;width:13%;rotate:69deg}.water-splash{position:absolute;z-index:7;left:53%;top:63%;width:7%;height:4%;border:.22rem solid #6ee0f4;border-top:0;border-radius:0 0 50% 50%;opacity:0}.water-active .water-drip{height:4%;opacity:.35}.water-active .water-route,.water-active .water-splash{opacity:1}.water-active .pipe-control{filter:drop-shadow(0 0 .8rem #61dcf1) brightness(1.08)}.wheel-machine{position:absolute;z-index:6;left:46%;top:53%;width:15%;aspect-ratio:1}.water-wheel{position:absolute;inset:0;border:.28rem solid #59432f;border-radius:50%;background:radial-gradient(circle,#cfad64 0 10%,#435655 11% 20%,transparent 21%);filter:drop-shadow(0 .5rem .45rem rgba(18,36,41,.35))}.water-wheel i{position:absolute;left:46%;top:5%;width:8%;height:90%;border-radius:999px;background:linear-gradient(90deg,#6e4b2c,#c6914e,#674229);transform-origin:50% 50%}.water-wheel i:nth-child(2){rotate:45deg}.water-wheel i:nth-child(3){rotate:90deg}.water-wheel i:nth-child(4){rotate:135deg}.water-wheel i:nth-child(5){rotate:22.5deg}.water-wheel i:nth-child(6){rotate:67.5deg}.water-wheel i:nth-child(7){rotate:112.5deg}.water-wheel i:nth-child(8){rotate:157.5deg}.water-wheel b{position:absolute;inset:34%;border:.18rem solid #47392c;border-radius:50%;background:radial-gradient(circle,#e3bd67,#695139)}.wheel-active .water-wheel{animation:waterwheel-spin var(--wheel-speed) linear infinite}.wheel-axle{position:absolute;left:43%;top:43%;width:14%;aspect-ratio:1;border-radius:50%;background:#253e3d}.lift-chain{position:absolute;left:96%;top:47%;width:42%;height:8%;border-top:.3rem dashed #504434;transform-origin:0 50%;rotate:-28deg}@keyframes waterwheel-spin{to{rotate:360deg}}.boiler-lift{position:absolute;z-index:7;left:55%;top:39%;width:22%;height:38%;transform:translateY(var(--lift-offset));transition:transform .12s linear}.boiler-body{position:absolute;left:10%;top:6%;width:70%;height:80%;border:.25rem solid #324b4a;border-radius:46% 46% 24% 24%;background:linear-gradient(90deg,#456c68,#8ba9a0 43%,#345a57);box-shadow:inset .35rem .25rem rgba(255,255,255,.2),0 .65rem .8rem rgba(14,34,38,.3)}.boiler-body::before{content:"";position:absolute;left:38%;bottom:100%;width:24%;height:25%;border:.2rem solid #324b4a;border-bottom:0;border-radius:.4rem .4rem 0 0;background:#547b74}.boiler-body strong{position:absolute;left:50%;bottom:9%;translate:-50% 0;padding:.2rem .35rem;border-radius:.3rem;background:#1b343e;color:#fff;font-size:clamp(.3rem,.58vw,.55rem);letter-spacing:.05em}.boiler-glass{position:absolute;left:25%;top:24%;width:50%;aspect-ratio:1;border:.2rem solid #263f40;border-radius:50%;background:conic-gradient(from 180deg,#79dff2 var(--pressure-fill,0%),#e5f5ed 0);box-shadow:inset 0 0 0 .18rem rgba(255,255,255,.55)}.boiler-rivet{position:absolute;width:5%;aspect-ratio:1;border-radius:50%;background:#d7c277}.boiler-rivet.r1{left:8%;top:45%}.boiler-rivet.r2{right:8%;top:45%}.heat-coupler{position:absolute;z-index:4;right:1%;top:42%;width:24%;aspect-ratio:1;border:.22rem solid #60492f;border-radius:45%;background:radial-gradient(circle,#dbc070 0 16%,#7a6550 17% 45%,#403c38 46%);transition:.25s}.heat-coupler i{position:absolute;right:-55%;top:42%;width:65%;height:15%;border-radius:999px;background:#68553d}.heat-coupler.disabled{filter:grayscale(.8);opacity:.58}.boiler-ready .heat-coupler{opacity:1;filter:none}.pilot-housing{position:absolute;z-index:6;right:8%;top:65%;width:10%;height:16%;border:.2rem solid #533c2d;border-radius:.45rem;background:linear-gradient(#5f6762,#293b3a)}.pilot-flame{position:absolute;left:50%;top:8%;width:28%;height:48%;border-radius:70% 30% 55% 45%;background:radial-gradient(circle at 50% 70%,#fff7a6,#ffbf31 30%,#f05b28 68%,transparent 70%);translate:-50% 0;animation:pilot-flicker .45s ease-in-out infinite alternate;filter:drop-shadow(0 0 .5rem #ff8b31)}@keyframes pilot-flicker{to{transform:scale(.82,1.15) rotate(4deg)}}.heat-rail{position:absolute;z-index:4;height:2%;border:.16rem solid #4d4237;border-radius:999px;background:#755f4d}.heat-a{left:76%;top:72%;width:12%;rotate:-32deg}.heat-b{left:70%;top:63%;width:10%;rotate:-58deg}.heat-flow{position:absolute;z-index:5;left:72%;top:56%;width:15%;height:18%;opacity:0}.heat-flow i{position:absolute;width:.7rem;aspect-ratio:1;border-radius:50%;background:#ffb332;box-shadow:0 0 .6rem #ff5428;animation:heat-pulse 1s linear infinite}.heat-flow i:nth-child(1){left:95%;top:85%}.heat-flow i:nth-child(2){left:78%;top:69%;animation-delay:-.14s}.heat-flow i:nth-child(3){left:61%;top:54%;animation-delay:-.28s}.heat-flow i:nth-child(4){left:45%;top:39%;animation-delay:-.42s}.heat-flow i:nth-child(5){left:30%;top:25%;animation-delay:-.56s}.heat-flow i:nth-child(6){left:16%;top:12%;animation-delay:-.7s}.heat-flow i:nth-child(7){left:2%;top:0;animation-delay:-.84s}.heat-active .heat-flow{opacity:1}.heat-active .heat-coupler{filter:drop-shadow(0 0 .9rem #ff7b37) brightness(1.15)}@keyframes heat-pulse{50%{transform:scale(1.45);filter:brightness(1.5)}}.exit-machine{position:absolute;z-index:6;right:1.7%;top:38%;width:12%;height:39%}.exit-door{position:absolute;inset:0;border:.25rem solid #304a48;border-radius:2rem 2rem .35rem .35rem;background:repeating-linear-gradient(90deg,#35625d 0 20%,#203f3c 21% 24%);box-shadow:inset .3rem .25rem rgba(255,255,255,.15);transition:transform 1s cubic-bezier(.3,.8,.25,1.1)}.exit-door i{position:absolute;right:12%;top:49%;width:10%;aspect-ratio:1;border-radius:50%;background:#e6bf5f}.exit-door strong{position:absolute;left:50%;top:12%;translate:-50% 0;color:#d8eee6;font-size:clamp(.4rem,.8vw,.7rem);letter-spacing:.08em}.exit-lamp{position:absolute;left:42%;top:-10%;width:18%;aspect-ratio:1;border:.12rem solid #293e3d;border-radius:50%;background:#d64d3f;box-shadow:0 0 .5rem rgba(214,77,63,.6)}.room-complete .exit-door{transform:translateY(-110%)}.room-complete .exit-lamp{background:#72e46b;box-shadow:0 0 1rem #72e46b}.pressure-hud{position:absolute;z-index:20;left:50%;top:2.5%;translate:-50% 0;display:grid;grid-template-columns:auto minmax(8rem,16rem) 2.8rem;align-items:center;gap:.5rem;padding:.5rem .65rem;border:.14rem solid rgba(255,255,255,.65);border-radius:999px;background:rgba(23,40,59,.9);color:#fff;box-shadow:0 .5rem 1rem rgba(13,32,39,.2);font-size:clamp(.42rem,.7vw,.65rem);font-weight:950}.pressure-hud>div{height:.55rem;overflow:hidden;border-radius:999px;background:#526169}.pressure-hud i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#42c9ec,#ffbd39,#ff6c34);transition:width .12s}.pressure-hud>b{color:#ffcf55;text-align:right}.physical-slime{position:absolute;z-index:15;width:7.2%;aspect-ratio:.92;padding:0;border:0;background:transparent;translate:-50% -63%;cursor:grab;touch-action:none;filter:drop-shadow(0 .55rem .4rem rgba(14,34,39,.35));transform-origin:50% 75%}.physical-slime.selected::after{content:"";position:absolute;inset:-13%;border:.12rem dashed rgba(255,248,203,.8);border-radius:50%;animation:selected-orbit 5s linear infinite}.gel-body{position:absolute;inset:0;border:.12rem solid rgba(13,66,75,.45);border-radius:48% 52% 42% 46%;background:radial-gradient(circle at 28% 17%,rgba(255,255,255,.9) 0 7%,transparent 18%),linear-gradient(145deg,#74e6f7,#2fb7df 65%,#1481bd);box-shadow:inset -.45rem -.5rem rgba(10,90,137,.25);transition:filter .18s}.slime-fire .gel-body{border-color:rgba(111,38,23,.5);background:radial-gradient(circle at 28% 17%,rgba(255,255,255,.85) 0 7%,transparent 18%),linear-gradient(145deg,#ffd44f,#ff7138 62%,#cc3027);box-shadow:inset -.45rem -.5rem rgba(145,31,22,.24)}.gel-body .eye{position:absolute;top:35%;width:17%;height:22%;border-radius:50%;background:#fff;box-shadow:inset 0 -.12rem #d8eee9}.gel-body .eye::after{content:"";position:absolute;left:38%;top:38%;width:40%;aspect-ratio:1;border-radius:50%;background:#172b32}.gel-body .e1{left:25%}.gel-body .e2{right:25%}.gel-body .mouth{position:absolute;left:42%;top:63%;width:18%;height:10%;border-radius:0 0 50% 50%;background:#17343a}.power-swirl{position:absolute;inset:9%;border:.14rem solid transparent;border-top-color:rgba(255,255,255,.55);border-radius:50%;opacity:0}.physical-slime>b{position:absolute;left:50%;top:104%;translate:-50% 0;padding:.16rem .3rem;border-radius:.3rem;background:rgba(23,40,59,.86);color:#fff;font-size:clamp(.28rem,.48vw,.44rem)}.physical-slime[data-state="aiming"]{transform:scaleX(var(--slime-scale-x,1)) scaleY(var(--slime-scale-y,1));cursor:grabbing}.physical-slime[data-state="flying"]{transform:rotate(var(--flight-angle)) scaleX(var(--slime-scale-x,1)) scaleY(var(--slime-scale-y,1));transition:none}.physical-slime.splat{animation:slime-splat .58s cubic-bezier(.2,.85,.25,1.3)}.physical-slime.power-active .power-swirl{opacity:1;animation:power-swirl 1.2s linear infinite}.physical-slime.power-active .gel-body{filter:brightness(1.13) drop-shadow(0 0 .6rem rgba(89,222,247,.8))}.physical-slime.slime-fire.power-active .gel-body{filter:brightness(1.13) drop-shadow(0 0 .65rem rgba(255,102,44,.85))}@keyframes slime-splat{0%{transform:scale(1.35,.62)}35%{transform:scale(.76,1.28)}70%{transform:scale(1.12,.9)}100%{transform:none}}@keyframes power-swirl{to{rotate:360deg}}@keyframes selected-orbit{to{rotate:360deg}}.trajectory-dots{position:absolute;z-index:14;inset:0;opacity:0;pointer-events:none}.aiming .trajectory-dots{opacity:1}.trajectory-dots i{position:absolute;width:clamp(.3rem,.65vw,.58rem);aspect-ratio:1;border:.1rem solid rgba(18,52,60,.32);border-radius:50%;background:#fff4c6;translate:-50% -50%;box-shadow:0 .1rem .25rem rgba(16,38,43,.3)}.believable-control.aim-valid{filter:drop-shadow(0 0 .7rem rgba(255,233,131,.9)) brightness(1.08)}.believable-control.aim-target{animation:subtle-target .65s ease-in-out infinite alternate}.believable-control.occupied b{background:#226a59}.show-functional-areas .believable-control::after{content:"";position:absolute;inset:-30%;border:.14rem dashed #ff49c9;border-radius:50%;background:rgba(255,73,201,.1)}@keyframes subtle-target{to{filter:drop-shadow(0 0 1.2rem #fff3a3) brightness(1.2)}}.prototype-message{position:absolute;z-index:26;left:50%;bottom:3%;translate:-50% .5rem;max-width:min(34rem,80%);padding:.55rem .85rem;border-radius:999px;background:rgba(23,40,59,.92);color:#fff;font-size:clamp(.5rem,.8vw,.72rem);font-weight:900;text-align:center;opacity:0;transition:.2s;pointer-events:none}.prototype-message.show{opacity:1;translate:-50% 0}.prototype-hud{display:flex;align-items:center;gap:.65rem;min-height:7rem;padding:.7rem 1rem;background:rgba(255,248,233,.97);box-shadow:0 -8px 25px rgba(16,38,47,.12)}.prototype-instruction{display:flex;align-items:center;gap:.55rem;max-width:25rem}.prototype-instruction>span{font-size:1.7rem}.prototype-instruction strong{font-size:.8rem}.prototype-instruction p{margin:.15rem 0 0;color:var(--muted);font-size:.64rem;font-weight:750}.slime-selector{display:flex;gap:.5rem;margin-left:auto}.slime-selector button{display:grid;grid-template-columns:2.8rem 1fr;align-items:center;gap:.35rem;min-width:10rem;padding:.4rem;border:.15rem solid transparent;border-radius:.8rem;background:#e9e2d5;cursor:pointer}.slime-selector button.selected{border-color:#34856a;background:#e3f1dd}.slime-selector button>span{text-align:left}.slime-selector strong,.slime-selector small{display:block}.slime-selector strong{font-size:.68rem}.slime-selector small{color:var(--muted);font-size:.52rem}.mini-gel{display:block;width:2.7rem;aspect-ratio:1;border-radius:48% 52% 43% 45%;background:radial-gradient(circle at 28% 18%,#fff 0 7%,transparent 18%),linear-gradient(145deg,#76e8f7,#279ed8);box-shadow:inset -.25rem -.3rem rgba(14,81,131,.2)}.mini-gel.fire{background:radial-gradient(circle at 28% 18%,#fff 0 7%,transparent 18%),linear-gradient(145deg,#ffd452,#f15431)}.room-restart,.debug-button{min-height:2.8rem;padding:.4rem .65rem;border:1px solid var(--line);border-radius:.65rem;background:#fff;font-size:.65rem;font-weight:900;cursor:pointer}.prototype-debug{position:fixed;z-index:200;right:1rem;top:5.5rem;width:min(19rem,calc(100% - 2rem));max-height:calc(100vh - 6.5rem);overflow:auto;display:grid;gap:.65rem;padding:1rem;border:1px solid var(--line);border-radius:1rem;background:rgba(255,248,233,.98);box-shadow:0 1.5rem 4rem rgba(10,31,42,.3);translate:calc(100% + 2rem) 0;transition:.3s}.debug-open .prototype-debug{translate:0}.prototype-debug>div{position:relative}.prototype-debug h2{margin:0}.prototype-debug>div>button{position:absolute;right:0;top:0;width:2rem;aspect-ratio:1;border:0;border-radius:50%;background:#e4dbcc;cursor:pointer}.debug-slider{display:grid;gap:.3rem}.debug-slider>span{display:flex;justify-content:space-between;color:var(--muted);font-size:.62rem;font-weight:900}.debug-slider input{accent-color:var(--teal)}.debug-check{display:flex;align-items:center;gap:.4rem;font-size:.65rem;font-weight:850}.prototype-debug>button{min-height:2.5rem;border:0;border-radius:.6rem;background:var(--navy);color:#fff;font-weight:900;cursor:pointer}.success-overlay{position:absolute;z-index:50;inset:0;display:grid;place-items:center;padding:1rem;background:rgba(12,30,39,.55);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:.35s}.room-complete .success-overlay{opacity:1;pointer-events:auto}.success-overlay>div{width:min(28rem,90%);padding:1.3rem;border:.25rem solid #fff4ce;border-radius:1.2rem;background:#fff8e9;box-shadow:0 1.4rem 4rem rgba(9,26,34,.38);text-align:center}.success-overlay span{color:#f1b942;font-size:2.2rem}.success-overlay h2{margin:.25rem 0;font-size:2rem}.success-overlay p{color:var(--muted);font-weight:750}.success-overlay button{min-height:2.7rem;margin:.25rem;padding:.4rem .75rem;border:0;border-radius:.65rem;background:#dddfd5;font-weight:900;cursor:pointer}.success-overlay button:first-of-type{background:linear-gradient(#7be261,#4db64d)}
@media(max-width:880px){.prototype-heading{align-items:flex-start;flex-direction:column}.prototype-goals{width:100%;justify-content:center}.prototype-hud{align-items:stretch;flex-wrap:wrap}.prototype-instruction{display:none}.slime-selector{order:-1;width:100%;margin:0}.slime-selector button{flex:1;min-width:0}.pressure-hud{grid-template-columns:auto minmax(5rem,12rem) 2.5rem}}@media(max-width:560px){.prototype-goals{font-size:.52rem}.boiler-scene{min-height:27rem;aspect-ratio:9/13;background-size:auto 100%}.physical-slime{width:12%}.slime-selector button{grid-template-columns:2.3rem 1fr}.mini-gel{width:2.2rem}.prototype-hud{gap:.4rem}.room-restart,.debug-button{flex:1}.pressure-hud{top:1%;max-width:88%}.believable-control b{display:none}}

/* Elastic launch body: the small blob stays planted while the selected slime stretches. */
.slime-tether {
  position: absolute;
  z-index: 14;
  height: clamp(1.35rem, 3.5vw, 2.8rem);
  border: .12rem solid rgba(13, 66, 75, .4);
  border-radius: 999px;
  background: linear-gradient(180deg, #7ceaf8, #31b8df 64%, #1483bd);
  box-shadow: inset 0 -.35rem rgba(10, 90, 137, .22), 0 .3rem .45rem rgba(14, 34, 39, .2);
  clip-path: polygon(0 30%, 100% 4%, 100% 96%, 0 70%);
  opacity: 0;
  pointer-events: none;
  transform-origin: 0 50%;
}
.slime-tether.active { opacity: 1; }
.slime-tether > i {
  position: absolute;
  left: 0;
  top: 50%;
  width: clamp(2.25rem, 4.8vw, 3.9rem);
  aspect-ratio: 1;
  border: .12rem solid rgba(13, 66, 75, .42);
  border-radius: 48% 52% 44% 46%;
  background: radial-gradient(circle at 28% 18%, rgba(255,255,255,.9) 0 7%, transparent 18%), linear-gradient(145deg, #78e9f8, #2eb5dd 65%, #1481bd);
  box-shadow: inset -.35rem -.4rem rgba(10, 90, 137, .24), 0 .35rem .4rem rgba(14,34,39,.22);
  translate: -46% -50%;
}
.slime-tether.tether-fire {
  border-color: rgba(111, 38, 23, .42);
  background: linear-gradient(180deg, #ffd854, #ff7739 64%, #cc3027);
  box-shadow: inset 0 -.35rem rgba(145,31,22,.22), 0 .3rem .45rem rgba(14,34,39,.2);
}
.slime-tether.tether-fire > i {
  border-color: rgba(111,38,23,.45);
  background: radial-gradient(circle at 28% 18%, rgba(255,255,255,.88) 0 7%, transparent 18%), linear-gradient(145deg, #ffd954, #ff7438 63%, #cb3027);
  box-shadow: inset -.35rem -.4rem rgba(145,31,22,.23), 0 .35rem .4rem rgba(14,34,39,.22);
}

/* Canal Crossing: purpose-built pull-and-launch vertical slice */
.scene.canal-scene {
  aspect-ratio: 16 / 9;
  min-height: 0;
  overflow: hidden;
  background: #31aef1 url("assets/adventure/canal-bridge-scene-v2.png") center / 100% 100% no-repeat;
  touch-action: none;
  isolation: isolate;
}
.scene.canal-scene::before,
.scene.canal-scene::after { display: none; }
.scene-vignette { position:absolute; inset:0; z-index:1; pointer-events:none; box-shadow:inset 0 0 5rem rgba(15,44,53,.2); background:linear-gradient(180deg,transparent 65%,rgba(13,38,45,.08)); }
.mission-card { position:absolute; z-index:20; left:2%; top:3%; display:grid; gap:.1rem; padding:.55rem .75rem; border:1px solid rgba(255,255,255,.6); border-radius:.75rem; background:rgba(23,40,59,.86); color:#fff; box-shadow:0 .55rem 1rem rgba(11,30,40,.2); pointer-events:none; }
.mission-card span { color:#ffd15a; font-size:clamp(.46rem,.75vw,.65rem); font-weight:950; letter-spacing:.15em; }
.mission-card strong { font-size:clamp(.62rem,1.15vw,.95rem); }
.fire-waiting { position:absolute; z-index:7; left:75.5%; top:54%; width:10%; transform-origin:50% 100%; animation:fire-idle 1.8s ease-in-out infinite alternate; }
.fire-waiting img { display:block; width:100%; filter:drop-shadow(0 .55rem .45rem rgba(20,38,42,.35)); }
.fire-waiting span { position:absolute; right:-35%; top:-8%; padding:.3rem .45rem; border:.15rem solid var(--navy); border-radius:.75rem .75rem .75rem .15rem; background:#fff9e9; font-size:clamp(.45rem,.8vw,.72rem); font-weight:950; }
@keyframes fire-idle { to { transform:translateY(-3%) scaleY(1.03); } }

.bridge-rig { position:absolute; z-index:6; left:38.2%; top:66.8%; width:32.2%; height:8%; transform:rotate(-77deg); transform-origin:100% 55%; transition:transform 1.15s cubic-bezier(.18,.8,.2,1.06); filter:drop-shadow(0 .8rem .55rem rgba(20,35,38,.35)); }
.bridge-planks { position:absolute; inset:17% 0; border:.18rem solid #5f351f; border-radius:.25rem; background:repeating-linear-gradient(90deg,#b56a34 0 10%,#7b421f 10% 12.2%); box-shadow:inset 0 .2rem rgba(255,226,156,.35); }
.bridge-planks::before,.bridge-planks::after { content:""; position:absolute; left:0; right:0; height:.16rem; background:#5d3421; }.bridge-planks::before{top:10%}.bridge-planks::after{bottom:10%}
.hinge { position:absolute; right:-2%; top:17%; height:66%; aspect-ratio:1; border:.17rem solid #4d3328; border-radius:50%; background:radial-gradient(circle,#d2aa62 0 20%,#665348 22% 58%,#2f3333 60%); }
.canal-scene.bridge-down .bridge-rig { transform:rotate(0deg); }

.hanging-weight { position:absolute; z-index:9; left:84.5%; top:37%; width:7.2%; aspect-ratio:1; display:grid; place-items:center; border:.2rem solid #402f2a; border-radius:18%; background:linear-gradient(145deg,#87969d,#33434b 72%); color:#fff; box-shadow:inset .18rem .2rem rgba(255,255,255,.24),0 .6rem 1rem rgba(12,29,36,.3); cursor:crosshair; transition:transform .75s cubic-bezier(.2,.8,.25,1.2),opacity .3s; }
.hanging-weight::before { content:""; position:absolute; left:46%; bottom:100%; width:9%; height:250%; background:repeating-linear-gradient(0deg,#d0a062 0 12%,#76502e 13% 19%); box-shadow:0 0 0 .08rem rgba(74,48,29,.35); }
.hanging-weight i { position:absolute; inset:17%; border:.12rem solid rgba(255,255,255,.25); border-radius:15%; }
.hanging-weight span { z-index:1; padding:.14rem .2rem; border-radius:.25rem; background:rgba(23,40,59,.82); font-size:clamp(.35rem,.65vw,.58rem); font-weight:950; letter-spacing:.05em; }
.hanging-weight:hover { filter:brightness(1.12); }
.canal-scene.impact .hanging-weight { animation:weight-hit .18s linear 3; }
.canal-scene.bridge-down .hanging-weight { transform:translateY(235%) rotate(19deg); opacity:.9; }
@keyframes weight-hit { 50%{translate:.45rem -.2rem;rotate:6deg} }

.launcher { position:absolute; z-index:9; left:17.5%; top:70%; width:5%; height:18%; pointer-events:none; }
.launcher .fork { position:absolute; bottom:0; width:30%; height:78%; border-radius:999px; background:linear-gradient(90deg,#74401f,#b96c35 45%,#6a351b); box-shadow:0 .25rem .4rem rgba(25,33,34,.35); transform-origin:50% 100%; }
.launcher .fork.left { left:13%; transform:rotate(-13deg); }.launcher .fork.right { right:13%; transform:rotate(13deg); }
.launch-band { position:absolute; z-index:-1; left:42%; top:28%; width:1px; height:.35rem; border-radius:999px; background:#462820; transform-origin:0 50%; box-shadow:0 .08rem .1rem rgba(0,0,0,.35); }
.goo-projectile { position:absolute; z-index:13; width:clamp(4rem,11%,9rem); aspect-ratio:1.15; padding:0; border:0; background:transparent; cursor:grab; transform:translate(-50%,-64%) rotate(var(--goo-rotation,0deg)); transform-origin:50% 60%; touch-action:none; filter:drop-shadow(0 .7rem .5rem rgba(17,43,43,.38)); }
.goo-projectile:active { cursor:grabbing; }
.goo-projectile img { width:100%; height:100%; object-fit:contain; pointer-events:none; user-select:none; }
.goo-projectile:not(.flying) { transition:filter .15s; }
.goo-projectile:not(.flying):hover { filter:drop-shadow(0 .7rem .55rem rgba(17,43,43,.48)) brightness(1.06); }
.goo-projectile.missed { opacity:.65; transition:opacity .25s; }

.trajectory { position:absolute; inset:0; z-index:10; pointer-events:none; opacity:0; transition:opacity .12s; }
.trajectory.visible { opacity:1; }
.trajectory i { position:absolute; width:clamp(.35rem,.75vw,.65rem); aspect-ratio:1; border:.1rem solid rgba(23,40,59,.32); border-radius:50%; background:#fff6cf; box-shadow:0 .1rem .25rem rgba(19,37,42,.25); translate:-50% -50%; }
.trajectory i:nth-child(2n) { opacity:.8; transform:scale(.8); }

.impact-burst { position:absolute; z-index:16; left:88%; top:43%; width:0; height:0; pointer-events:none; }
.impact-burst i { position:absolute; width:.7rem; height:.18rem; border-radius:999px; background:#ffcb46; opacity:0; transform-origin:0 50%; }
.canal-scene.impact .impact-burst i { animation:burst .7s ease-out both; }
.impact-burst i:nth-child(1){--r:0deg}.impact-burst i:nth-child(2){--r:45deg}.impact-burst i:nth-child(3){--r:90deg}.impact-burst i:nth-child(4){--r:135deg}.impact-burst i:nth-child(5){--r:180deg}.impact-burst i:nth-child(6){--r:225deg}.impact-burst i:nth-child(7){--r:270deg}.impact-burst i:nth-child(8){--r:315deg}
@keyframes burst { 0%{opacity:1;transform:rotate(var(--r)) translateX(0) scaleX(.4)}100%{opacity:0;transform:rotate(var(--r)) translateX(3rem) scaleX(1.4)} }

.crossing-friends { position:absolute; z-index:12; left:20%; top:63%; width:8%; opacity:0; pointer-events:none; }
.crossing-friends i { position:absolute; width:38%; aspect-ratio:1; border:.15rem solid rgba(255,255,255,.7); border-radius:50% 50% 42% 45%; background:radial-gradient(circle at 30% 20%,#fff,#8d67df 18%,#5b31a4 70%); box-shadow:0 .3rem .35rem rgba(20,38,42,.3); }
.crossing-friends i:nth-child(2){left:38%;background:radial-gradient(circle at 30% 20%,#fff,#5cd3f5 18%,#2484bc 70%)}.crossing-friends i:nth-child(3){left:75%;background:radial-gradient(circle at 30% 20%,#fff,#ffc753 18%,#dd8e27 70%)}
.canal-scene.celebrating .crossing-friends { opacity:1; animation:friends-cross 2s ease-in-out forwards; }
@keyframes friends-cross { 0%{transform:translateX(0)}70%{transform:translateX(570%)}100%{transform:translateX(650%);opacity:0} }

.canal-scene .ingredient-pickup { width:clamp(1.8rem,4.2vw,3.2rem); border-width:clamp(.1rem,.2vw,.2rem); font-size:clamp(.72rem,1.7vw,1.25rem); }
.one-use-badge { display:grid; grid-template-columns:auto auto; align-items:center; gap:.15rem .45rem; padding:.55rem .75rem; border:1px solid var(--line); border-radius:.75rem; background:#e4f2dd; color:#28633f; }
.one-use-badge b { grid-row:1/3; display:grid; place-items:center; width:2.5rem; aspect-ratio:1; border-radius:50%; background:#59c84c; color:#fff; box-shadow:inset 0 -.25rem rgba(25,103,52,.2); }
.one-use-badge span { font-size:.67rem; font-weight:900; }
.unlock-portrait { display:inline-block; width:4rem; height:4rem; }.unlock-portrait img{width:100%;height:100%;object-fit:contain}.unlock-banner small{display:block;font-size:.58rem;letter-spacing:.12em}.unlock-banner>span:last-child{text-align:left}

@media (max-width:760px){
  .scene.canal-scene{min-height:0;aspect-ratio:16/9}
  .level-toolbar{grid-template-columns:auto 1fr;align-items:center}.level-toolbar>div:nth-child(2){grid-column:2}.attempt-stats{grid-column:1/3}
  .level-toolbar h1{font-size:2rem}.level-toolbar p:not(.kicker){font-size:.7rem}
  .level-hud{min-height:4.7rem;flex-direction:row;align-items:center}.level-hud .instruction{display:flex}.instruction p{display:none}.drag-hand{font-size:1.35rem}
  .mission-card{padding:.35rem .45rem}.mission-card strong{font-size:.5rem}.fire-waiting span{right:-55%;top:-20%}
  .hanging-weight span{display:none}.level-message{top:.45rem;font-size:.62rem;padding:.4rem .6rem}
  .one-use-badge{padding:.3rem .45rem}.one-use-badge b{width:1.9rem;font-size:.63rem}.one-use-badge span{display:none}
}

/* Full-screen game-space shell */
body:has(#map-screen.active){height:100vh;overflow:hidden;background:#244d5c}.game-header{position:fixed;z-index:230;inset:clamp(.75rem,2vw,1.35rem) 0 auto;min-height:0;padding:0 clamp(.75rem,2vw,1.35rem);border:0;background:transparent;box-shadow:none;backdrop-filter:none;pointer-events:none}.game-header>*{pointer-events:auto}.game-header .game-brand{min-height:3rem;padding:.55rem .85rem;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:rgba(251,250,245,.9);box-shadow:0 .55rem 1.5rem rgba(8,20,18,.2);backdrop-filter:blur(16px)}.map-menu-toggle{display:grid;align-content:center;gap:.22rem;width:3rem;aspect-ratio:1;margin-left:auto;padding:.72rem;border:1px solid rgba(255,255,255,.34);border-radius:50%;background:rgba(21,28,24,.88);box-shadow:0 .55rem 1.5rem rgba(8,20,18,.24);backdrop-filter:blur(16px);cursor:pointer}.map-menu-toggle i{display:block;height:.14rem;border-radius:999px;background:#fff}.map-menu-backdrop{position:fixed;z-index:235;inset:0;border:0;background:rgba(21,28,24,.36);backdrop-filter:blur(3px);cursor:pointer}.map-menu-panel{position:fixed;z-index:240;right:0;top:0;display:flex;flex-direction:column;gap:1.1rem;width:min(25rem,100%);height:100%;padding:clamp(1.3rem,3vw,1.8rem);background:rgba(251,250,245,.97);box-shadow:-1.5rem 0 4rem rgba(8,16,12,.3);backdrop-filter:blur(18px);translate:105% 0;transition:translate .28s cubic-bezier(.2,.8,.2,1)}.map-menu-panel.open{translate:0}.map-menu-heading{position:relative;display:grid;gap:.1rem;padding-right:3rem}.map-menu-heading>span,.map-menu-progress small{color:#657166;font-size:.58rem;font-weight:700;letter-spacing:.14em}.map-menu-heading>strong{font-family:var(--display);font-size:1.9rem;letter-spacing:-.055em}.map-menu-heading>button{position:absolute;right:0;top:0;width:2.5rem;aspect-ratio:1;border:0;border-radius:50%;background:#eeece4;font-size:1.35rem;cursor:pointer}.map-menu-progress{display:grid;gap:.4rem;padding:1rem;border:1px solid var(--modern-line);border-radius:1rem;background:#fff}.map-menu-progress strong{font-family:var(--display);font-size:1rem;letter-spacing:-.03em}.map-menu-progress b{font-weight:800}.map-menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:auto}.map-menu-actions>button,.map-menu-actions>a{display:flex;align-items:center;justify-content:center;min-height:3rem;padding:.55rem .7rem;border:1px solid var(--modern-line);border-radius:999px;background:#fff;color:var(--ink);font-size:.67rem;font-weight:700;text-align:center;text-decoration:none;cursor:pointer}.map-menu-actions>button:first-child{border-color:var(--slime-deep);background:var(--slime)}.map-menu-actions .account-action{display:grid;gap:.05rem;text-align:center}.map-menu-actions .account-action span{font-size:.68rem}.map-menu-actions .account-action b{font-size:.52rem}.map-menu-actions .workshop-link{border-color:var(--ink);background:var(--ink);color:#fff}.map-menu-actions .admin-label{margin-right:.25rem}
#map-screen.active{position:fixed;z-index:1;inset:0;display:block;overflow:hidden;padding:0;background:#244d5c}.world-map,.canonical-map{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;border:0;border-radius:0;background-position:center;background-size:cover;box-shadow:none}.world-map::before{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(8,21,18,.32) 0%,transparent 32%,transparent 70%,rgba(8,21,18,.22) 100%)}.world-map::after{background:linear-gradient(90deg,rgba(8,21,18,.2),transparent 42%)}.map-heading{position:absolute;z-index:12;left:clamp(1rem,3vw,2.5rem);top:clamp(5.4rem,9vw,7.2rem);display:block;width:min(37rem,calc(100% - 2rem));margin:0;padding:0;color:#fff;pointer-events:none;text-shadow:0 .2rem 1rem rgba(8,21,18,.32)}.map-heading .kicker{margin-bottom:.55rem;color:rgba(255,255,255,.72)}.map-heading h1{max-width:10ch;color:#fff;font-size:clamp(2.8rem,6vw,5.4rem);line-height:.92}.map-heading p:not(.kicker){max-width:27rem;margin:.7rem 0 0;color:rgba(255,255,255,.8);font-size:clamp(.78rem,1.25vw,1rem)}.region-progress{position:fixed;z-index:232;right:clamp(4.5rem,calc(2vw + 3.8rem),5.3rem);top:clamp(.75rem,2vw,1.35rem);display:grid;width:min(13rem,24vw);height:3rem;align-content:center;padding:.45rem .75rem;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:rgba(21,28,24,.78);box-shadow:0 .55rem 1.5rem rgba(8,20,18,.22);color:#fff;text-shadow:none;backdrop-filter:blur(16px);pointer-events:auto}.region-progress-label{font-size:.55rem;letter-spacing:.08em}.progress-track{height:.28rem;background:rgba(255,255,255,.2)}.map-legend{position:absolute;z-index:12;right:clamp(1rem,2vw,1.5rem);bottom:clamp(.75rem,2vw,1.25rem);justify-content:flex-end;width:auto;margin:0;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(21,28,24,.72);color:rgba(255,255,255,.8);backdrop-filter:blur(14px)}.legend-dot.complete{border-color:#fff}.destination-node{z-index:6}.map-loading,.map-empty{z-index:8;background:rgba(21,28,24,.72);color:#fff;backdrop-filter:blur(10px)}.map-empty span{color:rgba(255,255,255,.7)}
body:has(#map-screen.active) .guest-save-notice{top:auto;right:clamp(1rem,2vw,1.35rem);bottom:clamp(3.8rem,7vw,5rem)}
@media(max-width:700px){.game-header{inset:.65rem 0 auto;padding:0 .65rem}.game-header .game-brand{min-height:2.75rem;padding:.5rem .7rem}.game-header .game-brand>span:last-child{display:none}.map-menu-toggle{width:2.75rem}.region-progress{top:.65rem;right:3.75rem;width:8.7rem;height:2.75rem}.region-progress-label span:first-child{display:none}.map-heading{left:1rem;top:4.9rem;width:calc(100% - 2rem)}.map-heading h1{font-size:clamp(2.45rem,12vw,4rem)}.map-heading p:not(.kicker){max-width:18rem;font-size:.72rem}.map-legend{right:.65rem;bottom:.65rem;gap:.65rem;padding:.45rem .55rem;font-size:.58rem}.destination-node{width:6.6rem;min-height:4.7rem}.map-menu-actions{grid-template-columns:1fr}.map-menu-actions>button,.map-menu-actions>a{min-height:2.8rem}body:has(#map-screen.active) .guest-save-notice{right:.65rem;bottom:3.5rem}}
.world-map .destination-node{width:auto;min-width:0;min-height:0;padding:0;border:0;background:transparent;box-shadow:none;overflow:visible}.world-map .destination-node:hover:not(:disabled){transform:none;scale:1.15;background:transparent;box-shadow:none}.world-map .destination-node strong{position:absolute;left:50%;top:calc(100% + .55rem);margin:0;padding:.28rem .5rem;border-radius:999px;background:rgba(21,28,24,.78);color:#fff;font-size:.62rem;white-space:nowrap;translate:-50% 0;backdrop-filter:blur(8px)}.destination-dot{display:block;width:1.15rem;aspect-ratio:1;border:.2rem solid #fff;border-radius:50%;background:#baff36;box-shadow:0 0 0 .3rem rgba(186,255,54,.24),0 0 1.25rem .4rem rgba(186,255,54,.9)}.destination-node.current .destination-dot{animation:destination-pulse 1.25s ease-in-out infinite}.destination-node.complete .destination-dot{background:#fff;box-shadow:0 0 0 .28rem rgba(255,255,255,.26),0 0 1rem rgba(255,255,255,.7)}.destination-node.complete .destination-dot::after{content:"✓";display:grid;place-items:center;color:#17352a;font-size:.68rem;font-weight:950}.destination-node.locked{opacity:.78;background:transparent;box-shadow:none}.destination-node.locked .destination-dot{border-color:rgba(255,255,255,.8);background:#26332e;box-shadow:0 0 0 .25rem rgba(21,28,24,.35)}.destination-node.locked .destination-dot::after{content:""}.destination-node.unlocking .destination-dot{animation:destination-unlock 2.2s cubic-bezier(.2,.8,.2,1) both}@keyframes destination-pulse{50%{scale:1.35;box-shadow:0 0 0 .55rem rgba(186,255,54,.12),0 0 2rem .7rem rgba(186,255,54,1)}}@keyframes destination-unlock{0%{scale:.2;filter:brightness(3);box-shadow:0 0 0 0 rgba(255,255,255,1)}35%{scale:2;box-shadow:0 0 0 2.5rem rgba(186,255,54,0),0 0 4rem 1rem #fff}70%{scale:.82}100%{scale:1}}.flow-success-actions{display:flex;justify-content:center;gap:.65rem}.flow-success-actions button:first-child{background:#eeece4}.flow-success-actions button:last-child{background:var(--slime)}
.character-hit-target[data-state="attached"] .direction-arrow{display:none}.character-hit-target[data-state="attached"].power-active .direction-arrow{display:block}.character-hit-target.power-available{cursor:pointer}.character-hit-target.power-available .element-core{opacity:.28;background:radial-gradient(circle,rgba(255,255,255,.84) 0 10%,color-mix(in srgb,var(--slime-color),white 38%) 30%,transparent 66%);animation:redirect-ready-pulse 2.6s ease-in-out infinite}.character-hit-target.power-active .element-core{opacity:1;box-shadow:0 0 .8rem color-mix(in srgb,var(--slime-color),white 30%);animation:power-swirl 1.1s linear infinite}.element-power-hud.ready{border-color:rgba(255,255,255,.72);background:rgba(29,62,67,.9);box-shadow:0 0 1.25rem rgba(255,255,255,.2)}@keyframes redirect-ready-pulse{0%,100%{scale:.94;opacity:.18}50%{scale:1.03;opacity:.42;filter:drop-shadow(0 0 .22rem rgba(255,255,255,.55))}}@media(prefers-reduced-motion:reduce){.character-hit-target.power-available .element-core{animation:none;opacity:.25}}
