/* Menus may pan vertically; canvas and gameplay handlers retain gesture control. */
html,body{touch-action:pan-y}
:root{--cream:#fff0bb;--muted:#a8c4bb;--teal:#153b48;--gold:#efd393;--panel:#112e3f;--line:#a3c5ad35}button,select{-webkit-tap-highlight-color:transparent;font:inherit}button:disabled{opacity:.35;cursor:default}button{touch-action:manipulation}.title-topbar{position:absolute;top:max(17px,env(safe-area-inset-top));left:6%;right:6%;display:flex;justify-content:space-between;pointer-events:auto}.title-icon,.title-pack-button{border:1px solid var(--line);border-radius:11px;background:#12333fcc;color:var(--cream);height:37px;padding:0 13px;font-size:11px;font-weight:800;letter-spacing:1px;cursor:pointer}.title-icon{font-size:17px;width:39px;padding:0}.title-brand{top:13%}.title-brand p{font-size:7px;letter-spacing:1.8px}.title-actions{top:auto;bottom:max(43px,calc(env(safe-area-inset-bottom) + 22px));gap:9px}.title-actions button{width:72%;min-height:49px}.title-actions #explore-stages{width:72%}.title-footer{letter-spacing:.7px;font-size:8px;bottom:max(14px,env(safe-area-inset-bottom));text-transform:uppercase}.campaign-select-wrap{position:relative;padding:7px 30px 6px;min-width:65%;background:#102f3bbb;border:1px solid #a8c6ae29;border-radius:10px;margin-bottom:2px}.campaign-select-wrap::after{content:'⌄';position:absolute;right:14px;top:9px;font-size:17px;color:#d8d6b6;pointer-events:none}.campaign-select-wrap label{display:block;text-transform:uppercase;letter-spacing:1.8px;font-size:11px;font-weight:850}.campaign-select-wrap small{display:block;font-size:9px;color:#a6c4b8;letter-spacing:.4px;margin-top:4px}.campaign-select-wrap select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;touch-action:manipulation}.campaign-select-wrap:focus-within{outline:2px solid var(--gold);outline-offset:3px}
.ui-overlay{position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;gap:13px;background:#102b3ffb;color:var(--cream);padding:max(24px,env(safe-area-inset-top)) 21px max(18px,env(safe-area-inset-bottom));touch-action:pan-y;overscroll-behavior:contain;font-size:13px;line-height:1.5}.ui-overlay *{touch-action:pan-y}.ui-overlay button,.ui-overlay select{touch-action:manipulation}.ui-overlay header{display:flex;justify-content:space-between;align-items:center;gap:10px;flex:none}.ui-overlay h1{font-size:24px;line-height:1.15;letter-spacing:-.7px;margin:3px 0 0}.ui-overlay h2{font-size:16px;line-height:1.3;margin:0 0 8px}.ui-overlay p{margin:0}.ui-overlay header p{font-size:11px;color:var(--muted);margin-top:5px}.close-button,#close-picker{flex:none;border:1px solid var(--line);border-radius:11px;width:38px;height:38px;background:#264956;color:var(--cream);font-size:25px;font-weight:400;line-height:1;cursor:pointer}.eyebrow{font-size:8px;font-weight:850;letter-spacing:1.6px;color:#95bfb3;text-transform:uppercase}.overlay-scroll{min-height:0;overflow-y:auto;overflow-x:hidden;flex:1;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#6d9287 #183b48;-webkit-overflow-scrolling:touch;padding-bottom:5px}.ui-button{border:1px solid #fff0bb;border-radius:12px;background:#f0d894;color:#25454d;min-height:45px;width:100%;font:800 13px system-ui;padding:12px 16px;cursor:pointer;text-align:center;box-shadow:0 3px 0 #927448}.ui-button.secondary{background:#234955;border-color:#a5c9b344;color:#e0e4bf;box-shadow:none}.text-button{border:0;background:transparent;color:#c3dec8;font-size:11px;padding:8px 0;text-decoration:underline;text-underline-offset:3px;cursor:pointer;line-height:1.45}.muted{color:var(--muted);font-size:12px;line-height:1.65}.small-note{color:#a6c0b7;font-size:10px!important;line-height:1.6!important;display:block}.preview-banner{color:#e9dba9;background:#74623722;border:1px solid #d6bb6544;border-radius:10px;padding:10px 12px;font-size:11px;font-weight:750;flex:none;line-height:1.5}.preview-banner span{font-size:10px;color:#bed0bc;font-weight:450}.preview-badge{font-size:7px;letter-spacing:.5px;border:1px solid #a5c9b344;background:#27444d;border-radius:5px;padding:4px 6px;color:#b5c9b6}.sub-overlay{z-index:12}.fixed-action{flex:none;margin-bottom:3px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0 4px}.stat-card{padding:12px;background:#1b3e4d;border:1px solid var(--line);border-radius:11px;min-height:92px}.stat-card small{display:block;font-size:8px;font-weight:800;letter-spacing:.65px;color:#a8c8bb}.stat-card strong{display:block;font-size:22px;line-height:1.5;color:#f2dda5}.stat-card span{display:block;font-size:8px;color:#acc6b7}.stage-tag{display:inline-block;color:#d6dcab;background:#54745130;border:1px solid #97b38744;padding:5px 9px;border-radius:6px;font-size:9px;font-weight:800;letter-spacing:.7px;margin:10px 0!important}.ranking-section{margin:19px 0 16px}.ranking-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.ranking-heading h2{margin:0}.tab-row{display:grid;grid-template-columns:repeat(3,1fr);background:#0c2434;border:1px solid var(--line);padding:4px;border-radius:10px;gap:3px}.tab-row button{background:none;color:#9ebaae;border:0;border-radius:7px;font-size:11px;font-weight:700;padding:8px;cursor:pointer}.tab-row button.active{background:#355562;color:#fff0bb}.empty-ranking{text-align:center;border:1px dashed #92b6a433;border-radius:12px;padding:20px 16px;margin-top:10px;min-height:137px}.empty-ranking h3{font-size:12px;margin:7px 0}.empty-ranking p{font-size:10px;color:#94b2a9;line-height:1.7}.empty-symbol{font-size:23px;color:#e0d49577}
#picker{gap:11px;padding:max(24px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom))}#level-grid{gap:8px;grid-template-rows:repeat(5,minmax(0,1fr));min-height:0;overflow:auto;align-content:start;padding:1px}.level-tile{padding:10px 11px;border-radius:12px;min-height:102px;display:flex;flex-direction:column;justify-content:center;touch-action:manipulation;box-shadow:0 2px 0 #081e2b55}.level-tile .tile-top{display:flex;justify-content:space-between;align-items:center}.level-tile b{font-size:21px;line-height:1.1}.level-tile .tile-clear{font-size:14px;color:#a8dfb6;margin:0}.level-tile .tile-name{font-size:10px;line-height:1.15;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.level-tile .tile-mechanic{font-size:7px;color:#a7c8b8;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.level-tile .tile-estimate{font-size:8px;color:#ecd59e;margin-top:4px;line-height:1.25}.level-tile .tile-record{font-size:8px;color:#92b6a7;margin-top:3px;line-height:1.25}.level-tile.selected{background:#2a4b56;border-color:#dfcf9488}.stage-pagination{display:flex;align-items:center;justify-content:space-between;flex:none;background:#183847;border:1px solid var(--line);border-radius:10px;padding:3px 8px}.stage-pagination button{width:45px;height:34px;border:0;border-radius:7px;background:#2a4b55;color:#e8d79d;font-size:25px;line-height:1;cursor:pointer}.stage-pagination span{font-size:10px;letter-spacing:1px;color:#d9dcb4}#progress-note{font-size:9px;color:#97b5ab;text-align:center;flex:none;margin:0!important}
#pack-list{display:flex;flex-direction:column;gap:12px;padding-right:3px}.pack-card{position:relative;flex:none;padding:17px;border:1px solid #9ebca342;border-radius:15px;background:linear-gradient(120deg,#254956,#173649)}.pack-card.together{background:linear-gradient(120deg,#554654,#233b4b)}.pack-card.hook_shot{background:linear-gradient(120deg,#4a4f41,#223b4b)}.pack-card.orbit_rescue{background:linear-gradient(120deg,#3c3c61,#152c49)}.pack-card.rift_rescue{background:linear-gradient(120deg,#294f58,#473952)}.pack-card h2{font-size:23px;letter-spacing:-.5px;margin:7px 40px 7px 0}.pack-card>p{font-size:11px;color:#bfd0c3;max-width:92%;line-height:1.6}.pack-symbol{position:absolute;right:17px;top:22px;font-size:36px;color:#f2d69ca0;line-height:1}.pack-price{font-size:12px;font-weight:800;margin-top:15px}.pack-owned{display:block;color:#abc7b8;font-size:9px;margin:4px 0 12px}#pack-notice{text-align:center;font-size:9px!important}.settings-content{display:flex;flex-direction:column;gap:14px}.settings-card{padding:16px;border:1px solid var(--line);border-radius:13px;background:#1a3b4a;flex:none}.settings-card>p{font-size:11px;color:#a9c3b8;margin:10px 0}.settings-card>strong{font-size:12px}.settings-card>.text-button{display:block;width:100%;margin-top:6px}.settings-card>.ui-button{margin-top:12px}
.centered-overlay{z-index:20;justify-content:center;background:#0b2237f2;overflow:auto}.dialog-card{padding:22px 18px;border:1px solid #b6c9aa55;border-radius:19px;text-align:center;background:linear-gradient(155deg,#244755,#152f43);box-shadow:0 15px 70px #0005;flex:none}.dialog-card h1{font-size:25px;margin:14px 0}.dialog-card>p{font-size:12px;color:#bbd0c1;line-height:1.65;margin:11px 0 17px}.dialog-card>.ui-button{margin:7px 0}.dialog-card>.small-note{margin-top:12px}.ad-placeholder{background:#102d3b;border:1px dashed #d2c49366;border-radius:12px;margin-top:17px;padding:25px;color:#dbcc9599;font-size:43px;line-height:1}.ad-placeholder span{display:block;letter-spacing:3px;font-size:8px;margin-top:12px}.pass-overlay{z-index:22}.dialog-card .pass-price{font-size:42px;color:#f3d99b;font-weight:850;line-height:1.1;margin:25px 0}.pass-price span{display:block;font-size:10px;color:#a7c7b7;font-weight:500;margin-top:8px}.dialog-card .preview-banner{font-size:11px;color:#e8dba5}.chart-card{margin:14px 0;background:#183b4a;border:1px solid var(--line);border-radius:13px;padding:12px 10px}.chart-legend{display:flex;gap:14px;justify-content:flex-end;font-size:9px;color:#ffdc93}.chart-legend span:last-child{color:#81dcd0}#difficulty-chart{display:block;width:100%;height:auto}.chart-axis{display:flex;justify-content:space-between;padding:0 10px;font-size:8px;color:#9fc1b4}.hook-stage-label{font-size:12px!important;margin:22px 0 12px!important}.hook-row{display:grid;grid-template-columns:1fr auto;gap:7px;border:1px solid var(--line);background:#1a3a49;border-radius:10px;padding:11px 13px;margin:8px 0}.hook-row b{font-size:10px;letter-spacing:.8px;color:#abcbbb}.hook-row strong{font-size:13px;color:#eed49a}.hook-row small{grid-column:1/-1;font-size:9px;color:#97b7ac}
#fire-button{position:absolute;right:24px;bottom:max(137px,calc(env(safe-area-inset-bottom) + 115px));z-index:3;width:67px;height:67px;border:2px solid #eed7a0;border-radius:50%;color:#ffe6a5;background:linear-gradient(#786549ed,#3e4d50ed);box-shadow:0 5px 0 #1b3442;font-size:26px;line-height:1;touch-action:none;cursor:pointer}#fire-button span{display:block;font-size:8px;font-weight:850;letter-spacing:1px;margin-top:4px}#fire-button:active{transform:translateY(3px);box-shadow:0 2px 0 #1b3442;background:#8a7354}
@media(max-height:720px){.title-brand{top:12%}.title-brand h1{font-size:26px}.title-brand h1 span{font-size:67px}.title-brand i{font-size:10px;margin-top:9px}.title-actions{gap:7px;bottom:max(31px,calc(env(safe-area-inset-bottom) + 20px))}.title-actions button{min-height:42px}.title-actions #explore-stages{min-height:31px}.title-actions p{font-size:9px;margin-top:5px}.campaign-select-wrap{padding-top:5px;padding-bottom:5px}.title-footer{font-size:7px;bottom:max(10px,env(safe-area-inset-bottom))}.ui-overlay{padding-top:max(17px,env(safe-area-inset-top));gap:10px}#picker{gap:8px;padding:17px 14px 12px}#picker h1{font-size:21px}#level-grid{gap:6px;grid-template-rows:repeat(5,minmax(84px,1fr))}.level-tile{padding:7px 9px;min-height:84px}.level-tile b{font-size:17px}.level-tile .tile-name{font-size:9px;margin-top:3px}.level-tile .tile-mechanic{font-size:6px;margin-top:3px}.level-tile .tile-estimate,.level-tile .tile-record{font-size:7px;margin-top:3px}.stage-pagination button{height:29px}.dialog-card{padding:17px 16px}.ad-placeholder{padding:17px}.dialog-card h1{font-size:22px}.dialog-card>p{margin:9px 0 12px}.ui-overlay h1{font-size:22px}}
@media(max-width:350px){.title-topbar{left:5%;right:5%}.title-brand h1{font-size:24px}.title-brand h1 span{font-size:62px}.title-brand p{font-size:6px;letter-spacing:1.4px}.ui-overlay{padding-left:15px;padding-right:15px}.stat-card{padding:10px}.stat-card strong{font-size:20px}.stat-card span{font-size:7px}.ranking-heading h2{font-size:14px}.preview-badge{font-size:6px}.pack-card{padding:14px}.pack-card.rift_rescue{background:linear-gradient(120deg,#294f58,#473952)}.pack-card h2{font-size:21px}.dialog-card{padding:16px 13px}.dialog-card>p{font-size:11px}.ui-button{font-size:12px}.title-actions button{min-height:40px}.title-actions p{font-size:8px}.campaign-select-wrap label{font-size:10px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.stat-card.needs-calibration strong{font-size:15px;line-height:1.4;margin:7px 0}

.leaderboard-list{list-style:none;padding:0;margin:13px 0 0;text-align:left}.leaderboard-list li{display:grid;grid-template-columns:26px 1fr auto;gap:7px;align-items:center;padding:9px 0;border-top:1px solid #a3c5ad25;font-size:10px}.leaderboard-list li b{color:#d5c789}.leaderboard-list li strong{font-size:11px;color:#f2dda5}.leaderboard-list li span{font-size:9px;color:#a8c4bb}.stat-card.global-stat strong{font-size:20px}

.level-tile.boss-stage{border-color:#d29b795c;background:linear-gradient(145deg,#493d4b,#223f4e)}.boss-badge{font-size:7px!important;letter-spacing:.6px;color:#f3b6a0;border:1px solid #e2a08066;border-radius:4px;padding:2px 4px;line-height:1;margin-left:auto;margin-right:5px}.community-link{align-self:center;font-size:9px;letter-spacing:.4px;color:#b9cdbb;text-decoration:none;padding:10px 7px;cursor:pointer;touch-action:manipulation}.community-link:hover{text-decoration:underline}.community-settings{display:block;text-decoration:none;margin-top:12px}a:focus-visible{outline:3px solid #fff2b5;outline-offset:4px}
