:root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-synthesis:none;color:#474638;background:#ece8de;--accent:#66755a;--ink:#454737;--muted:#929181;--line:#d1ccbd}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #a68b50;outline-offset:3px}[hidden]{display:none!important}.app{height:100dvh;max-width:1380px;margin:auto;padding:max(17px,env(safe-area-inset-top)) max(30px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(30px,env(safe-area-inset-left));display:flex;flex-direction:column}.header{display:flex;align-items:center;gap:25px;min-height:42px;flex-shrink:0}.brand{font:700 43px/1 Georgia,serif;letter-spacing:-3px;color:#494b37;text-decoration:none}.brand span{color:#b39250}.brand-caption{font-size:8px;letter-spacing:2px;border-left:1px solid var(--line);padding-left:22px;color:#7e8171}.brand-caption span{display:block;font-size:10px;letter-spacing:.2px;margin-top:6px;color:#a09b88}.header-actions{margin-left:auto;display:flex;gap:7px}.button{background:#f4f1e8;border:1px solid #d7d1c4;border-radius:7px;min-height:34px;padding:7px 11px;font-size:12px;display:flex;align-items:center;gap:7px}.button:hover:not(:disabled){background:#fffaf0}.button:disabled{opacity:.4}.icon-button{width:34px;justify-content:center;padding:6px}.button[aria-pressed=true]{background:#d8dfcd}.active small{color:#d3d7c4}.challenge-panel{display:flex;justify-content:space-between;align-items:center;gap:25px;flex-shrink:0;padding:22px 2px 18px;min-height:106px}.challenge-copy{flex:1;min-width:0}.eyebrow{font-size:7px;letter-spacing:1.7px;color:#919380;margin:0 0 6px;text-transform:uppercase}h1{font:400 25px/1.14 Georgia,serif;letter-spacing:-.4px;margin:0;color:var(--ink)}#mode-hint{font-size:10px;line-height:1.5;color:#8d8773;margin:6px 0 0}.challenge-metrics{max-width:40%;text-align:right}#mode-progress{display:flex;gap:16px}.progress-item{position:relative;text-align:left;min-width:85px;padding-bottom:8px;font-size:9px;color:#88836e}.progress-item span{display:block;margin-bottom:4px}.progress-item b{font-weight:500;font-size:11px;color:#6d7357}.progress-item i{position:absolute;bottom:0;left:0;right:0;height:3px;border-radius:4px;overflow:hidden;background:#d7d1bf}.progress-item i:after{content:'';display:block;height:100%;width:var(--fill,0%);background:var(--progress-color,#929d71);transition:width .25s}.progress-item.complete b{color:#617c4c}#throws-readout{display:block;margin-top:5px;font-size:8px;color:#a29b89}.playground{flex:1;min-height:292px;border:1px solid #c4c5ad;border-radius:12px;overflow:hidden;box-shadow:0 8px 30px #3a382112;display:flex;flex-direction:column}.stage{position:relative;flex:1;min-height:200px;background:#d5d8c6;overflow:hidden}.stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.stage canvas:active{cursor:grabbing}.stage-top{position:absolute;top:14px;left:19px;right:16px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}#area-name{font-size:7px;letter-spacing:2px;color:#5b645a;background:#f9f6e1a3;padding:6px 9px;border-radius:4px}#slow-button{pointer-events:auto;background:#fff9e2a1;border:1px solid #7d846730;border-radius:5px;padding:6px 9px;font-size:9px;color:#6c735c}#slow-button[aria-pressed=true]{background:#718054;color:#fff6df}.stage-bottom{position:absolute;bottom:13px;left:19px;right:19px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}#impact-readout{font-size:9px;margin:0;color:#65705d;background:#fff9e6c7;border-radius:4px;padding:5px 8px;max-width:80%}#aim-power{background:#4c624dcf;border-radius:4px;font-size:9px;padding:5px 8px;color:#f8f8e6}.world-navigation{display:flex;align-items:center;justify-content:center;gap:12px;flex-shrink:0;min-height:50px;background:#f6f3e7;border-top:1px solid #cbcbb6;padding:2px 8px}.world-navigation>button{border:0;border-radius:50%;background:#e3e3ce;width:44px;height:44px;flex:0 0 44px;font-size:18px;touch-action:manipulation}.world-navigation>button:disabled{opacity:.35}#region-map{display:flex;gap:9px;font-size:8px;color:#8b8e7d;white-space:nowrap}.region-dot{display:flex;align-items:center;gap:4px}.region-dot:before{content:'';width:4px;height:4px;border-radius:50%;background:#bcbcaf}.region-dot.found{color:#506543}.region-dot.found:before{background:#7f985d}.adventure-message{min-height:39px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 17px;background:#f6f3e7;color:#8a8169;border-top:1px solid #cbcbb6;font-size:10px}#retry-button{background:#e7ead7;border:1px solid #c6ceb0;border-radius:5px;font-size:9px;white-space:nowrap;padding:5px 8px}.fruit-picker{margin-top:11px;flex-shrink:0}.fruit-tray{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.fruit-card{display:flex;align-items:center;gap:11px;min-height:70px;border:1px solid #d1cbbd;background:#f5f1e6;border-radius:9px;padding:5px 13px 5px 8px;text-align:left}.fruit-card.selected{border-color:#99a175;background:#ececd8;box-shadow:0 0 0 1px #99a17524}.fruit-card:not(:disabled):hover{background:#f9f6e8}.fruit-icon{width:46px;height:58px;flex:0 0 46px}.fruit-copy{flex:1}.fruit-copy strong{font-size:12px;font-weight:500}.fruit-copy small{display:block;font-size:8px;color:#9b927b;margin-top:6px}.fruit-stock{font-size:18px;color:#98a072}.fruit-card.locked{opacity:.48}.fruit-card.locked .fruit-icon{filter:grayscale(1) brightness(.68)}.fruit-card.empty:not(.locked){opacity:.6}.fruit-card.newly-found{animation:found .8s ease}@keyframes found{50%{box-shadow:0 0 0 4px #c5d49b;background:#f2f4d7}}footer{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:8px;color:#aaa18d;margin-top:8px;flex-shrink:0}footer a{color:#9a907a;text-decoration:none}footer a:hover{text-decoration:underline}kbd{font:8px inherit;border:1px solid #d7cfbd;border-radius:3px;padding:0 3px}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#e6e7d7;color:#7d856e;font-size:12px}.loading-dot{width:8px;height:8px;border-radius:50%;background:#8d9c6a;animation:pulse 1s ease infinite alternate}@keyframes pulse{to{opacity:.25}}dialog{max-width:570px;width:calc(100vw - 30px);max-height:85dvh;overflow:auto;border:1px solid #c8c5ad;border-radius:13px;background:#f6f3e6;color:#6e735e;padding:30px;box-shadow:0 25px 80px #2a302b40}dialog::backdrop{background:#3e4a3970;backdrop-filter:blur(4px)}dialog h2{font:30px Georgia,serif;margin:8px 0 16px;color:#565f42}dialog p{font-size:12px;line-height:1.8}dialog b{font-weight:500;color:#586443}.dialog-close{position:absolute;right:12px;top:10px;font-size:24px;background:none;border:0;color:#92977d}.dialog-footnote{font-size:10px;color:#a29e85}body[data-mode=journey]{--accent:#697f7a;--ink:#455d55}
@media(max-width:800px){.app{padding:max(12px,env(safe-area-inset-top)) max(17px,env(safe-area-inset-right)) max(9px,env(safe-area-inset-bottom)) max(17px,env(safe-area-inset-left))}.brand-caption{display:none}.challenge-panel{gap:15px}.challenge-metrics{max-width:45%}h1{font-size:22px}.fruit-copy small{font-size:7px}.fruit-copy strong{font-size:11px}}
@media(max-width:600px){.app{padding:max(10px,env(safe-area-inset-top)) max(11px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(11px,env(safe-area-inset-left))}.header{min-height:35px}.brand{font-size:34px}.header-actions{gap:4px}.button{min-height:31px;font-size:10px;padding:5px 7px}.icon-button{width:29px}.challenge-panel{display:block;padding:13px 2px 11px;min-height:135px}.challenge-metrics{max-width:100%;display:flex;align-items:center;gap:12px;margin-top:10px}#mode-progress{gap:12px;flex:1}.progress-item{font-size:8px;flex:1;min-width:70px}.progress-item b{font-size:9px}#throws-readout{font-size:7px;margin:0}h1{font-size:21px}.eyebrow{font-size:6px}#mode-hint{font-size:9px;line-height:1.5}.playground{min-height:290px;border-radius:9px}.stage{min-height:196px}.stage-top{top:11px;left:12px;right:11px}#area-name{font-size:6px;padding:5px 7px;letter-spacing:1px}#slow-button{font-size:8px;padding:5px 7px}.stage-bottom{left:11px;right:11px;bottom:11px}#impact-readout{font-size:8px}#aim-power{font-size:8px}.world-navigation{gap:8px}#region-map{font-size:7px;gap:7px}.adventure-message{font-size:9px;line-height:1.4;padding:8px 11px;min-height:41px}.fruit-picker{margin-top:8px}.fruit-tray{gap:5px}.fruit-card{padding:4px 5px;gap:3px;flex-direction:column;min-height:76px;position:relative;text-align:center}.fruit-icon{width:35px;height:44px;flex-basis:44px}.fruit-copy strong{font-size:9px}.fruit-copy small{display:none}.fruit-stock{position:absolute;top:7px;right:7px;font-size:12px}footer{font-size:7px;margin-top:7px}footer>span:first-child{font-size:0}footer>span:first-child:after{content:'Pull back. Throw. Reuse the pieces.';font-size:7px}footer kbd,footer .journey-rule{display:none}}
@media(max-height:540px) and (orientation:landscape){.app{display:grid;grid-template-columns:minmax(0,1fr) 185px;grid-template-rows:33px 1fr;padding:max(8px,env(safe-area-inset-top)) max(13px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(13px,env(safe-area-inset-left));gap:7px 11px}.header{grid-column:1/-1;min-height:33px}.brand{font-size:33px}.brand-caption{display:none}.challenge-panel{grid-column:2;grid-row:2;align-self:start;display:block;padding:2px 0;min-height:0}h1{font-size:19px}#mode-hint{font-size:9px}.challenge-metrics{max-width:100%;display:block;margin-top:12px}#mode-progress{display:block}.progress-item{margin-bottom:10px}.progress-item span{display:inline-block;margin-right:5px;max-width:125px}#throws-readout{text-align:left;font-size:8px}.playground{grid-column:1;grid-row:2;min-height:0}.stage{min-height:0}.fruit-picker{grid-column:2;grid-row:2;align-self:end;margin:0;z-index:2}.fruit-tray{gap:4px}.fruit-card{padding:3px;flex-direction:column;gap:0;min-height:61px;position:relative}.fruit-icon{width:30px;height:38px;flex:0 0 38px}.fruit-copy strong{font-size:7px}.fruit-copy small{display:none}.fruit-stock{position:absolute;top:4px;right:4px;font-size:9px}.adventure-message{min-height:34px;padding:6px 10px;font-size:8px}footer{display:none}.stage-top{top:10px;left:12px}.stage-bottom{bottom:9px;left:12px}#area-name{font-size:6px}#impact-readout{font-size:7px}.world-navigation{gap:9px}}
@media(max-height:720px) and (max-width:600px) and (orientation:portrait){.challenge-panel{min-height:117px;padding:10px 2px}h1{font-size:19px}.playground{min-height:247px}.stage{min-height:158px}.fruit-card{min-height:63px}.fruit-icon{height:35px;flex-basis:35px}.adventure-message{min-height:37px}footer{margin-top:5px}}
@media(max-height:560px) and (orientation:portrait){.playground{min-height:190px}.stage{min-height:100px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

#levels{max-width:660px;padding:29px}.level-intro{margin:0 0 20px;color:#8c8e78}.level-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}.level-card{display:grid;grid-template-columns:32px 1fr;gap:10px;text-align:left;padding:17px 13px 12px;min-height:150px;border:1px solid #d3ceba;border-radius:9px;background:#eeeadd;transition:background .15s}.level-card:hover{background:#e8e8d6}.level-card.current{border-color:#909f71;background:#e5e8d1}.level-number{font:22px Georgia,serif;color:#aba67f}.level-copy strong{display:block;font:20px/1.12 Georgia,serif;color:#4c5f45}.level-copy small{display:block;font:11px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#8c826a;margin-top:8px}.level-state{grid-column:2;font-size:9px;color:#7e8c58;align-self:end;margin-top:8px}.level-card.completed .level-state{color:#577a46}#level-summary{margin-bottom:0}.header-actions{gap:6px}
@media(max-width:600px){.header{gap:10px}.header-actions{gap:4px}.header-actions .button{gap:4px}#levels{padding:25px 18px}.level-list{grid-template-columns:1fr;gap:8px}.level-card{min-height:100px;padding:13px;grid-template-columns:29px 1fr auto;gap:9px}.level-copy strong{font-size:19px}.level-copy small{font-size:10px;margin-top:5px}.level-state{grid-column:3;align-self:center;font-size:8px}.level-intro{font-size:11px;margin-bottom:15px}}
@media(max-width:360px){.header-actions .button{padding:5px}.header{gap:6px}.brand{font-size:30px}.level-card{grid-template-columns:24px 1fr}.level-state{grid-column:2;margin-top:0}.header-actions .icon-button{width:25px}}
