/* Original generated sprites, not CSS-drawn game art. Numerals reflect stored progress. */
#journey,#structureAtlas { width:calc(100% - 48px);max-width:1380px;margin:24px auto 0;padding-bottom:60px; }
.home-learning-entries { display:grid;grid-template-columns:2fr 1fr;gap:20px;margin-top:20px; }
.journey-overview,.structure-entry { border:1px solid var(--line);background:var(--surface);padding:18px 20px; }
.journey-overview { display:flex;gap:16px;align-items:center;flex-wrap:wrap; }
.journey-overview>div:nth-child(2) { flex:1;min-width:200px; }
.journey-overview h2,.structure-entry h2 { font-size:19px;margin:3px 0; }
.journey-overview p,.structure-entry p { font-size:13px;margin:4px 0; }
.journey-overview .primary { font-size:13px;padding:8px 12px; }
.journey-overview-character { background:var(--ink);padding:6px; }
.journey-overview .journey-sprite { width:56px;height:56px; }
.structure-entry { display:flex;flex-direction:column;justify-content:center;align-items:flex-start; }
.structure-entry button { margin-top:7px;font-size:13px; }
.journey-page-head,.journey-section-head { display:flex;justify-content:space-between;gap:20px;align-items:center; }
.journey-page-head h1 { margin:6px 0;font-size:30px; }
.journey-page-head p,.journey-section-head p { margin:5px 0;color:var(--muted);font-size:14px; }
.journey-controls { display:flex;gap:8px;flex-wrap:wrap; }
.journey-main { display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,1fr);gap:30px;padding:20px; }
.journey-world { height:100%;min-height:450px;position:relative;background:var(--ink);overflow:hidden;border:1px solid var(--ink); }
.journey-environment { position:absolute;top:50%;left:0;width:100%;aspect-ratio:1;transform:translateY(-50%);background-image:url('journey/environments.png');background-size:400% 200%;image-rendering:pixelated; }
.journey-environment-next { transition:opacity .35s ease; }
.journey-world.early-universe { background-image:url('journey/early-universe.png');background-size:cover;background-position:center;image-rendering:pixelated; }
.journey-world-caption { position:absolute;left:12px;top:12px;padding:5px 10px;background:var(--surface);color:var(--ink);font-size:12px;font-weight:700; }
.journey-walker { position:absolute;bottom:26px;left:calc(var(--travel,0%) + var(--travel-offset,16px));transition:left 1.4s steps(12,end); }
.is-walking .journey-walker { animation:journey-step-forward 1.4s steps(8,end); }
@keyframes journey-step-forward { 0%,100%{transform:translateX(0)}45%{transform:translateX(6px)} }
.journey-sprite { position:relative;display:inline-block;width:var(--character-size,64px);height:var(--character-size,64px);background-image:url('journey/characters.png');background-size:var(--sheet-width,400%) var(--sheet-height,800%);background-position:0 var(--sprite-row,0%);image-rendering:pixelated;vertical-align:middle; }
/* Eight actual drawings use a common y=581 baseline and scale, never per-pose stretching. */
.journey-sprite.avatar-posture,.journey-sprite.avatar-origins { background-image:none;overflow:hidden; }
.avatar-posture::before,.avatar-posture::after { content:"";position:absolute;left:14.463%;top:0;width:71.074%;height:100%;background-image:url('journey/evolution-postures.png');background-size:800% 189.5288%;background-position:var(--posture-x,0%) 58.4795%;image-rendering:pixelated;opacity:calc(1 - var(--posture-blend,0)); }
.avatar-posture::after { background-position-x:var(--posture-next-x,0%);opacity:var(--posture-blend,0); }
.avatar-origins::before { content:"";position:absolute;inset:0;background-image:url('journey/origins.png');background-size:300% 100%;background-position:var(--origins-x,0%) 0;image-rendering:pixelated; }
.journey-main-character { filter:drop-shadow(2px 3px 0 #163b3255);animation:journey-float 3s steps(4,end) infinite; }
.is-walking .journey-sprite:not(.avatar-posture):not(.avatar-origins) { animation:journey-walk .4s steps(1,end) 4; }
.is-walking .avatar-posture,.is-walking .avatar-origins { animation:journey-step-body .4s steps(3,end) 4; }
@keyframes journey-step-body { 0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-4px) rotate(-2deg)} }
.is-walking .avatar-posture::before { left:var(--walk-left);top:var(--walk-top);width:var(--walk-width);height:var(--walk-height);background-image:var(--walk-image);background-size:400% 100%;background-position:0 0;opacity:1;animation:journey-limb-cycle .4s steps(1,end) 4; }
.is-walking .avatar-posture::after { visibility:hidden; }
@keyframes journey-limb-cycle { 0%,24%{background-position-x:var(--walk-x0,0%)}25%,49%{background-position-x:var(--walk-x1,33.3333%)}50%,74%{background-position-x:var(--walk-x2,66.6667%)}75%,100%{background-position-x:var(--walk-x3,100%)} }
.motion-paused .avatar-posture::before,.motion-paused .avatar-posture::after{animation:none!important}
@keyframes journey-walk { 0%,24%{background-position-x:0}25%,49%{background-position-x:33.3333%}50%,74%{background-position-x:66.6667%}75%,100%{background-position-x:100%} }
@keyframes journey-float { 0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)} }
.journey-detail { padding:10px 10px 4px; }
.journey-detail h2 { margin:7px 0 0;font-size:28px; }
.journey-detail>p { font-size:14px; }
.journey-count { display:flex;align-items:baseline;gap:10px;margin:14px 0 8px; }
.journey-count>strong { font-size:40px;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink); }
.journey-count>span { font-size:14px;color:var(--muted); }
progress.journey-progress,.journey-tower progress { appearance:none;display:block;width:100%;height:9px;border:0;background:var(--sage);border-radius:0; }
progress::-webkit-progress-bar { background:var(--sage); }progress::-webkit-progress-value { background:var(--moss); }progress::-moz-progress-bar { background:var(--moss); }
.journey-numbers { display:flex;justify-content:space-between;font-size:13px;margin-top:8px; }
.journey-next { color:var(--ink);font-weight:650; }
.journey-policy { color:var(--muted);font-size:12px!important;border-top:1px solid var(--line);padding-top:10px; }
.journey-sync { display:flex;align-items:center;gap:10px;min-height:44px;font-size:12px;color:var(--muted);margin:7px 0 18px; }
.journey-sync .secondary { min-height:36px;font-size:12px;padding:5px 10px; }
.journey-stages { list-style:none;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:0;margin:18px 0 0; }
.journey-stages li { display:flex;flex-direction:column;align-items:center;text-align:center;padding:8px 5px;border:1px solid var(--line);background:var(--surface); }
.journey-stages li:not(.unlocked) .journey-sprite { filter:grayscale(1);opacity:.4; }
.journey-stages li.current { border:2px solid var(--ink);padding:7px 4px;background:var(--sage); }
.journey-stages strong { display:block;font-size:13px; }.journey-stages small,.journey-stage-state { display:block;font-size:11px;color:var(--muted); }
.journey-fiction { font-size:12px;color:var(--muted);margin:12px 0 30px; }
.journey-towers { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:16px 0 32px; }
.journey-tower { display:grid;grid-template-columns:115px minmax(0,1fr);gap:12px;min-height:240px;border:1px solid var(--line);background:var(--surface);padding:12px; }
.tower-art-wrap { position:relative;width:115px;height:230px;overflow:visible; }
.tower-art { position:absolute;inset:0;background-image:url('journey/towers.png');background-size:300% 100%;image-rendering:pixelated; }
.tower-plant { background-position:0 0; }.tower-human { background-position:50% 0; }.tower-genetics { background-position:100% 0; }
.tower-climber { position:absolute;left:-6px;bottom:calc(5% + var(--climb,0%));transition:bottom 1s steps(10,end); }
.tower-climber .journey-sprite { width:34px;height:34px;filter:drop-shadow(1px 1px 0 var(--surface)); }
.tower-level { position:absolute;bottom:0;right:2px;font-size:10px;background:var(--surface);padding:0 4px; }
.tower-copy { display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-width:0; }
.tower-copy h3 { margin:4px 0 7px;font-size:15px; }.tower-copy p { margin:0 0 9px;font-size:12px; }
.tower-copy small { color:var(--muted);font-size:11px;margin:9px 0 12px; }.tower-copy button { font-size:12px;min-height:44px;padding:7px 10px; }
.tower-complete { border-color:var(--ochre); }.journey-tower.unavailable { opacity:.55; }.journey-tower.unavailable .tower-art { filter:grayscale(1); }
.journey-collection>p { font-size:13px; }.journey-stars-grid { display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px; }
.journey-star-card { padding:12px 8px;min-height:172px;background:var(--paper);border:1px solid var(--line);cursor:pointer;display:flex;align-items:center;flex-direction:column;text-align:center; }
.journey-star-card.collected { border-color:var(--ochre);background:#f1ead5; }.journey-star-card strong { font-size:12px; }.journey-star-card>span:not(.reward-sprite) { font-size:12px;line-height:1.45;margin:5px 0; }.journey-star-card small { font-size:10px;color:var(--muted);margin-top:auto; }
.reward-sprite { display:inline-block;width:64px;height:64px;flex:none;background-image:url('journey/rewards.png');background-size:300% 200%;image-rendering:pixelated; }
.reward-empty { background-position:0 100%; }.reward-gold { background-position:50% 100%; }
.journey-constellation { margin-top:25px;text-align:center;background:var(--ink);color:var(--paper);padding:20px; }.journey-constellation h3 { color:var(--paper); }
.journey-version { padding:18px 0;font-size:12px;color:var(--muted); }.journey-version summary { cursor:pointer;font-weight:650; }
.journey-loading .journey-towers,.journey-loading .journey-collection,.journey-loading .journey-stages { visibility:hidden; }
.journey-loading .journey-walker,.journey-loading .journey-environment,.journey-loading .journey-world-caption { visibility:hidden; }
.reward-dialog { position:fixed;inset:0;z-index:110;display:grid;place-items:center;padding:18px;background:#163b32c9; }
.reward-card { position:relative;width:min(100%,500px);max-height:calc(100dvh - 36px);overflow:auto;background:var(--surface);border:2px solid var(--ink);padding:28px;text-align:center; }
.reward-card h2 { font-size:22px;margin:12px 0 7px; }.reward-card>p { font-size:13px; }.reward-close { display:block;margin:0 0 16px auto; }.reward-card>button:not(.reward-close) { display:block;margin:10px auto; }
.reward-stage { position:relative;height:240px;margin-top:16px;overflow:hidden;background:var(--sage); }
.reward-block { position:absolute;left:calc(50% - 48px);top:26px;width:96px;height:96px;background-position:0 0; }
.reward-jumper { position:absolute;width:96px;height:96px;left:calc(50% - 48px);bottom:10px; }
.reward-pop-star { position:absolute;left:calc(50% - 40px);top:36px;width:80px;height:80px;background-position:50% 100%;opacity:0; }
.reward-stage.is-jumping .reward-jumper { animation:reward-jump 1.2s steps(12,end); }.reward-stage.is-jumping .reward-block { animation:reward-bump 1.2s steps(4,end); }.reward-stage.is-jumping .reward-pop-star { animation:reward-pop 1.5s steps(12,end) forwards; }
.reward-stage.is-collected .reward-block { background-position:100% 0; }.reward-stage.is-collected .reward-pop-star { opacity:1;top:5px; }.reward-stage.is-collected .reward-jumper { left:calc(50% + 36px); }
@keyframes reward-jump { 0%,100%{transform:translateY(0)}40%,48%{transform:translateY(-31px)} }
@keyframes reward-bump { 0%,39%,100%{transform:translateY(0);background-position:0 0}40%,55%{transform:translateY(-10px);background-position:50% 0}65%,99%{background-position:100% 0} }
@keyframes reward-pop { 0%,44%{opacity:0;transform:translateY(0)}45%{opacity:1;transform:translateY(0)}70%{opacity:1;transform:translateY(-50px)}100%{opacity:1;transform:translateY(-31px)} }
.motion-paused .journey-sprite,.motion-paused .journey-walker,.motion-paused .reward-stage * { animation:none!important; }.motion-paused .journey-walker,.motion-paused .tower-climber { transition:none!important; }
@media(max-width:1300px){.global-nav{gap:12px}.site-nav-button{padding:9px 7px;font-size:12px}.account-info{max-width:110px}.journey-towers{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1000px){.desktop-nav{display:none}.mobile-menu-button{display:block}.home-learning-entries{grid-template-columns:1fr}.journey-stages{grid-template-columns:repeat(4,minmax(0,1fr))}.journey-main{grid-template-columns:minmax(0,1fr) minmax(260px,1fr);gap:18px}.journey-world{height:290px}.journey-stars-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:700px){#journey,#structureAtlas{width:calc(100% - 24px);margin-top:18px}.journey-page-head,.journey-section-head{align-items:flex-start;flex-direction:column;gap:8px}.journey-page-head h1{font-size:25px}.journey-main{grid-template-columns:1fr;padding:12px;gap:12px}.journey-world{height:270px}.journey-detail{padding:5px 5px 0}.journey-detail h2{font-size:24px}.journey-stages{gap:6px}.journey-stages .journey-sprite{width:50px;height:50px}.journey-stages li{padding:7px 3px}.journey-stages strong{font-size:11px}.journey-towers{grid-template-columns:1fr}.journey-stars-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.journey-collection{padding:14px}.journey-star-card{padding:8px 4px;min-height:172px}.journey-star-card>span:not(.reward-sprite){font-size:11px}.journey-sync{align-items:flex-start;flex-direction:column}.journey-overview{padding:14px;gap:10px}.journey-overview>div:nth-child(2){min-width:180px}.journey-overview .primary{width:100%}.journey-controls{width:100%;margin:5px 0}.journey-controls button{font-size:12px}.reward-card{padding:18px}.journey-collection .journey-section-head{gap:10px}.journey-world-caption{font-size:11px}}
@media(prefers-reduced-motion:reduce){.journey-sprite,.journey-walker,.reward-stage *{animation:none!important}.journey-walker,.tower-climber{transition:none!important}}
@media print{#journey,#structureAtlas,.home-learning-entries,.reward-dialog{display:none!important}}
@media(max-width:700px){.journey-world{height:270px;min-height:270px}}
.motion-paused .journey-environment-next{transition:none!important}
/* Topic collections use original transparent pixel objects, not more awards. */
.journey-star-card{position:relative;min-height:224px;padding-top:18px}
.journey-star-card>.reward-sprite{position:absolute;right:5px;top:5px;width:24px;height:24px}
.topic-collectible{display:block;width:80px;height:80px;object-fit:contain;image-rendering:pixelated;flex:none}
.journey-star-card .collectible-name{font-size:13px!important;font-weight:700;color:var(--ink);margin:8px 0!important}
.journey-star-card:not(.collected) .topic-collectible{filter:grayscale(1);opacity:.3}
.journey-star-card:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.reward-item-name{display:block;margin:12px 0 16px;font-size:14px;text-align:center}
.reward-pop-item{position:absolute;width:86px;height:86px;top:36px;left:calc(50% + 6px);opacity:0}
.reward-stage .reward-pop-star{left:calc(50% - 88px)}
.reward-stage.is-jumping .reward-pop-item{animation:reward-pop 1.5s steps(12,end) forwards}
.reward-stage.is-collected .reward-pop-item{opacity:1;top:5px}
@media(max-width:700px){.journey-star-card{min-height:214px}.journey-star-card .collectible-name{font-size:11px!important}.topic-collectible{width:68px;height:68px}}
@media(prefers-reduced-motion:reduce){.journey-environment-next{transition:none!important}}
@media(prefers-reduced-motion:reduce){.avatar-posture::before,.avatar-posture::after{animation:none!important}}
