:root{color-scheme:dark;--navy:#070d22;--panel:#111a3b;--purple:#6c2af4;--cyan:#00d9f5;--ink:#21134f;--soft:#f7f5ff;--green:#2fc86f;--red:#ff5d67}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;font-family:Inter,Nunito,system-ui,sans-serif;background:var(--navy)}button{font:inherit}.simulator{width:100%;height:100%;display:grid;grid-template-rows:74px minmax(0,1fr) 126px;background:radial-gradient(circle at 50% 10%,#273f86 0,transparent 36%),var(--navy)}
.topbar{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(220px,1fr);align-items:center;gap:18px;padding:12px 20px;border-bottom:1px solid #ffffff17;background:#060c1ee8;backdrop-filter:blur(14px);z-index:5}.brand{display:flex;align-items:center;gap:12px}.brand-cube{width:46px;height:46px;display:grid;place-items:center;border:1px solid #ffffff66;border-radius:13px;background:linear-gradient(145deg,#873cff,#3420bc);box-shadow:0 8px 20px #5f20e568,inset 0 1px #ffffff8a;font-weight:1000;font-size:21px}.brand strong,.brand small{display:block}.brand strong{color:#fff;font-weight:1000;letter-spacing:.025em}.brand small{margin-top:3px;color:var(--cyan);font-size:11px;font-weight:900;letter-spacing:.08em}.round-status{text-align:center;color:#fff}.round-status span,.round-status b{display:block}.round-status span{font-size:14px;font-weight:900}.round-status b{margin-top:3px;color:var(--cyan);font-size:12px}.sound-button{justify-self:end;padding:10px 14px;border:1px solid #ffffff2d;border-radius:12px;background:#ffffff0c;color:#dce7ff;font-size:11px;font-weight:1000;cursor:pointer}
.viewport{position:relative;min-height:0;overflow:hidden;background:#9ddfff}.viewport canvas{display:block;width:100%;height:100%;outline:none;cursor:pointer}.world-hotspots{position:absolute;inset:0;z-index:2;pointer-events:none}.world-hotspot{position:absolute;width:96px;height:96px;padding:0;border:0;background:transparent;transform:translate(-50%,-50%);cursor:pointer;pointer-events:auto}.world-hotspot:focus-visible{outline:4px solid #00d9f5;outline-offset:3px;border-radius:50%}.loading{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;color:#2a1a70;background:linear-gradient(135deg,#dff6ff,#f4efff);z-index:4;transition:opacity .3s}.loading.is-hidden{opacity:0;pointer-events:none}.loading span{width:56px;height:56px;border:6px solid #d4c7ff;border-top-color:var(--purple);border-radius:50%;animation:spin .8s linear infinite}.loading strong{font-size:15px}.tip{position:absolute;z-index:3;top:16px;left:50%;transform:translateX(-50%);max-width:min(90%,620px);padding:9px 16px;border:1px solid #ffffffa8;border-radius:13px;background:#101637d9;color:#fff;text-align:center;font-size:13px;font-weight:900;box-shadow:0 9px 24px #10163742;pointer-events:none}.celebration{position:absolute;z-index:8;left:50%;top:50%;width:min(88%,430px);padding:22px;display:grid;gap:9px;text-align:center;border:2px solid #d5c7ff;border-radius:22px;background:#fffffff2;color:var(--ink);box-shadow:0 24px 70px #1d0b6770;opacity:0;transform:translate(-50%,-42%) scale(.92);pointer-events:none;transition:.3s}.celebration.is-visible{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto}.celebration strong{color:#521ec6;font-size:25px;font-weight:1000}.celebration span{font-size:14px;font-weight:800}.celebration-next{width:100%;margin-top:8px;min-height:46px;font-size:13px}
.control-deck{display:grid;grid-template-columns:minmax(230px,.8fr) minmax(340px,1.35fr) auto;align-items:center;gap:18px;padding:12px 20px;border-top:1px solid #ffffff18;background:linear-gradient(180deg,#111b41,#080f25);box-shadow:0 -16px 40px #08102d29;z-index:5}.mission-copy{min-width:0}.mission-copy small,.mission-copy strong{display:block}.mission-copy small{color:#a875ff;font-size:10px;font-weight:1000;letter-spacing:.1em}.mission-copy strong{margin-top:5px;color:#fff;font-size:13px;line-height:1.25}.inventory{display:flex;justify-content:center;gap:9px;min-width:0}.piece-button{position:relative;min-width:112px;height:100px;padding:6px 10px 9px;border:2px solid #ffffff35;border-radius:17px;background:#f4f0ff;color:#391698;font-size:12px;font-weight:1000;box-shadow:0 9px 22px #0005,inset 0 1px #fff;cursor:pointer;overflow:hidden;transition:.18s}.piece-button:hover{transform:translateY(-3px)}.piece-button.is-selected{border-color:var(--cyan);box-shadow:0 0 0 4px #00d9f52e,0 10px 25px #0006}.piece-button .piece-art{display:block;width:86px;height:62px;margin:-2px auto 1px;background-image:url('/simulator/assets/piece-atlas-v1.png');background-size:300% 200%;background-repeat:no-repeat}.piece-art-start{background-position:0 0}.piece-art-finish{background-position:50% 0}.piece-art-platform{background-position:100% 0}.piece-art-lava{background-position:0 100%}.piece-art-obstacle{background-position:50% 100%}.piece-art-decoration{background-position:100% 100%}.piece-button .piece-label{display:block;line-height:1}.piece-button em{position:absolute;right:7px;top:6px;display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:999px;background:#5420d2;color:#fff;font-style:normal;font-size:11px;box-shadow:0 4px 10px #3310804a}.actions{display:flex;gap:8px}.button{min-height:46px;padding:10px 17px;border:1px solid transparent;border-radius:13px;color:#fff;font-size:12px;font-weight:1000;cursor:pointer;box-shadow:0 8px 18px #0004,inset 0 1px #ffffff5c}.button-primary{background:linear-gradient(135deg,#7e36f7,#4619cb)}.button-secondary{border-color:#7758cb;background:#18234b;color:#dae4ff}.button-success{background:linear-gradient(135deg,#37cf78,#159650)}.button[hidden]{display:none}
@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:900px){.simulator{grid-template-rows:62px minmax(0,1fr) auto}.topbar{grid-template-columns:1fr auto;padding:8px 12px}.brand-cube{width:40px;height:40px}.brand strong{font-size:13px}.brand small{font-size:9px}.round-status{display:none}.control-deck{grid-template-columns:1fr;padding:10px 12px;gap:9px}.mission-copy{text-align:center}.inventory{overflow-x:auto;justify-content:flex-start;padding:2px}.piece-button{flex:0 0 88px}.actions{justify-content:center}.button{flex:1}.sound-button{padding:8px}.tip{top:10px;font-size:11px}}
body.is-embedded .simulator{grid-template-rows:minmax(0,1fr) 106px}body.is-embedded .topbar{display:none}
.piece-button .piece-art{background-image:url('./assets/piece-atlas-v1.png');background-size:330% 220%}.piece-art-start{background-position:0 4%}.piece-art-finish{background-position:50% 4%}.piece-art-platform{background-position:100% 4%}.piece-art-lava{background-position:0 96%}.piece-art-obstacle{background-position:50% 96%}.piece-art-decoration{background-position:100% 96%}
body[data-activity="part-purpose"] .simulator{grid-template-rows:74px minmax(0,1fr) 154px}body.is-embedded[data-activity="part-purpose"] .simulator{grid-template-rows:minmax(0,1fr) 154px}body[data-activity="part-purpose"] .control-deck{grid-template-columns:minmax(180px,.55fr) minmax(560px,1.8fr) auto}
.part-goal{height:112px;min-width:155px;padding:6px 10px;display:flex;align-items:center;gap:8px;border:1px solid #ffffff32;border-radius:15px;background:#f4f0ff;color:#391698}.part-goal img{width:76px;height:72px;object-fit:contain}.part-goal span,.part-goal small,.part-goal strong,.part-goal b{display:block}.part-goal small{color:#8b61ee;font-size:9px;letter-spacing:.08em}.part-goal strong{font-size:14px}.part-goal b{margin-top:3px;color:#686082;font-size:11px}.axis-grid{display:grid;grid-template-columns:repeat(3,minmax(135px,1fr));gap:7px;flex:1}.axis-control{padding:7px;display:grid;grid-template-columns:38px 34px 34px;grid-template-rows:auto 34px;justify-content:center;gap:4px;border:1px solid #ffffff27;border-radius:13px;background:#17224b;color:#fff}.axis-control>span{grid-column:1/-1;color:#b8ccff;font-size:10px;font-weight:1000}.axis-control button,.axis-control output{height:34px;display:grid;place-items:center;border-radius:9px;font-weight:1000}.axis-control button{border:1px solid #7658dd;background:#f4f0ff;color:#5220c5;font-size:19px;cursor:pointer}.axis-control output{background:#0a112b;color:#2ee4ff;font-size:15px}
.tool-button{width:138px;height:96px;padding:7px;display:grid;grid-template-columns:66px 1fr;align-items:center;border:2px solid #ffffff35;border-radius:16px;background:#f4f0ff;color:#4217a2;font-weight:1000;box-shadow:0 8px 18px #0004;cursor:pointer}.tool-button img{width:64px;height:70px;object-fit:contain}.tool-button span,.tool-button small{display:block}.tool-button small{margin-top:3px;color:#7c7397;font-size:9px}.tool-button.is-selected{border-color:#00d9f5;background:#e9fdff;box-shadow:0 0 0 4px #00d9f52e,0 8px 18px #0004}
.anchor-button{position:relative;width:108px;height:96px;padding:5px;display:grid;grid-template-columns:54px 1fr;align-items:center;border:2px solid #ffffff30;border-radius:15px;background:#f4f0ff;color:#4217a2;font-weight:1000;box-shadow:0 8px 18px #0004;cursor:pointer}.anchor-button>img,.anchor-button>.piece-art{width:54px;height:58px;object-fit:contain}.anchor-button>.piece-art{display:block;background-image:url('./assets/piece-atlas-v1.png');background-size:330% 220%;background-repeat:no-repeat}.anchor-button span,.anchor-button small{display:block}.anchor-button small{margin-top:3px;color:#766d91;font-size:9px}.anchor-button b{position:absolute;right:5px;top:5px;width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#dad3ef;font-size:11px}.anchor-button.is-anchored{border-color:#00d9f5;background:#e9fdff;box-shadow:0 0 0 4px #00d9f52e,0 8px 18px #0004}.anchor-button.is-anchored b{background:#5220c5;color:#fff}
.anchor-button b{top:auto;bottom:5px}
@media(max-width:1050px){body[data-activity="part-purpose"] .control-deck{grid-template-columns:1fr auto}.part-goal{display:none}.axis-grid{grid-column:1}.tool-button{width:118px}.anchor-button{width:92px}}
@media(max-width:900px){
  body.is-embedded .simulator{grid-template-rows:minmax(0,1fr) 116px}
  body.is-embedded .control-deck{grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:9px 12px;gap:8px}
  body.is-embedded .mission-copy{display:none}
  body.is-embedded .inventory{grid-column:1;grid-row:1;justify-content:flex-start;overflow-x:auto;padding:3px;scrollbar-width:thin}
  body.is-embedded .actions{grid-column:2;grid-row:1;align-self:stretch;align-items:center;justify-content:flex-end}
  body.is-embedded .button{flex:0 1 auto;min-height:42px;padding:8px 13px}
  body.is-embedded .piece-button{height:94px;flex-basis:104px;min-width:104px}
  body.is-embedded[data-activity="part-purpose"] .simulator{grid-template-rows:minmax(0,1fr) 96px}
  body.is-embedded[data-activity="part-purpose"] .control-deck{grid-template-columns:minmax(0,1fr) auto}
  body.is-embedded[data-activity="part-purpose"] .axis-grid{grid-column:1;grid-row:1;grid-template-columns:repeat(3,minmax(102px,1fr));gap:5px}
  body.is-embedded[data-activity="part-purpose"] .axis-control{grid-template-columns:32px 28px 32px;grid-template-rows:auto 32px;padding:5px 4px}
  body.is-embedded[data-activity="part-purpose"] .axis-control button,
  body.is-embedded[data-activity="part-purpose"] .axis-control output{height:32px}
  body.is-embedded .tool-button{width:108px;height:86px;grid-template-columns:48px 1fr;padding:5px;font-size:11px}
  body.is-embedded .tool-button img{width:46px;height:56px}
  body.is-embedded .tool-button small{display:none}
  body.is-embedded .anchor-button{width:98px;height:86px;grid-template-columns:46px 1fr;font-size:10px;text-align:left}
  body.is-embedded .anchor-button>img,
  body.is-embedded .anchor-button>.piece-art{width:44px;height:50px}
  body.is-embedded .anchor-button b{top:auto;bottom:5px}
}
.anchor-button b,
body.is-embedded .anchor-button b{left:32px;right:auto;top:5px;bottom:auto;width:22px;height:22px}

/* Experience shell: every current and future embedded template inherits this layout. */
.viewport .actions{position:absolute;z-index:7;top:16px;right:16px;display:flex;gap:9px}.viewport .actions .button{min-width:112px}.control-deck{grid-template-columns:minmax(180px,.55fr) minmax(0,1fr)}
.viewport>.sound-button{position:absolute;z-index:7;top:16px;left:18px;width:42px;height:42px;padding:0;display:grid;place-items:center;border:1px solid #a98cff;border-radius:13px;background:linear-gradient(145deg,#3d2687e8,#111c4aeb);color:#fff;font-size:18px;box-shadow:0 8px 22px #07112666,inset 0 1px #ffffff55;backdrop-filter:blur(10px)}
.viewport>.sound-button:hover{transform:translateY(-2px);box-shadow:0 11px 26px #0711267a,inset 0 1px #ffffff66}.viewport>.sound-button:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
body.is-embedded .simulator{position:relative;display:block;background:#9ddfff}
body.is-embedded .viewport{position:absolute;inset:0;width:100%;height:100%}
body.is-embedded .tip{top:16px;left:72px;max-width:min(44%,560px);transform:none;text-align:left}
body.is-embedded .control-deck,
body.is-embedded[data-activity="part-purpose"] .control-deck{position:absolute;z-index:6;left:0;right:0;bottom:0;height:118px;display:flex;align-items:center;justify-content:center;padding:10px 24px 12px;border:0;border-top:1px solid #a789ffb8;background:linear-gradient(105deg,#101c4bf2 0%,#342072f2 48%,#151d50f2 100%);box-shadow:0 -14px 38px #07112652,inset 0 1px #ffffff24;backdrop-filter:blur(14px) saturate(125%);pointer-events:none}
body.is-embedded[data-activity="part-purpose"] .control-deck{height:106px}
body.is-embedded .mission-copy{display:none}
body.is-embedded .inventory,
body.is-embedded[data-activity="part-purpose"] .axis-grid{width:auto;grid-column:auto;grid-row:auto;display:flex;align-items:center;justify-content:center;gap:clamp(12px,1.5vw,22px);padding:0;overflow-x:auto;pointer-events:auto;scrollbar-width:none}
body.is-embedded .inventory{width:100%;max-width:1120px;margin:0 auto}
body.is-embedded[data-activity="part-purpose"] .inventory{width:auto;max-width:100%;flex:0 1 auto}
body.is-embedded[data-activity="part-purpose"] .axis-grid{flex:0 1 auto}
body.is-embedded .inventory::-webkit-scrollbar{display:none}
body.is-embedded .piece-button,
body.is-embedded .tool-button,
body.is-embedded .anchor-button,
body.is-embedded .part-goal{height:94px;min-width:104px;width:auto;padding:4px 8px;border:0;border-radius:0;background:transparent;color:#fff;box-shadow:none;text-shadow:0 2px 6px #071126,0 1px 2px #071126;overflow:visible;filter:drop-shadow(0 8px 7px #07112670)}
body.is-embedded .piece-button:hover,
body.is-embedded .tool-button:hover,
body.is-embedded .anchor-button:hover{transform:translateY(-4px)}
body.is-embedded .piece-button.is-selected,
body.is-embedded .tool-button.is-selected,
body.is-embedded .anchor-button.is-anchored{border:0;background:transparent;box-shadow:none;filter:drop-shadow(0 0 8px var(--cyan)) drop-shadow(0 8px 7px #07112680);transform:translateY(-4px)}
body.is-embedded .piece-button .piece-art{width:86px;height:64px;margin:0 auto;background-size:330% 220%}
body.is-embedded .piece-button .piece-label{color:#fff;font-size:15px;line-height:1.08}
body.is-embedded .piece-button em{right:1px;top:1px;min-width:20px;height:20px;padding:0;color:var(--cyan);background:transparent;box-shadow:none;text-shadow:0 2px 5px #071126;font-size:12px}
body.is-embedded .tool-button{min-width:132px;grid-template-columns:70px auto;font-size:15px;text-align:left}
body.is-embedded .tool-button img{width:66px;height:70px;border-radius:12px;mix-blend-mode:multiply;filter:drop-shadow(0 5px 5px #07112688)}
body.is-embedded .tool-button span{color:#fff}body.is-embedded .tool-button small{display:block;margin-top:4px;color:#e7efff;font-size:11px;line-height:1.05}
body.is-embedded .anchor-button{min-width:122px;grid-template-columns:62px auto;font-size:14px;text-align:left}
body.is-embedded .anchor-button>img,
body.is-embedded .anchor-button>.piece-art{width:58px;height:62px;border-radius:12px;mix-blend-mode:multiply;filter:drop-shadow(0 5px 5px #07112688)}
body.is-embedded .anchor-button small{color:#e7efff;font-size:10px}body.is-embedded .anchor-button b{left:48px;top:0;width:26px;height:26px;color:#fff;background:#5522ce;border:2px solid #fff;box-shadow:0 4px 10px #07112680;text-shadow:none;font-size:12px}body.is-embedded .anchor-button b:empty{display:none}
body.is-embedded .part-goal{display:grid;grid-template-columns:68px auto;align-items:center;min-width:146px;text-align:left}
body.is-embedded .part-goal img{width:66px;height:64px;border-radius:12px;mix-blend-mode:multiply;filter:drop-shadow(0 5px 5px #07112688)}
body.is-embedded .part-goal small,body.is-embedded .part-goal strong,body.is-embedded .part-goal b{color:#fff}body.is-embedded .part-goal small{font-size:10px}body.is-embedded .part-goal strong{font-size:15px}body.is-embedded .part-goal b{font-size:12px}
body.is-embedded .axis-control{min-width:112px;padding:4px;display:grid;grid-template-columns:34px 32px 34px;grid-template-rows:auto 34px;gap:3px;border:0;border-radius:0;background:transparent;color:#fff;text-shadow:0 2px 6px #071126}
body.is-embedded .axis-control>span{color:#fff;font-size:11px;text-align:center}
body.is-embedded .axis-control button,
body.is-embedded .axis-control output{height:34px;border:0;border-radius:0;background:transparent;color:#fff;box-shadow:none;text-shadow:0 2px 6px #071126;font-size:21px}
body.is-embedded .axis-control output{color:var(--cyan);font-size:16px}
body.is-embedded .piece-button:focus-visible,
body.is-embedded .tool-button:focus-visible,
body.is-embedded .anchor-button:focus-visible,
body.is-embedded .axis-control button:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
@media(max-width:900px){body.is-embedded .tip{top:10px;left:60px;max-width:42%;font-size:10px}.viewport>.sound-button{top:10px;left:10px;width:40px;height:40px}.viewport .actions{top:10px;right:10px}.viewport .actions .button{min-width:92px;padding:8px 11px}.control-deck{height:104px}body.is-embedded .control-deck,body.is-embedded[data-activity="part-purpose"] .control-deck{height:104px;padding:9px 14px 10px}body.is-embedded .piece-button,body.is-embedded .tool-button,body.is-embedded .anchor-button{min-width:96px}body.is-embedded .piece-button .piece-label{font-size:13px}body.is-embedded .tool-button{font-size:13px}body.is-embedded .tool-button small{font-size:10px}}
