@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800;900&display=swap');
.level-info{flex-shrink:0}.level-info b{white-space:nowrap}.hud>button{flex-shrink:0}
:root{font-family:'Noto Sans SC','Microsoft YaHei',sans-serif;color:#334c46;background:#f7f8f0;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0}button:focus-visible,a:focus-visible{outline:3px solid #438775;outline-offset:4px}button:disabled{cursor:not-allowed;opacity:.4}header{height:92px;max-width:1400px;margin:auto;padding:0 48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e1e7dc}.brand{font-weight:800;font-size:23px;text-decoration:none;color:inherit;display:flex;align-items:center;gap:11px}.brand-icon{background:#dceee2;color:#4d8e79;width:43px;height:43px;text-align:center;border-radius:15px;font-size:29px}.brand small{font-size:10px;letter-spacing:2px;margin-left:8px;color:#8b9d90}.header-right{display:flex;align-items:center;gap:18px;font-size:12px;color:#899b8c}.header-right button{background:transparent;font-size:12px;border:1px solid #dde4d9;border-radius:24px;padding:10px 15px}main{max-width:1320px;margin:42px auto 0;display:grid;grid-template-columns:365px 1fr;gap:32px 54px;padding:0 28px}aside{padding-top:8px}.eyebrow{font-size:10px;font-weight:600;letter-spacing:1.6px;color:#829b80;display:flex;gap:8px;align-items:center}.eyebrow i,.stage-bottom i{width:6px;height:6px;background:#7ba78a;border-radius:50%;display:inline-block}h1{font-size:55px;line-height:1.2;letter-spacing:-2px;font-weight:900;margin:20px 0 19px;position:relative}h1 span{color:#e8bc5f;position:absolute;font-size:37px;transform:rotate(12deg);top:43px;right:23px}.intro{font-size:13px;line-height:1.9;color:#849388;margin:0 0 28px}.section-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-label h2{font-size:14px;margin:0}.section-label>span{font-size:9px;letter-spacing:1px;color:#93a394}.characters{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.char{border:2px solid transparent;border-radius:18px;background:#ebeee5;padding:0 0 9px;position:relative;transition:transform .2s,border-color .2s}.char:hover{transform:translateY(-4px)}.char.active{border-color:#68977a;background:#e5efe3}.char.active:after{content:'✓';position:absolute;right:5px;top:5px;background:#68977a;color:white;font-size:9px;width:15px;height:15px;border-radius:50%}.char img{width:100%;height:100px;object-fit:cover;display:block}.char b{font-size:11px}.selected-note{display:flex;align-items:center;gap:12px;margin:17px 0 23px;font-size:12px}.selected-note p{margin:3px 0 0;font-size:10px;color:#8c9b8f}.check{margin-left:auto;color:#729879}.primary{background:#487b62;border-radius:15px;color:#fff;width:100%;padding:16px 21px;text-align:left;font-size:14px;font-weight:600;box-shadow:0 6px 0 #365f4c;transition:background .2s,transform .2s}.primary:hover{background:#38694f;transform:translateY(-1px)}.primary span{float:right;font-size:20px;line-height:20px}.level-button{margin-top:18px;background:#eef0e6;border:1px solid #e2e6d9;padding:12px 17px;border-radius:13px;width:100%;text-align:left;font-size:12px}.level-button span{float:right;color:#8d9d88;font-size:11px}.how{display:flex;align-items:center;gap:5px;font-size:10px;color:#8b998d;margin-top:26px}.key,kbd{border:1px solid #dce2d6;min-width:23px;height:23px;border-radius:5px;background:#fff;text-align:center;padding:3px;font-family:inherit}.how kbd{margin-left:12px}.little-note{font-size:10px;color:#a2ab95;margin-top:20px}.game-shell{min-height:640px;position:relative;border-radius:30px;overflow:hidden;background:#dceddf;box-shadow:0 16px 45px #5875540d;border:6px solid white}#stage{position:absolute;inset:0}#stage canvas{width:100%;height:100%;display:block}.hud{position:absolute;top:24px;left:25px;right:25px;display:flex;align-items:center;gap:20px}.level-info{display:flex;flex-direction:column;gap:5px}.level-info span{font-size:10px;color:#71917e}.level-info b{font-size:16px}.score-info{margin-left:auto;background:#ffffffbd;border:1px solid #fff;border-radius:16px;padding:12px 16px;width:200px;backdrop-filter:blur(10px)}.score-info>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:10px}.score-info span{font-size:10px}.score-info b #score{font-size:19px}.score-info small{color:#98a994;font-size:10px}.progress{height:5px;border-radius:5px;background:#e4eadd;margin-top:9px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:#e8be69;transition:width .2s}.hud button{border-radius:50%;width:35px;height:35px;background:#ffffffc9;font-size:13px}.stage-tag{position:absolute;top:115px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;color:#6f9580;background:#ffffff9c;border:1px solid #fff;padding:8px 16px;border-radius:30px}.stage-bottom{position:absolute;bottom:22px;left:25px;right:25px;display:flex;justify-content:space-between;color:#6f937d;font-size:10px}.stage-bottom i{margin-right:6px}.collectibles{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e2e6da;border-bottom:1px solid #e2e6da;padding:22px 0;gap:15px}.collectibles>div{display:grid;grid-template-columns:44px auto;gap:4px 12px;align-items:center}.item{grid-row:span 2;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:28px}.star{background:#f8efd4;color:#dab453}.berry{background:#f8e2df;color:#cf8e9b}.boost{background:#e5ecf7;color:#8ba3d1}.double{background:#eee6f5;color:#b395c8;font-size:20px}.collectibles b{font-size:12px}.collectibles small{font-size:10px;color:#95a18f}.collectibles p{font-size:10px;line-height:1.9;color:#9aa48e;margin:0}.collectibles p b{font-size:11px;color:#748c70}footer{max-width:1264px;margin:22px auto 25px;display:flex;justify-content:space-between;font-size:9px;color:#a3ad99;letter-spacing:1.2px;padding:0 28px}.overlay{position:absolute;inset:0;background:#e9f3e8b5;backdrop-filter:blur(10px);display:grid;place-items:center}.hidden{display:none!important}.result{padding:36px;text-align:center;background:#fffff5;border:1px solid white;border-radius:25px;max-width:330px;margin:20px;box-shadow:0 20px 60px #5d806522}.result>span{font-size:54px;color:#ddb853}.result h2{font-size:27px;margin:12px 0}.result p{font-size:12px;line-height:1.9;color:#839681;white-space:pre-line}.result .primary{margin:15px 0;text-align:center}.result>button:last-child{background:none;font-size:11px;margin-top:10px}.touch-controls{display:none;position:absolute;bottom:50px;left:22px;right:22px;justify-content:space-between;pointer-events:none}.touch-controls button{pointer-events:auto;background:#ffffffbb;border:1px solid white;border-radius:18px;width:62px;height:54px;font-size:25px;touch-action:none;user-select:none}.status-line{position:absolute;top:165px;left:0;right:0;text-align:center;font-size:12px;color:#8d6bba}#toast{position:absolute;top:45%;left:50%;transform:translateX(-50%);font-size:19px;font-weight:800;color:#98763f;pointer-events:none;text-shadow:0 2px white;white-space:nowrap}dialog{border:0;border-radius:25px;background:#fbfcf4;padding:26px;color:#334c46;width:min(560px,90vw);max-height:85vh}dialog::backdrop{background:#304a3e66;backdrop-filter:blur(5px)}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h2{font-size:23px}.modal-head button{font-size:27px;background:none}.level-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.level-grid button{padding:13px 3px;background:#e8efdf;border-radius:13px;font-weight:700}.level-grid small{display:block;font-size:9px;font-weight:400;margin-top:5px}.help-copy{font-size:13px;line-height:2.1}.help-copy p{margin-bottom:18px}@media(min-width:1500px){main{margin-top:60px}.game-shell{min-height:690px}}@media(max-width:1000px){header{padding:0 24px}.header-right>span{display:none}main{gap:25px;grid-template-columns:300px 1fr;padding:0 22px}h1{font-size:49px}.game-shell{min-height:625px}.score-info{width:160px;padding:10px}.hud{left:15px;right:15px;gap:10px}.collectibles p{display:none}.char img{height:85px}}@media(max-width:720px){header{height:72px;padding:0 18px}.brand{font-size:19px}.brand small{display:none}.header-right{gap:7px}.header-right button{font-size:10px;padding:8px}main{display:flex;flex-direction:column;margin-top:23px;padding:0 16px;gap:22px}aside{display:contents}.eyebrow{font-size:8px}h1{font-size:36px;margin:0;line-height:1.15}h1 br{display:none}h1 span{position:static;font-size:26px;margin-left:12px}.intro{margin:0;font-size:12px}.intro br{display:none}.section-label{margin:0}.characters{gap:12px;margin-top:-10px}.char img{height:100px}.selected-note,.little-note,.how{display:none}#start{margin-top:-8px}.level-button{margin:0}.game-shell{min-height:580px;height:72vh;max-height:760px;flex-shrink:0;border-width:4px;border-radius:24px}.touch-controls{display:flex}.collectibles{display:grid;grid-template-columns:1fr 1fr;padding:18px 0;gap:18px}.collectibles>div{gap:4px 8px}footer{font-size:8px;gap:18px;padding:0 20px}.stage-tag{font-size:10px}.level-grid{gap:7px}.hud{top:18px}.score-info{width:165px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* === mobile: separate select screen === */
#stage{touch-action:none}
.touch-controls{display:none!important}

body.m-select main{display:block!important;max-width:760px!important;margin:8px auto 0!important;padding:0 18px 48px!important}
body.m-select .game-shell,
body.m-select .collectibles,
body.m-select footer{display:none!important}
body.m-select header{height:auto!important;padding:14px 18px!important;position:static!important}
body.m-select aside{padding-top:0!important}
body.m-select .header-right>span,
body.m-select .little-note{display:none!important}
body.m-select .characters{grid-template-columns:repeat(2,1fr)!important;gap:12px!important}
body.m-select h1{font-size:34px!important;line-height:1.25!important}

body.m-play header,
body.m-play aside,
body.m-play .collectibles,
body.m-play footer{display:none!important}
body.m-play main{display:block!important;max-width:none!important;margin:0!important;padding:0!important;gap:0!important}
body.m-play .game-shell{width:100%!important;height:100vh!important;min-height:100vh!important;
  border:0!important;border-radius:0!important;box-shadow:none!important;margin:0!important}
body.m-play .hud{top:14px!important;left:14px!important;right:14px!important}
body.m-play .stage-bottom{bottom:10px!important}

/* === mobile v2: 全屏单屏显示，禁止滚动 === */
html,body{margin:0}
body.m-select,
body.m-play{height:100vh;overflow:hidden}
body.m-select{display:flex;flex-direction:column}

/* 选人界面：压进一屏 */
body.m-select header{flex:0 0 auto;height:auto!important;padding:10px 16px!important;border-bottom:0!important}
body.m-select .brand{font-size:19px!important}
body.m-select .header-right>span,body.m-select .header-right{display:none!important}
body.m-select main{flex:1 1 auto;display:flex!important;flex-direction:column;justify-content:flex-start;
  max-width:100%!important;margin:0!important;padding:6px 16px 12px!important;overflow-y:auto;-webkit-overflow-scrolling:touch}
body.m-select .eyebrow{display:none!important}
body.m-select h1{font-size:26px!important;line-height:1.3!important;margin:4px 0 6px!important}
body.m-select .intro{font-size:12px!important;line-height:1.5!important;margin:0 0 10px!important}
body.m-select .section-label{margin:2px 0 8px!important}
body.m-select .section-label h2{font-size:14px!important}
body.m-select .characters{display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:10px!important}
body.m-select .character-card{padding:0!important}
body.m-select .selected-note{margin:10px 0!important;padding:10px 12px!important}
body.m-select #start{padding:14px!important;font-size:16px!important;margin-top:8px!important}
body.m-select .level-button{margin-top:8px!important;padding:11px!important}
body.m-select .how,body.m-select .little-note{display:none!important}
body.m-select .collectibles,body.m-select footer{display:none!important}

/* 游戏界面：占满整屏 */
body.m-play{position:fixed;inset:0;overflow:hidden;touch-action:none}
body.m-play header,body.m-play aside,body.m-play .collectibles,body.m-play footer{display:none!important}
body.m-play main{display:block!important;position:fixed!important;inset:0!important;margin:0!important;
  padding:0!important;max-width:none!important;gap:0!important;grid-template-columns:none!important}
body.m-play .game-shell{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;
  min-height:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;margin:0!important}
body.m-play .hud{top:10px!important;left:12px!important;right:12px!important;gap:10px!important}
body.m-play .level-info b{font-size:13px!important}
body.m-play .stage-bottom{bottom:8px!important}
body.m-play .stage-tag{font-size:11px!important}
