:root{--ink:#493727;--sub:#836b59;--paper:#fffdf8;--cream:#fff8e9;--line:#ead9bb;--orange:#f2913d;--orange-d:#b96525;--blue:#5672ec;--blue-soft:#eaf0ff;--green:#5b9d83;--shadow:0 8px 0 #dec9a9}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;color:var(--ink)}
body{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:var(--cream);background-image:radial-gradient(circle at 12% 15%,#f4c98b 0 3px,transparent 4px),radial-gradient(circle at 88% 30%,#b5dfcf 0 3px,transparent 4px);background-size:120px 120px,160px 160px}
button,a{font:inherit}.game-shell{width:min(1320px,calc(100% - 34px));margin:18px auto 46px}.game-topbar{display:flex;align-items:center;gap:18px;padding:13px 16px;background:#fffdf8e8;border:2px solid var(--line);border-radius:22px;box-shadow:var(--shadow);position:sticky;top:10px;z-index:10;backdrop-filter:blur(12px)}
.top-btn,.primary-btn,.soft-btn,.route-btn,.battle-btn,.gear-btn{cursor:pointer;text-decoration:none;border-radius:999px;border:1px solid var(--line);transition:transform .16s,box-shadow .16s,filter .16s,background .16s}.top-btn{padding:8px 13px;background:#fff;color:#765943;font-weight:800}.top-btn:hover,.top-btn:focus-visible{background:#fff6df;border-color:#e3b769;transform:translateY(-2px);outline:none}
.game-title{display:flex;align-items:center;gap:10px;min-width:0}.title-capy{font-size:30px}.game-title b{display:block;font-size:22px}.game-title small{display:block;margin-top:2px;color:var(--sub);font-size:12px}.top-stats{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}.top-stats span{padding:7px 11px;background:#fff;border:1px solid var(--line);border-radius:999px;color:#8a6c50;font-size:13px}.top-stats b{color:var(--orange-d)}
.game-hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;margin-top:28px;padding:30px 38px;border:2px solid #e6c990;border-radius:30px;background:linear-gradient(120deg,#fffdf7,#fff1d9);box-shadow:0 10px 0 #dec49d}.eyebrow,.section-kicker{color:#4d806d;font-size:11px;font-weight:900;letter-spacing:.13em}.hero-copy h1{font-size:clamp(32px,4vw,54px);line-height:1.1;letter-spacing:-.05em;margin:12px 0 10px}.hero-copy p{color:var(--sub);font-size:17px;line-height:1.8;margin:0;max-width:610px}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.primary-btn,.soft-btn{padding:10px 16px;font-weight:900}.primary-btn{border-color:#4f64ef;background:linear-gradient(135deg,#4f64ef,#7251e9);color:#fff;box-shadow:0 5px 0 #c2c8ed}.primary-btn:hover,.primary-btn:focus-visible,.soft-btn:hover,.soft-btn:focus-visible,.route-btn:hover,.route-btn:focus-visible,.battle-btn:hover,.battle-btn:focus-visible,.gear-btn:hover,.gear-btn:focus-visible{transform:translateY(-2px);filter:brightness(1.04);outline:none}.soft-btn{background:#fff6df;color:#9c6816;border-color:#efcf91}.hero-pet{min-height:210px;display:grid;place-items:center;border-radius:26px;background:linear-gradient(#d8f1e9 0 48%,#9ed9c2 48% 100%);box-shadow:inset 0 -8px #79c19e;cursor:pointer}.hero-pet .capy{width:180px;height:168px;filter:drop-shadow(0 12px 5px #6e9b7a45);transition:transform .2s}.hero-pet:hover .capy{transform:translateY(-5px) rotate(-2deg)}
.game-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;margin-top:26px}.main-column,.side-column{display:flex;flex-direction:column;gap:20px}.scene-card,.home-card-panel,.profile-card,.journal-card{background:var(--paper);border:2px solid var(--line);border-radius:24px;padding:20px 22px;box-shadow:var(--shadow)}.section-head{display:flex;justify-content:space-between;align-items:end;gap:10px;margin-bottom:14px}.section-head h2{margin:4px 0 0;font-size:23px}.status-pill,.home-note{font-size:12px;color:#5b806c;background:#edf7e9;border:1px solid #c6dfbf;border-radius:999px;padding:6px 10px;white-space:nowrap}.home-note{background:#fff7e8;border-color:#f1d8a8;color:#9a6c3b}.scene-wrap{position:relative;border-radius:18px;overflow:hidden;background:#d8f1e9;border:1px solid #c2dfd4}.scene-wrap canvas{display:block;width:100%;height:auto;min-height:270px}.scene-caption{display:block;font-size:12px;color:var(--sub);margin-top:4px;line-height:1.5}.route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.route-btn{text-align:left;padding:13px;background:#fff;border-color:#e3d7c5;box-shadow:0 3px 0 #e8dcc9}.route-btn strong{display:block;font-size:15px}.route-btn small{display:block;color:#8b765f;margin-top:4px;line-height:1.5}.route-btn.locked{opacity:.5;cursor:not-allowed}.route-btn.selected{border-color:#5b9d83;background:#edf7ef;box-shadow:0 3px 0 #b9dfc4}.event-box,.battle-box{margin-top:14px;padding:16px;border-radius:18px;border:2px solid #f1d08b;background:#fff8e8}.event-box h3,.battle-box h3{margin:0 0 7px;font-size:20px}.event-box p,.battle-box p{margin:4px 0;color:var(--sub);line-height:1.6}.event-actions,.battle-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.battle-box{border-color:#e1c8ee;background:#faf5ff}.battle-top{display:flex;justify-content:space-between;align-items:center;gap:12px}.combatants{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.fighter{padding:12px;border-radius:14px;background:#fff;border:1px solid #e3d7ef;text-align:center}.fighter .face{font-size:42px;display:block}.fighter b{display:block}.hp-track{height:8px;margin-top:8px;border-radius:999px;background:#eee3f7;overflow:hidden}.hp-track i{display:block;height:100%;background:linear-gradient(90deg,#ed7373,#d95151);transition:width .25s}.battle-btn{padding:9px 13px;background:#fff;color:#5c4776;border-color:#d9c6e9}.battle-btn.attack{background:#e96e62;color:#fff;border-color:#e96e62}.battle-btn.run{background:#fff6df;color:#946222;border-color:#efcf91}
.home-content{display:grid;grid-template-columns:240px 1fr;gap:18px}.home-scene{min-height:178px;border-radius:18px;background:linear-gradient(#d8f1e9 0 48%,#9ed9c2 48%);display:grid;place-items:center;box-shadow:inset 0 -7px #79c19e}.home-scene .capy{width:130px;height:122px}.gear-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.gear-card{padding:12px;border-radius:15px;background:#fff;border:1px solid #ead9bb;display:flex;flex-direction:column;gap:3px}.gear-card.equipped{border-color:#78ba98;background:#edf7ef}.gear-icon{font-size:26px}.gear-card strong{font-size:14px}.gear-card small{color:#8b765f;line-height:1.4}.gear-btn{align-self:start;padding:6px 10px;background:#fff6df;color:#986525;border-color:#efcf91;font-size:12px;font-weight:800}.gear-btn.off{opacity:.5;cursor:not-allowed}.profile-card{background:linear-gradient(145deg,#fffdf7,#eef7f0)}.profile-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px dashed #eadfcd}.profile-row:last-child{border-bottom:0}.profile-face{font-size:45px}.profile-row b{display:block;font-size:17px}.profile-row small{display:block;color:#846f5b;margin-top:3px}.meter{height:10px;border-radius:999px;background:#e9e0d1;overflow:hidden;margin-top:6px}.meter i{display:block;height:100%;background:linear-gradient(90deg,#5b9d83,#f1b650)}.journal-row{padding:10px 0;border-bottom:1px dashed #eadfcd;color:#725d49;font-size:13px;line-height:1.6}.journal-row:last-child{border-bottom:0}.journal-row b{color:#a86729}.empty{color:#9b8975;font-size:13px;line-height:1.7}.toast{position:fixed;left:50%;bottom:24px;z-index:20;transform:translate(-50%,20px);padding:11px 17px;border-radius:999px;background:#4d4a83;color:#fff;box-shadow:0 8px 20px #433b6044;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;font-weight:800}.toast.show{opacity:1;transform:translate(-50%,0)}footer{text-align:center;color:#ad967e;font-size:12px;line-height:1.8;margin:30px 0 0}
@media(max-width:980px){.game-grid{grid-template-columns:1fr}.side-column{display:grid;grid-template-columns:1fr 1fr}.game-hero{grid-template-columns:1fr}.hero-pet{min-height:180px}.home-content{grid-template-columns:1fr}}
@media(max-width:640px){.game-shell{width:min(100% - 18px,620px)}.game-topbar{position:static;gap:8px;padding:10px;flex-wrap:wrap}.game-title{order:3;width:100%}.top-stats{margin-left:0}.game-hero{padding:23px 20px}.hero-copy h1{font-size:36px}.route-grid,.side-column{grid-template-columns:1fr}.scene-wrap canvas{min-height:210px}.scene-caption{font-size:11px}.gear-list{grid-template-columns:1fr}}

/* 使用同一只内联水豚，避免系统 emoji 把卡皮显示成仓鼠/老鼠。 */
.title-capy{width:42px;height:42px;display:grid;place-items:center;flex:0 0 42px}
.title-capy .capy{width:42px;height:42px}
.profile-face{position:relative;width:60px;height:60px;display:grid;place-items:center;flex:0 0 60px}
.profile-face .capy{width:58px;height:58px}
.explore-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 2px 0}.explore-toolbar span{color:#7d8c79;font-size:12px;flex:1}.explore-toolbar .soft-btn,.explore-toolbar .battle-btn{cursor:pointer}.explore-toolbar .is-on{background:#e7f6e9;border-color:#66a878;box-shadow:0 0 0 3px #d8efda}.food-card,.evolution-card{background:var(--paper);border:2px solid var(--line);border-radius:24px;padding:20px 22px;box-shadow:var(--shadow)}.shop-intro{margin:-3px 0 12px;color:#89745f;font-size:12px;line-height:1.6}.food-list{display:grid;gap:8px}.food-row{display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:7px;padding:9px;border-radius:13px;background:#fff;border:1px solid #efe1cb}.food-emoji{font-size:24px}.food-row b{display:block;font-size:13px}.food-row small{display:block;color:#8b765f;font-size:11px;margin-top:2px}.food-buy{border:1px solid #dfc695;border-radius:999px;padding:7px 9px;background:#fff4d8;color:#986525;font-size:11px;font-weight:900;cursor:pointer;transition:.16s}.food-buy:hover:not(:disabled){transform:translateY(-2px);background:#ffe8b4;box-shadow:0 3px 0 #e5d0a3}.food-buy:disabled{opacity:.48;cursor:not-allowed}.evo-count{padding:5px 8px;border-radius:999px;background:#eff5ff;color:#5774a0;font-size:12px;font-weight:900}.evo-track{display:flex;gap:5px;margin:0 0 12px}.evo-dot{height:9px;flex:1;border-radius:99px;background:#e9e3d8}.evo-dot.done{background:linear-gradient(90deg,#70b789,#a2d875)}.evo-next{padding:12px;border-radius:15px;background:#f6f8ff;border:1px solid #dfe5f4}.evo-next b{display:block;font-size:14px}.evo-next p{margin:6px 0;color:#71819a;font-size:12px;line-height:1.6}.evo-missing{color:#bd7541;font-weight:800}.evo-ready{width:100%;padding:9px 12px;border:0;border-radius:11px;background:linear-gradient(135deg,#56aa7d,#78bd66);color:#fff;font-weight:900;cursor:pointer;box-shadow:0 4px 0 #d3e3c7;transition:.16s}.evo-ready:hover{transform:translateY(-2px);filter:brightness(1.05)}.evo-stage{display:block;color:#639171;font-size:12px;margin-top:7px}
.profile-row .hunger-bar{height:10px;border-radius:99px;background:#eee6d7;overflow:hidden;margin-top:6px}.profile-row .hunger-bar i{display:block;height:100%;background:linear-gradient(90deg,#ee9b48,#79bb7c);transition:width .25s}.evolution-card .section-head{align-items:center}.scene-wrap canvas{cursor:crosshair}.scene-wrap.exploring canvas{cursor:pointer}
@media(max-width:980px){.game-grid{grid-template-columns:1fr}.food-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.food-list{grid-template-columns:1fr}.explore-toolbar span{flex-basis:100%;order:3}}
.profile-crown{position:absolute;right:-2px;top:-8px;font-size:20px}
.face{display:grid;place-items:center;min-height:58px}
.face .capy{width:56px;height:56px}
.evo-subjects{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.evo-subject{padding:4px 8px;border-radius:999px;font-size:11px;font-weight:900}.evo-subject.ok{background:#e8f5e9;color:#39805d}.evo-subject.wait{background:#fff0dc;color:#ab7338}.explore-toolbar .battle-btn{background:#e9f3ff;border-color:#a9c4eb;color:#47699b}.explore-toolbar button:focus-visible,.food-buy:focus-visible,.evo-ready:focus-visible{outline:3px solid #f0b34f;outline-offset:2px}
.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px;margin-top:6px}
.mode-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-height:260px;padding:22px 24px;border:2px solid var(--line);border-radius:20px;background:linear-gradient(150deg,#fffef9,#f1f7f1);box-shadow:0 5px 0 #e8dcc9;color:var(--ink);text-decoration:none;transition:transform .16s,box-shadow .16s,border-color .16s,filter .16s}
.mode-card:hover,.mode-card:focus-visible{transform:translateY(-3px);box-shadow:0 8px 0 #ded0b9;border-color:#eab661;filter:brightness(1.02);outline:none}
.survivor-mode{background:linear-gradient(145deg,#fffdf6,#fbe9cd);border-color:#e7c58e}
.mode-kicker{font-size:10px;font-weight:900;letter-spacing:.12em;opacity:.78}
.mode-card h3{font-size:26px;margin:5px 0 0}.mode-card p{font-size:15px;line-height:1.65;margin:0;max-width:540px;color:inherit;opacity:.87}.mode-card small{font-size:12px;opacity:.78;margin-top:auto}.mode-launch{margin-top:6px;padding:11px 20px;cursor:pointer}.word-mode{background:linear-gradient(145deg,#fffdf7,#f0f4ff)}.sky-mode{background:linear-gradient(145deg,#f6fcff,#ddeeff);border-color:#a9cbe9}.mode-link-label{font-size:15px;font-weight:900;color:var(--blue);margin-top:4px}
.survivor-stage{margin-top:14px;border:2px solid #b8d1bc;background:#18312e;border-radius:20px;overflow:hidden;box-shadow:0 6px 0 #d5dfcf}.survivor-stage-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;background:#fffdf8;color:var(--ink)}.survivor-stage-head b,.survivor-stage-head small{display:block}.survivor-stage-head small{font-size:12px;color:var(--sub);margin-top:3px}.survivor-stage iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;min-height:420px;max-height:calc(100vh - 130px);border:0;background:#142d2b}.game-mode-link{display:inline-flex;align-items:center}
@media(max-width:720px){.mode-grid{grid-template-columns:1fr}.mode-card{min-height:235px;padding:18px}.survivor-stage-head{align-items:flex-start;flex-direction:column}.survivor-stage iframe{min-height:350px;aspect-ratio:4/3}}

/* ── 进入暮光守卫：舞台升级成「铺满整个浏览器窗口」的浮层（2026-09-25 用户：
      「不用在底下弹出来游戏窗口，比较小，字母都看不清…就是放大窗口到整个浏览器窗口」）──
   原来内嵌在 .scene-card 里，宽度被 .game-shell(1320px) 减掉 330px 侧栏 + 间距卡到 ~810px，
   16:9 的 1280×720 缩到 810 宽 ⇒ 词牌 15px 字号实际只剩 ~9.5px，看不清。
   现在整块 position:fixed 铺满视口，宽度不再是瓶颈；退出时靠 closeSurvivor() 摘掉 is-full。 */
/* ⚠ 必须挡住 .is-full 的 display:flex：author 的 display 会盖过 [hidden]（见 skill 坑 52），
   万一哪天忘了摘 is-full，光设 hidden 关不掉这层全屏浮层，页面就再也点不动了。 */
.survivor-stage[hidden]{display:none!important}
.survivor-stage.is-full{position:fixed;inset:0;margin:0;border:0;border-radius:0;box-shadow:none;z-index:9999;display:flex;flex-direction:column;background:#142d2b;overflow:hidden}
/* 全屏时头部永远单行（窄屏的竖排会把游戏高度吃掉），并且压缩一点 */
.survivor-stage.is-full .survivor-stage-head{flex:0 0 auto;flex-direction:row;align-items:center;gap:12px;padding:8px 14px}
.survivor-stage.is-full .survivor-stage-head b{font-size:15px}
.survivor-stage.is-full .scene-caption{margin-top:2px}
/* iframe 抢下剩余全部高度：覆盖掉基类的 aspect-ratio / min-height / max-height */
.survivor-stage.is-full iframe{flex:1 1 auto;width:100%;height:auto;min-height:0;max-height:none;aspect-ratio:auto}
/* 🍊 探险产币每日额度提示（2026-10-10 修无限刷币） */
.route-quota{margin:10px 2px 0;color:#8b765f;font-size:12px;line-height:1.6}
