:root{--game-max-width:100vw;--primary-color:#006bb3;--secondary-color:#0095ff;--success-color:#057642;--error-color:#cc1016;--warning-color:#f7b500;--obstacle-color:#c50;--background-color:#f3f2ef;--card-background:#fff;--border-color:#e0e0e0;--accent-color:#5e5e5e;--game-area-background:#0000;--canvas-background:#fff;--ground-color:#e0e0e0;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-xxl:48px;--font-family-base:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto",sans-serif;--font-family-mono:"Courier New",Courier,monospace;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-xxl:1.5rem;--font-size-logo:1.70rem;--shadow-sm:0 2px 4px #0000001a;--shadow-md:0 4px 8px #00000026;--shadow-lg:0 4px 12px #00000026;--shadow-xl:0 6px 24px #0003;--shadow-focus:0 0 0 3px #2b4c5e4d;--game-max-width:600px;--game-aspect-ratio:600/750;--header-height:48px;--level-indicator-size:32px;--control-button-size:50px;--launch-button-size:60px;--control-button-size-mobile:44px;--launch-button-size-mobile:56px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:20px;--radius-full:50%;--transition-fast:0.2s ease-in-out;--transition-base:0.3s ease-in-out;--z-index-overlay:5;--z-index-controls:10;--z-index-bounce-display:40;--z-index-loading:100;--z-index-modal:1000;--opacity-disabled:0.5;--opacity-hover:0.7;--opacity-bounce-display:0.75}*{box-sizing:border-box}#root,body,html{height:100%;margin:0;padding:0}body{background:var(--background-color);color:var(--accent-color);font-family:var(--font-family-base);font-size:var(--font-size-base)}.app{flex-direction:column;height:100%}.app,.game-wrapper{display:flex;overflow:hidden}.game-wrapper{flex:1 1;flex-direction:column;min-height:0}.visually-hidden{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.loading-overlay{align-items:center;background:#fffc;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:var(--z-index-loading)}.loading-spinner{animation:spin 1s linear infinite;border-top:3px solid var(--border-color);border:3px solid var(--border-color);border-radius:var(--radius-full);border-top-color:var(--primary-color);height:40px;width:40px}.loading-overlay p{color:var(--accent-color);font-weight:500;margin-top:1rem}.loading{align-items:center;color:var(--accent-color);display:flex;font-size:1.2rem;height:100%;justify-content:center}.error-banner{background-color:#fee;border:1px solid #fcc;border-radius:var(--radius-sm);color:var(--error-color);margin:.5rem;padding:1rem;text-align:center}.error-banner .retry-button{background:var(--error-color);border:none;border-radius:var(--radius-sm);color:#fff;cursor:pointer;margin-top:.5rem;padding:.5rem 1rem;transition:background-color var(--transition-fast)}.error-banner .retry-button:hover{background:#b30e14}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes pulse{0%{box-shadow:0 0 0 0 #0a66c266}70%{box-shadow:0 0 0 10px #0a66c200}to{box-shadow:0 0 0 0 #0a66c200}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.collision-effects{pointer-events:none}button:focus-visible{outline-offset:4px}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:var(--background-color)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--accent-color)}.bounce-plot{flex-direction:column;height:100%;overflow:hidden;width:100%}.bounce-plot,.game-header{background:var(--card-background);display:flex}.game-header{align-items:center;border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;min-height:var(--header-height);padding:.75rem 1rem}.header-button{align-items:center;background:none;border:none;color:var(--accent-color);cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:opacity var(--transition-fast)}.header-button:hover{opacity:var(--opacity-hover)}.header-button svg{height:24px;width:24px}.game-logo{color:var(--primary-color);font-family:var(--font-family-mono);font-size:var(--font-size-logo);font-weight:700;margin:0}.level-indicators-container{align-items:center;background:var(--background-color);border-bottom:1px solid var(--border-color);flex-shrink:0;padding:.5rem}.level-indicators,.level-indicators-container{display:flex;gap:1rem;justify-content:center}.level-indicator{align-items:center;background:none;border:none;border-radius:var(--radius-full);cursor:pointer;display:flex;font-size:12px;font-weight:600;height:var(--level-indicator-size);justify-content:center;padding:0;position:relative;transition:all var(--transition-fast);width:var(--level-indicator-size)}.level-indicator.pending{background:var(--card-background);border:2px solid var(--border-color);color:var(--accent-color)}.level-indicator.active{background:var(--primary-color);box-shadow:var(--shadow-focus);color:#fff}.level-indicator.completed{background:var(--card-background);border:2px solid var(--border-color);color:#00000026}.level-indicator.completed:after,.level-indicator.failed:after{color:var(--success-color);content:"✓";font-size:14px;font-weight:700;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.level-indicator.failed{background:var(--card-background);border:2px solid var(--border-color);color:#0000}.level-indicator.locked{background:var(--card-background);border:2px dashed var(--border-color);color:#999;cursor:not-allowed;opacity:var(--opacity-hover);overflow:hidden;position:relative}.level-indicator.locked:before{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 20" fill="none"><rect x="1" y="8" width="14" height="11" rx="2" stroke="%23666666" stroke-width="2"/><path d="M4 8V5C4 2.79086 5.79086 1 8 1C10.2091 1 12 2.79086 12 5V8" stroke="%23666666" stroke-width="2" stroke-linecap="round"/><circle cx="8" cy="13" r="1.5" fill="%23666666"/></svg>');background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";height:15px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}.level-indicator.locked:after{display:none}.level-indicator:disabled{cursor:not-allowed}.summary-indicator-button{align-items:center;background:var(--primary-color);border:none;border-radius:var(--radius-full);color:#fff;cursor:pointer;display:flex;height:var(--level-indicator-size);justify-content:center;margin-left:.5rem;padding:0;transition:all var(--transition-fast);width:var(--level-indicator-size)}.summary-indicator-button:hover{background:var(--secondary-color);transform:scale(1.05)}.summary-indicator-button svg{height:20px;width:20px}.game-area{flex:1 1;min-height:0}.game-area,.game-canvas-container{background:#0000;display:flex;overflow:hidden;position:relative}.game-canvas-container{align-items:flex-start;height:100%;justify-content:center;padding:0;width:100%}.game-canvas-wrapper{background:#0000;border-radius:0;box-shadow:none;position:relative;transition:transform .2s ease-out;will-change:transform}.game-svg-layer{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:#fff;display:block;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;width:100%}.game-canvas-layer{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.draw-overlay{cursor:crosshair!important}.bounce-display{align-items:center;background:#ffffff26;border:1px solid #ffffff4d;border-radius:32px;box-shadow:0 2px 16px #0000000a,inset 0 1px 1px #fff3;color:#4a4a4a;display:flex;font-size:18px;font-weight:600;justify-content:center;left:50%;letter-spacing:.02em;min-width:120px;mix-blend-mode:normal;padding:.75rem 1.5rem;position:absolute;text-align:center;top:1rem;transform:translateX(-50%);transition:all .2s ease;z-index:var(--z-index-bounce-display)}.bounce-display .bounce-count{color:#4a4a4a;font-size:20px;font-weight:600;margin:0 .25rem}.game-controls-overlay{bottom:5%;left:0;position:absolute;right:0;z-index:var(--z-index-controls)}.game-controls,.game-controls-overlay{align-items:center;display:flex;justify-content:center;pointer-events:auto}.game-controls{flex-direction:row;gap:28px}.control-button{align-items:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#ffffffe6;border:none;border-radius:var(--radius-full);box-shadow:var(--shadow-sm);cursor:pointer;display:flex;height:var(--control-button-size);justify-content:center;transition:all var(--transition-fast);width:var(--control-button-size)}.control-button:hover{background:#fff;box-shadow:var(--shadow-md);transform:scale(1.05)}.control-button.active{background:var(--primary-color)}.control-button.active .control-icon{fill:#fff}.control-button:disabled{cursor:not-allowed;opacity:var(--opacity-disabled);transform:none}.control-icon{fill:#333;height:24px;width:24px}.launch-float-button{align-items:center;background:linear-gradient(135deg,var(--primary-color) 0,var(--secondary-color) 100%);border:none;border-radius:var(--radius-full);box-shadow:var(--shadow-md);cursor:pointer;display:flex;height:var(--launch-button-size);justify-content:center;overflow:hidden;position:relative;transition:all var(--transition-fast);width:var(--launch-button-size)}.launch-float-button:before{background:radial-gradient(circle,#ffffff4d 0,#0000 70%);content:"";height:200%;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .5s ease;width:200%}.launch-float-button:hover{box-shadow:0 6px 20px #0000004d;transform:scale(1.05)}.launch-float-button:hover:before{transform:translate(-50%,-50%) scale(1)}.launch-float-button:active{transform:scale(.95)}.launch-float-button:disabled{animation:none;cursor:not-allowed;opacity:var(--opacity-disabled);transform:none}.launch-float-button:not(:disabled){animation:pulse 2s infinite}.launch-icon{fill:#fff;height:24px;width:24px}.drawing .launch-float-button{cursor:not-allowed;opacity:var(--opacity-disabled);pointer-events:none}@media (max-width:480px){:root{--control-button-size:44px;--launch-button-size:56px}.game-controls{gap:20px}.bounce-display{font-size:12px;padding:.4rem .8rem}}@media (min-width:481px) and (max-width:768px){:root{--control-button-size:48px;--launch-button-size:60px}.game-controls{gap:24px}}@media (min-width:1200px){.game-canvas-wrapper{box-shadow:none}}@media (hover:none) and (pointer:coarse){.control-button,.launch-float-button{transition:transform .1s ease}.control-button:active{transform:scale(.95)}.launch-float-button:active{transform:scale(.92)}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.game-svg-layer{shape-rendering:geometricPrecision}}@supports (-webkit-touch-callout:none){.bounce-plot,.game-canvas-container{height:-webkit-fill-available}}:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.modal-overlay{align-items:center;animation:fadeIn var(--transition-base);background:#0006;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding:1rem;position:fixed;top:0;width:100%;z-index:var(--z-index-modal)}.modal{animation:slideUp var(--transition-base);background:var(--card-background);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);box-sizing:border-box;max-width:400px;padding:1.5rem;width:90%}.modal-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.modal-header h2,.modal-title{color:#000;font-size:var(--font-size-xl);margin:0}.close-button,.modal-close{align-items:center;background:none;border:none;color:var(--accent-color);cursor:pointer;display:flex;font-size:1.5rem;height:24px;justify-content:center;line-height:1;opacity:.6;padding:0;transition:opacity var(--transition-fast);width:24px}.close-button:hover,.modal-close:hover{opacity:1}.modal-content{color:var(--accent-color)}.modal-content p{line-height:1.5;margin-bottom:1rem}.modal-content button{border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:var(--font-size-base);font-weight:600;padding:.75rem;transition:background-color var(--transition-fast);width:100%}.modal-level .modal-details.perfect{color:#4caf50}.modal-level .modal-details.excellent{color:#8bc34a}.modal-level .modal-details.good{color:#ffc107}.modal-level .modal-details.fair{color:#ff9800}.modal-level .modal-details.practice{color:#f44336}.next-level-button{background-color:var(--primary-color)}.next-level-button:hover{background-color:var(--secondary-color)}.retry-button{background-color:var(--error-color)}.retry-button:hover{background-color:#b30e14}.results-modal{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-width:450px;overflow:hidden;padding:0}.results-modal .modal-header{background:var(--primary-color);color:#fff;margin-bottom:0;padding:1rem 1.5rem}.results-modal .modal-header h2{color:#fff;font-size:1.4rem;margin:0}.results-modal .close-button{color:#fff}.results-modal .modal-content{padding:0}.total-score{align-items:center;border-bottom:1px solid var(--border-color);color:var(--primary-color);display:flex;font-size:1.4rem;font-weight:600;gap:.5rem;justify-content:center;margin-bottom:1rem;padding:1.5rem 0;text-align:center}.score-value{color:var(--accent-color);font-size:1.6rem}.results-table-container{margin-bottom:1.5rem;padding:0 1.5rem}.results-table{border-collapse:collapse;width:100%}.results-table th{background-color:var(--background-color);color:var(--accent-color);font-weight:600;padding:.75rem;text-align:center}.results-table td{border-bottom:1px solid var(--border-color);padding:.75rem;text-align:center}.results-table tr:last-child td{border-bottom:none}.highlight-row{background-color:#2b4c5e0d}.share-container{padding:0 1.5rem 1.5rem}.share-button{align-items:center;background:var(--primary-color);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:flex;font-size:var(--font-size-base);font-weight:600;gap:.5rem;justify-content:center;padding:1rem;transition:background-color var(--transition-fast);width:100%}.share-button:hover{background:var(--secondary-color)}.share-icon{font-size:1.2rem}.help-modal{max-width:400px;width:90%}.help-modal .modal-header{border-bottom:1px solid var(--border-color);padding-bottom:1rem}.help-modal .modal-header h2{color:#000;font-size:var(--font-size-xl);font-weight:600}.help-modal h3{color:var(--accent-color);font-size:var(--font-size-lg);margin-bottom:.75rem}.help-intro{color:var(--accent-color);font-weight:600;margin-bottom:1rem}.help-list{list-style:none;margin:0 0 1.5rem;padding:0}.help-list li{color:var(--accent-color);line-height:1.4;margin-bottom:.5rem;padding-left:1.5rem;position:relative}.help-list li:before{color:var(--primary-color);content:"•";left:0;position:absolute}.help-tip{color:var(--accent-color);font-size:var(--font-size-base)}.help-scoring,.help-tip{margin-bottom:1.5rem}.help-scoring h3{color:var(--accent-color);font-size:var(--font-size-lg);margin-bottom:.75rem}.scoring-list{list-style:none;margin:0;padding:0}.scoring-list li{color:var(--accent-color);margin-bottom:.5rem}.score-label{color:var(--primary-color);font-weight:600}.help-controls{margin-bottom:1.5rem}.help-controls h3{color:var(--accent-color);font-size:var(--font-size-lg);margin-bottom:.75rem}.controls-list{list-style:none;margin:0;padding:0}.controls-list li{color:var(--accent-color);margin-bottom:.5rem}.controls-list strong{color:var(--primary-color)}.help-note{border-top:1px solid var(--border-color);color:#666;font-size:var(--font-size-sm);margin:0;padding-top:1rem}.summary-modal{max-width:500px}.summary-modal .modal-content{padding:0}.summary-stats{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr;margin-bottom:1rem;padding:1rem}.stat-item{background:var(--background-color);border-radius:var(--radius-md);padding:1rem;text-align:center}.stat-label{color:var(--accent-color);display:block;font-size:var(--font-size-sm);letter-spacing:.5px;margin-bottom:.5rem;text-transform:uppercase}.stat-value{color:var(--primary-color);display:block;font-size:var(--font-size-xxl);font-weight:700}.summary-levels{padding:0 1rem 1rem}.summary-level{align-items:center;background:var(--background-color);border-radius:var(--radius-md);display:flex;justify-content:space-between;margin-bottom:.5rem;padding:.75rem;transition:transform var(--transition-fast)}.summary-level:hover{transform:translateX(4px)}.summary-level.perfect{border-left:4px solid #4caf50}.summary-level.excellent{border-left:4px solid #8bc34a}.summary-level.good{border-left:4px solid #ffc107}.summary-level.fair{border-left:4px solid #ff9800}.summary-level.practice{border-left:4px solid #f44336}.level-number{font-weight:600}.level-distance,.level-number{color:var(--accent-color)}.level-points{color:var(--success-color);font-weight:600}.settings-modal .modal-content{padding:0}.settings-content{display:flex;flex-direction:column;gap:1.5rem}.settings-item{align-items:center;border-radius:var(--radius-sm);cursor:pointer;display:flex;gap:1rem;padding:.5rem;transition:background-color var(--transition-fast)}.settings-item:hover{background-color:var(--background-color)}.settings-item input[type=checkbox]{cursor:pointer;height:20px;width:20px}.settings-item span{color:var(--accent-color);flex:1 1;font-size:var(--font-size-base)}.settings-volume{display:flex;flex-direction:column;gap:.5rem;padding:.5rem}.settings-volume label{color:var(--accent-color);font-size:var(--font-size-sm);font-weight:500}.volume-slider{-webkit-appearance:none;background:var(--border-color);border-radius:3px;height:6px;outline:none;width:100%}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:var(--primary-color);border-radius:var(--radius-full);cursor:pointer;height:18px;-webkit-transition:transform var(--transition-fast);transition:transform var(--transition-fast);width:18px}.volume-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.volume-slider::-moz-range-thumb{background:var(--primary-color);border-radius:var(--radius-full);cursor:pointer;height:18px;-moz-transition:transform var(--transition-fast);transition:transform var(--transition-fast);width:18px}.volume-slider::-moz-range-thumb:hover{transform:scale(1.2)}.volume-value{color:var(--accent-color);font-size:var(--font-size-sm);text-align:center}@media (max-width:480px){.modal{padding:1rem;width:95%}.modal-header h2{font-size:var(--font-size-lg)}.settings-item{padding:.75rem .5rem}.settings-item span{font-size:var(--font-size-sm)}.summary-stats{grid-template-columns:1fr}.stat-value{font-size:var(--font-size-xl)}}.ad-banner-top{align-items:center;background:#f8f8f8;border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;justify-content:center;padding:.5rem}.banner-ad-container{text-align:center}.banner-ad-placeholder{background:#ddd;border:1px solid #ccc;color:#666;display:inline-flex;font-size:14px}.banner-ad-placeholder,.welcome-screen{align-items:center;justify-content:center}.welcome-screen{background:var(--background-color);color:var(--accent-color);display:flex;inset:0;overflow:hidden;position:fixed;z-index:1000}.welcome-background{inset:0;overflow:hidden;pointer-events:none;position:absolute}.bg-circle{animation:float 20s ease-in-out infinite;border-radius:50%;opacity:.05;position:absolute}.bg-circle-1{animation-duration:25s;background:var(--primary-color);height:400px;left:-100px;top:-100px;width:400px}.bg-circle-2{animation-delay:-5s;animation-duration:20s;background:var(--secondary-color);bottom:-50px;height:300px;right:-50px;width:300px}.bg-circle-3{animation-delay:-10s;animation-duration:30s;background:var(--success-color);height:250px;left:50%;top:50%;transform:translate(-50%,-50%);width:250px}@keyframes float{0%,to{transform:translateY(0) scale(1)}33%{transform:translateY(-30px) scale(1.05)}66%{transform:translateY(30px) scale(.95)}}.welcome-content{animation:slideUp .5s ease-out;background:var(--card-background);border-radius:16px;box-shadow:0 8px 32px #0000001a;max-width:500px;padding:2rem;position:relative;text-align:center;width:90%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.logo-container{animation:logoSpin 2s ease-out;margin-bottom:1.5rem}@keyframes logoSpin{0%{opacity:0;transform:rotate(-180deg) scale(.5)}to{opacity:1;transform:rotate(0) scale(1)}}.logo-svg{height:100px;width:100px}.welcome-title{color:var(--primary-color);font-family:Courier New,Courier,monospace;font-size:2.5rem;font-weight:700;letter-spacing:-1px;margin:0 0 .5rem}.welcome-date{color:var(--accent-color);font-size:1.1rem;font-weight:500;margin:0 0 .5rem}.welcome-tagline{color:var(--accent-color);font-size:1rem;margin:0 0 2rem;opacity:.8}.tutorial-preview{background:var(--background-color);border-radius:8px;display:flex;gap:2rem;justify-content:center;margin:2rem 0;padding:1.5rem 0}.tutorial-step-preview{align-items:center;display:flex;flex-direction:column;gap:.5rem}.tutorial-icon-small{color:var(--primary-color);height:50px;width:50px}.tutorial-step-preview span{color:var(--accent-color);font-size:.75rem;font-weight:500;max-width:80px;text-align:center}.welcome-actions{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.play-button{background:var(--primary-color);border:none;border-radius:8px;box-shadow:0 4px 12px #2b4c5e4d;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;padding:1rem 2rem;transition:all .2s}.play-button:hover{background:var(--secondary-color);box-shadow:0 6px 16px #2b4c5e66;transform:translateY(-2px)}.play-button:active{transform:translateY(0)}.welcome-footer{color:var(--accent-color);font-size:.875rem;margin:0;opacity:.6}@media (max-width:480px){.welcome-content{padding:1.5rem}.welcome-title{font-size:2rem}.tutorial-preview{gap:1rem;padding:1rem 0}.tutorial-icon-small{height:40px;width:40px}.tutorial-step-preview span{font-size:.7rem;max-width:60px}}