:root{--color-bg:#14100c;--color-text:#f4e9d8;--color-text-dim:#f4e9d8b3;--color-accent:#f0a53a;--color-accent-strong:#ffb84d;--color-goal:#5fe08a;--color-panel:#14100cc7;--color-panel-strong:#14100ceb;--color-border:#f4e9d824;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--font-display:ui-rounded, "SF Pro Rounded", Georgia, "Segoe UI", system-ui, sans-serif;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;--shadow-panel:0 20px 60px #00000080;--ease-standard:cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box}html,body,#root{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,p{margin:0}button{font:inherit;color:inherit}.game-canvas{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}.app-root{width:100%;height:100%;position:relative}.overlay-layer{pointer-events:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:fixed;inset:0}.overlay-layer>*{pointer-events:auto}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.primary-button,.secondary-button,.icon-button,.toggle-button{cursor:pointer;border-radius:var(--radius-sm);transition:transform .15s var(--ease-standard), background .15s var(--ease-standard), border-color .15s var(--ease-standard);border:1px solid #0000}.primary-button{background:var(--color-accent);color:#201205;border-radius:var(--radius-md);padding:14px 28px;font-size:1.05rem;font-weight:700}.primary-button:hover{background:var(--color-accent-strong)}.primary-button:active{transform:scale(.97)}.secondary-button{border-color:var(--color-border);color:var(--color-text);border-radius:var(--radius-md);background:0 0;padding:12px 20px}.secondary-button:hover{border-color:var(--color-accent)}.secondary-button:active{transform:scale(.97)}.icon-button{border-color:var(--color-border);background:#f4e9d80f;flex:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;display:inline-flex}.icon-button:hover{background:#f4e9d824}.icon-button:active{transform:scale(.93)}.toggle-button{border-color:var(--color-border);background:#f4e9d80f;align-items:center;gap:8px;padding:10px 16px;font-size:.9rem;display:inline-flex}.toggle-button.active{border-color:var(--color-accent);color:var(--color-accent);background:#f0a53a2e}@media (pointer:coarse){.primary-button,.secondary-button,.icon-button,.toggle-button,.level-tile{min-height:44px}.icon-button{min-width:44px}}.menu-screen{pointer-events:none;align-items:stretch;display:flex;position:fixed;inset:0}.menu-panel{pointer-events:auto;width:100%;max-width:420px;height:100%;padding:max(28px, calc(env(safe-area-inset-top) + 12px)) 28px 28px;background:var(--color-panel);-webkit-backdrop-filter:blur(20px);border-right:1px solid var(--color-border);box-shadow:var(--shadow-panel);animation:panel-in .4s var(--ease-standard);flex-direction:column;gap:24px;display:flex;overflow-y:auto}.menu-header{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.menu-title{font-family:var(--font-display);letter-spacing:.01em;font-size:clamp(2rem,6vw,2.6rem)}.menu-tagline{color:var(--color-text-dim)}.menu-stars{color:var(--color-accent);font-weight:600}.play-button{margin-top:4px}.how-to-line{color:var(--color-text-dim);font-size:.85rem}.level-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.level-tile{border:1px solid var(--color-border);border-radius:var(--radius-sm);text-align:left;background:#f4e9d80d;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;display:flex}.level-tile:hover{border-color:var(--color-accent);background:#f4e9d817}.level-tile.current{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent) inset}.level-tile-number{color:var(--color-accent);font-size:.85rem;font-weight:700}.level-tile-name{font-size:.92rem;font-weight:600}.level-tile-time{color:var(--color-text-dim);font-variant-numeric:tabular-nums;font-size:.8rem}.star-row,.result-stars{gap:2px;display:flex}.tile-star{color:#f4e9d840}.tile-star.filled{color:var(--color-accent)}.menu-controls{justify-content:flex-end;align-items:center;gap:12px;display:flex}.menu-controls .toggle-button{margin-right:auto}@keyframes panel-in{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@media (width<=720px){.menu-panel{border-right:none;border-top:1px solid var(--color-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:none;height:auto;max-height:56vh;padding-bottom:max(20px, env(safe-area-inset-bottom));animation:sheet-in .35s var(--ease-standard);margin-top:auto}.level-grid{grid-template-columns:repeat(3,1fr)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.hud-top-bar{top:max(16px, env(safe-area-inset-top));left:max(16px, env(safe-area-inset-left));right:max(16px, env(safe-area-inset-right));background:var(--color-panel);-webkit-backdrop-filter:blur(16px);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);animation:drop-in .3s var(--ease-standard);align-items:center;gap:12px;padding:10px 14px;display:flex;position:fixed}.hud-title{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.hud-level-name{white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:700;overflow:hidden}.hud-stats{color:var(--color-text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:6px;font-size:.8rem;display:flex;overflow:hidden}.hud-dot{opacity:.5}.hud-actions{flex:none;gap:8px;display:flex}.hud-hint{top:max(76px, calc(env(safe-area-inset-top) + 64px));background:var(--color-panel-strong);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;opacity:0;pointer-events:none;max-width:calc(100vw - 32px);transition:opacity .3s var(--ease-standard), transform .3s var(--ease-standard);padding:10px 18px;font-size:.85rem;position:fixed;left:50%;transform:translate(-50%,-8px)}.hud-hint.visible{opacity:1;transform:translate(-50%)}@keyframes drop-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@media (width<=380px){.hud-level-name{font-size:.85rem}.hud-par{display:none}}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade-in .25s var(--ease-standard);background:#0a08068c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.result-card{background:var(--color-panel-strong);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:min(380px,100%);box-shadow:var(--shadow-panel);text-align:center;animation:card-in .35s var(--ease-standard);flex-direction:column;gap:10px;padding:32px 28px;display:flex}.result-title{font-family:var(--font-display);font-size:1.6rem}.result-level-name{color:var(--color-text-dim)}.result-stars{justify-content:center;gap:6px;margin:8px 0;font-size:2.2rem}.result-star{color:#f4e9d833;animation:star-pop .4s var(--ease-standard) forwards;transform:scale(0)}.result-star.filled{color:var(--color-accent)}@keyframes star-pop{0%{transform:scale(0)rotate(-15deg)}70%{transform:scale(1.25)rotate(4deg)}to{transform:scale(1)rotate(0)}}.result-stats{font-size:1rem}.result-best{color:var(--color-goal);font-weight:700}.result-falls{color:var(--color-text-dim);font-size:.9rem}.result-actions{flex-direction:column;gap:10px;margin-top:14px;display:flex}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-in{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.toast{left:50%;bottom:max(28px, env(safe-area-inset-bottom));background:var(--color-panel-strong);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;max-width:calc(100vw - 32px);box-shadow:var(--shadow-panel);animation:toast-in .25s var(--ease-standard);padding:10px 18px;font-size:.85rem;position:fixed;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media (width<=380px){.menu-panel{gap:18px;padding:20px}.result-card{padding:24px 18px}.hud-top-bar{gap:8px;padding:8px 10px}}
