/* ===== RPG adventure prototype ===== */
  .hero-panel{width:100%;max-width:520px;background:linear-gradient(135deg,rgba(255,201,74,.18),rgba(87,199,184,.12));border:2px solid rgba(255,255,255,.18);border-radius:18px;padding:14px;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;text-align:left}
  .hero-avatar{width:62px;height:62px;border-radius:18px;background:var(--paper);display:grid;place-items:center;font-size:38px;box-shadow:0 5px 0 rgba(0,0,0,.22)}
  .hero-name{font-weight:900;color:var(--yellow);font-size:18px}.hero-meta{font-size:13px;color:var(--chalk-dim);margin-top:3px}
  .meter{height:10px;background:rgba(255,255,255,.12);border-radius:999px;overflow:hidden;margin-top:7px}.meter>i{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--yellow));border-radius:inherit;transition:width .35s}
  .wallet{text-align:right;font-family:'ZCOOL KuaiLe',sans-serif;line-height:1.7;color:var(--yellow)}
  .energy-panel{width:100%;max-width:520px;background:rgba(87,199,184,.10);border:2px dashed var(--teal);border-radius:14px;padding:10px 13px;text-align:left}
  .energy-head{display:flex;justify-content:space-between;gap:10px;font-size:13px;align-items:center}.energy-head b{color:var(--yellow)}
  .energy-meter{height:12px;background:rgba(255,255,255,.12);border-radius:999px;overflow:hidden;margin-top:7px}.energy-meter>i{display:block;height:100%;background:linear-gradient(90deg,var(--coral),var(--yellow),var(--teal));border-radius:inherit;transition:width .35s}
  .energy-panel.empty{border-color:var(--coral);background:rgba(255,107,94,.10)}
  .main-menu{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:480px}.main-menu .btn{width:100%;min-height:58px}#btnNewGame{grid-column:1 / -1;justify-self:center;width:auto;min-height:34px;font-size:12px;padding:6px 12px;margin-top:2px;opacity:.9}#btnNewGame:hover{opacity:1}
  .world-map{position:relative;width:100%;max-width:510px;padding:12px 4px 4px;display:flex;flex-direction:column;gap:16px}
  .map-path{position:absolute;left:50%;top:28px;bottom:28px;border-left:4px dashed rgba(245,241,230,.25);transform:translateX(-50%);z-index:0}
  .stage-node{position:relative;z-index:1;display:grid;grid-template-columns:1fr 74px 1fr;align-items:center;gap:8px}
  .stage-node:nth-child(even) .stage-card{grid-column:3}.stage-node:nth-child(odd) .stage-card{grid-column:1}.stage-node:nth-child(even) .stage-orb,.stage-node:nth-child(odd) .stage-orb{grid-column:2;grid-row:1}
  .stage-card{background:var(--paper);color:var(--ink);border-radius:14px;padding:11px 13px;text-align:left;border:none;box-shadow:0 5px 0 var(--paper-2);cursor:pointer;font-family:'Noto Sans TC',sans-serif}
  .stage-card.locked{opacity:.48;cursor:not-allowed;filter:grayscale(1)}.stage-card b{display:block;font-size:14px}.stage-card small{font-size:11px;color:#756e5b}
  .stage-orb{width:58px;height:58px;margin:auto;border-radius:50%;background:var(--teal);border:4px solid var(--paper);display:grid;place-items:center;color:var(--ink);font-weight:900;box-shadow:0 5px 0 rgba(0,0,0,.25)}
  .stage-orb.done{background:var(--yellow)}.stage-orb.locked{background:#65736e;color:#bec8c4}.stage-stars{color:#cc8b00;font-size:11px;margin-top:3px}
  .camp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%;max-width:470px}.camp-card{background:var(--paper);color:var(--ink);border-radius:16px;padding:18px 12px;box-shadow:0 6px 0 var(--paper-2)}.camp-card .ico{font-size:38px}.camp-card b{display:block;margin-top:5px}.camp-card small{display:block;color:#756e5b;margin-top:4px}
  .camp-card.action{cursor:pointer;border:0;font-family:inherit;transition:transform .15s}.camp-card.action:hover{transform:translateY(-3px)}
  .shop-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%;max-width:520px}.shop-item{background:var(--paper);color:var(--ink);border-radius:16px;padding:16px;text-align:left;box-shadow:0 6px 0 var(--paper-2)}.shop-item .item-top{display:flex;align-items:center;gap:10px}.shop-item .item-ico{font-size:38px}.shop-item h3{margin:0;font-size:16px}.shop-item p{font-size:12.5px;color:#6e6858;line-height:1.55;min-height:38px}.shop-item .price{font-weight:900;color:#b06b00}.shop-item .btn{width:100%;margin-top:8px}.shop-item.owned{outline:3px solid var(--teal)}.equip-badge{font-size:11px;background:var(--teal);color:#fff;padding:2px 7px;border-radius:999px;margin-left:auto}.inventory-summary{width:100%;max-width:520px;background:rgba(255,255,255,.06);border:2px dashed var(--line);border-radius:14px;padding:12px;text-align:left;font-size:13px;line-height:1.7}
  .enemy-panel{width:100%;max-width:460px;background:rgba(0,0,0,.16);border:2px dashed var(--line);border-radius:16px;padding:12px}.enemy-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.enemy-art{font-size:54px;filter:drop-shadow(0 5px 2px rgba(0,0,0,.25));transition:transform .2s}.enemy-art.hit{animation:enemyHit .35s ease}.enemy-hp{height:11px;background:rgba(255,255,255,.14);border-radius:999px;overflow:hidden;margin-top:8px}.enemy-hp i{display:block;height:100%;background:var(--coral);transition:width .35s}
  @keyframes enemyHit{0%,100%{transform:translateX(0)}25%{transform:translateX(-12px) rotate(-5deg)}75%{transform:translateX(10px) rotate(5deg)}}
  .rest-note{background:rgba(87,199,184,.12);border:2px dashed var(--teal);border-radius:14px;padding:12px 15px;max-width:470px;line-height:1.65;color:var(--chalk)}
  .reward-box{background:var(--paper);color:var(--ink);border-radius:16px;padding:15px;width:100%;max-width:430px;font-weight:700;line-height:1.8;box-shadow:0 6px 0 var(--paper-2)}
  @media(max-width:440px){.main-menu{grid-template-columns:1fr}.hero-panel{grid-template-columns:auto 1fr}.wallet{grid-column:1/-1;text-align:center}.stage-node{grid-template-columns:1fr 60px 1fr}.stage-orb{width:50px;height:50px}.camp-grid{grid-template-columns:1fr}}


  .village-scene{width:100%;max-width:560px;border:3px solid var(--line);border-radius:20px;padding:16px;background:linear-gradient(#244b53 0 45%,#41684e 45% 100%);position:relative;overflow:hidden}
  .village-sky{display:flex;justify-content:space-between;align-items:center;font-size:34px;margin-bottom:12px}.village-name{font-family:'ZCOOL KuaiLe',sans-serif;color:var(--yellow);font-size:19px}
  .village-buildings{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.building{background:rgba(245,241,230,.94);color:var(--ink);border-radius:14px;padding:11px 7px;text-align:center;min-height:100px;display:flex;flex-direction:column;justify-content:center}.building.locked{filter:grayscale(1);opacity:.48}.building .ico{font-size:34px}.building b{font-size:13px;margin-top:4px}.building small{font-size:10px;color:#756e5b}
  .npc-dialog{width:100%;max-width:560px;background:var(--paper);color:var(--ink);border-radius:16px;padding:14px 16px;text-align:left;box-shadow:0 6px 0 var(--paper-2);display:grid;grid-template-columns:48px 1fr;gap:10px;align-items:center}.npc-face{font-size:38px}.npc-dialog b{display:block}.npc-dialog p{margin:3px 0 0;line-height:1.55;font-size:13px}
  .event-card{width:100%;max-width:560px;border:2px dashed var(--yellow);background:rgba(255,209,102,.10);border-radius:14px;padding:13px;text-align:left}.event-card b{color:var(--yellow)}
  .knowledge-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;width:100%;max-width:540px}.knowledge-item{background:var(--paper);color:var(--ink);border-radius:12px;padding:11px;text-align:left}.knowledge-item b{font-size:13px}.knowledge-item small{display:block;color:#756e5b;margin-top:3px}.mastery{height:9px;background:#d8d2c2;border-radius:999px;overflow:hidden;margin-top:7px}.mastery i{display:block;height:100%;background:var(--teal)}
  @media(max-width:440px){.village-buildings{grid-template-columns:repeat(2,1fr)}.knowledge-grid{grid-template-columns:1fr}}

  .growth-row{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;width:100%;max-width:560px}.growth-card{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:10px;text-align:center}.growth-card b{display:block;color:var(--yellow);font-size:18px}.growth-card small{font-size:11px;color:var(--chalk-dim)}
  .diary-list{display:flex;flex-direction:column;gap:10px;width:100%;max-width:560px}.diary-entry{background:var(--paper);color:var(--ink);border-radius:14px;padding:13px 15px;text-align:left;box-shadow:0 4px 0 var(--paper-2)}.diary-entry b{display:block}.diary-entry small{color:#756e5b}.diary-empty{border:2px dashed var(--line);border-radius:14px;padding:20px;color:var(--chalk-dim)}
  .npc-dialog{cursor:pointer}.npc-hint{font-size:10px;color:#756e5b;margin-top:5px}.mastery-summary{width:100%;max-width:540px;background:rgba(255,255,255,.07);border:2px dashed var(--teal);border-radius:14px;padding:12px;line-height:1.7}
  @media(max-width:440px){.growth-row{grid-template-columns:1fr 1fr}.growth-card:last-child{grid-column:1/-1}}

.hero-avatar{width:64px;height:64px;padding:4px;border-radius:18px;background:rgba(255,255,255,.92)}

.player-stamina-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:5px 0 3px}.player-stamina-row>b,.player-stamina-row b{color:var(--yellow)}.stamina-recover-btn{padding:5px 9px;font-size:11px}.energy-meter.compact{max-width:360px;height:8px;margin:3px 0 6px}.equipment-summary-line{margin-bottom:10px}.equipment-ability-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:8px 0}.equipment-ability-title small{color:var(--chalk-dim)}.equipment-ability-table{width:100%;border-collapse:collapse;font-size:13px}.equipment-ability-table th,.equipment-ability-table td{padding:6px 8px;border-bottom:1px solid rgba(255,255,255,.12);text-align:center}.equipment-ability-table th:first-child{text-align:left}.ability-up{color:#6ee7a8;font-weight:700}.ability-down{color:#ff8b80}.equip-inline{font-size:11px;color:var(--yellow);border:1px solid currentColor;border-radius:999px;padding:2px 6px}.shop-item.equipped{outline:2px solid var(--yellow)}.quiz-hint-btn{margin:8px 0}.game-modal{position:fixed;inset:0;z-index:9999;background:rgba(4,10,20,.72);display:grid;place-items:center;padding:18px}.game-modal[hidden]{display:none}.game-modal-card{width:min(520px,94vw);background:var(--panel,#14273a);border:2px solid var(--yellow);border-radius:18px;padding:20px;box-shadow:0 20px 60px rgba(0,0,0,.5);text-align:center}.game-modal-card h2{margin-top:0}.modal-note{font-size:12px;color:var(--chalk-dim)}

/* V7.8 首次資源預載與手動存檔 */
.asset-preload-screen{position:fixed;inset:0;z-index:20000;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 50% 30%,#315d59 0,#173548 52%,#0b1b2a 100%);color:#fff}
.asset-preload-screen[hidden]{display:none}.asset-preload-card{width:min(560px,92vw);padding:26px 22px;border:2px solid rgba(255,222,112,.75);border-radius:22px;background:rgba(8,25,38,.9);box-shadow:0 24px 80px rgba(0,0,0,.5);text-align:center}.asset-preload-icon{font-size:48px}.asset-preload-card h1{margin:8px 0;font-size:clamp(24px,5vw,34px);color:#ffe28a}.asset-preload-card p{margin:8px auto 16px;line-height:1.65;color:#eef6f2}.asset-preload-bar{height:15px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.2)}.asset-preload-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#62d5bb,#ffe06d);transition:width .16s ease}.asset-preload-stats{display:flex;justify-content:space-between;gap:12px;margin-top:9px;font-size:13px}.asset-preload-stats b{color:#ffe06d;font-size:18px}.asset-preload-card small{display:block;margin-top:8px;color:#bed1d8}.manual-save-card{text-align:left}.manual-save-card>h2,.manual-save-card>p{text-align:center}.manual-save-current{padding:10px 12px;margin:10px 0;border-radius:12px;background:rgba(255,255,255,.07);color:var(--yellow);font-weight:800}.manual-save-slots{display:grid;gap:9px}.manual-save-slot{width:100%;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid rgba(255,255,255,.16);border-radius:13px;background:rgba(255,255,255,.06);color:var(--chalk);text-align:left}.manual-save-slot .ico{font-size:25px;text-align:center}.manual-save-slot b,.manual-save-slot small{display:block}.manual-save-slot small{color:var(--chalk-dim);font-size:11px}.manual-save-slot .save-action{font-weight:800;color:var(--yellow);white-space:nowrap}.manual-save-slot.current{border-color:var(--teal);background:rgba(87,199,184,.1)}.manual-save-slot.overwrite{cursor:pointer}.manual-save-slot.overwrite:hover{border-color:var(--yellow)}

/* Web test edition limits */
.web-test-stamina-badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;border:1px solid rgba(255,209,102,.65);background:rgba(255,209,102,.14);color:var(--yellow);font-size:11px;font-weight:800}
.web-test-download-note{margin:12px auto 4px;padding:13px 15px;max-width:720px;border:2px solid rgba(87,199,184,.62);border-radius:14px;background:rgba(87,199,184,.12);color:#f8f3df;text-align:center;line-height:1.65}
.web-test-download-note b{color:var(--yellow)}
.web-test-limit-modal{padding:10px 12px;border-radius:12px;background:rgba(255,209,102,.10);border:1px solid rgba(255,209,102,.45);color:var(--chalk)}
