:root { --ink:#17233c; --sky:#e9f7ff; --blue:#4c8dff; --pink:#ff5c8a; --gold:#ffbf3f; --card:rgba(255,255,255,.86); }
* { box-sizing:border-box; } body { margin:0; min-height:100vh; color:var(--ink); font-family:"Microsoft YaHei",system-ui,sans-serif; background:radial-gradient(circle at 15% 8%,#fff 0 2%,transparent 18%),linear-gradient(140deg,#d9f4ff,#dce4ff 60%,#ffe2e9); overflow-x:hidden; }
button { font:inherit; cursor:pointer; } .app-shell { width:min(1100px,100%); min-height:100vh; margin:auto; padding:18px 24px 28px; position:relative; } .topbar { height:52px; display:flex; justify-content:space-between; align-items:center; position:relative; z-index:2; } .header-controls { display:flex; gap:8px; align-items:center; }.brand { color:var(--ink); font-size:25px; font-weight:900; letter-spacing:1px; text-decoration:none; } .brand span { color:var(--pink); }.icon-button,.button { border:0; border-radius:14px; font-weight:800; transition:transform .15s,box-shadow .15s,background .15s; }.icon-button:hover,.button:hover { transform:translateY(-2px); }.icon-button { padding:9px 13px; color:#273451; background:#fff; box-shadow:0 4px 0 #c9d5e9; }.screen { min-height:calc(100vh - 98px); }.hidden { display:none!important; }
.menu-screen { display:grid; place-items:center; position:relative; overflow:hidden; }.hero-card { width:min(540px,100%); padding:50px 46px; text-align:center; border:3px solid #fff; border-radius:32px; background:var(--card); box-shadow:0 20px 60px #6b87ae55; position:relative; z-index:1; }.eyebrow { color:#5b7ab1; font-size:12px; font-weight:900; letter-spacing:2px; }.hero-card h1 { font-size:clamp(48px,10vw,74px); line-height:1; margin:12px 0; letter-spacing:5px; }.hero-card h1::first-letter { color:var(--pink); }.hero-card p { line-height:1.7; }.menu-actions { display:grid; gap:12px; margin:28px auto 10px; max-width:300px; }.button { padding:13px 20px; color:var(--ink); box-shadow:0 4px 0 #acbdd7; }.primary { color:#fff; background:linear-gradient(135deg,#ff648b,#fa3e72); box-shadow:0 5px 0 #c82c57; }.secondary { background:#fff; }.ghost { color:#53627c; background:#dceaff; box-shadow:0 4px 0 #b1c5e7; }.best-time { color:#637596; font-size:13px; }.decor { position:absolute; border-radius:12px; transform:rotate(18deg); opacity:.85; }.decor-a { width:70px;height:70px;background:#ff5c8a;left:12%;top:22%; box-shadow:25px 0 #ff5c8a,25px 25px #ff5c8a; }.decor-b { width:38px;height:38px;background:#4c8dff;right:12%;top:30%; box-shadow:38px 0 #4c8dff,0 38px #4c8dff,38px 38px #4c8dff; }.decor-c { width:50px;height:50px;background:#ffbf3f;right:21%;bottom:18%; }
.game-screen { display:grid; grid-template-columns:minmax(190px,1fr) auto minmax(190px,1fr); align-items:center; gap:26px; }.info-panel { padding:19px; border:2px solid #fff; border-radius:22px; background:rgba(255,255,255,.72); box-shadow:0 12px 32px #6b87ae2e; }.level-label,.preview-block>span { color:#6f7e9c; font-weight:800; font-size:13px; }.info-panel h2 { font-size:18px; line-height:1.35; margin:5px 0 20px; }.stat { display:flex; align-items:baseline; justify-content:space-between; margin:10px 0; padding-bottom:10px; border-bottom:1px dashed #c2d4ee; }.stat span { font-size:13px; }.stat strong { color:var(--pink); font-size:28px; }.stat em { margin-left:-10px; color:#8090aa; font-size:12px; font-style:normal; }.time-stat strong { color:#3979e7; }.time-stat.urgent strong { animation:pulse .6s infinite; color:#f33; }.board-wrap { position:relative; width:min(360px,calc(100vw - 48px)); aspect-ratio:1/2; border:8px solid #293a5e; border-radius:13px; overflow:hidden; background:#14213d; box-shadow:0 15px 0 #1c2948,0 20px 40px #5b6f964d; }.board-wrap.ice { border-color:#246d9a; }.board-wrap.factory { border-color:#5d5262; }.board-wrap.boss { border-color:#7a3f63; }.board-wrap.shake { animation:shake .28s linear; } canvas#gameCanvas { width:100%; height:100%; display:block; }.danger-line { position:absolute; top:18px; left:0; right:0; height:2px; background:#ff3c55; opacity:0; box-shadow:0 0 10px #ff3c55; }.danger-line.active { opacity:.9; }.warning-banner { position:absolute; left:9px;right:9px;top:48%; transform:translateY(-50%); padding:9px; color:#fff; text-align:center; font-weight:900; font-size:13px; background:#e3374d; border-radius:10px; box-shadow:0 3px 0 #9c2032; }.preview-block { text-align:center; margin-bottom:12px; }.preview-block canvas { width:112px; height:112px; margin:4px auto 0; display:block; border-radius:12px; background:#e9f4ff; }.compact { display:block; width:100%; margin:9px 0; padding:10px; }.boss-panel { margin-top:17px; padding-top:15px; border-top:1px solid #c7d8ef; font-size:13px; }.boss-panel>span { color:#a72e57; font-weight:900; }.hp-track { height:12px; overflow:hidden; margin:8px 0 5px; border:2px solid #41253e; border-radius:10px; background:#f5cad8; }.hp-track i { display:block; width:100%; height:100%; background:linear-gradient(90deg,#ff6e8f,#de275b); transition:width .25s; }.boss-panel strong { color:#a72e57; }.boss-panel p { margin:7px 0 0; }.special-info { color:#52647e; font-size:12px; line-height:1.55; }
.touch-controls { display:none; justify-content:center; flex-wrap:wrap; gap:7px; padding-top:16px; }.touch-controls button { min-width:55px; padding:7px 10px; color:#2d4269; font-size:23px; font-weight:900; background:#fff; border:2px solid #c2d7f1; border-radius:12px; touch-action:manipulation; }.touch-controls small { display:block; font-size:10px; }.overlay { position:fixed; inset:0; z-index:10; display:grid; place-items:center; padding:20px; background:rgba(21,34,59,.58); backdrop-filter:blur(5px); }.modal-card { max-width:460px; padding:34px; text-align:center; border:3px solid #fff; border-radius:28px; background:#f9fcff; box-shadow:0 20px 60px #121f39aa; }.modal-card h2 { margin:0 0 10px; font-size:30px; }.modal-card p { line-height:1.7; }.modal-card .menu-actions { margin-top:20px; }.controls-copy { text-align:left; font-size:14px; }.controls-copy kbd { padding:2px 5px; border-radius:4px; background:#d9e8fd; }.modal-card.victory h2 { color:#cf3465; }.modal-card.failure h2 { color:#e14a56; }
@keyframes pulse { 50% { transform:scale(1.13); opacity:.55; } } @keyframes shake { 20%,60% { transform:translateX(-5px); } 40%,80% { transform:translateX(5px); } } @media(max-width:760px) { .app-shell { padding:12px 12px 20px; }.game-screen { grid-template-columns:1fr 108px; gap:11px; align-items:start; }.board-wrap { grid-row:1 / span 2; width:calc(100vw - 145px); max-width:360px; }.left-panel { grid-column:1 / span 2; display:grid; grid-template-columns:1fr 1fr; gap:0 12px; padding:12px; }.left-panel .level-label,.left-panel h2,.left-panel .boss-panel,.left-panel .special-info { grid-column:1 / span 2; }.left-panel h2 { margin:2px 0 5px; }.stat { margin:5px 0; }.right-panel { padding:8px; }.preview-block { margin-bottom:4px; }.preview-block canvas { width:86px;height:86px; }.compact { padding:7px;font-size:12px; }.touch-controls { display:flex; }.hero-card { padding:35px 24px; }.decor { display:none; } } @media(min-width:761px) { .touch-controls { display:none!important; } }
